二 机器学习之加州房价预测

上一部分介绍了软件的安装与配置,这一部分主要是接下来比较重要的部分 。
六、创建测试集与训练集
在这一阶段保留部分数据听起来可能有些奇怪 。在我们决定要用哪种算法之前,我们应该去了解整体 。这是真的,但是你的大脑是一个惊人的模式检测系统,这意味着它容易过度拟合:如果你查看测试集,你可能会无意中发现一些测试数据中的有趣模式,它引导选择特定类型的机器学习模型 。当我们使用测试估计泛化错误时设置,我们的估计将过于乐观,于是我们将启动一个系统,将不会表现和预期一样好,这叫做数据窥探偏差 。
创建一个测试集是比较简单的,我们只需要随机选择一些例子,一般是数据集的20%,然后把它们放在一边 。
由于测试数据是随机选取,因此每次运行这个程序,测试集数据并不相同 。要想使每次测试集产生的均相同,只需给定特定的 。这一步主要引用的是-Learn包,这个包可以将数据集分成许多不同的子集 。
设置为0.2,=42 。
查看一下测试集的前几行:
这样我们是采用的随机抽样的方法,但当数据集不够大的时候 。采用这种方法有采样偏差的风险 。
如果专家告诉你,收入中位数是一个非常重要的参数,那么你需要保证测试集与整个数据集在收入中位数这个特征上的分布一致 。
下面的代码通过将中间收入除以1.5(以限制收入类别的数量)并使用ceil(以具有离散类别)进行舍入,然后将大于5的所有类别合并到类别5中来创建收入类别属性 。
现在我们可以根据收入类别进行分层抽样了 。我们可以用-Learn里面 的it类 。
我们可以通过查看整个数据集的收入类别来看一下是否达到了预期的目的 。

二  机器学习之加州房价预测

文章插图
【二机器学习之加州房价预测】我们花了相当大的时间在测试集的建立上,但这对于机器学习来说是十分有必要的 。
七、进一步探索和分析数据
到目前为止,我们只是快速浏览了一下数据,就可以大致了解正在操作的数据类型 。现在的目标是更深入一步 。
首先,确保你已经把测试设置放在一边,你只是在训练集上进行操作 。此外,如果训练集非常大,您可能需要对测试集进行采样,以使操作简单快速 。在我们的例子中,这个集合非常小,所以你可以直接在整个集合上工作 。让我们创建一个副本,以便您可以在不损害训练集的情况下使用它:
用图形化表示
下面我们查看房价与地理位置、人口的关系 。可以知道,房价与人口以及位置密切相关;人口密度越高、离海岸越近,价格也越高 。
我们通过程序语句来看一下具体的可视化图像 。
其中的alpha=0.1是将图像中高密度的点更加形象的展示出来 。
其实可以做到更好:把房价和地理位置通过地图和不同的颜色展现出来 。“s”表示了街区的人口,“c”表示的是价格的不同颜色,“cmap”是颜色地图,从低价到高价 。
查看特征间的相关性
二  机器学习之加州房价预测

文章插图
因为这个数据集并不是很大,所以我们可以很容易的计算每个特征之间的标准相关性 。首先来分析一下相关系数:
从结果中可以看到,相关系数大小是从-1到+1的,接近1时表示相关性很大,接近-1时表示相关性很小,或者说几乎没有相关性 。我们可以看到,房屋价值的中位数趋向于当收入中位数上升时上升 。当系数接近-1时,表示有很强的负相关性;你可以看到一个很小的负相关性在纬度和房屋中值之间(即,价格有轻微的趋势你往北走的时候就越低) 。最后,接近零的系数意味着线性相关 。