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

news2024/12/29 1:29:13

系列文章目录

机器学习(一) -- 概述

机器学习(二) -- 数据预处理(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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

稿件代写3个不可或缺的步骤让你事半功倍-华媒舍

作为一个需求频繁的作者,你可能会面临大量的稿件代写任务。但是,你是否曾经为提高文章质量而苦恼过?是否希望在有限的时间内完成更多的代写任务?本篇文章将向你介绍三个不可或缺的稿件代写步骤,帮助你事半功倍&#xf…

java预科

文章目录 预科什么是计算机?硬件及冯诺依曼结构Windows常用快捷键常用的DOS命令 预科 什么是计算机? 名称:Computer,全称电子计算机,俗称电脑。 定义:能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备…

C语言程序设计——数学运算

基本运算符 运算符说明例子赋值运算符a b;、-、*、/、()基本四则运算a (a c) * d;%取余运算符a b % 2&、^、~、l位运算a ~b l c>>、<<左移和右移a b >> 2 在c语言的数学运算中&#xff0c;所涉及到的符号如图所示&#xff0c;在使用过程中应该了…

超简单的详细教程:如何为一个GitHub开源项目做出贡献!

仓库&#xff1a;Ai-trainee/GPT-Prompts-Hub 让我们通过一个具体的例子&#xff0c;详细了解如何从克隆一个GitHub仓库开始&#xff0c;一步步地贡献到一个项目。以下是详细步骤&#xff0c;包括所需的代码和说明&#xff1a; 首先我们Fork想要贡献的项目&#xff0c;然后请看…

Vite scss 如何引入本地 字体

Vite scss 如何引入本地 字体 最近在用 Vite 改造一个旧项目 Diary&#xff0c;遇到了好多从 Vue 转到 Vite 的问题。 这次这个问题是&#xff1a; scss 里本地字体引入的问题。 一、问题描述 可以看到下面的卡片字体&#xff0c;本来应该是 impact 的&#xff0c;但现在无法…

KBDSL1.DLL文件丢失,软件或游戏无法启动,快速修复方法

在Windows操作系统中&#xff0c;KBDSL1.DLL是一个动态链接库文件&#xff0c;由Microsoft Corporation提供。通常包含多个函数和程序&#xff0c;可以被多个应用程序共享&#xff0c;以执行一些特定的任务或功能。 如果KBDSL1.DLL文件丢失或损坏&#xff0c;可能会在启动计算机…

金和OA C6 UploadFileEditorSave.aspx 任意文件上传漏洞

产品介绍 金和网络是专业信息化服务商,为城市监管部门提供了互联网监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 漏洞概述 金和 OA C6 uploadfileeditorsave接口处存在任意文件上传漏洞&#xff0c;攻击者可以通过构造特殊…

vmware中ubuntu虚拟机不能够用共享文件夹

有时候发现装好虚拟机后&#xff0c;然后 虚拟机-设置-选项-共享文件夹 然后使用快捷键ctrlaltt 打开命令行&#xff0c;cd /mnt下没有看到hgfs文件夹 解决办法是安装vmware tools工具 此时想通过点击 虚拟机-安装vmwaretools工具 按钮 居然发现该按钮是灰色的&#xff0…

Note: A Woman Doctor Lina

A woman doctor Lina 女医生丽娜 Born in a pigs’ nest, Lina led a poor life in her childhood. 出生在猪圈里&#xff0c;丽娜过着贫穷的童年生活。 led nest She was looked down upon by the children of her generation. 她被她同时代的孩子瞧不起。 generation look…

Python爬虫中的协程

协程 基本概念 协程&#xff1a;当程序执行的某一个任务遇到了IO操作时&#xff08;处于阻塞状态&#xff09;&#xff0c;不让CPU切换走&#xff08;就是不让CPU去执行其他程序&#xff09;&#xff0c;而是选择性的切换到其他任务上&#xff0c;让CPU执行新的任务&#xff…

QtApplets-SystemInfo

QtApplets-SystemInfo ​ 今天是2024年1月3日09:18:44&#xff0c;这也是2024年的第一篇博客&#xff0c;今天我们主要两件事&#xff0c;第一件&#xff0c;获取系统CPU使用率&#xff0c;第二件&#xff0c;获取系统内存使用情况。 ​ 这里因为写博客的这个本本的环境配置不…

C++学习day--25 俄罗斯方块游戏图像化开发

项目分析 项目演示、项目分析 启动页面 启动页面&#xff1a; 分析&#xff1a; 开发环境搭建 1&#xff09;安装vc2010, 或其他vs版本 2&#xff09;安装easyX图形库 代码实现: # include <stdio.h> # include <graphics.h> void welcome(void) { initgraph(55…

【MySQL】MySQL如何查询和筛选存储的JSON数据?

MySQL如何查询和筛选存储的JSON数据&#xff1f; 一、背景介绍二、支持的JSON数据类型三、基础数据3.1 创建表3.2 插入 JSON 数据3.3 查询 JSON 数据 四、操作函数4.1 JSON_OBJECT4.2 JSON_ARRAY4.3 JSON_EXTRACT 一、背景介绍 JSON(JavaScript Object Notation)是一种轻量级的…

如何通过内网穿透实现无公网IP远程访问内网的Linux宝塔面板

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔&#xff0c;内网穿透三、使用固定公网地址访问宝塔 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。…

dubbo的基础知识

dubbo是什么 Dubbo是一个分布式服务框架&#xff0c;是一种高性能的远程通讯框架。它提供了基于Java的RPC&#xff08;远程过程调用&#xff09;通信机制&#xff0c;使得应用之间可以方便地进行远程调用&#xff0c;实现分布式服务的调用和管理。Dubbo提供了服务注册、发现、负…

轻松获取CHATGPT API:免费、无验证、带实例

免费获取和使用ChatGPT API的方法 快速开始&#xff1a;视频教程 章节一&#xff1a;GPT-API-Free开源项目介绍 GPT-API-Free 是一个开源项目&#xff0c;它提供了一个中转API KEY&#xff0c;使用户能够调用多个GPT模型&#xff0c;包括gpt-3.5-turbo、embedding和gpt-4。这…

cesium键盘控制模型

效果&#xff1a; 由于对添加模型和更新位置api进行二次了封装&#xff0c;下面提供思路 1.添加模型 const person reactive({modelTimer: null,position: {lon: 104.07274,lat: 30.57899,alt: 1200,heading: 0,pitch: 0,roll: 0,}, }); window.swpcesium.addEntity.addMo…

8.1分发饼干(LC455-E)

算法&#xff1a; 局部最优&#xff1a;大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子&#xff0c;那么就应该优先满足胃口大的。局部最优就是大饼干喂给胃口大的&#xff0c;充分利用饼干尺寸喂饱一个。 全局最优&#xff1a;喂饱尽可能多的小孩。 为什么局部…

C++开发小技巧

C开发一些小技巧 积累一些能用得到的C开发小技巧。 错误码/状态码 错误码/状态码在项目很常见&#xff0c;用于提示错误类型、状态&#xff0c;通常还会附带一些相关描述。通常错误码是统一管理的&#xff0c;例如使用宏或者枚举定义。 平时我的做法 使用宏或者枚举定义错…

Redis缓存保卫战:拒绝缓存击穿的进攻【redis问题 三】

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Redis缓存保卫战&#xff1a;拒绝缓存击穿的进攻 前言缓存击穿的定义和原理为何会发生缓存击穿缓存击穿的危害防范缓存击穿结语: 前言 你是否曾经遇到过系统在高并发情况下出现严重性能问题&#xff…