【问题标题】:WEKA input of predictions in 10folds CSV output10 倍 CSV 输出中预测的 WEKA 输入
【发布时间】:2017-01-13 16:02:57
【问题描述】:

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

我可以手动实施 10 倍方法;即,我可以创建 10 个 ARFF 文件,然后在每个文件上运行 90/10 的百分比拆分(并保留顺序)。这个解决方案看起来很复杂,工作量大而且容易出错。

感谢您的帮助!

【问题讨论】:

  • 不太清楚你在问什么。你有一个模型,你需要对实例进行分类?如果是这样,为什么要使用 10 倍 CV?或者您需要检查模型的精度、召回率等?
  • 或者你需要查看测试集中每个实例对每个折叠的分类结果是什么?
  • 谢谢,我已经编辑了问题。

标签: weka


【解决方案1】:

为此,您需要对每个折叠执行以下操作:

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

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

}   

现在res 数组有测试集中每个实例的分类结果。您可以根据需要使用此信息。 例如,您可以打印每个实例的属性(例如,如果属性是字符串,您可以使用 (Before addedFilter) testSet.get(j).stringValue(PositionOfAttributeYouWantToPrint)) 后跟分类结果来打印它们。

请注意,如果分类结果是标称值,您可以使用以下命令打印:

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

【讨论】:

  • 您好 xro7,感谢您的帮助。我从未在 JAVA 中使用过 WEKA,我只通过 GUI 使用过 WEKA。假设我使用名为 X.arff 和 RandomForest 作为分类方法的文件作为输入,您能否发布更完整的 JAVA 代码?顺便说一句,我想打印实例的原始 ID(又名订单)。
  • 我不知道您是通过 GUI 工作的。好吧,这并不像它的声音那么简单。因为我不知道你的 arff 文件包含什么。从这里开始按照步骤并自己做是相当容易的weka.wikispaces.com/Use+WEKA+in+your+Java+code
猜你喜欢
  • 1970-01-01
  • 2015-10-19
  • 2016-06-03
  • 2012-10-19
  • 2012-06-07
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 2021-10-29
相关资源
最近更新 更多