机器学习Python包
随着机器学习的逐日升温,各种相关开源包也是层出不群,面对如此多种类的工具包,该如何选择,有的甚至还知之甚少或者不知呢,本文简单汇总了一下当下使用比较多的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包的更多相关文章
- windows下64位python的安装及机器学习相关包的安装(实用)
开通博客已久,想了好久决定写个基础的安装教程,望后人少走弯路,也借此希望跟大家多多交流.文中给出的链接默认是基于对python2.7的前提下的包. 1.首先下载64位Python包,进行安装(默认py ...
- Python 包:
分享一波油藏描述方面的Python开源包 前一阵去捷克参加了数学地质年会(IAMG2018),听完汇报,发现在数学地质领域用python的越来越多了,他们的很多成果都是用python做出来的.不管喜不 ...
- python 包多熟悉一个干活就轻松点
包管理 管理包和依赖的工具. pip – Python 包和依赖关系管理工具. pip-tools – 保证 Python 包依赖关系更新的一组工具. conda – 跨平台,Python 二进制包管 ...
- 离线pip下载Python包
离线pip下载Python包 这几天搞Windows离线断网环境下安装Python包,配置环境,各种坑!做个记录,供以后查询吧. # 生产环境 windows xp# python 2 ...
- 【转】linux和windows下安装python集成开发环境及其python包
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- RobotFramework中加载自定义python包中的library(一个py文件中有多个类)
结构如下: appsdk\ appsdk.py(这里面有多个类,包括appsdk,appsdksync等类) __init__.py ... ① 有个appsdk的文件夹(符合python包的定义) ...
- centos 7 下安装numpy、scipy等python包
本文适用于刚入门的小白,欢迎大牛们批评指正. 因为要开始数据分析,而python又不像R和matlab那么简洁.需要安装的包很多~ 网上找了好多牛人博客,想在centos7下安装numpy,scipy ...
- 机器学习---python环境搭建
一 安装python2.7 去https://www.python.org/downloads/ 下载,然后点击安装,记得记住你的安装路径,然后去设置环境变量,这些自行百度一下就好了. 由于2.7没有 ...
- python 包管理工具
python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...
随机推荐
- linux下打开txt显示乱码的解决方法
Linux打开txt文件乱码的解决方法 Linux显示在Windows编辑过的中文就会显示乱码是由于两个操作系统使用的编码不同所致.Linux下使用的编码是utf8,而Windows使用的是gb1 ...
- 关于Kendo UI的使用心得
1.在筛选里面的条件选项进行编辑 filterable: { extra: false, operators: { string: { startswith: "Starts with&qu ...
- NOI2018准备Day19
5天没写. 伸展树 主席树 3到线段树模板题
- Git开发备忘
1.在Git中,上传了中文命名的文件,但是后面想删除的时候,发现中文命名被转义了. 利用Git add是无法添加这类文件的,所以这里我们需要用到 git add -u命令,即可实现成功添加. 2.在G ...
- Java语法笔记
目录 知识点 不支持 恶心事 与C#的区别 组件 学习资料 母版页 知识点 类 静态方法,即可以在类上被调用,也可以在实例对象上被调用. Java类 先执行静态构造函数,再执行静态方法或静态字段,所以 ...
- 跨浏览器事件EventUtil
<div style="width: 150px; height: 150px; padding: 25px; border:1px solid blue; " id=&qu ...
- 安装myeclipse10后破解时发现没有common文件夹
今天重新安装了myeclipse10软件,然后在破解的时候发现安装目录下没有common,这是因为以前安装过myeclipse,卸载时没有完全清除,再次安装时,myeclipse会自动找到以前安装的c ...
- Socket,TCP/IP,UDP,HTTP,FTP
1.Socket:套接字,是传输层协议的一种编程API 作用:用于描述IP地址和端口,区分来自不同应用程序的通信,实现数据传输的并发服务 JDK Socket:在java.net包下有两个类Sock ...
- 模块加载(require)及定义(define)时的路径
最近新公司在用requireJS进行JS的整合,刚开始接触有点蒙,于是深入了解了一下.requireJS主要是为了解决一下两个问题: (1)实现js文件的异步加载,避免网页失去响应: (2)管理模块之 ...
- oracle数据泵实现不同用户之间的导出导入
来源于:http://www.cnblogs.com/kevinsun/archive/2007/02/03/638803.aspx http://blog.sina.com.cn/s/blog_68 ...