加州位于美国西南部,是美国经济较为发达、人口较为密集的行政区之一。加州的房价受到房龄、人口规模、地理位置等多种因素影响。本案例使用加州房价数据集,首先进行数据预处理和探索性数据分析,然后依次进行特征抽取、离散化、标准化、特征选择,最后建立线性回归模型对房价进行预测。
首先,读取 加州房价数据集 ,该数据集包含约2万个样本,含有房龄、居民收入、地理位置等9个影响房价水平的特征。本案例将着眼特征工程的角度,进行特征抽取、离散化、标准化和特征选择,最后使用线性回归模型对房价进行预测。
使用缺失值检测组件,查看数据集中是否存在缺失值。
数据缺失值情况:
过滤的缺失值行数:
如表中所示,除total_bedrooms字段含有207个缺失值以外,其他字段均不存在缺失值。
为确定对total_bedrooms进行填充的策略,使用直方图查看该变量的分布。
从上图可以看出,total_bedrooms呈现明显的右偏分布,中位数比均值更能代表该变量的中心趋势。
接下来对total_bedrooms进行缺失值填补,填补策略选择中位数。填充后的数据集如下所示。
完成缺失值处理后,进行探索性数据分析,以了解特征的分布以及特征之间的关系。
以经度(longtitude)为X轴,以纬度(latitude)为Y轴绘制散点图,以查看房屋的地理分布特征。
从上图中可以看出,该房屋的地理分布较为广泛,部分地理区域的数据较为稀疏。
绘制房屋到海距离(ocean_proximity)的饼图,以查看各类型房屋的占比情况。
从上图可以看出,有接近一半的房屋位于距离海边车程一小时的距离(<1H OCEAN),约三分之一的房屋位于内陆(INLAND),只有少部分房屋邻近海洋或湾区(NEAR OCEAN,NEAR BAY),几乎没有房屋位于岛上(ISLAND)。
以到海距离(OCEAN PROXIMITY)为分组变量,绘制房龄、房价、收入、居民数、人口规模、卧室总数、房间总数的雷达图。
从图中可以看出,岛上的房龄、房价明显高于其他地区,而人口规模、居民数、总房间数、总卧室数均低于其他地区。此外,内陆的居民收入、房龄、房价均较低。
由于到海距离为字符串,不能直接用于建模,将其转换为哑变量,转换结果如下所示。
接下来使用决策树离散化将经度和维度这两个特征进行分箱,设置最大分箱数为5。分箱结果如下所示。
然后绘制收入中位数的箱图,从图中可以看出该变量存在较多离群值。
由于数据集中存在离群值,使用Robust标准化方法,对房龄、房间总数、卧室总数、人口规模、居民数、居民收入进行标准化。
为筛选出对房价有较大影响的特征,使用递归特征消除组件对特征进行选择,设置特征选择模型为LASSO、保留50%的特征、每步递归消除1个特征。最终选择出的6个特征为房屋是否位于内陆、房龄、总卧室数、人口规模、居民数、居民收入水平。
已选择特征列: ocean_proximity_INLAND, housing_median_age, total_bedrooms, population, households, median_income
下面划分出训练集和测试集,其中测试集占比为20%。
以房价为因变量,输入先前通过递归特征消除方法选择的6个特征列训练线性回归模型,模型参数如下所示。
系数
截距
0.252983
从表中可以看出,房龄、居民数、居民收入水平与房价正相关,房屋位于内陆、人口规模与房价负相关,总卧室数对房价影响较小。
下面使用已训练的线性回归模型在测试集上进行预测,预测结果如下表所示。
最后对回归模型的效果进行评估。如表所示,线性回归模型的决定系数为0.626,即该模型能够解释测试集上62.6%的变异情况。