Q:这篇指南适用于那些读者?
A:
如题所说,是在机器学习方面的小白,但同时不能太白。首先得会用一点python(知道导入包、变量类型、条件控制、循环、数据类型、函数调用、列表、元组、字典、集合等)。其次得装好了scikit-learn包,以及相应的配套包(numpy、scipy、matplotlib)。最后的话,应当了解以i但机器学习的基础知识,比如分类、回归、聚类常用的算法的名字及其适用情况。
Q:作为一个小白,我应该从哪里下手?
A:
学习一个软件,不着急去看软件的各个按钮和模块,而应先了解这个软件所为之服务的工作的业务流程。
机器学习的大致流程都是:数据获取——数据预处理——选择学习算法——训练模型——模型优化——可视化等。
scikit-learn大体分成了六部分,其中clasification、regression、clustering都是主要的学习算法。demensionality reduction、preprocessing是用来数据预处理的。model selection则是用来做模型评估和优化的。
scikit-learn官网首页列出了各部分的一些模块:
<h4>虽说训练算法只占了机器学习过程中20%甚至更少的时间,但是选择一个合适的算法毫无疑问是最重要的。怎样选择一个合适的算法?</h4>
scikit-learn作为一个成熟而功能强大的python机器学习库,提供了一个做机器学习工作时的参考流程。不废话,先贴张图:
图片的地址在这里:<a href="http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html">机器学习工作参考流程图</a>
上面的参考流程图告诉了作为小白的我们,不同数据大小、不同数据类型、不同任务目标的条件下我们应该选择那些算法(模块)。
数据预处理、选择学习算法、训练模型、模型优化等步骤都有相应的模块,但是没数据怎么办?scikit-learn为我们准备了一些小规模的数据集,全部在<a href="http://scikit-learn.org/stable/datasets/index.html">sklearn.datasets</a>这个模块里。
(数据可视化先不管)这样我们就明确了机器学习的工作流程,同时我们也知道了我们应该学习哪些模块——图1和图2中的模块加起来,再学习一个datasets模块,就可以从小白迈向菜鸟。
Q:明确了学习任务后,怎样开始学习?
A:
scikit-learn官网有一个<a href="http://scikit-learn.org/stable/tutorial/basic/tutorial.html">快速上手文章</a>和一份<a href="http://scikit-learn.org/stable/tutorial/index.html">简单教程</a>,另外还有一份详细的<a href="http://scikit-learn.org/stable/user_guide.html">用户手册</a>和API手册。作为一个小白,只需要老老实实拿出笨功夫照着快速上手文章和简单教程练一遍,就能找到一点感觉。然后对照这上面俩图的模块,去用户手册那里弄懂这些模块即可。
什么?英语不好看不懂?那赶紧回去补啊!