如何利用sklearn中roc_curve 三行代码画ROC曲线

ROC曲线是评估模型效果的重要工具,其X轴为假阳性率,Y轴为真阳性率(也叫召回率recall),其意义在于,在真阳性率时,模型同时判错阳性的样本比例,因此曲线越陡,越表示模型效果好。ROC曲线下AUC面积越大表示模型效果越好,我们可以利用sklearn 中的roc_curve函数方便的画ROC曲线。

#导入要用到的库
# load the package
import numpy as np
import pandas as pd
from sklearn.metrics import roc_curve
from sklearn.metrics import accuracy_score as ACC
from sklearn.metrics import roc_auc_score as AUC
import matplotlib.pyplot as plt

#导入测试数据集的预测概率结果
test_prob = pd.read_csv("result_5f/holdout_prob.csv", index_col=0, header=0)
# 查看数据类型
test_prob.tail()

在这里插入图片描述
该数据第一列为第一次验证时的概率值,后面一列为label,后面同样一个概率对应一个label。共5次交叉验证的结果。每次验证可以画一条roc曲线,本数据可以画5条。

开始画ROC曲线

#导入要用的库
from sklearn.metrics import roc_curve 
from sklearn.metrics import roc_auc_score as AUC
import matplot.pyplot as plt

# 利用roc_curve函数获得假阳性率FPR,和真阳性率recall,都是一系列值
FPR, recall, thresholds = roc_curve(test_prob["1"],test_prob["0"])
# 计算AUC面积
area = AUC(test_prob["1"], test_prob["0"])

# 画图
plt.figure()
plt.plot(FPR,recall,label='ROC curve (area = %0.2f)' % area)
plt.legend(loc="lower right")
plt.show()

在这里插入图片描述

画出5次交叉验证的roc曲线在一张图中

# draw aoc curve of 5-fold cross_validation model
plt.figure()
color = ["red","green","blue","navy","purple"]
for i in range(0,10,2):
	#分别计算每次的FPR和recall值
    FPR, recall, thresholds = roc_curve(test_prob[str(i+1)],test_prob[str(i)])
    area = AUC(test_prob[str(i+1)], test_prob[str(i)])
    plt.plot(FPR, recall, color=color[int(i/2)],
             label='ROC curve (area = %0.2f)' % area)
    plt.plot([0, 1], [0, 1], color='black', linestyle='--')
    plt.xlim([-0.05, 1.05])
    plt.ylim([-0.05, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('Recall')
plt.title('ROC curve')
plt.legend(loc="lower right")
plt.show()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44022515/article/details/105434949
今日推荐