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

机械学习--线性回归---三个小案例

这一节,我将用三个小案例来帮助你详细了解线性回归在python代码中的用法

一、一元线性回归案例

Find商家广告投入和销售额之间关系

数据已经上传,可自行下载

代码 示例:

import pandas as pd
from sklearn.linear_model import LinearRegression
data = pd.read_csv('一元线性回归.csv')
corr = data[['广告投入','销售额']].corr()
lr_model = LinearRegression()
x = data[['广告投入']]
y = data[['销售额']]
lr_model.fit(x,y)
score = lr_model.score(x,y)
print(lr_model.predict([[80]]))
a = lr_model.coef_
b = lr_model.intercept_
print("方程为:y = {:.2f}x1 + {:.2f}".format(a[0][0],b[0]))

讲解:

# 导入pandas库,用于数据处理和分析,通常简写为pd
# 从sklearn.linear_model模块导入LinearRegression类,用于创建线性回归模型# 使用pandas的read_csv函数读取CSV文件,将数据存储在DataFrame对象data中
# 这里假设'data(1).csv'文件与当前脚本在同一目录下# 计算'广告投入'和'销售额'两列之间的相关系数
# corr()方法默认计算皮尔逊相关系数,取值范围为[-1, 1],绝对值越接近1表示相关性越强# 创建线性回归模型的实例# 选取'广告投入'作为特征变量(自变量),注意这里使用双括号[[ ]]保持其二维结构
# 选取'销售额'作为目标变量(因变量),同样保持二维结构# 使用特征变量x和目标变量y训练线性回归模型
# 模型会学习x和y之间的线性关系# 计算模型的决定系数R²,评估模型对数据的拟合程度
# R²的取值范围为[0, 1],越接近1表示模型拟合效果越好# 使用训练好的模型预测当广告投入为80时的销售额
# 注意输入需要是二维数组形式[[80]],与训练数据的结构保持一致# 获取线性回归模型的系数(斜率),即方程中的系数a
# 获取线性回归模型的截距,即方程中的常数项b# 格式化输出线性回归方程,保留两位小数
# 这里a[0][0]和b[0]是因为coef_和intercept_返回的是数组形式

输出:

二、多元线性回归案例

由体重,年龄的数据推测血管收缩的情况

数据已上传,可自行下载

代码示例:

import pandas as pd
from sklearn.linear_model import LinearRegression
data = pd.read_csv('多元线性回归.csv',encoding='utf-8',engine='python')
corr = data[['体重','年龄','血压收缩']].corr()
lr_model = LinearRegression()
x = data[['体重','年龄']]
y = data[['血压收缩']]
lr_model.fit(x,y)
score = lr_model.score(x,y)
a = lr_model.coef_
b = lr_model.intercept_
print("方程为:y = {:.2f}x1 + {:.2f}x2 + {:.2f}".format(a[0][0],a[0][1],b[0]))

讲解:

# 导入pandas库,用于数据读取和处理,通常简写为pd
# 从sklearn的线性模型模块导入LinearRegression类,用于构建多元线性回归模型# 读取CSV文件数据到DataFrame
# '多元线性回归.csv'是数据文件名,需与脚本在同一目录或提供完整路径
# encoding='utf-8'指定文件编码为UTF-8,确保中文正常显示
# engine='python'用于处理某些特殊格式的CSV文件,避免解析错误# 计算三个变量之间的相关系数矩阵
# 分析体重、年龄与血压收缩之间的相关性强度
# 相关系数范围[-1,1],绝对值越大表示相关性越强# 创建线性回归模型实例# 确定自变量X:选取'体重'和'年龄'作为特征变量
# 确定因变量y:选取'血压收缩'作为目标变量# 使用训练数据拟合模型,即求解回归方程的系数# 计算模型的决定系数R²,评估模型拟合效果
# R²越接近1,表示模型对数据的解释能力越强# 获取回归系数(斜率),多元回归中会有多个系数
# a是一个二维数组,a[0][0]对应体重的系数,a[0][1]对应年龄的系数
# 获取回归方程的截距项(常数项)# 格式化输出多元线性回归方程
# 方程形式为:y = a1*x1 + a2*x2 + b,其中x1是体重,x2是年龄

输出结果:

三、超多元线性回归案例

由多项数据分析糖尿病的情况,并对未知数据分析

数据已经上传,可以自行下载

代码示例:

import pandas as pd
from sklearn.linear_model import LinearRegression
data = pd.read_csv('糖尿病数据.csv')
corr = data[['age','sex','bmi','bp','s1','s2','s3','s4','s5','s6','target']].corr()
lr_model = LinearRegression()
x = data[['age','sex','bmi','bp','s1','s2','s3','s4','s5','s6']]
y = data[['target']]
lr_model.fit(x,y)
score = lr_model.score(x,y)
print("准确率为:",score)
print("预测数据:-0.0491050163910452,-0.044641636506989,-0.0568631216082106,-0.0435421881860331,-0.0455994512826475,-0.043275771306016,0.000778807997017968,-0.0394933828740919,-0.0119006848015081,0.0154907301588724")
print("预测结果为:",lr_model.predict([[-0.0491050163910452,-0.044641636506989,-0.0568631216082106,-0.0435421881860331,-0.0455994512826475,-0.043275771306016,0.000778807997017968,-0.0394933828740919,-0.0119006848015081,0.0154907301588724]]))
a = lr_model.coef_
b = lr_model.intercept_
print("方程为:y = {:.2f}x1 + {:.2f}x2 + {:.2f}x3 + {:.2f}x4 + {:.2f}x5 + {:.2f}x6 + {:.2f}x7 + {:.2f}x8 + {:.2f}x9 + {:.2f}x10 + {:.2f}"\.format(a[0][0],a[0][1],a[0][2],a[0][3],a[0][4],a[0][5],a[0][6],a[0][7],a[0][8],a[0][9],b[0]))

讲解:

# 导入pandas库,用于数据读取和处理,简写为pd
# 从sklearn线性模型模块导入LinearRegression类,用于构建线性回归模型# 读取糖尿病数据集CSV文件
# 假设'diabetes_data.csv'与当前脚本在同一目录下# 计算多个变量之间的相关系数矩阵
# 分析age(年龄)、sex(性别)、bmi(体重指数)、bp(血压)等特征与target(目标变量)的相关性# 创建线性回归模型实例# 确定自变量X:选取多个特征变量作为输入
# 包括age(年龄)、sex(性别)、bmi(体重指数)、bp(血压)及s1-s6等医学指标
# 确定因变量y:选取target作为预测目标(通常是糖尿病进展指标)# 使用特征变量和目标变量训练模型,拟合线性回归方程# 计算模型的决定系数R²,评估模型拟合效果
# R²越接近1,表示模型对数据的解释能力越强# 打印用于预测的输入数据# 使用训练好的模型对给定数据进行预测
# 输入数据需与训练时的特征顺序一致,且为二维数组形式# 获取回归系数(每个特征对应的权重)
# a是一个二维数组,a[0][i]对应第i+1个特征的系数
# 获取回归方程的截距项(常数项)# 格式化输出多元线性回归方程,保留两位小数
# 方程形式为:y = w1*x1 + w2*x2 + ... + w10*x10 + b

输出结果:

四、思路总结

对于线性回归的代码,不管是几元的数据,编程思路都一样

  1. 数据准备:均使用pandasread_csv函数读取 CSV 格式的数据集,获取分析所需的原始数据。(不同的数据集修改读取的cv2函数就行)
  2. 相关性分析:通过corr()方法计算关注变量(特征与目标变量)之间的相关系数,初步了解变量间的关联程度。(这一步是必须的低于80%的数据集就不适合用线性回归了)
  3. 模型构建与训练
    • 实例化LinearRegression类创建线性回归模型。
    • 确定自变量(特征变量)和因变量(目标变量),从数据中选取对应列。
    • 调用fit()方法,用选定的自变量和因变量训练模型,使模型学习变量间的线性关系。
  4. 模型评估与应用
    • score()方法获取决定系数 R²,评估模型对数据的拟合效果。
    • 提取模型的系数(特征权重)和截距,得到回归方程,量化各特征对目标变量的影响。
    • 可通过predict()方法,利用训练好的模型对新数据进行预测(前两个代码未展示预测,第三个代码有具体预测示例)。

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

相关文章:

  • Kun_Tools(全能文档工具)V0.4.6 便携版
  • 2025年中科院与JCR期刊分区深度对比(第一期):TON中科院分区3区不变,JCR分区升至Q1;TOSEM重回中科院1区!
  • I2C 与 SMBus:同根同源,各有千秋
  • 学习Python中Selenium模块的基本用法(3:下载浏览器驱动续)
  • 美国股市高频tick级分时交易数据解码与订单簿及交易指令分析
  • 使用 Spring AI Alibaba MCP 结合 Nacos 实现企业级智能体应用
  • win10 环境删除文件提示文件被使用无法删除怎么办?
  • Aura_P41_PXX GameplayEffect
  • iOS仿写 —— 计算器
  • Python包架构设计与模式应用:构建可扩展的企业级组件
  • 车载诊断架构 --- 关于诊断时间参数P4的浅析
  • ABP VNext + GraphQL Federation:跨微服务联合 Schema 分层
  • 落霞归雁思维框架应用(十一) ——开发如何选语言与架构:把“技术洪流”修成顺势河道
  • 【Mac版】Linux 入门命令行快捷键+联想记忆
  • Doris中文检索效果调优
  • vulhub-Breakout靶机
  • 减速机:自动化生产线的“精密传动心脏”
  • 网络原理--HTTPHTTPS
  • SQL注入SQLi-LABS 靶场less26-30详细通关攻略
  • OpenCV 学习探秘之三:从图像读取到特征识别,再到机器学习等函数接口的全面实战应用与解析
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-44,(知识点:三极管,PN结,正偏反偏判断,晶体管)
  • 通讯中为什么要用 0Hermitian 对称 *只使用“正频率”子载波,负频率部分通过对称性自动生成,从而保证时域信号是实值
  • 记一次导出pdf表单引发的问题
  • 【RAG搭建Agent应用实战】基于检索增强生成(RAG)搭建特定场景Agent应用
  • 验证pyspark提交参数指定环境变量生效
  • HbuilderX开发小程序
  • Java面试宝典:MySQL8新特性底层原理
  • 【nerf处理视频数据】Instant-NGP项目NeRF模型训练数据集准备指南
  • React--》规划React组件库编码规范与标准 — Button篇
  • 解决Spring MVC中@PathVariable参数为null导致的404问题:全面解析与最佳实践