告诉Weka在ARFF文件中预测哪些属性?

时间:2013-12-17 15:19:09

标签: machine-learning data-mining weka arff

我正在尝试让Weka从命令行预测,但我担心我可能会做错了。我阅读了数据挖掘书并搜索了他们的网站以获取文档,但我发现的最多是模糊的,所以我希望你能帮助我。

首先,我创建了一个训练集(train.arff)。这是一个示例:

@relation test
@attribute 'A' {0,1}
@attribute 'B' {0,1}
@attribute 'C' {0,1}
@attribute 'D' {0,1}
@attribute 'E' {0,1}
@attribute 'F' {0,1}
@data
0,0,0,0,0,0
0,0,0,0,0,0
...

然后我创建了由预测(test.arff)完成的数据集:

@relation test
@attribute 'A' {0,1}
@attribute 'B' {0,1}
@attribute 'C' {0,1}
@attribute 'D' {0,1}
@attribute 'E' {0,1}
@attribute 'F' {0,1}
@data
0,?,0,0,0,0
0,?,0,0,0,0
...

“?”标记应该预测的属性。

最后,我试图通过在命令行上运行它来获得预测:

java weka.classifiers.trees.J48 -t train.arff -T test.arff -p 0

它产生以下输出:

=== Predictions on test data ===

 inst#     actual  predicted error prediction
     1        2:1        2:1       0.939
     2        2:1        2:1       0.939

然后我在预测列中的“:”之后取了数字,用于预测由inst#标记的数据行。

以下是我的问题:

  1. 这是对的吗?我关心“?”因为我读到它可能被推算(虽然这可能只是在学习阶段)。

  2. Weka是否支持多项预测?无论有多少字段标有“?”我总是得到相同的表,每个实例只有一个预测值。

  3. We Weka可以生成一个完整的(预测的)ARFF文件,还是我必须自己从结果中构建它?

  4. 如果我错过了一些明显的事情,请提前道歉,并且非常感谢任何有关相关文档的指示。

    提前致谢!

1 个答案:

答案 0 :(得分:2)

'?'是未知值的通用标记。它可用于训练和测试数据,并告诉Weka在这种特殊情况下,该值不可用。然后用该信息完成的工作取决于实际的学习算法。所以回答你的问题:

  1. 否。通过-c参数训练模型时指定要预测的属性。此参数提供要预测的属性的索引。默认情况下,它是最后一个,所以在你的情况下为'F'。
  2. 否。这实际上是实现学习算法的一个问题,但Weka中没有一个支持这一点。这样做的方法是为不同的预测训练多个模型。
  3. 在这种情况下,这没有意义,因为您必须提供已知值,以便Weka能够评估分类器的准确性。如果这些值完全未知,则无法确定其有多好。
  4. 请注意,您可以save a trained model然后use it to make predictions。后一页还包含您可以构造的知识流,以将其结果保存为ARFF文件。