0

我是数据挖掘和 Weka 的新手。我使用 GUI 在 Weka 中使用J48构建了一个分类器。当 Weka 完成运行时,它会说:

Correctly Classified Instances 1035   -  68.543 %

Incorrectly Classified Instances 475  -  31.457 %

从我自己的代码(使用 IKVM.NET 的 C#)运行时,我使用相同的未标记数据集重新评估我的模型,将预测类的结果保存到 ARFF 文件中,并计算从 1500 条记录中获得的结果。

大约 1300 条记录被正确分类,200 条没有,这给出了(我认为)86% 的精度测量。

这个对吗?那为什么结果会不一样呢?

4

2 回答 2

5

我认为您令人困惑的“准确性”和“精确性”,它们不是一回事

  • 准确率是所有实例的正确分类实例的百分比
  • 精度是那些被分类为正例的正确分类实例的百分比

在公式中:

  • 准确度 = (TP + TN) / (TP + TN + FP + FN) = #correct / #all_instances

  • 精度 = TP / (TP + FP) = #correct_positive / #classified_as_positive

如果您在这两种情况下都表示准确度(1300/1500 的准确度约为 86%),那么如果不查看您的代码和 GUI 的日志,就无法判断发生了什么,这对于这里。

最可能的解释是您的代码所做的事情与您在 GUI 中所做的事情不同。可能是不同的随机化、不同的分割、不同的学习参数等等。

于 2015-04-13T22:46:14.380 回答
4

有许多性能统计指标

Weka 给你的结果只是对正确和错误分类记录数量的衡量,即

  • 正确分类的记录= TP + TN
  • 错误分类记录= FP + FN

测量精度不同。精度是衡量正确分类实例中有多少是相关的,即

  • 精度= TP / (TP + FP)

这是一个高度具体的指标,与其他指标(如召回率准确率)相关的观察效果最好。这可能不是衡量模型总体性能的最佳方法。

有关 Precision 和 Recall 的更多信息,请参阅:http ://en.wikipedia.org/wiki/Precision_and_recall

不过,你的数字没有多大意义。但是,在不了解更多细节的情况下,不能说更多。

于 2015-04-13T23:11:00.237 回答