数据科学 - 模型检验
1. 前言
模型检验是数据科学项目中至关重要的步骤,确保模型的质量,可靠性和实用性。
模型检验的主要目的是评估模型的性能,验证其在实际应用中的效果,以及防止模型出现过拟合,欠拟合或其他潜在问题。
在日常学习工作中,我们常常使用sklearn中的metrics包,富含了许多模型检验函数。
#安装方式1:命令行与终端安装
pip install -U scikit-learn#安装方式2:基于Anaconda环境
conda install scikit-learn
from sklearn.metrics import ###
2. 分类模型
2.1 评价指标
精准率(Accuracy)
正确分类样本数量与总样本数量的百分比
accuracy_score(y_true,y_pred)
精确率(Precision)
正确预测为正类的样本数占所有预测为正类的样本数的比例
•适用场景:任务关注的是预测为正类的样本是否真的为正类时
precision_score(y_true,y_pred,average='None/macro/micro/weighted')
参数 | 用途 | 适用场景 |
binary | 适用于二分类问题,只会计算正类(通常标签为1)的精确率 | 二分类问题 |
micro | 计算全局精确率,所有类别加总进行计算 | 多分类问题 |
macro | 计算每个类别的Precision,然后取平均 | 每个类别给予相同的权重 |
weighted | 计算每个类别精确率,按照各个类别样本数量进行加权平均 | 类别样本数量不平衡时 |
samples | 计算每个样本的精确率,然后对所有样本取平均 | 多标签分类问题,其中每个样本可以同时属于多个类别 |
召回率(Recall)
正确预测为正类的样本占所有实际为正类的样本数的比例
•适用场景:关注的是所有正类样本是否被找出来时
recall_socre(y_true,y_pred,average='binary')
参数同precision
F1-score
2 * Recall*Precision / (Recall+Precision)
•适用场景:平衡Precision与Recall,尤其是样本类别分布不均时适用。
f1_score(y_true,y_pred,average='binary')
分类报告
生成包含精确率,召回率,F1-score和支持度的分类报告。
from sklearn.metrics import classification_report
classification_report(y_true,y_pred)
2.2 ROC曲线
roc曲线横坐标与纵坐标也是两个评价指标,在每个阈值的情况下,模型指标数值也会随之改变,依次描点得来。
横坐标:FPR = FP / (FP+TN)表示为实际为负类样本中,被错误预测为正类的比例
纵坐标:Recall - 正确预测为正类的样本占所有实际为正类的样本数的比例
换个理解方式,横坐标向右移动,代表模型预测负类样本错误率就越高
纵坐标向上移动,模型预测正类样本的正确率就越高
所以根据ROC曲线,越靠近(0,1)的点,模型预测效果就越好。
from sklearn.metrics import roc_curve,roc_auc_score
fpr,tpr,thresholds = roc_curve(y_true,y_proba)
注意:此处所填充数据不是y_pred,而是y_proba预测概率,以此确定在不同阈值下模型的分类效果
model.predict_proba(X_test)
y_proba = model.predict_proba(X_test)[:,1]
#返回一个二维数组,例如[0.7,0.3];表示70%概率属于第一个类别(0,负类),30%概率为正类(1)
#清洗数据时一般默认0为负类,1为正类
import matplotlib.pyplot as plt
plt.figure()
plt.plot(fpr,tpr,color='blue')
plt.plot([0,1],[0,1],'--',color='red')
plt.plot(best_fpr,best_tpr,marker='o',markersize=8,color='black')
plt.text(best_fpr,best_tpr+0.1,'best threshold')
plt.xlabel('FPR')
plt.ylabel('TPR')
plt.title('ROC curve')
基于最靠近(0,1)的点选择最佳阈值:
AUC
表示ROC曲线与坐标轴之间的面积,面积越大,说明该模型预测效果越好
from sklearn.metrics import roc_auc_socre
roc_auc_score(y_true,y_proba)
更深入了解请参考:超简单白话文机器学习 - 模型检验与评估(含算法介绍,公式,源代码实现以及调包实现)_机器学习模型检验-CSDN博客
2.3 混淆矩阵
混淆矩阵是一种用于评估分类模型性能的工具,特别是在二分类问题中。直观展示模型在不同类别上的预测结果,了解模型分类准确率以及各种类型的错误。
列表示样本实际类别,行表示样本预测类别。
基于预测与真实判断时真假,预测值决定P与N。
实际|预测 | 预测为负 Negative | 预测为正 Positive |
实际为负 Negative | TN | FP |
实际为正 Positive | FN | TP |
form sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_true,y_pred)
这样生成出来的混淆矩阵较为简陋,数据分析有时需要让数据更加直观,可视图更加直观
seaborn
import seaborn as ins
sns.heatmap(cm,annot=True,fmt='d',cmap='YlGnBu',cbar=True)
#annot指定在图中是否显示数值
#fmt数值显示类型 .2f显示小数
#cmap配色方案,例如'Viridis','coolwarm','Blues'
#cbar是否显示颜色条
ConfusionMatrixDisplay
from sklearn.metrics import ConfusionMatrixDisplay
CM = ConfusionMatrixDisplay(cm)
CM.plot(cmap='')
也可以直接从模型中生成混淆矩阵
ConfusionMatrixDisplay.from_estimator(model,X_test,y_test,cmap='Blues')
plt.show()
3. 回归模型
3.1 评价指标
指标 | 函数 | 用途 |
均方误差(MSE) | mean_squared_error(y_true,y_pred,squared=True) | 计算模型均方误差,预测值与实际值之间的误差;squared=False时计算RMSE(MSE取平方根) |
平均绝对误差(MAE) | mean_absolute_error(y_true,y_pred) | 计算模型的平均绝对误差 |
中位数绝对误差 | median_absolute_error(y_true,y_pred) | 计算模型中位数绝对误差 |
3.2 系数
R²(决定系数)
决定系数(Coefficient of Determination),通常表示为 R²,是一种用于评估回归模型拟合优度的统计指标。它表示因变量的变异性能够由模型解释的比例,即模型对数据的拟合程度。
R² 的取值范围在 0 到 1 之间。一个较高的 R² 值表示模型能够较好地解释因变量的变异性,即模型的拟合程度较好。
计算方式如下:
其中SSres表示预测值与实际值之间差异的平方和(越小越好),模型无法解释的因变量的剩余变异性,即模型无法完全拟合的部分; 1 - SSres则表示模型可以解释的部分:
SStot表示实际值与均值之间差异的平方和,其意义在于没有考虑任何自变量的情况下,因变量的总变异性:
R² 只能衡量模型对因变量的拟合优度,但不能判断模型是否具有因果关系、是否过拟合或是否适合应用于其他数据集。
from sklearn.metrics import r2_score
r2 = r2_score(y_true,y_predict)#或者使用model.score方法
r2_alternative = model.score(X_test,y_test)
4. 参考资料:
超简单白话文机器学习 - 模型检验与评估(含算法介绍,公式,源代码实现以及调包实现)_机器学习模型检验-CSDN博客
均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)、决定系数(R²)解释-CSDN博客
相关文章:
数据科学 - 模型检验
1. 前言 模型检验是数据科学项目中至关重要的步骤,确保模型的质量,可靠性和实用性。 模型检验的主要目的是评估模型的性能,验证其在实际应用中的效果,以及防止模型出现过拟合,欠拟合或其他潜在问题。 在日常学习工作…...
【GaussDB(DWS)】数仓部署架构与物理结构分析
数仓架构与物理结构分析 一、部署架构二、物理结构三、测试验证 一、部署架构 华为数据仓库服务DWS,集群版本8.1.3.x 集群拓扑结构: 上述拓扑结构为DWS单AZ高可靠部署架构,为减少硬件故障对系统可用性的影响,建议集群部署方案遵…...
git做版本管理的时候,中途添加了新的内容在.gitignore中,怎么让git不再跟踪
当您在 .gitignore 文件中添加了新的路径模式后,Git 将不再跟踪这些路径下的新文件。但是,如果这些路径下的文件已经被 Git 跟踪(即它们已经被提交到仓库),您需要执行一些额外的步骤来让 Git 停止跟踪这些文件。 以下…...
Unity新输入系统 之 PlayerInput(真正的最后封装部分)
本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 首先你应该了解新输入系统的基本单位和输入配置文件 Unity新输入系统 之 InputAction(输入配置文件最基本的…...
跨部门协作:观测云在促进业务与技术团队合作中的作用
在当今的企业环境中,业务与技术团队之间的紧密合作对于推动创新和提升效率至关重要。观测云平台作为一个强大的数据监控和分析工具,在这方面发挥着至关重要的作用,它通过提供统一的数据视图和协作工具,促进了跨部门间的有效协作。…...
OceanBase V4.3 列存引擎之场景问题汇总
在OceanBase 4.3版本发布后(OceanBase社区版 V4.3 免费下载),其新增的列存引擎,及行列混存一体化的能力,可以支持秒级实时分析,引发了用户、开发者及业界人士的广泛讨论。本文选取了这些讨论中较为典型的一…...
Spring中的Aware接口及应用场景
Spring框架提供了一些Aware接口,例如ApplicationContextAware, BeanFactoryAware, EnvironmentAware等,这些接口允许你的Bean获取Spring容器的资源。 例如,如果你的Bean实现了ApplicationContextAware接口,那么Spring在启动的时候…...
设计模式 - 建造者模式
💝💝💝首先,欢迎各位来到我的博客!本文深入理解设计模式原理、应用技巧、强调实战操作,提供代码示例和解决方案,适合有一定编程基础并希望提升设计能力的开发者,帮助读者快速掌握并灵活运用设计模式。 💝💝💝如有需要请大家订阅我的专栏【设计模式】哟!我会定…...
MySQL数据分析进阶(十二)设计数据库——PART4
;※食用指南:文章内容为‘CodeWithMosh’SQL进阶教程系列学习笔记,笔记整理比较粗糙,主要目的自存为主,记录完整的学习过程。(图片超级多,慎看!) 【中字】SQL进阶教程 |…...
在 Spring Boot 中使用桥接模式实现灵活的报表生成服务
在软件开发中,桥接模式是一种结构型设计模式,用于将抽象部分与它的实现部分分离,使得这两部分可以独立变化。这种模式非常适合处理需要灵活配置和扩展的场景,比如报表生成服务。本文将详细介绍如何使用桥接模式来实现一个灵活的报…...
算法:外卖调度
题目 有N个餐厅和M个外卖员,每个餐厅在某个时间点会产生一个外卖订单,这些订单都有产生时间、所需送达时间和优先级。外卖员在空闲时会选择最优先的订单来配送,直到所有订单都被送达。具体规则如下: 对于每个餐厅的订单,优先级高…...
leetcode50. Pow(x, n),快速幂算法
leetcode50. Pow(x, n),快速幂算法 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。 示例 1: 输入:x 2.00000, n 10 输出:1024.00000 示例 2: 输入ÿ…...
Xinstall神器来袭,轻松搞定CPA推广渠道统计!
在数字化营销日益盛行的今天,CPA(按行动付费)推广已成为众多企业营销的重要手段。然而,随着渠道流量和获客途径的不断变化,CPA推广渠道统计的痛点也日益凸显。别担心,Xinstall来帮你解决问题! …...
011 | efinance分析豆一主连期货
👉👉👉 《玩转Python金融量化专栏》👈👈👈 订阅本专栏的可以下载对应的代码和数据集 🚀 上一篇🌟 下一篇⬅️ 010 东方财富帖子标题情绪分析012 akshare分析NYBOT棉花历史数据 ➡️豆一主连期货(通常简称“豆一”)是指中国期货市场上以大豆为标的的期货合约…...
【Python】函数入门(下)
3))* ** 注意:也遵循位置传参在前面,按关键字传参在后面。 代码示例: def func(*args,**kwargs):print(args,kwargs) 该函数中的参数会自动根据传参的方式不同(即:按位置…...
git的基本概念和使用原理
Git是一个分布式版本控制系统,用于跟踪文件的更改并协调多个开发人员之间的工作。以下是Git的基本概念和使用原理及方式: 目录 基本概念 使用原理 基本操作示例 基本概念 版本库(Repository): 版本库是Git用来保存…...
手写简化版的vue-router
vue-router作为vue全家桶之一的重要插件,有必要去深究一下,今天我们就从0到1手写一个简化版本。 开始之前,我们使用路由插件时是先进行下载路由 npm i vue-router ,然后在main.js中使用app.use导入router插件。想要手写vue-rou…...
分享一个基于uni-app的蛋糕商城订购小程序的设计与实现(源码、调试、LW、开题、PPT)
💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...
Python绘图入门:使用Matplotlib绘制柱状图
Python绘图入门:使用Matplotlib绘制柱状图 柱状图是一种常见的数据可视化方式,能够直观地展示不同类别之间的数据差异。在Python中,Matplotlib是一个非常强大且灵活的绘图库,它不仅能绘制简单的图表,还能创建复杂的多…...
Qt5编译qmqtt库使用MQTT协议连接华为云IOT完成数据上传与交互
一、前言 随着物联网技术的发展,越来越多的设备通过网络互相连接,形成了庞大的智能系统。这些系统能够收集、分析并响应各种数据,从而实现自动化控制和智能化管理。在这个背景下,MQTT 成为了一个广泛使用的轻量级消息传输协议,特别适用于资源受限的环境,如移动应用或远程…...
mysql速起架子
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 下载mysql tar xvJf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz 解压 mv mysql-8.0.21-linux-glibc2.12-x86_64 mysql-8.0 改名 去到bin目录 cd bin mkdir data gr…...
云动态摘要 2024-08-14
给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 注册阿里云免费领云服务器_云服务器ECS_阿里云 阿里云 2024-08-14 云上试用新玩法,个人享300元免费额度,企业享660元免费额度,多种规格随心试 [免费体验…...
Elasticsearch 桶(Bucket)聚合详解及示例
在 Elasticsearch 中,桶(Bucket)聚合是一种强大的工具,它允许我们对数据进行分组并统计每组的数量。这种聚合类型对于理解数据的分布和进行分组统计非常有用。本文将详细介绍 Elasticsearch 的桶聚合,并提供完整的示例…...
Django基础知识
文章目录 新建Django项目helloworld关联数据库admin 新建Django项目 创建django-admin startproject project_name 运行 python manage.py runserver 创建app: python manage.py startapp app_name 目录: 配置文件 settings.py 路由配置 urls.py 项目管理 manage.p…...
使用 nginx 搭建代理服务器(正向代理 https 网站)指南
简介 正向代理 简介 在企业开发环境中,局域网内的设备通常需要通过正向代理服务器访问互联网。正向代理服务器充当中介,帮助客户端请求外部资源并返回结果。局域网内也就是俗称的内网,局域网外的互联网就是外网,在一些特殊场景内…...
深入解析亚马逊数据采集工具选择:Data API/Scrape API/Pangolin采集器
引言 在当今电商领域,亚马逊已成为全球最大的在线零售平台之一。随着竞争的加剧和市场的多样化,商家和企业不仅需要优秀的产品和服务,还需要通过深入的数据分析来制定更加精准的市场策略。因此,采集亚马逊站点数据已成为企业实现…...
探索Linux多样性:主流发行版及其应用场景
目录 引言 Debian:稳定性的标杆 Ubuntu:易用性的代表 Red Hat Enterprise Linux (RHEL):企业的首选 Fedora:创新的前沿 CentOS:开源的稳定之选 Arch Linux:高级用户的定制天堂 Gentoo:性…...
CentOS7.6 HAproxy-7层负载均衡集群——实施方案
目录 1、前期环境准备 1.准备4台主机 1. 设置主机名 2. 设置IP地址然后重启网卡 3. 关闭防火墙和selinux 4. 全部的服务器完成时间统一 二、配置haproxy(192.168.200.11)服务器 1. 安装haproxy 2. haproxy 配置中分成五部分内容 3. 配置HAproxy(192.168.2…...
升级ubuntu22.10到24.04
将所有kinetic换成noble,noble是24.04源,sed或手动改。 cd /etc/aptgrep -nr kinetic将old-releases.ubuntu.com替换成国内的地址,因为2210国内源没找到,没有了,但是现在更新到24.04,国内是有的。 apt up…...
YOLO好像也没那么难?
“学YOLO的念头是想整个游戏外挂!” 目录 基本原理 模型推理 IOU交并比 NMS非极大值抑制 模型训练 损失函数LOSS 代码实现 YOLO学习渠道 基本原理 模型推理 学习一个新的神经网络结构,作者认为整明白输入和输出是怎么回事就OK了,至于…...
南宁网站设计多少钱/有没有推广app的平台
Package gp in the OpenCASCADE eryar163.com China 一、简介 Introduction to Package gp gp是几何处理程序包(Geometric Processor package),简称gp。包gp提供以下功能: 代数计算;如坐标计算、矩阵计算;…...
中文wordpress/东莞疫情最新通告
三大基本关系首先我们要了解的是在美术里最重要的三个主要关系,他们是:结构关系、素描关系、色彩关系。这三个关系简单来说就是,结构关系是物体的透视关系(也就是近大远小的空间关系)、和物体的基本结构(可…...
做网站用哪个操作系统稳定/智慧软文发布系统
docker exec :在运行的容器中执行命令 docker exec [OPTIONS] CONTAINER COMMAND [ARG...] OPTIONS说明: -d :分离模式: 在后台运行 -i :即使没有附加也保持STDIN 打开 -t :分配一个伪终端 实例 在容器mynginx中以交互模式执行容器内/root/runoob.sh…...
网站开发流程心得体会/软文推广名词解释
低端控制器对执行效率要求很高,成本敏感,因而SoC内置SRAM是紧缺资源。代码分块管理就是为了充分利用内存,提高内存的复用效率而提出的一种设计方法。代码分块管理不仅涉及到硬件,同样对操作系统和应用、驱动的设计都有要求&#x…...
找网站/线下推广方式
给定一个整数 n ,返回 n! 结果中尾随零的数量。 提示 n! n * (n - 1) * (n - 2) * … * 3 * 2 * 1 示例 1: 输入:n 3 输出:0 解释:3! 6 ,不含尾随 0 示例 2: 输入:n 5 输出&a…...
专业集团门户网站建设服务商/百度seo点击
(一)该如何理解事实表 事实表作为维度建模的另一个核心,是紧贴着业务过程来进行设计和描述的。相对于维度表来说,事实表要大的多,由于承载了具体的业务过程,因而变化也非常大。与维度表不同的是࿰…...