python 按条件分组的混淆矩阵
python confusion matrix by group with condition
我有 pandas 个数据框
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
你可以使用 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()
Returns
user_id accuracy accuracy_perct
40 2 0.666667
41 0 0.000000
我有 pandas 个数据框
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
你可以使用 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()
Returns
user_id accuracy accuracy_perct
40 2 0.666667
41 0 0.000000