当前位置: 首页 > news >正文

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

目录

前言

一、讲在前面

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

http://www.lryc.cn/news/427323.html

相关文章:

  • 树莓派5环境配置笔记 新建虚拟python环境—安装第三方库—配置Thonny解释器
  • 浅谈Winform
  • MySQL(二)——CRUD
  • presto高级用法(grouping、grouping sets)
  • 二十五年后,Microsoft终于移除了FAT32的32GB分区限制——一个从草稿到现实的故事
  • Java二十三种设计模式-命令模式(18/23)
  • Kafka系列之:Dead Letter Queue死信队列DLQ
  • Fragment学习笔记
  • NGINX 基础参数与功能
  • css设置元素居中显示
  • js判断一个任意值为空包括数组和对象
  • EmguCV学习笔记 VB.Net和C# 下的OpenCv开发
  • “TCP粘包”不是TCP的问题!
  • Electron项目依赖管理:最佳实践与常见错误
  • 华为数通路由交换HCIP/HCNP
  • 搜索面试题
  • WPF学习(8) --Windows API函数的使用
  • Linux系统-用户账号文件
  • docker配置国内镜像加速
  • C语言实现排序之堆排序算法
  • 【STM32 Blue Pill编程】-外部中断配置及使用
  • MySQL 安装与配置教程:单机、主从复制与集群模式
  • JavaEE 的相关知识点(一)
  • 使用Python实现深度学习模型:智能医疗影像识别与诊断
  • 24.给定一个链表,实现一个算法交换每两个相邻节点并返回其头部。要求不能修改列表节点中的值,只能更改节点本身。
  • Python 通过UDP传输超过64k的信息
  • 微服务设计原则——高性能:批量
  • C:指针学习-指针变量—学习笔记
  • 【MySQL 07】表的增删查改 (带思维导图)
  • 快速上手Git