Python机器学习核心算法编程实例(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-10 08:46:15

点击下载

作者:丁伟雄

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python机器学习核心算法编程实例

Python机器学习核心算法编程实例试读:

前言

“大家还没搞清PC的时候,移动互联网时代来了,还没有搞清移动互联网的时候,大数据时代来了。”马云的这句话,形象地描述了大数据时代的不期而遇。而2016年,著名的计算机科学家—吴军博士携带他的全新力作—《智能时代:大数据与智能革命重新定义未来》,宣告智能时代到来了!

新的时代,需要新的技术;新的技术,需要新的人才。为满足时代的需要,深度学习、机器学习应运而来。那么什么是大数据、什么是机器学习、什么是深度学习呢?(1)什么是大数据

大数据(Big Data)指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要使用新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

在维克托·迈尔-舍恩伯格及肯尼思·库克耶编写的《大数据时代》中,大数据指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。(2)什么是机器学习

机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。它研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的基本途径。它的应用已遍及人工智能的各个分支,如专家系统、自动推理、自然语言理解、模式识别、计算机视觉、智能机器人等领域。其中尤其典型的是专家系统中的知识获取瓶颈问题,人们一直在努力试图采用机器学习的方法加以克服。(3)什么是深度学习

深度学习是指多层的人工神经网络和训练它的方法。一层神经网络会把大量矩阵数字作为输入,通过非线性激活方法取权重,再产生另一个数据集合作为输出。这就像生物神经大脑的工作机理一样,通过合适的矩阵数量,多层组织链接在一起,形成神经网络“大脑”,进行精准复杂的处理,就像人们识别物体标注图片一样。

深度学习是从机器学习中的人工神经网络发展出来的新领域。早期所谓的“深度”是指超过一层的神经网络。但随着深度学习的快速发展,其内涵已经超出了传统的多层神经网络,甚至机器学习的范畴,逐渐朝着人工智能的方向快速发展。

在数据科学大数据方面从业者和研究人员必备的技能中,机器学习和Python应该是位列前五中的两项。机器学习炙手可热,在互联网、金融保险、电商、电信、智能制造、零售业、智慧医疗等领域发挥了越来越大的作用,关注度也越来越高。Python是全球四大流行语言之一,它具有简单易学、应用限制性少等特性,因此在开发从业者眼中是全栈开发的。

针对机器学习与Python软件的特点,我们将两者相结合编写了本书,其主要内容包括:

第1章介绍机器学习绪论,主要包括机器学习的定义、学习算法、Python的安装与使用、Python基础知识等内容。

第2章介绍线性模型,主要包括一般线性回归、局部加权线性回归、广义线性模型、逻辑回归分析、牛顿法等内容。

第3章介绍树回归,主要包括决策树的构建、决策树的绘制、决策树的存储、CART回归树等内容。

第4章介绍K-means聚类算法,主要包括相似性的度量、K-近邻算法及各种聚类算法等内容。

第5章介绍朴素贝叶斯,主要包括朴素贝叶斯理论、朴素贝叶斯算法等内容。

第6章介绍数据降维,主要包括维度灾难与降维、高维数据降维的方法等内容。

第7章介绍支持向量机,主要包括分类间隔、拉格朗日乘子、核函数、SOM算法等内容。

第8章介绍随机森林,主要包括集成学习、Stacking、随机森林算法、随机森林算法实践等内容。

第9章介绍人工神经网络,主要包括感知机模型、从感知机到神经网络、多层前馈神经网络等内容。

第10章介绍协同过滤算法,主要包括协同过滤的核心、协同过滤的分类、相似度的度量方法等内容。

第11章介绍基于矩阵分解的推荐算法,主要包括矩阵分解、利用矩阵分解进行预测、非负矩阵分解、基于矩阵分解的推荐方法等内容。

第12章介绍集成学习,主要包括集成学习的原理及误差、集成学习方法等内容。

第13章介绍数据预处理,主要包括数据预处理概述、去除唯一属性、处理缺失值等内容。

本书由丁伟雄编写,张德丰参与了部分内容的编写和审校工作。

本书适合Python初学者,也适合研究Python的广大科研人员、学者及工程技术人员阅读使用。

为便于读者学习,本书提供实例源代码下载。读者登录华信教育资源网(www.hxedu.com.cn),注册成为会员,即可查找本书免费下载。

由于时间仓促,加之作者水平有限,所以错误和疏漏之处在所难免。在此,诚恳地期望得到各领域专家和广大读者的批评指正。编著者第1章 机器学习绪论

机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身性能。

机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,其主要使用的方法是归纳、综合,而不是演绎。1.1 机器学习的定义

机器学习算法是一类从数据中自动分析、获得规律,并利用规律对未知数据进行预测的方法。在算法设计方面,机器学习理论关注可以实现的、行之有效的学习算法。很多推论问题是无程序可循的,所以部分机器学习研究开发容易处理的近似算法。

机器学习已经有了十分广泛的应用,如数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、战略游戏和机器人等。1.1.1 概论

自从计算机被发明以来,人们就想知道它们能不能学习。如果我们理解了计算机学习的内在机制,即怎样使它们根据经验来提高机制,那么影响将是空前的。想象一下,在未来,计算机能从医疗记录中学习,获取治疗新疾病的有效方法;住宅管理系统分析住户的用电模式,以降低能源消耗;个人软件助理跟踪用户的兴趣,并为其选择最感兴趣的在线新闻……对计算机学习的成功理解将开辟出全新的应用领域,并使其计算能力和可定制性上升到新的层次。同时,透彻地理解机器学习的信息处理算法,也有助于更好地理解人类的学习能力。

目前,人们还不知道怎样才能使计算机的学习能力和人类相媲美。然而,一些针对特定学习任务的算法已经产生。关于学习的理论认识已逐步形成。人们开发出了很多实践性的计算机程序来实现不同类型的学习,一些商业化的应用也已经出现。例如,对于语音识别这样的课题,至今为止,基于机器学习的算法明显胜过其他方法。在数据挖掘领域,机器学习算法理所当然地得到应用,从包含设备维护记录、借贷申请、金融交易、医疗记录等类似信息的大型数据库中发现有价值的信息。随着人们对计算机理解的日益成熟,机器学习必将在计算机科学和技术中扮演越来越重要的角色。

通过一些特定的成就,我们可以看到这门技术的现状:计算机已经能够成功地识别人类的讲话(Waibel 1989;Lee 1989)、预测脑炎患者的康复率(Cooper et al.1997)、检测信用卡欺诈、在高速公路上驾驶(Pomerleau 1989)、以接近人类世界冠军的水平对弈西洋双陆棋游戏(Tesauro 1992,1995)。已有了很多理论成果能够对训练样例数量、假设空间大小、假设错误率三者间的基本关系进行刻画。我们正在开始获取人类和动物学习的原始模型,用于理解它们和计算机学习算法之间的关系。在过去的十年中,无论是应用、算法、理论,还是生物系统的研究,都取得了令人瞩目的进步。

机器学习的几种应用主要表现在以下方面:

1.识别人类讲话

所有成功的语音识别系统都使用了某种形式的机器学习技术。例如,Sphinx 系统可学习特定讲话者的语音识别策略,从检测到的语音信号中识别出基本的音素(phoneme)和单词。神经网络学习方法和隐式马尔可夫模型(hidden Markov model)的学习方法在语音识别系统中也非常有效,它们可以让系统自动适应不同讲话者、词汇、麦克风特性和背景噪声等。类似技术在很多信号解释课题中有应用潜力。

2.驾驶车辆

机器学习算法已被应用于训练计算机控制,使其在各种类型的道路上正确行驶。例如,ALVINN系统(Pomer leau 1988)已经利用它学会的策略独自在高速公路的其他车辆之间奔驰,并以70英里(1英里约为1.6千米)的时速行驶了90英里。类似技术可能在很多基于传感器的控制问题中得到应用。

3.分类新的天文结构

机器学习算法已经被应用于从各种大规模数据库中发现隐藏的一般规律。例如,决策树学习算法已经被美国国家航空航天局(NASA)用来分类天体,数据来自第二帕洛马天文台太空调查(Fayyad et al.1995)。这一系统现在被用于自动分类太空调查中的所有天体,其中包含3TB的图像数据。

4.以世界级的水平对弈西洋双陆棋

最成功的博弈类(如西洋双陆棋)计算机程序基于机器学习算法。例如,世界上最好的西洋双陆棋程序TD-Gammon(Tesauro 1992,1995)是通过和自己对弈一百万次以上来学习策略的。现在它的水平与人类的世界冠军相当。类似技术被应用于许多实际问题,这需要高效地搜索庞大的空间。1.1.2 机器学习发展历程

机器学习是人工智能研究较为年轻的分支,它的发展过程大体可分为4个阶段。

第一阶段是从20世纪50年代中叶到60年代中叶,属于热烈时期。

第二阶段是从20世纪60年代中叶到70年代中叶,称为冷静时期。

第三阶段是从20世纪70年代中叶到80年代中叶,称为复兴时期。

机器学习的最新阶段始于1986年。机器学习进入新阶段主要表现在下列几个方面:(1)机器学习已成为新的边缘学科并在高校形成一门课程。它综合应用心理学、生物学和神经生理学及数学、自动化和计算机科学,形成机器学习理论基础。(2)结合各种学习方法,以取长补短的多种形式集成学习系统的研究正在兴起。特别是连接学习与符号学习的耦合,可以更好地解决连续性信号处理中知识与技能的获取,使求解问题受到重视。(3)机器学习与人工智能各种基础问题的统一性观点正在形成。例如,学习与问题求解结合进行、知识表达学习的观点与智能系统SOAR的组块学习结合。类比学习与问题求解结合基于案例的方法已成为经验学习的重要方向。(4)各种学习方法的应用范围不断扩大,一部分已形成商品。归纳学习的知识获取工具已在诊断类专家系统中广泛使用。连接学习在声、图、文识别中占优势。分析学习已用于设计综合型专家系统。遗传算法与强化学习在工程控制中有较好的应用前景。与符号系统耦合的神经网络连接学习将在企业的智能管理与智能机器人运动规划中发挥作用。(5)与机器学习有关的学术活动空前活跃。国际上除每年一次的大型机器学习研讨会外,还有计算机学习理论会议及遗传算法会议。1.1.3 机器学习算法的分类

在机器学习中,根据任务的不同,可以分为监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)、半监督学习(Semi-Supervised Learning)和增强学习(Reinforcement Learning)。

监督学习的训练数据包含类别信息,如在垃圾邮件检测中,其训练样本包含邮件的类别信息:垃圾邮件和非垃圾邮件。在监督学习中,典型的问题是分类(Classification)和回归(Regression),典型的算法有Logistic Regression、BP神经网络算法和线性回归算法。

与监督学习不同的是,无监督学习的训练数据中不包含任何类别信息。在无监督学习中,其典型的问题为聚类(Clustering)问题,代表算法有K-Means算法、DBSCAN算法等。

半监督学习的训练数据中一部分数据包含类别信息,另一部分数据不包含类别信息,是监督学习和无监督学习的融合。在半监督学习中,其算法一般在监督学习的算法上进行扩展,使之可以对未标注数据建模。1.1.4 通用机器学习算法

整体来说,通用机器学习算法主要有以下10种,本书对这10种机器学习算法展开介绍。(1)朴素贝叶斯分类器算法。(2)K均值聚类算法。(3)支持向量机算法。(4)Apriori算法。(5)线性回归。(6)逻辑回归。(7)人工神经网络。(8)随机森林。(9)决策树。(10)最近邻算法。1.2 学习算法

监督学习和无监督学习是使用较多的两种学习方法,而半监督学习是监督学习和无监督学习的融合,本书着重介绍监督学习和无监督学习。1.2.1 监督学习

在监督学习中,给定一组数据,我们知道,正确的输出结果应该是什么样子,并且知道在输入和输出之间有一个特定的关系。在监督学习中,分类算法和回归算法是两类重要的算法,两者之间主要的区别是,分类算法中的标签是离散值,如广告点击问题的标签为{+1,-1},分别表示广告的点击和未点击。而回归算法中的标签值是连续值,如通过人的身高、性别、体重等信息预测人的年龄,因为年龄是连续的正整数,因此标签为且[1,80]。

1.监督学习流程

监督学习流程的具体过程如图1-1所示。图1-1 监督学习流程的具体过程

对于具体的监督学习任务,首先是获取到带有属性值的样本,假设有个训练样本,然后对样本进行预处理,过滤数据中的杂质,保留有用信息,这个过程称为特征处理或特征提取。

通过监督学习算法习得样本特征到样本标签之间的假设函数。监督学习通过样本数据中习得的假设函数,用其对新数据进行预测。

2.监督学习算法

分类问题是指通过训练数据学习一个从观测样本到离散标签的映射,其是一个监督学习问题。典型问题有:(1)垃圾邮件的分类(Spam Classification):训练样本是邮件中的文本,标签是每个邮件是否是垃圾邮件({+1,-1},+1表示是垃圾邮件,-1表示不是垃圾邮件),目标是根据这些带标签的样本,预测一个新邮件是否是垃圾邮件。(2)点击率预测(Click-through Rate Prediction):训练样本是用户、广告和广告主的信息,标签是否被点击({+1,-1},+1表示点击,-1表示未点击)。目标是在广告主发布广告后,预测指定用户是否会点击。上述两种问题都是二分类问题。(3)手写字识别,即识别是{0,1,…,9}中的哪个数字,这是一个多分类问题。

与分类问题不同的是,回归问题是指通过训练数据学习一个从观测样本到连续标签的映射,在回归问题中的标签是一系列连续值。典型的回归问题有:(1)股票价格的预测,即利用股票的历史价格预测未来的股票价格。(2)房屋价格的预测,即利用房屋的数据,如房屋的面积、位置等信息预测房屋的价格。1.2.2 无监督学习

和分类、回归算法相比,无监督学习算法的主要特性是输入数据是未标注过的,即没有给定的标签或分类,其在没有任何辅助的条件下学习数据结构。这带来了两点主要不同。(1)使我们可以处理大量数据,因为数据不需要人工标注。(2)评估无监督学习算法的质量比较难,因为缺乏监督学习算法所用的明确的优秀测度。

无监督学习中常见的任务之一是降维。一方面,降维可能有助于可视化数据(如t-SNE方法);另一方面,降维可能有助于处理数据的多重共线性,为监督学习算法(如决策树)准备数据。

1.无监督学习流程

无监督学习流程的具体过程如图1-2所示。图1-2 无监督学习流程的具体过程

对于具体的无监督学习任务,首先是获取带有特征值的样本。假设有个训练数据,对这个样本进行处理,得到有用的信息,这个过程称为特征处理或特征提取,最后通过无监督学习算法处理这些样本,如利用聚类算法对这些样本进行聚类。

2.无监督学习算法

聚类算法是无监督学习算法中最典型的一种学习算法。聚类算法利用样本的特征将具有相似特征的样本划分到同一个类别中,而不关心这个类别具体是什么,如表1-1所示的聚类问题。表1-1 聚类问题

在表1-1所示的聚类问题中,通过分别比较特征1(是否有翅膀)和特征2(是否有鳍)来对上述样本进行聚类。从表1-1中的数据可看出,样本1和样本2较相似,样本3和样本4较相似,因此,可以将样本1和样本2划分到同一个类别中,将样本3和样本4划分到另一个类别中,而不用去关心样本1和样本2所属的类别具体是什么。

除了聚类算法,在无监督学习中,还有一类重要的算法是降维算法,数据降维的基本原理是将样本点从输入空间通过线性或非线性变换映射到一个低维空间,从而获得一个关于原始数据集的低维表示。1.3 机器学习应用程序的步骤

在学习和使用机器学习算法来开发应用程序时,通常遵循以下步骤。(1)收集数据。

我们可以使用很多方法收集样本数据,如制作网络爬虫从网站上抽取数据、从RSS反馈或从API中得到信息、设备发送过来的实测数据(风速、血糖等)。提取数据的方法非常多,为了节省时间与精力,可以使用公开可用的数据源。(2)准备输入数据。

得到数据后,必须确保数据格式符合要求,本书采用的格式是Python语言的List。使用这种标准数据格式可以融合算法和数据源,方便匹配操作。

此外,还需要为机器学习算法准备特定的数据格式,如某些算法要求特征值使用特定的格式,一些算法要求目标变量和特征值是字符串类型,而另一些算法可能要求是整数类型。与收集数据的格式相比,处理特殊算法要求的格式相对简单。(3)分析输入数据。

此步骤主要是人工分析以前得到的数据。为了确保前两步有效,最简单的方法是用文本编辑器打开数据文件,查看得到的数据是否为空值。此外,还可以进一步浏览数据,分析是否可以识别出模式;数据中是否存在明显的异常,如某些数据点与数据集中的其他值存在明显差异。通过一维、二维或三维图形展示数据也是不错的方法,然而多数时候我们得到的数据特征值不会低于3个,无法一次图形化展开所有特征。

这一步的主要作用是确保数据集中有可用数据且没有垃圾数据。如果是在产品化系统中使用机器学习算法,并且算法可以处理系统产生的数据格式,或者我们信任数据来源,可以直接跳过第3步。此步骤需要人工干预,如果在自动化系统中需要人工干预,显然降低了系统的价值。(4)训练算法。

机器学习算法从这一步才真正开始学习。根据算法的不同,第4步和第5步是机器学习算法的核心。我们将前两步得到的格式化数据输入到算法中,从中抽取知识或信息。这里得到的知识需要存储为计算机可以处理的格式,方便后续步骤使用。

如果使用无监督学习算法,那么由于不存在目标变量值,故不需要训练算法,所有与算法相关的内容都集中在第5步。(5)测试算法。

这一步将实际使用第4步机器学习得到的知识信息。为了评估算法,必须测试算法工作的效果。对于监督学习,必须已知用于评估算法的目标变量值;对于无监督学习,也必须用其他评测手段来检验算法的成功率。无论是哪种情形,如果不满意算法的输出结果,则可以回到第4步,改进并加以测试。问题常常与数据的收集和准备有关,这时就需要跳回第1步重新开始。(6)使用算法。

将机器学习算法转换为应用程序,执行实际任务,以检验上述步骤是否可以在实际环境中正常工作。此时如果碰到新的数据问题,同样需要重复执行上述步骤。1.4 Python语言

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

Python具有丰富和强大的库,常被称为“胶水语言”,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特殊要求的部分,用更合适的语言改写,如3D游戏中的图形渲染模块,其性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是,在使用扩展类库时可能需要考虑平台问题,某些情况可能不提供跨平台实现。1.4.1 Python的风格

Python 在设计上坚持了清晰的风格,这使得其成为一款易读、易维护,被大量用户所欢迎的、用途广泛的语言。

Python的作者有意地设计了限制性很强的语法,使得不好的编程习惯(如if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是Python的缩进规则。

一个和其他语言(如C语言)的区别就是,一个模块的界限完全是由每行的首字符在这一行的位置来决定的(而C语言是用一对花括号{}来明确模块边界的,与字符的位置毫无关系)。这一点曾经引起过争议。因为自从C这类语言诞生后,语言的语法含义与字符的排列方式分离开来,这曾经被认为是一种程序语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if、for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。1.4.2 Python的优势

基于Python具有以下优势,本书选择Python作为实现机器学习算法的编程语言。(1)简单。Python是一款代表简单主义思想的语言。阅读一个良好的Python程序感觉像是在读英语一样,它能够使你专注于解决问题而不是去搞明白语言本身。(2)易学。因为Python有极其简单的说明文档,所以极容易上手。(3)速度快。Python 的底层是用 C 语言写的,很多标准库和第三方库也是用C语言写的,运行速度非常快。(4)免费、开源。Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地复制这个软件、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。(5)高层语言。用Python语言编写程序的时候无须考虑诸如如何管理你的程序使用的内存一类的底层细节。(6)可移植性。由于其开源本质,Python已经被移植在许多平台上(经过改动使其能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian及Google基于Linux开发的Android平台。(7)解释性。一个用编译性语言如C或C++写的程序可以从源文件(即C或C++语言)转换到一个计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。

运行程序的时候,连接/转载器软件把程序从硬盘复制到内存中并运行,而Python语言写的程序不需要编译成二进制代码,你可以直接从源代码运行程序。

在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单,也使得Python程序更加易于移植。(8)面向对象。Python既支持面向过程的编程,也支持面向对象的编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。(9)可扩展性。如果需要一段关键代码运行得更快或希望某些算法不公开,则可以部分程序用C或C++语言编写,然后在Python程序中使用它们。(10)可嵌入性。可以把Python嵌入C/C++程序,向用户提供脚本功能。(11)丰富的库。Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等。(12)规范的代码。Python采用“强制缩进”的方式使得代码具有较好的可读性,而Python语言写的程序不需要编译成二进制代码。1.4.3 Python语言的缺点

无论功能多么强大的软件,也一定有相应的缺点。Python的缺点主要表现在以下3个方面。(1)单行语句和命令行输出问题。很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i,而perl和awk就无此限制,可以较为方便地在shell下完成简单程序,不需要将程序写入一个.py文件。(2)独特的语法。这也许不应该被称为缺点,但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。(3)运行速度慢。这里是指与C和C++语言相比。1.5 Python的环境搭建

安装Python非常容易,可以在它的官网找到最新版本并下载,地址为http://www.python.org。

如图1-3所示,进入Python官网后下载最新版本的Python即可。(本书出版时的最新版为3.8.1)图1-3 下载Python 3.6.5

如果是其他操作系统(如Mac OS X),在页面下方可以找到对应的下载地址,如图1-4所示。图1-4 用其他操作系统下载Python 3.6.51.5.1 安装

Python是一款跨平台的编程语言,这意味着它能够运行在所有主流的操作系统中。在所有安装了Python的计算机上,都能够运行Python程序。然而,在不同的操作系统中,安装Python的方法存在细微差别。

Windows系统并非都默认安装了Python,因此用户可能需要下载并安装它,以及下载并安装文本编辑器。

1.Python的安装

下载并安装Python 3.6.5(注意选择正确的操作系统)。下载后,安装界面如图1-5所示。图1-5 安装界面

在图1-5中选择Modify,进入如图1-6所示的界面,可以看出Python包自带pip命令。图1-6 Optional Features界面

单击“Next”按钮,即选择安装项,并且可选择安装路径,如图1-7所示。图1-7 安装项及安装路径选择界面

选择所需要的安装项及所存放的路径后,单击“Install”按钮,即可进行安装,安装完成界面如图1-8所示。图1-8 安装完成界面

完成Python的安装后,再到PowerShell中输入python,看到进入终端的命令提示,则代表Python安装成功。终端显示安装成功后的信息如图1-9所示。图1-9 终端显示安装成功后的信息

2.文本编辑器的安装

要下载Windows Geany安装程序,可访问httt://geany.org/,单击Download下的Releases,找到安装程序geany-1.25_setup.exe或类似文件。下载安装程序后,运行并接受所有的默认设置。

启动Geany,选择菜单“文件|另存为”,将当前的空文件保存为“hello_world.py”,再在编辑窗口中输入代码:

效果如图1-10所示。图1-10 Windows系统下的Geany编辑器

现在选择菜单“生成|设置生成命令”,将看到文字Compile和Execute,二者旁边都有一个命令。默认情况下,这两个命令都是python(全部小写),但Geany不知道这个命令位于系统的什么地方。需要添加启动终端会话时使用的路径。在编译命令和执行中,添加命令python所在的驱动器和文件夹。编译命令效果如图1-11所示。图1-11 编译命令效果提示:务必确定空格和大小写都与图1-11中显示的完全相同。正确地设置这些命令后,单击“确定”按钮,即可成功运行程序。

在Geany中运行程序的方式有3种。为运行程序hello_world.py,可选择菜单“生成| Execute”,也可单击按钮或按F5键。运行hello_world.py时,弹出一个终端窗口,效果如图1-12所示。图1-12 运行效果1.5.2 使用pip安装第三方库

pip是Python安装各种第三方库(package)的工具。

对第三方库不太理解的读者,可以将库理解为供用户调用的代码组合。在安装某个库后,可以直接调用其中的功能,而不用自己编写代码去实现某个功能。这就像当需要为计算机杀毒时通常会选择下载一个杀毒软件一样,而不是自己写一个杀毒软件,直接使用杀毒软件中的杀毒功能来杀毒就可以了。这个比喻中的杀毒软件就像是第三方库,而杀毒功能就是第三方库中可以实现的功能。

下面例子中将介绍如何用pip安装第三方库bs4,它可以使用其中的BeautifulSoup解析网页。(1)首先,打开cmd.exe,在Windows中为cmd,而在Mac中为terminal。在Windows中,cmd命令是提示符,输入一些命令后,cmd.exe可以执行对系统的管理。单击“开始”按钮,在“打开(O):”文本框中输入cmd后按回车键,系统会打开命令提示符窗口,如图1-13所示。在Mac中,可以直接在“应用程序”中打开terminal程序。图1-13 cmd界面(2)安装bs4的Python库。在cmd中输入pip install bs4后按回车键,如果出现successfull installed,表示安装成功,如图1-14所示。图1-14 成功安装bs4

除了bs4库,之后还会用到requests库、lxml库等其他第三方库,帮助我们更好地使用Python实现机器学习。1.6 NumPy函数库基础

机器学习算法涉及很多线性代数知识,因此本书在使用Python语言构造机器学习应用时,经常会用NumPy函数库。如果不熟悉线性代数也不用着急,此处用到线性代数只是为了简化数学运算。例如,将数据表示为矩阵形式,只需要执行简单的矩阵运算而不需要复杂的循环操作。在使用本书相关内容前,必须确保可以正确运行Python开发环境,同时正确安装NumPy函数库。NumPy函数库是Python开发环境的一个独立模块,并且大多数Python发行版没有默认安装NumPy函数库,因此在安装Python之后必须单独安装NumPy函数库。在Windows命令行提示符下输入Python后按回车键,显示如图1-9所示的界面,即提示已进入Python shell开发环境:

在Python shell开发环境中输入以下命令:

上述命令将NumPy函数库中的所有模块引入当前的命名空间,即出现如图1-15所示的效果。图1-15 命令行启动Python并在Python shell开发环境中导入模块效果

然后在Python shell开发环境中输入以下命令:

由于上述命令构造了一个4×3的随机数组,因为产生的是随机数组,不同计算机的输出结果可能与上述结果完全不同。提示:NumPy矩阵与数组的区别:NumPy函数库中存在两种不同的数据类型(矩阵matrix和数组array),都可以用于处理行列表示的数字元素。虽然它们看起来很相似,但是在这两个数据类型上执行相同的数学运算可能得到不同结果,其中NumPy函数库中的matrix与MATLAB中的matrices等价。

调用mat()函数可以将数组转化为矩阵,例如:

接着,执行矩阵乘法,得到矩阵与其逆矩阵相乘的结果:

结果应该是单位矩阵,除了对角线元素是1,4×4矩阵的其他元素应该全为0。实际输出结果略有不同,矩阵中还留下了许多非常小的元素,这是计算机处理误差产生的结果。输入以下命令,得到误差值:

函数eye(4)创建4×4的单位矩阵。1.7 Python的基础知识

交互式编程不需要创建脚本文件,通过 Python 解释器的交互模式进行代码编写。1.7.1 数和表达式

交互式Python解释器可用作功能强大的计算器。例如,尝试执行如下操作:

运行程序,输出如下:

以上运算是很常见的运算。(下面假设对如何使用计算器很熟悉,知道1+3*3和(1+3)*3有何不同)所有常见算术运算符的工作原理与预期的一致。除法运算的结果为小数,即浮点数(float或floating-point number)。

如果想丢弃小数部分,即执行整除运算,可使用双斜杠。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载