首页 > 解决方案 > 如何绘制两个连续值之间的线性回归?

问题描述

我正在尝试实施机器学习算法来预测纽约市的房价。

现在,当我尝试绘制(使用Seaborn)我的房价数据集的两列之间的关系时:“gross_sqft_thousands”(以千平方英尺为单位的房产总面积)和目标列“sale_price_millions” ,我得到一个像这样的奇怪情节:

Gross_sqft_thousands 与 sale_price_millions

用于绘图的代码:

sns.regplot(x="sale_price_millions", y="gross_sqft_thousands", data=clean_df);

当我尝试绘制商业单位的数量(commercial_units 列)与 sale_price_millions 的关系时,我也得到了一个像这样的奇怪图:

在此处输入图像描述

这些奇怪的图虽然在相关矩阵中,但 sale_price 与两个变量(gross_sqft_thousands 和 Commercial_units)的相关性非常好。

我做错了什么,我应该怎么做才能得到很好的情节,用更少的点和清晰的拟合像这样的情节:

点数少的好情节

这是我的数据集的一部分:

在此处输入图像描述

标签: pythonpandasmatplotlibplotseaborn

解决方案


您的房价数据集比tipsSeaborn 示例图中显示的数据集大得多,因此使用默认设置制作的散点图将非常拥挤。

第二个图看起来很“奇怪”,因为它绘制了一个(实际上)连续变量销售价格与一个整数值变量total_units

想到以下解决方案:

  1. 使用类似的东西对数据集进行下采样sns.regplot(x="sale_price_millions", y="gross_sqft_thousands", data=clean_df[::10])。该[::10]部件每 10 行从clean_df. 您也可以尝试clean_df.sample(frac=0.1, random_state=12345),它随机抽取所有行的 10% 而不进行替换(使用随机种子来实现可重复性)。

  2. 使用 减小散点图点的 alpha(不透明度)和/或大小sns.regplot(x="sale_price_millions", y="gross_sqft_thousands", data=clean_df, scatter_kws={"alpha": 0.1, "s": 1})

  3. 对于图 2,使用 向 y 轴变量添加一点“抖动”(随机噪声)sns.regplot(..., y_jitter=0.05)

有关更多信息,请查看 Seaborn 文档regplothttps ://seaborn.pydata.org/generated/seaborn.regplot.html


推荐阅读