机器学习的框架偏向于Python的13个原因
作者:刘玉刚-AI-技术研究院 发布时间:2023-09-28 06:24:42
13个机器学习的框架偏向于Python的原因,供大家参考,具体内容如下
前言
主要有以下原因:
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书单 不将就
不可错过的十本Python好书
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
来源:http://blog.csdn.net/BaiHuaXiu123/article/details/54349037


猜你喜欢
- 本文实例讲述了Python基于最小二乘法实现曲线拟合。分享给大家供大家参考,具体如下:这里不手动实现最小二乘,调用scipy库中实现好的相关
- 在软件项目实施的时候,数据导入一直是项目人员比较头疼的问题。其实,在SQL Server中集成了很多成批导入数据的方法。有些项目实施顾问头疼
- 可以,具体说明和代码见下: <%@ Language=VBScript %><%Option
- 本文实例讲述了Python实现将照片变成卡通图片的方法。分享给大家供大家参考,具体如下:之前的文章介绍了使用Photoshop将照片变成卡通
- 使用Scrapy爬取豆瓣某影星的所有个人图片以莫妮卡·贝鲁奇为例1.首先我们在命令行进入到我们要创建的目录,输入 scrapy startp
- 本文实例讲述了PHP面向对象继承用法。分享给大家供大家参考,具体如下:继承先看两个类<?phpclass CdProduct { &n
- 在Python里面,使用Pandas里面的DataFrame来存放数据的时候想要把数据集进行shuffle会许多的方法,本文介绍两种比较常用
- python如何把1变成011.实现头部utf8编码的方法代码2.实现读属性的方法代码3.实现写属性的方法代码4.实现高度的方法代码5.实现
- 一、去除空格strip()" xyz ".strip() &n
- 可能各位朋友看到这个标题很不解,到底什么是习惯化,什么又是去习惯化?下面我来慢慢介绍我的个人理论。习惯化:随着对刺激的熟悉,人们越来越注意不
- 为方便维护和实现开放性,我把调查的好几个主题都放到同一个数据库的同一个表名当中去了但问题是在查询其中一个调查主题时,往往还会显示不相关主题的
- 本文实例讲述了Python连接SQLServer2000的方法。分享给大家供大家参考,具体如下:http://pymssql.sourcef
- mysql5.7版本:方法1: 用SET PASSWORD命令 格式:mysql> set password f
- 1 介绍U-Net最初是用来对医学图像的语义分割,后来也有人将其应用于其他领域。但大多还是用来进行二分类,即将原始图像分成两个灰度级或者色度
- exec sp_attach_db exun,'d:\exun2.mdf' 一句话就可以了。 网上看了那些比较繁琐的,都是s
- 主要有以下步骤:1、人脸检测2、人脸预处理3、从收集的人脸训练机器学习算法4、人脸识别5、收尾工作人脸检测算法:基于Haar的脸部检测器的基
- 说明:Go 语言切片是对数组的抽象。Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片
- 一、背景实际工作中会有一些耗时的异步任务需要使用定时调度,比如发送邮件,拉取数据,执行定时脚本通过celery 实现调度主要思想是 通过引入
- 最近切换到了Ubuntu的系统作为工作环境, 在使用Pycharm的时候, 出现了个奇怪的问题中文是无法正常输入的, 然后找遍了网上的解决办
- 对于一些复杂的hdf5文件,通过可视化的方法可以比较容易的了解文件的内部结构,下面介绍基于python的一个hdf5文件的安装使用方法1 安