---
schema_version: "library-reader-v1"
source_type: "original_book"
title: "人工智能与大数据技术导论"
author: null
edition: null
publisher: null
year: null
isbn: "9787302517986"
library_document_id: "cd4f7678-cd9b-4971-bde0-e9ad46a6cc71"
source_sha256: "5011cdcf83cd5e047c93a1ce7465f970fc88be69c93b94be3d7fa5fbddbb43f0"
pdf_physical_page_count: 490
pdf_physical_page_index_base: 0
range_start: 230
range_count: 10
html_url: "https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71?start=230&limit=10"
markdown_url: "https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71.md?start=230&limit=10"
previous_url: "https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71.md?start=220&limit=10"
next_url: "https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71.md?start=240&limit=10"
---

# 人工智能与大数据技术导论

> 页码规则：PDF_PHYSICAL_PAGE_INDEX 是从 0 开始的权威文件物理页索引；PRINTED_PAGE 是页面中识别出的印刷页码，可能为空，二者不得混用。

## PDF_PHYSICAL_PAGE_INDEX=230 | PRINTED_PAGE=214

应该尽可能使用最高层级的API。较高级别的API更易于使用，虽然不如底层API那么灵活。建议先从最高级API入手，让所有组件正常运作起来。如果你希望在某些特定的建模方面更加灵活一些，则可以选择下一个级别。每个级别都是使用低级API构建的，因此降低层级是没问题的。

TensorFlow由以下两个组件组成：

图协议（graph protocol）缓冲区。

●执行（分布式）图的运行环境（runtime）。

这两个组件类似于Python代码和Python编译器。正如在多个平台上实现了Python编译器，从而可以执行Python代码，TensorFlow可以在不同的硬件平台（TPU、CPU和GPU）上运行图。

8.1.1 tf.estimator API

tf.estimator是最常用的API。我们可以使用它来完成机器学习中的大部分任务。当然，我们也可以使用较低层级（原生）的TensorFlowAPI，但使用tf.estimator会大大减少代码量。tf.estimator与scikit-learnAPI兼容。正如前面提到的，scikit-learn是热门的开源机器学习库，它是基于Python的。目前全球有超过10万名用户在使用scikit-learn。以下是用tf.estimator实现的线性分类程序（伪代码）：

8.1.2 Pandas 速成

Pandas是Python的一个开源数据分析的库，它广泛用在TensorFlow代码中。Pandas提供的数据结构Series和DataFrame极大地简化了数据分析过程中的一些烦琐操作。Series是一维数组，比如我们先引入Pandas API库，然后创建一个Series对象：

Series就是一个一维数组，每个数据对应一个索引值。上述例子的索引值和数据就是：

人工智能与大数据技术导论

214

## PDF_PHYSICAL_PAGE_INDEX=231 | PRINTED_PAGE=215

DataFrame是二维数据结构，即数据是以行和列的表格方式排列，就像数据库中的表(Table）。可以将DataFrame理解为由一个个Series组成的，每个Series都有一个名字（也可以看作字典结构），比如：

结果如下，索引是从0开始的整数。可以比作数据库表中的行号。

我们也可以直接把一个CSV文件中的数据导入数据帧中。CSV是一种通用的、相对简单的文件格式，在表格类型的数据中用途很广泛，很多关系型数据库都支持这种类型文件的导入导出，Excel 也能和CSV文件之间转换。CSV是 Comma-SeparatedValues（逗号分隔值）的简称，有时也称为字符分隔值，因为分隔字符也可以不是逗号。其文件是以纯文本形式存储表格数据的。CSV文件由任意数目的记录组成，记录间以某种换行符分隔。每条记录由字段组成，字段间的分隔符是其他字符或字符串，最常见的是逗号或制表符。下面这个例子就是把一个包含部分加州房屋数据的CSV文件装载到一个数据帧对象上：

上面的describe()函数用来显示DataFrame对象的统计信息，比如：

该函数给出了最小值、最大值、平均值、标准差等值。如果我们只想显示前面几行数据，则可以使用head()函数。head(n)返回前n行。若没指定，则要显示的元素的默认数量为5:

结果为：

第8章 TensorFlow

215

## PDF_PHYSICAL_PAGE_INDEX=232 | PRINTED_PAGE=216

人工智能与大数据技术导论

Pandas有强大的绘图功能。比如，我们可以使用hist()方法绘制直方图，用于分析某列的值的分布。

8.1.3 必要的 Python 知识

你有两种方法进行TensorFlow编码。一种是使用谷歌公司的在线环境(Colaboratory平台)。针对在线环境，我们只需要编写代码和执行即可，本章中的代码和结果都来自谷歌公司的在线开发环境。另一种是安装TensorFlow的本地开发环境。无论是哪种环境，对于TensorFlow编码，你都需要掌握一些Python知识。本节阐述怎么安装Python和TensorFlow本地开发环境，然后对Python语法做一些简述，以方便读者阅读本书的代码。

1. 本地安装

在百度上搜索“Anaconda 官网下载”，打开下载地址 https://www.anaconda.com/download/，如图8-3所示。

216

## PDF_PHYSICAL_PAGE_INDEX=233 | PRINTED_PAGE=217

下载后，执行EXE程序，就可以开始安装了，如图8-4所示。

单击Next按钮后，就正式进入了安装过程，如图8-5所示。

第8章 TensorFlow

217

## PDF_PHYSICAL_PAGE_INDEX=234 | PRINTED_PAGE=218

安装结束的界面如图8-6所示。

2. 安装TensorFlow

在开始菜单中找到Anaconda，单击 Anaconda Prompt 进入控制台（见图8-7），输入condainstall tensorflow下载和安装 TensorFlow，如图8-8所示。

人工智能与大数据技术导论

218

## PDF_PHYSICAL_PAGE_INDEX=235 | PRINTED_PAGE=219

输入y来安装，并下载安装包，如图8-9所示。

最后完成整个安装。输入condalist验证TensorFlow已经安装上了，如图8-10所示。

8.2 第一个 TensorFlow 程序

下面我们来看第一个TensorFlow程序。“#”部分是程序的注释，说明该部分程序的功能。为了方便读者查看中间代码的输出结果，我们把输出结果直接放在该代码的后面。

第8章 TensorFlow

219

## PDF_PHYSICAL_PAGE_INDEX=236 | PRINTED_PAGE=220

第一个TensorFlow代码的功能是使用加州1990年的房屋销售数据来训练一个线性回归模型，从而可以预测房屋中位价。

8.2.1 装载数据

装载数据代码如下：

结果如图 8-11 所示。

人工智能与大数据技术导论

220

## PDF_PHYSICAL_PAGE_INDEX=237 | PRINTED_PAGE=221

8.2.2 探索数据

在训练模型之前，对数据进行一些探索性分析。

结果如图8-12所示。

8.2.3 训练模型

我们使用TensorFlowEstimatorAPI的LinearRegressor线性模型。这个API完成模型的训练、评估和预测。

结果如图8-13所示。

在TensorFlow中需指定特征数据的类型，主要分为2种：Categorical和Numerical。

第8章 TensorFlow

221

## PDF_PHYSICAL_PAGE_INDEX=238 | PRINTED_PAGE=222

结果如图8-14所示。

为了让测试数据导入TensorFlow的LinearRegressor，下面我们定义一个输入函数，这个函数把Pandas特征数据转换为一个NumPy数组字典，然后基于这些数据使用TensorFlow的DatasetAPI来构建一个数据集。在输入函数中还指定了在模型训练时的批处理大小、是否预先打乱数据、重复的次数等。最后，这个输入函数为这个数据集构建一个迭代，并返回下一批的数据给LinearRegressor。输入函数代码如下：

222

## PDF_PHYSICAL_PAGE_INDEX=239 | PRINTED_PAGE=223

下面调用linear\_regressor的train()函数来训练模型。训练步骤为100步：

上面的lambda作为一个表达式，封装了my\_input\_fn()。

在上面的例子中，出现了2个超参数。

●steps:训练迭代的个数。每一步计算一批数据的误差，基于这个误差来修改模型的权重值（修改一次）。

batch size:一步中所使用的样本数量（样本的选择是随机的），比如SGD批处理大小为1。

简单来说，上述两个数字的乘积是已训练样本的总数。

8.2.4 评估模型

在模型训练后，我们就可以使用一些数据来评估这个模型。下面定义一个预测函数：

第8章 TensorFlow

223

下一段：[继续读取](https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71.md?start=240&limit=10)
