机器学习:ROC与AUC(Python)

这篇具有很好参考价值的文章主要介绍了机器学习:ROC与AUC(Python)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

"""
ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。
根据学习器的预测结果,把阈值从0变到最大,即刚开始是把每个样本作为正例进行预测,随着阈值的增大,学习器预测正样例数越来越少,
直到最后没有一个样本是正样例。在这一过程中,每次计算出两个重要量的值,分别以它们为横、纵坐标作图,就得到了“ROC曲线”。

ROC曲线以“真正例率”(True Positive Rate,简称TPR)为纵轴,横轴为“假正例率”(False Positive Rate,简称FPR),
ROC偏重研究基于测试样本评估值的排序好坏。

(0, 0)表示将所有的样本预测为负例,(1, 1)则表示将所有的样本预测为正例,
(0, 1)表示正例全部出现在负例之前的理想情况,(1, 0)则表示负例全部出现在正例之前的最差情况。
"""

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler, LabelEncoder  # 标准化
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import roc_curve, auc


breatcancer = pd.read_csv('breast+cancer+wisconsin+diagnostic/wdbc.data', header=None).iloc[:, 1:]
X = StandardScaler().fit_transform(breatcancer.iloc[:, 1:])  # 数据标准化
n_samples, n_features = X.shape
random_state = np.random.RandomState(0)
X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]  # 添加噪声
y = breatcancer.iloc[:, 0]  # 对应编码1、2转化为0、1
lab_en = LabelEncoder()
y = lab_en.fit_transform(y)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0,
                                                    shuffle=True, stratify=y)

y_score = dict()  # 存储各算法模型的决策得分
svm_linear = SVC(kernel='linear', probability=True, random_state=0)
# 通过decision_function()计算得到的y_score的值,用在roc_curve()函数中
svm_fit = svm_linear.fit(X_train, y_train)
y_score["svm_linear"] = svm_linear.decision_function(X_test)

lg_model = LogisticRegression(max_iter=1000).fit(X_train, y_train)  # 逻辑回归
y_score["LogisticRegression"] = lg_model.decision_function(X_test)

lda_model = LinearDiscriminantAnalysis().fit(X_train, y_train)  # 线性判别
y_score["LinearDiscriminantAnalysis"] = lda_model.decision_function(X_test)

ada_model = AdaBoostClassifier().fit(X_train, y_train)  # 集成学习
y_score["AdaBoostClassifier"] = ada_model.decision_function(X_test)

fpr, tpr, threshold, ks_max, best_thr = dict(), dict(), dict(), dict(), dict()
for key in y_score.keys():
    # 计算真正率,假正率,对应阈值
    fpr[key], tpr[key], threshold[key] = roc_curve(y_test, y_score[key])
    # 计算ks和最佳阈值
    KS_max = tpr[key] - fpr[key]  # 差值向量
    ind = np.argmax(KS_max)  # 最大KS值索引
    ks_max[key] = KS_max[ind]  # 最大KS
    best_thr[key] = threshold[key][ind]  # 最大阈值
    print('%s: fpr = %.5f, tpr = %.5f, 最大KS为:%.5f, 最佳阈值为:%.5f'
          % (key, fpr[key][ind], tpr[key][ind], ks_max[key], best_thr[key]))

plt.figure(figsize=(8, 6))
line = ['r-*', 'b-o', 'g-+', 'c-x']
for i, key in enumerate(y_score.keys()):
    # 假正率为横坐标,真正率为纵坐标做曲线
    plt.plot(fpr[key], tpr[key], line[i], lw=2, label=key+' AUC = %0.2f' % auc(fpr[key], tpr[key]))

plt.plot([0, 1], [0, 1], color='navy', lw=1, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.grid()
plt.xlabel('False Positive Rate', fontsize=12)
plt.ylabel('True Positive Rate', fontsize=12)
plt.title('Binary classification of ROC and AUC', fontsize=14)
plt.legend(loc="lower right", fontsize=12)
plt.show()

 

机器学习:ROC与AUC(Python),机器学习,python,笔记

 

机器学习:ROC与AUC(Python),机器学习,python,笔记文章来源地址https://www.toymoban.com/news/detail-823158.html

到了这里,关于机器学习:ROC与AUC(Python)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 准确率,精准率,召回率,真正率,假正率,ROC/AUC

      最近在看到这些词得时候老是混淆,看了之后还很容易遗忘,于是查了些资料把他们记录下来。 我们在设计深度学习网络模型的时候经常要对其进行评估,评估就要用到这些东西,在接介绍这个率,那个率之前,我先来介绍下什么是混淆矩阵,如下表所示: 混淆矩阵:

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

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

    2024年02月11日
    浏览(61)
  • R语言用逻辑回归预测BRFSS中风数据、方差分析anova、ROC曲线AUC、可视化探索

    行为风险因素监测系统(BRFSS)是一项年度电话调查。BRFSS旨在确定成年人口中的风险因素并报告新兴趋势 ( 点击文末“阅读原文”获取完整 代码数据 )。 相关视频 例如,调查对象被询问他们的饮食和每周体育活动、HIV/AIDS状况、可能的吸烟情况、免疫接种、健康状况、健

    2024年02月07日
    浏览(44)
  • 机器学习(python)笔记整理

    目录 一、数据预处理: 1. 缺失值处理: 2. 重复值处理: 3. 数据类型: 二、特征工程: 1. 规范化: 2. 归一化: 3. 标准化(方差): 三、训练模型: 如何计算精确度,召回、F1分数 在数据中存在缺失值的情况下,可以采用删除缺失值、均值填充、中位数填充、插值法等方式进行

    2024年02月07日
    浏览(46)
  • Python 机器学习入门 - - 决策树算法学习笔记

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ChatGPT一问世就给整个社会带来巨大的震撼和冲击,不禁让人惊叹现在AI的强大,我们好像离通用人工智能更近一步。在过去十几年人工智能领域的蓬勃发展中,扮演着主导地位的算法基本都是神经网络和

    2023年04月08日
    浏览(46)
  • 机器学习 | 混淆矩阵和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)
  • 机器学习-ROC曲线:技术解析与实战应用

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

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

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

    2024年02月08日
    浏览(46)
  • 机器学习:关于P-R曲线和Roc曲线

    一:关于P-R曲线 :     1:1:何为P-R曲线:      P为precision即 精准率(查准率) ,R为recall即 召回率 ,所以P-R曲线是反映了准确率与召回率之间的关系。一般横坐标为recall,纵坐标为precision。P-R曲线      1.2:P-R曲线作用:      PR曲线常被用在信息提取领域,同时当我们的

    2024年02月13日
    浏览(39)
  • 决策树的原理、方法以及python实现——机器学习笔记

    * * * * * *  The Machine Learning Noting Series  * * * * * * 决 策树(Decision Tree)是机器学习的核心算法之一,在较小训练样本或有限计算资源下仍有较好表现,它包括分类树和回归树,是目前应用最广泛的分类预测和回归预测方法。 0 引言 1 决策树的概念     分类树     回归树 2  

    2024年02月04日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包