如何在python中准确计算两个数组的相似性

时间:2015-07-26 22:33:51

标签: python classification predict

我在分类方面遇到了困难。我有两个数组,第一个是' 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

当课程数量增加时,差异会进一步加大。

1 个答案:

答案 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%。显然,没有办法从两个类的准确度百分比中得出总体准确度。

仅通过了解每类精度费率(即百分比),您无法计算总体平均准确度。您需要知道每个类中有多少值,并相应地对整体平均值进行加权。

您当然可以计算每类精度并将其作为单独的信息报告,这可能很有用。在您的情况下,因为您已经知道如何计算整体准确性,所以不清楚为什么需要使用每类方法来计算它。只需以直接的方式计算整体精度,这已经有效。