文章目录

  • 一、引言
  • 二、sklearn.metrics.roc_curve详解
  • 三、sklearn.metrics.roc_auc_curve详解
  • 四、鸢尾花数据集

一、引言

如果想弄懂AUC和ROC曲线,一定要彻底理解混淆矩阵的概念!!!
混淆矩阵中有Postitive(阳性)、Negative(阴性)、False(伪)、True(真)的概念

  • 预测类别为0的为Negative(阴性),预测类别为1的为Postitive(阳性)
  • 预测错误的为False(伪)、预测正确为True(真)

对上述概念进行组合,就有了混淆矩阵!

二、sklearn.metrics.roc_curve详解

sklearn中的metrics.roc_curve评价指标

三、sklearn.metrics.roc_auc_curve详解

sklearn中的metrics.roc_auc_score评价指标

四、鸢尾花数据集

鸢尾花数据集——提取码:1234

import numpy as np
import pandas as pd
import matplotlib as mpl
import warnings
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import label_binarize
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegressionCV
from sklearn.svm import SVC
from itertools import cycle
from sklearn.metrics import roc_curve, roc_auc_score# 获取数据
def loaddata():data = pd.read_csv('data/iris.data', header=None)# 将类别数据转换为数值数据iris_types = data[4].unique()for i, iris_type in enumerate(iris_types):data._set_value(data[4] == iris_type, 4, i)data = data.valuesX = data[:, :2]y = data[:, -1].astype(np.int)return X, yif __name__ == '__main__':#  消除警告warnings.filterwarnings(action='ignore')# 设置样式格式# 不用科学计数法,使用小数np.set_printoptions(suppress=True)# 设置显示宽度pd.set_option('display.width', 400)# 获取数据X, y = loaddata()# 获取类别个数c = np.unique(y).size# 数据分割X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7, random_state=0)# 标签二值化—one-hot编码y_one_hot = label_binarize(y_test, classes=np.arange(c))# 逻辑回归Calpha = np.logspace(-2, 2, 20)# 模型models = [['Knn', KNeighborsClassifier(n_neighbors=7)],['lgc', LogisticRegressionCV(Cs=alpha, fit_intercept=False, cv=5)],['SVM(linear)', GridSearchCV(SVC(kernel='linear', decision_function_shape='ovr'), param_grid={'C': alpha})],['SVM(RBF)',GridSearchCV(SVC(kernel='rbf', decision_function_shape='ovr'), param_grid={'C': alpha, 'gamma': alpha})]]# 颜色迭代器colors = cycle('gmcr')# 画每个图的ROC曲线mpl.rcParams['font.sans-serif'] = ['simHei']mpl.rcParams['axes.unicode_minus'] = Falsefig = plt.figure(facecolor='w', figsize=(7, 6))for (name, model), color in zip(models, colors):model.fit(X_train, y_train)if hasattr(model, 'C_'):print(model.C_)if hasattr(model, 'best_params_'):print(model.best_params_)if hasattr(model, 'predict_proba'):  # 概率y_score = model.predict_proba(X_test)else:y_score = model.decision_function(X_test)  # 决策函数(GridSearchCV中)fpr, tpr, threshold = roc_curve(y_one_hot.ravel(), y_score.ravel())auc = roc_auc_score(y_one_hot.ravel(), y_score.ravel())plt.plot(fpr, tpr, c=color, lw=2, alpha=0.7, label='%s,AUC=%.3f' % (name, auc))plt.plot((0, 1), (1, 0), c='#808080', lw=2, ls='--', alpha=0.7)# 设置坐标范围plt.xlim((-0.01, 1.02))plt.ylim((-0.01, 1.02))# 设置坐标精度plt.xticks(np.arange(0, 1.1, 0.1))plt.yticks(np.arange(0, 1.1, 0.1))# 设置坐标标签plt.xlabel('FPR', fontsize=13)plt.ylabel('TPR', fontsize=13)plt.grid(b=True, ls=':')# 图例plt.legend(loc='lower right', fontsize=12)# 标题plt.title('鸢尾花数据不同分类器的ROC与AUC', fontsize=17)plt.show()

import numpy as np
import pandas as pd
import matplotlib as mpl
import warnings
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import label_binarize
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegressionCV
from sklearn.svm import SVC
from itertools import cycle
from sklearn.metrics import roc_curve, roc_auc_score, confusion_matrix# 获取数据
def loaddata():data = pd.read_csv('data/iris.data', header=None)# 将类别数据转换为数值数据iris_types = data[4].unique()for i, iris_type in enumerate(iris_types):data._set_value(data[4] == iris_type, 4, i)data = data.valuesX = data[:, :2]y = data[:, -1].astype(np.int)return X, yif __name__ == '__main__':#  消除警告warnings.filterwarnings(action='ignore')# 设置样式格式# 不用科学计数法,使用小数np.set_printoptions(suppress=True)# 设置显示宽度pd.set_option('display.width', 400)# 获取数据X, y = loaddata()# 获取类别个数c = np.unique(y).size# 数据分割X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.7, random_state=0)# 标签二值化—one-hot编码y_one_hot = label_binarize(y_test, classes=np.arange(c))# print(y_one_hot)# 逻辑回归Calpha = np.logspace(-2, 2, 20)# 模型models = [['Knn', KNeighborsClassifier(n_neighbors=7)],['lgc', LogisticRegressionCV(Cs=alpha, fit_intercept=False, cv=5)],['SVM(linear)', GridSearchCV(SVC(kernel='linear', decision_function_shape='ovr'), param_grid={'C': alpha})],['SVM(RBF)',GridSearchCV(SVC(kernel='rbf', decision_function_shape='ovr'), param_grid={'C': alpha, 'gamma': alpha})]]# 颜色迭代器colors = cycle('gmcr')# 画每个图的ROC曲线mpl.rcParams['font.sans-serif'] = ['simHei']mpl.rcParams['axes.unicode_minus'] = Falsefig = plt.figure(facecolor='w', figsize=(7, 6))for (name, model), color in zip(models, colors):model.fit(X_train, y_train)if hasattr(model, 'C_'):print(model.C_)if hasattr(model, 'best_params_'):print(model.best_params_)if hasattr(model, 'predict_proba'):  # 概率y_score = model.predict(X_test)else:y_score = model.predict(X_test)  # 决策函数(GridSearchCV中)confmat = confusion_matrix(y_test, y_score)fig, ax = plt.subplots(figsize=(2.5, 2.5))ax.matshow(confmat, cmap=plt.cm.Blues, alpha=0.3)for i in range(confmat.shape[0]):for j in range(confmat.shape[1]):ax.text(x=j, y=i, s=confmat[i, j], va='center', ha='center')plt.xlabel('predicted label')plt.ylabel('true label')plt.show()




2.5 分类模型评估指标—AUC与ROC及绘制混淆矩阵与ROC曲线相关推荐

  1. [机器学习] 二分类模型评估指标---精确率Precision、召回率Recall、ROC|AUC

    一 为什么要评估模型? 一句话,想找到最有效的模型.模型的应用是循环迭代的过程,只有通过持续调整和调优才能适应在线数据和业务目标. 选定模型时一开始都是假设数据的分布是一定的,然而数据的分布会随着时间 ...

  2. 「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC

    https://www.toutiao.com/a6706449645901464078/ 2019-06-25 20:49:47 大家好,今天我们学习[机器学习速成]之 分类,评估指标(TP.FP. ...

  3. AUC值越大_「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC

    大家好,今天我们学习[机器学习速成]之 分类,评估指标(TP.FP.TN.FN),ROC曲线和AUC. 本节介绍了如何使用逻辑回归来执行分类任务, 并探讨了如何评估分类模型的有效性. 我们 马上学三点 ...

  4. R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)

    R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录

  5. R语言编写自定义函数计算分类模型评估指标:准确度、特异度、敏感度、PPV、NPV、数据数据为模型预测后的混淆矩阵、比较多个分类模型分类性能(逻辑回归、决策树、随机森林、支持向量机)

    R语言编写自定义函数计算分类模型评估指标:准确度.特异度.敏感度.PPV.NPV.数据数据为模型预测后的混淆矩阵.比较多个分类模型分类性能(逻辑回归.决策树.随机森林.支持向量机) 目录

  6. scikit-learn中评估分类器性能的度量,像混淆矩阵、ROC、AUC等

    评估分类器性能的度量,像混淆矩阵.ROC.AUC等 内容概要 模型评估的目的及一般评估流程 分类准确率的用处及其限制 混淆矩阵(confusion matrix)是如何表示一个分类器的性能 混淆矩阵中 ...

  7. 你真的了解分类模型评估指标都有哪些吗?【附Python代码实现】

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 必看前言 ...

  8. 模型评估指标 AUC 和 ROC,这是我看到的最透彻的讲解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:Webbley blog.csdn.net/liweibin ...

  9. 模型评估指标AUC(area under the curve)

    AUC在机器学习领域中是一种模型评估指标.根据维基百科的定义,AUC(area under the curve)是ROC曲线下的面积.所以,在理解AUC之前,要先了解ROC是什么.而ROC的计算又需要 ...

  10. 3个最常用的分类模型评估指标!

    针对二元分类结果,常用的评估指标有如下三个:查准率(Precision).查全率(Recall)以及F-score.这篇文章将讨论这些指标的含义.设计初衷以及局限性. 01 二元分类问题 在机器学习领 ...

最新文章

  1. BZOJ 1923: [Sdoi2010]外星千足虫
  2. 利用TensorFlow2.0为胆固醇、血脂、血压数据构建时序深度学习模型(python完整源代码)
  3. OpenCASCADE:Modeling Algorithms模块几何工具之投影
  4. 深度学习笔记(47) 神经风格迁移
  5. matlab将图片旋转的代码_【MATLAB】钟表
  6. (补充知识)DLL 中 .DEF文件的使用
  7. 利用flashback database实现部分对象回滚
  8. Anaconda3创建、删除虚拟环境(win10)
  9. [导入]代理猎手找大学代理
  10. 传值中处理jsp中文乱码问题
  11. 微信表白代码,单身汪们还不快收藏!
  12. 思科CCNP在OSPF中设置LSA的简单命令汇总
  13. code runner 运行配置
  14. SQLServer实现快速进行简繁体的翻译功能
  15. 不积跬步无以至千里,不积小流无以成江海
  16. el-upload上传图片,限制上传数量,超过最大数量则不展示上传组件,可点击删除
  17. 民锋国际期货:5年后我会更有钱吗?
  18. 人称小Home Assistant版的智能生态系统,智汀究竟可控制多少智能设备?
  19. 安卓libc setenv函数内存泄漏
  20. 计算机考研考的数学题,2019计算机考研数学七个小窍门快速答题

热门文章

  1. 然爸读书笔记(2013-3)----用户体验的要素
  2. 线段树入门 (zz)
  3. 【react】 redux 公共状态管理---数据的渲染,数据的修改,再把修改的数据渲染到当前组件...
  4. 导入别的项目到我的eclipse上出现红色感叹号问题
  5. YCOJ过河卒C++
  6. 解决QTableWidget不显示数据的问题
  7. 请求参数完整性校验,解决流只能写一次的问题
  8. Server的Transfer和Response的Redirect
  9. HTML5SVG 游戏开发 【起航】
  10. 使用hiredis接口(Synchronous API)编写redis客户端