机器学习:多元线性回归模型

目录

前言

一、讲在前面

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²考虑了模型复杂度,能够更公平地比较不同模型。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃什么芹菜卷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值