微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算数据帧内响应的真阳性和假阴性

如何解决计算数据帧内响应的真阳性和假阴性

我有调查结果,我已对其进行了单热编码。我想计算每个参与者反应的敏感度。

以下是我的 DataFrame 的结构示例,其中:

  • “巧克力”和“冰淇淋”是正确的
  • “披萨”和“以上都不是”是不正确的
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        | ..

我不知道从哪里开始!谁能帮帮我?

非常感谢!

解决方法

您可以使用混淆矩阵(例如来自 Sklearn)来计算“真实位置”、“假否定”等。也许下面的代码对你有用:

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

a = [[1,1,0],[0,[1,0]]
correct = [[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}')

输出是(您可以将其放入数据帧中):

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。