首页
学习
活动
专区
工具
TVP
发布

关于机器学习,这可能是目前最全面最无痛的入门路径和资源!

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

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

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

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

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

一、Python的基本语法和应用

1、基本元素

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

2、判断和循环

你可以理解为把上面说的一些基本元素通过if..else...., for和while等来做一些判断和循环。判断很简单,在某个节点上,如果是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可以帮你直接把所有相关联的库都一步到位安装了,而不用你自己一个一个手动安装。相信我,这很重要,至少你不会因为装一个库装了一两天还装不对而暴躁得想砸电脑.....而且大家以后机器学习常用来写代码的jupyter和spyder也已经内置在了完全版的anaconda中,会很方便。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171228G03KSY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券