Python和R均方根误差平均绝对误差算法模型

news2024/11/16 21:45:41

🎯要点

  1. 回归模型误差评估指标归一化均方根误差
  2. 生态状态指标
  3. 神经网络成本误差计算
  4. 气体排放气候算法模型
    在这里插入图片描述

Python误差指标

均方根误差和平均绝对误差

均方根偏差或均方根误差是两个密切相关且经常使用的度量值之一,用于衡量真实值或预测值与观测值或估计值之间的差异。

估计器 θ ^ \hat{\theta} θ^ 相对于估计参数 θ \theta θ 的 RMSD 定义为均方误差的平方根:
RMSD ⁡ ( θ ^ ) = MSE ⁡ ( θ ^ ) = E ( ( θ ^ − θ ) 2 ) \operatorname{RMSD}(\hat{\theta})=\sqrt{\operatorname{MSE}(\hat{\theta})}=\sqrt{ E \left((\hat{\theta}-\theta)^2\right)} RMSD(θ^)=MSE(θ^) =E((θ^θ)2)
对于无偏估计量,RMSD 是方差的平方根,称为标准差。

如果 X 1 , … , X n X_1, \ldots, X_n X1,,Xn 是具有真实平均值 x 0 x_0 x0 的总体样本,则该样本的 RMSD 为
R M S D = 1 n ∑ i = 1 n ( X i − x 0 ) 2 RMSD =\sqrt{\frac{1}{n} \sum_{i=1}^n\left(X_i-x_0\right)^2} RMSD=n1i=1n(Xix0)2
回归因变量 y t y_t yt 的时间 t t t 的预测值 y ^ t \hat{y}_t y^t 的 RMSD(观察到 T T T 次的变量)针对 T T T 不同的预测进行计算,作为偏差平方平均值:
R M S D = ∑ t = 1 T ( y t − y ^ t ) 2 T RMSD =\sqrt{\frac{\sum_{t=1}^T\left(y_t-\hat{y}_t\right)^2}{T}} RMSD=Tt=1T(yty^t)2
平均绝对误差是对表达相同现象的成对观测值之间的误差的度量。 Y Y Y X X X 的示例包括预测与观察的比较、后续时间与初始时间的比较以及一种测量技术与替代测量技术的比较。 平均绝对误差的计算方式为绝对误差之和除以样本大小:
M A E = ∑ i = 1 n ∣ y i − x i ∣ n = ∑ i = 1 n ∣ e i ∣ n MAE =\frac{\sum_{i=1}^n\left|y_i-x_i\right|}{n}=\frac{\sum_{i=1}^n\left|e_i\right|}{n} MAE=ni=1nyixi=ni=1nei
因此,它是绝对误差 ∣ e i ∣ = ∣ y i − x i ∣ \left|e_i\right|=\left|y_i-x_i\right| ei=yixi 的算术平均值,其中 y i y_i yi 是预测值, x i x_i xi 是真实值。替代的公式可以包括相对频率作为权重因子。平均绝对误差使用与测量数据相同的尺度。这被称为与尺度相关的精度测量,因此不能用于在使用不同尺度的预测值之间进行比较。平均绝对误差是时间序列分析中预测误差的常见度量,有时与更标准的平均绝对偏差定义相混淆。

两种误差示例:

import pandas as pd
from sklearn.linear_model import LinearRegression
sal_data={"年限":[2,2.2, 2.8, 4, 7, 8, 11, 12, 21, 25], 
          "薪水": [7, 8, 11, 15, 22, 29, 37 ,45.7, 49, 52]}
df=pd.DataFrame(sal_data)
df.head(3)

年限 薪水 1 2.0 7.0 2 2.2 8.0 3 2.8 11.0 \begin{array}{rrr} \hline & 年限 & 薪水 \\ \hline 1 & 2.0 & 7.0 \\ \hline 2 & 2.2 & 8.0 \\ \hline 3 & 2.8 & 11.0 \\ \hline \end{array} 123年限2.02.22.8薪水7.08.011.0

X=df[['年限]]
y=df.Salary
lm=LinearRegression()
lm.fit(X,y)
yp=lm.predict(X)
print(yp)
[12.23965934 12.64846842 13.87489568 16.32775018 22.45988645 24.50393187 30.63606813 32.68011355 51.07652234 59.25270403]

现在,将通过绘制预测(yp)和实际薪资(y)来评估我们的模型。

from bokeh.plotting import figure, show, output_file
p=figure(title="Actual vs Predicted Salary", width=450, height=300)
p.title.align = 'center'
p.circle(df.Exp, df.Salary)
p.line(df.Exp, df.Salary, legend_label='Actual Salary', line_width=3, line_alpha=0.4)
p.circle(df.Exp, yp, color="red")
p.line(df.Exp,yp, color="red",legend_label='Predicted Salary', line_width=3, line_alpha=0.4)
p.xaxis.axis_label = 'Experience'
p.yaxis.axis_label = 'Salary'
show(p)

从上图中,我们可以看到预测数据点和实际数据点之间存在差距。从统计学上讲,这种差距/差异称为残差,通常称为误差,用于 RMSE 和 MAE。Scikit-learn 提供了度量库来计算这些值。但是,我们将使用上述数学表达式来计算均方根误差和平均绝对误差。这两种方法都会给出相同的结果。

import numpy as np
print(f'Residuals: {y-yp}')
np.sqrt(np.mean(np.square(y-yp)))  
np.mean(abs(y-yp))                 

from sklearn.metrics import mean_squared_error, mean_absolute_error
np.sqrt(mean_squared_error(y, yp))
mean_absolute_error(y, yp)
6.48
5.68

这是我们的基准模型。 平均绝对误差约为 5.7。现在我们的目标是通过减少这个错误来改进这个模型。

from sklearn.preprocessing import PolynomialFeatures
pf=PolynomialFeatures()     
X_poly=pf.fit_transform(X) 
lm.fit(X_poly, y)
yp=lm.predict(X_poly)

计算我们的误差指标

p.sqrt(np.mean(np.square(y-yp)))
np.mean(abs(y-yp))
2.3974
1.6386

不同曲线均方误差

多项式拟合

import numpy, matplotlib
import matplotlib.pyplot as plt

xData = numpy.array([1.1, 2.2, 3.3, 4.4, 5.0, 6.6, 7.7, 0.0])
yData = numpy.array([1.1, 20.2, 30.3, 40.4, 50.0, 60.6, 70.7, 0.1])

polynomialOrder = 2 

fittedParameters = numpy.polyfit(xData, yData, polynomialOrder)
print('Fitted Parameters:', fittedParameters)

modelPredictions = numpy.polyval(fittedParameters, xData)
absError = modelPredictions - yData

SE = numpy.square(absError) 
MSE = numpy.mean(SE)
RMSE = numpy.sqrt(MSE)
Rsquared = 1.0 - (numpy.var(absError) / numpy.var(yData))
print('RMSE:', RMSE)
print('R-squared:', Rsquared)

print()


def ModelAndScatterPlot(graphWidth, graphHeight):
    f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)
    axes = f.add_subplot(111)

    axes.plot(xData, yData,  'D')

    xModel = numpy.linspace(min(xData), max(xData))
    yModel = numpy.polyval(fittedParameters, xModel)

    axes.plot(xModel, yModel)

    axes.set_xlabel('X Data') 
    axes.set_ylabel('Y Data') 

    plt.show()
    plt.close('all') 

graphWidth = 800
graphHeight = 600
ModelAndScatterPlot(graphWidth, graphHeight)

👉更新:亚图跨际

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

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

相关文章

HarmonyOS开发实战( Beta5.0)骨架屏实现案例实践

鸿蒙HarmonyOS开发往期必看: HarmonyOS NEXT应用开发性能实践总结 最新版!“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通) 介绍 本示例介绍通过骨架屏提升加载时用户体验的方法。骨架屏用…

无法加载用户配置文件怎么解决?

你有没有遇到过这种问题,蓝屏提示“User Profile Services服务登录失败。无法加载用户配置文件”。为什么会出现问题呢?可能的原因包括: 用户配置文件损坏:用户的配置文件可能已损坏,导致系统无法读取。 权限问题&…

linux更换阿里镜像源

第一步:进入 /etc/yum.repos.d目录下 cd /etc/yum.repos.d 第二步:编辑 CentOS-Base.repo 打开该文件 vi CentOS-Base.repo 第三步:点击键盘i,进入编辑模式 删除文件的全部内容:将阿里下面配置复制粘贴进取 [base] nam…

Ribbon (WPF)

Ribbon (WPF) 在本文中主要包含以下内容: Ribbon组件和功能应用程序菜单快速访问工具栏增强的工具提示 Ribbon是一个命令栏,它将应用程序的功能组织到应用程序窗口顶部的一系列选项卡中。Ribbon用户界面(UI)增加了特性和功能的可发现性,使用…

神经网络学习笔记——如何设计、实现并训练一个标准的前馈神经网络

1.从零设计并训练一个神经网络https://www.bilibili.com/video/BV134421U77t/?spm_id_from333.337.search-card.all.click&vd_source0b1f472915ac9cb9cdccb8658d6c2e69 一、如何设计、实现并训练一个标准的前馈神经网络,用于手写数字图像的分类,重…

如何制作Vector Vflash中加载的DLL文件--自动解锁刷写过程中27服务

案例背景: vFlash 是一种易于使用的工具,用于对一个或多个 ECU 进行刷写软件。由于方法灵活,它可以支持各种汽车原始设备制造商的不同刷写规范。它支持通过 CAN、CAN FD、FlexRay、LIN、以太网/DoIP 和以太网/SoAd 对 ECU 进行刷写。 vFlas…

SpringSecurity原理解析(六):SecurityConfigurer 解析

1、SecurityConfigurer SecurityConfigurer 在 Spring Security 中是一个非常重要的接口,观察HttpSecurity 中的很多 方法可以发现,SpringSecurity 中的每一个过滤器都是通过 xxxConfigurer 来进行配置的,而 这些 xxxConfigurer 其实都是 Sec…

针对Docker容器的可视化管理工具—DockerUI

目录 ⛳️推荐 前言 1. 安装部署DockerUI 2. 安装cpolar内网穿透 3. 配置DockerUI公网访问地址 4. 公网远程访问DockerUI 5. 固定DockerUI公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下…

GBI(生成式商业智能)实际业务生产落地运用上的探索和实践

前言 最近在探索如何发展AI在业务上的驱动力时了解到了生成式商业智能这一概念,同时本人也在探索ChatBI这一技术的实际落地运用,其实二者几乎在实现效果层面是一个意思,GBI(Generative Business Intelligence)是偏向业务方面,而C…

[000-01-008].第05节:OpenFeign高级特性-超时控制

我的后端学习大纲 SpringCloud学习大纲 1.1.OpenFeign超时的情况: 在Spring Cloud微服务架构中,大部分公司都是利用OpenFeign进行服务间的调用,而比较简单的业务使用默认配置是不会有多大问题的,但是如果是业务比较复杂&#xff…

UiBot教程:实现复杂流程图的高效方法

在自动化测试和RPA(机器人流程自动化)领域,使用UiBot绘制复杂流程图是日常工作中常见的挑战之一。如何在繁杂的逻辑中保持高效?如何实现复杂流程的自动化设计而不迷失于其中?这是许多测试工程师和自动化开发者所面临的…

区块链之变:揭秘Web3对互联网的改变

传统游戏中,玩家的虚拟资产(如角色、装备)通常由游戏公司控制,玩家无法真正拥有这些资产或进行交易。而在区块链游戏中,虚拟资产通过去中心化技术记录在区块链上,玩家对其拥有完全的所有权,并能…

Loki 分布式日志中心服务

目录 Loki 是什么 Loki 配置文件介绍 Loki 安装 Promtail 配置文件介绍 Promtail 安装 Loki 整合 Grafana Loki 是什么 Loki 是一个专为日志聚合和查询设计的开源分布式日志管理系统,由 Grafana Labs 开发。它与 Prometheus 类似,但用于处理日志&a…

决策树实战

文章目录 一、入门基础案例二、基于sklearn的决策树模型2.1sklearn中的决策树实现2.2分类型决策树:DecisionTreeClassifier2.2.1重要参数2.2.2重要属性与接口2.2.3基本案例:wine葡萄酒数据集 2.3回归型决策树:DecisionTreeRegressor2.3.1重要…

大学选修课无人机航拍技术与技巧怎么样?

在当今这个视觉盛行的时代,无人机航拍技术以其独特的视角和非凡的创意能力,正逐步成为影视制作、新闻报道、地理测绘、环境监测及个人记录生活等领域不可或缺的工具。为此,本大学特设《无人机航拍技术与技巧》选修课,旨在通过系统…

Linux数据相关-第3个服务-实时同步sersync

1、实时同步 背景: 之前我们通过rsync 定时任务实现定时备份/同步对于NFS我们需要进行实时同步 选择 分布式存储.。使用实时同步服务NFS。选择公有云对象存储,七牛存储,腾讯存储COS 选择:nfs实时同步工具 inotify(bug需要书…

3D点云目标检测数据集标注工具 保姆级教程——CVAT (附json转kitti代码)

前言: 笔者尝试过很多3D标注软件都遇到很多问题,例如CloudCompare不适合做3D目标检测的数据集而且分割地面的时很繁琐;labelCloud没有三视图,视角难以调整标得不够精确;SUSTechPOINTS换帧麻烦、输出时存储在docker里面…

每日OJ_牛客_数字统计(简单模拟)

目录 牛客_数字统计(简单模拟) 解析代码 牛客_数字统计(简单模拟) [NOIP2010]数字统计_牛客题霸_牛客网 描述 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。 比如给定范围[2, 22],数字2在数…

sipp模拟uas发送reinvite

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 在更新了sipp模拟update的配置方案之后,我希望对比一下fs对update和reinvite的处理流程。 本文档记录sipp的配置方案,该方案中包含了update和reinvite的信令。 环境 CentOS 7.9 freeswitch 1…

Linux入门攻坚——32、Mini Linux制作

制作一个mini linux,需要对linux的启动流程很熟悉,这里又一次学习Linux的启动过程。 启动流程:CentOS 6 / 5: POST -->BootSequence(BIOS) --> BootLoader --> kernel (ramdisk) --> rootfs --> /sbin/init …