《Python从入门到人工智能》完整目录

目 录
图像

前言 2
第一部分 Python基础 18
第1章 Python安装配置 18
1.1 问题:Python能带来哪些优势? 18
1.2安装Python 18
1.2.1在Linux系统上安装 19
1.2.2在Windows系统上安装 20
1.2.3 在macOS系统上安装 20
1.3 配置开发环境 20
1.3.1 自带开发环境IDLE 20
1.3.2 安装配置Pycharm 22
1.3.3 Linux下配置Jupyter book 22
1.3.4 Windows下配置Jupyter book 23
1.4 试运行Python 24
1.5 后续思考 28
1.6 小结 28
第2章 变量和数据类型 29
2.1 问题:Python是如何定义变量? 29
2.2 变量 29
2.2.1 给变量赋值 29
2.2.2变量的命名规则 30
2.2.3多重赋值 30
2.3 字符串 31
2.3.1 字符串的多种表示 31
2.3.2 字符串的长度 32
2.3.3 拼接字符串 32
2.3.4 字符串常用方法 32
2.3.5 打印字符串 33
2.4 数字与运算符 34
2.4.1 算术运算符 34
2.4.2 关系运算符 35
2.4.3 逻辑运算符 35
2.4.4 赋值运算符 35
2.5数据类型转换 36
2.5.1 将整数和浮点数转换为字符串 36
2.5.2 把整数转换为浮点数 36
2.5.3 把浮点数转换为整数 36
2.5.4 把字符串转换为数字 37
2.5.5 使用input函数 37
2.6 注释 38
2.7 后续思考 38
2.8小结 38
第3章 列表和元组 39
3.1问题:如何存取更多数据? 39
3.2 列表概述 39
3.3 如何访问列表元素 39
3.3.1 获取一个元素 40
3.3.2 获取连续多个元素 41
3.3.3 遍历列表 41
3.3.4 访问列表经常出现的一个问题 42
3.4 对列表进行增、删、改 42
3.4.1 添加新元素到列表 42
3.4.2 从列表中删除元素 43
3.4.3 修改列表中的元素 44
3.5 统计分析列表 44
3.5.1 求列表最大(小)值 44
3.5.2 求列表总和或平均值 45
3.5.3 求列表元素出现次数及对应索引 45
3.5.4 求列表元素总数 45
3.6 组织列表 45
3.6.1 使用sort()函数 46
3.6.2 使用sorted()函数 46
3.6.3 使用reverse()函数 47
3.7 生成列表 47
3.7.1range()函数 47
3.7.2用range()创建列表 48
3.8 元组 48
3.8.1 定义元组 48
3.8.2 查看元组中元素 49
3.8.3 使用tuple()生成元组 49
3.8.4 元组特殊用途 50
3.8.5 元组解包 50
3.9后续思考 50
3.10小结 51
第4章 if语句与循环语句 52
4.1 问题:Python控制语句有何特点? 52
4.2 if语句 52
4.2.1 if语句格式 52
4.2.2 if语句 53
4.2.3 使用and连接条件语句 53
4.2.4 元素是否在列表中 54
4.2.5 缩进易出现的问题 55
4.3 循环语句 55
4.3.1 for循环 56
4.3.2 while 循环 56
4.3.3 嵌套循环 57
4.3.4 break跳出循环 57
4.3.5 continue加快循环 58
4.3.6 列表推导式 58
4.3.7 后续思考 59
4.4 后续思考 59
4.5 小结 59
第5章 字典和集合 60
5.1 问题:当索引不好用时 60
5.2 一个简单字典实例 60
5.3 创建和维护字典 60
5.3.1 创建字典 61
5.3.2 添加键-值对 61
5.3.3 修改字典中值 61
5.3.4 删除字典中的键-值对 62
5.4 遍历字典 62
5.4.1 遍历字典所有的键-值对 62
5.4.2 遍历字典中所有的键 63
5.4.3 遍历字典中所有的值 63
5.5 集合 63
5.5.1 创建集合 64
5.5.2 集合的添加和删除 64
5.6 列表、元组、字典和集合的异同 65
5.7迭代器和生成器 65
5.7.1 迭代器 66
5.7.2 生成器 67
5.8 后续思考 67
5.9小结 68
第6章 函数 69
6.1 问题:如何实现代码共享 69
6.2 创建和调用函数 69
6.3 传递参数 71
6.3.1 形参与实参 71
6.3.2 位置参数 71
6.3.3 关键字参数 72
6.3.4 默认值 73
6.4 返回值 73
6.5 传递任意数量的参数 74
6.5.1 传递任意数量的实参 75
6.5.3 传递任务数量的关键字实参 76
6.6 lambda函数 76
6.7 生成器函数 77
6.8 把函数放在模块中 78
6.8.1 导入整个模块 78
6.8.2 导入需要的函数 80
6.8.3 导入所有函数 80
6.8.4 主程序 81
6.9 后续思考 82
6.10 小结 82
第7章 面向对象编程 83
7.1 问题:如何实现不重复造轮子? 83
7.2 类与实例 83
7.2.1 创建类 83
7.2.2 创建类的实例 85
7.2.3 访问属性 85
7.2.4 访问限制 86
7.2.5 内置装饰器 @property 87
7.3 继承 88
7.3.1 使用super方法 88
7.3.2 重写父类方法 89
7.4 把类放在模块中 89
7.4.1 导入类 89
7.4.2 在一模块中导入另一个模块 89
7.5 标准库 90
7.5.1 datetime 91
7.5.2 math 92
7.5.3 random 92
7.5.4 os 93
7.5.5 sys 94
7.5.6 time 94
7.6 包 94
7.6.1 创建包 95
7.6.2 使用包 95
7.7 实例1:使用类和包 96
7.7.1 概述 96
7.7.2 实例功能介绍 96
7.7.3 代码实现 96
7.8 实例2:银行ATM机系统 98
7.8.1 实例概况 98
7.8.2实例功能介绍 99
7.8.3实现代码说明 99
7.8.4 后续思考 101
7.9 小结 101
第8章 文件与异常 103
8.1 问题:Python如何获取文件数据? 103
8.2基本文件操作 105
8.2.1 读取文件 105
8.2.2读取文件使用with语句 105
8.2.3 逐行读取文件 106
8.2.4 读取文件所有内容 107
8.2.5写入文件 108
8.2.6 中文乱码处理 109
8.3 目录操作 111
8.3.1 os简介 111
8.3.2 查看环境变量 111
8.3.3 判断是否为文件或目录 111
8.3.4 判断是否为文件或目录 112
8.3.5 join目录 112
8.4异常处理 112
8.4.1 如何使你的程序更可靠? 113
8.4.2 捕获异常 113
8.4.3 捕获多种异常 114
8.4.4 捕获所有异常 115
8.4.5 清理操作 116
8.4.6 try else finally return之间的关系 117
8.4.7 后续思考 118
8.5小结 118
第9章 NumPy基础 119
9.1 问题:为何说Numpy是打开人工智能的一把钥匙? 119
9.2 生成Numpy数组 120
9.2.1 从已有数据中创建数组 121
9.2.2 利用 random 模块生成数组 121
9.2.3 创建特定形状的多维数组 123
9.2.4 利用 arange、linspace 函数生成数组 124
9.3 获取元素 125
9.4 Numpy的算术运算 127
9.4.1对应元素相乘 127
9.4.2 点积运算 128
9.5 数组变形 129
9.5.1 更改数组的形状 129
9.5.2 合并数组 132
9.6 通用函数 134
9.7 广播机制 136
9.8 后续思考 138
9.8 小结 138
第10章 Pandas基础
10.1 问题:Pandas有哪些优势? 139
10.2 Pandas数据结构 139
10.3 Series 140
10.4 DataFrame 141
10.4.1 生成DataFrame 142
10.4.2 获取数据 142
10.4.3 修改数据 143
10.4.4 汇总统计 144
10.4.5选择部分列 145
10.4.6删除重复数据 145
10.4.7补充缺省值 146
10.4.8从MySQL中获取数据 148
10.4.9把pandas数据写入excel 150
10.4.10 应用函数及映射 151
10.4.11 时间序列 151
10.4.12 数据离散化 152
10.4.13 交叉表 153
10.5 后续思考 154
10.6 小结 155
第11章 数据可视化 156
11.1 问题:为何选择matplotlib? 156
11.2 可视化工具matplotlib 156
11.2.1 简单示例 156
11.2.2 添加标签和修改粗细 157
11.2.3 添加中文标注 158
11.2.4 让图像更美观、更丰富 159
11.2.6 改变图形形状 160
11.2.7 隐藏坐标轴 161
11.3 绘制多个子图 161
11.4 seaborn简介 163
11.4.1 查看单变量的分布规律 163
11.4.2 查看多变量之间的关系 164
11.5 图像处理与显示 165
11.6 pyecharts简介 165
11.6.1 pyecharts安装 166
11.6.2 降水量和蒸发量柱状图 166
11.6.3 从上海出发的航线图 167
11.7 实例:词云图 168
11.7.1 实例概况 169
11.7.2 代码实现 169
11.7.3 后续思考 171
11.8 小结 171
第二部分 人工智能基础 172
第12章 机器学习基础 172
12.1 问题:机器学习如何学习? 172
12.2 机器学习常用算法 172
12.2.1 监督学习 172
12.2.2 无监督学习 174
12.2.3半监督学习 175
12.3 机器学习一般流程 175
12.3.1 明确目标 176
12.3.2收集数据 176
12.3.3 数据探索 176
12.3.4 数据预处理 176
12.3.5 选择模型 177
12.3.6 定义损失函数 177
12.3.7评估模型 178
12.3.8性能评估指标 178
12.3.8 自动调参 179
12.4 机器学习常用技巧 179
12.4.1正则化 180
12.4.2 数据增强 181
12.5 实例1:机器学习如何学习的? 181
12.5.1 实例概述 181
12.5.2 查看数据分布情况 181
12.5.3 利用迭代方法求出参数 182
12.5.4 可视化模型 183
12.6 实例2:用Scikit-learn实现电信客户流失预测 184
12.6 .1 Scikit-learn简介 184
12.6.2实例概述 185
12.6.3 明确目标 185
12.6.4 导入数据 185
12.6.5 探索数据 188
12.6.6 数据预处理 190
12.6.7 选择模型 191
12.6.8 评估模型 191
12.6.9 模型解释与应用 192
12.6.10 后续思考 193
12.7 小结 193
第13章 神经网络 193
13.1 问题:神经网络能替换传统机器学习吗? 194
13.2 单层神经网络 195
13.3 多层神经网络 198
13.3.1 多层神经网络架构简介 198
13.3.2 各层之间的信息传输 198
13.4 输出层 199
13.4.1 回归问题 199
13.4.2二分类 199
13.4.3多分类 200
13.4.4 多标签分类 201
13.5 损失函数 201
13.5.1 均方误差 201
13.5.2交叉熵误差 202
13.6 正向传播 203
13.6.1 定义输入层 203
13.6.2 实现从输入层到隐含层 204
13.6.3 实现从隐含层到输出层 204
13.6.4 根据输出层计算损失值 205
13.7 误差反向传播 205
13.7.1 链式法则 205
13.7.2 加法的反向传播 206
13.7.3 乘法的反向传播 206
13.7.4 混合运算的反向传播 207
13.7.5 Python实现神经网络 208
13.8实例:用Python实现手写数字的识别 209
13.8.1 实例简介 209
13.8.2 数据说明 209
13.8.3 神经网络架构 210
13.8.4 准备数据 210
13.8.5 初始化参数 212
13.8.6 构建神经网络 213
13.8.7 定义损失函数 213
13.8.8 误差反向传播 214
13.8.9 梯度更新 214
13.8.10 训练模型 215
13.8.11 可视化结果 217
13.8.12 后续思考 218
13.9 小结 218
第14章 用PyTorch实现神经网络 219
14.1 为何选择PyTorch? 219
14.2 安装配置 220
14.2.1 安装CPU版PyTorch 220
14.2.2 安装GPU版PyTorch 221
14.3 Tensor简介 224
14.3.1 Tenor的基本操作 224
14.3.2 如何创建Tensor? 225
14.3.3 PyTorch与Numpy比较 225
14.4 autograd机制 226
14.4.1 autograd简介 226
14.4.2 使用antograd实现回归问题 227
14.5 构建神经网络的常用工具 229
14.5.1 神经网络构建工具箱nn 229
14.5.2 优化算法工具optim 230
14.6 数据处理工具 231
14.6.1 utils.data简介 232
14.6.2 torchvision简介 234
14.6.3 transforms 234
14.6.4 ImageFolder 235
14.7 实例1:用PyTorch实现手写数字识别 237
14.7.1背景说明 237
14.7.2导入模块 237
14.7.3加载及预处理数据 238
14.7.4可视化源数据 239
14.7.5 构建模型 239
14.7.6 定义损失函数 240
14.7.7 训练模型 240
14.7.8 可视化训练及测试损失值 242
14.8 实例2:用PyTorch实现回归问题 243
14.8.1 导入需要的库 243
14.8.2 生成数据 243
14.8.3 构建网络 244
14.8.4 定义一些超参数 244
14.8.5 定义损失函数 245
14.8.6 训练模型 245
14.8.7 可视化结果 245
14.9 小结 246
第15章 卷积神经网络 247
15.1 问题:传统神经网络有哪些不足? 247
15.2 卷积神经网络 247
15.2.1 卷积层 248
15.2.2 池化层 250
15.2.3 Flatten层 251
15.2.4 PyTorch构建卷积神经网络 251
15.3 实例:用PyTorch图像识别 253
15.3.1 概述 253
15.3.2 数据集说明 253
15.3.3 加载数据 254
15.3.4 构建网络 256
15.3.5 训练模型 258
15.3.6 获取图片真实标签 259
15.3.7 获取对应图片的预测标签 259
15.3.8测试模型 260
15.3.9后续思考 260
15.4 小结 260
第16章 提升模型性能的几种技巧 261
16.1 问题:为什么有些模型尝试了很多方法仍然效果不佳? 261
16.2 找到合适的学习率 261
16.3 正则化 262
16.3.1 权重衰减 262
16.3.2 归一化处理 263
16.3.3 Dropout 264
16.4 合理的初始化 265
16.4.1 全面初始化为零或某个数 265
16.4.2 初始化的随机数 266
16.4.3 Xavier 初始化 266
16.4.4 He初始化 266
16.5 选择合适的优化器 267
16.5.1 传统SGD和mini-batch SGD 267
16.5.2 带动量的SGD 267
16.5.3 AdaGrad算法 268
16.5.4 RMSProp算法 268
16.5.5 Adam算法 268
16.5.6 选择优化器的一般方法 268
16.6 GPU加速 269
16.6.1 单GPU加速 269
16.6.2 多GPU加速 270
16.7 后续思考 271
16.8 小结 271
第17章 Keras入门 272
17.1 问题:为何选择Keras架构? 272
17.2 Keras简介 274
17.2.1 Keras的安装 274
17.2.2 Keras特点 275
17.3 Keras常用概念 275
17.3.1 符号计算 276
17.3.2张量 276
17.3.3 数据格式(data_format) 276
17.3.4模型 277
17.3.5 批量大小(batch-size) 277
17.4 Keras常用层 277
17.4.1全连接层(Dense) 277
17.4.2 Dropout层 278
17.4.3卷积层(Conv2D) 278
17.4.4最大池化层(MaxPooling2D) 279
17.4.5 Flatten层 279
17.4.6 全局平均池化层 279
17.5 神经网络核心组件 279
17.5.1 层 280
17.5.2 模型 281
17.5.3优化器 281
17.5.4目标函数 281
17.6 keras的开发流程 282
17.7 实例-Keras程序的开发流程 283
17.7.1 构造数据 283
17.7.2 构造模型 283
17.7.3编译模型 284
17.7.4训练模型 284
17.7.5测试模型 285
17.7.6 保存模型 285
17.7.7 后续思考 285
17.8 小结 285
第18章 用Keras实现图像识别 286
18.1实例1:用自定义模型识别手写数字 286
18.1.1导入数据集,并初步探索数据集 286
18.1.2 数据预处理 287
18.1.3 定义模型结构 289
18.1.5 编译模型 290
18.1.6 训练模型 290
18.1.7 模型评估 290
18.2 实例2:用预训练模型识别图像 294
18.2.1 Keras中基于ImageNet的预训练模型 294
18.2.2 使用VGG16预训练模型实现图像识别 295
18.2.5 后续思考 298
18.3 小结 298
第19 章 Keras实现迁移学习 299
19.1 问题:如何发挥小数据的潜力? 299
19.2 迁移学习简介 299
19.3 迁移学习常用方法 300
19.3.1将卷积神经网络作为特征抽取器 300
19.3.2微调卷积部分 301
19.4实例:用keras实现迁移学习 302
19.4.1 下载数据 302
19.4.2 冻结不更新的层 303
19.4.3 导入需要的模块 303
19.4.4 添加一些层 303
19.4.5 编译损失函数 305
19.4.6 图像增强 305
19.4.7 训练模型 307
19.4.8 可视化训练过程 307
19.4.9 完整代码 308
19.4.10 后续思考 311
19.5小结 311
第20章 keras实现风格迁移 312
20.1 问题:如何捕捉图像风格? 313
20.2 通道与风格 314
20.3 内容损失与风格损失 316
20.3.1内容损失 316
20.3.2风格损失 316
20.4 格拉姆矩阵简介 318
20.4.1 Gram矩阵的定义 318
20.4.2 用Keras实现Gram矩阵 319
20.5 实例:Kreras实现风格迁移 319
20.5.1 加载数据 319
20.5.2 查看图像 320
20.5.3 预处理数据 321
20.5.4定义损失函数 322
20.5.5 选择优化器 325
20.5.6 完整代码 325
20.5.7 后续思考 331
20.6 小结 332