2.5 分类模型评估指标—AUC与ROC及绘制混淆矩阵与ROC曲线
文章目录
- 一、引言
- 二、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曲线相关推荐
- [机器学习] 二分类模型评估指标---精确率Precision、召回率Recall、ROC|AUC
一 为什么要评估模型? 一句话,想找到最有效的模型.模型的应用是循环迭代的过程,只有通过持续调整和调优才能适应在线数据和业务目标. 选定模型时一开始都是假设数据的分布是一定的,然而数据的分布会随着时间 ...
- 「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC
https://www.toutiao.com/a6706449645901464078/ 2019-06-25 20:49:47 大家好,今天我们学习[机器学习速成]之 分类,评估指标(TP.FP. ...
- AUC值越大_「机器学习速成」分类,评估指标(TP、FP、TN、FN),ROC曲线和AUC
大家好,今天我们学习[机器学习速成]之 分类,评估指标(TP.FP.TN.FN),ROC曲线和AUC. 本节介绍了如何使用逻辑回归来执行分类任务, 并探讨了如何评估分类模型的有效性. 我们 马上学三点 ...
- R语言分类模型:逻辑回归模型LR、决策树DT、推理决策树CDT、随机森林RF、支持向量机SVM、Rattle可视化界面数据挖掘、分类模型评估指标(准确度、敏感度、特异度、PPV、NPV)
R语言分类模型:逻辑回归模型LR.决策树DT.推理决策树CDT.随机森林RF.支持向量机SVM.Rattle可视化界面数据挖掘.分类模型评估指标(准确度.敏感度.特异度.PPV.NPV) 目录
- R语言编写自定义函数计算分类模型评估指标:准确度、特异度、敏感度、PPV、NPV、数据数据为模型预测后的混淆矩阵、比较多个分类模型分类性能(逻辑回归、决策树、随机森林、支持向量机)
R语言编写自定义函数计算分类模型评估指标:准确度.特异度.敏感度.PPV.NPV.数据数据为模型预测后的混淆矩阵.比较多个分类模型分类性能(逻辑回归.决策树.随机森林.支持向量机) 目录
- scikit-learn中评估分类器性能的度量,像混淆矩阵、ROC、AUC等
评估分类器性能的度量,像混淆矩阵.ROC.AUC等 内容概要 模型评估的目的及一般评估流程 分类准确率的用处及其限制 混淆矩阵(confusion matrix)是如何表示一个分类器的性能 混淆矩阵中 ...
- 你真的了解分类模型评估指标都有哪些吗?【附Python代码实现】
大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 必看前言 ...
- 模型评估指标 AUC 和 ROC,这是我看到的最透彻的讲解
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者:Webbley blog.csdn.net/liweibin ...
- 模型评估指标AUC(area under the curve)
AUC在机器学习领域中是一种模型评估指标.根据维基百科的定义,AUC(area under the curve)是ROC曲线下的面积.所以,在理解AUC之前,要先了解ROC是什么.而ROC的计算又需要 ...
- 3个最常用的分类模型评估指标!
针对二元分类结果,常用的评估指标有如下三个:查准率(Precision).查全率(Recall)以及F-score.这篇文章将讨论这些指标的含义.设计初衷以及局限性. 01 二元分类问题 在机器学习领 ...
最新文章
- BZOJ 1923: [Sdoi2010]外星千足虫
- 利用TensorFlow2.0为胆固醇、血脂、血压数据构建时序深度学习模型(python完整源代码)
- OpenCASCADE:Modeling Algorithms模块几何工具之投影
- 深度学习笔记(47) 神经风格迁移
- matlab将图片旋转的代码_【MATLAB】钟表
- (补充知识)DLL 中 .DEF文件的使用
- 利用flashback database实现部分对象回滚
- Anaconda3创建、删除虚拟环境(win10)
- [导入]代理猎手找大学代理
- 传值中处理jsp中文乱码问题
- 微信表白代码,单身汪们还不快收藏!
- 思科CCNP在OSPF中设置LSA的简单命令汇总
- code runner 运行配置
- SQLServer实现快速进行简繁体的翻译功能
- 不积跬步无以至千里,不积小流无以成江海
- el-upload上传图片,限制上传数量,超过最大数量则不展示上传组件,可点击删除
- 民锋国际期货:5年后我会更有钱吗?
- 人称小Home Assistant版的智能生态系统,智汀究竟可控制多少智能设备?
- 安卓libc setenv函数内存泄漏
- 计算机考研考的数学题,2019计算机考研数学七个小窍门快速答题
热门文章
- 然爸读书笔记(2013-3)----用户体验的要素
- 线段树入门 (zz)
- 【react】 redux 公共状态管理---数据的渲染,数据的修改,再把修改的数据渲染到当前组件...
- 导入别的项目到我的eclipse上出现红色感叹号问题
- YCOJ过河卒C++
- 解决QTableWidget不显示数据的问题
- 请求参数完整性校验,解决流只能写一次的问题
- Server的Transfer和Response的Redirect
- HTML5SVG 游戏开发 【起航】
- 使用hiredis接口(Synchronous API)编写redis客户端