本书在不涉及大量数学与编程知识的前提下,从零开始,逐步带领读者熟悉并掌握当下最流行的基于Python 3的人工智能编程工具,包括但不限于数据分析(Pandas),以及支持单机(Scikitlearn)、深度(PyTorch、TensorFlow、PaddlePaddle)和分布式(PySparkML)机器学习的开源程序库,等等。
全书共分为4部分,分别如下。
(1) 入门篇: 包括对全书核心概念的指南性介绍,以及如何在多种主流PC操作系统上(如Windows、macOS和Ubuntu)配置基本编程环境的详细说明。
(2) 基础篇: 涵盖了Python 3.11的编程基础、基于Pandas 2.0的数据分析,以及使用Scikitlearn 1.3解决大量经典的单机(单核/多核)机器学习问题。
(3) 进阶篇: 介绍如何使用PyTorch 2.0、TensorFlow 2.12,以及PaddlePaddle 2.5,分别搭建多种深度学习神经网络框架。尝试基于PySpark 3.4的ML编程库完成一些常见的分布式机器学习任务。
(4) 实践篇: 利用全书所讲授的Python编程、数据分析,以及(单机、深度、分布式)机器学习知识,从事Kaggle多种类型的竞赛实战。同时,介绍如何使用Git工具,在Gitee与GitHub平台上更新和维护自己的日常代码与编程项目。
综上,本书面向所有对人工智能领域感兴趣的读者,特别适合从事数据挖掘、机器学习、计算机视觉、自然语言处理等相关技术研发和应用实践的初学者。
本书在不涉及大量数学与编程知识的前提下,从零开始,逐步带领读者熟悉并掌握当下最流行的基于Python 3的人工智能编程工具:包括,但不限于数据分析(Pandas),以及支持单机(Scikit-learn)、深度(PyTorch、TensorFlow、PaddlePaddle)和分布式(PySpark-ML)机器学习的开源程序库等。
自本书的第1版《Python机器学习及实践: 从零开始通往Kaggle竞赛之路》于2016年付梓以来,我始终投身于人工智能(Artificial Intelligence,AI)新产品与技术的研发领域。时隔多年,回望这段时间,我亲身感受到了人工智能理论和技术的飞速发展,几乎可以用日新月异一词来形容。
在这段时间里,我看到了大量承载着前沿人工智能理念和技术的次世代原型产品被孵化出来,不断刷新着人类的认知。这些典型的例子包括波士顿动力(Boston Dynamics)公司的机器人Atlas可以像人类运动员一样,实现跑步越障、后空翻和惊人的三级跳动作;OpenAI发布的聊天机器人ChatGPT能够与用户进行多轮流畅的对话、创作故事,甚至编写软件代码;DeepMind构建的AlphaGo系列对弈程序,接连战胜了多位人类顶尖围棋大师;以及国内外自动驾驶平台(如特斯拉FSD和百度Apollo)所支持的新型智能汽车陆续投入量产,等等。
同时,许多世界顶级科研人员在机器视觉、语音合成、阅读理解等人工智能的细分领域进行着不懈的理论探索。在这期间,我们不断听闻人工智能已经在这些细分领域逐渐超越人类的平均水平。这些细分的领域技术经过工程化的打磨和融合之后,又重新在一些既有的人工智能产品上给我们带来了全新的用户体验(例如,更加实时和准确的机器同声传译;或者是那些敢同真人打电话,聊天过程完全不尬,甚至还略带点儿萌腔的语音助手)。
这些新的技术进步和大量的读者来信时刻鞭策着我。许多热情洋溢的读者来信肯定了上一版书籍所给予他们的莫大帮助;同时,也有资深的前辈指出了其中的疏漏与不足。在这里我一并诚挚地感谢大家!
从上一个版本开始,书中一些关键的基于Python 3的机器学习与数据分析工具(包括但不限于Pandas、Scikitlearn、PyTorch、TensorFlow、PaddlePaddle、PySpark)均已经有了较大幅度的版本更新,甚至一些工具的常用API也进行了调整和修改。因此,本人决定开始新一版书籍的规划与写作。同时,考虑到本书将更加广泛地涉及人工智能编程实践的方方面面,自2024年始,本书正式更名为《Python人工智能编程实践》。
《Python人工智能编程实践》将持续跟进Python、Pandas、Scikitlearn、PyTorch、TensorFlow、PaddlePaddle,以及PySparkML的更新,维护书籍内容的先进性和代码的可用性。同时,本书将继续保持我们的核心理念: 力求减少读者对编程技能和数学知识的过分依赖,进而降低理解与实践人工智能的门槛;并试图让更多的兴趣爱好者体会到使用单机、深度乃至分布式机器学习方法解决实际问题的乐趣。
全书所介绍的上述核心工具,均是作者本人长期总结行业经验和精心筛选的成果。在面对现实中的工程或者科研难题,甚至是参加一些公开竞赛(如Kaggle、天池竞赛等)的时候,相信本书都能够帮助读者使用Python编程语言快速上手,并结合一系列经典的开源工具,搭建行之有效的计算机程序来解决实际问题。
在大数据时代,只要是与数据相关的从业人员,掌握Python编程、数据分析乃至机器学习的能力,都是一个不错的职业加分项。不论是在金融、统计、数理研究、物理计算、社会科学、工业工程等领域的从业者,还是在互联网行业的程序员、数据分析师、运营人员、产品经理等,都会对本书有着不同程度的学习需求。
本书所介绍的知识,相信一定能够帮助读者通过一些专业类的培训、考试和资格评定,如国家人工智能工程技术职业培训、省/市级人工智能工程师职称评定、注册数据分析师认证(CDA、CPDA),等等。鉴于内容的入门性和普适性,本书也可以被广泛用于初、高中生的信息学兴趣培养,专科职业教育,本科、研究生通识课程的讲授,等等。
衷心希望每一位读者都能够从本书中获益,这也是对我最大的支持和鼓励。普及人工智能,使机器学习的理论与实践成为一种大众的通识教育,始终是我编写此系列书籍的长期目标和动力。
范淼
2024年1月
入门篇
第1章全书指南31.1Python编程3
1.2数据分析5
1.3机器学习6
1.3.1任务8
1.3.2经验8
1.3.3表现9
1.4Kaggle竞赛11
1.5Git代码管理12
小结13
第2章基本环境搭建与配置14
2.1Windows下基本环境的搭建与配置14
2.1.1查看Windows的版本与原始配置14
2.1.2下载并安装Anaconda3(Windows版本)15
2.1.3创建虚拟环境python_env16
2.1.4在虚拟环境python_env下安装Jupyter Notebook17
2.2macOS下基本环境的搭建与配置18
2.2.1查看macOS的版本与原始配置18
2.2.2下载并安装Anaconda3(macOS版本)19
2.2.3创建虚拟环境python_env20
2.2.4在虚拟环境python_env下安装Jupyter Notebook21
2.3Ubuntu下基本环境的搭建与配置22
2.3.1查看Ubuntu的版本与原始配置22
2.3.2下载并安装Anaconda3(Linux版本)23
2.3.3创建虚拟环境python_env23
2.3.4在虚拟环境python_env下安装Jupyter Notebook25Python人工智能编程实践目录2.4Jupyter Notebook使用简介26
2.4.1在虚拟环境python_env下启动Jupyter Notebook26
2.4.2创建一个.ipynb文件27
2.4.3试运行.ipynb文件内的Python 3程序28
2.5PyCharm使用简介28
2.5.1安装PyCharm29
2.5.2在虚拟环境python_env下启动PyCharm30
2.5.3创建一个.py文件31
2.5.4试运行.py文件内的Python 3程序32
小结32
基础篇
第3章Python编程基础353.1Python环境配置35
3.1.1基于命令行/终端的交互式编程环境35
3.1.2基于Web的交互式开发环境36
3.1.3集成式开发环境38
3.2Python基本语法39
3.2.1注释39
3.2.2赋值40
3.2.3缩进41
3.3Python数据类型41
3.4Python数据运算44
3.5Python流程控制46
3.5.1分支语句47
3.5.2循环控制48
3.6Python函数设计49
3.7Python面向对象编程49
3.8Python编程库(包)/模块导入51
3.9Python编程综合实践53
小结54
第4章Pandas数据分析55
4.1Pandas环境配置55
4.1.1使用Anaconda Navigator搭建和配置环境56
4.1.2使用conda命令搭建和配置环境57
4.2Pandas核心数据结构58
4.2.1序列58
4.2.2数据框59
4.3Pandas读取/写入文件数据60
4.3.1读取/写入CSV文件数据60
4.3.2读取/写入JSON文件数据62
4.3.3读取/写入Excel文件数据64
4.4Pandas数据分析的常用功能67
4.4.1添加数据67
4.4.2删除数据69
4.4.3查询/筛选数据69
4.4.4修改数据70
4.4.5数据统计71
4.4.6数据排序72
4.4.7函数应用73
4.5Pandas数据合并74
4.6Pandas数据清洗75
4.7Pandas数据分组与聚合77
小结78
第5章Scikitlearn单机机器学习80
5.1Scikitlearn环境配置81
5.1.1使用Anaconda Navigator搭建和配置环境81
5.1.2使用conda命令搭建和配置环境82
5.2Scikitlearn无监督学习83
5.2.1降维学习与可视化83
5.2.2聚类算法91
5.3Scikitlearn监督学习98
5.3.1分类预测模型98
5.3.2数值回归模型114
5.4Scikitlearn半监督学习模型123
5.4.1自学习框架123
5.4.2标签传播算法126
5.5单机机器学习模型的常用优化技巧127
5.5.1交叉验证127
5.5.2特征工程129
5.5.3参数正则化135
5.5.4超参数寻优139
5.5.5并行加速训练140
小结142
进阶篇
第6章PyTorch/TensorFlow/PaddlePaddle深度学习1476.1PyTorch/TensorFlow/PaddlePaddle环境配置148
6.1.1PyTorch环境配置148
6.1.2TensorFlow环境配置150
6.1.3PaddlePaddle环境配置151
6.2全连接神经网络153
6.2.1全连接神经网络的PyTorch实践153
6.2.2全连接神经网络的TensorFlow实践157
6.2.3全连接神经网络的PaddlePaddle实践159
6.3卷积神经网络161
6.3.1卷积神经网络的PyTorch实践162
6.3.2卷积神经网络的TensorFlow实践166
6.3.3卷积神经网络的PaddlePaddle实践168
6.4残差神经网络171
6.4.1残差神经网络的PyTorch实践172
6.4.2残差神经网络的TensorFlow实践175
6.4.3残差神经网络的PaddlePaddle实践178
6.5循环神经网络181
6.5.1循环神经网络的PyTorch实践182
6.5.2循环神经网络的TensorFlow实践185
6.5.3循环神经网络的PaddlePaddle实践187
6.6注意力机制190
6.6.1注意力机制的PyTorch实践191
6.6.2注意力机制的TensorFlow实践194
6.6.3注意力机制的PaddlePaddle实践196
6.7自动编码器199
6.7.1自动编码器的PyTorch实践200
6.7.2自动编码器的TensorFlow实践203
6.7.3自动编码器的PaddlePaddle实践206
6.8变换模型209
6.8.1变换模型的PyTorch实践210
6.8.2变换模型的TensorFlow实践214
6.8.3变换模型的PaddlePaddle实践216
6.9深度学习模型的常用优化技巧219
6.9.1随机失活219
6.9.2批标准化228
6.9.3层标准化235
小结244
第7章PySpark分布式机器学习246
7.1PySpark环境配置248
7.1.1使用Anaconda Navigator搭建和配置环境248
7.1.2使用conda命令搭建和配置环境249
7.1.3安装JRE250
7.2PySpark分布式数据结构251
7.2.1RDD252
7.2.2DataFrame254
7.3PySpark分布式特征工程255
7.3.1特征抽取255
7.3.2特征转换260
7.4PySpark分布式机器学习263
7.4.1PySparkML分类预测模型264
7.4.2PySparkML数值回归模型269
7.5分布式机器学习模型的常用优化技巧273
7.5.1超参数寻优: 留一验证274
7.5.2超参数寻优: 交叉验证275
小结277
实践篇
第8章Kaggle竞赛实践2818.1Titanic罹难乘客预测282
8.1.1数据分析282
8.1.2数据预处理284
8.1.3模型设计与寻优285
8.1.4提交测试286
8.2Ames房产价格评估287
8.2.1数据分析288
8.2.2数据预处理292
8.2.3模型设计与寻优294
8.2.4提交测试294
8.3Twitter短文本分类295
8.3.1数据分析296
8.3.2数据预处理297
8.3.3模型设计与寻优298
8.3.4提交测试299
8.4CIFAR100图像识别300
8.4.1数据分析301
8.4.2数据预处理302
8.4.3模型设计与寻优303
8.4.4提交测试305
小结306
第9章Git代码管理308
9.1Git本地环境搭建309
9.1.1Windows下Git工具的安装与配置309
9.1.2macOS下Git工具的安装与配置309
9.1.3Ubuntu下Git工具的安装与配置309
9.2Git远程仓库配置310
9.2.1GitHub介绍311
9.2.2GitHub远程仓库的创建与配置311
9.2.3Gitee介绍312
9.2.4Gitee远程仓库的创建与配置312
9.3Git基本指令313
9.3.1克隆仓库313
9.3.2提交修改314
9.3.3远程推送314
9.4Git分支管理316
9.4.1创建分支317
9.4.2分支合并317
9.4.3合并冲突317
9.4.4删除分支319
9.5贡献Git项目319
9.5.1复刻项目319
9.5.2本地克隆、修改与推送320
9.5.3发起拉取请求320
小结322
后记323