机器学习的框架偏向于Python的13个原因


Posted in Python onDecember 07, 2017

13个机器学习的框架偏向于Python的原因,供大家参考,具体内容如下

机器学习的框架偏向于Python的13个原因

前言

主要有以下原因:

1. Python是解释语言,程序写起来非常方便

写程序方便对做机器学习的人很重要。
因为经常需要对模型进行各种各样的修改,这在编译语言里很可能是牵一发而动全身的事情,Python里通常可以用很少的时间实现。

举例来说,在C等编译语言里写一个矩阵乘法,需要自己分配操作数(矩阵)的内存、分配结果的内存、手动对BLAS接口调用gemm、最后如果没用smart pointer还得手动回收内存空间。Python几乎就是import numpy; numpy.dot两句话的事。

当然现在很多面向C/C++库已经支持托管的内存管理了,这也让开发过程容易了很多,但解释语言仍然有天生的优势——不需要编译时间。这对机器学习这种需要大量prototyping和迭代的研究方向是非常有益工作效率的。

2. Python的开发生态成熟,有很多有用的库可以用

除了上面说到的NumPy,还有SciPy、NLTK、os(自带)等等不一而足。Python灵活的语法还使得包括文本操作、list/dict comprehension等非常实用的功能非常容易高效实现(编写和运行效率都高),配合lambda等使用更是方便。这也是Python良性生态背后的一大原因。相比而言,Lua虽然也是解释语言,甚至有LuaJIT这种神器加持,但其本身很难做到Python这样,一是因为有Python这个前辈占领着市场份额,另一个也因为它本身种种反常识的设计(比如全局变量)。不过借着Lua-Python bridge和Torch的东风,Lua似乎也在寄生兴起。

3. Python的效率很高。

解释语言的发展已经大大超过许多人的想象。很多比如list comprehension的语法糖都是贴近内核实现的。除了JIT[1]之外,还有Cython可以大幅增加运行效率。最后,得益于Python对C的接口,很多像gnumpy, theano这样高效、Python接口友好的库可以加速程序的运行,在强大团队的支撑下,这些库的效率可能比一个不熟练的程序员用C写一个月调优的效率还要高。

4.数据存储方便

有sql,hadoop,mangodb,redis,spark等

5.数据获取方便

有Scrapy,beautifulsoup,requests,paramiko等

6.数据运算方便

有pandas,Numpy,scipy等

7.输出结果方便

有matplotlib,VisPy等

8.和其他语言交互方便

有ctypes,rpy2,Cython,SWIG,PyQt,boost.python

9.加速方便

有pypy,Cython,PyCUDA

10.图形图像方便

有PyOpenGL,PyOpenCV,mayavi2

11.信号处理方便

PyWavelets,scipy.signal

12.云系统支持方便

github,sourceforge,EC2,BAT,HPC

13.python开源

python支持的平台多,包括windows,linux,unix,macos。而matlab太贵,只能调用其api,用python省钱,省钱就是赚钱。
python 和 c++ 做个比较。

c++ 的cpu效率是远远高于 python 的.不过 python 是一门胶水语言,它可以和任何语言结合,基于这个优点,很多数据处理的python 库底层都是 c++ 实现的,意思就是说:你用python写code,但效率是c++的。只有那些for 循环,还是用python的效率高。

近年来机器学习最要是深度学习,而深度学习使用cuda gpu加速远比cpu要快,而cuda 是c++写的。
所以现在TensorLayer、theano 等深度学习库都是 python 编程、底层c++。

相关书籍推荐:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
Python正则表达式实现截取成对括号的方法
Jan 06 Python
使用Python获取网段IP个数以及地址清单的方法
Nov 01 Python
Python中判断子串存在的性能比较及分析总结
Jun 23 Python
Django MEDIA的配置及用法详解
Jul 25 Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
Oct 25 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
django实现后台显示媒体文件
Apr 07 Python
python模拟斗地主发牌
Apr 22 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
python 实现音频叠加的示例
Oct 29 Python
python编程线性回归代码示例
Dec 07 #Python
基于Django的ModelForm组件(详解)
Dec 07 #Python
利用python编写一个图片主色转换的脚本
Dec 07 #Python
python八大排序算法速度实例对比
Dec 06 #Python
Python语言实现将图片转化为html页面
Dec 06 #Python
Python实现比较扑克牌大小程序代码示例
Dec 06 #Python
Python3简单实例计算同花的概率代码
Dec 06 #Python
You might like
PHP4.04简明安装
2006/10/09 PHP
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
2016/04/30 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
使用Python对SQLite数据库操作
2017/04/06 Python
连接pandas以及数组转pandas的方法
2019/06/28 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
vue学习笔记之动态组件和v-once指令简单示例
2020/02/29 Python
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
int和Integer有什么区别
2013/05/25 面试题
财务会计专业毕业生自荐信
2013/10/19 职场文书
网吧七夕活动策划方案
2014/08/31 职场文书
2014年副班长工作总结
2014/12/10 职场文书
护理实习生带教计划
2015/01/16 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
Python如何用re模块实现简易tokenizer
2022/05/02 Python