Weka如何使用J48计算精度?

时间:2015-04-13 12:13:16

标签: machine-learning classification weka precision j48

我是数据挖掘和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%的精度测量值。

这是对的吗?为什么结果会有所不同?

2 个答案:

答案 0 :(得分:4)

我认为你的困惑"准确性"和"精度",they are not the same thing

  • 准确度是所有实例
  • 的正确分类实例的百分比
  • 精确度是已归类为正数的实例的正确分类实例的百分比

在公式中:

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

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

如果你在两种情况下都意味着准确性(1300/1500的准确度大约是86%),那么在没有看到你的代码和GUI的日志的情况下,没有办法知道发生了什么,这可能是太多了。

最有可能的解释是,您的代码与GUI中的代码有所不同。也许是不同的随机化,不同的分裂,不同的学习参数等等。

答案 1 :(得分:4)

有许多性能统计指标

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

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

与测量精度相同。精度是衡量相关的正确分类实例的数量,即

  • 精确度 = TP /(TP + FP)

这是一个非常具体的指标,最好与其他指标相关,例如召回准确性。它可能不是衡量模型一般性能的最佳方法。

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

尽管如此,你的数字还是没有多大意义。但是,如果不了解更多细节,可以说更多。