机器学习(四) -- 模型评估(3)

系列文章目录

机器学习(一) -- 概述

机器学习(二) -- 数据预处理(1-3)

机器学习(三) -- 特征工程(1-2)

机器学习(四) -- 模型评估(1-4)

未完待续……


目录

机器学习(四) -- 模型评估(1)

机器学习(四) -- 模型评估(2)

---

系列文章目录

前言

四、 回归模型评估指标

1、均方误差(Mean Squared Error,MSE)

2、***均方根误差(Root Mean Squared Error,RMSE)

3、***均方对数误差(Mean Squared Log Error,MSLE)

4、平均绝对误差(Mean Absolute Error,MAE)

5、***平均绝对百分比误差(Mean Absolute Percentage Error,MAPE)

6、决定系数(R2,R-square)

7、***校正决定系数(Adjusted R-square)


前言

tips:这里只是总结,不是教程哈。

“***”开头的是给好奇心重的宝宝看的,其实不太重要可以跳过。

此处以下所有内容均为暂定,因为我还没找到一个好的,让小白(我自己)也能容易理解(更系统、嗯应该是宏观)的讲解顺序与方式。

第一文主要简述了一下机器学习大致有哪些东西(当然远远不止这些),对大体框架有了一定了解。接着我们根据机器学习的流程一步步来学习吧,掐掉其他不太用得上我们的步骤,精练起来就4步(数据预处理,特征工程,训练模型,模型评估),其中训练模型则是我们的重头戏,基本上所有算法也都是这一步,so,这个最后写,先把其他三个讲了,然后,在结合这三步来进行算法的学习,兴许会好点(个人拙见)。


衡量模型泛化能力的评价标准就是性能度量(模型评估指标、模型评价标准),而针对不同的任务有不同的评价指标。按照数据集的目标值不同,可以把模型评估分为分类模型评估、回归模型评估和聚类模型评估。

四、 回归模型评估指标

均方误差(MSE)、均方根误差(RMSE)、均方对数误差(MSLE)、
平均绝对误差(MAE)​​​​​​、平均绝对百分比误差(MAPE)、
决定系数(R2,R-square)、校正决定系数(Adjusted R-square)

1、均方误差(Mean Squared Error,MSE)

回归任务最常用的性能度量就是均方误差。是预测数据和原始数据对应点误差的平方和的均值。越小越好。

公式

均方误差存在一个明显的缺陷,
假设,现在有三个样本,它们的预测值与真实值的差分别为 3、4、5,通过均方误差的计算公式,我们可以分别计算出这三个样本的误差为 9、16 和 25;第三个样本的误差等于前两个样本的误差和,也就是说样本的预测值离真实值越远,误差也越大,且增长幅度越来越大。

模型为了降低误差,势必会想办法优先让偏差最大的样本尽可能靠近真实值。换言之,偏差越大的样本对模型的影响也越大,如果这个样本是噪声,那么这对模型的精度产生重大负面影响。简单地说,均方误差对噪声不鲁棒。【鲁棒性(robustness)是指系统或者算法在不同的情况下,仍能够保持稳定和可靠的能力。

就像我们再【数据预处理(2)的2.1.3、3σ法则】中遇到的情况一样噪声数据影响过大。

API

from sklearn.metrics import mean_squared_error

我们用波士顿房价数据集为例,模型选择决策树算法,来测试。

import numpy as np
from sklearn.datasets import load_boston
from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import train_test_split


# 引入数据集
boston = load_boston()

# 划分数据集
x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.3, random_state=134)

#模型训练
model = DecisionTreeRegressor()
model.fit(x_train, y_train)

from sklearn.metrics import mean_squared_error

# 均方误差
mean_squared_error(y_test, model.predict(x_test))

 

2、***均方根误差(Root Mean Squared Error,RMSE)

均方误差开根号。

和MSE一样,对异常点(outliers)较敏感,如果回归器对某个点的回归值很不理性,那么它的误差则较大,从而会对RMSE的值有较大影响,即平均值是非鲁棒的。

公式

代码

代码也很简单,上面那个开个平方就好了。 

# 均方根误差
np.sqrt(mean_squared_error(y_test, model.predict(x_test)))

3、***均方对数误差(Mean Squared Log Error,MSLE)

公式

代码

from sklearn.metrics import mean_squared_log_error

# 均方对数误差
mean_squared_log_error(y_test, model.predict(x_test))

4、平均绝对误差(Mean Absolute Error,MAE)

公式

代码

from sklearn.metrics import mean_absolute_error

# 平均绝对误差
mean_absolute_error(y_test, model.predict(x_test))

5、***平均绝对百分比误差(Mean Absolute Percentage Error,MAPE)

公式

代码

from sklearn.metrics import mean_absolute_percentage_error

# 平均绝对百分比误差
mean_absolute_percentage_error(y_test, model.predict(x_test))

6、决定系数(R2,R-square)

反映因变量的全部变异能通过回归关系被自变量解释的比例。拟合优度越大,自变量对因变量的解释程度越高,自变量引起的变动占总变动的百分比越高,观察点在回归直线附近越密集。
决定系数R2越高,越接近于1,模型的拟合效果就越好。

公式:S^2是方差

代码

from sklearn.metrics import r2_score

# 决定系数
r2_score(y_test, model.predict(x_test))

7、***校正决定系数(Adjusted R-square)

公式

代码

r2=r2_score(y_test, model.predict(x_test))

n, p = x_test.shape
adjusted_r2 = 1 - ((1 - r2) * (n - 1)) / (n - p - 1)
adjusted_r2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/298109.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JAVA】volatile 关键字的作用

🍎个人博客:个人主页 🏆个人专栏: JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 volatile 的作用: 结语 我的其他博客 前言 在多线程编程中,保障数据的一致性和线程之间的可见性是…

优化|PLSA理论与实践

PLSA又称为概率潜在语义分析,是一种利用概率生成模型对文本集合进行话题分析的无监督学习方法。该模型最大的特点是加入了主题这一隐变量,文本生成主题,主题生成单词,从而得到单词-文本共现矩阵。本文将对包含物理学、计算机科学、…

嵌入式(五)通信协议 | 串行异步同步 UART SPI I2C 全解析

文章目录 0 串口通信协议1 通用异步收发传输器 UART1.1 串口配置1.2 串口初始化1.3 串口发送和接收方式1.3.1 轮询方式发送1.3.2 中断方式发送1.3.3 查询方式接收1.3.4 中断方式接收 2 串行外设接口 SPI2.1 标准的四线SPI接口2.2 SPI的四种模式2.3 配置2.4 发送和接收Master向S…

[python]gym安装报错ERROR: Failed building wheel for box2d-py

报错截图: box2d是一个游戏领域的2D图形C引擎,用来模拟2D刚体物体运动和碰撞。 swig是一个将c/c代码封装为Python库的工具(是Python调用c/c库的一种常见手段),所以在运行时box2d会依赖到swig。而swig并不是一个python库…

C#,简单选择排序算法(Simple Select Sort)的源代码与数据可视化

排序算法是编程的基础。 常见的四种排序算法是:简单选择排序、冒泡排序、插入排序和快速排序。其中的快速排序的优势明显,一般使用递归方式实现,但遇到数据量大的情况则无法适用。实际工程中一般使用“非递归”方式实现。本文搜集发布四种算法…

港口车路协同系统方案

目前,国内自动驾驶应用的两种主流路线是单车智能、单车智能V2X。国内多数港口仍采用4G通信技术,单车智能在港口应用的稳定性较差,比如可能受到金属集装箱干扰及移动通信速率不稳定的影响。单车智能V2X将降低对通信速率的要求,可以…

【BCC动态跟踪PostgreSQL】

BPF Compiler Collection (BCC)是基于eBPF的Linux内核分析、跟踪、网络监控工具。其源码存放于GitCode - 开发者的代码家园 想要监控PostgreSQL数据库的相关SQL需要在编译PostgreSQL的时候开启dtrace。下文主要介绍几个和PostgreSQL相关的工具,其他工具可根据需求自行了解。 …

移动通信原理与关键技术学习(第四代蜂窝移动通信系统)

前言:LTE 标准于2008 年底完成了第一个版本3GPP Release 8的制定工作。另一方面,ITU 于2007 年召开了世界无线电会议WRC07,开始了B3G 频谱的分配,并于2008 年完成了IMT-2000(即3G)系统的演进——IMT-Advanc…

Leetcode 剑指 Offer II 060. 前 K 个高频元素

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个整数数组 nums 和一个整数 k ,请返回其中出现…

缘分的计算

题目描述: 缘分是一个外国人难以理解的中文名词。大致说来,缘分是一种冥冥中将两人(通常是情人)结合的力量。仅管这是种迷信,很多人——特别是女生——喜欢去计算它。 不幸的是,644 也是这样。有天&#x…

【linux笔记】top、ps

【linux笔记】top命令 top(Table of process)是动态变化的。而ps是静态的。 PID — 进程id USER — 进程所有者 PR — 进程优先级 NI — nice值。负值表示高优先级,正值表示低优先级 VIRT — 进程使用的虚拟内存总量,单位kb。VI…

二叉树的最大深度,力扣

目录 题目地址: 题目: 我们直接看题解吧: 快速理解题解小建议: 审题目事例提示: 解题方法: 解题方法分析: 方法1后序遍历(DFS) 解题分析: 解题思路&#xff1…

启动 Mac 时显示闪烁的问号

启动 Mac 时显示闪烁的问号 如果启动时在 Mac 屏幕上看到闪烁的问号,这意味着你的 Mac 无法找到自身的系统软件。 如果 Mac 启动时出现闪烁的问号且无法继续启动,请尝试以下步骤。 1.通过按住其电源按钮几秒钟来关闭 Mac。 2.按一下电源按钮&#xf…

强化学习5——动态规划初探

动态规划具体指的是在某些复杂问题中,将问题转化为若干个子问题,并在求解每个子问题的过程中保存已经求解的结果,以便后续使用。实际上动态规划更像是一种通用的思路,而不是具体某个算法。 在强化学习中,被用于求解值函…

华为MDC610接口说明

1、MDC610对外功能接口 2、1、MDC610硬件技术规格

前端插件库-VUE3 使用 vue-codemirror 插件

VUE3 插件 vue-codemirror 使用步骤和实例、基于 CodeMirror ,适用于 Vue 的 Web 代码编辑器。 第一步:安装 vue-codemirror & codemirror 包 , 以及语言包 npm install codemirror --save npm install vue-codemirror --savenpm insta…

Linux第13步_安装“vim编辑器”及应用介绍

学习“磁盘重新分区”后,嵌入式Linux系统环境搭建进入安装“vim编辑器”这个环节。vim编辑器可以用来修改文件,在后期使用中,会经常用到。 1、安装“vim编辑器” 输入“sudo apt-get install vim回车”,就可以执行安装“vim编辑…

SpringIOC之support模块ContextTypeMatchClassLoader

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

【Bootstrap学习 day11】

Bootstrap5字体图标 字体图标是在Web项目中使用的图标字体。 使用字体图标的好处是,可以通过应用CSS color属性来创建任何颜色的图标。此外,要更改图标的大小,只需使用CSS font-size属性即可。 获取字体图标 在网页中包含Bootstrap5图标的最…

opencv图像金字塔

下采样&#xff1a; #include <opencv2/opencv.hpp> #include <iostream>int main() {// 读取图像cv::Mat src cv::imread("C:/Users/10623/Pictures/adf4d0d56444414cbeb809f0933b9214.png");if (src.empty()) {std::cout << "无法加载图像…