省建设厅网站梁作庆,交易网站开发,营销型网站外包,固戍做网站的公司多元线性回归预测模型
实验目的
通过多元线性回归预测模型#xff0c;掌握预测模型的建立和应用方法#xff0c;了解线性回归模型的基本原理
实验内容
多元线性回归预测模型
实验步骤和过程
(1)第一步#xff1a;学习多元线性回归预测模型相关知识。
一元线性回归模型…多元线性回归预测模型
实验目的
通过多元线性回归预测模型掌握预测模型的建立和应用方法了解线性回归模型的基本原理
实验内容
多元线性回归预测模型
实验步骤和过程
(1)第一步学习多元线性回归预测模型相关知识。
一元线性回归模型反映的是单个自变量对因变量的影响然而实际情况中影响因变量的自变量往往不止一个从而需要将一元线性回归模型扩展到多元线性回归模型。 如果构建多元线性回归模型的数据集包含n个观测、p1个变量其中p个自变量和1个因变量则这些数据可以写成下方的矩阵形式 其中xij代表第个i行的第j个变量值。如果按照一元线性回归模型的逻辑那么多元线性回归模型应该就是因变量y与自变量X的线性组合即可以将多元线性回归模型表示成 yβ0β1x1β2x2…βpxnε 根据线性代数的知识可以将上式表示成yXβε。 其中 β为p×1的一维向量代表了多元线性回归模型的偏回归系数 ε为n×1的一维向量代表了模型拟合后每一个样本的误差项。
回归模型的参数求解
在多元线性回归模型所涉及的数据中因变量y是一维向量而自变量X为二维矩阵所以对于参数的求解不像一元线性回归模型那样简单但求解的思路是完全一致的。为了使读者掌握多元线性回归模型参数的求解过程这里把详细的推导步骤罗列到下方 根据线性代数的知识可以将向量的平方和公式转换为向量的内积接下来需要对该式进行平方项的展现。 经过如上四步的推导最终可以得到偏回归系数β与自变量X、因变量y的数学关系。这个求解过程也被成为“最小二乘法”。基于已知的偏回归系数β就可以构造多元线性回归模型。前文也提到构建模型的最终目的是为了预测即根据其他已知的自变量X的值预测未知的因变量y的值。
回归模型的预测
如果已经得知某个多元线性回归模型yβ0β1x1β2x2…βpxn当有其他新的自变量值时就可以将这些值带入如上的公式中最终得到未知的y值。在Python中实现线性回归模型的预测可以使用predict“方法”关于该“方法”的参数含义如下
predict(exogNone, transformTrue)
exog指定用于预测的其他自变量的值。
transformbool类型参数预测时是否将原始数据按照模型表达式进行转换默认为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(projection3d)
# 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, alpha0.5, cmapviridis)
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, alpha0.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编程实现预测模型。同时我们也使用水路客运量预测实例对线性回归模型进行了实际应用和分析。在实验中我掌握了数据预处理、模型训练和结果评估等关键技术对于今后的数据分析和预测工作将有很大的帮助。同时在这个过程之中也出现了一些问题但通过查阅相关资料最终这些问题都得以解决。在这个过程中我的动手实践能力的到提升也让我明白了实际动手操作的重要性在实际操作中可以发现很多平时发现不了的问题通过实践最终都得以解决。