如何解决计算数据帧内响应的真阳性和假阴性
我有调查结果,我已对其进行了单热编码。我想计算每个参与者反应的敏感度。
以下是我的 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 举报,一经查实,本站将立刻删除。