机器学习基础08-回归算法矩阵分析(基于波士顿房价(Boston House Price)数据集)

news2025/1/23 4:44:49

回归算法通常涉及到使用矩阵来表示数据和模型参数。线性回归是最常见的回归算法之一,它可以用矩阵形式来表示。

考虑一个简单的线性回归模型: y = m x + b y = mx + b y=mx+b,其中 y y y 是因变量, x x x 是自变量, m m m 是斜率, b b b 是截距。将这个模型表示成矩阵形式,可以如下所示:

在这里插入图片描述
在上面的矩阵表达中,左边的矩阵表示因变量 y y y,右边的矩阵表示自变量 x x x 和一个常数项 1 1 1。而模型参数 m m m b b b 则以矩阵的形式表示。

通过最小化残差(观测值与模型预测值之间的差异)来确定最佳的参数 m m m b b b,这通常涉及到矩阵计算中的求解方法,如最小二乘法。

其他更复杂的回归算法,例如多变量线性回归、岭回归、Lasso回归等,也可以通过矩阵表示来进行推导和求解。矩阵表示使得回归算法的计算更加紧凑和易于理解。

接下来将介绍三种评估机器学习的回归算法的评估矩阵。

  1. 平均绝对误差(Mean Absolute Error,MAE)。
  2. 均方误差(Mean Squared Error,MSE)。
  3. 决定系数(R2)。

示例中采用将使用波士顿房价(Boston House Price)数据集进行实验操作

数据集下载地址

https://github.com/selva86/datasets/blob/master/BostonHousing.csv

数据集介绍:

波士顿房价预测更像是预测一个连续值,当然这也是一个非常经典的机器学习案例
在这里插入图片描述

平均绝对误差

平均绝对误差是所有单个观测值与算术平均值的偏差的绝对值的平均值。与平均误差相比,平均绝对误差由于离差被绝对值化,不会出现正负相抵消的情况,因而,平均绝对误差能更好地反映预测值误差的实际情况。

代码如下:


import pandas as pd
from sklearn.linear_model import  LinearRegression

from sklearn.model_selection import  KFold, cross_val_score

#数据预处理
path = 'D:\down\\BostonHousing.csv'
data = pd.read_csv(path)

array = data.values

X = array[:, 0:13]
Y = array[:, 13]

n_splits = 10

seed = 7

kflod = KFold(n_splits=n_splits, random_state=seed, shuffle=True)
#
model = LinearRegression()

scoring = 'neg_mean_absolute_error'

results = cross_val_score(model, X, Y, cv=kflod, scoring=scoring)

print("MSE: %.3f (%.3f)" % (results.mean(), results.std()))


执行结果如下:


MSE: -3.387 (0.667)

均方误差

均方误差是衡量平均误差的方法,可以评价数据的变化程度。均方根误差是均方误差的算术平方根。均方误差的值越小,说明用该预测模型描述实验数据的准确度越高。

代码如下:


import pandas as pd
from sklearn.linear_model import  LinearRegression

from sklearn.model_selection import  KFold, cross_val_score

#数据预处理
path = 'D:\down\\BostonHousing.csv'
data = pd.read_csv(path)

array = data.values

X = array[:, 0:13]
Y = array[:, 13]

n_splits = 10

seed = 7

kflod = KFold(n_splits=n_splits, random_state=seed, shuffle=True)
#
model = LinearRegression()

scoring = 'neg_mean_squared_error'

results = cross_val_score(model, X, Y, cv=kflod, scoring=scoring)

print("MSE: %.3f (%.3f)" % (results.mean(), results.std()))




运行结果如下:

MSE: -23.747 (11.143)

决定系数(R2)

决定系数,反映因变量的全部变异能通过回归关系被自变量解释的比例。拟合优度越大,自变量对因变量的解释程度越高,自变量引起的变动占总变动的百分比越高,观察点在回归直线附近越密集。

如R2为0.8,则表示回归关系可以解释因变量80%的变异。换句话说,如果我们能控制自变量不变,则因变量的变异程度会减少80%。
决定系数(R2)的特点:

  • 可决系数是非负的统计量。
  • 可决系数的取值范围:0≤R2≤1。
  • 可决系数是样本观测值的函数,是因随机抽样而变动的随机变量。为
    此,对可决系数的统计的可靠性也应进行检验。

代码如下:


import pandas as pd
from sklearn.linear_model import  LinearRegression

from sklearn.model_selection import  KFold, cross_val_score

#数据预处理
path = 'D:\down\\BostonHousing.csv'
data = pd.read_csv(path)

array = data.values

X = array[:, 0:13]
Y = array[:, 13]

n_splits = 10

seed = 7

kflod = KFold(n_splits=n_splits, random_state=seed, shuffle=True)
#
model = LinearRegression()

scoring = 'r2'

results = cross_val_score(model, X, Y, cv=kflod, scoring=scoring)

print("R2: %.3f (%.3f)" % (results.mean(), results.std()))




执行结果如下:

R2: 0.718 (0.099)

通常情况下,R2(也称为决定系数)是用来衡量一个回归模型的拟合优度的指标。它的取值范围在0到1之间,越接近1表示模型拟合得越好,越接近0表示模型拟合较差。

在这个结果中,“R2: 0.718” 表示模型的拟合优度为0.718,大致可以理解为模型解释了目标变量约71.8%的方差。而 “(0.099)” 则是标准误差的信息,用于表示R2的置信区间。

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

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

相关文章

Trie存储和查找字符串

一、链接 835. Trie字符串统计 二、题目 维护一个字符串集合,支持两种操作: I x 向集合中插入一个字符串 xx;Q x 询问一个字符串在集合中出现了多少次。 共有 NN 个操作,所有输入的字符串总长度不超过 105105,字符…

企业微信如何发起视频直播?

一、如何发起直播 1.【工作台->直播 】应用可发起; 【群聊—“”—群直播】可发起,发起直播时,支持预览直播视频,确认开始直播后则进入直播。 2.在直播应用或群聊工具中支持发起预约直播,可设置开始时间、直播时长…

K8s中的ConfigMap

ConfigMap作用:存储不加密数据到etcd,让Pod以变量或者Volume挂载到容器中 场景:配置文件 3.以Vlolume挂载到Pod容器中

【vue】vue的几个提效技巧:

文章目录 一、动态组件结合v-for循环使用【1】使用环境【2】实际使用【3】编译以后的效果 二、watch进阶使用【1】立即执行【2】深度监听 三、计算属性之setter四、$on(hook:生命周期)来简化window监听五、子组件hook:生命周期监听子组件的生命周期回调六、v-pre七、v-once八、…

Three.js给场景添加背景颜色,背景图,全景图

1.相关API的使用: 1 THREE.Color (用于创建和表示颜色) 2. THREE.TextureLoader(用于加载和处理图片纹理) 3. THREE.SphereGeometry(用于创建一个球体的几何体) 4. THREE.Mesh(用…

【C# 基础精讲】条件语句:if、else、switch

条件语句是C#编程中用于根据条件执行不同代码块的关键结构。C#支持if、else和switch三种常见的条件语句,它们允许根据表达式的结果决定程序的执行路径。在本文中,我们将详细介绍这三种条件语句的语法和使用方法。 if语句 if语句用于在给定条件为真&…

有奖活动 | 大咖论道:一同畅聊鸿蒙生态

点击预约直播 活动简介 即日起-2023年9月5日,参与本期活动与大咖一起聊聊鸿蒙新生态,您可以在社区写下对鸿蒙生态的畅想,也可以学习相关课程并获取证书,完成活动任务即可参与精美礼品抽奖。 活动周期 8月1日-9月5日 参与考试 Harm…

逻辑卷扩容

背景 服务器有3个逻辑卷,1个是1T,另外两个是500G,需要将500G的合并扩容为1T 操作 df -Th lsblk -f 查看磁盘大小卸载 /approot umount /approot vim /etc/fstab #注释掉/approot mount -a检查是否卸载完成 vgdisplay -v 找到approot所在…

重磅!官方Android现代开发指南发布!

重磅!官方Android现代开发指南发布! 最近查看了google官方Android开发站点,猛然发现页面做了一些改动,新增了一个专题tab页,增加了一个UI开发指南模块,该模块整合了Jetpack Compose、Jetpack架构组件及Mat…

elementui实现当前页全选+所有全选+翻页保持选中状

原文来自:https://blog.csdn.net/sumimg/article/details/121693305?spm1001.2101.3001.6650.1&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121693305-blog-127570059.235%5Ev38%5Epc_relevant_anti_t3&depth_1-utm…

使用 Python 和 Flask 构建简单的 Restful API 第 1 部分

一、说明 我将把这个系列分成 3 或 4 篇文章。在本系列的最后,您将了解使用flask构建 restful API 是多么容易。在本文中,我们将设置环境并创建将显示“Hello World”的终结点。 我假设你的电脑上安装了python 2.7和pip。我已经在python 2.7上测试了本文…

2023 华数杯全国大学生数学建模竞赛 ——C题母亲身心健康对婴儿成长的影响 完整建模+代码

目录 完整思路下载链接:这里可以获取2023华数杯全国大学生数学建模竞赛题目C 题母亲身心健康对婴儿成长的影响✅ 问题1问题1建模思路✅ 问题2问题2建模思路✅ 问题3问题3建模思路✅ 问题4问题4建模思路✅ 问题5问题5建模思路提供的数据和资料: 完整思路下…

【我们一起60天准备考研算法面试(大全)-第四十天 40/60】【并查集】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

el-table实现指定列合并

table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面包含当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性。该函数可以返回一个包含两个元素的数组,第一个元素代表rowspan,第二个元素…

ESP 32 蓝牙虚拟键盘链接笔记本电脑的键值问题

由于打算利用esp32 通过蓝牙链接电脑后实现一些特俗的键盘功能,所以就折腾了一下,折腾最耗费时间的却是键值问题,让一个20多年的老司机重新补充了知识 过程曲折就不说了,直接说结果。 我们通过网络搜索获取的键值和蓝牙模拟键盘传…

云专线的应用场景

云专线是连接用户本地数据中心和云上虚拟私有云的高安全、高速度、低延迟、稳定可靠的专属连接通道,主要有以下应用场景。 1、混合云环境:企业在私有云和公有云之间传输数据及部署应用时,使用云专线建立专用的网络连接,保证数据传…

做赴日IT工作 Java Python等语言哪个更好?

很多同学问我,做赴日IT工作Java,Python等语言哪个更好?更容易拿到内定通知书?如果你想去做赴日IT工作,无论是学Java还是Python或是其他编程语言,都是很好的选择,因为它们都有自己的的前景和应用…

如何快速完成MySQL数据的差异对比|NineData

在现代商业环境中,数据库是企业存储核心数据的重要工具,而 MySQL 作为最受欢迎的关系型数据库管理系统,广泛应用于各行各业。在容灾、数据迁移、备份恢复等场景下,为了确保两端或多端之间数据的一致性,通常需要对数据进…

【C++】多态(多态的构成条件,虚函数重写,override,final,覆盖隐藏对比)

文章目录 前言一、多态的定义及实现1.多态的构成条件: 二、虚函数1.虚函数的重写2.虚函数重写的例外(协变)3.析构函数的虚函数(基类与派生类析构函数名字不同)1.不加virtual的一般情况:2.不加virtual会出现…

Merge和Rebase的区别

Merge 和 Rebase 是 Git 中常用的两种分支整合方式,它们具有不同的工作原理和效果: Merge(合并) 合并是将两个或多个分支的提交历史合并为一个新的提交。在合并时,Git 会创建一个新的合并提交,将两个分支…