28款 GitHub 最流行的开源机器学习项目

参考连接:https://linux.cn/article-7252-1.html?prhtml

如今机器学习逐渐成为行业热门,通过二十几年的发展,机器学习目前也有了十分普遍的应用,如:数据挖掘、计算机视觉、天然语言处理、生物特征识别、搜索引擎、医学诊断、DNA序列测序、语音和手写识别、战略游戏和机器人等方面。linux

云栖社区特地翻译整理了目前GitHub上最受欢迎的28款开源的机器学习项目,以供开发者参考使用。git

1. TensorFlow

 

_1

_1github

TensorFlow 是谷歌发布的第二代机器学习系统。据谷歌宣称,在部分基准测试中,TensorFlow的处理速度比第一代的DistBelief加快了2倍之多。算法

具体的讲,TensorFlow是一个利用数据流图(Data Flow Graphs)进行数值计算的开源软件库:图中的节点( Nodes)表明数学运算操做,同时图中的边(Edges)表示节点之间相互流通的多维数组,即张量(Tensors)。这种灵活的架构可让使用者在多样化的将计算部署在台式机、服务器或者移动设备的一个或多个CPU上,并且无需重写代码;同时任一基于梯度的机器学习算法都可够借鉴TensorFlow的自动分化(Auto-differentiation);此外经过灵活的Python接口,要在TensorFlow中表达想法也变得更为简单。数据库

TensorFlow最初由Google Brain小组(该小组隶属于Google's Machine Intelligence研究机构)的研究员和工程师开发出来的,开发目的是用于进行机器学习和深度神经网络的研究。但该系统的通用性足以使其普遍用于其余计算领域。apache

目前Google 内部已在大量使用 AI 技术,包括 Google App 的语音识别、Gmail 的自动回复功能、Google Photos 的图片搜索等都在使用 TensorFlow 。npm

2. Scikit-Learn

Scikit-Learn是用于机器学习的Python 模块,它创建在SciPy之上。该项目由David Cournapeau 于2007年创立,当时项目名为Google Summer of Code,自此以后,众多志愿者都为此作出了贡献。编程

主要特色:后端

  • 操做简单、高效的数据挖掘和数据分析
  • 无访问限制,在任何状况下可从新使用
  • 创建在NumPy、SciPy 和 matplotlib基础上

Scikit-Learn的基本功能主要被分为六个部分:分类、回归、聚类、数据降维、模型选择、数据预处理,具体能够参考官方网站上的文档。通过测试,Scikit-Learn可在 Python 2.六、Python 2.7 和 Python 3.5上运行。除此以外,它也应该可在Python 3.3和Python 3.4上运行。

注:Scikit-Learn之前被称为Scikits.Learn。

3. Caffe

Caffe 是由神经网络中的表达式、速度、及模块化产生的深度学习框架。后来它经过伯克利视觉与学习中心(BVLC)和社区参与者的贡献,得以发展造成了以一个伯克利主导,而后加之Github和Caffe-users邮件所组成的一个比较松散和自由的社区。
Caffe是一个基于C++/CUDA架构框架,开发者可以利用它自由的组织网络,目前支持卷积神经网络和全链接神经网络(人工神经网络)。在Linux上,C++能够经过命令行来操做接口,对于MATLAB、Python也有专门的接口,运算上支持CPU和GPU直接无缝切换。

Caffe的特色:

  • 易用性:Caffe的模型与相应优化都是以文本形式而非代码形式给出, Caffe给出了模型的定义、最优化设置以及预训练的权重,方便快速使用;
  • 速度快:可以运行最棒的模型与海量的数据;
  • Caffe可与cuDNN结合使用,可用于测试AlexNet模型,在K40上处理一张图片只须要1.17ms;
  • 模块化:便于扩展到新的任务和设置上;
  • 使用者可经过Caffe提供的各层类型来定义本身的模型;

目前Caffe应用实践主要有数据整理、设计网络结构、训练结果、基于现有训练模型,使用Caffe直接识别。

4. PredictionIO

PredictionIO 是面向开发人员和数据科学家的开源机器学习服务器。它支持事件采集、算法调度、评估,以及经由REST APIs的预测结果查询。使用者能够经过PredictionIO作一些预测,好比个性化推荐、发现内容等。PredictionIO 提供20个预设算法,开发者能够直接将它们运行于本身的数据上。几乎任何应用与PredictionIO集成均可以变得更“聪明”。其主要特色以下所示:

  • 基于已有数据可预测用户行为;
  • 使用者可选择你本身的机器学习算法;
  • 无需担忧可扩展性,扩展性好。

PredictionIO 基于 REST API(应用程序接口)标准,不过它还包含 Ruby、Python、Scala、Java 等编程语言的 SDK(软件开发工具包)。其开发语言是Scala语言,数据库方面使用的是MongoDB数据库,计算系统采用Hadoop系统架构。 

5. Brain

Brain是 JavaScript 中的 神经网络库。如下例子说明使用Brain来近似 XOR 功能:

var net = new brain.NeuralNetwork();
net.train([{input: [0, 0], output: [0]},
           {input: [0, 1], output: [1]},
           {input: [1, 0], output: [1]},
           {input: [1, 1], output: [0]}]);
var output = net.run([1, 0]);  // [0.987]

当 brain 用于节点中,可以使用npm安装:

npm install brain

当 brain 用于浏览器,下载最新的 brain.js 文件。训练计算代价比较昂贵,因此应该离线训练网络(或者在 Worker 上),并使用 toFunction() 或者 toJSON()选项,以便将预训练网络插入到网站中。

6. Keras

Keras是极其精简并高度模块化的神经网络库,在TensorFlow 或 Theano 上都可以运行,是一个高度模块化的神经网络库,支持GPU和CPU运算。Keras能够说是Python版的Torch7,对于快速构建CNN模型很是方便,同时也包含了一些最新文献的算法,好比Batch Noramlize,文档教程也很全,在官网上做者都是直接给例子浅显易懂。Keras也支持保存训练好的参数,而后加载已经训练好的参数,进行继续训练。

Keras侧重于开发快速实验,用可能最少延迟实现从理念到结果的转变,即为作好一项研究的关键。

当须要以下要求的深度学习的库时,就能够考虑使用Keras:

  • 考虑到简单快速的原型法(经过整体模块性、精简性以及可扩展性);
  • 同时支持卷积网络和递归网络,以及二者之间的组合;
  • 支持任意链接方案(包括多输入多输出训练);
  • 可在CPU 和 GPU 上无缝运行。

Keras目前支持 Python 2.7-3.5。

7. CNTK

CNTK(Computational Network Toolkit )是一个统一的深度学习工具包,该工具包经过一个有向图将神经网络描述为一系列计算步骤。在有向图中,叶节点表示输入值或网络参数,其余节点表示该节点输入之上的矩阵运算。

CNTK 使得实现和组合如前馈型神经网络DNN、卷积神经网络(CNN)和循环神经网络(RNNs/LSTMs)等流行模式变得很是容易。同时它实现了跨多GPU 和服务器自动分化和并行化的随机梯度降低(SGD,偏差反向传播)学习。

下图将CNTK的处理速度(每秒处理的帧数)和其余四个知名的工具包作了比较了。配置采用的是四层全链接的神经网络(参见基准测试脚本)和一个大小是8192 的高效mini batch。在相同的硬件和相应的最新公共软件版本(2015.12.3前的版本)的基础上获得以下结果:

_2

_2

CNTK自2015年四月就已开源。

8. Convnetjs

ConvNetJS是利用Javascript实现的神经网络,同时还具备很是不错的基于浏览器的Demo。它最重要的用途是帮助深度学习初学者更快、更直观的理解算法。

它目前支持:

  • 常见的神经网络模块(全链接层,非线性);
  • 分类(SVM/ SOFTMAX)和回归(L2)的成本函数;
  • 指定和训练图像处理的卷积网络;
  • 基于Deep Q Learning的实验强化学习模型。

一些在线示例:

 

9. Pattern

 

_3

_3

Pattern是Python的一个Web挖掘模块。拥有如下工具:

  • 数据挖掘:网络服务(Google、Twitter、Wikipedia)、网络爬虫、HTML DOM解析;
  • 天然语言处理:词性标注工具(Part-Of-Speech Tagger)、N元搜索(n-gram search)、情感分析(sentiment analysis)、WordNet;
  • 机器学习:向量空间模型、聚类、分类(KNN、SVM、 Perceptron);
  • 网络分析:图形中心性和可视化。

其文档完善,目前拥有50多个案例和350多个单元测试。 Pattern目前只支持Python 2.5+(尚不支持Python 3),该模块除了在Pattern.vector模块中使用LSA外没有其余任何外部要求,所以只需安装 NumPy (仅在Mac OS X上默认安装)。

10. NuPIC

_4

_4

NuPIC是一个实现了HTM学习算法的机器智能平台。HTM是一个关于新(大脑)皮质(Neocortex)的详细人工智能算法。HTM的核心是基于时间的连续学习算法,该算法能够存储和调用时间和空间两种模式。NuPIC能够适用于解决各种问题,尤为是异常检测和流数据源预测方面。

NuPIC Binaries文件目前可用于:

  • Linux x86 64bit
  • OS X 10.9
  • OS X 10.10
  • Windows 64bit

NuPIC 有本身的独特之处。许多机器学习算法没法适应新模式,而NuPIC的运做接近于人脑,当模式变化的时候,它会忘掉旧模式,记忆新模式。

11. Theano

Theano是一个Python库,它容许使用者有效地定义、优化和评估涉及多维数组的数学表达式,同时支持GPUs和高效符号分化操做。Theano具备如下特色:

  • 与NumPy紧密相关--在Theano的编译功能中使用了Numpy.ndarray ;
  • 透明地使用GPU--执行数据密集型计算比CPU快了140多倍(针对Float32);
  • 高效符号分化--Theano将函数的导数分为一个或多个不一样的输入;
  • 速度和稳定性的优化--即便输入的x很是小也能够获得log(1+x)正确结果;
  • 动态生成 C代码--表达式计算更快;
  • 普遍的单元测试和自我验证--多种错误类型的检测和断定。

自2007年起,Theano一直致力于大型密集型科学计算研究,但它目前也很被普遍应用在课堂之上( 如Montreal大学的深度学习/机器学习课程)。

12. MXNet 

_5

_5

MXNet是一个兼具效率和灵活性的深度学习框架。它容许使用者将符号编程和命令式编程相结合,以追求效率和生产力的最大化。其核心是动态依赖调度程序,该程序能够动态自动进行并行化符号和命令的操做。其中部署的图形优化层使得符号操做更快和内存利用率更高。该库轻量且便携带,而且可扩展到多个GPU和多台主机上。

主要特色:

  • 其设计说明提供了有用的看法,能够被从新应用到其余DL项目中;
  • 任意计算图的灵活配置;
  • 整合了各类编程方法的优点最大限度地提升灵活性和效率;
  • 轻量、高效的内存以及支持便携式的智能设备;
  • 多GPU扩展和分布式的自动并行化设置;
  • 支持Python、R、C++和 Julia;
  • 对“云计算”友好,直接兼容S三、HDFS和Azure。

MXNet不只仅是一个深度学习项目,它更是一个创建深度学习系统的蓝图、指导方针以及黑客们对深度学习系统独特看法的结合体。

13. Vowpal Wabbit

Vowpal Wabbit是一个机器学习系统,该系统推进了如在线、散列、Allreduce、Learning2search、等方面机器学习前沿技术的发展。 其训练速度很快,在20亿条训练样本,每一个训练样本大概100个非零特征的状况下:若是特征的总位数为一万时,训练时间为20分钟;特征总位数为1000万时,训练时间为2个小时。Vowpal Wabbit支持分类、 回归、矩阵分解和LDA。

当在Hadoop上运行Vowpal Wabbit时,有如下优化机制:

  • 懒惰初始化:在进行All Reduce以前,可将所有数据加载到内存中并进行缓存。即便某一节点出现了错误,也能够经过在另一个节点上使用错误节点的数据(经过缓存来获取)来继续训练。
  • Speculative Execution:在大规模集群当中,一两个很慢的Mapper会影响整个Job的性能。Speculative Execution的思想是当大部分节点的任务完成时,Hadoop能够将剩余节点上的任务拷贝到其余节点完成。

 

14. Ruby Warrior

经过设计了一个游戏使得Ruby语言和人工智能学习更加有乐趣和互动起来。

使用者扮演了一个勇士经过爬上一座高塔,到达顶层获取珍贵的红宝石(Ruby)。在每一层,须要写一个Ruby脚本指导战士战胜敌人、营救俘虏、到达楼梯。使用者对每一层都有一些认识,可是你永远都不知道每层具体会发生什么状况。你必须给战士足够的人工智能,以便让其自行寻找应对的方式。

勇士的动做相关API:

  • Warrior.walk: 用来控制勇士的移动,默认方向是往前;

  • warrior.feel:使用勇士来感知前方的状况,好比是空格,仍是有怪物;

  • Warrior.attack:让勇士对怪物进行攻击;

  • Warrior.health:获取勇士当前的生命值;

  • Warrior.rest:让勇士休息一回合,恢复最大生命值的10%。

勇士的感知API:

  • Space.empty:感知前方是不是空格;

  • Space.stairs:感知前方是不是楼梯;

  • Space.enemy: 感知前方是否有怪物;

  • Space.captive:感知前方是否有俘虏;

  • Space.wall:感知前方是不是墙壁。

 

15. XGBoost

XGBoot是设计为高效、灵活、可移植的优化分布式梯度 Boosting库。它实现了 Gradient Boosting 框架下的机器学习算法。

XGBoost经过提供并行树Boosting(也被称为GBDT、GBM),以一种快速且准确的方式解决了许多数据科学问题。相同的代码能够运行在大型分布式环境如Hadoop、SGE、MP上。它相似于梯度上升框架,可是更加高效。它兼具线性模型求解器和树学习算法。

XGBoot至少比现有的梯度上升实现有至少10倍的提高,同时还提供了多种目标函数,包括回归、分类和排序。因为它在预测性能上的强大,XGBoot成为不少比赛的理想选择,其还具备作交叉验证和发现关键变量的额外功能。

值得注意的是:XGBoost仅适用于数值型向量,所以在使用时须要将全部其余形式的数据转换为数值型向量;在优化模型时,这个算法还有很是多的参数须要调整。

16. GoLearn

GoLearn 是Go 语言中“功能齐全”的机器学习库,简单性及自定义性是其开发目标。

在安装 GoLearn 时,数据做为实例被加载,而后能够在其上操做矩阵,并将操做值传递给估计值。GoLearn 实现了Fit/Predict的Scikit-Learn界面,所以用户可轻松地经过反复试验置换出估计值。此外,GoLearn还包括用于数据的辅助功能,例如交叉验证、训练以及爆裂测试。

17. ML_for_Hackers

ML_for_Hackers 是针对黑客机器学习的代码库,该库包含了全部针对黑客的机器学习的代码示例(2012)。该代码可能和文中出现的并不彻底相同,由于自出版以来,可能又添加了附加的注释和修改部分。

全部代码均为R语言,依靠众多的R程序包,涉及主题包括分类(Classification)、排行(Ranking)、以及回归(Regression)的全部常见的任务和主成分分析(PCA)和多维尺度(Multi-dimenstional Scaling)等统计方法。

18. H2O-2

H2O使得Hadoop可以作数学运算!它能够经过大数据衡量统计数据、机器学习和数学。H2O是可扩展的,用户能够在核心区域使用简单的数学模型构建模块。H2O保留着与R、Excel 和JSON等相相似的熟悉的界面,使得大数据爱好者及专家们可经过使用一系列由简单到高级的算法来对数据集进行探索、变换、建模及评分。采集数据很简单,但判决难度却很大,而H2O却经过更快捷、更优化的预测模型,可以更加简单迅速地从数据中得到深入看法。

0xdata H2O的算法是面向业务流程——欺诈或趋势预测。Hadoop专家可使用Java与H2O相互做用,但框架还提供了对Python、R以及Scala的捆绑。

19. neon

neon 是 Nervana 基于 Python 语言的深度学习框架,在诸多常见的深层神经网络中都可以得到较高的性能,好比AlexNet、VGG 或者GoogLeNet。在设计 neon 时,开发者充分考虑了以下功能:

  • 支持经常使用的模型及实例,例如 Convnets、 MLPs、 RNNs、LSTMs、Autoencoders 等,其中许多预训练的实现均可以在模型库中发现;
  • 与麦克斯韦GPU中fp16 和 fp32(基准) 的nervanagpu 内核紧密集成;
    • 在Titan X(1 GPU ~ 32 hrs上可完整运行)的AlexNet上为3s/macrobatch(3072图像);
    • 快速影像字幕模型(速度比基于 NeuralTalk 的CPU 快200倍)。
  • 支持基本自动微分;
  • 框架可视化;
  • 可交换式硬盘后端:一次编写代码,而后配置到 CPU、GPU、或者 Nervana 硬盘。

在 Nervana中,neon被用来解决客户在多个域间存在的各类问题。

20. Oryx 2

开源项目Oryx提供了简单且实时的大规模机器学习、预测分析的基础设施。它可实现一些经常使用于商业应用的算法类:协做式过滤/推荐、分类/回归、集群等。此外,Oryx 可利用 Apache Hadoop 在大规模数据流中创建模型,还能够经过HTTP REST API 为这些模型提供实时查询,同时随着新的数据不断流入,能够近似地自动更新模型。这种包括了计算层和服务层的双重设计,可以分别实现一个Lambda 架构。模型在PMML格式交换。

_6

_6

Oryx本质上只作两件事:建模和为模型服务,这就是计算层和服务层两个独立的部分各自的职责。计算层是离线、批量的过程,可从输入数据中创建机器学习模型,它的经营收益在于“代”,便可利用某一点处输入值的快照建模,结果就是随着连续输入的累加,随时间生成一系列输出;服务层也是一个基于Java长期运行的服务器进程,它公开了REST API。使用者可从浏览器中访问,也可利用任何可以发送HTTP请求的语言或工具进行访问。

Oryx的定位不是机器学习算法的程序库,Owen关注的重点有四个:回归、分类、集群和协做式过滤(也就是推荐)。其中推荐系统很是热门,Owen正在与几个Cloudera的客户合做,帮他们使用Oryx部署推荐系统。

21. Shogun

Shogun是一个机器学习工具箱,由Soeren Sonnenburg 和Gunnar Raetsch(建立,其重点是大尺度上的内核学习方法,特别是支持向量机(SVM,Support Vector Machines)的学习工具箱。它提供了一个通用的链接到几个不一样的SVM实现方式中的SVM对象接口,目前发展最早进的LIBSVM和SVMlight 也位于其中,每一个SVM均可以与各类内核相结合。工具箱不只为经常使用的内核程序(如线性、多项式、高斯和S型核函数)提供了高效的实现途径,还自带了一些近期的字符串内核函数,例如局部性的改进、Fischer、TOP、Spectrum、加权度内核与移位,后来有效的LINADD优化内核函数也已经实现。

此外,Shogun还提供了使用自定义预计算内核工做的自由,其中一个重要特征就是能够经过多个子内核的加权线性组合来构造的组合核,每一个子内核无需工做在同一个域中。经过使用多内核学习可知最优子内核的加权。

目前Shogun能够解决SVM 2类的分类和回归问题。此外Shogun也添加了了像线性判别分析(LDA)、线性规划(LPM)、(内核)感知等大量线性方法和一些用于训练隐马尔可夫模型的算法。

22. HLearn

HLearn是由Haskell语言编写的高性能机器学习库,目前它对任意维度空间有着最快最近邻的实现算法。

HLearn一样也是一个研究型项目。该项目的研究目标是为机器学习发掘“最佳可能”的接口。这就涉及到了两个相互冲突的要求:该库应该像由C/C++/Fortran/Assembly开发的底层库那样运行快速;同时也应该像由Python/R/Matlab开发的高级库那样灵活多变。Julia在这个方向上取得了惊人的进步,可是 HLearn“野心”更大。更值得注意的是,HLearn的目标是比低级语言速度更快,比高级语言更加灵活。

为了实现这一目标,HLearn采用了与标准学习库彻底不一样的接口。在HLearn中H表明着三个不一样的概念,这三个概念也是HLearn设计的基本要求:

  • H表明Haskell。机器学习是从数据中预测函数,因此功能性编程语言适应机器学习是彻底说的通的。但功能性编程语言并没普遍应用于机器学习,这是由于它们固来缺少支持学习算法的快速数值计算能力。HLearn经过采用Haskell中的SubHask库得到了快速数值计算能力;

  • H同时表明着Homomorphisms。Homomorphisms是抽象代数的基本概念,HLearn将该代数结构用于学习系统中;

  • H还表明着History monad。在开发新的学习算法过程当中,最为困难的任务之一就是调试优化过程。在此以前,是没有办法减轻调试过程的工做量的,但History monad正在试图解决该问题。它可让你在整个线程优化代码的过程当中无需修改原代码。此外,使用该技术时没有增长其余的运行开销。

 

23. MLPNeuralNet

MLPNeuralNet是一个针对iOS和Mac OS系统的快速多层感知神经网络库,可经过已训练的神经网络预测新实例。它利用了向量运算和硬盘加速功能(若是可用),其创建在苹果公司的加速框架之上。

_7

_7

若你已经用Matlab(Python或R)设计了一个预测模型,并但愿在iOS应用程序加以应用。在这种状况下,正好须要MLP NeuralNet,而MLP NeuralNet只能加载和运行前向传播方式的模型。MLP NeuralNet 有以下几个特色:

  • 分类、多类分类以及回归输出;
  • 向量化实现形式;
  • 双精度;
  • 多重隐含层数或空(此时至关于逻辑学/线性回归)。

 

24. Apache Mahout

Mahout 是Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地建立智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,经过使用 Apache Hadoop 库,Mahout 能够有效地扩展到云中。Apache Mahout项目的目标是创建一个可以快速建立可扩展、高性能机器学习应用的环境。

虽然在开源领域中相对较为年轻,但 Mahout 已经提供了大量功能,特别是在集群和 CF 方面。Mahout 的主要特性包括:

  • Taste CF,Taste是Sean Owen在SourceForge上发起的一个针对CF的开源项目,并在2008年被赠予Mahout;
  • 一些支持 Map-Reduce 的集群实现包括 k-Means、模糊 k-Means、Canopy、Dirichlet 和 Mean-Shift;
  • Distributed Naive Bayes 和 Complementary Naive Bayes 分类实现;
  • 针对进化编程的分布式适用性功能;
  • Matrix 和矢量库。

使用 Mahout 还可实现内容分类。Mahout 目前支持两种根据贝氏统计来实现内容分类的方法:第一种方法是使用简单的支持 Map-Reduce 的 Naive Bayes 分类器;第二种方法是 Complementary Naive Bayes,它会尝试纠正Naive Bayes方法中的一些问题,同时仍然可以维持简单性和速度。

25. Seldon Server

Seldon是一个开放式的预测平台,提供内容建议和通常的功能性预测。它在Kubernetes集群内运行,所以能够调配到Kubernetes范围内的任一地址:内部部署或云部署(例如,AWS、谷歌云平台、Azure)。另外,它还能够衡量大型企业安装的需求。

26. Datumbox - Framework

Datumbox机器学习框架是用Java编写的一个开源框架,该框架的涵盖大量的机器学习算法和统计方法,并可以处理大尺寸的数据集。

Datumbox API提供了海量的分类器和天然语言处理服务,可以被应用在不少领域的应用,包括了情感分析、话题分类、语言检测、主观分析、垃圾邮件检测、阅读评估、关键词和文本提取等等。目前,Datumbox全部的机器学习服务都可以经过API获取,该框架可以让用户迅速地开发本身的智能应用。目前,基于GPL3.0的Datumbox机器学习框架已经开源而且能够从GitHub上进行下载。

Datumbox的机器学习平台很大程度上已经可以取代普通的智能应用。它具备以下几个显著的优势:

  • 强大而且开源。Datumbox API使用了强大的开源机器学习框架Datumbox,使用其高度精确的算法可以迅速地构建创新的应用;
  • 易于使用。平台API十分易于使用,它使用了REST&JSON的技术,对于全部的分类器;
  • 迅速使用。Datumbox去掉了那些很花时间的复杂机器学习训练模型。用户可以经过平台直接使用分类器。

Datumbox主要能够应用在四个方面:一个是社交媒体的监视,评估用户观点可以经过机器学习解决,Datumbox可以帮助用户构建本身的社交媒体监视工具;第二是搜索引擎优化,其中很是有效的方法就是文档中重要术语的定位和优化;第三点是质量评估,在在线通信中,评估用户产生内容的质量对于去除垃圾邮件是很是重要的,Datumbox可以自动的评分而且审核这些内容;最后是文本分析,天然语言处理和文本分析工具推进了网上大量应用的产生,平台API可以很轻松地帮助用户进行这些分析。

27. Jubatus

Jubatus库是一个运行在分布式环境中的在线机器学习框架,即面向大数据数据流的开源框架。它和Storm有些相似,但可以提供更多的功能,主要功能以下:

  • 在线机器学习库:包括分类、聚合和推荐;
  • Fv_converter: 数据预处理(用天然语言);
  • 在线机器学习框架,支持容错。

Jubatus认为将来的数据分析平台应该同时向三个方向展开:处理更大的数据,深层次的分析和实时处理。因而Jubatus将在线机器学习,分布式计算和随机算法等的优点结合在一块儿用于机器学习,并支持分类、回归、推荐等基本元素。根据其设计目的,Jubatus有以下的特色: 

  • 可扩展:支持可扩展的机器学习处理。在普通硬件集群上处理数据速度高达100000条/秒; +实时计算:实时分析数据和更新模型;
  • 深层次的数据分析:支持各类分析计算:分类、回归、统计、推荐等。

若是有基于流数据的机器学习方面的需求,Jubatus值得关注。

28. Decider

Decider 是另外一个 Ruby 机器学习库,兼具灵活性和可扩展性。Decider内置了对纯文本和URI、填充词汇、中止词删除、字格等的支持,以上这些均可以很容易地在选项中组合。Decider 可支持Ruby中任何可用的存储机制。若是你喜欢,能够保存到数据库中,实现分布式分类。

Decider有几个基准,也兼做集成测试。这些都是按期运行并用于查明CPU和RAM的瓶颈。Decider能够进行大量数学运算,计算至关密集,因此对速度的要求比较高。这是常用Ruby1.9和JRuby测试其计算速度。此外,用户的数据集应该彻底在内存中,不然将会遇到麻烦。

相关文章
相关标签/搜索