首页 > Python资料 博客日记

Python中的简单与多元线性回归实现

2024-10-15 09:00:03Python资料围观35

这篇文章介绍了Python中的简单与多元线性回归实现,分享给大家做个参考,收藏Python资料网收获更多编程知识

        

目录

一、简单线性回归示例

1、数据准备与分析

2、结果可视化

二、多元线性回归示例

1、数据准备与分析

2、结果解释


线性回归是数据分析中常用的一种方法,用于探索两个或多个变量之间的线性关系。本文将通过两个示例,介绍如何在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}")

        通过这些代码,我们可以预测新的血压收缩值,同时输出了模型的系数(体重和年龄的权重)和截距,从而构建了多元线性回归模型的方程式。


版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐