知用网
白蓝主题五 · 清爽阅读
首页  > 软件安装

用Python做回归分析:手把手代码示例

很多人在处理数据时都会遇到这样的问题:想知道某个变量如何影响另一个变量。比如,广告投入多了,销售额是不是真的会上升?这时候,回归分析就派上用场了。在Python里,做回归分析并不复杂,只要装对了包,写几行代码就能出结果。

安装必要的库

开始之前,先确保你已经安装了数据分析常用的几个库:numpy、pandas 和 statsmodels。如果还没装,打开命令行运行下面这句:

pip install numpy pandas statsmodels

如果你还打算画图看看数据分布,顺手把 matplotlib 也装上:

pip install matplotlib

准备一组简单数据

假设你在一家电商公司上班,想看看广告投放费用和每日销售额之间有没有关系。你收集了一周的数据,存在列表里:

import pandas as pd

# 模拟数据:广告费用(千元)和对应销售额(万元)
data = {
    'ad_spending': [1.2, 1.8, 3.0, 4.5, 6.0, 7.2, 8.0],
    'sales': [2.5, 3.1, 4.8, 6.2, 8.0, 9.1, 10.3]
}
df = pd.DataFrame(data)
print(df)

这段代码会输出一个表格,看着清楚些。接下来就可以建模了。

进行线性回归分析

我们用 statsmodels 来跑一个最简单的线性回归模型,看看广告投入对销售的影响有多大。

import statsmodels.api as sm

# 定义自变量(X)和因变量(y)
X = df['ad_spending']
y = df['sales']

# 给X加一列常数项,用于拟合截距
X = sm.add_constant(X)

# 建立模型并拟合
model = sm.OLS(y, X).fit()

# 输出结果摘要
print(model.summary())

运行完之后,你会看到一大段输出,其中最关键的是两个数字:const 和 ad_spending 对应的 coef 值。比如 ad_spending 的系数是 1.15,说明每多投1千元广告,销售额平均增加约1.15万元。这个值越显著越好,看 P>|t| 是否小于0.05就行。

画图直观展示关系

光看数字不够直观,画个散点图再加条回归线,一眼就能看出趋势。

import matplotlib.pyplot as plt

plt.scatter(df['ad_spending'], df['sales'], color='blue', label='实际数据')
plt.plot(df['ad_spending'], model.fittedvalues, color='red', label='回归线')
plt.xlabel('广告投入(千元)')
plt.ylabel('销售额(万元)')
plt.legend()
plt.show()

图上红线就是模型拟合出来的趋势线,如果点都离线不远,说明模型效果不错。

预测新数据

现在你想知道,如果某天投了5.5千元广告,预计能卖多少?直接用模型预测就行。

new_data = pd.DataFrame({'const': [1], 'ad_spending': [5.5]})
prediction = model.predict(new_data)
print(f'预计销售额:{prediction.values[0]:.2f} 万元')

这样就能快速给出一个参考值,帮助做决策。