ROC曲线
根据机器学习中分类器的预测得分对样例**(每个样例的阳性概率)**进行排序,按照顺序逐个把样本的概率作为阈值thresholds进行预测,计算出FPR和TPR。分别以FPR、TPR为横纵坐标作图即可得到ROC曲线。所以作ROC曲线时,需要先求出FPR和TPR。这两个变量的定义:
FPR = TP/(TP+FN)
TPR = TP/(TP+FP)
将样本输入分类器,每个样本将得到一个预测得分。我们通过设置不同的截断点,即可截取不同的信息。对应此示例图中,每个阈值的识别结果对应一个点(FPR,TPR)。当阈值取最大时,所有样本都被识别成负样本,对应于坐下角的点(0,0); 当阈值取最小时,所有样本都被识别成正样本,对应于右上角的点(1,1),随着阈值从最大变化到最小,TP和FP都逐渐大;
python中调用ROC
import numpy as np
from sklearn import metrics
import matplotlib.pyplot as plt
from sklearn.metrics import auc
# 真实标签
y_true = np.array([0,0,1,1])
print('y_true: ', y_true)
# y_score为预测为阳性的得分(说概率不大准确,因为这个score可以大于1)
y_score = np.array([0.1, 0.35, 0.3, 0.8])
print('y_score:', y_score)
fpr, tpr, thresholds = metrics.roc_curve(y_true, y_score, pos_label=1)
print('fpr', fpr)
print('tpr', tpr)
print('thresholds', thresholds)
plt.plot(fpr,tpr,marker = 'o')
plt.show()
AUC = auc(fpr, tpr)
print('AUC', AUC)
输出:
阈值[0]表示没有被预测的实例,并且被任意设置为max(y_score) + 1
评论区