当前位置:首页 > Python技术文章 > 机器学习的框架偏向于Python的13个原因

机器学习的框架推荐Python的原因

  • 发布时间:
  • 作者:码农之家原创
  • 点击:196

这篇文章主要知识点是关于机器学习、框架、Python、总结Python常用的机器学习库 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下相关资源

Python数据科学入门

这本书讲述了Python语言的数据科学基础知识,涵盖数据采集、清洗、存储、检索、转换、可视化、高级数据分析等方面,欢迎下载

查看详情

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

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书单 不将就

不可错过的十本Python好书

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

总结Python常用的机器学习库

Python在科学计算中用途广泛:计算机视觉、人工智能、数学、天文等。它同样适用于机器学习也是意料之中的事。

这篇文章就列举并描述Python的最有用的机器学习工具和库。这个列表中,我们不要求这些库是用Python写的,只要有Python接口就够了。

我们的目的不是列出Python中所有机器学习库(搜索“机器学习”时Python包索引(PyPI)返回了139个结果),而是列出我们所知的有用并且维护良好的那些。

另外,尽管有些模块可以用于多种机器学习任务,我们只列出主要焦点在机器学习的库。比如,虽然Scipy1包含一些聚类算法,但是它的主焦点不是机器学习而是全面的科学计算工具集。因此我们排除了Scipy(尽管我们也使用它!)。

另一个需要提到的是,我们同样会根据与其他科学计算库的集成效果来评估这些库,因为机器学习(有监督的或者无监督的)也是数据处理系统的一部分。如果你使用的库与数据处理系统其他的库不相配,你就要花大量时间创建不同库之间的中间层。在工具集中有个很棒的库很重要,但这个库能与其他库良好集成也同样重要。

如果你擅长其他语言,但也想使用Python包,我们也简单地描述如何与Python进行集成来使用这篇文章列出的库。

Scikit-Learn

Scikit Learn7是我们在CB Insights选用的机器学习工具。我们用它进行分类、特征选择、特征提取和聚集。

我们最爱的一点是它拥有易用的一致性API,并提供了**很多**开箱可用的求值、诊断和交叉验证方法(是不是听起来很熟悉?Python也提供了“电池已备(译注:指开箱可用)”的方法)。锦上添花的是它底层使用Scipy数据结构,与Python中其余使用Scipy、Numpy、Pandas和Matplotlib进行科学计算的部分适应地很好。

因此,如果你想可视化分类器的性能(比如,使用精确率与反馈率(precision-recall)图表,或者接收者操作特征(Receiver Operating Characteristics,ROC)曲线),Matplotlib可以帮助进行快速可视化。

考虑到花在清理和构造数据的时间,使用这个库会非常方便,因为它可以紧密集成到其他科学计算包上。

另外,它还包含有限的自然语言处理特征提取能力,以及词袋(bag of words)、tfidf(Term Frequency Inverse Document Frequency算法)、预处理(停用词/stop-words,自定义预处理,分析器)。

此外,如果你想快速对小数据集(toy dataset)进行不同基准测试的话,它自带的数据集模块提供了常见和有用的数据集。你还可以根据这些数据集创建自己的小数据集,这样在将模型应用到真实世界中之前,你可以按照自己的目的来检验模型是否符合期望。对参数最优化和参数调整,它也提供了网格搜索和随机搜索。

如果没有强大的社区支持,或者维护得不好,这些特性都不可能实现。我们期盼它的第一个稳定发布版。

Statsmodels

Statsmodels是另一个聚焦在统计模型上的强大的库,主要用于预测性和探索性分析。如果你想拟合线性模型、进行统计分析,或者预测性建模,那么Statsmodels非常适合。它提供的统计测试相当全面,覆盖了大部分情况的验证任务。

如果你是R或者S的用户,它也提供了某些统计模型的R语法。它的模型同时也接受Numpy数组和Pandas数据帧,让中间数据结构成为过去!

PyMC

PyMC是做**贝叶斯曲线**的工具。它包含贝叶斯模型、统计分布和模型收敛的诊断工具,也包含一些层次模型。如果想进行贝叶斯分析,你应该看看。

Shogun

Shogun1是个聚焦在支持向量机(Support Vector Machines, SVM)上的机器学习工具箱,用C++编写。它正处于积极开发和维护中,提供了Python接口,也是文档化最好的接口。但是,相对于Scikit-learn,我们发现它的API比较难用。而且,也没提供很多开箱可用的诊断和求值算法。但是,速度是个很大的优势。

Gensim

Gensim被定义为“人们的主题建模工具(topic modeling for humans)”。它的主页上描述,其焦点是狄利克雷划分(Latent Dirichlet Allocation, LDA)及变体。不同于其他包,它支持自然语言处理,能将NLP和其他机器学习算法更容易组合在一起。

如果你的领域在NLP,并想进行聚集和基本的分类,你可以看看。目前,它们引入了Google的基于递归神经网络(Recurrent Neural Network)的文本表示法word2vec。这个库只使用Python编写。

Orange

Orange是这篇文章列举的所有库中唯一带有图形用户界面(Graphical User Interface,GUI)的。对分类、聚集和特征选择方法而言,它是相当全面的,还有些交叉验证的方法。在某些方面比Scikit-learn还要好(分类方法、一些预处理能力),但与其他科学计算系统(Numpy, Scipy, Matplotlib, Pandas)的适配上比不上Scikit-learn。

但是,包含GUI是个很重要的优势。你可以可视化交叉验证的结果、模型和特征选择方法(某些功能需要安装Graphviz)。对大多数算法,Orange都有自己的数据结构,所以你需要将数据包装成Orange兼容的数据结构,这使得其学习曲线更陡。

PyMVPA

PyMVPA是另一个统计学习库,API上与Scikit-learn很像。包含交叉验证和诊断工具,但是没有Scikit-learn全面。

深度学习

尽管深度学习是机器学习的一个子节,我们在这里创建单独一节的原因是,它最新吸引了Google和Facebook人才招聘部门的很多注意。

Theano

Theano是最成熟的深度学习库。它提供了不错的数据结构(张量,tensor)来表示神经网络的层,对线性代数来说很高效,与Numpy的数组类似。需要注意的是,它的API可能不是很直观,用户的学习曲线会很高。有很多基于Theano的库都在利用其数据结构。它同时支持开箱可用的GPU编程。

PyLearn

还有另外一个基于Theano的库,PyLearn2,它给Theano引入了模块化和可配置性,你可以通过不同的配置文件来创建神经网络,这样尝试不同的参数会更容易。可以说,如果分离神经网络的参数和属性到配置文件,它的模块化能力更强大。

Decaf

Decaf是最近由UC Berkeley发布的深度学习库,在Imagenet分类挑战中测试发现,其神经网络实现是很先进的(state of art)。

Nolearn

如果你想在深度学习中也能使用优秀的Scikit-learn库API,封装了Decaf的Nolearn会让你能够更轻松地使用它。它是对Decaf的包装,与Scikit-learn兼容(大部分),使得Decaf更不可思议。

OverFeat

OverFeat是最近猫vs.狗(kaggle挑战)4的胜利者,它使用C++编写,也包含一个Python包装器(还有Matlab和Lua)。通过Torch库使用GPU,所以速度很快。也赢得了ImageNet分类的检测和本地化挑战。如果你的领域是计算机视觉,你可能需要看看。

Hebel

Hebel是另一个带有GPU支持的神经网络库,开箱可用。你可以通过YAML文件(与Pylearn2类似)决定神经网络的属性,提供了将神级网络和代码友好分离的方式,可以快速地运行模型。由于开发不久,就深度和广度上说,文档很匮乏。就神经网络模型来说,也是有局限的,因为只支持一种神经网络模型(正向反馈,feed-forward)。

但是,它是用纯Python编写,将会是很友好的库,因为包含很多实用函数,比如调度器和监视器,其他库中我们并没有发现这些功能。

Neurolab

NeuroLab是另一个API友好(与Matlabapi类似)的神经网络库。与其他库不同,它包含递归神经网络(Recurrent Neural Network,RNN)实现的不同变体。如果你想使用RNN,这个库是同类API中最好的选择之一。

与其他语言集成

你不了解Python但是很擅长其他语言?不要绝望!Python(还有其他)的一个强项就是它是一个完美的胶水语言,你可以使用自己常用的编程语言,通过Python来访问这些库。以下适合各种编程语言的包可以用于将其他语言与Python组合到一起:

R -> RPython

Matlab -> matpython

Java -> Jython

Lua -> Lunatic Python

Julia -> PyCall.jl

不活跃的库

这些库超过一年没有发布任何更新,我们列出是因为你有可能会有用,但是这些库不太可能会进行BUG修复,特别是未来进行增强。

MDP2MlPy

FFnet

PyBrain

以上就是总结Python常用的机器学习库的详细内容,更多请关注码农之家其它相关文章!

以上就是本次给大家分享的关于Python的全部知识点内容总结,大家还可以在下方相关文章里找到Python工具整理推荐、 python求最大值最小值的实、 Python调用C# Com dll组件的方、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:无法使用pip命令安装python第三方库的彻底解决方案

下一篇:Python备份MySQL数据库的代码详解

展开 +

收起 -

机器学习 相关内容
树莓派Python编程入门与实战

《树莓派Python编程入门与实战》经典系列 直观 循序渐进的树莓派Python编程学习教程 强调实践教学 以示例引导读者完成常见的任务。

查看详情
Python机器学习经典实例

《Python机器学习经典实例》首先通过实用的案例介绍机器学习的基础知识,然后介绍一些稍微复杂的机器学习算法,例如支持向量机、极端随机森林、隐马尔可夫模型、条件随机场、深度神经网

查看详情
从芯片到云端:Python物联网全栈开发实践

本书从物联网的基础概念开始,到相关技术选型、开源工程、参考设计与经验分享,利用Python可加快开发迭代速度、降低开发成本,并可以基于嵌入式Python建立完整的物联网软硬件生态

查看详情
深入浅出Python机器学习

人工智能,火了!计算机是由程序驱动的,人工智能不过是一些特殊的算法。只要你有一些程序设计语言的基础,跟随本书,你也能进入人工智能的世界,成为一名人工智能应用的开发者。

查看详情
Python Cookbook

《Python Cookbook(第3版)中文版》介绍了Python应用在各个领域中的一些使用技巧和方法,其主题涵盖了数据结构和算法,字符串和文本,数字、日期和时间,迭代器和生成器,文件和I/O,数据编

查看详情
Python微服务开发

Python微服务开发 资料配套源码 应用Python小工具生态体系减少微服务多元性的好用方式 Web运用常常布署到云主机,运用编码必须与众多第三方平台服务项目互动。从基础理论上讲,可应用分布

查看详情
机器学习系统设计:Python语言实现

本书是一本设计高效机器学习系统的详实指南,介绍机器学习系统设计的整个过程,相关的Python库,并在各个知识环节中都给出了Python示例,欢迎下载

查看详情
深度学习入门:基于Python的理论与实现

本书是深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学

查看详情
Python程序设计开发宝典

本书深入剖析Python 3.5.x、Python 3.6.x及更新版本的内置对象和标准库对象高级用法,150个案例源代码和超过1000个演示性代码片段,可以作为Python程序设计教材

查看详情
机器学习 学习笔记
网友NO.147068

Python机器学习库scikit-learn安装与基本使用教程

本文实例讲述了Python机器学习库scikit-learn安装与基本使用。分享给大家供大家参考,具体如下: 引言 scikit-learn是Python的一个开源机器学习模块,它建立在 NumPy , SciPy 和 matplotlib 模块之上能够为用户提供各种机器学习算法接口,可以让用户简单、高效地进行数据挖掘和数据分析。 scikit-learn安装 python 中安装许多模板库之前都有依赖关系,安装 scikit-learn 之前需要以下先决条件: Python(= 2.6 or = 3.3) NumPy (= 1.6.1) SciPy (= 0.9) 如无意外,下面用 pip 的安装方法可以顺利完成~~ 安装 numpy sudo pip install numpy 安装 scipy 需要先安装 matplotlib ipython ipython-notebook pandas sympy sudo apt-get install python-matplotlib ipython ipython-notebooksudo apt-get install python-pandas python-sympy python-nosesudo pip install scipy 安装 scikit-learn sudo pip install -U scikit-learn 测试 在 terminal 里面输入 pip list 这个会列出 pip 安装的所有……

网友NO.731456

python机器学习案例教程——K最近邻算法的实现

K最近邻属于一种分类算法,他的解释最容易,近朱者赤,近墨者黑,我们想看一个人是什么样的,看他的朋友是什么样的就可以了。当然其他还牵着到,看哪方面和朋友比较接近(对象特征),怎样才算是跟朋友亲近,一起吃饭还是一起逛街算是亲近(距离函数),根据朋友的优秀不优秀如何评判目标任务优秀不优秀(分类算法),是否不同优秀程度的朋友和不同的接近程度要考虑一下(距离权重),看几个朋友合适(k值),能否以分数的形式表示优秀度(概率分布)。 K最近邻概念: 它的工作原理是:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最……

网友NO.110227

Python机器学习算法库scikit-learn学习之决策树实现方法详解

本文实例讲述了Python机器学习算法库scikit-learn学习之决策树实现方法。分享给大家供大家参考,具体如下: 决策树 决策树 (DTs)是一种用于分类和回归的非参数监督学习方法。目标是创建一个模型,通过从数据特性中推导出简单的决策规则来预测目标变量的值。 例如,在下面的例子中,决策树通过一组if-then-else决策规则从数据中学习到近似正弦曲线的情况。树越深,决策规则越复杂,模型也越合适。 决策树的一些优势是: 便于说明和理解,树可以可视化表达; 需要很少的数据准备。其他技术通常需要数据标准化,需要创建虚拟变量,并删除空白值。 使用树的成本是用于对树进行训练的数据点的对数。 能够处理数值和分类数据。其他技术通常是专门分析只有一种变量的数据集。 能够处理多输出问题。 使用白盒模型。如果一个给定的情况在模型中可以……

网友NO.949939

python机器学习实战之最近邻kNN分类器

K近邻法是有监督学习方法,原理很简单,假设我们有一堆分好类的样本数据,分好类表示每个样本都一个对应的已知类标签,当来一个测试样本要我们判断它的类别是,就分别计算到每个样本的距离,然后选取离测试样本最近的前K个样本的标签累计投票,得票数最多的那个标签就为测试样本的标签。 源代码详解: #-*- coding:utf-8 -*- #!/usr/bin/python # 测试代码 约会数据分类 import KNN KNN.datingClassTest1() 标签为字符串 KNN.datingClassTest2() 标签为整形 # 测试代码 手写字体分类 import KNN KNN.handwritingClassTest() from numpy import * # 科学计算包 import operator # 运算符模块 from os import listdir # 获得指定目录中的内容(手写字体文件夹下样本txt) 类型命令行 ls import matplotlib # 画图可视化操作 import matplotlib.pyplot as plot # 显示一个 二维图 def myPlot(x, y, labels): fig = plot.figure()#创建一个窗……

<
1
>

Copyright 2018-2020 xz577.com 码农之家

本站所有电子书资源不再提供下载地址,只分享来路

免责声明:网站所有作品均由会员网上搜集共同更新,仅供读者预览及学习交流使用,下载后请24小时内删除

版权投诉 / 书籍推广 / 赞助:QQ:520161757