我正在尝试绘制ROC曲线以评估孤立森林算法在乳腺癌数据集上的准确性。我从混淆矩阵中计算了真阳性率(TPR)和假阳性率(FPR)。然而,我不理解TPR和FPR为什么是矩阵形式,而不是单个整数值。此外,ROC曲线似乎只能使用矩阵形式的FPR和TPR(我也尝试手动编写计算FPR和TPR的代码)。
TPR和FPR的值是否总是以矩阵形式出现?
无论如何,我的ROC曲线呈直线。为什么会这样呢?
混淆矩阵:
from sklearn.metrics import confusion_matrix
cnf_matrix = confusion_matrix(y, y_pred_test1)
输出:
> [[ 5 25]
> [ 21 180]]
真正例和假正例:(此外,为什么这些值直接从混淆矩阵中取出?)
F_P = cnf_matrix.sum(axis=0) - np.diag(cnf_matrix)
F_N = cnf_matrix.sum(axis=1) - np.diag(cnf_matrix)
T_P = np.diag(cnf_matrix)
T_N = cnf_matrix.sum() - (FP + FN + TP)
F_P = F_P.astype(float)
F_N = F_N.astype(float)
T_P = T_P.astype(float)
T_N = T_N.astype(float)
输出:
False Positive [21. 25.]
False Negative [25. 21.]
True Positive [ 5. 180.]
True Negative [180. 5.]
TPR 和 FPR:
tp_rate = TP/(TP+FN)
fp_rate = FP/(FP+TN)
输出:
TPR : [0.16666667 0.89552239]
FPR [0.10447761 0.83333333]
ROC 曲线:
from sklearn import metrics
import matplotlib.pyplot as plt
plt.plot(fp_rate,tp_rate)
plt.show()
O/P:
这是一个关于IT技术的图片,您可以点击链接查看。
fpr,tpr,thresh
,也就是说,对于每个阈值,您都会得到真正和假正的比率,而不仅仅是整个预测器的比率。 - G. Anderson