2016-09-06 33 views
0

我使用WEKA Explorer来运行10倍交叉验证。我输出预测到一个CSV文件。由于10fold方法混合了数据的顺序,我不知道哪些具体数据是正确或不正确的分类。 我的意思是,通过查看CSV我不知道哪个具体的 1或0被分类为1或0.有没有什么方法可以查看每个折叠测试集中每个特定实例的分类结果是什么?例如,如果CSV会记录被分类的实例的ID,那就太好了。WEKA在10倍CSV输出中的预测输入

一种替代方案可能是我手动实现10fold方法;即我可以创建10个ARFF文件,然后在每个文件上运行一个90/10的百分比(并保持顺序)。这个解决方案看起来相当详细,费力并且容易出错。

感谢您的帮助!

+0

这是不太清楚什么是你问你有一个模型,你需要进行分类情况如果是这样,为什么用10倍CV或者你需要检查你的模型的准确率,召回等? – xro7

+0

或者您是否需要查看每次折叠测试集中每个实例的分类结果? – xro7

+0

谢谢,我编辑了任务离子。 –

回答

0

要做到这一点,你需要做的每一个折以下:

int result = new int[testSet.numInstances()]; 
for (int j = 0; j < testSet.numInstances(); j++) { 

    double res[j] = classifier.classifyInstance(testSet.get(j)); 

} 

现在res阵列具有用于测试集合中的每个实例的分类结果。您可以根据需要使用这些信息。 例如,您可以打印每个实例的属性(例如,如果属性是字符串,你可以使用(addingFilter之前)testSet.get(j).stringValue(PositionOfAttributeYouWantToPrint))其次是分类结果打印出来。

注意,如果分类结果是名义值,你可以打印使用这样的:??

testSet.classAttribute().value((int)res[j]))  
+0

HI xro7,感谢您的帮助。我从来没有在JAVA中使用WEKA,我只能通过GUI使用WEKA。假设我将一个名为X.arff和RandomForest的文件用作输入文件作为分类方法,您可以发布一个更完整的JAVA代码吗?顺便说一句,我想打印实例的原始ID(又名顺序)。 –

+0

我没有相信你通过GUI工作。那么这不像它的声音那么简单。因为我不知道你的arff文件包含了什么。从这里开始步骤很简单,自己动手吧http://weka.wikispaces.com/Use+WEKA+in+your+Java+code – xro7