《机器学习》线性回归模型实现

news2025/1/1 21:48:15

目录

一、一元线性回归模型

1、数据

2、代码

3、结果

二、多元线性回归模型

1、数据

2、代码

3、结果 


一、一元线性回归模型

1、数据

2、代码

# 导入所需的库
import pandas as pd  # 用于数据处理和分析
from matplotlib import pyplot as plt  # 用于数据可视化
from sklearn.linear_model import LinearRegression  # 用于线性回归建模

# 从CSV文件中读取数据
data = pd.read_csv('./data/data.csv')  # 读取名为 'data.csv' 的文件,并将其存储在 DataFrame 中

# 绘制散点图,查看广告投入与销售额之间的关系
plt.scatter(data.广告投入, data.销售额)  # 以广告投入为横轴,销售额为纵轴绘制散点图
plt.show()  # 显示图形

# 计算数据集中各列之间的相关系数
corr = data.corr()  # 生成相关系数矩阵,用于分析变量之间的线性关系

# 创建线性回归模型对象
lr = LinearRegression()  # 初始化一个线性回归模型

# 准备自变量(特征)和因变量(目标)
x = data[['广告投入']]  # 将 '广告投入' 列作为自变量(特征)
y = data[['销售额']]  # 将 '销售额' 列作为因变量(目标)

# 训练线性回归模型
lr.fit(x, y)  # 使用数据拟合线性回归模型,找到最佳拟合参数

# 使用训练好的模型进行预测
result = lr.predict(x)  # 对输入的自变量 x 进行预测,得到对应的销售额预测值

# 计算模型的拟合优度(R² 分数)
score = lr.score(x, y)  # 计算模型在训练数据上的 R² 分数,表示模型的解释能力

# 获取线性回归模型的系数和截距
a = lr.coef_  # 获取回归系数(斜率),表示广告投入对销售额的影响程度
b = lr.intercept_  # 获取截距,表示当广告投入为 0 时的销售额

# 输出线性回归模型的方程
print('线性回归模型是 y = %.2fX1 + %.2f' % (a[0][0], b))  # 打印线性回归方程,格式为 y = aX + b

3、结果

 

二、多元线性回归模型

1、数据

2、代码

# 导入所需的库
import pandas as pd  # 用于数据处理和分析
from sklearn.linear_model import LinearRegression  # 用于线性回归建模

# 从CSV文件中读取数据,指定编码格式为 'gbk',并使用 'python' 引擎
data = pd.read_csv('./data/多元线性回归.csv', encoding='gbk', engine='python')  # 读取名为 '多元线性回归.csv' 的文件,解决中文编码问题

# 计算 '体重'、'年龄' 和 '血压收缩' 列之间的相关系数
corr = data[['体重', '年龄', '血压收缩']].corr()  # 生成相关系数矩阵,分析变量之间的线性关系

# 创建线性回归模型对象
lr_model = LinearRegression()  # 初始化一个线性回归模型

# 准备自变量(特征)和因变量(目标)
x = data[['体重', '年龄']]  # 将 '体重' 和 '年龄' 列作为自变量(特征)
y = data[['血压收缩']]  # 将 '血压收缩' 列作为因变量(目标)

# 训练线性回归模型
lr_model.fit(x, y)  # 使用数据拟合线性回归模型,找到最佳拟合参数

# 计算模型的拟合优度(R² 分数)
score = lr_model.score(x, y)  # 计算模型在训练数据上的 R² 分数,表示模型的解释能力

# 使用训练好的模型进行预测
print(lr_model.predict([[80, 60]]))  # 对体重为 80、年龄为 60 的样本进行预测,输出血压收缩的预测值
print(lr_model.predict([[80, 60], [70, 20]]))  # 对多组样本进行预测,输出对应的血压收缩预测值

# 获取线性回归模型的系数和截距
a = lr_model.coef_  # 获取回归系数(斜率),表示体重和年龄对血压收缩的影响程度
b = lr_model.intercept_  # 获取截距,表示当体重和年龄均为 0 时的血压收缩值

# 输出线性回归模型的方程
print('线性回归模型是 y = %.2fX1 + %.2fX2 + %.2f' % (a[0][0], a[0][1], b))  # 打印多元线性回归方程,格式为 y = a1X1 + a2X2 + b

3、结果 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2268207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于DIODES AP43781+PI3USB31531+PI3DPX1207C的USB-C PD Video 之全功能显示器连接端口方案

随着USB-C连接器和PD功能的出现,新一代USB-C PD PC显示器可以用作个人和专业PC工作环境的电源和数据集线器。 虽然USB-C PD显示器是唯一插入墙壁插座的交流电源输入设备,但它可以作为数据UFP(上游接口)连接到连接到TCD&#xff0…

QWidget应用封装为qt插件,供其他qt应用调用

在之前的文章中,有介绍通过QProcess的方式启动QWidget应用,然后将其窗口嵌入到其他的qt应用中,作为子窗口使用.这篇文章主要介绍qt插件的方式将QWidget应用的窗口封装为插件,然后作为其他Qt应用中的子窗口使用. 插件优点: 与主程序为同一个进程,免去了进程间繁琐的通信方式,…

关于 覆铜与导线之间间距较小需要增加间距 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/144776995 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

ArcGIS教程(009):ArcGIS制作校园3D展示图

文章目录 数据下载校园3D展示图制作创建要素类矢量化【楼】要素矢量化【绿地】矢量化【范围】矢量化处理打开ArcScene添加动画数据下载 https://download.csdn.net/download/WwLK123/90189025校园3D展示图制作 创建要素类 添加底图: 新建【文件地理数据库】,并修改名称为【…

权限注解+AOP切面+额外工具(UUID生成id,JWT,Servlet客户端,字符串String工具类,Redis序列化,ip工具类)

权限功能和注解的关系 ①、定义三个注解 //角色认证,必须具有指定角色标识才能进入该方法 Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD,ElementType.TYPE}) public interface RequiresRoles{//需要校验的角色标识String[] value() default {}…

RGB、HSV颜色模型及MATLAB互换应用实例

一、前言 RGB和HSV模型是数字图像处理中颜色空间中的两种重要表示方式,RGB和HSV都是描述颜色的数学模型,可以用于表示和处理图像中的颜色信息。 RGB模型是一种基于光的颜色模型,由红(Red)、绿(Green&#x…

MySQL基础-常见的增删改查操作语句总结

1.数据库操作 查看所有数据库 show databases;创建数据库 create database db_stu; --如果数据库已经存在就不创建 create database if not exists db_stu; --添加默认字符集 create database db_stu default charset utf8mb4;删除数据库 drop database db_stu; --如果存在…

【运维】部署MKDocs

部署MKDocs obsidian 记录笔记,通过 mkdocs 私有化部署。 1 使用MKDocs创建笔记 创建仓库,安装 Material for MkDocs 和 mkdocs-minify-plugin mkdir tmp cd tmp git initpip install mkdocs-material pip install mkdocs-minify-pluginmkdocs new .2 …

黑马Java面试教程_P2_MySQL

系列博客目录 文章目录 系列博客目录前言1. 优化1.1 MySQL中,如何定位慢查询?面试文稿 1.2 面试官接着问:那这个SQL语句执行很慢,如何分析 ( 如何优化)呢?面试文稿 1.3 了解过索引吗?(什么是索引)1.4 继续问 索引的底层数据结构…

【优选算法】盛最多水的容器(双指针算法)

11. 盛最多水的容器 - 力扣(LeetCode) 【1.题目】 【2.算法原理】 【3.代码编写】 优化之后就遍历了一遍数组,时间复杂度变为O(N),就使用了几个变量,空间复杂度为O(1)。 class Solution { public:int maxArea(vecto…

安装torch-geometric库

目录 1.查看 torch 和 CUDA 版本 2.依次下载和 torch 和 CUDA 对应版本的四个依赖库pyg-lib、torch-scatter、torch-sparse、torch-cluster以及torch-spline-conv 3.下载并安装torch-geometric库 1.查看 torch 和 CUDA 版本 查看CUDA版本 nvcc -V 查看pytorch版本 pip s…

王佩丰24节Excel学习笔记——第十八讲:Lookup和数组

【以 Excel2010 系列学习,用 Office LTSC 专业增强版 2021 实践】 【本章技巧】 地址栏公式可以使用 F9 查看,取消请按Esc键,或者公式前的红色叉;使用数组时一定要注意使用绝对引用,方便下拉;使用数组时一…

【hackmyvm】hacked靶机wp

tags: HMVrootkitDiamorphine Type: wp 1. 基本信息^toc 文章目录 1. 基本信息^toc2. 信息收集2.1. 端口扫描2.2. 目录扫描2.3. 获取参数 3. 提权 靶机链接 https://hackmyvm.eu/machines/machine.php?vmHacked 作者 sml 难度 ⭐️⭐️⭐️⭐️️ 2. 信息收集 2.1. 端口扫描…

【超级详细】七牛云配置阿里云域名详细过程记录

0. 准备一个阿里云域名,记得要备案!!!! 1. 创建七牛云存储空间 首先,登录七牛云控制台,创建一个新的存储空间(Bucket)。这个存储空间将用于存放你的文件,并…

【JDBC】转账案例

回顾 使用工具类查询表 需求: 查询student表的所有数据,把数据封装到一个集合中 数据准备 #创建表 CREATE TABLE student( sid INT, name VARCHAR(100), age INT, sex VARCHAR(100) ) #插入数据 INSERT INTO student VALUES(1,张三,18,女),(2…

HTML——14. 超链接四种状态

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>超链接</title></head><body><a href"https://ai.m.taobao.com" target"_blank">淘宝</a><br /><a href"…

微信V3支付报错 平台证书及平台证书序列号

1.平台证书及平台证书序列号设置错误报错&#xff1a; 错误1&#xff1a; Verify the response’s data with: timestamp1735184656, noncea5806b8cabc923299f8db1a174f3a4d0, signatureFZ5FgD/jtt4J99GKssKWKA/0buBSOAbWcu6H52l2UqqaJKvrsNxvodB569ZFz5G3fbassOQcSh5BFq6hvE…

MusicFree - 免费播放全网歌曲!无广告开源网络音乐聚合播放器 (安卓电脑版)

大家平常听歌可能都会在 QQ 音乐、网易云音乐、酷狗、喜马拉雅等不同平台来回切换&#xff0c;体验其实很烦。曾经推荐过不少“聚合”音乐应用&#xff0c;比如 洛雪音乐助手、Listen1 等等。 最近又有一个新选择了&#xff01;MusicFree 是一款免费开源清爽无广告的音乐播放器…

C++的第一个程序

前言 在学习c之前&#xff0c;你一定还记得c语言的第一个程序 当时刚刚开始进行语言学习 因此告诉到&#xff0c;仅仅需要记住就可以 #include <stdio.h>int main(){printf("Hello World");return 0; }而对于c中的第一个程序&#xff0c;似乎有所变化 C的…

代码随想录算法【Day1】

Day1 1.掌握二分法边界值判断&#xff0c;是根据写法来的; 2.删除数组元素的双指针和暴力解法; 3.灵活使用双指针方法 704 二分法 以前对于边界的问题非常纠结&#xff0c;到底是<还是<&#xff0c;以及是mid还是mid-1。 通过视频讲解&#xff0c;得知二分法的两种…