自我介绍许久没有写少数派的文章了,前几天正在写留学申请Data Science专业的ps,想了想自己在学习数据科学一路上也走过不少弯路。
自己本身专业并非数据科学,了解这方面也纯粹是当初的一时兴起,之后的日子就慢慢探索了,可能文章中存在很多问题,如果大家有建议可以评论区提出。
我们在生活中的确经常谈论人工智能,但是人工智能是什么,计算机是如何通过算法的实现,让其自身可以思考,以及这些思考方式背后的原理。或许你只是一个存粹的小白,在专业方面无任何与ML相挂钩的东西,但是对ML思考不希望仅仅停留在想象的地步,希望能够自己动手去实现一些有意思的小项目。或许你是一个跨专业的研究生,在即将读研究生的领域需要去掌握一部分ML相关的知识,不知从何开始,不知如何动手,这篇小教程献给你们。注意:这篇文章并非手把手教你如何去学习有关机器学习的任何一个步骤,更像是一篇教程汇总,我的目的更多是让完全没有接触过这个方向的人知道自己应该从哪里开始,如何开始,如果遇上了问题应该去哪里解决。
工欲善其事,必先利其器-PyCharm和Anaconda可以说如何要弄机器学习就离不开Python这门语言,而Python本身其实就对编程小白来说十分友好,在掌握之前就几乎不怎么需要花力气去学,如果之前接触过C++,Java编程等等,这件事情就会变得更加容易。在开始学习Python语言开始之前,需要先将系统的环境配置好。
如果说你的代码是命令,那么Python这个解释器本身就是你命令的翻译,其可以让你的命令使得电脑可以听懂。不同的是Python本身并非是ML,所以你的命令需要非常的符合规定解释器才能正常解释。而发出指令和解释通常需要两个步骤,第一个步骤是发出指令也就是写代码。其实按照道理来说哪里都可以写代码,你的备忘录,手机上,等等,但是在相应的情况下,采用较为好用的IDE软件才是正确的选择,其可以配合语言特性为发出指令提高很多效率例如:查找源码,自动补充变量,实时查看数据结构,等等。而在Python的编程中,对于初学者首先还是比较推荐的IDE是PyCharm,下载链接如下,具体情况可以前往官网下载。在下载之前可以看到,PyCharm是有专业版和社区版本的,其实在初学者面前,社区版本就可以满足日常使用的需要。如果想体验专业版,如果是学生也可以体验一年。
而除了发出指令,解释器也是很重要的一环,按照常规前往python官网安装解释器就可以了,但是如今anaconda也是一个不错的选择。其具体安装包也可以前往官网下载。
在两者都安装后,你可能会想,他们是两个软件,所以按照道理来说,将两者联系起来是不容易的,所以需要在软件内部进行一定的配置,配置过程本文不细则展开解释,以下链接较为详细的教授了配置过程。
在配置环境完成后,便可以准备开始运行程序了。通常来说Python很大的一个优势就是其有重多开发者可以为其开发功能框架。按道理来说,如果我们要实现一些功能,自己写代码是十分困难且低效率的,所以往往在正常使用Python前,往往会先在自己Python解释器的环境中安装一些常用的框架。在数据科学中,对于小白而言一些常用的框架可能包括数据结构用途的Pandas,NumPy框架,画图使用的Matplotilb,seaborn框架,还有一些机器学习用途的像Sklearn,tensorflow框架等等。而由于网速的限制,这些框架在国内直接安装会较为缓慢,所以我常用豆瓣源进行相应的辅助安装,安装教程如下:
我也直接将常用库的代码放到下面,方便大家安装。
pip install -i https://pypi.doubanio.com/simple/ tensorflow
pip install -i https://pypi.doubanio.com/simple/ Matplotlib
pip install -i https://pypi.doubanio.com/simple/ pandas
pip install -i https://pypi.doubanio.com/simple/ seaborn
pip install -i https://pypi.doubanio.com/simple/ numpy
pip install -i https://pypi.doubanio.com/simple/ sklearn发出正确指令!——Python的基础教程前面提到过,命令只有符合规范,解释器才看的懂,才能解释给计算机听,所以如何正确规范的发送命令给计算机尤为重要。网上有很多Python的基础教程,这些教程大部分都较为全面,但是我还是比较建议通过较为稳定的渠道去获取这些知识。提前积累基础语法我比较推荐GitHub上面的一个专项教程:
或者直接跟着菜鸟教程一步一步进行便可。
如果想要稍微进阶一点,我推荐cousera上密歇根大学的这门课,会讲到python中的一些基础用法。
数据科学的灵魂--数据结构和基本算法在学完基础的分析之后,在正式走进数据处理世界之前,我建议最好先将一些基础的数据结构样式以及数据结构方法弄懂。出了python自身语言所包含的一些数据结构形式,还有一些非常方便的第三方的框架,可以非常方便我们对模型中所要用到的数据进行处理。学习这些框架里面函数的用法,英语水平较佳的可以直接官网学习,英语水平一般的可以直接在菜鸟教程里面慢慢试,当然,这些学习我建议浅尝则止,看得懂这个函数的用途和作用即可,至于后续的过程中,更要培养的是一个自己解决问题的能力,遇到不会的操作,看不懂的操作,要学会在互联网上进行检索相关的资料。
那么多数据怎么看的过来呢?——可视化的必要性在对相关的数据框架有一定的基础后,可以开始学习一部分的数据可视化的操作,在模型运行后,我们仅仅依靠相关的metric值是很难正确判断自己模型的优劣的,所以这个时候利用散点,柱状,直方等等图形模式,对模型结果或者过程进行可视化。常用的可视化方案有matplotilb框架和seaborn框架,建议先学习matplotilb框架,它的较为适合入门,甚至有Matlab画图基础的人可以直接上手。
来到了重头戏——机器学习框架从基础语法,到数据结构,到画图,最后才应该是学习相关的机器学习框架,其实机器学习框架有很多种,比如sklearn,TensorFlow,Pytorch,等等等等。从某种意义上来说,如果具体到实际应用,可以建议学习tensorflow,如果之后的内容更加偏向学术,则建议学习pytoch,因为我学习的内容主要是tensorflow,所以相关只讲一些有关tensorflow的内容。
对于tensorflow的一些学习过程,我是先开始阅读一本书来进行入门的,这本书讲的很详细,从细则原理,到部分实战过程,我觉得作为一本启蒙书来说他是很合格的。当然在学习过程中会遇上各种各样的bug,不用慌张,要学会自己通过互联网解决,只有一点一点自己解决的东西才能真正把东西吃透。
在基本学习完这本书后,其实也就是意味着自己对机器学习本身有一点基本的看法,甚至已经可以开始慢慢规划着有一些实战的项目了,而这些实战项目我觉得最好可以在tensorflow的官网上进行学习,通过从简单到复杂的操作,你能对整体框架有着更好的掌握,更方便的让你对部署框架到你实际问题中找到相应的解决方法。
在这里我强烈推荐大家可以开始使用谷歌的colab进行操作了,这是一款免费的在线代码运行平台,你可以直接在上面运行别人写好的代码,也可以运行自己写好的代码,具体操作逻辑和Jupyter Notebook一模一样。
讲到这里,我觉得你就已经基本入门了整个ML学习的统筹范围了,在cousera上有海量高阶的课程可以教你如何做机器视觉,如何自编码,如何做NPL等等等。你也可以深入算法本身,探究这些框架中的算法是如何实现的,脱离了框架是否能够自己实现相应的ML系统。这些都有待你去探索。