波士顿房价预测
案例介绍
本案例使用经典的波士顿房价数据集来训练模型,然后用模型来测算房价。
数据集介绍
数据集来源: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(均方误差)”,其是均方误差的算术平方根,其值越小则说明模型拟合实验数据的能力越强。