只需十四步:从零开始掌握Python机器学习(附资源)
其作者选自Mayo, 机器之心编译, 当中参与人员有黄小天, 还有吴攀, 接下来是晏奇, 另外还有蒋思源。
说起当下最流行的机器学习语言没错吧可以这么说并且在网上确实能够找到海量大量的超丰富广泛的学习资源此时你是不是正在思索考虑要不要开始入门机器学习呢这本提供相关指引辅助的教程或许会助力支持你顺利成功真正上手从而从零基础开始达到完全掌握机器学习的程度至于之后再从已掌握的基础进一步提升进阶成为机器学习领域的专家那就得全看取决于你个人自身付出的专注十足努力了这本教程原本的内容文本划分为两个部分机器之心在这篇文章当中把它进行了整合汇总原文可以参考查阅下面呈现的 和 这本教程的 也就是作者是担任 副主编同时兼任数据科学家职位的 Mayo。

“开始”常常是最为困难的, 特别是在选择极为繁多之际, 一个人通常极难下定决心去做出抉择。本教程的目的在于助力几乎毫无机器学习背景的新手成长为知识丰富的实践者, 并且在这个进程当中仅需运用免费的材料以及资源便可。这个大纲的主要目标是引领你知晓那些数量众多的可用资源。毋庸置疑, 资源着实有许多, 然而哪些才是最为出色的? 哪些是相互补充的? 按照怎样的顺序去学习这些资源才是最为恰当的?
首先,我假设你并不是以下方面的专家:
机器学习任何 的机器学习、科学计算或数据分析库
可是, 要是你对于先前的那两个议题有着一定水准的基础认知那就更佳了, 然而实则其并非是必需的, 于初期时期仅仅需多拨出那么些许点儿工夫打听一下便没问题了。
基础篇
第一步:基本 技能
要是我们计划借助 以开展机器学习工作, 那么针对 存在一些基础的认知便具有关键意义。所幸的是, 鉴于 是一种被广泛运用的通用型编程语言, 再加上其于科学计算以及机器学习范畴的应用, 因而寻觅一个针对初学者的教程并非极为困难。你于 和编程方面的经验水准对于开启起步阶段来讲是具有关键意义的。
最开始, 你得进行安装。鉴于往后我们会用到科学计算以及机器学习软件包, 故而我提议安装。这是一款能够用于Linux、OS X以及 之上的工业级的 实现, 完整涵盖了机器学习所需的软件包, 像numpy、-learn以及。它还包含了 , 这是一种应用于我们众多教程里的交互式环境。我给出安装 2.7的建议。

要是你对编程方面并不了解, 那我提议你先从下面这些免费的在线书籍着手展开学习, 之后再去接触后续的材料。
知晓《艰难学会的方法》, 创作之人是泽德·A·肖:
要是你具备编程方面的经验, 然而却并不了解, 或者说还处在非常初级的水平, 那我给出这样的建议, 你去学习下面的这两个课程:
学习的人是视觉学习者, 这个时候强烈推荐, 谷歌开发者课程中的科学计算入门, 这个入门很不错, 大概六十页前后(它是来自 UCSB 的 M. Scott Shell给出的), 内容是这样的:
如果你要 30 分钟上手 的快速课程,看下面:
在 Y 分钟内学会 X(X=):
要是已然身为经验丰富的程序员, 那这一步能够跳过。即便如此, 仍旧建议时常使用相关文档, 如此为之。
第二步:机器学习基础技巧
我们已经指出, 现在, 人们去评价一个「数据科学家」, 已然存在很多不一样的标准了。这事实上是以机器学习领域作为一个写照的, 因为数据科学家大部分时间所干的事情, 都涉及到在不同程度上去运用机器学习算法。为了能够有效地创造以及获得来自支持向量机的洞见, 非常熟悉核方法()是不是必要的呢? 当然并非如此。就如同几乎生活里的所有事情那样, 掌握理论的深度是和实践应用相关联的。对机器学习算法的深度了解, 超出了本文探讨的范畴, 它通常要求你, 把极为大量的时间, 投入到更为学术的课程里, 或者起码是你自身要开展高强度的自学训练。
好消息是, 对于实践而言, 你并非需要获取如同机器学习博士那般的理论理解, 想要成为一名高效的程序员, 并不一定要去学习计算机科学理论。
吴恩达在某相关方面的机器学习课程内容, 广受众人好评;可我的建议是, 先去翻阅往前一名学生的在线课堂笔记记录, 把特定针对在学习这儿和你毫无关联的类似一种语言的笔记给跳过。要特别清楚这些笔记并非官方所出, 不过能从其中捕捉吴恩达课程材料里相关的部分内容。如果你当下有学习时间, 且同时存在相应兴趣, 那现在就能去特定线上学习吴恩达的机器学习课程。
吴恩达课程的非官方笔记:
若是除开上面所提及的吴恩达课程, 要是你另外还有所需求, 那互联网上便有着许许多多各种各样的课程供你去进行挑选。比如说我对Tom就甚是喜爱, 这儿是他近期演讲的视频(一同的还有Maria -), 其十分和蔼可亲。
Tom 的机器学习课程:
当下, 你并非需要全部的笔记以及视频。有一种有效的法子是, 待你觉着适宜之时, 径直去瞧下面特定的练习题, 参照上述备注以及视频恰当的部分。
第三步:科学计算 软件包概述
好, 我们已然掌握了编程, 并且对于机器学习有了一定程度的知晓。并且, 在这之外, 存在着一些常常被用来执行实际机器学习的开源软件库。从广义的角度来讲, 有着诸多所谓的科学库,这些库能够被用于执行基本的机器学习任务, 不过在这方面的判断必定是存在着一些主观性的, 对吧:
numpy, 一个对其 N 维数组对象主要有用的数据分析库, 它包含如数据框架等结构, 还有一个 2D 绘图库, 能产生出版物质量的图表, 以及用于数据分析和数据挖掘人物的机器学习算法。
学习这些库的一个好方法是学习下面的材料:
来自Gal以及Olav的Scipy笔记, 这个教程也很不错, 10到:
于本教程往后部分, 你还会瞧见一些别的软件包, 像基于某事物的数据可视化库这般的。先前提及的软件包仅是机器学习里常常会用到的一些核心库的其中一部分, 然而弄明白它们应当能使你于后续碰到别的软件包之际不会产生困惑。
下面就开始动手吧!
第四步:使用 学习机器学习
首先检查一下准备情况
:就绪机器学习基本材料:就绪Numpy:就绪:就绪:就绪
眼下, 已然到了运用, 机器学习标准库, 那个“-learn”, 去达成机器学习算法的时刻了。

-learn 流程图
下面诸多的教程以及训练都是借助()达成的, 是执行语句的一种交互式环境, 能够极为便利地于网上寻觅到、将其下载至你的本地计算机。
来自斯坦福的 概览:
与此同时还需留意, 下述教程是由一连串在线资源构建而来。要是你发觉课程存在某些不契合之处, 能够跟作者作沟通。我们首个教程起始于 “ -learn ”, 我提议诸位在持续完 成交 程之前, 依照顺序浏览一下下述文章。
下面是一篇文章, 是关于 -learn 的简介, -learn 是极为常用的通用机器学习库, 它对 K 近邻算法进行了覆盖。
Jake 写的 -learn 简介:
接下来的, 是越发深入、拓展的一篇梗概, 涵盖了起始于知名数据库去完成一个项目。
Olson 的机器学习案例笔记:
下一篇, 关注的是在 -learn 上, 评估不同模型的策略, 这里面涵盖训练集与测试集的分割方式:
Kevin 的模型评估:
第五步: 上实现机器学习的基本算法
有相当基础的 -learn 之后会怎样, 不妨进而去探究更为普遍且实用的算法。我们先从赫赫有名的 K 均值聚类算法着手, 它是一种简易且高效的办法, 能够得力地化解非监督学习问题。
K-均值聚类:
接下来我们可以回到分类问题,并学习曾经最流行的分类算法:
决策树:
在了解分类问题后,我们可以继续看看连续型数值预测:
线性回归:
我们也可以利用回归的思想应用到分类问题中,即 回归:
回归:
第六步: 上实现进阶机器学习算法
已然熟悉了 -learn, 此刻能够去了解更高级别的算法了。当中首先要提及的是支持向量机, 它属于一种非线性分类器, 该分类器依靠将数据实行转换映射至高维空间。
支持向量机:
随即便可以, 借由竞赛, 检查以学习情形, 作为构成具备集成性质分类器的随机森林。
竞赛(使用随机森林):
用于减少在问题里所运用的变量的, 常常是降维算法。主成份分析法, 属于非监督降维算法的一种特殊形式。
降维算法:
在步入第七步以前, 我们能够耗费些许时间思索于相对不长的时段里所获取的某些进展。
首先运用及其机器学习库, 我们不但已然知晓了一些极为常见且广为人知的机器学习算法, 诸如 k 近邻、k 均值聚类、支持向量机等, 而且还探究了强大的集成技术, 也就是随机森林, 并且研究了一些额外的机器学习任务, 像降维算法和模型验证技术。除了一些基础的机器学习技巧, 我们已然着手寻觅一些实用的工具包。
我们会进一步学习新的必要工具。
第七步: 深度学习

神经网络包含很多层
深度学习在任何地方都存在着, 它是建立于几十年前神经网络根基之上的, 然而最近所取得的进步起始于几年先前, 并且极大程度地提升了深度神经网络的认知水准, 从而引发了人们极为广泛的兴趣, 要是你对于神经网络尚还并不熟悉的话, 有着诸多文章详尽地介绍了最近深度学习极为大量的创新成果、所获成就以及其所得到的赞许。
并不打算在最后一步将所有类型的深度学习都评论一番, 而是要在两个当代先进的深度学习库当中, 探究几组简单的网络实现, 对于那些有兴趣深入挖掘深度学习的读者, 本人建议从下面这些免费的在线书籍着手开始:
神经网络与深度学习,作者 :
1.
链接:
是我们讲到的第一个 深度学习库。看看 作者怎么说:
存在这么一个库, 它能够让你以有效的方式去定义, 去优化包含多维数组的数学表达式, 还能对其进行评估。
下述有关运用, 学习深度学习的入门教程, 篇幅较长, 然而足够优质, 描述生动形象, 评价颇高: 标点符号。
深度学习教程,作者 Colin :
2.Caffe
链接:
我们将进行测试驱动的另一个库是Caffe, 再一次, 我们从作者开始。
Caffe是深度学习框架, 它由表达搭建, 由速度搭建, 由模块性搭建, 视觉与学习中心及社区工作者共同展开对Caffe的开发。
这个教程, 是本篇文章内, 最好的那一个。我们已然学习了上面几个有意思的样例, 然而没有一个能够与下面这个样例相较量, 它能够借助Caffe达成谷歌的。这个着实相当精彩!在掌握教程以后, 可以试着让你的处理器顺畅运行, 权且当作是娱乐。
通过 Caffe 实现谷歌 :
在理解众多机器学习算法方面, 我没保证这会迅速且轻松达至结局, 并最终取得某种状态、完成整个经由这些算法构建出的复杂体系, 但是, 倘若你付出时长、付诸时间心血、投入了宝贵的时程, 并且完成了上面所罗列的那 7 个步骤, 你将会在借助于流行的库、凭借那些流行的库、依靠流行的库来实现算法方面, 变得极为擅长, 而这些流行的库, 其中还包括一些处于目前深度学习研究领域最前沿位置、最前沿层级、最前沿水准的库。
进阶篇

机器学习算法
本篇是那掌握机器学习的7个步骤系列文章里的下篇, 要是你已然学过该系列的上篇, 那想必达到了能让人满意的学习速度以及熟练技能;要是没学过, 你或许就应该去回顾一下上篇, 具体花费多长时间, 是由你当下的理解水平来决定的。我保证这么做是有价值的。快速回顾完事以后, 本篇文章会更清晰地聚焦于几个跟机器学习相关的任务集之上。因为安全地跳过了一些诸如基础、机器学习基础之类的基础模块, 所以我们能够直接迈入不同的机器学习算法当中。这次我们可以根据功能更好地分类教程。
第1步:机器学习基础回顾&一个新视角
上篇中包括以下几步:
1. 基础技能
2. 机器学习基础技能
3. 包概述
4. 运用 开始机器学习:介绍&模型评估
5. 围绕着, 涉及到机器学习范畴的主题, 其中包含, k - 均值聚类, 决策树, 线性回归且还有逻辑回归。
6. 要被提及的高阶机器学习相关的主题之中, 存在着支持向量机, 还有随机森林, 另外还有PCA降维。
7. 中的深度学习
像上面所说的那样, 若你正打算从一开始着手, 我提议你依照顺序把上篇从头到尾看完。并且, 我还会将所有适宜新手的入门资料罗列出来, 有关安装的说明是包含在上篇文章当中的。
然而,如果你已经读过,我会从下面最基础的开始:
机器学习关键术语的解释, 写作者是Mayo, 其地址为维基百科条目里的统计学分类所在之处, 又一处地址是机器学习那完整且详细的概述, 作者是Alex , 还有一处地址是。
要是你正寻觅学习机器学习基础的替代办法或者补充性方式, 恰巧我能够把自己正在看的, 名为Shai Ben - David的视频讲座, 以及Shai - 的教科书推荐给你。
滑铁卢大学 Shai Ben-David 进行的关于机器学习介绍的视频讲座, 叫作理解, 从算法到理论的机器学习且作者是 Shai Ben-David 与 Shai -, 但地址是什么。
铭记, 这些用于介绍的资料, 并非要全部看完方可开启我所撰写的系列文章。视频讲座、教科书以及其他资源, 可于下述情形查阅: 当运用机器学习算法去实现模型之际, 或者当恰当的概念在后续步骤里被实际运用之时。具体情形自行判定。
第2步:更多的分类
起始于新材料, 先稳固分类技术, 再引入额外算法。尽管文章第一部分包含决策树、支持向量机、逻辑回归以及合成分类随机森林, 然而仍要增添k-最近邻、朴素贝叶斯分类器和多层感知器。

-learn 分类器
作为一个简单分类器以及懒惰学习者的示例, k - 最近邻(kNN)存在着这样一种情况, 即所有计算均是在分类时间点发生的, 并非提前于训练步骤期间就已发生。kNN 属于非参数类型, 其借助比较数据实例与 k 最近实例的方式,进而去决定该如何进行分类。
使用 进行 k-最近邻分类。地址:
以贝叶斯定理为基础的分类器是朴素贝叶斯, 它假定特征之间有着独立性且在一个类里任何特定特征的存在以及在所同一类中的任何其它特征的存在毫无关联。
使用 -learn 进行文档分类,作者 Zac 。地址:
多层感知器, 也就是MLP, 它是一种简单的前馈神经网络, 它由多层节点构成, 而且其中每一层都与后续的层实现了完全连接, 多层感知器在-learn版本0.18当中被作了介绍。
先自 -learn 文档里头细细阅读 MLP 分类器之概述, 接着借教程施以练习去妥善实现。
神经网络模型, 是那种有监督式的, 关于-learn的文档有其地址存在。与之相关的, 和有着-learn的神经网络被初学者所使用操作的指南版本中还有0.18 的说明!整个内容的作者是Jose也有其地址在之处, 标点符号。
第3步:更多聚类
我们此刻紧接着来讲那聚类, 它乃一种无监督类别学习形态方式。在上一回所讲部分当中, 我们针对k - means算法展开了探讨议论;我们于此处要予以介绍说明以及期望最大化(EM)。

-learn聚类算法
首先, 去阅读这些介绍性的文章, 第一个呢, 乃是k均值和EM聚类技术的快速比较, 它属于对新聚类形式较为不错的一种延续, 第二个则是关于-learn里可用聚类技术的概述。
聚类技术的比较, 有着简明的技术概括, 其作者是Mayo, 地址是在玩具数据集中去比较不同的聚类算法, 是-learn文档, 地址是 标点添加位置请自行根据正常语句规则确定, 原句表述有些不太清晰完整。
概率聚类算法之中, 期望最大化(EM)是其一, 并且由此涉及到确定实例归属于特定聚类的概率。Han、以及 Pei那儿提到, EM 趋近于统计模型里参数的最大似然性或者最大后验估计。EM 过程起始于一组参数, 不断进行迭代, 直至相对于 k 聚类的聚类达到最大化。
首先着手去阅读, 那种关于EM算法表述清晰的教程, 随后, 再进一步地好好留意, 查看与之相称的 -learn 文档, 最后, 按照已经有的教诲指引, 运用各自的能力去实现EM聚类。
期望最大化(EM)算法教程, 其作者是 Elena。地址为: 高斯混合模型, -learn 文档。地址是: 。使用 构建高斯混杂模型的迅速介绍作品, 作者是 Tiago。地址是:
要是高斯混合模型刚开始看上去会让人困惑不已, 那有关来自 -learn 文档的此一相关部分, 应当能够减轻任何多余的顾虑:
高斯混合对象实现期望最大化(EM)算法以拟合高斯模型混合。
密度相关且带有噪声的空间聚类运用, 它会把密集的数据点集合起来, 同时将低密度的数据点认定为异常值, 借此来开展运作。
先自 -learn 的文档那儿去阅读, 且遵循所给的示例来实现, 接着依照简明的教程去学习。
用于聚类算法的演示, -learn 文档。其地址为, 基于密度而存在的聚类算法()以及实现。地址是。
第4步:更多的集成方法
上篇仅仅涉及了一种单一的集成方法, 那就是随机森林, 也就是RF。RF身为一个顶级的分类器, 在过去的几年当中取得了极大的成功, 然而, 它必定不是唯一的可称得上名目的存在。我们会瞧见包装方式, 会目睹提升手段, 还会看到投票这一行为。

给我一个提升
首先,去阅读这些集成学习器的概述, 其中第一个具备通用性, 第二个呢, 是和 -learn 存在关联的。
介绍集成学习器, 作者是Mayo, 其中集成方法在-learn文档里, 地址是 , 地址是。
接着, 于持续沿用全新的集成方式以前, 借助一个新颖的教程快捷地学习随机森林。
中的随机森林,来自 Yhat。地址:
包装是不同形式的集成分类器, 提升是不同形式的集成分类器, 投票是不同形式的集成分类器, 它们全部涉及建构多个模型, 然而, 这些模型由什么算法构建, 模型使用的数据, 以及结果如何最终组合起来, 这些都会随着方案而变化。
从同一分类算法构建多个的模型, 与此同时使用来自训练集的不同且具有能够独立性质的数据样本, 这是使用learn来实现包装分类器提升的方式, 即从同一分类算法构建多个模型, 然后一个接一个地去链接这些模型, 以此提高往后每个模型的学习, 这也是用learn来实现的, 还有投票, 构建来自不同分类算法的多个模型, 并且运用标准去确定模型怎样最好地进行组合用于实现投票分类器。
那么, 为啥要组合模型呢, 是为了从一个特别的角度去处理这个问题哩 呵, 在这里是有关偏差 - 方差权衡的概述哟 , 具体还涉及到提升呢 , 以下便是 -learn 文档。
存在单一评估器, 与包装相对, 涉及偏差 - 方差分解, 在 -learn 文档中, 其具特定地址。
此刻,你已然阅览了有关集成学习器的某些介绍性资料, 并且对于几个特定的集成分类器具备了基本认知, 接下来讲述怎样从中运用 -learn 在 里实现集成分类器:
经由 -learn, 在, 当中去达成集成机器学习算法, 作者为本 Jason, 地址是。
第5步:梯度提升
紧接着, 我们会持续深入学习集成分类器, 去探究一种在当代极为热门流行的机器学习算法。梯度提升于近期在机器学习领域引发了颇为显著的影响, 进而成为了竞赛里备受欢迎且取得成功的算法当中的一员。

给我一个梯度提升
首先,阅读梯度提升的概述:
维基百科条目:梯度提升。地址:
接下来,了解为什么梯度提升是 竞赛中「最制胜」的方法:
凭什么梯度提升就把好多难题给完美解决了呢? Quora, 其地址是, 大师对什么是梯度提升进行解释, 作者是Ben, 地址是。
尽管 -learn存在着自身独有的梯度提升方面的实现状况, 不过我们将要进行略微的变动处理, 用于应用 库, 这个库我们先前已经有所提及, 此乃更快速的一种实现之物。
下述链接给出了, 库的某些额外讯息, 还有梯度提升(鉴于必要):
维基百科条目:。地址: 上的 库。地址: 文档。地址:
现在,按照这个教程把所有汇聚起来:
阐述关于中梯度提升树的实现指南之作, 其作者是Jesse - Woods, 地址为。
你还可以按照这些更简洁的示例进行强化:
存在于其上的示例()。其地址为, 数据集以及简易教程, 作者是Ieva。其地址为。
更多推荐
所有评论(0)