使用 pandas 进行多类分类的总体准确率

Overall accuracy of multiclass classification using pandas

我有一个如下所示的数据框。

id     label     prediction
1      cat       cat
2      dog       cat
3      cow       dog
4      cow       cow
5      dog       cat
6      cat       cat
7      cat       cat
8      dog       dog
9      dog       dog
10     cat       cat

根据上面的 df,我想使用 pandas.

来计算整体精度

我尝试了下面的代码来计算 class 的准确度。

class_wise_accuracy = (df.groupby('label')['prediction']
                         .value_counts(normalize=True)
                         .unstack(fill_value=0)
                      )

confusion_matrix = (df.groupby('label')['prediction']
                      .value_counts()
                      .unstack(fill_value=0)
                      .reset_index()
                   )

预期输出:

overall_accuracy = (4+1+2)/df.shape[0] = 0.7

IIUC,使用crosstab和底层numpy数组:

a = pd.crosstab(df['label'], df['prediction']).to_numpy()

overall_accuracy = a.diagonal().sum()/a.sum()

输出:0.7

中间体:

pd.crosstab(df['label'], df['prediction'])

prediction  cat  cow  dog
label                    
cat           4    0    0
cow           0    1    1
dog           2    0    2

.tonumpy()

array([[4, 0, 0],
       [0, 1, 1],
       [2, 0, 2]])