如何在weka中获取实例的预测值?

我正在研究Weka,需要为每个测试实例输出每个标签的预测值(概率)。

在GUI中,分类选项卡中有一个选项(分类 – >选项 – >输出预测值),它通过输出每个标签的预测概率但是如何在java代码中执行此操作来完成此工作。 我想在分类后获得每个标签的概率分数吗?

以下代码接受一组训练实例,并输出特定实例的预测概率。

import weka.classifiers.trees.J48; import weka.core.Instances; public class Main { public static void main(String[] args) throws Exception { //load training instances Instances test=... //build a J48 decision tree J48 model=new J48(); model.buildClassifier(test); //decide which instance you want to predict int s1=2; //get the predicted probabilities double[] prediction=model.distributionForInstance(test.get(s1)); //output predictions for(int i=0; i 

方法“distributionForInstance”仅适用于能够输出分布预测的分类器。 你可以在这里阅读。

我想我找到了解决方案。

训练集和测试集必须相同:相同的标题,相同的属性名称,相同的顺序。 只更改数字。 问题是:如果我不知道它,为什么我必须把这个类放在测试集中,而这正是我想要获得的? 看起来该方法需要一些东西,但是当你看一下classModel.distributionForInstance(dataModel.instance(0)) ,它会给你一个带有double数组的类的预测。 因此,有必要在测试集中放置一些类的值,然后'distributionForInstance'为您提供类的真实结果。

从WEKA GUI,分类面板 – >按“更多选项…” – >输出预测 – >选择“PlainText”选项。 现在,左键单击“PlainText”并将“outputDistribution”转换为“True”。

请注意,此过程可以在最后的WEKA版本中执行,例如WEKA 3.8.0。

问候,
马丁