Weka 如何使用 J48 计算精度?

Lor*_*nzo 0 precision classification machine-learning weka j48

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

Correctly Classified Instances 1035   -  68.543 %

Incorrectly Classified Instances 475  -  31.457 %
Run Code Online (Sandbox Code Playgroud)

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

大约 1300 条记录被正确分类,200 条没有被正确分类,这使(我认为)精确度为 86%。

这样对吗?为什么结果会不同呢?

Sen*_*try 5

我认为您混淆的“准确度”和“精确度”,它们不是一回事

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

在公式中:

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

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

如果您在这两种情况下都表示准确度(1300/1500 的准确度约为 86%),则无法在没有看到您的代码和 GUI 日志的情况下判断发生了什么,这可能太多了这里。

最可能的解释是您的代码执行的操作与您在 GUI 中执行的操作不同。也许不同的随机化、不同的分割、不同的学习参数等等。