前言

1、回归模型(regression):

对于回归模型的评估方法,通常会采用平均绝对误差(MAE)、均方误差(MSE)、平均绝对百分比误差(MAPE)等方法。

2、聚类模型(clustering):

对于聚类模型的评估方法,较为常见的一种方法为轮廓系数(Silhouette Coefficient ),该方法从内聚度和分离度两个方面入手,用以评价相同数据基础上不同聚类算法的优劣。

3、分类模型(classification):

本文主要讲解分类模型评价的一种方法---混淆矩阵。混淆矩阵是评判模型结果的指标,属于模型评估的一部分。此外,混淆矩阵多用于判断分类器(Classifier)的优劣,适用于分类型的数据模型,如分类树(Classification Tree)、逻辑回归(Logistic Regression)、线性判别分析(Linear Discriminant Analysis)等方法。

在分类型模型评判的指标中,常见的方法有如下三种:

对于二分类问题,除了计算正确率方法外,我们常常会定义正类和负类,由真实类别(行名)与预测类别(列名)构成混淆矩阵。首先直观的来看看如下表格图(混淆矩阵图):

文字详细说明:

  • TN:将负类预测为负类(真负类)真实值是negative,模型认为是negative的数量

  • FN:将正类预测为负类(假负类)真实值是positive,模型认为是negative的数量

  • TP:将正类预测为正类(真正类)真实值是positive,模型认为是positive的数量

  • FP:将负类预测为正类(假正类)真实值是negative,模型认为是positive的数量

二级指标

最后根据混淆矩阵得出分类模型常用的分类评估指标:

  1. 准确率(Accuracy)—— 针对整个模型

  1. 精确率(Precision)

  1. 灵敏度(Sensitivity):就是召回率(Recall)

  1. 特异度(Specificity)

上述对应指标计算公式和定义如下面表格:

通过上面的四个二级指标,可以将混淆矩阵中数量的结果转化为0-1之间的比率。便于进行标准化的衡量。在这四个指标的基础上在进行拓展,会产令另外一个三级指标

三级指标

这个指标叫做F1 Score。他的计算公式是:

其中,P代表Precision,R代表Recall。

F1-Score指标综合了Precision与Recall的产出的结果。F1-Score的取值范围从0到1的,1代表模型的输出最好,0代表模型的输出结果最差。

混淆矩阵用途

混淆矩阵能够帮助我们迅速可视化各种类别误分为其它类别的比重,这样能够帮我们调整后续模型,比如一些类别设置权重衰减等在一些论文的实验分析中,可以列出混淆矩阵,行和列均为 label 种类,可以通过该矩阵验证自己 model 预测复杂 label 的能力是否强于其他 model,只要自己 model 将复杂 label 误判为其它类别比其他 model 误判的少,就可以说明自己 model 预测复杂 label 的能力强于其他 model。

Python代码示例

scikit-learn 准确率的计算方法:sklearn.metrics.accuracy_score(y_true, y_pred)

from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_predict)

scikit-learn 精确率的计算方法:sklearn.metrics.precision_score(y_true, y_pred)

from sklearn.metrics import precision_score
precision_score(y_test, y_predict)

scikit-learn 召回率(灵敏度)的计算方法:sklearn.metrics.recall_score(y_true, y_pred)

from sklearn.metrics import recall_score
recall_score(y_test, y_predict)

scikit-learn F1的计算方法:sklearn.metrics.f1_score(y_true, y_pred)

from sklearn.metrics import f1_score
f1_score(y_test, y_predict)

ROC

曲线由两个变量TPR和FPR组成,这个组合以FPR(横轴)对TPR(纵轴),即是以代价(costs)对收益(benefits)。

x轴为假阳性率(FPR):在所有的负样本中,分类器预测错误的比例

y轴为真阳性率(TPR):在所有的正样本中,分类器预测正确的比例(等于Recall)

由图可得:

  • 当 FPR=0,TPR=0 时,意味着将每一个实例都预测为负例。

  • 当 FPR=1,TPR=1 时,意味着将每一个实例都预测为正例。

  • 当 FPR=0,TPR=1 时,意味着为最优分类器点。

所以一个优秀的分类器对应的ROC曲线应该尽量靠近左上角,越接近45度直线时效果越差。

scikit-learn ROC曲线的计算方法:

sklearn.metrics.roc_curve(y_true, y_score)

AUC

AUC 的全称为 Area Under Curve,意思是曲线下面积,即 ROC 曲线下面积 。通过AUC我们能得到一个准确的数值,用来衡量分类器好坏。AUC图反映的是两个类的重叠程度,AUC的面积反应了分类的好坏。

AUC=1:最佳分类器。

0.5<AUC<1:分类器优于随机猜测。

AUC=0.5:分类器和随机猜测的结果接近。

AUC<0.5:分类器比随机猜测的结果还差。

scikit-learn AUC的计算方法:

sklearn.metrics.auc(y_true, y_score)
from matplotlib import pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve
from sklearn.metrics import aucmodel = LogisticRegression()
model.fit(X_train,y_train.ravel())y_score = model.decision_function(X_test)    # model训练好的分类模型
fpr, tpr, _ = roc_curve(y_test, y_score)    # 获得FPR、TPR值
roc_auc = auc(fpr, tpr)    # 计算AUC值plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.legend()
plt.show()

详细讲解分类模型评价指标(混淆矩阵)python示例相关推荐

  1. 混淆矩阵评价指标_机器学习模型评价指标 -- 混淆矩阵

    机器学习模型评价指标 – 混淆矩阵 在机器学习领域中,混淆矩阵(confusion matrix)是一种评价分类模型好坏的形象化展示工具.其中,矩阵的每一列表示的是模型预测的样本情况:矩阵的每一行表示 ...

  2. 机器学习模型评价指标 -- 混淆矩阵

    机器学习模型评价指标 – 混淆矩阵 在机器学习领域中,混淆矩阵(confusion matrix)是一种评价分类模型好坏的形象化展示工具.其中,矩阵的每一列表示的是模型预测的样本情况:矩阵的每一行表示 ...

  3. 分类模型计算混淆矩阵

    1. 什么是混淆矩阵 混淆矩阵是评判模型结果的一种指标,属于模型评估的一部分,常用于评判分类器的优劣.即,混淆矩阵是评判模型结果的指标,属于模型评估的一部分. 此外,混淆矩阵多用于判断分类器(Clas ...

  4. 人工智能学习07--pytorch11--分类网络:使用pytorch和tensorflow计算分类模型的混淆矩阵

    师兄说学目标检测之前先学分类 坏了,内容好多!学学学 感谢up主,好人一生平安 混淆矩阵 什么是混淆矩阵: 横坐标:每一列属于该类的所有验证样本.每一列所有元素对应真实类别. 纵坐标:网络的预测类别. ...

  5. 分类模型之混淆矩阵(Confusion Matrix)

    目录 混淆矩阵简介 混淆矩阵及其参数 混淆矩阵的其他指标 混淆矩阵简介 混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法. 可以简单理解为:将一个分类模 ...

  6. 模型评价指标——混淆矩阵/ROC曲线/AUC曲线

    一.混淆矩阵 TP = True Postive真阳性:FP = False Positive假阳性 :FN = False Negative假阴性:TN = True Negative真阴性 ① 精 ...

  7. 决策树及分类模型评价指标(混淆矩阵,LIFT曲线 重要)

    决策树评价指标:ROC lift(提升度):类似提纯:按照decile从高到低排列,之后计算每个decile里响应数与该decile里行数的比值得到一个response rate,另外,单独计算所有行 ...

  8. R语言使用yardstick包的conf_mat函数计算多分类(Multiclass)模型的混淆矩阵、并使用summary函数基于混淆矩阵输出分类模型评估的其它详细指标(kappa、npv等13个)

    R语言使用yardstick包的conf_mat函数计算多分类(Multiclass)模型的混淆矩阵(confusion matrix).并使用summary函数基于混淆矩阵输出分类模型评估的其它详细 ...

  9. 机器学习(五)之评价指标:二分类指标、多分类指标、混淆矩阵、不确定性、ROC曲线、AUC、回归指标

    文章目录 0 本文简介 1 二分类指标 1.1 二分类时的错误类型 1.2 不平衡的数据 1.3 混淆矩阵 1.4 考虑不确定性 1.5 准确率-召回率曲线 1.6 ROC与AUC 2 多分类指标 3 ...

最新文章

  1. 优化算法optimization:AdaGrad
  2. php xss速查表,2020跨站脚本[xss]速查表 xss cheat sheet
  3. java继承的关键字_超级关键字在Java继承中的作用
  4. git简明教程:基本操作命令
  5. proxy connect abort处理方法_Vue 3.0 初探 - Proxy
  6. Struts 学习笔记2(输入校验、国际化、异常处理)
  7. sonarqube使用mysql_SonarQube的安装、配置与使用
  8. Linux下几种文件传输命令 sz rz sftp scp
  9. redis经典三节点高可用哨兵模式集群搭建
  10. 101个MySQL调试和优化技巧
  11. service $anchorScroll
  12. Javascript基础之Array数组API
  13. siblings() 获得匹配集合中每个元素的同胞,通过选择器进行筛选是可选的。
  14. Python 数据结构与算法 —— list与deque(双端队列)
  15. HTML+JS+CSS实现幻灯片效果(附代码)
  16. 关于微信开放平台配置-网站应用
  17. 使用Spark SQL读取Hive上的数据
  18. 论文“Structure-from-Motion Revisited” 对ISFM改进的理解
  19. mysql中select使用方法,MySQL中select语句介绍及使用示例
  20. Windows python3安装word2vec模块常见错误处理

热门文章

  1. [财务][数据化分析][帆软]报表设计-分页预览
  2. 魔兽worldserver.conf 服务端配置文件说明
  3. linux根文件系统配置,Linux学习笔记__ Linux根文件系统详解
  4. 基于稳定隶属度的自调优多峰聚类算法(SMMP)(SMMP)(Matlab代码实现)
  5. 李嘉诚励志语录创业经典100条
  6. 备忘5:爬取微博热门信息以及所有热门微博评论的用户信息
  7. python之信用卡ATM(第五天)
  8. python学习第十天
  9. 11.位运算符:什么是位运算符???位运算符共有哪七种???位运算符和逻辑运算符的区别是什么???
  10. byteBuffer的使用之道