跟着机器学习越来越遭到开发者重视,呈现了许多机器学习的开源项目,在本文罗列的11个机器学习开源项目中,不管你是Java爱好者仍是Python狂人,在这里你都能够找到自己想要的机器学习开源项目。
垃圾邮件过滤、人脸辨认、引荐引擎——当你有一个大数据集而且期望运用它们履行猜测剖析和模式辨认,机器学习是必经之路。这门科学,计算机能够在没有事前规划的前提下自主学习、剖析和操作数据,现在越来越多的开发人员重视机器学习。
机器学习技能的鼓起不只是由于硬件本钱越来越廉价以及功用越来越强壮,促进机器学习在单机或大规模集群上轻松布置的免费软件激增也是重要因素。机器学习库的多样性意味着不管你喜爱什么言语或环境,都有或许是获得你喜爱的。
1. Scikit-learn
Python由于其易用性以及丰厚的函数库,现已成为数学、自然科学和统计学的首选编程言语。Scikit-learn经过在现有Python包上构建——NumPy SciPy和matplotlib——服务于数学和自然科学。生成的库要么能够运用交互式“作业台”应用程序,要么被嵌入到其他软件和重用。工具箱能够在BSD答应下获取,所以它是彻底敞开和可重用的。
2. Shogun
在最陈旧、最值得尊敬的机器学习库中,Shogun创建于1999年,用C++编写,但并不限于在C++作业。由于SWIG库,Shogun能够轻松在Java、Python、C#、Ruby、R、Lua、Octave、Matlab言语和环境下运用。
尽管德高望重,Shogun也有其他的竞争者。另一个根据C++的机器学习库Mlpack在2011年呈现,它声称比其他竞争者速度更快而且更简略运用(一个更完好的API集)。
3. Accord Framework/AForge.net
Accord,一个.Net的机器学习和信号处理结构,是早前相似一个项目AForge.net的扩展。趁便说一下,“信号处理”这里是指一系列对图画和音频的机器学习算法,如图片无缝缝合或履行人脸检测。包括一组视觉处理算法;它作用于图画流(如视频),而且可用于完结移动方针的盯梢等功用。Accord还供给一个从神经网络到决策树体系的机器学习常见库。
4. Mahout
Mahout结构一向与Hadoop相关联,但旗下许多算法还能够脱离Hadoop运转。他们对那些或许终究迁移到Hadoop上的应用程序或从Hadoop上剥离成为独立应用程序的项目十分有用。
Mahout缺陷之一:现在几乎没有算法支撑高功用的Spark结构,反而运用日益过期的MapReduce结构。该项目现在不接受根据MapReduce的算法,那些想要获得更高功用的开发者转而用MLlib 代替。
5. MLlib
Apache自己的Spark和Hadoop机器学习库,旨在为大规模和高速度而规划的MLlib自称具有一切常见的算法和有用数据类型。与任何Hadoop项目相同,Java是MLlib上的根本言语,可是Python用户能够用MLlib NumPy库衔接(也用于scikit-learn),而且Scala用户能够针对MLlib编写代码。假如不能设置一个Hadoop集群,MLlib能够在没有Hadoop的情况下布置在Spark上——以及在EC2或Mesos上。
6. H2O
0xdata H2O的算法是面向业务流程——诈骗或趋势猜测。Hadoop专家能够运用Java与H2O相互作用,但结构还供给了对Python、R以及Scala的绑缚。
7. Cloudera Oryx
另一个为Hadoop规划的机器学习项目Oryx由?Cloudera Hadoop distribuTIon?创造者供给。Oryx是为了答应机器学习模型布置在实时流数据上而规划的,如实时垃圾邮件过滤器或引荐引擎。
该项意图全新版别暂时定名为Oryx 2,现在正在预备阶段。它运用Apache项目如Spark 和 Kafka完结更高功用,其组件构建走松懈耦合道路以便能经得住时刻检测。
8. GoLearn
谷歌的Go言语现已开端被广泛运用,跟着库越来越多,据其开发者Stephen Witworth介绍,GoLearn被构建为Go言语的一体化的机器学习库,方针是“简略可定制”。简略主要是由于数据在库内被加载和处理,由于它是模仿SciPy 和R;可定制性在于库的敞开源码特性以及一些数据结构能够很简略地在一个应用程序中扩展。Witworth也为Vowpal Wabbit库创建了一个包装器,其间一个库存放在Shogun工具箱中。
9. Weka
Weka是新西兰Waikato大学开发的,搜集一组专门为数据发掘规划的Java机器学习算法。这组GNU得到 GPLv3答应的集有一个包体系扩展其功用,有官方和非官方包两种。Weka乃至还有专门一本书解说其软件和实战技能,所以那些想要在概念和软件上获得优势的开发者能够重视下。
尽管Weka并不是专门针对Hadoop用户,可是Weka的最新版别的一组封装器能够用于Hadoop。请留意,它还不能支撑Spark,只要MapReduc。Clojure用户还能够经过?Clj-ml??库运用Weka。
10. CUDA-Convnet
现在大多数人都知道GPU在处理某些问题上的速度比CPU快。但应用程序不会主动运用GPU的加快功用;他们有必要清晰经过程序写入。CUDA-Convne是一个神经网络应用程序机器学习库,用C++编写来开发Nvidia的CUDA GPU处理技能。关于那些运用Python而不是C++用户,由此发生的神经网络能够保存为Python pickle方针,因而能够从Python存取。
留意,原始版别的项目不再被开发,可是现已被重组为CUDA-Convnet2,支撑多个GPU和Kepler-generaTIon GPU。与之相似的项目Vulpes,现已用F#编写,而且一般和.Net结构一同运用。
11. ConvNetJS
望文生义,ConvNetJS 是一个根据 js 的深度学习 library,能够让你在浏览器中练习深度网络。NPM版别也可用于那些运用Node.js的用户,而且这个库也是为合理运用JavaScript的异步性而规划,例如,一旦他们完结练习操作能够给出一个回调函数来履行。里边还包括很多的演示事例。