绘制ROC曲线及P-R曲线

这篇具有很好参考价值的文章主要介绍了绘制ROC曲线及P-R曲线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

绘制ROC曲线及P-R曲线

描述

ROC曲线(Receiver Operating Characteristic Curve)以假正率(FPR)为X轴、真正率(TPR)为y轴。曲线越靠左上方说明模型性能越好,反之越差。ROC曲线下方的面积叫做AUC(曲线下面积),其值越大模型性能越好。P-R曲线(精确率-召回率曲线)以召回率(Recall)为X轴,精确率(Precision)为y轴,直观反映二者的关系。两种曲线都是分类模型常用的可视化评估工具。

本任务使用乳腺癌数据集(breast_cancer),主要实践内容:

1、 基于支持向量机(SVM)建立肿瘤预测模型,并绘制ROC曲线。

2、 基于逻辑回归建模,并绘制PR曲线。

源码下载

环境

  • 操作系统:Windows10、Ubuntu18.04

  • 工具软件:Anaconda3 2019、Python3.7

  • 硬件环境:无特殊要求

  • 依赖库列表

    matplotlib		  3.3.4
    numpy 	        1.19.5
    scikit-learn	  0.24.2
    

分析

本任务涉及以下环节:

1)分别使用支持向量机和逻辑回归建立肿瘤预测模型

2)绘制ROC曲线,计算AUC面积

3)绘制P-R曲线

实施

步骤1、加载、拆分breast_cancer数据集

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import numpy as np

# 加载breast_cancer数据集
cancer = load_breast_cancer() 

# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, 
                                                    random_state=0)

步骤2、建立SVM分类模型,绘制ROC曲线

from sklearn.svm import SVC
from sklearn.metrics import roc_curve, auc

model = SVC(gamma='scale').fit(X_train, y_train) # 创建SVC模型,拟合训练数据

y_score = model.decision_function(X_test) # 计算样本点到分割面的函数距离
fpr, tpr, threshold = roc_curve(y_test, y_score) # 计算假正率、真正率、阈值
auc2 = auc(fpr, tpr) # 计算auc面积,auc值越接近1模型性能越好
# 绘制ROC曲线
plt.title('ROC Curve') # 标题
plt.xlabel('FPR', fontsize=14) # x轴标签
plt.ylabel('TPR', fontsize=14) # y轴标签
plt.plot(fpr, tpr, label='AUC = %0.4f'%auc2, c='r') # 划线
plt.legend(fontsize=12) # 图例

plt.show()

输出结果:

绘制ROC曲线及P-R曲线

说明:

1、ROC曲线越靠近左上角,模型性能越好,相应的,AUC面积越大则模型性能越好。

2、在同一数据集上不同分类模型的ROC曲线,如果一个模型的ROC曲线可以将另一个包住,则前者性能更好。

步骤3、 不同模型的ROC曲线比较 (选做)

  • 使用不同的参数定义三个模型,比较其ROC曲线
  • ROC曲线越靠近左上角(auc面积越大),模型性能越好
model_1 = SVC(gamma='scale').fit(X_train, y_train) # 创建SVC模型,拟合训练数据
model_2 = SVC().fit(X_train, y_train) 
model_3 = SVC(kernel='linear').fit(X_train, y_train) 
models = [model_1, model_2, model_3]

# 绘制ROC曲线
plt.title('ROC Curve') # 标题
for m in models:
    y_score = m.decision_function(X_test) # 计算样本点到分割面的函数距离
    fpr, tpr, threshold = roc_curve(y_test, y_score) # 计算假正率、真正率、阈值
    plt.xlabel('FPR', fontsize=14) # x轴标签
    plt.ylabel('TPR', fontsize=14) # y轴标签
    plt.plot(fpr, tpr, label='AUC=%0.4f'%auc(fpr, tpr)) # 划线
    

plt.legend(fontsize=12) # 图例
plt.show()

输出结果:

绘制ROC曲线及P-R曲线

步骤4、绘制P-R曲线(精确率-召回率曲线)

P-R曲线(精确率-召回率曲线)以召回率(Recall)为X轴,精确率(Precision)为y轴,直观反映二者间的关系。

  • P-R曲线反映了精确率和召回率之间的关系
  • P-R曲线越凸向右上方,表示模型性能越好
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import precision_recall_curve # P-R曲线计算函数

model = LogisticRegression().fit(X_train, y_train) # 创建LR模型,拟合训练数据

y_score = model.decision_function(X_test) # 计算样本点到分割面的函数距离

# PR曲线计算函数(返回值为精确率、召回率、阈值,参数为测试集和上述距离)
precisions, recalls, thresholds = precision_recall_curve(y_test, y_score)

plt.title('P-R Curve') # 标题
plt.xlabel('Recalls', fontsize=14) # x轴标签
plt.ylabel('Precisions', fontsize=14) # y轴标签
plt.plot(recalls, precisions) # 画线
plt.show()

输出结果:

绘制ROC曲线及P-R曲线

说明:

1、模型的精确度和召回率互相制约,P-R曲线越向右上凸,表示模型性能越好。

2、在正负样本数量均衡的情况下,P-R曲线和ROC曲线的趋势差不多,但由于精确率和召回率更关注正样本的情况,当负样本比较多时P-R曲线的反映效果一般,此时使用ROC曲线更合适。文章来源地址https://www.toymoban.com/news/detail-414547.html

到了这里,关于绘制ROC曲线及P-R曲线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python包sklearn画ROC曲线和PR曲线

    关于ROC和PR曲线的介绍请参考: 机器学习:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线 参考: Python下使用sklearn绘制ROC曲线(超详细) Python绘图|Python绘制ROC曲线和PR曲线

    2024年02月12日
    浏览(48)
  • 机器学习 | 混淆矩阵和ROC曲线

    (1)对于二分类 TP(True Positive):将正类预测为正类数,真实为0,预测也为0 FN(False Negative):将正类预测为负类数,真实为0,预测为1 FP(False Positive):将负类预测为正类数, 真实为1,预测为0 TN(True Negative):将负类预测为负类数,真实为1,预测也为1 则混淆矩阵如下: (2)对

    2024年01月21日
    浏览(48)
  • 【机器学习】了解 AUC - ROC 曲线

            在机器学习中,性能测量是一项基本任务。因此,当涉及到分类问题时,我们可以依靠AUC - ROC曲线。当我们需要检查或可视化多类分类问题的性能时,我们使用AUC(曲线 下面积 )ROC( 接收器工作特性 )曲线。它是检查任何分类模型性能的最重要评估指标之一。

    2024年02月16日
    浏览(44)
  • 机器学习-ROC曲线:技术解析与实战应用

    本文全面探讨了ROC曲线(Receiver Operating Characteristic Curve)的重要性和应用,从其历史背景、数学基础到Python实现以及关键评价指标。文章旨在提供一个深刻而全面的视角,以帮助您更好地理解和应用ROC曲线在模型评估中的作用。 关注TechLead,分享AI全维度知识。作者拥有10+年

    2024年02月05日
    浏览(49)
  • R语言:联合多指标的ROC曲线

    2024年02月11日
    浏览(35)
  • 机器学习中的ROC曲线理解和实战

    1、ROC曲线,又可以称之为接受者操作特征曲线(Receiver Operating Characteristic Curve), ROC曲线下的面积,称为AUC(Area Under Cureve),可以衡量评估二分类模型的分类好坏。 2、AUC是1乘以的方格中的一部分,起大小在0-1之间,AUC越大说明模型效果越好, AUC=1,是完美的分类器,该模型至少

    2024年02月08日
    浏览(47)
  • 分类模型评估指标——准确率、精准率、召回率、F1、ROC曲线、AUC曲线

    机器学习模型需要有量化的评估指标来评估哪些模型的效果更好。 本文将用通俗易懂的方式讲解分类问题的混淆矩阵和各种评估指标的计算公式。将要给大家介绍的评估指标有:准确率、精准率、召回率、F1、ROC曲线、AUC曲线。 所有事情都需要评估好坏,尤其是量化的评估指

    2024年02月11日
    浏览(61)
  • 大数据机器学习深度解读ROC曲线:技术解析与实战应用

    机器学习和数据科学在解决复杂问题时,经常需要评估模型的性能。其中,ROC(Receiver Operating Characteristic)曲线是一种非常有用的工具,被广泛应用于分类问题中。该工具不仅在医学检测、信号处理中有着悠久的历史,而且在近年来的机器学习应用中也显得尤为关键。 ROC曲线

    2024年02月04日
    浏览(41)
  • 机器学习中常用的概念:ROC曲线和AUC值,到底是什么?

    ROC曲线和AUC值是评价分类监督学习性能的重要量度指标。ROC曲线又被称为“接受者操作特征曲线”“等感受性曲线”,主要用于预测准确率情况。最初ROC曲线运用在军事上,现在广泛应用在各个领域,比如判断某种因素对于某种疾病的诊断是否有诊断价值。曲线上各点反映着

    2024年01月23日
    浏览(47)
  • 机器学习技术:如何使用交叉验证和ROC曲线提高疾病预测的准确性和效率?

    随着机器学习的普及,评估模型的性能越来越重要。交叉验证和ROC曲线是两种常见的评估模型性能的方法。本文将介绍这两种方法的基本原理和应用场景,并结合实际案例和技术实践,讲解如何使用交叉验证和ROC曲线来提高机器学习模型的性能。此外,文章也将提供一些最佳

    2024年02月11日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包