随着机器学习的逐日升温,各种相关开源包也是层出不群,面对如此多种类的工具包,该如何选择,有的甚至还知之甚少或者不知呢,本文简单汇总了一下当下使用比较多的Python版本机器学习工具包,供大家参看,还很不全不详尽,会持续更新,也欢迎大家补充,多谢多谢!~~~

scikit-learn:

基于python机器学习模块,基于BSD开源许可证。这个项目最早由DavidCournapeau 在2007 年发起的,目前也是由社区自愿者进行维护。基本功能主要被分为六个部分,分类,回归,聚类,数据降维,模型选择,数据预处理,具体可以参考官方网站上的文档。

Theano: 

调试过程费劲,可以随心所欲写代码,但是求导和GPU透明,比较看好。

大部分代码是使用Cython编写,Cython是一个可编译为本地可执行代码的Python方言,与仅仅使用解释性Python语言相比,它能够使运行速度快速提升。最重要的是,很多优化程序已经集成到Theano库中,它能够优化你的计算量并让你的运行时间保持最低。

还内置支持使用CUDA在GPU上执行那些所有耗时的计算。所有的这一切仅仅只需要修改配置文件中的标志位即可。在CPU上运行一个脚本,然后切换到GPU,而对于你的代码,则不需要做任何变化。

尽管Theano使用Cython和CUDA对其性能大大提升,但你仍然可以仅仅使用Python语言来创建几乎任何类型的神经网络结构。

Numbapro:

自己写GPU加速的话比较麻烦,需要浪费时间写一些基础的函数编写。

Caffe:

一个清晰而高效的深度学习框架,Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;可以在CPU和GPU直接无缝切换.

  Caffe的优势:

(1)上手快:模型与相应优化都是以文本形式而非代码形式给出。Caffe给出了模型 的定义、最优化设置以及预训练的权重,方便立即上手。

(2)速度快:能够运行最棒的模型与海量的数据。Caffe与cuDNN结合使用,测试AlexNet 模型,在K40上处理每张图片只需要1.17ms.

(3)模块化:方便扩展到新的任务和设置上。可以使用Caffe提供的各层类型来定义自己的模型。

(4)开放性:公开的代码和参考模型用于再现。

(5)社区好:可以通过BSD-2参与开发与讨论。

pylearn2:

不灵活。

Pylearn2和Theano由同一个开发团队开发,Pylearn2是一个机器学习库,它把深度学习和人工智能研究许多常用的模型以及训练算法封装成一个单一的实验包,如随机梯度下降。

也可以很轻松的围绕你的类和算法编写一个封装程序,为了能让它在Pylearn2上运行,你需要在一个单独的YAML格式的配置文件中配置你整个神经网络模型的参数。

nolearn + lasagne:

Kaggle比赛者常用,Lasagne目前据说最好

其中Lasagne是一个与Blocks和Keras有着相似功能的深度学习库,但其在设计上与它们有些不同。

下面是Lasagne的一些设计目的:

(1)简单化:它应该是易于使用和扩展的机器学习库。每添加一个特征,就应该考虑其对易用性和扩展性的影响。每一个抽象概念的加入都应该仔细检查,以确定增加的复杂性是否合理。

(2)小接口:尽可能少的类和方法。尽可能依赖Theano的功能和数据类型,遵循Theano的规定。如果没有严格的必要,不要在类中封装东西。这会使它更容易使用库并且扩展它(不需要有太多的认知)。

(3)不碍事:未使用的功能应该是不可见的,用户不会考虑他们不使用的功能。尽可能单独的使用库文件中的组件。

(4)透明性:不要试图掩盖Theano,尽量以Python或NumPy数据类型的形式将函数和方法返回给Theano表达式。

(5)重点:遵循Unix哲学“做一件事,并把它做好”,重点集中在前馈神经网络。

(6)实用主义:使普通用例更易于使用,这要比支持每一个可能的用例更为重要。

keras: 

是一个简约的、高度模块化的神经网络库,设计参考了Torch,基于Theano和Python语言编写,支持GPU和CPU。它的开发侧重于实现快速试验和创造新的深度学习模型。

如果你需要具有以下功能的深度学习库,采用Keras就恰到好处:

(1)可以很容易地、快速地建立原型(通过总体模块化,极简化并且可扩展化)。

(2)支持卷积网络和递归网络,以及两者的组合。

(3)支持任意连接方式(包括多输入多输出训练)

(4)编码风格非常简约、清晰。它把所有的要点使用小类封装起来,能够很容易地组合在一起并创造出一种全新的模型。

torch:

暂不了解,欢迎补充~~~

Blocks:

(1)一个非常模块化的框架,有助于你在Theano上建立神经网络。

(2)目前它支持并提供的功能有:

(3)构建参数化Theano运算,称之为“bricks”。

(4)在大型模型中使用模式匹配来选择变量以及“bricks”。

(5)使用算法优化模型。

(6)训练模型的保存和恢复。

(7)在训练过程中检测和分析值(训练集以及测试集)。

(8)图形变换的应用,如dropout。

参考:http://www.csdn.NET/article/2015-08-01/2825362?reload=1

机器学习Python包的更多相关文章

  1. windows下64位python的安装及机器学习相关包的安装(实用)

    开通博客已久,想了好久决定写个基础的安装教程,望后人少走弯路,也借此希望跟大家多多交流.文中给出的链接默认是基于对python2.7的前提下的包. 1.首先下载64位Python包,进行安装(默认py ...

  2. Python 包:

    分享一波油藏描述方面的Python开源包 前一阵去捷克参加了数学地质年会(IAMG2018),听完汇报,发现在数学地质领域用python的越来越多了,他们的很多成果都是用python做出来的.不管喜不 ...

  3. python 包多熟悉一个干活就轻松点

    包管理 管理包和依赖的工具. pip – Python 包和依赖关系管理工具. pip-tools – 保证 Python 包依赖关系更新的一组工具. conda – 跨平台,Python 二进制包管 ...

  4. 离线pip下载Python包

    离线pip下载Python包   这几天搞Windows离线断网环境下安装Python包,配置环境,各种坑!做个记录,供以后查询吧.      # 生产环境  windows xp# python 2 ...

  5. 【转】linux和windows下安装python集成开发环境及其python包

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  6. RobotFramework中加载自定义python包中的library(一个py文件中有多个类)

    结构如下: appsdk\ appsdk.py(这里面有多个类,包括appsdk,appsdksync等类) __init__.py ... ① 有个appsdk的文件夹(符合python包的定义) ...

  7. centos 7 下安装numpy、scipy等python包

    本文适用于刚入门的小白,欢迎大牛们批评指正. 因为要开始数据分析,而python又不像R和matlab那么简洁.需要安装的包很多~ 网上找了好多牛人博客,想在centos7下安装numpy,scipy ...

  8. 机器学习---python环境搭建

    一 安装python2.7 去https://www.python.org/downloads/ 下载,然后点击安装,记得记住你的安装路径,然后去设置环境变量,这些自行百度一下就好了. 由于2.7没有 ...

  9. python 包管理工具

    python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...

随机推荐

  1. matrix(No.1)operations

  2. AppStore 上架注意事项及错误修改

    1.上架之前首页要配置好发布证书,配置用于发布的配置文件. 2.必须上传3.5英寸和4英寸图片,这两种图片尺寸不能缺. 3.提交的版本必须是在8.0及以上的版本. 4.必须用发布证书,如果提示UUID ...

  3. Oracle 中 decode 函数用法(转)

    含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THE ...

  4. git删除远程仓库的文件或目录

    git rm -r --cached a/2.txt //删除a目录下的2.txt文件   删除a目录git rm -r --cached a git commit -m "删除a目录下的2 ...

  5. codevs 1907 方格取数 3

    Description 在一个有m*n 个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法. Input 第 ...

  6. 通用权限管理系统多语言开发接口 - java,php 调用接口程序,多业务子系统集成

    1:公司里有多个业务系统,需要进行统一重构,有PHP的.有Java的.有.NET的,甚至还有delphi的. 2:公司里有多个数据库系统,有mysql的.有sqlserver的.还有oracel的,甚 ...

  7. Android酷炫实用的开源框架(UI框架)

    Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...

  8. Java 生成 UUID

    1.UUID 简介 UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (Open Software Found ...

  9. 浅谈WCF的三种通信模式:请求响应模式、数据报模式和双工通讯模式

    一: WCF的服务端与客户端在通信时有三种模式:请求响应模式.数据报模式和双工通讯模式. 说一下基本知识,  1.如果想要将当前接口作为wcf服务器,则一定要加上[ServiceContract] 契 ...

  10. BASH 命令以及使用方法小结

    最近工作中需要写一个Linux脚本,用到了很多BASH命令,为了防止以后忘记,在这里把它们一一记下来.可能会比较乱,随便看看就好了.如果有说的不对的地方也欢迎大家指正. 1,export VAR=.. ...