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 类创建并拟合我们的模型。在这种情况下,“Square Footage”是我们的特征,“Price”是我们的目标。plt.figure(figsize=(10, 6)):设置图表的大小。plt.scatter(predictions, residuals, color='blue', alpha=0.6):创建预测价格与残差的散点图。plt.axhline(y=0, color='red', linestyle='--'):在 y=0 处添加一条水平线,以帮助可视化残差在零上方和下方的分布。plt.xlabel() 和 plt.ylabel():为 x 轴和 y 轴添加标签。在理想情况下,残差应随机分布在 y=0 的水平线周围。残差图中的任何模式都可能表明模型存在问题,例如非线性或异方差性。这个练习展示了 Python 数据操作和可视化的必备技能,包括使用 NumPy 进行数值运算,使用 Pandas 进行数据结构化,使用 scikit-learn 进行机器学习任务,以及使用 matplotlib 创建信息丰富的可视化。【小知识】
残差图是回归分析中的重要工具,用于检查线性回归的假设。残差图中的模式可能表明存在问题,如非线性、异方差性或需要额外的预测变量。在此示例中使用的 scikit-learn 库是 Python 中最受欢迎的机器学习库之一。在房地产分析中,除了房屋面积之外,通常还会包括其他因素(如位置、房屋年龄等),以实现更准确的价格预测。numpy.random.seed() 函数用于确保随机数生成的可重复性,这对于数据科学项目中一致的结果至关重要。plt.scatter() 中的 alpha 参数控制点的透明度,这对于可视化重叠数据点非常有用。
系列完整内容可以在公众号主页搜索或点击分栏找到,欢迎扫码关注预防迷路找不到。感谢您的支持与相伴。
