python按条件分组的混淆矩阵

时间:2020-06-24 21:20:59

标签: python pandas group-by confusion-matrix

我有类似熊猫的数据框

work_id: user_id : actual : predicted
1      : 40      : True   : False
2      : 40      : True   : True
3      : 40      : True   : True
4      : 41      : True   : False
5      : 41      : False  : True
6      : 41      : False  : True

我要基于实际== True的条件来计算混淆矩阵,结果应类似于

user_id : accuracy : accuracy_perct
40      : 2        : 0.67
41      : 0        : 0.00

1 个答案:

答案 0 :(得分:1)

您可以使用groupby

import numpy as np
import pandas as pd


df = pd.DataFrame(
    data=[[1, 40, True, False, 0],
          [2, 40, True, True, 0],
          [3, 40, True, True, 0],
          [4, 41, True, False, 0],
          [5, 41, False, True, 0],
          [6, 41, False, True, 0]],
    columns=['work_id', 'user_id', 'actual', 'predicted', 'accurate']
)

df['accurate'] = np.where(df.actual == df.predicted, 1, 0)
df.groupby('user_id')['accurate'].agg(
    accuracy=('accurate', 'sum'),
    accuracy_perct=(lambda x: sum(x) / len(x)),
).reset_index()

返回

user_id accuracy    accuracy_perct
40  2   0.666667
41  0   0.000000