如何在两个连续值之间绘制线性回归?

时间:2019-06-02 14:02:36

标签: python pandas matplotlib plot seaborn

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

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

gross_sqft_thousands vs sale_price_millions

用于绘制的代码:

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

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

enter image description here

这些怪异的图,尽管在相关矩阵中,sale_price与两个变量(gross_sqft_thousands和commercial_units)具有很好的相关性。

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

great plot with fewer points

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

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

想到以下解决方案:

  1. 使用类似sns.regplot(x="sale_price_millions", y="gross_sqft_thousands", data=clean_df[::10])的格式对数据集进行下采样。 [::10]部分从clean_df中选择每10行。您也可以尝试clean_df.sample(frac=0.1, random_state=12345),它会随机采样所有行的10% 无需替换(使用随机种子获得可重复性)。

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

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

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