当前位置:首页>python>python数据可视化技巧的100个练习 -- 50. 为回归分析创建残差图

python数据可视化技巧的100个练习 -- 50. 为回归分析创建残差图

  • 2026-09-10 21:39:35
python数据可视化技巧的100个练习 -- 50. 为回归分析创建残差图
重要性★★★★☆
难度★★★☆☆
你是一家房地产公司的数据分析师。
公司希望了解房价与房屋面积之间的关系。
他们收集了最近房屋销售的数据,包括每栋房屋的价格和面积。
你的任务是创建一个线性回归模型,根据房屋面积预测房价,然后创建一个残差图来评估模型的性能。
具体来说,你需要:
生成房屋价格和面积的样本数据。
进行线性回归分析。
创建一个残差图,以可视化实际价格与预测价格之间的差异。
为图表添加适当的标签和标题。
编写一个 Python 脚本,使用 NumPy、Pandas、Matplotlib 和 Scikit-learn 等库完成这些任务。
确保在代码中创建样本数据。

【数据生成代码示例】

import numpy as npnp.random.seed(42)square_footage = np.random.uniform(1000, 5000, 100)price = 100000 + 200 * square_footage + np.random.normal(0, 50000, 100)

【图表答案】

【代码答案】

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_squared_errornp.random.seed(42)square_footage = np.random.uniform(1000, 5000, 100)price = 100000 + 200 * square_footage + np.random.normal(0, 50000, 100)df = pd.DataFrame({'Square Footage': square_footage, 'Price': price})X = df[['Square Footage']]y = df['Price']model = LinearRegression()model.fit(X, y)predictions = model.predict(X)residuals = y - predictionsplt.figure(figsize=(10, 6))plt.scatter(predictions, residuals, color='blue', alpha=0.6)plt.axhline(y=0, color='red', linestyle='--')plt.xlabel('预测房价')plt.ylabel('残差')plt.title('房价预测的残差图')plt.show()
此代码展示了如何使用 Python 创建回归分析的残差图。
让我们逐步分解这个过程:
数据生成:
我们首先为分析生成样本数据。
我们创建了两个数组:“square_footage”和“price”。
“square_footage”数组包含 1000 到 5000 之间的随机值,表示房屋的面积。
“price”数组是根据面积的线性关系计算的,加上一些随机噪声以模拟现实世界的变异性。
数据准备:
我们从生成的数据中创建一个 pandas DataFrame。
这一步将我们的数据组织成结构化格式,便于操作。
线性回归:
我们使用 scikit-learn 的 LinearRegression 类创建并拟合我们的模型。
我们将数据分为特征(X)和目标(y)。
在这种情况下,“Square Footage”是我们的特征,“Price”是我们的目标。
“fit”方法在我们的数据上训练模型。
进行预测:
我们使用训练好的模型对输入数据进行预测。
这些预测代表根据面积估算的房价。
计算残差:
残差是实际值(y)与预测值之间的差异。
我们通过从实际价格中减去预测值来计算这些值。
创建残差图:
我们使用 matplotlib 创建残差图。
以下是绘图代码的每个部分的作用:
plt.figure(figsize=(10, 6)):设置图表的大小。
plt.scatter(predictions, residuals, color='blue', alpha=0.6):创建预测价格与残差的散点图。
alpha 参数设置点的透明度。
plt.axhline(y=0, color='red', linestyle='--'):在 y=0 处添加一条水平线,以帮助可视化残差在零上方和下方的分布。
plt.xlabel() 和 plt.ylabel():为 x 轴和 y 轴添加标签。
plt.title():为图表添加标题。
plt.show():显示图表。
生成的残差图使我们能够直观地评估回归模型的性能。
在理想情况下,残差应随机分布在 y=0 的水平线周围。
残差图中的任何模式都可能表明模型存在问题,例如非线性或异方差性。
这个练习展示了 Python 数据操作和可视化的必备技能,包括使用 NumPy 进行数值运算,使用 Pandas 进行数据结构化,使用 scikit-learn 进行机器学习任务,以及使用 matplotlib 创建信息丰富的可视化。

【小知识】

残差图是回归分析中的重要工具,用于检查线性回归的假设。
完美的残差图将显示没有明显模式的随机点分布。
残差图中的模式可能表明存在问题,如非线性、异方差性或需要额外的预测变量。
在此示例中使用的 scikit-learn 库是 Python 中最受欢迎的机器学习库之一。
在房地产分析中,除了房屋面积之外,通常还会包括其他因素(如位置、房屋年龄等),以实现更准确的价格预测。
numpy.random.seed() 函数用于确保随机数生成的可重复性,这对于数据科学项目中一致的结果至关重要。
plt.scatter() 中的 alpha 参数控制点的透明度,这对于可视化重叠数据点非常有用。


系列完整内容可以在公众号主页搜索或点击分栏找到,欢迎扫码关注预防迷路找不到。感谢您的支持与相伴。

最新文章

随机文章