Python机器学习入门与实战

978-7-115-60190-2
作者: 桑园
译者:
编辑: 张天怡

图书目录:

详情

本书以零基础讲解为特色,用实例引导读者学习,深入浅出地介绍Python机器学习的相关知识和实战技能。 全书共17章,分为5篇。第Ⅰ篇为机器学习入门篇,包含第1章,主要介绍机器学习的概念、机器学习研究的主要任务、如何选择合适的算法及机器学习研究问题的一般步骤等;第Ⅱ篇为工具模块使用篇,包含第2~4章,主要介绍数组计算NumPy、数据分析Pandas、图形展示Matplotlib等;第Ⅲ篇为专业技能提升篇,包含第5~13章,主要介绍算法综述、决策树、朴素贝叶斯、逻辑回归、支持向量机、AdaBoost、线性回归、k-means、PCA等;第Ⅳ篇为深度学习延伸篇,包含第14章,主要介绍卷积神经网络;第Ⅴ篇为项目技能实战篇,包含第15~17章,主要介绍验证码识别、答题卡识别、机器学习简历指导等。同时,本书随书赠送了大量相关的学习资料,以便读者扩展学习。 本书适用于任何想学习Python机器学习的读者。无论读者是否从事Python相关工作,是否接触过Python,均可通过学习本书快速掌握Python机器学习的开发方法和技巧。

图书摘要

版权信息

书名:Python机器学习入门与实战

ISBN:978-7-115-60190-2

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    桑 园

责任编辑 张天怡

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

内容提要

本书以零基础讲解为特色,用实例引导读者学习,深入浅出地介绍Python机器学习的相关知识和实战技能。

全书共17章,分为5篇。第Ⅰ篇为机器学习入门篇,包含第1章,主要介绍机器学习的概念、机器学习研究的主要任务、如何选择合适的算法及机器学习研究问题的一般步骤等;第Ⅱ篇为工具模块使用篇,包含第2~4章,主要介绍数组计算NumPy、数据分析Pandas、图形展示Matplotlib等;第Ⅲ篇为专业技能提升篇,包含第5~13章,主要介绍算法综述、决策树、朴素贝叶斯、逻辑回归、支持向量机、AdaBoost、线性回归、k-means、PCA等;第Ⅳ篇为深度学习延伸篇,包含第14章,主要介绍卷积神经网络;第Ⅴ篇为项目技能实战篇,包含第15~17章,主要介绍验证码识别、答题卡识别、机器学习简历指导等。同时,本书随书赠送了大量相关的学习资料,以便读者扩展学习。

本书适用于任何想学习Python机器学习的读者。无论读者是否从事Python相关工作,是否接触过Python,均可通过学习本书快速掌握Python机器学习的开发方法和技巧。

前  言

Python编程功能强大,应用广泛,在当今业界越来越流行,很多无编程基础的读者也对Python编程充满兴趣。然而网络上的资料往往良莠不齐,或是信息已经过时,或是本身存在错误,或是太过笼统不能满足读者个性化学习需求,因此编者编写此书以给想要入门Python机器学习的读者提供一个正确的学习途径。

Python具备面向对象、直译、程序代码简洁、跨平台、自由/开放源码等特点,再加上其丰富、强大的套件模块,用途十分广泛。另外,Python不像Java那样要求使用者用面向对象思维编写程序。它是多重编程范式(multi-paradigm)的程序语言,允许使用者使用多种风格来编写程序,程序编写更灵活。同时,Python提供了丰富的应用程序接口(Application Program Interface,API)和工具,让程序设计人员能够轻松地编写扩展模块。

本书结合计算思维与算法的基本概念,以Python对机器学习进行讲解,内容浅显易懂。本书循序渐进地介绍Python机器学习中必须要知道的主题,具体如下。

机器学习基础。

数组计算NumPy。

数据分析Pandas。

图形展示Matplotlib。

算法综述。

决策树。

朴素贝叶斯。

逻辑回归。

支持向量机。

AdaBoost。

线性回归。

k-means。

PCA。

卷积神经网络。

验证码识别。

答题卡识别。

机器学习简历指导。

为了降低学习难度,本书提供了所有范例的完整程序代码,并且这些代码已在Python开发环境下正确编译与运行。通过本书,读者除了可以学习用Python编写程序外,还能进行计算思维及演算逻辑的训练。目前许多学校都开设了Python机器学习的基础课程,本书非常适合作为Python机器学习相关课程的教材。

另外,本书在创作过程中,得到了河南省民办普通高等学校专业建设资助项目的基金支持,是郑州西亚斯学院的专业建设的重要成果之一。

本书由桑园任主编,王方任副主编,马亚丹、孔杰、张启亚参编,王喜军、黄鹤负责本书审核。其中,第1~2章、第4~6章、第15~17章由桑园老师编写,第7~11章、第14章由王方老师编写,第3章由马亚丹编写,第12章由孔杰编写,第13章由张启亚编写。

在编写本书的过程中,我们竭尽所能地将好的讲解呈现给读者,但难免有疏漏之处,敬请广大读者不吝指正。若读者在阅读本书时遇到困难或有疑问,抑或有任何建议,可发送邮件至zhangtianyi@ptpress.com.cn。

编者

2022年11月

第Ⅰ篇 机器学习入门篇

第 1 章 机器学习入门之机器学习基础

第1章 机器学习入门之机器学习基础

“机器学习”,顾名思义,就是让机器去学习,就好像“那是机器干的事,让它去学好了,那件事与我无关”。俗话说:“事不关己,高高挂起。”事实果真如此吗?须知“学海无涯苦作舟”。在近几年兴起的网课大潮中,“可爱的娃们”真的会自始至终专注地坐在计算机旁,从不“溜号”地上课吗?在这个过程中需要家长的督促,需要家长的检查,也需要家长利用自己的经验去帮助娃加深理解。

机器的学习也是一样的,需要监督,需要检查,也需要我们把一些经验“传授”给它。2022年成功举办的北京冬季奥运会,让我们看到了纯机器人式的餐厅可以给运动员提供良好的服务,精准的冬奥气象测试系统实现了“百米级、分钟级”的精准气象预报,防疫机器人志愿者能够进行消杀、清扫、送餐、引导和巡视等工作。试想生活中如果餐馆里跑堂的和做饭的都是机器人,每天只要洒一些84消毒液就达到了消毒的目的,人们进来吃饭保持安全距离即可。这一切的变化和发展,都需要我们每个人的努力。每个人把一点点经验传授给机器,就会使“奇人异士”的“独门绝技”得以传承,就会使我们周围充满可能。“三个臭皮匠,赛过诸葛亮”,千万人的“馊点子”可能汇聚成机器学习的“鬼点子”。

机器学习需要每个人为之努力,从而让我们的生活更加便利、更加安全。人脸识别技术的推广减少了人们出行时携带的物件,也为财产安全带来了保障;无人驾驶能够更好地提高机器自动化的程度,也可能减小车祸发生的概率;等等。许多智能时代的内容我们不是没有想过,只是我们觉得一己之力是微弱的,但机器学习可以将每个人的微薄之力汇聚在一起,形成一种令人不可思议的力量。

前面说的可能有点儿“高大上”,距离我们较远,其实有一些身边的事情也是离不开机器学习的。当你需要在网络商城购买某种商品的时候,商城会给你推荐一些商品供你选择,比如淘宝网站的“猜你喜欢”功能(见图1.1)可能就会为你购物提供选择的便利。

图1.1  淘宝网站的“猜你喜欢”功能可以实现用机器学习进行推荐

图1.1中右侧显示的笔记本电脑(又称笔记本计算机)、平板电脑(又称平板计算机)、耳机耳麦、整机一体机等商品,就是淘宝根据用户以往的购买习惯,经常浏览、选择的标签,从而得出的商品推荐,也是机器学习应用的例子。

除了网站,如语音助手、智能家居设备、人脸识别、自动驾驶技术等,出现在我们身边的机器学习数据在不断地颗粒化、微观化,使得数据指数及技术指标也在快速增长。因此,我们不仅需要使用更好的工具解析当前的数据,而且还要为将来可能产生更多的数据做好充分的准备。

1.1 做第一个吃螃蟹的人——理解机器学习

这里首先要认识一下机器学习,换句话说,要知道什么是机器学习。

其实机器学习很像人类的思考过程。比如人人称道的“第一个吃螃蟹的人”,连鲁迅都称道:“第一次吃螃蟹的人是很可佩服的,不是勇士,谁敢去吃它呢?”。遇到一种不认识的生物,8条腿,还有很硬的甲壳,用螯伤人,如何知道这样的生物有毒没毒?如何知道它蒸熟了是否是一种美味呢?传统的思维方法可以这样理解,如图1.2所示。

图1.2 吃螃蟹的人传统的思维方法

图1.2中所显示出来的逻辑就是模拟的吃螃蟹的人遇到不明生物的思维或想法,其实普通人也都是这样思考的。关键的问题来了,蟹的种类不止一种,个头大小也不是统一按照国际标准来生长的,如河蟹、石蟹、青蟹、花蟹、大闸蟹、梭子蟹、籽蟹、红蟹和面包蟹等,个头大的还有帝王蟹。所面对物品的特征不同,人的反应就会有各种各样的不同,不再只是“逃跑”和“斗争”。社会发展了,“拍个照发个朋友圈”也是有可能的。如果遇到的是蘑菇,不一定都是能吃的,这么多的特征和反应,用传统的思维方法处理这些因素错综复杂的细节很困难。当遇到的特征越复杂,人要选择规则就越困难,计算起来也越吃力,更不要说记住所有生物的特征才能更好地应对,对学过程序的人来说,就相当于遇到了若干个elif语句。

机器学习算法恰恰就是由前面的普通算法演化而来的。机器学习就是让机器自动从提供的数据中去学习,然后变得智能,也就是让程序变得“聪明”。比如对磨菇来说,机器学习研究问题的流程如图1.3所示。

图1.3 关于蘑菇的机器学习原理

由图1.3中所示的机器学习原理可知,为众多具备蘑菇特征的训练数据提供一个机器学习算法,然后它就会学习出一个关于蘑菇的特征和它是否有毒的关系模型。下次在深山老林中采蘑菇,面对一种没见过的蘑菇时,机器学习就会把它当成测试数据,然后将其输入这个训练好的模型,模型会直接输出这个蘑菇是有毒的还是没毒的。有了这个模型,童话中的采蘑菇的小姑娘也可以满怀自信地去采蘑菇,并判断哪些蘑菇是有毒的,哪些蘑菇是没有毒的。也许这个小姑娘也会把蘑菇的模型推广成苹果的模型,童话中的白雪公主也就不会很鲁莽地吃掉一只毒苹果。

机器学习就是用机器学习的算法来建立模型进行学习,当有新的数据出现时,可以通过模型来进行预测。

1.2 机器学习研究的主要任务

研究机器学习,就是通过学习研究最终输出结果。蘑菇分类算法模型的最终输出结果被分成有毒的、没毒的两类,这便是分类算法。在对算法进行研究的过程中,输入了大量的蘑菇数据,也输入了大量数据对应的标签,这种大量有标签对应的数据称为训练集。如果输入了一个新的蘑菇,通过模型算法得到最终结果,这个新的蘑菇就是测试集。机器学习其实就是通过大量训练集的训练,最终得到测试集的结果预测。

机器学习一般分为监督学习和非监督学习。

· 1.2.1 监督学习

根据已有的训练集,可知道输入和输出结果之间的关系。根据这种已知的关系,训练得到一个最优的模型。也就是说,在监督学习中训练集中的数据既有特征(feature)又有标签(label)。通过训练,机器可以自己找到特征和标签之间的联系,对只有特征没有标签的数据进行预测时,可以判断出标签。

通俗一点儿讲,就是可利用标签和特征告知机器如何做事情。打个比方,交通规则中红灯对车的管控是停,绿灯对车的管控是行,绿灯和红灯可以被理解成灯的特征,停和行被理解成标签。如果一辆车遇到了绿灯,则得出的结论是行车。这种算法理解起来是比较容易的,因为绿灯已经在训练集中出现了。如果在阴天里,绿灯的可视程度有所减弱,就需要一些近似于绿色的算法来完成对绿灯的辨识。这就算是监督学习。

监督学习一般用来解决分类和回归的问题。

用蘑菇分类算法预测新采的蘑菇是否有毒是一种分类问题。分类问题机器学习的一般思路如图1.4所示。

图1.4 分类问题机器学习的一般思路

对于回归问题,往往预测的结果都是数值,如预测公司未来一年的利润大概是多少,预测商品未来一个月的销量,等等。可以这样理解,分类问题的标签是不连续的,而回归问题的标签是连续的,训练集的数据多以连续型的数值为主,预测的结果也会以数值的方式进行展示。回归问题机器学习的一般思路如图1.5所示。

图1.5 回归问题机器学习的一般思路

总体来说,监督学习就是通过人为地输入带有标签的训练集数据,使计算机训练得到一个较为合适的模型,再对未知标签的数据进行预测。标签来自人为设定,输出的结果也属于训练集中标签的范围。

· 1.2.2 非监督学习

谈到非监督学习,它和监督学习的区别在于训练集中是否有人为设定的标签。人为设定标签一定是建立在人对事物有了解的基础之上的,但在许多实际应用中,对事物的了解都是从无知到认知的,对于很多事情开始并不知道数据的类别,也没有训练样本进行类别的划分。要从这些没有被标记的数据集中通过机器学习算法进行分类器设计,需要通过数据之间的内在联系和相似性将它们分成若干类。比如对动物如何划分科目纲,在最初的时候,一定是考虑动物相关数据之间的内在联系和相似性,这就用到了非监督学习。非监督学习会用两种方法去考虑。

一种是基于概率密度函数估计的方法,通过分解各个类别的概率密度函数,再将每个类别划分到特征空间,用相关的机器学习算法设计分类器。

另一种是基于样本间相似度间接聚类的方法,把每一个样本都看成一个类别,给定两个样本相似度的计算方法,进而计算两个样本的相似度,把相似度最大的类进行合并,再计算新的类与类之间的相似度,直到把相似的所有样本合为一个类。

无论是基于概率密度函数估计的方法,还是基于样本间相似度间接聚类的方法,它们的逻辑分析方法都是一致的,如图1.6所示。

图1.6 非监督学习的一般思路

监督学习和非监督学习都需要相应的机器学习算法去解决问题,在后面的章节中会重点介绍机器学习的相关算法,这也是解决监督学习和非监督学习问题的关键。

1.3 如何选择合适的算法

算法对机器学习来说还是比较重要的。

选择算法时,首先考虑使用机器学习算法的目的。如果想要预测的是目标变量的值,就可以考虑监督学习算法,不然就可以考虑非监督学习算法。选择了监督学习算法之后,需要确定目标变量类型。如果目标变量是离散型,如“是/否”“3/5/9”“高/中/低”等表示状态的值,就可以选择分类器算法;如果目标变量是连续型,如“0~100”“-100~100”等,则需要选择回归算法。

其次需要考虑的是数据问题,充分了解数据,对实际数据了解得越充分,越容易创建符合实际需求的程序。针对数据问题可以主要看以下特性:特征值是离散型变量还是连续型变量,特征值中是否存在空值,何种原因造成这种空值,数据中是否存在异常值,某个特征发生的频率如何,等等。

机器学习可在一定程度上缩小算法的选择范围,一般并不存在最好的算法或者可以给出最好结果的算法,同时还要看看不同算法的执行结果,最终比较哪一种算法的结果是最好的,还可以用多种算法相结合来提高算法执行结果的正确率。

1.4 机器学习研究问题的一般步骤

对机器学习有了一些了解之后,还需要知道用机器学习来研究问题需要遵循什么样的步骤。

(1)收集数据,对数据进行处理。首先必须有数据,数据可以从网站上爬取,也可以从数据库中读取,还可以从一些文本文件或表格文件等文件中提取等。获取数据就需要学习一些机器学习相关工具模块的使用方法,同时还需要对数据进行空数据、异常数据及重复数据的处理,以保证数据的有效性。

(2)准备数据。得到处理的数据之后,还必须确保数据格式符合机器学习中数据的需求,如进行数据的归一化或者将数据由字符串转化成文本等操作。使用符合需求的数据格式可以融合算法和数据源,方便匹配操作。

(3)分析数据。此步骤的作用是观察数据的特点,以确定使用哪种机器学习算法。如某些数据点与数据集中的其他值存在明显的差异,这样就可能出现数据“不典型”的情况。通过图形展示数据也是不错的方法,这样方便观察数据并进行分析。另外,观察数据的特点,对之有一个总体的把握,也可以弄明白分析的问题到底是分类问题还是回归问题,是用监督学习算法好还是用非监督学习算法得当。在这一步中,也可以通过机器学习工具模块进行数据分析及图形展示。

(4)训练算法。机器学习算法从这一步才真正开始学习。算法不同,对最终机器学习测试结果的影响也是不同的。这一步是机器学习的核心,是将前面得到的格式化的数据输入算法中,从中抽取知识或有用的信息。

(5)测试算法。这一步是对训练算法得到的知识和信息的评估。算法的准确率是否高,必须进行测试。对于监督学习,必须评估算法的目标变量值;对于非监督学习,也必须检验算法的成功率是否达到预期的需求。无论哪种情形,如果不满意算法的输出结果,都要回到最初的步骤。如果算法输出结果正确率不高,可能是数据不典型,算法应用不得当,数据分析的特点没有做到位,等等,这些因素都可能存在。

(6)使用算法。将机器学习算法转换为应用,执行实际的预测任务,以检验训练成果是否可以在实际环境中正常工作。也就是判断如果碰到新的数据,预期的结果是否是真实情况的表达。

1.5 小结

机器学习,这个看似“高大上”的话题,其实最主要研究的还是如何利用典型的数据通过算法去预测需求的结果。对于机器学习而言,算法的使用是至关重要的一环,工具模块的使用是对数据分析和处理的关键。本书后面将会从工具模块的使用入手,重点谈及的还是算法方面的内容,尤其是算法的运用。

机器学习是智能解决身边问题的一门学问,需要不断地积累和沉淀。本书以机器学习开篇也是希望读者对机器学习有一个大体的认识和了解,在积累和沉淀中加油、努力,继而成长。

相关图书

深度学习的数学——使用Python语言
深度学习的数学——使用Python语言
动手学自然语言处理
动手学自然语言处理
Web应用安全
Web应用安全
Python高性能编程(第2版)
Python高性能编程(第2版)
图像处理与计算机视觉实践——基于OpenCV和Python
图像处理与计算机视觉实践——基于OpenCV和Python
Python数据科学实战
Python数据科学实战

相关文章

相关课程