覆盖主要内容
版本: 6.1.0

波士顿房价预测

案例介绍

本案例使用经典的波士顿房价数据集来训练模型,然后用模型来测算房价。

数据集介绍

数据集来源:http://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html

房价和哪些因素有关?很多人可能对这个问题特别敏感,随时可以列出很多,如房子面积、房子地理位置、周边教育资源、周边商业资源、房子朝向、年限、小区情况等。在波士顿房价数据集里,它总共收集了14个属性,具体如下表所示。

名称说明
CRIM城镇人均犯罪率
ZN城镇超过25,000平方英尺的住宅区域的占地比例
INDUS城镇非零售用地占地比例
CHAS是否靠近河边,1为靠近,0为远离
NOX一氧化碳浓度
RM每套房产的平均房间个数
AGE在1940年之前就盖好,且业主自住的房子的比例
DIS与波士顿市中心的距离
RAD周边高速公道的便利性指数
TAX每10,000美元的财产税率
PTRATIO小学老师的比例
B城镇黑人的比例
LSTAT地位较低的人口比例
MEDV房价中位数

从这些指标里可以看到中美文化的一些差异。当然,这个数据是在1993年之前收集的,可能和现在会有差异。不要小看了这些指标,实际上一个模型的好坏和输入特征的选择关系密切。大家可以思考一下,如果要在中国测算房价,你会收集哪些特征数据?这些特征数据的可获得性如何?收集成本多高?

案例操作

“线性回归”组件实现了线性回归算法。我们使用该组件来进行模型训练,工作流如下图所示。首先使用“加载文件”来读取本案例所需的数据,其次使用“数据预处理”进行数据标准化操作,并使用“数据抽样”进行数据抽样,抽样比例为80%,即训练数据为80%,测试数据为20%,然后“线性回归”组件使用默认参数,最后将数据和模型连接至“测试和评分”进行评分。首先从左边的组件列表中选择对应组件,将其拖拽至右侧的画布中,然后设置其参数即可。

1、我们可以使用“加载文件”组件来读取本案例所需的数据,在“加载文件”的“样例数据”tab页选择“housing”数据集。此时我们可以看见该数据集的基本信息:共有506个样本,每个样本有14个特征(13个特征,1个目标特征)

2、在运行“加载文件”组件后,我们可通过右键菜单查看数据。通过观察数据,我们发现特征数据的范围相差比较大,最小的在10-3级别,而最大的在102级别,看来我们需要先把数据进行归一化处理(或称为标准化处理)。“数据预处理”是一个集成了多种数据预处理方法的组件,其中就包括标准化处理,我们使用该组件来对所有属性进行处理。

下图为“数据预处理”组件的参数设置,我们选择“标准化属性”并点击“添加预处理”,此处我们使用默认参数。

3、为了评估模型的性能和泛化能力,我们还需将数据划分为训练集和测试集。其中训练集用于训练模型,测试集用于评估模型在未知数据上的表现,避免过拟合。“数据抽样”方便用户把一个数据拆分为两个集合(抽样数据及剩余数据),拆分后的数据其中一个可用于模型训练即作为训练集,另一个可作为测试集使用。我们使用该组件来对数据进行拆分。

下图为“数据抽样”组件的参数设置,我们选择“固定比例”进行抽样,并设置比例为80%,即训练数据为80%,测试数据为20%。

4、将数据处理好之后我们就需要将其传送给模型来进行房价预测。分析本案例的数据,我们可以得到要预测的因变量是连续的,因此我们可以选择回归模型来实现需求。我们使用“线性回归”组件进行建模分析。

下图为“线性回归”组件的参数设置,此处我们使用默认参数。

5、最后我们还需对模型的性能进行一系列评估。运行“测试和评分”组件,并点击“查看结果”,分别在训练集和测试集上进行测试,得到如下一些了分数。例如:第一个度量指标是“MSE(均方误差)”,它用于评价数据的变化程度,其值越小则说明模型拟合实验数据的能力越强;第二个度量指标是“RMSE(均方误差)”,其是均方误差的算术平方根,其值越小则说明模型拟合实验数据的能力越强。