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

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相关问答推荐

将f-字符串放置在f-字符串内

Python - 根据条件附加 NULL 值

替换 .txt 文件中的项目列表

「Python Pandas」多级索引列和行匹配,如果列和行名称相似,则排除这些单元格中的值添加

如何将日期时间索引写入日期类型的表?

如何将 OLS 趋势线添加到使用 updatemenus 显示数据子集的 plotly 散点图图形对象?

pytorch 中 mps 设备的 manual_seed

如何在 20 秒后重复使用 Pillow 在现有图像上创建新图像?

导入在不同目录中定义的函数

根据另一列值对多个数据框列进行分组

魔术8球txt文件列表

Semaphore信号量 Python 的工作原理

Python中的依赖倒置

无法在 Windows 8 中使用 Python 3.3 找到 vcvarsall.bat

在不关心项目的情况下运行生成器功能的更简单方法

连接 dict 值,它们是列表

finally 总是在 try 块返回之前运行,那么为什么 finally 块中的更新不会影响 try 块返回的变量的值呢?

三个参数的reduce函数

TypeError:无法实例化类型元组;使用 tuple() 代替

在 Python 中生成马尔可夫转移矩阵