如何分析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
等等......
答案 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