实现功能:
python实现绘制多个模型的ROC曲线
输入模型的预测概率值以及测试样本的真实标签,绘制出模型的ROC曲线并计算出AUC值,同时实现将多个模型的ROC曲线绘制在一张图中进行比较。
实现代码:
1 | import pandas as pd |
2 | import seaborn as sns |
3 | import matplotlib.pyplot as plt |
4 | from sklearn.metrics import roc_curve, auc |
5 | |
6 | def Draw_ROC(file1,file2): |
7 | data1=pd.read_excel(file1) |
8 | data1=pd.DataFrame(data1) |
9 | data2=pd.read_excel(file2) |
10 | data2=pd.DataFrame(data2) |
11 | |
12 | fpr_CSNN,tpr_CSNN,thresholds=roc_curve(list(data1['真实标签']), |
13 | list(data1['positive概率'])) |
14 | roc_auc_CSSSNN=auc(fpr_CSNN,tpr_CSNN) |
15 | |
16 | fpr_NN,tpr_NN,thresholds=roc_curve(list(data2['真实标签']), |
17 | list(data2['positive概率'])) |
18 | roc_auc_DL=auc(fpr_NN,tpr_NN) |
19 | |
20 | font = {'family': 'Times New Roman', |
21 | 'size': 12, |
22 | } |
23 | sns.set(font_scale=1.2) |
24 | plt.rc('font',family='Times New Roman') |
25 | |
26 | plt.plot(fpr_NN,tpr_NN,'purple',label='NN_AUC = %0.2f'% roc_auc_DL) |
27 | plt.plot(fpr_CSNN,tpr_CSNN,'blue',label='CSNN_AUC = %0.2f'% roc_auc_CSSSNN) |
28 | plt.legend(loc='lower right',fontsize = 12) |
29 | plt.plot([0,1],[0,1],'r--') |
30 | plt.ylabel('True Positive Rate',fontsize = 14) |
31 | plt.xlabel('Flase Positive Rate',fontsize = 14) |
32 | plt.show() |
33 | |
34 | if __name__=="__main__": |
35 | Draw_ROC('F:医学大数据课题RA预测RA预测CSSSDL_0.92-0.86-0.90.xlsx', |
36 | 'F:医学大数据课题RA预测RA预测DL_0.83-0.83-0.83.xlsx') |
实现效果:
输入两个模型的预测概率值(阳性概率)以及测试样本的真实标签,绘制出如下ROC曲线并计算出曲线的AUC
喜欢记得点赞,在看,收藏,加关注(V订阅号:数据杂坛),将持续更新!