有的时候我们需要将ROC曲线输出在同一张图中,这样可以更加直观地对比模型;并且我们常常会遇到在图形中有文字相互遮挡的问题,我们可以用adjustText中的adjust_text来实现文本不相互遮挡并添加箭头的功能。

定义多条roc曲线画图函数

def multi_models_roc(names, prob_results, colors,linestyles, y_test, save=True, dpin=100):"""将多个机器模型的roc图输出到一张图上Args:names: list, 多个模型的名称prob_results: 使用模型预测的概率值(predict_proba()函数的返回值)colors: 想绘制的曲线的颜色列表linestyles: 想绘制的曲线的线型save: 选择是否将结果保存(默认为png格式)Returns:返回图片对象plt"""plt.figure(figsize=(10, 10), dpi=dpin)from adjustText import adjust_texttexts = []for (name, result, colorname,linestylename) in zip(names, prob_results, colors, linestyles):y_test_predprob = result[:,1]fpr, tpr, thresholds = roc_curve(y_test, y_test_predprob)optimal_th, optimal_point = Find_Optimal_Cutoff(TPR=tpr, FPR=fpr, threshold=thresholds)
#         plt.plot(optimal_point[0], optimal_point[1], marker='o', color='r')
#         texts.append(plt.text(optimal_point[0], optimal_point[1], name+' '+f'Threshold:{optimal_th:.2f}'))texts.append(plt.text(optimal_point[0], optimal_point[1], name))plt.plot(fpr, tpr, lw=3, label='{} (AUC={:.3f})'.format(name, auc(fpr, tpr)),color = colorname,linestyle=linestylename)plt.plot([0, 1], [0, 1], '--', lw=3, color = 'grey')plt.axis('square')plt.xlim([0, 1])plt.ylim([0, 1.05])plt.xlabel('False Positive Rate',fontsize=10)plt.ylabel('True Positive Rate',fontsize=10)plt.title('ROC Curve',fontsize=20)plt.legend(loc='lower right',fontsize=10)adjust_text(texts, arrowprops=dict(arrowstyle='->',#箭头样式 lw= 2,#线宽color='red')#箭头颜色)if save:plt.savefig('multi_models_roc.png')return plt

调用函数画图

names = ['Logistic Regression','Naive Bayes','Decision Tree','Random Forest','SVM','Neural Network','GBDT','LightGBM','XGBoost']#这是各个模型的预测值返回列表
prob_results = [lg_y_prob,nb_y_prob,tree_y_prob,rf_y_prob,svm_y_prob,bp_y_prob,gbdt_y_prob,lgb_y_prob,xgb_y_prob]colors = ['crimson','orange','gold','mediumseagreen','steelblue', 'mediumpurple' ,'black','silver','navy']linestyles = ['-', '--', '-.', ':', 'dotted', 'dashdot', '--', 'solid', 'dashed']#ROC curves
train_roc_graph = multi_models_roc(names, prob_results, colors, linestyles,  Y_test_smo_tmo, save = True)
train_roc_graph.savefig('ROC_Train_all.png')

结果展示:

【机器学习系列】如何将多条ROC曲线画在一张图里,并解决文本遮挡问题相关推荐

  1. 把多个ROC曲线画在一张图上

    为了展示实验效果,ROC曲线也能更直观的展示而且美观.所以我想画出ROC曲线.下面是两个方法:1)只画一个ROC曲线,2)多个ROC曲线展示在一张图上. 注:我是已经有y-pred,所以直接用即可,不 ...

  2. python 将多个模型的ROC曲线绘制在一张图里(含图例)

    一. 多条ROC曲线绘制函数 def multi_models_roc(names, sampling_methods, colors, X_test, y_test, save=True, dpin ...

  3. julia如何将多个曲线画在一张图里

    # 本例子使用PyPlot包,使用之前要安装PyPlot,安装教程网上就有,百度即可 # 示例代码如下 using PyPlot n = 10 # 线条数 x = rand( n, n )for i ...

  4. 如何用matlab画道路,MATLAB中如何将多条曲线画在一张图上

    在用MATLAB处理数据时,有时候,为了几组不同数据之间的对比,我们需要将几组数据对应的曲线画在一张图上,该怎么处理呢? 首先,我们随机产生三组范围不同的数据,数据量都为500,他们的边界分别为[10 ...

  5. r语言 把2条roc曲线画在同一个图上_R语言如何将多个图像画到一张图

    介绍 有时候我们需要将多个图像排列好放到一张图上,对于R语言基础包的函数,比如plot, barplot, hist等,是可以通过par, layout进行排版,但是对于ggplot的图像,我们需要使 ...

  6. matlab,多条曲线画到一张图上

    在matlab中,经常遇到画图问题,甚至,有时候需要把其他软件中的数据,导出来,用matlab处理. 此处给出,用matlab处理数据的一些简单方法. 1)matlab加载excel文件 首先,数据在 ...

  7. matlab画星号图线,matlab,多条曲线画到一张图上

    在matlab中,经常遇到画图问题,甚至,有时候需要把其他软件中的数据,导出来,用matlab处理. 此处给出,用matlab处理数据的一些简单方法. 1)matlab加载excel文件 首先,数据在 ...

  8. Python-matplotlib实现多条曲线画在一张图上

    调用Python包 import matplotlib.pyplot as plt import pandas as pd from matplotlib.pyplot import Multiple ...

  9. 机器学习中的度量指标:ROC曲线,AUC值,K-S曲线

    机器学习中的度量指标:ROC曲线,AUC值,K-S曲线 首先,回顾一下二分类问题的一些定义: 预测 1 0 实 1 TP FN ​际 0 FP TN 上表中,四个项分别为:TP真阳性:FN假阴性:FP ...

最新文章

  1. boost::mp11::mp_power_set相关用法的测试程序
  2. POJ - 2826 An Easy Problem?!(计算几何,好题)
  3. iphone开机白苹果_摔过的iPhone,手机不开机、白苹果、听筒无声,多重问题一次搞定...
  4. 批量提取文件创建时间_不要眨眼!批量提取文件名,只需30秒
  5. 黑客攻防专题八:21种RING的提权方法
  6. android onclick执行顺序,浅谈onTouch先执行,还是onClick执行(详解)
  7. Integer中1000==1000为false而100==100为true
  8. socket通信基础
  9. 基于JQuery做的一个简单的点击显示和隐藏的小Demo
  10. Oracle数据恢复顾问(Data Recovery Advisor)
  11. JAVA实现生成GIF动态图加文字(完整版无License带锯齿优化处理)
  12. 第三阶段:数据存储与计算(离线场景):3.2 数据存储hdfs
  13. 在spyder中设置缩进对齐线提示
  14. (二)mybatisPlus实现ActiveRecord(AR)操作
  15. C语言程序设计笔记(浙大翁恺版) 第八周:数组
  16. 第五届中国网络安全大会(NSC2017)
  17. 基于Arduino、ESP8266的物联网项目开发方案整理、毕业设计(第一波)
  18. 前端调取.net core webapi 报错:“...CORS policy: Response to preflight request ...“的问题成因和解决办法。
  19. c语言中short作用,C语言short
  20. 文件上传一句话木马getshell

热门文章

  1. Java集合 - ConcurrentHashMap
  2. tomcat日志配置之二log4j
  3. mysql 按一定条件导出 导出指定库指定表 数据
  4. 在线考试系统设计时必须考虑的问题之二------------人性化问题
  5. 蓝桥杯实战应用【算法代码篇】-堆排序(附Java、python、C++、C语言和matlab代码)
  6. TQ2440 学习笔记—— 8、自己制作工具链
  7. ios inHouse 发布应用
  8. python读取游戏数据_一个python简单文字游戏里的数据征集
  9. 为人民服务!选调生公告:江苏省2023年应届优秀大学毕业生
  10. 五个基于Google Earth的小游戏