当前位置: 首页 > article >正文

【机器学习】衡量线性回归算法的指标:MSE、RMSE、MAE

衡量线性回归算法的指标:MSE、RMSE、MAE

  • 一、摘要
  • 二、回归算法的评价指标
  • 三、以波士顿房价数据集为例进行测试
  • 五、RMSE与MAE的比较

一、摘要

本文主要讲述了如何评价线性回归算法的模型质量。文中详细介绍了如何使用均方误差(MSE)和平均绝对误差(MAE)等指标来衡量模型的好坏,以及如何使用波士顿房价数据集进行实际应用。通过这些实际应用的例子,可以更好地理解如何评价线性回归算法的模型质量。此外,文中还介绍了如何将数据集分割为训练集和测试集,并使用训练集训练模型,然后使用测试集进行预测,以评估模型的预测准确性。

二、回归算法的评价指标

  1. 回归算法的评价指标包括均方误差(MSE)、均方根误差(RMSE)平均绝对误差(MAE)。

  2. 均方误差(MSE)预测值真实值之差的平方和除以样本数。

  3. 均方根误差(RMSE)是均方误差的平方根,量纲与数据一致。

  4. 平均绝对误差(MAE)是预测值与真实值之差的绝对值和除以样本数。
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

三、以波士顿房价数据集为例进行测试

  1. 波士顿房价数据集包含506个样本和13个特征,用于预测房产价格。
  2. 只取出其中的房间数量(RM)特征进行简单线性回归。
  3. 数据预处理包括删除最大值限制的点,确保数据的真实性。
  4. 在较新的 scikit - learn 版本中,波士顿房价数据集已被弃用(从 scikit - learn 1.2 版本开始),不再推荐使用,主要原因是该数据集存在种族歧视相关的属性,违反了道德和公平性原则。不过你仍然可以通过以下方式获取到该数据集:
    • 安装pandas-datareader openml

      pip install pandas-datareader openml
      
    • 引入波士顿房价数据集

      import openml
      import numpy as np
      
      # 从 openml 获取波士顿房价数据集
      dataset = openml.datasets.get_dataset(531)
      X, y, categorical_indicator, attribute_names = dataset.get_data(
          target=dataset.default_target_attribute, dataset_format='dataframe'
      )
      
      print(X.shape)
      

      执行结果:(506, 13)
      打印X的内容:
      在这里插入图片描述

    • 我们这里只用RM这个特征来计算,提取RM列数据:

      boston_datas = X.iloc[:,5]
      boston_datas.shape
      

      执行结果:(506,)

    • 利用该数据集绘制出该数据集的散点图:

      import matplotlib.pyplot as plt
      # 绘制图查看
      plt.scatter(boston_datas,y)
      plt.show()
      

      执行结果:
      在这里插入图片描述

    • 分布在50那里的一些点,可能不是真实的点,比如问卷调查中通过会设置一些上限点,而往往这些不是真实存在的额点,因此可以去除:

      # 分布在50那里的一些点,可能不是真实的点,比如问卷调查中通过会设置一些上限点,而往往这些不是真实存在的额点,因此可以去除
      y_normal = y[y < 50.0]
      x_normal = boston_datas[y < 50.0]
      
    • 再重新绘制,查看效果:
      在这里插入图片描述

    • 对波士顿房价数据集进行拆分成训练集和测试集

      import sys
      # 替换为你的 PyCharm 工程实际路径
      project_path = 'D:/PycharmProjects/pythonProject/'
      if project_path not in sys.path:
          sys.path.append(project_path)
      
      from model_selection import train_test_split
      X_train,y_train,X_test,y_test = train_test_split(np.array(x_normal),np.array(y_normal),seed=666)
      # 引入我们自己的线性回归算法
      from SimpleLinearRegressionDemo import SimpleLinearRegressionModel
      reg1 = SimpleLinearRegressionModel()
      reg1.fit(X_train,y_train)
      # 绘制出我们自己的模型折线图在散点图中的位置
      # 绘制将模型绘制出来
      plt.scatter(X_train,y_train)
      plt.plot(X_train,reg1.predict(X_train),color="r")
      plt.show()
      

      执行结果:
      在这里插入图片描述

    • 计算出预测值:

      y_predict = reg1.predict(X_test)  # 预测结果
      
    • 计算MSE值:

      # 计算mse
      mse_test = np.sum((y_predict - y_test)**2) / len(y_test)
      mse_test
      

      执行结果:24.156602134387427
      在这里插入图片描述

    • 计算RMSE值:

      from math import sqrt
      rmse_test = sqrt(mse_test)
      rmse_test
      

      执行结果:

      在这里插入图片描述

    • 计算MAE值:

      # 计算mae
      mae_test = np.sum(np.absolute(y_predict - y_test)) / len(y_test)
      mae_test
      

      执行结果:
      在这里插入图片描述

五、RMSE与MAE的比较

  1. RMSE和MAE的量纲一致,但RMSE值较大,因为它放大了较大的差距。
  2. RMSE优化的是最大的误差值,使其尽可能小。
    在这里插入图片描述

http://www.kler.cn/a/551758.html

相关文章:

  • DeepSeek的本地化部署
  • DeepSeek之高并发架构设计
  • Qt开发③Qt的信号和槽_概念+使用+自定义信号和槽+连接方式
  • 突破平面限制:低空经济激活城市土地“立体生长力”
  • Perl语言的系统运维
  • IntelliJ配置Maven
  • 黑神话悟空风格事务解读snapshot
  • Flutter CupertinoNavigationBar iOS 风格导航栏的组件
  • 【Java】泛型与集合篇(四)
  • C++ Primer 类的其他特性
  • 关于Flutter前端面试题及其答案解析
  • 【Go语言快速上手】第二部分:Go语言进阶之数据库操作
  • 【设计模式】【结构型模式】代理模式(Proxy)
  • Node.js 中 cors 依赖详解
  • MVTEC数据集笔记
  • 【C++】Basic Data Types and Operators
  • C# 适合做什么项目?全面解析 C# 的应用领域与优势
  • C语言——指针基础知识
  • 六、敏捷开发工具:项目管理工具
  • Ubuntu22.04系统安装使用Docker