【发布时间】:2014-02-20 20:27:53
【问题描述】:
我已经查看了 WEKA 的 "Making predictions" 文档,其中包含命令行和 GUI 预测的明确说明。
我想知道如何在我自己的 Java 代码中使用 Agrawal 数据集 (weka.datagenerators.classifiers.classification.Agrawal) 从 GUI 获得如下预测值:
inst#, actual, predicted, error, prediction
1, 1:0, 2:1, +, 0.941
2, 1:0, 1:0, , 1
3, 1:0, 1:0, , 1
4, 1:0, 1:0, , 1
5, 1:0, 1:0, , 1
6, 1:0, 1:0, , 1
7, 1:0, 2:1, +, 0.941
8, 2:1, 2:1, , 0.941
9, 2:1, 2:1, , 0.941
10, 2:1, 2:1, , 0.941
1, 1:0, 1:0, , 1
2, 1:0, 1:0, , 1
3, 1:0, 1:0, , 1
即使it 这么说,我也无法复制这个结果:
Java
如果您想在自己的代码中执行分类,请参阅 this article 的 classifying instances 部分,对 Weka API 进行一般说明。
我去了link,它说:
分类实例
如果您有一个未标记的数据集要使用新训练的分类器进行分类,您可以使用以下代码 sn-p。它加载文件
/some/where/unlabeled.arff,使用之前构建的分类器树来标记实例,并将标记的数据保存为/some/where/labeled.arff。
这不是我想要的,因为我只想要对我当前的数据集建模的 k-fold 交叉验证预测。
更新
predictions
public FastVector predictions()返回已收集的预测。
返回:
对包含已收集预测的
FastVector的引用。如果没有收集到预测,这应该为 null。
我找到了predictions() 类型对象的Evaluation 方法,并使用代码:
Object[] preds = evaluation.predictions().toArray();
for(Object pred : preds) {
System.out.println(pred);
}
结果是:
...
NOM: 0.0 0.0 1.0 0.9466666666666667 0.05333333333333334
NOM: 0.0 0.0 1.0 0.8947368421052632 0.10526315789473684
NOM: 0.0 0.0 1.0 0.9934883720930232 0.0065116279069767444
NOM: 0.0 0.0 1.0 0.9466666666666667 0.05333333333333334
NOM: 0.0 0.0 1.0 0.9912575655682583 0.008742434431741762
NOM: 0.0 0.0 1.0 0.9934883720930232 0.0065116279069767444
...
这和上面的一样吗?
【问题讨论】:
标签: java machine-learning weka probability prediction