
本书在不涉及大量数学模型与复杂编程知识的前提下,从零开始逐步带领读者熟悉并掌握当下流行的基于Python 3的数据分析,以及支持单机、深度和分布式机器学习的开源程序库,如pandas、Scikitlearn、PyTorch、TensorFlow、PaddlePaddle、PySparkML等。全书分4部分。入门篇包括对全书核心概念的指南性介绍,以及在多种主流操作系统(Windows、macOS、Ubuntu)上配置基本编程环境的详细说明。基础篇涵盖Python 3的编程基础、基于pandas的数据分析,以及使用Scikitlearn解决大量经典的单机(单核/多核)机器学习问题。进阶篇介绍如何使用PyTorch、TensorFlow、PaddlePaddle搭建多种深度学习网络框架,以及如何基于PySpark的ML编程库完成一些常见的分布式机器学习任务。实践篇利用全书所讲授的Python编程、数据分析、机器学习知识,帮助读者挑战和参与Kaggle多种类型的竞赛实战,同时介绍如何使用Git在Gitee、GitHub平台上维护和管理日常代码与编程项目。
本书适合所有对人工智能领域,特别是机器学习、数据挖掘、自然语言处理等技术及其实践感兴趣的初学者。
在本书第1版付梓之后,我便继续投身于互联网人工智能(Artificial Intelligence,AI)新产品的研发领域。时隔近5年,回望这段时间,我亲身感受到了人工智能理论和技术日新月异的飞速发展。
在此期间,我看到了大量承载着人工智能前沿理念和技术的次时代原型产品被孵化出来,不断刷新着人类的认知: 波士顿动力(Boston Dynamics)公司的机器人Atlas可以像人类运动员一样实现跑步越障、后空翻和惊人的三级跳动作;OpenAI设计的人工智能体能够在Dota 2这样环境复杂的策略对抗游戏中几乎“全面碾压”人类优秀选手;DeepMind构建的AlphaGo系列对弈程序接连战胜了多位人类顶尖围棋大师;国内外自动驾驶平台所支持的新型汽车陆续投入量产……同时,许多世界顶级的科研人员在机器视觉、语音合成、阅读理解等人工智能的细分领域进行着不懈的理论探索,就在这短短几年间,我们不断听闻人工智能已经逐渐在这些细分领域超越人类的平均水平。而这些各自深耕的细分领域技术经过工程化的打磨和融合之后,又重新在一些既有的人工智能产品上给我们带来了全新的体验。例如,更加实时和准确的机器同声传译;或者是那些能和真人打电话,聊天过程完全不会尴尬,甚至有点“萌”的多轮对话语音助手。
这些新的技术进步和大量的读者来信时刻鞭策着我。许多表示本书第1版给予了他们莫大的帮助;同时也有资深的前辈指出了第1版中的疏漏和不足。这里,我一并诚挚地感谢大家。其实从本书第1版发行之后,我就一直有意继续跟进、维护和更新本书;怎奈步入职场之后,业余时间的确不如在校期间那般充裕,再版的计划一再被搁置。
这5年间,我也意识到书中一些重要的机器学习平台已经有了明显的变化。比起本书的第1版,Scikitlearn从0.17.0更新到0.24.2,并且其1.0版本也发布在即;TensorFlow也有多年的历史,版本号持续维护到2.6。期间,许多新的机器学习模型被添加到Scikitlearn与TensorFlow中,一些API也被调整和修改;许多其他的机器学习平台,如PyTorch、PaddlePaddle等,也逐渐受到更多的关注。上述现象都不停地暗示我应该做出改变了。因此,我在互联网人工智能产业界5年有余的积累之后,决定开始第2版《Python机器学习实践——从零开始通往Kaggle竞赛之路(2022年度版)》的规划和写作。
自这一版开始,本人将力争持续跟进Python、pandas、Scikitlearn、PyTorch、TensorFlow、PaddlePaddle,以及PySparkML的更新,及时推出再版,保持和维护全书内容的先进性和代码的可用性。同时,本书将继续延续我们的理念: 力求减少读者对编程技能和数学知识的过分依赖,进而降低理解本书与实践机器学习模型的门槛;试图让更多的兴趣爱好者体会到使用经典模型,乃至更加高效的方法解决实际问题的乐趣。
全书介绍的上述核心工具,均是作者本人长期总结行业经验,精心筛选后的成果。在面对现实中的工程或者科研问题,或参加一些公开的竞赛(如Kaggle、天池竞赛等)时,相信本书都能够帮助读者使用Python编程语言快速上手,并结合一系列经典的开源工具,搭建行之有效的计算机程序来解决实际问题。
在大数据时代,只要是与数据相关的从业人员,掌握Python编程、数据分析、机器学习的能力,都是不错的职业加分项。不论是在金融、统计、数理研究、社会科学、工业工程等领域的从业者,还是在互联网行业的程序员、数据分析师、运营人员、产品经理等,都会对本书有着不同程度的学习需求。
本书所介绍的知识也能够帮助读者通过一些专业类的考试,如人工智能工程师认证、注册数据分析师认证(CDA、CPDA)等。同时,鉴于内容的入门性和普适性,本书也可以被广泛用于初、高中生的信息学兴趣培训,专科职业教育,本科、研究生通识课程的讲授等。
衷心地希望每一位读者朋友都能够从本书获益,这也是对我最大的鼓励和支持。欢迎大家关注我的新浪微博https://weibo.com/fanmiaothu。普及人工智能,使机器学习的理论与实践成为一种大众的通识教育,始终是我编写本书的长期目标和动力。
下载地址1
下载地址2全书基于Python 3的实践代码和数据均已分别开源在Gitee和Github平台:
●中国境内的读者,请在gitee.com上搜索关键词MLKaggleGitee2022,或扫描二维码下载地址1进行下载。
●其他地区的读者,请在 github.com上搜索关键词MLKaggleGithub2022,或扫描二维码下载地址2进行下载。
扫描书后的二维码源程序亦可获取本书代码。
欢迎大家批评指正书中的任何错误,并发送至电子邮箱: fanmiao.cslt.thu@gmail.com。
〖1〗Python机器学习及实践——从零开始通往Kaggle竞赛之路(2022年度版)〖1〗致谢
感激父母长久以来对我的关爱和支持,让我可以持续不断地追求学业的成长和进步。
自我踏入北京邮电大学校门的第二年,便十分有幸得到吴国仕教授的指导。彼时的我还不知道,作为一名大一新生,能够有这样一位在企业智能信息化方面深有造诣的老教授亲自指导,是一件多么幸运的事情。
而后,我在人工智能方向上的成长之路便开始了。在清华大学、纽约大学、百度公司等多个人工智能领域的优秀科研院所与企业,我先后得到了郑方、周强、Ralph Grishman、王海峰、王建民等一众知名教授的悉心指导。从每一位老师的身上,我都发现了许许多多不同的优秀品质。不管是对人还是对事,这些优秀品质,都对我的成长和求学之路给予了莫大的帮助。
在漫长的求学之路上,我也结识了一些行业内优秀的学者朋友,感谢张民、马少平等教授为本书撰写推荐语。
感谢清华大学出版社的谢琛编辑。从第1版开始,她就担任本书的责任编辑。如果没有她一直以来的辛勤工作,这本书也无法高质量地呈现到各位读者面前。
范淼2022年6月
第1部分入门篇
●第1章全书指南3
1.1Python编程3
1.2数据分析5
1.3机器学习6
1.3.1任务9
1.3.2经验10
1.3.3性能11
1.4Kaggle竞赛13
1.5Git代码管理14
1.6章末小结15
●第2章基本环境搭建与配置16
2.1Windows操作系统下基本环境的搭建与配置16
2.1.1查看Windows的版本与原始配置16
2.1.2下载并安装Anaconda3(Windows)17
2.1.3使用Anaconda Navigator创建虚拟环境python_env(Windows)19
2.1.4在虚拟环境python_env下使用Anaconda Navigator安装
Jupyter Notebook与PyCharm Professional(Windows)20
2.2macOS操作系统下基本环境的搭建与配置21
2.2.1查看macOS的版本与原始配置21
2.2.2下载并安装Anaconda3(macOS)23
2.2.3使用Anaconda Navigator创建虚拟环境python_env(macOS)24
2.2.4在虚拟环境python_env下使用Anaconda Navigator安装
Jupyter Notebook与PyCharm Professional(macOS)24〖1〗Python机器学习及实践——从零开始通往Kaggle竞赛之路(2022年度版)〖1〗2.3Ubuntu操作系统下基本环境的搭建与配置26
2.3.1查看Ubuntu的版本与原始配置26
2.3.2下载并安装Anaconda3(Ubuntu)27
2.3.3在终端中创建虚拟环境python_env(Ubuntu)28
2.3.4在虚拟环境python_env下使用conda命令安装Jupyter
Notebook(Ubuntu)29
2.4Jupyter Notebook使用简介31
2.4.1在虚拟环境python_env下启动Jupyter Notebook31
2.4.2创建一个.ipynb文件32
2.4.3试运行.ipynb文件内的Python 3程序33
2.5PyCharm使用简介34
2.5.1在虚拟环境python_env下启动PyCharm34
2.5.2基于虚拟环境python_env的Python 3.8解释器创建一个
.py文件35
2.5.3试运行.py文件内的Python 3程序35
2.6章末小结37
第2部分基础篇
●第3章Python编程基础41
3.1Python编程环境配置41
3.1.1基于命令行/终端的交互式编程环境41
3.1.2基于Web的交互式开发环境42
3.1.3集成式开发环境43
3.2Python基本语法44
3.2.1赋值44
3.2.2注释45
3.2.3缩进46
3.3Python数据类型46
3.4Python数据运算49
3.5Python流程控制53
3.5.1分支语句53
3.5.2循环控制55
3.6Python函数设计56
3.7Python面向对象编程57
3.8Python编程库(包)导入60
3.9Python编程综合实践62
3.10章末小结63
●第4章pandas数据分析64
4.1pandas环境配置65
4.1.1使用Anaconda Navigator搭建和配置环境66
4.1.2使用conda命令搭建和配置环境66
4.2pandas核心数据结构67
4.2.1Series68
4.2.2DataFrame69
4.3pandas读取/写入文件数据70
4.3.1读取/写入CSV文件数据70
4.3.2读取/写入JSON文件数据73
4.3.3读取/写入Excel文件数据76
4.4pandas数据分析的常用功能80
4.4.1添加数据80
4.4.2删除数据83
4.4.3查询/筛选数据84
4.4.4修改数据86
4.4.5数据统计87
4.4.6数据排序89
4.4.7函数应用90
4.5pandas数据合并92
4.6pandas数据清洗93
4.7pandas数据分组与聚合95
4.8章末小结97
●第5章Scikitlearn单机机器学习98
5.1Scikitlearn环境配置99
5.1.1使用Anaconda Navigator搭建和配置环境100
5.1.2使用conda命令搭建和配置环境100
5.2Scikitlearn无监督学习102
5.2.1降维学习与可视化102
5.2.2聚类算法113
5.3Scikitlearn监督学习模型121
5.3.1分类预测121
5.3.2数值回归141
5.4Scikitlearn半监督学习模型154
5.4.1自学习框架155
5.4.2标签传播算法157
5.5单机机器学习模型的常用优化技巧159
5.5.1交叉验证160
5.5.2特征工程162
5.5.3参数正则化170
5.5.4超参数寻优174
5.5.5并行加速训练176
5.6章末小结179
第3部分进阶篇
●第6章PyTorch/TensorFlow/PaddlePaddle深度学习185
6.1PyTorch/TensorFlow/PaddlePaddle环境配置187
6.2前馈神经网络191
6.2.1前馈神经网络的PyTorch实践192
6.2.2前馈神经网络的TensorFlow实践197
6.2.3前馈神经网络的PaddlePaddle实践199
6.3卷积神经网络202
6.3.1卷积神经网络的PyTorch实践204
6.3.2卷积神经网络的TensorFlow实践208
6.3.3卷积神经网络的PaddlePaddle实践211
6.4循环神经网络214
6.4.1循环神经网络的PyTorch实践216
6.4.2循环神经网络的TensorFlow实践220
6.4.3循环神经网络的PaddlePaddle实践222
6.5自动编码器226
6.5.1自动编码器的PyTorch实践227
6.5.2自动编码器的TensorFlow实践231
6.5.3自动编码器的PaddlePaddle实践234
6.6神经网络模型的常用优化技巧238
6.6.1随机失活238
6.6.2批量标准化249
6.7章末小结260
●第7章PySparkML分布式机器学习262
7.1PySpark环境配置264
7.1.1使用Anaconda Navigator搭建和配置环境264
7.1.2使用conda命令搭建和配置环境265
7.1.3安装JRE267
7.2PySpark分布式数据结构268
7.2.1RDD269
7.2.2DataFrame271
7.3PySpark分布式特征工程273
7.3.1特征抽取273
7.3.2特征转换279
7.4PySparkML分布式机器学习模型284
7.5分布式机器学习模型的常用优化技巧292
7.5.1留一验证293
7.5.2K折交叉验证295
7.6章末小结297
第4部分实践篇
●第8章Kaggle竞赛实践301
8.1泰坦尼克号罹难乘客预测302
8.1.1数据分析303
8.1.2数据预处理305
8.1.3模型设计与寻优306
8.1.4提交测试307
8.2Ames房产价值评估308
8.2.1数据分析309
8.2.2数据预处理315
8.2.3模型设计与寻优316
8.2.4提交测试317
8.3推特短文本分类318
8.3.1数据分析320
8.3.2数据预处理321
8.3.3模型设计与寻优322
8.3.4提交测试323
8.4CIFAR100图像识别324
8.4.1数据分析326
8.4.2数据预处理327
8.4.3模型设计与寻优328
8.4.4提交测试331
8.5章末小结333
●第9章Git代码管理334
9.1Git本地环境搭建335
9.1.1Windows下Git工具的安装与配置335
9.1.2macOS下Git工具的安装与配置336
9.1.3Ubuntu下Git工具的安装与配置336
9.2Git远程仓库配置337
9.2.1GitHub介绍337
9.2.2GitHub远程仓库的创建与配置338
9.2.3Gitee介绍339
9.2.4Gitee远程仓库的创建与配置339
9.3Git基本指令340
9.3.1克隆仓库340
9.3.2提交修改341
9.3.3远程推送343
9.4Git分支管理343
9.4.1创建分支344
9.4.2分支合并345
9.4.3合并冲突346
9.4.4删除分支347
9.5贡献Git项目348
9.5.1Fork项目348
9.5.2本地克隆、修改与推送349
9.5.3发起拉取请求349
9.6章末小结351
●后记352
●第1章简介篇1
1.1机器学习综述1
1.1.1任务3
1.1.2经验5
1.1.3性能5
1.2Python编程库8
1.2.1为什么使用Python8
1.2.2Python机器学习的优势9
1.2.3NumPy & SciPy10
1.2.4Matplotlib11
1.2.5Scikitlearn11
1.2.6Pandas11
1.2.7Anaconda12
1.3Python环境配置12
1.3.1Windows系统环境12
1.3.2Mac OS 系统环境17
1.4Python编程基础18
1.4.1Python基本语法19
1.4.2Python 数据类型20
1.4.3Python 数据运算22
1.4.4Python 流程控制26
1.4.5Python 函数(模块)设计28
1.4.6Python 编程库(包)的导入29
1.4.7Python 基础综合实践30
1.5章末小结33●第2章基础篇34
2.1监督学习经典模型34
2.1.1分类学习35
2.1.2回归预测64
2.2无监督学习经典模型81
2.2.1数据聚类81
2.2.2特征降维91
2.3章末小结97
●第3章进阶篇98
3.1模型实用技巧98
3.1.1特征提升99
3.1.2模型正则化111
3.1.3模型检验121
3.1.4超参数搜索122
3.2流行库/模型实践129
3.2.1自然语言处理包(NLTK)131
3.2.2词向量(Word2Vec)技术133
3.2.3XGBoost模型138
3.2.4Tensorflow框架140
3.3章末小结152
●第4章实战篇153
4.1Kaggle平台简介153
4.2Titanic罹难乘客预测157
4.3IMDB影评得分估计165
4.4MNIST手写体数字图片识别174
4.5章末小结180
●后记181
●参考文献182
该书帮助大量对机器学习、数据挖掘感兴趣的读者朋友整合时下***的基于Python语言的程序库:如Scikit-learn,NLTK,XGBoost,TensorFlow等,并且针对现实中遇到的数据,甚至是Kaggle竞赛(时下世界***的机器学习竞赛平台)中的分析任务,快速搭建有效的机器学习系统。
同时,作者力求减少读者为了理解本书,而对编程技能、数学背景的过分依赖;进而降低机器学习模型的实践门槛,让更多的兴趣爱好者体会到使用经典模型以及**的高效方法解决实际问题的乐趣。同时,笔者对每一个关键术语都提供了标准的英文表述,也方便读者朋友更加快速查阅、理解相关的英文文献。