【scikit-learn基础】--『回归模型评估』之准确率分析
分类模型的评估和回归模型的评估侧重点不一样,
回归模型一般针对连续型的数据,而分类模型一般针对的是离散的数据。
所以,评估分类模型时,评估指标与回归模型也很不一样,
比如,分类模型的评估指标通常包括准确率、精确率、召回率和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)真阴性 |
其中,tp和tn是预测结果与实际结果相符;fp和fn是预测结果与实际结果不符。
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基础】--『回归模型评估』之准确率分析的更多相关文章
- (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探
目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...
- 机器学习之路:python 集成回归模型 随机森林回归RandomForestRegressor 极端随机森林回归ExtraTreesRegressor GradientBoostingRegressor回归 预测波士顿房价
python3 学习机器学习api 使用了三种集成回归模型 git: https://github.com/linyi0604/MachineLearning 代码: from sklearn.dat ...
- SPSS分析技术:无序多元Logistic回归模型;美国总统大选的预测历史及预测模型
SPSS分析技术:无序多元Logistic回归模型:美国总统大选的预测历史及预测模型 在介绍有序多元Logistic回归分析的理论基础时,介绍过该模型公式有一个非常重要的假设,就是自变量对因变量多个类 ...
- Poisson回归模型
Poisson回归模型也是用来分析列联表和分类数据的一种方法,它实际上也是对数线性模型的一种,不同点是对数线性模型假定频数分布为多项式分布,而泊松回归模型假定频数分布为泊松分布. 首先我们来认识一下泊 ...
- 人工智能_4_k近邻_贝叶斯_模型评估
机器学习常用算法 k近邻算法 求出未知点 与周围最近的 k个点的距离 查看这k个点中大多数是哪一类 根号((x已知-x未知)^2+(y已知-y未知)^2) 即平面间2点距离公式 收异常点影响较大,因此 ...
- (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探
一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...
- 逻辑回归模型(Logistic Regression, LR)基础
逻辑回归模型(Logistic Regression, LR)基础 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函 ...
- 『高性能模型』轻量级网络ShuffleNet_v1及v2
项目实现:GitHub 参考博客:CNN模型之ShuffleNet v1论文:ShuffleNet: An Extremely Efficient Convolutional Neural Netwo ...
- 回归模型效果评估系列1-QQ图
(erbqi)导语 QQ图全称 Quantile-Quantile图,也就是分位数-分位数图,简单理解就是把两个分布相同分位数的值,构成点(x,y)绘图:如果两个分布很接近,那个点(x,y)会分布在y ...
- 『高性能模型』HetConv: HeterogeneousKernel-BasedConvolutionsforDeepCNNs
论文地址:HetConv 一.现有网络加速技术 1.卷积加速技术 作者对已有的新型卷积划分如下:标准卷积.Depthwise 卷积.Pointwise 卷积.群卷积(相关介绍见『高性能模型』深度可分离 ...
随机推荐
- 【django-vue】登录注册模态框分析 登录注册前端页面 腾讯短信功能二次封装 短信验证码接口 短信登录接口 短信注册接口
目录 昨日回顾 csrf跨站请求伪造 接口幂等性 异常捕获 今日内容 1 登录注册模态框分析 Login.vue Header.vue 2 登录注册前端页面复制 2.0 Header.vue 2.1 ...
- 【JAVA基础】MySQL配置
mySQL配置 数据库连接 初始化配置 --创建用户 并授权 create user 'injasup'@'%' identified by 'supplier@2023#!'; GRANT SELE ...
- AtCoder Beginner Contest 171 AK!
这一场好神奇!能AK了 AB水题, C - One Quadrillion and One Dalmatians 把一个数字转化为字母,规则为 \([1,26]\) 对应 \([a,z]\) , 27 ...
- RPC与Http的区别
一.远程调用方式 无论是微服务还是分布式服务(都是SOA,都是面向服务编程),都面临着服务间的远程调用.那么服务间的远程调用方式有哪些呢? 常见的远程调用方式有以下几种: RPC:Remote Pro ...
- 五、mycat水平分库
系列导航 一.Mycat实战---为什么要用mycat 二.Mycat安装 三.mycat实验数据 四.mycat垂直分库 五.mycat水平分库 六.mycat全局自增 七.mycat-ER分片 一 ...
- Ubuntu 18.04安装arm-linux-gcc交叉编译器的两种方法(附下载地址)
方法一: 我们都知道Ubuntu有一个专门用来安装软件的工具apt,我们可以用它来全自动安装arm-linux-gcc. 此方法安装的是最新版的,但是此方法需要FQ,否则99%会失败,这就是为 ...
- vue实现文件上传功能
https://www.jb51.net/article/145500.htm Element中的el-upload使用过程中踩的坑 https://www.jianshu.com/p/c837224 ...
- kafka常用操作
kafka运维常用查询操作总结以下几点: kafka生产和消费消息测试 发送:bin/kafka-console-producer.sh --broker-list 10.46.200.165:909 ...
- 如何使用ps抠图(两种扣图方法)
PS抠图的方法有很多种,以下是其中两种常用的方法: 方法一:适用于背景颜色单一.较为简单的图片. 选中魔棒工具/魔术橡皮擦,点击背景,出现选区,点击Delete键删除. 点击快速选择工具,沿着所需图形 ...
- Laravel - 使用ajax
一,前台模板文件 index.blade.php <!DOCTYPE html> <meta name="_token" content="{{ cs ...