分类模型的评估和回归模型的评估侧重点不一样,
回归模型一般针对连续型的数据,而分类模型一般针对的是离散的数据。

所以,评估分类模型时,评估指标与回归模型也很不一样,
比如,分类模型的评估指标通常包括准确率精确率召回率F1分数等等。
回归模型的评估指标通常包括均方误差(MSE)、均方根误差(RMSE)和平均绝对误差(MAE)等等,
不过,这些指标衡量的都是预测值与真实值之间的数值差异。

关于回归模型的评估,可以参考之前的文章,本篇开始,主要讨论分类模型的评估。

1. 准确率分数

准确率分数accuracy score)代表了模型正确分类的样本比例,它能够直观地反映出模型在分类任务上的准确度。
不过,在处理不平衡数据集时,需要注意的是,准确率分数并不能完全反映模型的性能。

1.1. 计算公式

\(\texttt{accuracy}(y, \hat{y}) = \frac{1}{n} \sum_{i=0}^{n-1} 1(\hat{y}_i = y_i)\)
其中,\(n\)是样本数量,\(y_i\)是真实值,\(\hat{y_i}\)是预测值。

1.2. 使用示例

from sklearn.metrics import accuracy_score
import numpy as np n = 100
y_true = np.random.randint(1, 10, n)
y_pred = np.random.randint(1, 10, n) s1 = accuracy_score(y_true, y_pred)
s2 = accuracy_score(y_true, y_pred, normalize=False)
print("准确率比例:{},准确率计数:{}".format(s1, s2)) # 运行结果
准确率比例:0.16,准确率计数:16

上例中,预测值真实值是随机生成的,所以你的运行结果不一定和我这个一样。
accuracy_score默认是计算正确的比率,如果加上参数normalize=False,则计算正确的数量

2. top-k 准确率分数

top-k 准确率分数top-k accuracy score)用于衡量模型在前 k 个预测结果中的正确率。
不同的k值会得到不同的top-k准确率,这可以帮助我们更全面地了解模型的性能。

2.1. 计算公式

\(\texttt{top-k accuracy}(y, \hat{f}) = \frac{1}{n} \sum_{i=0}^{n-1} \sum_{j=1}^{k} 1(\hat{f}_{i,j} = y_i)\)
其中,\(n\)是样本数量,\(y_i\)是真实值,\(\hat{f}_{i,j}\)是对应于第\(j\)最大预测分数的第\(i\)样本的预测类别。
\(k\)是允许的猜测次数,\(1(x)\)是指示函数。
关于指示函数是什么,可以参考:https://en.wikipedia.org/wiki/Indicator_function

2.2. 使用示例

from sklearn.metrics import top_k_accuracy_score
import numpy as np n = 100
y_true = np.random.randint(1, 10, n)
y_score = np.random.rand(n, 9) s1 = top_k_accuracy_score(y_true, y_score, k=2)
s2 = top_k_accuracy_score(y_true, y_score, k=2, normalize=False)
print("top-k 准确率比例:{},top-k 准确率计数:{}".format(s1, s2)) # 运行结果
top-k 准确率比例:0.23,top-k 准确率计数:23

top-k 准确率分数计算时,不是用真实值和预测值,用的是真实值top-k中预测值的正确率。

3. 平衡准确率分数

平衡准确率分数balanced accuracy score)特别适用于针对不平衡数据集时的性能评估,
它可以避免某一类样本的预测性能被过度夸大,从而能够更准确地评估模型的性能。

不过,平衡准确率适用于二元分类问题,对于多类分类问题可能需要使用其他扩展的平衡性能指标进行评估。

3.1. 计算公式

\(\texttt{balanced-accuracy}(y, \hat{y}, w) = \frac{1}{\sum{\hat{w}_i}} \sum_i 1(\hat{y}_i = y_i) \hat{w}_i\)
其中,\(n\)是样本数量,\(y_i\)是真实值,\(\hat{y_i}\)是预测值。
而 \(\hat{w}_i = \frac{w_i}{\sum_j{1(y_j = y_i) w_j}}\),\(1(x)\)是指示函数, \(w_i\)是对应的样本权重。

3.2. 使用示例

from sklearn.metrics import balanced_accuracy_score
import numpy as np n = 100
y_true = np.random.randint(1, 10, n)
y_pred = np.random.randint(1, 10, n) s = balanced_accuracy_score(y_true, y_pred)
print("平均准确率:{}".format(s)) # 运行结果
平均准确率:0.17929799866074375

4. 精确率、召回率和 F1 度量

介绍精确率召回率F1 度量之前,先介绍几个概念。


实际结果(真) 实际结果(假)
预测结果(真) tp(true positive)真阳性 fp(false positive)假阳性
预测结果(假) fn(false negative)假阴性 tn(true negative)真阴性

其中,tptn是预测结果与实际结果相符fpfn是预测结果与实际结果不符

4.1. 计算公式

基于上面的概念,下面定义精确率召回率F1 度量了。

精确率:\(\text{precision} = \frac{tp}{tp + fp}\)
它用于衡量模型的查准性能,即模型预测为的样本中有多少是真正的

召回率:\(\text{recall} = \frac{tp}{tp + fn}\)
它用于衡量模型的查全性能,即模型能够找出多少真正的

F1度量:\(F_1 = 2 \times \frac{\text{precision} \times \text{recall}}{\text{precision} + \text{recall}}\)
它是精确率和召回率的调和平均数,用于综合评价模型的性能。

4.2. 使用示例

from sklearn.metrics import precision_score, recall_score, f1_score
import numpy as np n = 100
y_true = np.random.randint(0, 2, n)
y_pred = np.random.randint(0, 2, n) p = precision_score(y_true, y_pred)
r = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
print("精确率:{}\n召回率:{}\nF1度量:{}".format(p, r, f1)) # 运行结果
精确率:0.4489795918367347
召回率:0.4782608695652174
F1度量:0.46315789473684216

5. 总结

本篇归纳总结了分类模型中关于准确率相关的一些评估方法:

  • 准确率分数
  • top-k 准确率分数
  • 平衡准确率分数
  • 精确率,召回率和 F1度量

【scikit-learn基础】--『回归模型评估』之准确率分析的更多相关文章

  1. (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探

    目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...

  2. 机器学习之路:python 集成回归模型 随机森林回归RandomForestRegressor 极端随机森林回归ExtraTreesRegressor GradientBoostingRegressor回归 预测波士顿房价

    python3 学习机器学习api 使用了三种集成回归模型 git: https://github.com/linyi0604/MachineLearning 代码: from sklearn.dat ...

  3. SPSS分析技术:无序多元Logistic回归模型;美国总统大选的预测历史及预测模型

    SPSS分析技术:无序多元Logistic回归模型:美国总统大选的预测历史及预测模型 在介绍有序多元Logistic回归分析的理论基础时,介绍过该模型公式有一个非常重要的假设,就是自变量对因变量多个类 ...

  4. Poisson回归模型

    Poisson回归模型也是用来分析列联表和分类数据的一种方法,它实际上也是对数线性模型的一种,不同点是对数线性模型假定频数分布为多项式分布,而泊松回归模型假定频数分布为泊松分布. 首先我们来认识一下泊 ...

  5. 人工智能_4_k近邻_贝叶斯_模型评估

    机器学习常用算法 k近邻算法 求出未知点 与周围最近的 k个点的距离 查看这k个点中大多数是哪一类 根号((x已知-x未知)^2+(y已知-y未知)^2) 即平面间2点距离公式 收异常点影响较大,因此 ...

  6. (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探

    一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...

  7. 逻辑回归模型(Logistic Regression, LR)基础

    逻辑回归模型(Logistic Regression, LR)基础   逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函 ...

  8. 『高性能模型』轻量级网络ShuffleNet_v1及v2

    项目实现:GitHub 参考博客:CNN模型之ShuffleNet v1论文:ShuffleNet: An Extremely Efficient Convolutional Neural Netwo ...

  9. 回归模型效果评估系列1-QQ图

    (erbqi)导语 QQ图全称 Quantile-Quantile图,也就是分位数-分位数图,简单理解就是把两个分布相同分位数的值,构成点(x,y)绘图:如果两个分布很接近,那个点(x,y)会分布在y ...

  10. 『高性能模型』HetConv: HeterogeneousKernel-BasedConvolutionsforDeepCNNs

    论文地址:HetConv 一.现有网络加速技术 1.卷积加速技术 作者对已有的新型卷积划分如下:标准卷积.Depthwise 卷积.Pointwise 卷积.群卷积(相关介绍见『高性能模型』深度可分离 ...

随机推荐

  1. 从此告别写 SQL!DataLeap 帮你零门槛完成“数据探查”

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 在日常数据处理工作中,产品.运营.研发或数据分析师经常会面临数据量大且混乱.质量参差不齐的问题,需要花费大量时间和 ...

  2. 初识Selenium自动化(为什么要去用自动化?)

    什么是自动化测试 让程序代替人去验证程序功能的过程 自动化测试就是把以人为驱动的测试行为转化为机器执行的一种过程 比如说:我们设计好执行脚本,通过驱动连接浏览器去模拟人去操作浏览器一般 为什么要进行自 ...

  3. ChatGPT带你入门机器学习:逻辑回归模型博客和小红书风格文案一次搞定!

    打脸了 顺手向大家演示一下如何用 ChatGPT 写技术博客吧,其实蛮简单的,特别需要操心的是它会一本正经的胡说八道,还信誓旦旦的.我们要审查它的回答,万不可全信. 为了便于阅读,我把prompt加粗 ...

  4. DNS--安装&&配置文件

    1 下载 #下载服务yum -y install bind#下载解析工具yum -y install bind-utils 2 配置文件 主配置文件 /etc/named.conf 区配置文件 /va ...

  5. linux tar解压命令总结

    把常用的tar解压命令总结下,当作备忘: -c:建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可 ...

  6. 神经网络优化篇:详解RMSprop

    RMSprop 知道了动量(Momentum)可以加快梯度下降,还有一个叫做RMSprop的算法,全称是root mean square prop算法,它也可以加速梯度下降,来看看它是如何运作的. 回 ...

  7. LLVM 参考链接

    https://www.llvm.org/ LLVM Essentials(Paperback) LLVM 编译器 https://www.cs.cmu.edu/afs/cs.cmu.edu/acad ...

  8. Codeforce 1288C. Two Arrays(DP组合数学,n个数选择m个数,单调不递减个数,排列组合打表N*N)

    https://codeforces.com/problemset/problem/1288/C Examples input 2 2 output 5 input 10 1 output 55 in ...

  9. 一、redis单例安装(linux)

    系列导航 一.redis单例安装(linux) 二.redis主从环境搭建 三.redis集群搭建 四.redis增加密码验证 五.java操作redis 环境:centos7.5需要的安装包: re ...

  10. 2023Java面试学习网站推荐

    本文给大家推荐博主收藏的6个程序员面试学习站点,按照项目简介.网站截图.是否收费供大家参考. 1. JavaGuide 网站地址:https://javaguide.cn 项目简介:「Java学习 + ...