用Python计算点估计预测评价指标(误差指标RMSE、MSE、MAE、MAPE) ,画图展示

news2025/8/11 18:34:17

机器学习的回归问题常用RMSE,MSE, MAE,MAPE等评价指标,还有拟合优度R2。由于每次预测出来的预测值再去和原始数据进行误差评价指标的计算很麻烦,所以这里就直接给出他们五个指标的计算函数。把每次预测出来的值和真实值输入这个函数就可以得到上面这些指标,很方便。然后计算出来放一起还可以画柱状图

先放计算公式:

mse就是rmse的平方,公式是差不多的。


 Python计算代码:

import numpy as np
import pandas as pd
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import mean_squared_error,r2_score

def evaluation(y_test, y_predict):
    mae = mean_absolute_error(y_test, y_predict)
    mse = mean_squared_error(y_test, y_predict)
    rmse = np.sqrt(mean_squared_error(y_test, y_predict))
    mape=(abs(y_predict -y_test)/ y_test).mean()
    r_2=r2_score(y_test, y_predict)
    return mae, rmse, mape,r_2  #mse

 这个函数就两个参数,一个测试集的真实值,一个预测的预测值,放入就可以计算上面的各种指标了。函数的返回值就是他们的mae,rmse,mape,R2的值。


画图展示

df_allmodel用来装不同模型的预测结果,然后计算四个误差指标。

我这里采用了四个不同的神经网络模型对比,DBN,RNN,CNN,MLP四个模型,df_allmodel每一列就是不同模型的预测结果,行就是不同的样本。

新建df_eval评价数据框,然后循环每一个模型的预测结果,用上面定义的函数计算评价指标,储存到df_eval里面。

df_eval=pd.DataFrame(columns=['MAE','RMSE','MAPE','R2'])
for i,col in enumerate(df_allmodel.columns):
    score=list(evaluation(y_test,np.array(df_allmodel[col])))
    df_eval.loc[col,:]=score
df_eval

 然后对df_eval进行画图:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams ['font.sans-serif'] ='SimHei'               #显示中文
plt.rcParams ['axes.unicode_minus']=False               #显示负号


bar_width = 0.4
fig, ax = plt.subplots(2,2,figsize=(8,5))
for i,col in enumerate(df_eval.columns):
    n=int(str('22')+str(i+1))
    plt.subplot(n)
    df_col=df_eval[col]
    m =np.arange(len(df_col))
    
    #hatch=['-','/','+','x'],
    plt.bar(x=m,height=df_col.to_numpy(),width=bar_width,color=colors2)
    
    #plt.xlabel('Methods',fontsize=12)
    names=df_col.index
    plt.xticks(range(0, 4),names,fontsize=14)
    
    if col=='R2':
        plt.ylabel(r'$R^{2}$',fontsize=14)
    else:
        plt.ylabel(col,fontsize=14)
plt.tight_layout()
plt.savefig('柱状图.jpg',dpi=512)
plt.show()

这里画的是2*2的多子图,每一个小子图就是一个误差指标,x轴就是不同模型,y轴就是误差指标的数值大小。

就画出来了四个模型在四个误差指标上对比,还是很直观方便。


PS:有关于区间估计的评价指标的计算 ,可以看我上篇文章:

(Pandas数据分析33——数据多条件筛选(点估计和区间估计评价指标)_

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

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

相关文章

对话钱江机器人丨国产化破风,谁动了工业机器人厂商的“奶酪”?

工业机器人的研发、制造和应用是衡量一国科技创新和高端制造水平的重要标志,是“制造业皇冠顶端的明珠”,亦是硬科技技术行列中的“课代表”。 《中国机器人产业发展报告(2022年)》预计,2022年全球机器人市场规模将达…

抗心血管疾病、内分泌信号通路等小分子化合物库介绍

心血管疾病 不少人认为经常熬夜,工作压力大是猝死的主要原因,其实猝死的根本原因是心血管突发病。 心血管疾病是心脏和血管疾病的统称,主要包括冠心病,脑血管疾病,周围末梢动脉血管疾病,先天性心脏病及深…

快速排序图文详细教程

文章目录 文章目录文章目录[toc]一、快排思路二、相关代码小细节改进版本一版本二一、快排思路 还记得之前的荷兰国旗问题吗(快排的前身:详解荷兰国旗问题),快排其实就是借助这种思路,在每次遍历中以第一个数作为目标…

[模型部署]:深度学习模型部署(已更Pytorch篇)

模型部署一、Pytorch 模型部署1. 模型保存1.1. 使用torch.save()保存1.2. 使用[torch.jit.save()](https://pytorch.org/docs/stable/generated/torch.jit.save.html)保存2. 模型部署 or 模型编译2.1. TorchScript部署2.2. TensorRT部署2.3. TVM部署2.4. Laser部署模型部署 一…

STM32 GD32 标准库移植SFUD

本次移植是在官方源码的基础上进行移植的 本次介绍的两个软件包SFUD/FAL都与FLASH有关,并且都可以独立使用或者结合在一起使用,两个软件包都对操作系统无依赖,可以使用裸机移植,也很方便移植到各种系统。 这两个软件包的作者都是…

Java JDK安装与配置

Java JDK安装与配置 JDK下载 下载地址:JDK下载 最上方是JDK最新版,往下滑将看到最常用的稳定版本:JDK8 选择版本 勾上选框,点击下载 登录Oracle账号: 没有账号可注册或网上寻找账号,建议自行注册登录成功…

我应该是懂居家办公的吧?

近期的广州疫情十分严峻,海珠区,公司那边的地铁停了。 于是成为了一个【天选居家人】。 天河这边还好一点,起码可以下楼做核酸,买菜,拿快递,出入凭24h核酸。 有人说:以前在公司工作总盼望居家办…

Win10配置IIS与 C#/.net项目的发布与IIS部署

1、IIS配置安装 已经安装IIS的可以跳过 在左下搜索框搜索 “启用或关闭windows功能” 点开,勾选如下图所示勾选框后,点击“确定”后进行安装。 安装完成。在搜索框搜索输入IIS,如图,打开IIS应用。 打开后如图所示 2、在VS中打包…

详解c++----类和对象(二)

目录标题前言为什么会有默认成员函数有哪些默认成员函数构造函数和析构函数为什么会有这两个函数构造函数的简介构造函数的调用构造函数的重载构造函数的缺省参数析构函数的简介析构函数的特性析构函数的例子重回构造函数第一点第二点究竟什么是默认构造函数默认构造函数所带来…

Wnt 信号通路

Wnt 信号通路是一种古老的、进化上保守的通路。其中,Wnt 蛋白属于分泌的糖蛋白,可与卷曲蛋白 (Frizzled) 家族的受体,如与脂蛋白受体相关的蛋白 5/6 (LRP5/6),Ror2 和 Ryk 相互作用,导致各种细胞内信号传导级联激活&am…

【创建小程序】微信如何创建小程序?

说起我们日常所使用的微信,大家一定也会联想到微信小程序。微信小程序跟微信一样拥有着很高的使用频率,而且微信小程序也成为了很多企业商家除了网站APP以外的必备轻应用。那么在微信如何创建小程序呢?下面给大家简单说说。 一、准备好小程序…

如何优雅地校验后端接口数据,不做前端背锅侠

背景 最近新接手了一批项目,还没来得及接新需求,一大堆bug就接踵而至,仔细一看,应该返回数组的字段返回了 null,或者没有返回,甚至返回了字符串 "null"??? 这…

【BOOST C++ 13 并行编程】(5) Boost.Atomic

一、说明 Boost.Atomic 提供类 boost::atomic,可用于创建原子变量。它们被称为原子变量,因为所有访问都是原子的。 Boost.Atomic 用于多线程程序,当在一个线程中访问变量不应被访问相同变量的另一个线程中断时。如果没有 boost::atomic&#…

Windows取证——隐藏用户

前言: 实验环境:Windows server 2019 实验目的:了解Windows隐藏账户的工作原理,有针对性地对隐藏账户进行应急处置。 目录 前言: 一、隐藏用户的建立 二、查看隐藏用户 法一:计算机管理本地用户和组查看…

Java集合(复习)

Java中的集合 Java中的集合概述Collection 接口中常用的方法Iterator 迭代器forEach 增强for循环Collection子接口之一:List 接口ArrayList 源码分析LinkedLIst 源码分析Vector 源码分析List 接口常用的方法Collection 子接口之二: Set 接口HashSetLinke…

OnlineJudge平台(负载均衡)

文章目录1.所用技术与开发环境2.项目宏观结构3.compiler服务设计4. 基于MVC结构的oj服务设计5. 前端页面设计6 安装指南升级 gcc安装 jsoncpp安装 cpp-httplib安装boost库安装与测试 ctemplate使用Ace在线编辑器(直接复制粘贴即可)在线OJ样例题目MySQL 建…

SVN的基本使用

文章目录1.什么是SVN?2.SVN跟Git比,有什么优势?3.SVN的主要应用4.SVN仓库(SVN的服务端)5.SVN客户端6.SVN的基本操作6.1 代码检出 checkout6.2添加文件 add6.3提交代码 commit6.4 更新代码 update7.撤销和恢复7.1 撤销本地修改7.2 撤销已提交内容7.3 恢复…

第一章《初学者问题大集合》第5节:Java开发环境的搭建

上一小节阐述了Java程序运行的过程和原理,但那都一些理论,并没有真正的实战操作。此时读者们肯定想知道:从哪里才能搞到一个编译器和那个传说中能让Java程序得以运行的虚拟机呢?有了虚拟机,又怎样才能让Java程序在电脑…

[附源码]计算机毕业设计JAVA广州中小学学校信息管理系统

[附源码]计算机毕业设计JAVA广州中小学学校信息管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: S…

ASEMI代理艾赛斯IXFK32N100P,车规级MOS管IXFK32N100P

编辑-Z 艾赛斯车规级MOS管IXFK32N100P参数: 型号:IXFK32N100P 漏极-源极电压(VDS):1000V 连续漏电流(ID):32A 功耗(PD):960W 工作结温度&am…