我有一个数据框,如下所示.

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 计算整体精度.

我try 了下面的代码来计算类精度.

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()

yields :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]])

Python-3.x相关问答推荐

需要使用regex匹配字符串的帮助,直到最后一次出现开闭括号,开闭括号中的值是可选的

Numpy将3D数组的每个切片相乘以进行转置并对其求和

Pandas :从元组字典创建数据帧

如何将多个字典合并到一个列中,并为不同的行使用相同的键

从Metacritic上通过网络擦除游戏数据的问题

为什么 get_form 方法中小部件的更改没有反映 Django 管理站点中的更改

SQL Server 2022和Python3.10脚本错误

隐藏Cartopy中高纬度非矩形投影的右侧轴(纬度)标签

pytorch 中 mps 设备的 manual_seed

位对的距离

是否可以将多个 if 转换为数组?

使用 pandas 数据帧映射到中转( node )点的跨容量请求

为什么 setattr 在绑定方法上失败

在 Python 3.5 中使用 aiohttp 获取多个 url

如何在 Python 中计算两个包含字符串的列表的 Jaccard 相似度?

Python中的多行日志(log)记录

python 3的蓝牙库

如何遍历某些扩展名的文件?

用 Anaconda 安装了一个包,无法在 Python 中导入

有没有一种标准方法来确保 python 脚本将由 python2 而不是 python3 解释?