我想为单个实例进行单一测试
我在FilteredClassifier中使用j48,如下所示:
Remove rm = new Remove();
rm.setAttributeIndices("1"); // remove 1st attribute
// classifier
J48 j48 = new J48();
j48.setUnpruned(true); // using an unpruned J48
// meta-classifier
FilteredClassifier fc_J48 = new FilteredClassifier();
fc_J48.setFilter(rm);
fc_J48.setClassifier(j48);
tdta.dataSet.setClassIndex(tdta.dataSet.numAttributes() - 1);
fc_J48.buildClassifier(tdta.dataSet);
现在,我尝试这些选项:
j48.classifyInstance(dataSet.instance(1))
或
eval.evaluateModelOnce(j48, dataSet.instance(1))
我认为这将是相同的结果。
我的问题是: 当我得到双号时,我怎样才能将它翻译成班级名称?
答案 0 :(得分:2)
试试这个:
System.out.println(dataSet.classAttribute().value((int) j48.classifyInstance(dataSet.instance(1)));
看看:http://weka.8497.n7.nabble.com/Predicting-in-java-td27363.html
答案 1 :(得分:1)
for (int i = 0; i < test.numInstances(); i++) {
double pred = fc.classifyInstance(test.instance(i));
System.out.print("ID: " + test.instance(i).value(0));
System.out.print(", actual: " + test.classAttribute().value((int) test.instance(i).classValue()));
System.out.println(", predicted: " + test.classAttribute().value((int) pred));
}
test
为testInstances
,因此如果您有一个实例,则可以将test.instance(i)
替换为您的实例。