首页 > Python资料 博客日记
Python中的简单与多元线性回归实现
2024-10-15 09:00:03Python资料围观61次
目录
线性回归是数据分析中常用的一种方法,用于探索两个或多个变量之间的线性关系。本文将通过两个示例,介绍如何在Python中实现简单线性回归和多元线性回归模型,并展示如何使用统计方法和机器学习库来进行分析。
一、简单线性回归示例
1、数据准备与分析
在简单线性回归示例中,用上图这一组数据集,其中包含了广告投入(自变量)和对应的销售额(因变量)。我们的目标是建立一个模型,来预测广告投入对销售额的影响。
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
# 加载数据集
data = pd.read_csv("data.csv")
x = data[['广告投入']]
y = data[['销售额']]
# 添加常数项
X = sm.add_constant(x)
# 构建线性回归模型
model = sm.OLS(y, X)
result = model.fit()
# 输出回归结果摘要
print(result.summary())
在这段代码中,我们首先使用pandas
库加载了名为data.csv
的数据集,并从中选择了广告投入和销售额这两列作为自变量和因变量。接着,我们使用statsmodels
库中的OLS
(普通最小二乘)方法拟合了一个线性回归模型。通过result.summary()
,我们可以打印出模型的详细统计摘要,包括参数估计、显著性检验以及模型拟合度等信息。
2、结果可视化
为了更直观地理解模型拟合效果,我们将数据点和回归线一起绘制在同一个图上:
# 绘制数据和拟合线
y_pr = result.fittedvalues
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(x, y, 'o', label='data') # 原始数据散点图
ax.plot(x, y_pr, 'r--', label='OLS') # 拟合的线性回归线
ax.legend(loc='best')
plt.xlabel('广告投入')
plt.ylabel('销售额')
plt.title('简单线性回归拟合')
plt.show()
在这段代码中,我们使用了matplotlib
库来绘制散点图(原始数据)和红色虚线(线性回归拟合线),以直观地展示广告投入与销售额之间的关系。
二、多元线性回归示例
1、数据准备与分析
在多元线性回归示例中,用上图中一个包含体重、年龄和血压收缩的数据集,我们的目标是建立一个模型来预测血压收缩值,使用体重和年龄作为预测因子。
import pandas as pd
from sklearn.linear_model import LinearRegression
# 加载数据集
data = pd.read_csv("多元线性回归.csv", encoding='gbk', engine='python')
# 创建线性回归模型
lr_model = LinearRegression()
# 准备自变量和因变量
x = data[['体重', '年龄']]
y = data[['血压收缩']]
# 拟合模型
lr_model.fit(x, y)
# 打印模型评分
score = lr_model.score(x, y)
print(f"模型评分 R^2: {score:.2f}")
在这段代码中,我们使用了sklearn
库中的LinearRegression
来构建和训练了一个多元线性回归模型。通过lr_model.score()
,我们可以评估模型的拟合优度,这里使用的是R平方(R^2)作为评估指标,用于衡量模型对数据的解释能力。
2、结果解释
接下来,我们可以使用训练好的模型来预测新的数据点,并获取模型的系数和截距,以便进一步解释模型:
# 预测新数据点
predictions = lr_model.predict([[80, 60]])
print(f"预测血压收缩值 (体重=80, 年龄=60): {predictions}")
# 批量预测
batch_predictions = lr_model.predict([[70, 30], [70, 20]])
print(f"批量预测血压收缩值:\n{batch_predictions}")
# 获取模型系数和截距
coefficients = lr_model.coef_
intercept = lr_model.intercept_[0]
print(f"线性回归方程为:血压收缩 = {coefficients[0][0]} * 体重 + {coefficients[0][1]} * 年龄 + {intercept:.2f}")
通过这些代码,我们可以预测新的血压收缩值,同时输出了模型的系数(体重和年龄的权重)和截距,从而构建了多元线性回归模型的方程式。
标签:
上一篇:SQL调优指南及高级SQL技巧
下一篇:提升代码可读性的十八条建议4
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程