Python多元线性回归预测模型实验完整版

2023-11-12

多元线性回归预测模型

实验目的

通过多元线性回归预测模型,掌握预测模型的建立和应用方法,了解线性回归模型的基本原理

实验内容

多元线性回归预测模型

实验步骤和过程

(1)第一步:学习多元线性回归预测模型相关知识。

一元线性回归模型反映的是单个自变量对因变量的影响,然而实际情况中,影响因变量的自变量往往不止一个,从而需要将一元线性回归模型扩展到多元线性回归模型。
如果构建多元线性回归模型的数据集包含n个观测、p+1个变量(其中p个自变量和1个因变量),则这些数据可以写成下方的矩阵形式:

请添加图片描述

其中,xij代表第个i行的第j个变量值。如果按照一元线性回归模型的逻辑,那么多元线性回归模型应该就是因变量y与自变量X的线性组合,即可以将多元线性回归模型表示成:
y=β0+β1x1+β2x2+…+βpxn+ε
根据线性代数的知识,可以将上式表示成y=Xβ+ε。
其中,
β为p×1的一维向量,代表了多元线性回归模型的偏回归系数;
ε为n×1的一维向量,代表了模型拟合后每一个样本的误差项。

回归模型的参数求解

在多元线性回归模型所涉及的数据中,因变量y是一维向量,而自变量X为二维矩阵,所以对于参数的求解不像一元线性回归模型那样简单,但求解的思路是完全一致的。为了使读者掌握多元线性回归模型参数的求解过程,这里把详细的推导步骤罗列到下方:

请添加图片描述

根据线性代数的知识,可以将向量的平方和公式转换为向量的内积,接下来需要对该式进行平方项的展现。

请添加图片描述

请添加图片描述

经过如上四步的推导,最终可以得到偏回归系数β与自变量X、因变量y的数学关系。这个求解过程也被成为“最小二乘法”。基于已知的偏回归系数β就可以构造多元线性回归模型。前文也提到,构建模型的最终目的是为了预测,即根据其他已知的自变量X的值预测未知的因变量y的值。

回归模型的预测

如果已经得知某个多元线性回归模型y=β0+β1x1+β2x2+…+βpxn,当有其他新的自变量值时,就可以将这些值带入如上的公式中,最终得到未知的y值。在Python中,实现线性回归模型的预测可以使用predict“方法”,关于该“方法”的参数含义如下:

predict(exog=None, transform=True)

exog:指定用于预测的其他自变量的值。

transform:bool类型参数,预测时是否将原始数据按照模型表达式进行转换,默认为True。

多元线性回归模型是一种统计分析方法,用于研究多个自变量对一个因变量的影响。它是线性回归模型的一种扩展,可以用于解决多个自变量对因变量的影响问题。 在多元线性回归模型中,我们假设因变量 y y y k k k 个自变量 x 1 , x 2 , . . . , x k x_1, x_2, ..., x_k x1,x2,...,xk 之间存在线性关系,即: y = β 0 + β 1 x 1 + β 2 x 2 + . . . + β k x k + ϵ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_k x_k + \epsilon y=β0+β1x1+β2x2+...+βkxk+ϵ 其中 β 0 , β 1 , β 2 , . . . , β k \beta_0, \beta_1, \beta_2, ..., \beta_k β0,β1,β2,...,βk 是模型的系数, ϵ \epsilon ϵ 是随机误差项。我们的目标是通过样本数据来估计模型的系数,从而建立预测模型。 多元线性回归模型的建立可以分为以下几个步骤:

收集数据:收集 n n n 组样本数据,每组数据包括因变量 y y y k k k 个自变量 x 1 , x 2 , . . . , x k x_1, x_2, ..., x_k x1,x2,...,xk 的取值。

数据预处理:对数据进行清洗、缺失值处理、异常值处理等预处理工作,以保证数据的质量。

模型建立:利用最小二乘法等方法,对样本数据进行拟合,求出模型的系数 β 0 , β 1 , β 2 , . . . , β k \beta_0, \beta_1, \beta_2, ..., \beta_k β0,β1,β2,...,βk

模型评估:通过各种统计指标,如 R 2 R^2 R2、均方误差等,对模型进行评估,判断模型的拟合效果。

模型应用:利用建立好的模型进行预测或分析,得出实际应用价值。 总之,多元线性回归模型是一种重要的统计分析方法,可以用于解决多个自变量对因变量的影响问题,是各种实际问题中常用的建模方法之一。

(2)第二步:数据准备,数据来源于课本例题。

请添加图片描述

序号 x1 年份 水路客运量y 市人口数x1 城市GDPx2
1 1991 342 520 211.9
2 1992 466 522.9 244.6
3 1993 492 527.1 325.1
4 1994 483 531.5 528.1
5 1995 530 534.7 645.1
6 1996 553 537.4 733.1
7 1997 581.5 540.4 829.7
8 1998 634.8 543.2 926.3
9 1999 656.1 545.3 1003.1
10 2000 664.4 551.5 1110.8
11 2001 688.3 554.6 1235.6
12 2002 684.4 557.93 1406

(3)第三步:使用 Python 编写实验代码并做图。

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 读取Excel文件
data = pd.read_excel('E:\\File\\class\\数据挖掘\\test2.xlsx')
X = data[['市人口数x1', '城市GDPx2']]
y = data['水路客运量y']
# 训练模型
model = LinearRegression()
model.fit(X, y)
# 预测未来水路客运量
x_new = [[560, 1546]]
y_pred = model.predict(x_new)
print("预测未来水路客运量为:", y_pred[0])
print(X)
print(X['市人口数x1'])
# 绘制图像
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
# ax.scatter(X[:, 0], X[:, 1], y)
ax.scatter(X['市人口数x1'], X['城市GDPx2'], y)
# x1, x2 = np.meshgrid(X[:, 0], X[:, 1])
x1, x2 = np.meshgrid(X['市人口数x1'], X['城市GDPx2'])
y_pred = model.predict(np.array([x1.flatten(), x2.flatten()]).T).reshape(x1.shape)
ax.plot_surface(x1, x2, y_pred, alpha=0.5, cmap='viridis')
ax.set_xlabel('市人口数x1')
ax.set_ylabel('城市GDPx2')
ax.set_zlabel('水路客运量y')
plt.title('多元线性回归预测模型案例')
plt.show()

代码解释:

上面代码使用了Python中的pandas、numpy、scikit-learn和matplotlib库,实现了一个多元线性回归预测模型的案例。代码的主要功能是读取一个Excel文件中的数据,利用多元线性回归模型对数据进行拟合和预测,最后可视化结果。 具体代码解释如下:

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

首先导入所需的库,包括pandas、numpy、scikit-learn和matplotlib库。其中,LinearRegression类用于实现多元线性回归模型,Axes3D类用于绘制三维图形。

#读取Excel文件
data = pd.read_excel(‘E:\File\class\数据挖掘\test2.xlsx’)

利用pandas库中的read_excel方法读取Excel文件中的数据。

X = data[[‘市人口数x1’, ‘城市GDPx2’]]
y = data[‘水路客运量y’]

将读取到的数据按照自变量和因变量的关系进行划分,X表示自变量,y表示因变量。

#训练模型
model = LinearRegression()
model.fit(X, y)

利用scikit-learn库中的LinearRegression类进行多元线性回归模型的训练,fit方法用于拟合数据。

#预测未来水路客运量
x_new = [[560, 1546]]
y_pred = model.predict(x_new)
print(“预测未来水路客运量为:”, y_pred[0])

利用训练好的模型对新的数据进行预测,predict方法用于预测。输出预测结果。

print(X)
print(X[‘市人口数x1’])

输出自变量的数据。

#绘制图像
fig = plt.figure()
ax = fig.add_subplot(projection=‘3d’)
#ax.scatter(X[:, 0], X[:, 1], y)
ax.scatter(X[‘市人口数x1’], X[‘城市GDPx2’], y)
#x1, x2 = np.meshgrid(X[:, 0], X[:, 1])
x1, x2 = np.meshgrid(X[‘市人口数x1’], X[‘城市GDPx2’])
y_pred = model.predict(np.array([x1.flatten(), x2.flatten()]).T).reshape(x1.shape)
ax.plot_surface(x1, x2, y_pred, alpha=0.5, cmap=‘viridis’)
ax.set_xlabel(‘市人口数x1’)
ax.set_ylabel(‘城市GDPx2’)
ax.set_zlabel(‘水路客运量y’)
plt.title(‘多元线性回归预测模型案例’)
plt.show()

这一部分是绘制一个三维图形,其中fig是一个Figure对象,ax是一个Axes3D对象。首先用scatter方法绘制出原始数据点的三维散点图,然后用meshgrid方法将自变量的取值进行网格化,用predict方法预测出因变量的取值,最后用plot_surface方法绘制出三维图形。常用的参数有:alpha表示透明度,cmap表示颜色映射,set_xlabel、set_ylabel和set_zlabel分别表示三个坐标轴的标签,title表示图形的标题。最后调用show方法显示图形。

(4)第四步:实验结果。
绘图和预测当市人口数x1为560以及城市GDPx2为1546时的水路客运量y。

请添加图片描述

请添加图片描述

请添加图片描述

这里的预测结果为:711.2940429652463

实验总结

通过本次实验,我学习了多元线性回归预测模型的基本原理和建立方法,了解了如何使用Python编程实现预测模型。同时,我们也使用水路客运量预测实例,对线性回归模型进行了实际应用和分析。在实验中,我掌握了数据预处理、模型训练和结果评估等关键技术,对于今后的数据分析和预测工作将有很大的帮助。同时在这个过程之中也出现了一些问题,但通过查阅相关资料最终这些问题都得以解决。在这个过程中我的动手实践能力的到提升,也让我明白了实际动手操作的重要性,在实际操作中可以发现很多平时发现不了的问题,通过实践最终都得以解决。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python多元线性回归预测模型实验完整版 的相关文章

随机推荐

  • u盘刷新系统

    1 百度u盘制作将u盘进行刷成系统盘 点击添加系统 确认 关掉即可 到这里就制作完成了 u盘里也有系统了 下一步就是进入电脑的 bios 一般是f8 或者f2 或者esc 看你是什么电脑自己手机百度一下 当进入u盘系统时候会发现一键刷机工具
  • 【计算机网络】HTTP协议详解(八):HTTP网关

    HTTP网关 文章目录 HTTP网关 一 网关 Gateway 二 网关的分类 1 HTTP 服务器端网关 2 HTTP 客户端网关 3 HTTP HTTPS 服务器端安全网关 4 HTTPS HTTP 客户端安全加速器网关 5 资源网关
  • sshpass

    sshpass 安装 sshpass Linux 软件工具安装 源码安装 测试 sshpass 在使用 ssh scp 等命令进行远程操作的时候 必须手动输入密码 这就为自动化的执行造成困扰 sshpass 可以在命令行直接使用密码来进行远
  • Android Studio 常用快捷按键

    大小写转换 Cmd Shift U Ctrl Shift U 注释代码 Cmd Ctrl 注释代码 Cmd Option Ctrl Alt 格式化代码 Cmd Option L Ctrl Alt L 清除无效包引用 Option Contr
  • Python实现Mean Shift算法

    声明 代码的运行环境为Python3 Python3与Python2在一些细节上会有所不同 希望广大读者注意 本博客以代码为主 代码中会有详细的注释 相关文章将会发布在我的个人博客专栏 Python从入门到深度学习 欢迎大家关注 在K Me
  • 【PTA】 7-1 矩阵链相乘问题 (20 分)

    输入 5 30 35 15 5 10 20 输出 11875 代码 include
  • Python Numpy数组保存

    Numpy提供了几种数据保存的方法 以3 4数组a为例 1 a tofile filename bin 这种方法只能保存为二进制文件 且不能保存当前数据的行列信息 文件后缀不一定非要是bin 也可以为txt 但不影响保存格式 都是二进制 这
  • websocket没准备好如何解决_websocket没准备好点确定继续怎么解决,这事android? 爱问知识人...

    请采纳点赞 你可以把WebSocket看成是HTTP协议为了支持长连接所打的一个大补丁 它和HTTP有一些共性 是为了解决HTTP本身无法解决的某些问题而做出的一个改良设计 在以前HTTP协议中所谓的keep aliveconnection
  • RE整改实例——接口缝隙引起的EMC问题整改

    前言 背景 CT某一产品中的控制电路 在RE测试时候750MHz频点超过3dB 整改方法 经过近场测量分析 辐射来源于接口缝隙 经公式计算 750MHz频率引起的对应波长 0 4m 在EMC允许缝隙的长度选择中建议小于二十分之一波长 则 2
  • 只等你来!OpenAtom XuperChain 开发者夏季论坛来啦

    OpenAtom XuperChain 开源两周年之际 我们将于 6 月 25 日在上海浦东新区举办 OpenAtom XuperChain 开发者夏季论坛 特邀研究机构 企业等开源生态合作伙伴 共同探讨区块链技术发展路径和落地方向 本次论
  • solr6.6.0部署到tomcat

    准备工作 solr 6 6 0 apache tomcat 8 jdk1 8 0 131 部署 首先把solr 6 6 0 server solr webapp中的webapp目录拷贝到apache tomcat 8 5 15下的webap
  • 数据结构与算法-基础排序算法及TopK问题(Python)

    排序 基础排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序 经典问题 TopK 堆排序 快速排序 基础排序算法 如果在面试中遇到排序算法 先问清楚数据的特点 结合具体的业务场景 多和面试官交流 先陈述思路 得到面试官肯定以后再编码
  • Java8方法引用

    内容简介 方法引用Demo详解 通过5种语法使用方法引用 方法引用使用总结 1 在Java8中方法引用Demo详解 1 1 方法引用出现的背景 在使用Lambda表达式的时候 我们实际上传递进去的代码就是一种解决方案 拿什么参数做什么操作
  • Spring MVC中如何限制Controller为POST或GET方式接收参数呢?

    转自 Spring MVC中如何限制Controller为POST或GET方式接收参数呢 在Web页面开发中 最常用的接收参数值方式有 GET和POST方式 那么SpringMVC中如何定义参数的接收方式呢 实现思路 只需在注解的时 使用m
  • mark_as_advanced

    Mark cmake cached variables as advanced mark as advanced CLEAR FORCE VAR VAR2 Mark the named cached variables as advance
  • 什么是子查询?

    当一个查询结果是另一个查询的条件的时候 那么就称为子查询 子查询是在SQL语句内的另外一条SELECT语句 在SELECT INSERT UPDATE或DELETE命令中只要是表达式的地方都可以包含子查询 子查询甚至可以包含在另外一个子查询
  • 自动化测试-Appium-Desired Capabilities参数详解

    分类 定义与说明 General Capabilities 通用功能 Update settings Android Only UIAutomator 1 UIAutomator2 Only Espresso Only iOS Only i
  • 数据仓库灵魂30问之如何建设数据中台?一幅图说清中台。

    什么是中台 什么是数据中台 数据仓库实现了企业数据模型的构建 大数据平台解决了海量 实时数据的计算和存储问题 数据中台要解决什么呢 数据如何安全的 快速的 最小权限的 且能够溯源的被探测和快速应用的问题 数据中台不应该被过度的承载平台的计算
  • 进程同步,信号量,互斥变量等说明

    0 前言 工作三年 敲了3年代码 PHP C Java C 等 开发过几种产品 非计算机科班出身 全部编程是自学最近闲来无事买了一本 计算机操作系统 第四版 学一下个人感觉对比较重要的章节 增加对编程的理解 1 进程的描述 1 1 进程的定
  • Python多元线性回归预测模型实验完整版

    多元线性回归预测模型 实验目的 通过多元线性回归预测模型 掌握预测模型的建立和应用方法 了解线性回归模型的基本原理 实验内容 多元线性回归预测模型 实验步骤和过程 1 第一步 学习多元线性回归预测模型相关知识 一元线性回归模型反映的是单个自