我正在尝试让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#标记的数据行。
以下是我的问题:
这是对的吗?我关心“?”因为我读到它可能被推算(虽然这可能只是在学习阶段)。
Weka是否支持多项预测?无论有多少字段标有“?”我总是得到相同的表,每个实例只有一个预测值。
We Weka可以生成一个完整的(预测的)ARFF文件,还是我必须自己从结果中构建它?
如果我错过了一些明显的事情,请提前道歉,并且非常感谢任何有关相关文档的指示。
提前致谢!
答案 0 :(得分:2)
'?'是未知值的通用标记。它可用于训练和测试数据,并告诉Weka在这种特殊情况下,该值不可用。然后用该信息完成的工作取决于实际的学习算法。所以回答你的问题:
-c
参数训练模型时指定要预测的属性。此参数提供要预测的属性的索引。默认情况下,它是最后一个,所以在你的情况下为'F'。请注意,您可以save a trained model然后use it to make predictions。后一页还包含您可以构造的知识流,以将其结果保存为ARFF文件。