python—计算Dataframe内响应的真正和假负

bihw5rsg  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(365)

我有一个热编码的调查结果。我想计算每个参与者React的敏感度。
下面是我的Dataframe的结构示例,其中:
“巧克力”和“冰淇淋”是正确的
“pizza”和“none of the above”不正确

Question 1      |  Chocolate  |  Pizza  | Ice-Cream | None of the Above |   
Participant ID  |             |         |           |                   |
1               |      1      |    1    |     1     |       0           |
2               |      0      |    0    |     1     |       0           |
3               |      1      |    0    |     1     |       0           |

我想附加一个列,其中包含真阳性和假阴性的总和,然后创建另一个敏感度得分(为每个参与者)。
下面是我要做的一个例子:

Question 1      |  Chocolate  | ...  | True Positive | False Negative | ..  
Participant ID  |             |      |               |                | 
1               |      1      | ...  |     2         |       0        | .. 
2               |      0      | ...  |     1         |       1        | ..
3               |      1      | ...  |     2         |       1        | ..

我不知道从哪里开始!有人能帮我吗?
谢谢!

bejyjqdl

bejyjqdl1#

您可以使用混淆矩阵(例如,从sklearn)计算“真pos”和“假neg”等。也许以下代码对您有用:

import pandas as pd
import sklearn
from sklearn.metrics import confusion_matrix

a = [[1,1,1,0], [0,0,1,0], [1,0,1,0]]
correct = [[1,0,1,0], [1,0,1,0], [1,0,1,0]]

df = pd.DataFrame(data=a)
df.columns=['chocolate', 'pizza', 'icecream', 'none']

for i in range(len(df)):
  pred = a[i]
  true = correct[i]
  tn, fp, fn, tp = confusion_matrix(true,pred).ravel()
  print (f'Nr:{i}  true neg:{tn}  false pos:{fp}   false neg:{fn}   true pos:{tp}')

输出是(可以放入Dataframe中):

Nr:0  true neg:1  false pos:1   false neg:0   true pos:2
Nr:1  true neg:2  false pos:0   false neg:1   true pos:1
Nr:2  true neg:2  false pos:0   false neg:0   true pos:2

相关问题