目录
前言
一、讲在前面
1.多元_血压.csv:
2.完整代码:
3.运行结果:
二、实现步骤
1.导入库
2.导入数据
3.绘制散点图(这步可以省略)
编辑
4.求特征和标签的相关系数
5.建立并训练线性回归模型
6.检验模型
7.获取线性回归模型方程
8.利用模型进行预测
总结
前言
线性回归是一种基本的回归分析方法,用于建模两个或多个变量之间的关系。其主要目标是通过一条直线(在简单线性回归中)或一个超平面(在多元线性回归中)来预测一个目标变量的值。
一、讲在前面
1.多元_血压.csv:
2.完整代码:
# 多元线性回归 调整R方
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
# 导入数据
data = pd.read_csv("./多元_血压.csv", encoding='gbk', engine='python') # 设置编码方式 设置使用python解释器
# 多元线性回归相关系数矩阵
corr = data[['体重', '年龄', '血压收缩']].corr() # 计算每两列之间的相关系数
# 获取数据集
x = data[['体重', '年龄']]
y = data[['血压收缩']]
# 建立模型 训练模型
lr_model = LinearRegression()
lr_model.fit(x, y)
# 检测模型 出厂前测试
result = lr_model.predict(x)
score = lr_model.score(x, y) # 多元需要调整R方 这里调整了吗?
# print(result)
# print(score)
# 获取多元线性方程的截距和斜率
k = lr_model.coef_
b = lr_model.intercept_
print(f"线性回归方程为: y = {k[0][0]:.2f}x1 + {k[0][1]:.2f}x2 + {b[0]:.2f} ")
# 使用新数据进行测试
print(lr_model.predict([[75, 21], [70, 21]]))
# 绘制散点图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体
plt.rcParams['axes.unicode_minus'] = False # 解决符号显示为方块的问题
ax = plt.axes(projection="3d")
ax.scatter(data['体重'], data['年龄'], zs=data['血压收缩'], marker='o')
ax.set(xlabel="体重", ylabel="年龄", zlabel="血压收缩")
# plt.show()
3.运行结果:
二、实现步骤
1.导入库
# 多元线性回归 调整R方
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
2.导入数据
# 导入数据
data = pd.read_csv("./多元_血压.csv", encoding='gbk', engine='python')
# 设置编码方式 设置使用python解释器
3.绘制散点图(这步可以省略)
# 绘制散点图
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体
plt.rcParams['axes.unicode_minus'] = False # 解决符号显示为方块的问题
ax = plt.axes(projection="3d")
ax.scatter(data['体重'], data['年龄'], zs=data['血压收缩'], marker='o')
ax.set(xlabel="体重", ylabel="年龄", zlabel="血压收缩")
plt.show()
4.求特征和标签的相关系数
- 多元线性回归模型可以查看每一列特征与标签的相关系数,达不到弱相关的特征可以进行舍弃。
# 多元线性回归相关系数矩阵
corr = data[['体重', '年龄', '血压收缩']].corr() # 计算每两列之间的相关系数
- 相关系数矩阵:
5.建立并训练线性回归模型
- 提取特征数据和标签也在这个步骤一并完成了
# 获取数据集
x = data[['体重', '年龄']]
y = data[['血压收缩']]
# 建立模型 训练模型
lr_model = LinearRegression()
lr_model.fit(x, y)
6.检验模型
- 多元需要调整R方
# 检测模型 出厂前测试
result = lr_model.predict(x)
score = lr_model.score(x, y) # 多元需要调整R方
# print(result)
# print(score)
7.获取线性回归模型方程
代码:
# 获取多元线性方程的截距和斜率
k = lr_model.coef_
b = lr_model.intercept_
print(f"线性回归方程为: y = {k[0][0]:.2f}x1 + {k[0][1]:.2f}x2 + {b[0]:.2f} ")
输出:
线性回归方程为: y = 2.14x1 + 0.40x2 + -62.96
8.利用模型进行预测
代码:
# 使用新数据进行测试
print(lr_model.predict([[75, 21], [70, 21]]))
输出:
[[105.68304051]
[ 95.00024982]]
总结
多元线性回归模型在,有多个自变量的情况下可能需要调整R²,调整后的R²考虑了模型复杂度,能够更公平地比较不同模型。