使用 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]])
我有一个如下所示的数据框。
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]])