weka混淆矩阵和精度分析

时间:2013-11-19 01:26:49

标签: weka data-mining confusion-matrix

如何分析Weka中的混淆矩阵的准确性? 我们知道由于数据集不平衡,准确性不准确。 混淆矩阵如何“确认”准确性?

实施例: a)准确率96.1728%

   a   b   c   d   e   f   g   <-- classified as
 124   0   0   0   1   0   0 |   a = brickface
   0 110   0   0   0   0   0 |   b = sky
   1   0 119   0   2   0   0 |   c = foliage
   1   0   0 107   2   0   0 |   d = cement
   1   0  12   7 105   0   1 |   e = window
   0   0   0   0   0  94   0 |   f = path
   0   0   1   0   0   2 120 |   g = grass

b)准确度:96.8%

a   b   c   d   e   f   g   <-- classified as
 202   0   0   0   3   0   0 |   a = brickface
   0 220   0   0   0   0   0 |   b = sky
   0   0 198   0  10   0   0 |   c = foliage
   0   0   1 202  16   1   0 |   d = cement
   2   0  11   2 189   0   0 |   e = window
   0   0   0   2   0 234   0 |   f = path
   0   0   0   0   0   0 207 |   g = grass
等等......

3 个答案:

答案 0 :(得分:2)

通过将主对角线中的所有实例相加并除以实例总数(所有混淆矩阵的内容)来计算精度。例如,在a)中,您获得124 + 110 + ... + 120 = 779,实例总数(总计所有内容)为810,因此准确度为0,9617 => 96,17%

您的数据集相当平衡(所有类的实例数大致相同)。当行的总和远大于其他行的sume时,您可以看到数据集是不平衡的,因为行代表实际的类。例如:

a   b  <-- classified as
1000 20 | a = class1
10 10   | b = class2

在这种情况下,class1有1020个实例,而class2只有20个,因此问题非常不平衡。这将影响分类器性能,因为学习算法通常试图最大化准确度(或最小化误差),因此一个简单的分类器,例如,规则for any X, set class = class1的准确度为1020/1040 = 0,9807

答案 1 :(得分:2)

   a   b   c   d   e   f   g   <-- classified as
 124   0   0   0   1   0   0 |   a = brickface
...

这意味着有125个例子 a(brickface)。 124个示例分类为 a (正确),1个示例分类为 e (不正确)。

如果您认为自己的数据不平衡,请使用AUC分数。它是不平衡数据集的存根。

答案 2 :(得分:0)

准确度是正确预测总数的比例。它计算为

Accuracy = (124+110+119+107+105+94+120)/(124+0+0+0+1+0+0+0+110+0+0+0+0+0+1+0+119+0+2+0+0+1+0+0+107+2+0+0+1+0+12+7+105+0+1+0+0+0+0+0+94+0+0+0+1+0+0+2+120)
Accuracy = 779/810 = 0.961728

类似地,

Accuracy = (202+220+198+202+189+234+207)/(202+0+0+0+3+0+0+0+220+0+0+0+0+0+0+0+198+0+10+0+0+0+0+1+202+16+1+0+2+0+11+2+189+0+0+0+0+0+2+0+234+0+0+0+0+0+0+0+207)
Accuracy = 1452/1500 = 0.968
相关问题