在命令行中导出 Weka 预测

Posted

技术标签:

【中文标题】在命令行中导出 Weka 预测【英文标题】:Exporting Weka predictions in command line 【发布时间】:2014-04-04 01:19:44 【问题描述】:

我能够在 GUI 中成功导出分类器错误,但无法在命令行中执行此操作。有没有办法在命令行上完成这个?

我正在使用 Weka 3.6.x。在这里,您可以右键单击您的模型,选择“可视化分类器错误”并从那里保存数据(包括预测)。我想在命令行上做同样的事情。

我并不真正关心文件格式(arff 或 csv 都可以),但重要的是我得到测试数据的每个实例的错误值。

我之前在 [this question] 中问过这个问题。 (Weka Predictions to CSV)

【问题讨论】:

【参考方案1】:

您可以使用每个分类器中可用的以下选项在命令行中获取预测、概率等:

-classifications "weka.classifiers.evaluation.output.prediction.AbstractOutput + options"
        Uses the specified class for generating the classification output.
        E.g.: weka.classifiers.evaluation.output.prediction.PlainText
-p range
        Outputs predictions for test instances (or the train instances if
        no test instances provided and -no-cv is used), along with the
        attributes in the specified range (and nothing else).
        Use '-p 0' if no attributes are desired.
        Deprecated: use "-classifications ..." instead.
-distribution
        Outputs the distribution instead of only the prediction
        in conjunction with the '-p' option (only nominal classes).
        Deprecated: use "-classifications ..." instead.

例如,在天气数据集上使用 NaiveBayes:

$ java weka.classifiers.bayes.NaiveBayes -t weather.nominal.arff -classifications weka.classifiers.evaluation.output.prediction.PlainText

=== Predictions under cross-validation ===

 inst#     actual  predicted error prediction
     1       2:no      1:yes   +   0.926
     2      1:yes      1:yes       0.825
     1       2:no      1:yes   +   0.636
     2      1:yes      1:yes       0.808
     1       2:no       2:no       0.718
     2      1:yes       2:no   +   0.656
     1       2:no      1:yes   +   0.579
     2      1:yes      1:yes       0.541
     1       2:no      1:yes   +   0.515
     1      1:yes       2:no   +   0.632
     1      1:yes      1:yes       0.84
     1      1:yes      1:yes       0.554
     1      1:yes      1:yes       0.757
     1      1:yes      1:yes       0.778

输出是制表符分隔的。

【讨论】:

以上是关于在命令行中导出 Weka 预测的主要内容,如果未能解决你的问题,请参考以下文章

为啥 WEKA 不从命令行运行?

LibSVM 使用 Weka 命令行

从命令行运行 weka - 找不到类 NaiveBayes

使用自己的 Java 代码和模型在 WEKA 中获取预测百分比

带有 Weka 命令行的 ProcessBuilder/Runtime.exec() 演示特殊行为

尝试将 AdaBostM1 weka 分类器与配置用于修剪的 J48 决策树分类器一起使用时,Weka 引发命令行错误