Python 实现广告投入与销售额线性回归分析

该文章已生成可运行项目,

一、项目背景

在电商、传统零售等行业中,广告投放是提升销售额的重要手段。企业常常需要分析TV、广播、报纸三类广告渠道的投入与最终销售额之间的关联,以此制定合理的广告投放策略、控制营销成本。

本文基于经典广告数据集,使用 Pandas 完成数据读取与处理,Seaborn+Matplotlib 实现数据可视化,最后借助 Scikit-learn 搭建多元线性回归模型,拟合广告投入与销售额的数学关系,完成销量预测与模型评估。

二、环境与依赖库

本次项目用到的核心 Python 库:

  • pandas:数据读取、数据结构化处理
  • numpy:数值计算基础库
  • seaborn/matplotlib:数据可视化绘图
  • scikit-learn:划分数据集、构建线性回归模型

环境说明:本文使用 NumPy 1.x 版本,规避高版本 NumPy 带来的库兼容报错,若你遇到NumPy 2.x模块编译报错,建议降级 numpy==1.26.4

三、数据集介绍

使用经典的 Advertising.csv 广告数据集,数据集共包含 4 列:

  1. TV:电视广告投入金额
  2. radio:广播广告投入金额
  3. newspaper:报纸广告投入金额
  4. sales:对应产生的销售额

数据集样本结构简单、特征明确,非常适合入门多元线性回归实战。

四、完整代码实现与逐行解析

4.1 导入依赖库

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

4.2 读取并查看原始数据

通过pandas读取本地 CSV 文件,并打印前 5 行查看数据格式:

# 读取广告数据集
data = pd.read_csv('Advertising.csv')
# 查看前5条数据
print(data.head())

运行结果示例:

   Number     TV  radio  newspaper  sales
0       1  230.1   37.8       69.2   22.1
1       2   44.5   39.3       45.1   10.4
2       3   17.2   45.9       69.3    9.3
3       4  151.5   41.3       58.5   18.5
4       5  180.8   10.8       58.4   12.9

4.3 数据可视化:特征与销量相关性分析

使用 seaborn.pairplot 绘制特征 - 标签回归关系图,直观观察三类广告和销售额的线性相关程度:

# 绘制单变量与销售额的回归散点图
sns.pairplot(
    data,
    x_vars=['TV', 'radio', 'newspaper'],  # X轴:三个广告特征
    y_vars='sales',                       # Y轴:目标标签 销售额
    height=5,                             # 子图高度
    aspect=0.8,                           # 子图宽高比
    kind='reg'                            # 绘制拟合回归线
)
plt.show()

代码说明

  • x_vars/y_vars:指定横、纵坐标对应的字段;
  • kind='reg':开启回归拟合,自动画出散点 + 拟合直线;
  • 从图像可以初步判断:TV、广播广告和销售额线性相关性更强,报纸广告相关性偏弱。

4.4 划分特征集与标签集

将数据拆分为特征 X(广告投入)和标签 y(销售额),这是机器学习建模的标准步骤:

# 特征集:三类广告投入
X = data[['TV', 'radio', 'newspaper']]
# 标签集:销售额(预测目标)
y = data['sales']

4.5 划分训练集与测试集

使用 train_test_split 将数据集按照 75% 训练集 + 25% 测试集 划分,random_state 固定随机种子,保证每次运行划分结果一致:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    X, y,
    random_state=1,
    test_size=0.25  # 测试集占比25%
)

4.6 构建并训练多元线性回归模型

本次任务是连续值预测(回归问题),因此使用 LinearRegression 线性回归模型(注意区分分类算法逻辑回归):

# 导入线性回归模型
from sklearn.linear_model import LinearRegression

# 初始化模型
linreg = LinearRegression()
# 使用训练集训练模型
linreg.fit(X_train, y_train)

4.7 模型预测 & 输出回归方程

模型训练完成后,使用测试集数据进行预测,并打印回归系数截距,推导出最终的销量计算公式:

# 测试集预测
y_pred = linreg.predict(X_test)

# 输出模型参数
print("="*50)
print("各广告特征系数(TV, 广播, 报纸):", linreg.coef_)
print("回归截距:", linreg.intercept_)
print("="*50)

# 拼接线性回归公式
print("销售额预测公式:")
print(f"销售额 = {linreg.coef_[0]:.3f}*TV + {linreg.coef_[1]:.3f}*广播 + {linreg.coef_[2]:.3f}*报纸 + {linreg.intercept_:.3f}")

参数解读

  1. 系数 (coef_):代表单个广告渠道每增加 1 单位投入,销售额的增量;系数越大,该渠道广告效果越好。
  2. 截距 (intercept_):所有广告投入为 0 时,基础销售额。

五、常见问题避坑

  1. NumPy 2.x 版本兼容报错 报错提示 A module that was compiled using NumPy 1.x cannot be run in NumPy 2.x,解决方案:降级 NumPy

    pip install numpy==1.26.4 --force-reinstall
    
  2. 回归与逻辑回归混淆 销售额是连续数值,属于回归问题,必须使用 LinearRegressionLogisticRegression 仅用于二分类 / 多分类场景,误用会直接报错。

  3. 文件路径问题 Advertising.csv 必须和代码文件放在同一文件夹,否则需要填写文件绝对路径。

六、总结

本文完整实现了数据读取 → 可视化分析 → 数据集划分 → 模型训练 → 预测验证全流程的多元线性回归实战。

  1. 利用可视化完成探索性数据分析,挖掘广告与销量的关联;
  2. 基于 Scikit-learn 快速搭建多元线性回归模型,得到可落地的预测公式;
  3. 该案例是机器学习回归算法的入门经典,可延伸拓展:特征筛选、模型调优、新增特征、岭回归 / Lasso 回归防过拟合等。

整套代码简洁易懂,适合 Python 数据分析、机器学习入门学习者练习使用。

本文章已经生成可运行项目
内容概要:本资源聚焦于配电网在发生故障后的两阶段鲁棒恢复研究,旨在提升电力系统在不确定性条件下的恢复能力与运行可靠性。研究采用两阶段优化方法,第一阶段进行预恢复决策,如网络重构、分布式电源出力调整等,以最小化预期损失;第二阶段则针对实际发生的故障场景实施校正控制,利用鲁棒优化理论应对负荷波动、新能源出力不确定性等因素,确保恢复方案的可行性与强健性。资源提供了完整的Matlab代码实现,复现了相关顶刊研究成果,便于使用者深入理解模型构建、算法求解及仿真分析全过程。; 适合人群:具备电力系统分析、优化理论基础及Matlab编程能力的研究生、科研人员及电力行业工程师。; 使用场景及目标:① 学习并掌握配电网故障恢复的先进优化方法,特别是两阶段鲁棒优化模型的构建与应用;② 复现和验证顶刊论文中的算法,为自身科研工作提供技术参考和代码基础;③ 将所学方法拓展应用于微电网、主动配电网等新型电力系统的可靠性评估与优化调度研究。; 阅读建议:学习者应结合提供的Matlab代码,仔细研读模型的数学公式与求解逻辑,重点关注不确定性建模、两阶段决策变量的设定以及鲁棒对等转换技巧。建议在掌握基础案例后,尝试修改参数或引入新的约束条件进行扩展研究,以深化理解并提升创新能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值