干货|7步让你从零开始掌握Python机器学习!

2017 年 9 月 24 日 全球人工智能
干货|7步让你从零开始掌握Python机器学习!

“全球人工智能”拥有十多万AI产业用户,10000多名AI技术专家。主要来自:北大,清华,中科院,麻省理工,卡内基梅隆,斯坦福,哈佛,牛津,剑桥...以及谷歌,腾讯,百度,脸谱,微软,阿里,海康威视,英伟达......等全球名校和名企。


-免费加入AI高管投资群>>

-免费加入AI技术专家群>>

这篇文章旨在通过7个步骤,将最少的机器学习知识转化为知识型实践者,所有这一切都在使用免费的材料和资源。这个大纲的主要目标是帮助你通过许多可用的免费选项; 有很多,可以肯定的,但哪些是最好的?哪个互补?使用所选资源的最佳顺序是什么?


首先,我假设你并不是以下方面的专家:

  • 机器学习

  • Python

  • 任何 Python 的机器学习、科学计算或数据分析库

如果你对前两个主题有一定程度的基本了解就更好了,不了解也没有关系,提前花一点点时间了解一下就行了。


第一步:基本 Python 技能

如果你打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。幸运的是,Python 是一种得到了广泛使用的通用编程语言,加上其在科学计算和机器学习领域的应用,所以找到一个初学者教程并不十分困难。你在 Python 和编程上的经验水平对于起步而言是至关重要的。


首先,你需要安装 Python。因为后面会用到科学计算和机器学习软件包,所以建议你安装 Anaconda。这是一个可用于 Linux、OS X 和 Windows 上的工业级的 Python 实现,完整包含了机器学习所需的软件包,包括 numpy、scikit-learn 和 matplotlib。其也包含了 iPython Notebook,这是一个用在许多教程中的交互式环境。推荐安装 Python 2.7。


如果你不懂编程,我建议你从下面的免费在线书籍开始学习,然后再进入后续的材料:

  • Learn Python the Hard Way,作者 Zed A. Shaw:https://learnpythonthehardway.org/book/

如果你有编程经验,但不懂 Python 或还很初级,我建议你学习下面两个课程:

  • 谷歌开发者 Python 课程(强烈推荐视觉学习者学习):https://www.youtube.com/playlist?list=PLfZeRfzhgQzTMgwFVezQbnpc1ck0I6CQl

  • Python 科学计算入门(来自 UCSB Engineering 的 M. Scott Shell)(一个不错的入门,大约有 60 页):

    https://engineering.ucsb.edu/~shell/che210d/python.pdf


如果你要 30 分钟上手 Python 的快速课程,看下面:

  • 在 Y 分钟内学会 X(X=Python):

    https://learnxinyminutes.com/docs/python/

当然,如果你已经是一位经验丰富的 Python 程序员了,就可直接跳过。不过,我也是建议常使用 Python 文档:https://www.python.org/doc/


第二步:机器学习基础技巧

KDnuggets 的 Zachary Lipton 已经指出:现在,人们评价一个「数据科学家」已经有很多不同标准了。这实际上是机器学习领域领域的一个写照,因为数据科学家大部分时间干的事情都牵涉到不同程度地使用机器学习算法。为了有效地创造和获得来自支持向量机的洞见,非常熟悉核方法(kernel methods)是否必要呢?自然不是。就像几乎生活中的所有事情一样,掌握理论的深度是与实践应用相关的。对机器学习算法的深度了解超过了本文探讨的范围,它通常需要你将非常大量的时间投入到更加学术的课程中去,或者至少是你自己要进行高强度的自学训练。


所幸的是,对实践来说,你并不需要获得机器学习博士般的理论理解——就想要成为一个高效的程序员并不必要进行计算机科学理论的学习。


人们对吴恩达在 Coursera 上的机器学习课程内容往往好评如潮;然而,我的建议是浏览前一个学生在线记录的课堂笔记。跳过特定于 Octave(一个类似于 Matlab 的与你 Python 学习无关的语言)的笔记。一定要明白这些都不是官方笔记,但是可以从它们中把握到吴恩达课程材料中相关的内容。当然如果你有时间和兴趣,你现在就可以去 Coursera 上学习吴恩达的机器学习课程:https://www.coursera.org/learn/machine-learning

  • 吴恩达课程的非官方笔记:

    http://www.holehouse.org/mlclass/

除了上面提到的吴恩达课程,如果你还需要需要其它的,网上还有很多各类课程供你选择。比如我就很喜欢 Tom Mitchell,这里是他最近演讲的视频(一起的还有 Maria-Florina Balcan),非常平易近人。

  • Tom Mitchell 的机器学习课程:

    http://www.cs.cmu.edu/~ninamf/courses/601sp15/lectures.shtml

目前你不需要所有的笔记和视频。一个有效地方法是当你觉得合适时,直接去看下面特定的练习题,参考上述备注和视频恰当的部分,


第三步:科学计算 Python 软件包概述

好了,我们已经掌握了 Python 编程并对机器学习有了一定的了解。而在 Python 之外,还有一些常用于执行实际机器学习的开源软件库。广义上讲,有很多所谓的科学 Python 库(scientific Python libraries)可用于执行基本的机器学习任务(这方面的判断肯定有些主观性):

  • numpy——主要对其 N 维数组对象有用

    http://www.numpy.org/

  • pandas——Python 数据分析库,包括数据框架(dataframes)等结构 http://pandas.pydata.org/

  • matplotlib——一个 2D 绘图库,可产生出版物质量的图表 http://matplotlib.org/

  • scikit-learn——用于数据分析和数据挖掘人物的机器学习算法

    http://scikit-learn.org/stable/

学习这些库的一个好方法是学习下面的材料:

  • Scipy Lecture Notes,来自 Gaël Varoquaux、Emmanuelle Gouillart 和 Olav Vahtras:

    http://www.scipy-lectures.org/

  • 这个 pandas 教程也很不错:10 Minutes to Pandas:http://pandas.pydata.org/pandas-docs/stable/10min.html

在本教程的后面你还会看到一些其它的软件包,比如基于 matplotlib 的数据可视化库 Seaborn。前面提到的软件包只是 Python 机器学习中常用的一些核心库的一部分,但是理解它们应该能让你在后面遇到其它软件包时不至于感到困惑。下面就开始动手吧!


第四步:使用 Python 学习机器学习

首先检查一下准备情况

  • Python:就绪

  • 机器学习基本材料:就绪

  • Numpy:就绪

  • Pandas:就绪

  • Matplotlib:就绪

现在是时候使用 Python 机器学习标准库 scikit-learn 来实现机器学习算法了。

scikit-learn 流程图

下面许多的教程和训练都是使用 iPython (Jupyter) Notebook 完成的,iPython Notebook 是执行 Python 语句的交互式环境。iPython Notebook 可以很方便地在网上找到或下载到你的本地计算机。

  • 斯坦福的 iPython Notebook 概览:

    http://cs231n.github.io/ipython-tutorial/

同样也请注意,以下的教程是由一系列在线资源所组成。如果你感觉课程有什么不合适的,可以和作者交流。我们第一个教程就是从 scikit-learn 开始的,我建议你们在继续完成教程前可以按顺序看一看以下的文章。


下面是一篇是对 scikit-learn 简介的文章,scikit-learn 是 Python 最常用的通用机器学习库,其覆盖了 K 近邻算法:

  • Jake VanderPlas 写的 scikit-learn 简介

    http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/scikit-learn/scikit-learn-intro.ipynb

下面的会更加深入、扩展的一篇简介,包括了从著名的数据库开始完成一个项目:

  • Randal Olson 的机器学习案例笔记:

    http://nbviewer.jupyter.org/github/rhiever/Data-Analysis-and-Machine-Learning-Projects/tree/master/example-data-science-notebook/

下一篇关注于在 scikit-learn 上评估不同模型的策略,包括训练集/测试集的分割方法:

  • Kevin Markham 的模型评估

    https://github.com/justmarkham/scikit-learn-videos/blob/master/05_model_evaluation.ipynb


第五步:Python 上实现机器学习的基本算法

在有了 scikit-learn 的基本知识后,我们可以进一步探索那些更加通用和实用的算法。我们从非常出名的 K 均值聚类(k-means clustering)算法开始,它是一种非常简单和高效的方法,能很好地解决非监督学习问题:

  • K-均值聚类:

    https://github.com/jakevdp/sklearn_pycon2015/blob/master/notebooks/04.2-Clustering-KMeans.ipynb

接下来我们可以回到分类问题,并学习曾经最流行的分类算法:

  • 决策树:

    http://thegrimmscientist.com/tutorial-decision-trees/

在了解分类问题后,我们可以继续看看连续型数值预测:

  • 线性回归:

    http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/scikit-learn/scikit-learn-linear-reg.ipynb

我们也可以利用回归的思想应用到分类问题中,即 logistic 回归:

  • logistic 回归:

    https://github.com/justmarkham/gadsdc/blob/master/logistic_assignment/README.md


第六步:Python 上实现进阶机器学习算法

我们已经熟悉了 scikit-learn,现在我们可以了解一下更高级的算法了。首先就是支持向量机,它是一种依赖于将数据转换映射到高维空间的非线性分类器。

  • 支持向量机:

    https://github.com/jakevdp/sklearn_pycon2015/blob/master/notebooks/03.1-Classification-SVMs.ipynb

随后,我们可以通过 Kaggle Titanic 竞赛检查学习作为集成分类器的随机森林:

  • Kaggle Titanic 竞赛(使用随机森林):

    http://nbviewer.jupyter.org/github/donnemartin/data-science-ipython-notebooks/blob/master/kaggle/titanic.ipynb

降维算法经常用于减少在问题中所使用的变量。主成份分析法就是非监督降维算法的一个特殊形式:

  • 降维算法:

    https://github.com/jakevdp/sklearn_pycon2015/blob/master/notebooks/04.1-Dimensionality-PCA.ipynb

在进入第七步之前,我们可以花一点时间考虑在相对较短的时间内取得的一些进展。首先使用 Python 及其机器学习库,我们不仅已经了解了一些最常见和知名的机器学习算法(k 近邻、k 均值聚类、支持向量机等),还研究了强大的集成技术(随机森林)和一些额外的机器学习任务(降维算法和模型验证技术)。除了一些基本的机器学习技巧,我们已经开始寻找一些有用的工具包。我们会进一步学习新的必要工具。


第七步:Python 深度学习

神经网络包含很多层


深度学习无处不在。深度学习建立在几十年前的神经网络的基础上,但是最近的进步始于几年前,并极大地提高了深度神经网络的认知能力,引起了人们的广泛兴趣。如果你对神经网络还不熟悉,KDnuggets 有很多文章详细介绍了最近深度学习大量的创新、成就和赞许。


最后一步并不打算把所有类型的深度学习评论一遍,而是在 2 个先进的当代 Python 深度学习库中探究几个简单的网络实现。对于有兴趣深挖深度学习的读者,我建议从下面这些免费的在线书籍开始:

  • 神经网络与深度学习, Michael Nielsen:http://neuralnetworksanddeeplearning.com/

1.Theano   http://deeplearning.net/software/theano/

Theano 是我们讲到的第一个 Python 深度学习库。看看 Theano 作者怎么说:

Theano 是一个 Python 库,它可以使你有效地定义、优化和评估包含多维数组的数学表达式。


下面关于运用 Theano 学习深度学习的入门教程有点长,但是足够好,描述生动,评价很高:

  • Theano 深度学习教程,Colin Raffel:

    http://nbviewer.jupyter.org/github/craffel/theano-tutorial/blob/master/Theano%20Tutorial.ipynb

2.Caffe   http://caffe.berkeleyvision.org/

另一个我们将测试驱动的库是 Caffe。再一次,让我们从作者开始:

Caffe 是一个深度学习框架,由表达、速度和模块性建构,Bwekeley 视觉与学习中心和社区工作者共同开发了 Caf fe。

这个教程是本篇文章中最好的一个。我们已经学习了上面几个有趣的样例,但没有一个可与下面这个样例相竞争,其可通过 Caffe 实现谷歌的 DeepDream。这个相当精彩!掌握教程之后,可以尝试使你的处理器自如运行,就当作是娱乐。

  • 通过 Caffe 实现谷歌 DeepDream:

    https://github.com/google/deepdream/blob/master/dream.ipynb

我不保证说这会很快或容易,但如果你投入了时间并完成了上面的 7 个步骤,你将在理解大量机器学习算法以及通过流行的库(包括一些在目前深度学习研究领域最前沿的库)在 Python 中实现算法方面变得很擅长。


原文:http://www.kdnuggets.com/2015/11/seven-steps-machine-learning-python.html

AI专家问答平台 

热门文章推荐

华裔女科学家钱璐璐,发明仅20纳米的DNA机器人!

Geoffrey Hinton提出capsule 概念,推翻反向传播!

2017年7大最受欢迎的AI编程语言:Python第一!

重磅|中国首家人工智能技术学院在京揭牌开学!

厉害 | 南京大学周志华教授当选欧洲科学院外籍院士!

5个月市值涨了1200亿,首次突破3100亿市值!

华为扔下这枚“AI芯弹”,全世界的智能手机都卡(慢)死了!

用57行代码搞定花8000万美元采购车牌识别项目

厉害|百度28位离职技术大牛和他们创建的AI公司!

一AI工程师下载200万GB色情内容,只为学习Python!

登录查看更多
6

相关内容

Scikit-learn项目最早由数据科学家David Cournapeau 在2007 年发起,需要NumPy和SciPy等其他包的支持,是Python语言中专门针对机器学习应用而发展起来的一款开源框架。

有兴趣的数据科学专业人士可以通过本书学习Scikit-Learn图书馆以及机器学习的基本知识。本书结合了Anaconda Python发行版和流行的Scikit-Learn库,演示了广泛的有监督和无监督机器学习算法。通过用Python编写的清晰示例,您可以在家里自己的机器上试用和试验机器学习的原理。

所有的应用数学和编程技能需要掌握的内容,在这本书中涵盖。不需要深入的面向对象编程知识,因为工作和完整的例子被提供和解释。必要时,编码示例是深入和复杂的。它们也简洁、准确、完整,补充了介绍的机器学习概念。使用示例有助于建立必要的技能,以理解和应用复杂的机器学习算法。

对于那些在机器学习方面追求职业生涯的人来说,Scikit-Learn机器学习应用手册是一个很好的起点。学习这本书的学生将学习基本知识,这是胜任工作的先决条件。读者将接触到专门为数据科学专业人员设计的蟒蛇分布,并将在流行的Scikit-Learn库中构建技能,该库是Python世界中许多机器学习应用程序的基础。

你将学习

  • 使用Scikit-Learn中常见的简单和复杂数据集
  • 将数据操作为向量和矩阵,以进行算法处理
  • 熟悉数据科学中使用的蟒蛇分布
  • 应用带有分类器、回归器和降维的机器学习
  • 优化算法并为每个数据集找到最佳算法
  • 从CSV、JSON、Numpy和panda格式加载数据并保存为这些格式

这本书是给谁的

  • 有抱负的数据科学家渴望通过掌握底层的基础知识进入机器学习领域,而这些基础知识有时在急于提高生产力的过程中被忽略了。一些面向对象编程的知识和非常基本的线性代数应用将使学习更容易,尽管任何人都可以从这本书获益。
成为VIP会员查看完整内容
0
174
小贴士
相关资讯
盘一盘 Python 系列 8 - Sklearn
平均机器
5+阅读 · 2019年5月30日
那些值得推荐和收藏的线性代数学习资源
最全数据科学学习资源:Python、线性代数、机器学习...
人工智能头条
8+阅读 · 2018年5月14日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
干货:10 种机器学习算法的要点(附 Python代码)
全球人工智能
3+阅读 · 2018年1月5日
机器学习小白如何成长为业内专家?
深度学习世界
4+阅读 · 2017年12月4日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
机器学习实践指南
Linux中国
4+阅读 · 2017年9月28日
课程 | 12个适合机器学习入门的经典案例
相关VIP内容
专知会员服务
174+阅读 · 2020年6月10日
【干货书】机器学习Python实战教程,366页pdf
专知会员服务
235+阅读 · 2020年3月17日
专知会员服务
113+阅读 · 2020年3月4日
《可解释的机器学习-interpretable-ml》238页pdf
专知会员服务
138+阅读 · 2020年2月24日
专知会员服务
135+阅读 · 2020年2月11日
【电子书】机器学习实战(Machine Learning in Action),附PDF
专知会员服务
81+阅读 · 2019年11月25日
相关论文
Talking-Heads Attention
Noam Shazeer,Zhenzhong Lan,Youlong Cheng,Nan Ding,Le Hou
12+阅读 · 2020年3月5日
Learning by Abstraction: The Neural State Machine
Drew A. Hudson,Christopher D. Manning
5+阅读 · 2019年7月11日
Learning Implicit Fields for Generative Shape Modeling
Zhiqin Chen,Hao Zhang
9+阅读 · 2018年12月6日
Neural Architecture Optimization
Renqian Luo,Fei Tian,Tao Qin,Enhong Chen,Tie-Yan Liu
7+阅读 · 2018年9月5日
Antoine J. -P. Tixier
10+阅读 · 2018年8月30日
Paraphrase Generation with Deep Reinforcement Learning
Zichao Li,Xin Jiang,Lifeng Shang,Hang Li
3+阅读 · 2018年8月23日
Yuxin Wu,Kaiming He
7+阅读 · 2018年3月22日
Alon Talmor,Jonathan Berant
5+阅读 · 2018年3月18日
Ashish Vaswani,Noam Shazeer,Niki Parmar,Jakob Uszkoreit,Llion Jones,Aidan N. Gomez,Lukasz Kaiser,Illia Polosukhin
15+阅读 · 2017年12月6日
Yannis Papanikolaou,Grigorios Tsoumakas
3+阅读 · 2017年9月16日
Top