必读| 关于机器学习最全面无痛的入门路径和资源!(上)

人工智能的小白资源群,这里有最齐全的干货资源,可以和你一样的入门小白一同交流学习亦可以得到专业技术大神的指导。欢迎入群813416857,一群好好学习,天天向上。


本文转载自:作者@李杰克

在踩过坑、撞过墙、走过弯路之后,我这个本科学渣、非计算机专业、不懂编程的前互联网产品经理,也积累了些干货可以跟大家share,而且因为有段时间没更新了,决定好好补偿一下大家,所以把能够写七八篇专题的干货都融入到了这篇文章,总计1万+字……

但是,各位童鞋,不要慌也不要怕......李杰克有自信这应该是目前你在网上能够读到的最全面、最良心、最友好的关于机器学习入门路径和资源分享的文章了。


说它“全面”是因为我为大家梳理了Python及常用库、机器学习算法、深度学习框架的学习路径和资源,就算你不打算根据推荐的资源进入更深的学习,读完文章后,你也应该大致了解机器学习技术的初步轮廓了。


说它“良心”是因为这篇文章我大概构思了一个月,利用工作之余的时间,陆陆续续写了两个星期40余小时,自己都快把自己写得无聊和烦躁的那种......


说它“友好”是因为李杰克做过产品经理,对于大家的学习体验这件事情还是非常在意的,本着no experience no bb的原则,分享的学习路径和资源都是自己各种尝试后筛选出来的、比较适合大家入门的资源。


这篇文章其实有点工具书性质,你大可以在入门的不同时期都来看看,比如这个时期的学习路径是什么样的、有哪些还不错的资源等等。


如果你耐心看下去(当然是可以分多次看甚至反复看啦),李杰克相信你读完这篇文章后肯定会毫不吝啬地给我点个赞,甚至还会在朋友圈帮我转发,而且是本着“好东西要大家分享”的那种心态去转发……好吧,李杰克承认自己今天早上忘记吃药了......


1


学习资源获取渠道

对于在网上可以轻易找到的资源,我会直接贴出相关链接,大家可点开链接,阅读或下载


对于不容易找到的资源,我已经整理打包放到云盘中了,大家只需要前往云盘下载即可


云盘中三份之二资源,是李杰克已经看过并且觉得对于大家有帮助才放进去的,那些对现阶段的大家没有太大帮助的资料我都过滤掉了,毕竟为了看起来全而各种塞大家可能永远都不会用上的资源没有任何意义,我想做的是降低大家筛选学习资源的成本


另外三份之一资源,是李杰克没来得及看、又被很多人奉为机器学习经典的书籍,我考虑再三,还是放进去了,虽然我还没怎么看过,但大家以后可能还是会有用到的场景。


李杰克也还在持续地学习将来还会把持续遇到的优质学习资源不断地整合进去,放张目前云盘里资料的截图勾引下大家,点开大图先粗粗瞄下里面的学习资源,看看李杰克是不是很良心(骄傲脸):

至于如何获取这些资源的下载链接呢?在本文结尾的地方,我会分享给大家:)


下面内容,会从四个方面展开:

1、机器学习第一语言Python

2、机器学习中数学基础

3、机器学习算法基础

4、深度学习框架基础


再次强调,我本文中提及所有知识点和资源,仅仅是让你入门机器学习,如果想要走更远,那肯定是远远不够的,我们还是要继续努力才可以呢!


话不多说,我们出发吧!



2


机器学习第一语言Python

讲真,曾经中二的李杰克一直很傻地跟身边朋友说“编程是帮别人实现想法工具,而特立独行善于思考如我(二得不行...)的人要去做策略和方案才能体现出价值嘛!”


当然除了中二之外,李杰克还是一个表里如一的人,所以大学里真的是一点编程都没有去学......直到李杰克上手编程后才发现编程其实也可以是件很有意思很有效率的事情嘛。


我也终于能够理解在自己产品经理时期的某一次深夜发布后,我的程序猿好友王建国一脸升天的样子跟我说他刚刚写了一段无比漂亮美丽还略带性感风骚的代码的心情。


我知道,那一刻,他满脸抖动的肉牵扯出来的笑就像一个两百多斤的孩子那般纯粹


我也知道,那一刻,他骄傲得就像自己是整个代码世界里流淌着最高贵血液的王


我还知道,他如果一直保持从代码中获得快乐和满足的话,他们老王家怕是永远抱不上孙子了......


说到学习编程就不得不提到我们的大主角Python了,其实包括Java、lua、MATLAB、Julia、R、Perl、python、Ruby在内的多种语言都能搞机器学习,那为什么只有Python独占鳌头,被推向了机器学习第一语言的神坛呢?

李杰克觉得主要有两个原因

1、之前搞机器学习的那帮人都喜欢用Python,所以Python慢慢就积攒了很多优秀的机器学习库,所谓的库,你就理解为别人封装好的一些具有某些功能的模块,我们可以通过调用这些模块来实现某些功能,而不用自己从头写代码;


2、Python真的是一个极易上手的语言,语法很简单,容易理解,且实现同一功能的代码量会比一般语言要少一些,李杰克上手python的过程除了最开始熟悉语法的阶段比较无聊烦躁外,后面都没有太不适的感觉。


就算你不搞机器学习,如果要学编程,那Python也是个极佳选择,因为Python这货实在腻害,机器学习、数据分析、爬虫、Web 网站、游戏、后台服务、运维都能做,因为什么事情都能掺和上一脚的特性,江湖人称“万能胶水”。


话说现在都有小学都把Python列为必修课了,浙江还把Python列为高考内容,就问一句你怕不怕,反正我已经是瑟瑟发抖了,坐等被拍死......



回归正题,下面我们来说下,在机器学习这一领域,需要掌握哪些基本的Python知识


一、Python的基本语法和应用

1、基本元素

基本上就是整数、浮点数、字符串、变量、布尔值、list、tuple、dict和常用格式文件等元素的操作和使用。


2、判断和循环

你可以理解为把上面说的一些基本元素通过if..else...., forwhile等来做一些判断和循环。判断很简单,在某个节点上,如果是A,下面一步应该怎么走,如果是B,下面应该怎么走。循环也不难理解,比如说我们有一个list[1,2,3],我们把里面的每个元素都取出来做某些处理。


3、函数和类

你可以理解为我们故意把某些逻辑做成类或函数,在某些需要用到这端逻辑的场景下,我们可以直接调用相关函数,而不用重新去写这段逻辑的代码,其实就是程序猿常说的不要重复造轮子的事情。


聪明的你是不是感觉有点熟悉似曾相识啊,对的哇,前面说的库里的模块,其实就是一个个封装好的函数哈。


再次强调,这只是你需要掌握的最最基本的东西,Python的世界可是大着呢!


二、科学计算库numpy和pandas

numpy和pandas是非常出名两个科学计算库,很多做数据分析和金融的童鞋都会用到


那为什么机器学习会用到这两个库了?


我们先来无脑吟唱下这句话:在机器的世界里,万物皆可为向量向量其实也算是一维的矩阵,我们的训练数据和要预测的数据也都是以矩阵的形式喂给机器的。


而numpy和pandas可以说是处理矩阵的好手,所以通常会用numpy和pandas对数据进行处理后再喂给机器,就我目前的实践经验来说,numpy应用的场景会比pandas多些


其实好一些机器学习框架(如TensorFlow和Mxnet)也有自己处理数据的模块,但大多是通过封装numpy得到的,使用的方法也很像,所以无脑去上手numpy肯定不亏。


关于numpy和panda,我给大家提供一个PPT《机器学习numpy与pandas基础》,大概100来页,两个库的基本知识都说到了,感觉还不错,已经放在云盘里了。


另外,网上有一篇叫《十分钟搞定pandas》的文章梳理得还算清晰到位,大家不妨也去读读,反正也花不了多少时间。

  • 《机器学习numpy与pandas基础》获取方式:详见文末

  • 《十分钟搞定pandas》阅读地址:http://t.cn/RpYFh6h


三、画图库matplotlib

在搞机器学习过程中,画图不是必须的,但通过画图能够让我们可视化一些数据,从而能够更直观地观察数据特征训练过程


我们可以把每一个数据样本都理解为其特征空间中的一个点。当我们把这些数据样本在其特征空间中画出来后,就可以了解到数据的分布了。


通过观察数据分布是可以发现一些规律的,比如下图的是机器学习中著名的手写识别体数据集mnist(手写的0到9十个数字的图片)的数据经过处理后的可视化效果。



是不是有发现相同数字的数据都分布得比较近?其实不难理解,两个数据样本在特征空间中的距离越近,就说明它们越像


我们不妨再微微展开一下,话说我的好友王建国童鞋是个二次元妹纸颜控,在他眼中每一个二次元妹纸都可以被量化为四个维度的数据样本:脸萌的程度(0-100)、声音萌的程度(0-100)、胸大的程度(0-100)、腿长的程度(0-100),所以每个二次元妹纸都是以上四个维度构成特征空间中的一个点。


聪明的你知道三维以内的空间是可以画出来的,那如果一个模型里的数据超过三维,那我们是不是就不能可视化了?


好问题,数据超过三维后的确是不能够可视化,因为我们根本就画不出来的嘛。


但你可能还记得我们之前说过有一类机器学习算法,是可以在保证数据信息损失尽可能小的前提下压缩数据维度的,所以我们可以通过这类算法先把数据压到三维以内,再做可视化处理。


有点抽象?那李杰克说具体点,我们把王建国童鞋认识的所有二次元妹子的数据样本都喂给机器,机器扑哧扑哧研究后,发现脸比较萌的妹纸通常声音也比较萌,然后就搞出一个新的维度来代替了脸萌程度和声音萌程度两个维度。所以我们这些二次元妹纸的数据就被压成了三个维度的数据,这个时候我们就可以通过可视化来看数据分布了。


另外,我们还可以通过matplotlib来画出训练过程中一些数据的变化,比如下图这个最简单的线性回归训练拟合的过程:



matplotlib的基本操作学习成本并不高,基本一到两天,可以把里面基础常用函数模块搞得差不多懂,建议可以学学。下面这篇文章《matplotlib绘图可视化知识点整理》,是李杰克觉得基本知识点梳理得还不错的的,各位同学可做参考。

  • 《matplotlib绘图可视化知识点整理》阅读地址:http://t.cn/RqDxDo8


四、一些Python学习的建议

Python有2和3的两个版本,我最开始用的是Python2,因为在网上看到的信息都是说有些机器学习的库不支持Python3,后来发现其实基本上都是支持的,所以我又迁移到Python3,总体上Python2和Python3的区别不大


但诸如numpy等一些库已经宣布停止对Python2的更新,Python的未来大势也是向Python3迁移,所以建议各位童鞋直接上手Python3


关于Python安装,建议大家使用anaconda版本的Python,因为anaconda有强大的库和环境管理功能。通常一个库的安装会依赖一些相联的库,anaconda可以帮你直接把所有相关联的库都一步到位安装了,而不用你自己一个一个手动安装。相信我,这很重要,至少你不会因为装一个库装了一两天还装不对而暴躁得想砸电脑.....而且大家以后机器学习常用来写代码的jupyterspyder也已经内置在了完全版的anaconda中,会很方便。

  • anaconda下载地址:http://t.cn/RW92Dcn


请选择Python3:



李杰克这里也简单说下自己学习Python的过程,因为之前不具备编程基础,也担心自己学到半路放弃,所以我特意找了一个比较容易和甚至看起来略low的切入方式。


有一本书叫做《笨办法学Python》,这本书名副其实,确实很笨......你需要做的就是下一个Python,然后老老实实地跟着把书上的代码都敲上一遍,偶尔敲烦了,我会去看看《廖雪峰Python教程》。


《廖雪峰Python教程》讲得不复杂,比较适合初学者。如果你时间有限,下图红框内部分知识可以先不学习,因为在机器学习领域基本上很少会用到的,当然如果你是个时间充裕又喜欢学习的孩子,那都去学了吧。


《笨办法学Python》敲上一遍和《廖雪峰Python教程》看上两三遍后(反正李杰克第一遍是看得比较懵逼),基本上Python的基本语法就没什么大问题了,剩下的就是一个熟能生巧的事情了,不断地去练习,不断地发现问题,不断地去百度。


另外,李杰克刚开始学习Python的时候,有人建议我去刷《Python100例》,对熟悉基本知识的应用的确是有帮助,但个人觉得没有必要全刷,你可以随机挑二十来个练练手就好了。

  • 《笨办法学Python》获取方式:详见文末。李杰克也提供了PDF电子版给大家,同样放在了云盘中。

  • 《廖雪峰Python教程》阅读地址:http://t.cn/RK0qGu7

  • 《Python100例》阅读地址:http://t.cn/RfOJSc5

未完待续

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值