首页 > Python资料 博客日记
Python中的简单与多元线性回归实现
2024-10-15 09:00:03Python资料围观35次
目录
线性回归是数据分析中常用的一种方法,用于探索两个或多个变量之间的线性关系。本文将通过两个示例,介绍如何在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】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj