我有类似熊猫的数据框
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
答案 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