机器学习|线性回归三大评价指标实现『MAE, MSE, MAPE』(Python语言描述)
原文地址 ?传送门
对于回归预测结果,通常会有平均绝对误差、平均绝对百分比误差、均方误差等多个指标进行评价。这里,我们先介绍最常用的3个:
平均绝对误差(MAE)
就是绝对误差的平均值,它的计算公式如下:
M
A
E
(
y
,
y
^
)
=
1
n
(
∑
i
=
1
n
∣
y
−
y
^
∣
)
MAE(y,\hat{y}) = \frac{1}{n}(\sum_{i = 1}^{n}\left | y - \hat{y} \right |)
MAE(y,y^)=n1(i=1∑n∣y−y^∣)
其中,
y
i
y_{i}
yi 表示真实值,
y
^
i
\hat y_{i}
y^i 表示预测值,
n
n
n 则表示值的个数。MAE 的值越小,说明预测模型拥有更好的精确度。我们可以尝试使用 Python 实现 MAE 计算函数:
import numpy as np
def mae_value(y_true, y_pred):
"""
参数:
y_true -- 测试集目标真实值
y_pred -- 测试集目标预测值
返回:
mae -- MAE 评价指标
"""
n = len(y_true)
mae = sum(np.abs(y_true - y_pred))/n
return mae
均方误差(MSE)
它表示误差的平方的期望值,它的计算公式如下:
M
S
E
(
y
,
y
^
)
=
1
n
∑
i
=
1
n
(
y
i
−
y
^
)
2
{MSE}(y, \hat{y} ) = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y})^{2}
MSE(y,y^)=n1i=1∑n(yi−y^)2
其中,
y
i
y_{i}
yi 表示真实值,
y
^
i
\hat y_{i}
y^i 表示预测值,
n
n
n 则表示值的个数。MSE 的值越小,说明预测模型拥有更好的精确度。同样,我们可以尝试使用 Python 实现 MSE 计算函数:
import numpy as np
def mse_value(y_true, y_pred):
"""
参数:
y_true -- 测试集目标真实值
y_pred -- 测试集目标预测值
返回:
mse -- MSE 评价指标
"""
n = len(y_true)
mse = sum(np.square(y_true - y_pred))/n
return mse
平均绝对百分比误差
M
A
P
E
MAPE
MAPE。
M
A
P
E
MAPE
MAPE 是
M
A
D
MAD
MAD 的变形,它是一个百分比值,因此比其他统计量更容易理解。例如,如果
M
A
P
E
MAPE
MAPE 为
5
5
5,则表示预测结果较真实结果平均偏离
5
5%
5。
M
A
P
E
MAPE
MAPE 的计算公式如下:
M
A
P
E
(
y
,
y
^
)
=
∑
i
=
1
n
∣
y
i
−
y
^
i
y
i
∣
n
×
100
%
{MAPE}(y, \hat{y} ) = \frac{\sum_{i=1}^{n}{|\frac{y_{i}-\hat y_{i}}{y_{i}}|}}{n} \times 100{\%}
MAPE(y,y^)=n∑i=1n∣yiyi−y^i∣×100%
其中,
y
i
y_{i}
yi 表示真实值,
y
^
i
\hat y_{i}
y^i 表示预测值,
n
n
n 则表示值的个数。
M
A
P
E
MAPE
MAPE 的值越小,说明预测模型拥有更好的精确度。使用 Python 实现 MSE 计算函数:
import numpy as np
def mape(y_true, y_pred):
"""
参数:
y_true -- 测试集目标真实值
y_pred -- 测试集目标预测值
返回:
mape -- MAPE 评价指标
"""
n = len(y_true)
mape = sum(np.abs((y_true - y_pred)/y_true))/n*100
return mape
参考:
- 方差(variance)、标准差(Standard Deviation)、均方差、均方根值(RMS)、均方误差(MSE)、均方根误差(RMSE)
- Mean squared error-Wikipedia
机器学习|线性回归三大评价指标实现『MAE, MSE, MAPE』(Python语言描述)的更多相关文章
- 机器学习|线性回归算法详解 (Python 语言描述)
原文地址 ? 传送门 线性回归 线性回归是一种较为简单,但十分重要的机器学习方法.掌握线性的原理及求解方法,是深入了解线性回归的基本要求.除此之外,线性回归也是监督学习回归部分的基石. 线性回归介绍 ...
- 『无为则无心』Python序列 — 17、Python字符串操作常用API
目录 1.字符串的查找 @1.find()方法 @2.index()方法 @3.rfind()和rindex()方法 @4.count()方法 2.字符串的修改 @1.replace()方法 @2.s ...
- 『无为则无心』Python基础 — 2、编译型语言和解释型语言的区别
目录 1.什么是计算机语言 2.高级语言中的编译型语言和解释型语言 (1)编译型语言 (2)解释型语言 (3)编译型语言和解释型语言执行流程 3.知识扩展: 4.关于Python 1.什么是计算机语言 ...
- 『无为则无心』Python基础 — 3、搭建Python开发环境
目录 1.Python开发环境介绍 2.Python解释器的分类 3.下载Python解释器 4.安装Python解释器 5.Python解释器验证 1.Python开发环境介绍 所谓"工欲 ...
- 『无为则无心』Python基础 — 4、Python代码常用调试工具
目录 1.Python的交互模式 2.IDLE工具使用说明 3.Sublime3工具的安装与配置 (1)Sublime3的安装 (2)Sublime3的配置 4.使用Sublime编写并调试Pytho ...
- 『无为则无心』Python基础 — 5、Python开发工具的安装与使用
目录 1.Pycharm下载 2.Pycharm安装 3.PyCharm界面介绍 4.基本使用 (1)新建Python项目 (2)编写Python代码 (3)执行代码查看结果 (4)设置PyCharm ...
- 『无为则无心』Python基础 — 6、Python的注释
目录 1.注释的作用 2.注释的分类 单行注释 多行注释 3.注释的注意事项 4.什么时候需要使用注释 5.总结 提示:完成了前面的准备工作,之后的文章开始介绍Python的基本语法了. Python ...
- 『无为则无心』Python基础 — 7、Python的变量
目录 1.变量的定义 2.Python变量说明 3.Python中定义变量 (1)定义语法 (2)标识符定义规则 (3)内置关键字 (4)标识符命名习惯 4.使用变量 1.变量的定义 程序中,数据都是 ...
- 『无为则无心』Python基础 — 8、Python中的数据类型(数值、布尔、字符串)
目录 1.数据类型介绍 2.数值型(Number) 3.布尔型(bool) 4.None(空值) 5.常量 6.字符串(String) 1.数据类型介绍 (1)什么是数据类型 在生活中,我们日常使用的 ...
随机推荐
- 编译工具grdle部署
目录 一.简介 二.部署 三.测试 一.简介 Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具.在github上,gradle项目很多 ...
- [BUUCTF]REVERSE——[HDCTF2019]Maze
[HDCTF2019]Maze 附件 步骤: 例行检查,32位程序,upx壳 upx脱壳儿后扔进32位ida,首先检索程序里的字符串 有类似迷宫的字符串,下面也有有关flag的提示字符串,但是没法进行 ...
- UVA10079 Pizza Cutting 题解
Content 求用 \(n\) 条直线最多能将平面分成多少块区域. 多组输入,以一个负数结束. 数据范围:\(0\leqslant n\leqslant 2.1\times 10^8\). Solu ...
- CF628B New Skateboard 题解
Content 有一个长度为 \(n\) 的数字串 \(s\),求出有多少个子串能够被 \(4\) 整除. 数据范围:\(1\leqslant n\leqslant 3\times 10^5\). S ...
- MLNX网卡驱动安装
安装/升级MLNX驱动 1. 安装准备 驱动下载地址:https://www.mellanox.com/products/ethernet-drivers/linux/mlnx_en 选择和系统版本匹 ...
- 5款超实用的.NET性能分析工具
虽然.NET框架号称永远不会发生内存泄漏,原因是引入了内存回收机制.但在实际应用中,往往我们分配了对象但没有释放指向该对象的引用,导致对象永远无法释放.最常见的情况就是给对象添加了事件处理函数,但当不 ...
- JAVA获得websocket请求路径前缀
/** * 获得websocket请求路径前缀(线程安全 速度相对慢) * @param request * @return */ public static String getWebsocketU ...
- Linux(centos)创建用户并分配权限
创建名为 elas的用户 adduser elas 初始化elas的密码 passwd elas 显示 新的 密码: 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新. 进行授权 个 ...
- layui(layer)的loading方法显示位置不居中
要在layer.load之前使用layer.ready方法 layui.use('layer', function () { layer.ready(function(){ index = layer ...
- 玩转 ByteBuffer
为什么要讲 Buffer 首先为什么一个小小的 Buffer 我们需要单独拎出来聊?或者说,Buffer 具体是在哪些地方被用到的呢? 例如,我们从磁盘上读取一个文件,并不是直接就从磁盘加载到内存中, ...