考虑一个二分类的情况,类别为1和0,我们将1和0分别作为正类(positive)和负类(negative),则实际分类的结果有4种,表格如下(混淆矩阵):
真实情况 预测结果
正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)
敏感性Sensitivity (Sen):
Sen=TP/(TP+FN)*100%
特异性 Specificity (Spe)
spe=TN/(TN+FP)*100%
在癌症示例中,敏感性和特异性指:
敏感性:在患有癌症的所有人中,诊断正确的人有多少?
特异性:在未患癌症的所有人中,诊断正确的人有多少?
代码实现:
1.首先计算混淆矩阵
输入:标签数据和预测结果
输出:混淆矩阵
from sklearn.metrics import confusion_matrix
confusion_matrix(y_true, y_pred, labels=list(set(y_true)))
2.然后根据上面的公式分别计算灵敏度和特异性