3.4 使用线性回归预测房价

现在我们已经了解了基础知识,让我们将这些概念应用于实际数据集。以Harrison和Rubinfield在1978年收集的波士顿住房价格数据集(http://lib.stat.cmu.edu/datasets/boston)为例。该数据集包含506个样本。每个房屋都有以下13个属性:

  • CRIM——城镇人均犯罪率
  • ZN——划定面积超过25 000平方英尺[1]的住宅用地比例
  • INDUS——每个城镇非零售业务的用地比例
  • CHAS——查尔斯河(Charles River)虚拟变量(dummy variable)(如果比邻河边则为1;否则为0)
  • NOX——一氧化氮浓度(百万分之几)
  • RM——每个住宅的平均房间数
  • AGE——1940年之前建造的自有住房的比例
  • DIS——到5个波士顿就业中心的加权距离
  • RAD——径向公路的可达性指数
  • TAX——每10 000美元的全值财产税率
  • PTRATIO——各镇师生比例
  • LSTAT——收入较低的公民在人口中的百分比
  • MEDV——拥有住房的中位数,单位为$1000

我们将使用TensorFlow估计器来构建线性回归模型。

1)导入所需的模块:

094-01

2)下载数据集:

094-02

3)定义数据中的特征,并为了易于处理和可视化将其转换为pandas DataFrame

094-03

4)目前,我们正在使用所有特征。我们建议你检查不同特征之间的相关性以及预测标签MEDV,以选择最佳特征并重复实验:

094-04

5)为估算器创建输入函数。该函数返回带有元组的tf.Data.Dataset对象:批量化的特征和标签。用该输入函数来创建train_input_fnval_input_fn

094-05

6)实例化LinearRegressor估计器。用训练数据和train_input_fn对其进行训练,并通过val_input_fn评估训练后的模型来得到验证数据集的结果:

095-01

7)进行预测,结果如图3-1所示。

095-02
095-03

图3-1 基于LinearRegression估算器产生的预测值

线性回归器的TensorBoard图如图3-2所示。

096-01

图3-2 线性回归器TensorBoard图

该图显示了整个过程中使用的数据、操作和节点的流程。要获取估算器的TensorBoard图,你只需在实例化Estimator类时定义model_dir即可:

097-01

[1]1平方英尺=0.092 903平方米。——编辑注