我对分类准确性的理解总是“#correctly classification instances by #instances”。 使用Java-ML并将LibSVM应用于多标签问题,我获得了每个CLASS的准确性(和其他测量)。我无法弄清楚它们是如何相关的以及整体准确性是什么。
例如,对于我的3级问题,我得到以下结果:
Anger: Accuracy = 0.48148148148148145 | F = 0.35 | Precision = 0.310126582278481 | Error rate = 0.5185185185185185
Neutral: Accuracy = 0.9971509971509972 | F = 0.0 | Precision = NaN | Error rate = 0.002849002849002849
Surprise: Accuracy = 0.47863247863247865 | F = 0.5653206650831354 | Precision = 0.616580310880829 | Error rate = 0.5213675213675214
我的代码看起来像这样:
Map<Object, PerformanceMeasure> pm = cv.crossValidation(data, 5);
for (Object o : pm.keySet()) {
System.out.println(o + ": Accuracy = " + pm.get(o).getAccuracy()
+ " | F = " + pm.get(o).getFMeasure()
+ " | Precision = " + pm.get(o).getPrecision()
+ " | Error rate = " + pm.get(o).getErrorRate());
}
答案 0 :(得分:0)
如果没有均匀分布的课程,那么总体准确性并不具有信息性,在您的情况下可能是正确的。如果你愿意,你仍然可以计算一个,请参阅: http://spokenlanguageprocessing.blogspot.com/2011/12/evaluating-multi-class-classification.html
要回答关于它们如何相关的其他问题,结果将逐个类别地计算。那么对于中性(情绪?)你有很高的准确度(超过99%),虽然你没有预测一个中性的例子(你的数据集中可能没有任何NaN)。你的准确性正在得到提升,因为你称其他一切“不中立”,并且有很多这种情况。其他情况更容易理解,因为它们有正面和负面的例子以及更合理的数字。希望这会有所帮助。