PDF 物理页索引 270
文件中的第 271 页 · 印刷页码:254
人工智能与大数据技术导论
抽取前面12000个样本数据为训练集,最后5000个样本数据为验证集:
下面打印各个数据集的统计信息:
254
PDF 物理页索引 271
文件中的第 272 页 · 印刷页码:255
结果如图8-51所示。
结果如图8-52所示。
结果如图8-53所示。
第8章 TensorFlow
255
PDF 物理页索引 272
文件中的第 273 页 · 印刷页码:256
结果如图8-54所示。
在讲到相关性度量的时候,有一个系数用来度量相似性(距离),这个系数叫作皮尔逊系数,在统计学中学过,只是当时不知道还能用到机器学习中来(这更加让笔者觉得机器学习离不开统计学)。皮尔逊相关系数(PearsonCorrelationCoefficient)用于度量两个变量之间的相关性,其值介于-1与1之间,值越大则说明相关性越强。两个变量之间的皮尔逊相关系数定义为两个变量之间的协方差和标准差的商。比如,各个特征之间,或者各个特征与标签之间。它的值的意思如下。
-1.0:完全负相关。
0.0:不相关。
1.0:完全正相关。
下面让我们来看一下样本数据的相关性:
人工智能与大数据技术导论
256
PDF 物理页索引 273
文件中的第 274 页 · 印刷页码:257
理想情况下,我们选取那些与标签具有强相关性的特征,同时特征之间尽量不具有强相关性(即都是尽量独立的信息)。
我们定义一个特征列结构:
定义一个输入函数:
定义一个模型训练函数:
第8章 TensorFlow
257
PDF 物理页索引 274
文件中的第 275 页 · 印刷页码:258
人工智能与大数据技术导论
258
PDF 物理页索引 275
文件中的第 276 页 · 印刷页码:259
我们选取了收入和维度作为特征变量,获取相关的训练集和验证集,然后训练模型:
第8章 TensorFlow
259
PDF 物理页索引 276
文件中的第 277 页 · 印刷页码:260
人工智能与大数据技术导论
训练结果如图8-56、图8-57所示。
260
PDF 物理页索引 277
文件中的第 278 页 · 印刷页码:261
正如前面所讨论的,latitude和median housevalue并不是线性关系,而是在洛杉矶和旧金山附近有两个突起。执行下面的代码来查看:
结果如图8-58所示。
<matplotlib.collections.PathCollection at 0x7fb98d870a50>
下面我们采用分桶技术来更好地使用维度特征:
开始训练模型:
第8章 TensorFlow
261
PDF 物理页索引 278
文件中的第 279 页 · 印刷页码:262
training examples=selected training examples, training targets=training targets, validation\_examples=selected validation\_examples, validation targets=validation targets)
结果如图8-59、图8-60所示。
人工智能与大数据技术导论
262
PDF 物理页索引 279
文件中的第 280 页 · 印刷页码:未识别
第9章
TensorFlow高级知识
本章是第8章内容的延续,主要阐述几个高级主题,包括特征交叉、正则化、逻辑回归和分类。
9.1 特征交叉
特征交叉(FeatureCrosses)是通过将单独的特征进行组合(相乘或求笛卡尔积)而形成的合成特征。特征交叉有助于把非线性关系表示为线性关系。比如,对于如图9-1所示的非线性问题,我们无法画任何一条线来分开蓝色(深色)和黄色(浅色)的点(它们可能代表健康和不健康)。
9.1.1 什么是特征交叉
要解决图9-1所示的非线性问题,我们可以创建一个特征交叉(见图9-2)。特征交叉是指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。cross(交叉)这一术语来自cross product(向量积)。我们通过将 $\mathrm { X } _ { 1 }$ 与 $\mathbf { X } _ { 2 }$ 交叉组合来创建一个名为 ${ \bf X } _ { 3 }$ 的特征交叉: ${ \bf X } _ { 3 } { = } { \bf X } _ { 1 } { \bf X } _ { 2 }$ 。像处理任何其他特征一样来处理这个新建的 ${ \bf X } _ { 3 }$ 特征交叉。线性公式变为: $\mathrm { y } { = } \mathrm { b } + \mathrm { w } _ { 1 } \mathrm { x } _ { 1 } { + } \mathrm { w } _ { 2 } \mathrm { x } _ { 2 } { + } \mathrm { w } _ { 3 } \mathrm { x } _ { 3 }$ 。这样就可以使用线性算法了。虽然 ${ \bf W } _ { 3 }$ 编码了非线性信息,但我们不需要改变线性模型的训练方式就能确定 ${ \bf W } _ { 3 }$ 的值。