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

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

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

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

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

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

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

bejyjqdl

bejyjqdl1#

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

  1. import pandas as pd
  2. import sklearn
  3. from sklearn.metrics import confusion_matrix
  4. a = [[1,1,1,0], [0,0,1,0], [1,0,1,0]]
  5. correct = [[1,0,1,0], [1,0,1,0], [1,0,1,0]]
  6. df = pd.DataFrame(data=a)
  7. df.columns=['chocolate', 'pizza', 'icecream', 'none']
  8. for i in range(len(df)):
  9. pred = a[i]
  10. true = correct[i]
  11. tn, fp, fn, tp = confusion_matrix(true,pred).ravel()
  12. print (f'Nr:{i} true neg:{tn} false pos:{fp} false neg:{fn} true pos:{tp}')

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

  1. Nr:0 true neg:1 false pos:1 false neg:0 true pos:2
  2. Nr:1 true neg:2 false pos:0 false neg:1 true pos:1
  3. Nr:2 true neg:2 false pos:0 false neg:0 true pos:2
展开查看全部

相关问题