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

这一节,我将用三个小案例来帮助你详细了解线性回归在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()方法,利用训练好的模型对新数据进行预测(前两个代码未展示预测,第三个代码有具体预测示例)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值