我在分类方面遇到了困难。我有两个数组,第一个是' Actual',第二个是' Predicted'。这里有 3 类。
A=np.array([1,1,1, 2,3])
P=np.array([1,1,2,3,3])
上述数组意味着第三和第四个元素尚未准确预测。我想知道当我通过以下代码计算两个数组之间的平均准确度时,它显示_ 0.59 _:
np.mean(A==P)
>out: 0.59
但是,当我通过以下代码计算每个类的准确度时,它会显示 0.57 :
count1=[]
for label in range(1,4):
count1.append(np.mean([(x == y) for x, y in zip(A,P) if x==label]))
count1
>out: [0.666666666667,0.0,1.0]
np.mean(count1)
>out:0.54
当课程数量增加时,差异会进一步加大。
答案 0 :(得分:0)
这与编程无关,而是与计算平均值有关。
假设您只有两个类,并且您的数据是这样的:
实际:[1,1,1,1,2]
预测:[1,1,1,1,1]
预测第1类的准确度为100%,预测第2类的准确度为0%。总体准确率为80%。现在假设您的数据是这样的:
实际:[1,2,2,2,2]
预测:[1,1,1,1,1]
预测1级的准确率再次为100%,预测2级的准确率再次为0%。但是你的整体准确度现在是20%。显然,没有办法从两个类的准确度百分比中得出总体准确度。
仅通过了解每类精度费率(即百分比),您无法计算总体平均准确度。您需要知道每个类中有多少值,并相应地对整体平均值进行加权。
您当然可以计算每类精度并将其作为单独的信息报告,这可能很有用。在您的情况下,因为您已经知道如何计算整体准确性,所以不清楚为什么需要使用每类方法来计算它。只需以直接的方式计算整体精度,这已经有效。