任务描述
重要性★★★★☆
难度★★★☆☆
假设你是一家零售公司的数据分析师,公司想弄清楚广告支出与销售额之间到底存在怎样的关系。你的任务是创建散点图,并拟合一条线性回归线来直观呈现这种关系。数据直接用代码生成,图表也要通过 Python 的数据处理和可视化库来完成。
数据生成代码示例
import numpy as np
import pandas as pd
# 生成样本数据
np.random.seed(0)
advertising_spend = np.random.uniform(1000, 5000, 100)
sales = 5 * advertising_spend + np.random.normal(0, 1000, 100)
# 创建 DataFrame
data = pd.DataFrame({'Advertising Spend': advertising_spend, 'Sales': sales})
图表答案

代码答案
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression
# 生成样本数据
np.random.seed(0)
advertising_spend = np.random.uniform(1000, 5000, 100)
sales = 5 * advertising_spend + np.random.normal(0, 1000, 100)
# 创建 DataFrame
data = pd.DataFrame({'Advertising Spend': advertising_spend, 'Sales': sales})
# 拟合线性回归模型
model = LinearRegression()
model.fit(data[['Advertising Spend']], data['Sales'])
sales_pred = model.predict(data[['Advertising Spend']])
# 绘制数据和回归线
plt.figure(figsize=(10, 6))
sns.scatterplot(x='Advertising Spend', y='Sales', data=data)
plt.plot(data['Advertising Spend'], sales_pred, color='red', label='Linear Regression Line')
plt.xlabel('Advertising Spend')
plt.ylabel('Sales')
plt.title('广告支出与销售额的线性关系')
plt.legend()
plt.show()

先来看库的导入。numpy 负责数值运算,pandas 负责数据处理,matplotlib 和 seaborn 负责绘图,sklearn 则用来构建线性回归模型。
接下来用 numpy 的 uniform 函数生成广告支出的随机数据,一共创建 100 个介于 1000 和 5000 之间的数据点。为了模拟真实的销售数据,我们假设销售额大约是广告支出的五倍,再加上一些随机噪声——噪声通过 numpy 的 normal 函数添加,这样数据看起来更接近现实情况。
生成的数据存放进 pandas DataFrame 里,后续操作和绘图会更方便。再往下,用 sklearn 的 LinearRegression 类拟合线性回归模型:以广告支出作为自变量,销售额作为因变量来训练模型,训练完成后就能根据广告支出预测销售额了。
可视化阶段,seaborn 的 scatterplot 函数负责绘制广告支出与销售额的散点图;matplotlib 的 plot 函数则用来画回归线,x 轴是广告支出,y 轴是预测销售额。为了让图表更清晰,我们添加了标签和标题,并用图例区分数据点和回归线。最后调用 plt.show() 把图表展示出来。
小知识
线性回归是最简单、也最常用的机器学习算法之一。它的核心假设很直接:输入变量(自变量)与单个输出变量(因变量)之间存在线性关系。算法的目标就是找到一条最适合数据的直线,让观测值与预测值之间平方差的总和最小。
为什么线性回归这么受欢迎?关键在于它的可解释性非常强。在经济学、生物学和社会科学等领域,研究人员经常借助它来理解变量之间的关系,这种直观性让线性回归始终占据着基础地位。