摘要:
机器学习
牵涉的编程语言十分之广,包括了MATLAB、
Python
、Clojure、Ruby等等。为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习牵涉的编程语言十分之广,包括了MATLAB、Julia、R、Perl、Python、Clojure、Ruby等等。
为了让开发者更加广泛、深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架、库以及其他相关资料。
目录
-
C
-
C++
-
Common Lisp
-
Clojure
-
Erlang
-
Go
-
Haskell
-
Java
-
Javascript
-
Julia
-
Lua
-
Matlab
-
.NET
-
Objective C
-
OCaml
-
PHP
-
Python
-
Ruby
-
Rust
-
R
-
SAS
-
Scala
-
Swift
-
Credits
C
通用机器学习
-
Recommender
–
一个C语言库,利用协同过滤
(CF)
进行产品推荐/建议;
-
Darknet
–
是一个用C和CUDA编写的开源神经网络框架,它速度快,易于安装,并支持CPU和GPU计算。
计算机视觉
语音识别
-
HTK
–
隐马尔可夫模型工具包(HTK)是一个便携式工具包,用于构建和操作隐马尔可夫模型。
C++
-
OpenCV
–
OpenCV自带
C ++、C、Python、Java和MATLAB
接口,并支持Windows、Linux、Android版和Mac OS等系统;
-
DLib
–
DLib有C ++和Python接口,用于人脸检测和训练通用的目标探测器;
-
EBLearn
–
Eblearn是一种面向对象的C++库,能够实现各种机器学习模型;
-
VIGRA
–
VIGRA是通用跨平台的C++计算机视觉和机器学习库,能够用Python绑定任意维度的体积。
通用机器学习
-
mlpack
–
可扩展的C++机器学习库;
-
DLib
–
ML工具套件,能够很容易嵌入到其他应用程序中;
-
encog-cpp
-
shark
-
Vowpal Wabbit (VW)
–
一个快速的
核外
(
out
–
of
–
core
)
学习系统;
-
sofia-ml
–
快速增量算法套件;
-
Shogun
–
Shogun
机器学习工具箱;
-
Caffe
–
基于清洁度、可读性和速度考虑而开发的深度学习框架。[深度学习]
-
CXXNET
–
另一个深度学习框架,其核心代码少于1000行;[深度学习]
-
XGBoost
–
一种并行、优化、通用的梯度推进库;
-
CUDA
–
利用C++ / CUDA快速实现卷积;[深度学习]
-
Stan
–
一种概率性的编程语言,能够实现
Hamiltonian Monte Carlo
抽样的全贝叶斯统计推断;
-
BanditLib
–
一个简单、有多重保护的
Bandit
库;
-
Timbl
:一个软件包/ C ++库,能够实现多种基于内存的学习算法,其中有
IB1-IG–
k-最近邻分类的实现、
IGTree–
IB1-IG
的决策树近似值;常用于NLP;
-
Disrtibuted Machine learning Tool Kit (DMTK)
–
微软开发的分布式机器学习(参数服务器)框架,能够在多台机器的大型数据集上实现训练模型,与它捆绑的现有工具包括:
LightLDA
和分布式(多传感)字嵌入;
-
igraph
–
通用图形库;
-
Warp-CTC
–
在CPU和GPU上快速并行地实现连接时域分类(
Connectionist Temporal Classification
,
CTC
);
-
CNTK
–
微软研究院开发的计算网络工具包(CNTK),它作为一系列计算步骤,通过有向图来描述神经网络,是统一的深度学习工具包;
-
DeepDetect
–
一个机器学习API,服务器用C++11编写,它使机器学习的状态易于工作,并容易集成到现有应用程序;
-
Fido
–
一个高度模块化的C++机器学习库,用于嵌入式电子产品和机器人中。
自然语言处理
-
MIT Information Extraction Toolkit
–
C,C ++和Python的工具,用于命名实体识别与关系抽取;
-
CRF++
–
条件随机域(
Conditional Random Fields
,
CRFs
)的开源实现,用于分割/标记序列数据及其他自然语言处理任务;
-
CRFsuite
–
条件随机域(
CRFs
)的实现,用于标记序列数据;
-
BLLIP Parser
–
BLLIP
自然语言解析器(也称为
Charniak-Johnson
解析器);
-
colibri-core
–
是C++库、命令行工具,和Python绑定用于提取与使用基本的语言结构,例如用快速和高效存储的方式实现
n-grams
和
skipgrams
模型;
-
ucto
–
是一种工具和C++库,基于支持各种语言的编译器,内含统一字符标准及规则表达式;支持
FoLiA
格式;
-
libfolia
–
支持
FoLiA
格式
的C++库;
-
frog
–
为
Dutch
开发的基于内存的NLP套件:POS标签、归类分析、依存句法分析、NER、浅层句法分析、形态分析;
-
MeTA
–
MeTA : ModErn
语篇分析(
ModErn Text Analysis
)
,是一个C++数据科学工具包,便于挖掘大文本数据。
语音识别
-
Kaldi
–
Kaldi
是用于语音识别的工具包,用C++编写,由Apache许可证V2.0协议授权,专门给语音识别的研究人员使用。
序列分析
-
ToPS
–
这是一种面向对象的框架,便于在用户定义的字母序列中整合概率模型。
手势检测
-
grt
–
手势识别工具包(GRT)是一个跨平台、开源的C++机器学习库,用于实时的手势识别。
Common Lisp
通用机器学习
Clojure
自然语言处理
-
Clojure-openNLP
–
Clojure中自然语言处理的工具包(openNLP);
-
Infections-clj
– Clojur
e和
Clojure
中类似于Rails的
inflection
库。
通用机器学习
-
Touchstone
– Clojure A/B
测试库;
-
Clojush
– Clojure
中的Push程序语言和PushGP遗传编程系统
;
-
Infer
– Clojure
中分析和机器学习的工具;
-
Clj-ML
–
Clojure中基于Weka及其相关环境的深度学习库;
-
Encog
–
在
Clojure
中封装成
Encog (v3)
(专门研究神经网络的机器学习框架);
-
Fungp
– Clojure
中的遗传编程实例库;
-
Statistiker
–
Clojure中基础机器学习算法;
-
clortex
–
采用
Numenta’s Cortical
学习算法的通用机器学习库;
-
comportex
–
采用
Numenta’s Cortical
学习算法的功能组合的机器学习库。
数据分析/数据可视化
-
Incanter
– Incanter
是基于
Clojure
,类似R的统计计算与制图平台
;
-
PigPen
– Clojure
中的Map-Reduce;
-
Envision
–
基于
Statistiker
和
D3Clojure
数据可视化库。
Erlang
通用机器学习
-
Disco
–
Erlang中的
Map Reduce
模型。
Go
自然语言处理
-
go-porterstemmer
–
一个用于实现
Porter词干提取算法的原生Go语言净室;
-
paicehusk
–
Go语言中用于实现
Paice/Husk词干提取算法;
-
snowball
–
Go语言中的
Snowball
词干提取器;
-
go-ngram
–
内存N-gram索引压缩
。
通用机器学习
-
Go Learn
–
Go语言中的机器学习库;
-
go-pr
–
Go语言中的模式识别包;
-
go-ml
–
线性/逻辑回归、神经网络、协同过滤和多元高斯分布;
-
bayesian
–
Go语言中朴素
贝叶斯分类库;
-
go-galib
–
Go语言版的遗传算法库;
-
Cloudforest
–
GO语言中的决策树集合;
-
gobrain
–
GO语言版的神经网络;
-
GoNN
– GoNN
是用Go语言实现的神经网络,它包括BPNN、RBF、PCN
;
-
MXNet
–
轻量级、便携式、灵活的分布式/深度学习系统,可对动态的、突变数据流调度部署,同时也支持Python、R、Julia、Go、Javascript 等编程语言。
数据分析/数据可视化
Haskell
通用机器学习
-
haskell-ml
– Haskell
语言实现的各种深度学习算法
;
-
HLearn
–
根据代数结构解释其深度模型的库;
-
hnn
– Haskell
语言的神经网络库;
-
hopfield-networks
–
Haskell中用于无监督学习的
Hopfield
网络;
-
caffegraph
–
一种用于深度神经网络的领域特定语言(DSL);
-
LambdaNet
– Haskell
中的可配置的神经网络。
Java
自然语言处理
-
Cortical.io
–
像人脑一样快速、精确处理复杂的NLP(自然语言处理)操作(如消歧、分类、流文本过滤等操作)的Retina API;
-
CoreNLP
–
斯坦福大学的CoreNLP提供的一系列的自然语言处理工具,该工具可以根据输入原始英语文本,给出单词的基本形式;
-
Stanford Parser
–
一
种自然语言分析器,可以分析语句的语法结构;
-
Stanford POS Tagger
–
一个词性分类器
(POS Tagger
);
-
Stanford Name Entity Recognizer
–
Stanford NER是一个
Java实现的名称识别器;
-
Stanford Word Segmenter
–
分词器,很多NLP工作中都要用到的标准预处理步骤;
-
Tregex, Tsurgeon and Semgrex
– T
regex
基于树关系以及节点匹配的正则表达
式,用于在树状数据结构中进行模式匹配(名字是“tree regular expressions”的缩写)
;
-
Stanford Phrasal:
一个基于短语的翻译系统
-
Stanford English Tokenizer
–
Stanford Phrasal
用Java写成的最新的基于统计短语的机器翻译系统;
-
Stanford Tokens Regex
–
一个分解器,可以将文本大致分成一系列对应于“词”的符号;
-
Stanford Temporal Tagger
–
SUTime是一个用于识别并标准化时间表达式的库;
-
Stanford SPIED
–
在种子集上使用模式,以迭代方式从无标签文本中进行学习实体;
-
Stanford Topic Modeling Toolbox
–
为社会科学家及其他希望分析数据集的人员提供的主题建模工具;
-
Twitter Text Java
–
Java实现的推特文本处理库;
-
MALLET
–
基于Java的统计自然语言处理、文档分类、聚类、主题建模、信息提取以及其他机器学习的文本应用包;
-
OpenNLP
–
基于机器学习的自然语言文本处理工具包;
-
LingPipe
–
一个使用计算机语言学文本处理的工具包;
-
ClearTK
–
在Java中
ClearTK
为开发统计语言处理组件提供了一个框架,该框架是基于
Apache UIMA
;
-
Apache cTAKES
– Apache cTAKES
是一个开源自然语言处理系统,用于从临床电子病历的自由文本中提取信息;
-
ClearNLP
– ClearNLP
工程为自然语言处理提供了软件和资源提供了。该项目最早在计算机愈合和教育研究中心启动,目前由
Emory
大学的语言和信息研究中心继续开发。该项目遵循
Apache 2
license
。
通用机器学习
-
aerosolve
–
是由Airbnb设计的定价建议系统的机器学习库;
-
Datumbox
–
应对机器学习和统计应用快速发展的机器学习框架;
-
ELKI
–
用于数据挖掘的Java工具包
(
无监督:聚类、异常检测等等
)
;
-
Encog
–
一种先进的神经网络和机器学习框架。
Encog
包含用于创建各类网络的类,同时也支持为神经网络规范和处理数据的类。
它的训练采用多线程弹性传播。它也能使用GPU加快处理时间。提供了图形化界面来帮助建模和训练神经网络。
-
EvA2
–
包含遗传算法、差分进化、协方差自适应进化策略等等的进化算法框架;
-
FlinkML in Apache Flink
– Flink
中的分布式机器学习库;
-
H2O
–
深度学习引擎,支持在Hadoop、Spark 或者通过R、Python、Scala 、
REST/JSONML
的APIs连到的笔记本上进行分布式学习;
-
htm.java
–
采用
Numenta
Cortical
学习算法的通用机器学习库 ;
-
java-deeplearning
– Java
、
Clojure
、
Scala
的分布式深度学习平台;
-
JAVA-ML
–
包含所有
Java
算法的通用接口的通用深度学习库;
-
JSAT
–
用于分类、回归、聚类的机器学习算法集合;
-
Mahout
–
分布式的机器学习库;
-
Meka
–
MEKA提供了一个面向多标签学习和评价方法的开源实现(扩展成Weka);
-
MLlib in Apache Spark
–
Spark中的分布式机器学习程序库;
-
Neuroph
– Neuroph
是轻量级的Java神经网络框架;
-
ORYX
–
采用
Apache Spark
和
Apache Kafka
的
Lambda
结构框架,专门用于实时大规模机器学习;
-
Samoa
–
SAMOA
是一个包含用于分布式机器学习数据流的框架,同时为数据流流入不同的流处理平台提供了接口;
-
RankLib
– RankLib
是一个排序学习算法库;
-
rapaio
–
Java中用于统计、数据挖掘和机器学习的工具箱;
-
RapidMiner
– RapidMiner integration into Java code
-
Stanford Classifier
–
斯坦福大学分类器是一种机器学习工具,它可以将数据项归置不同的类别中;
-
SmileMiner
–
统计机器智能与学习引擎;
-
SystemML
–
灵活、可扩展的机器学习语言;
-
WalnutiQ
–
人脑部分面向对象模型;
-
Weka
–
Weka是数据挖掘方面的机器学习算法集
。
语音识别
-
CMU Sphinx
– CMU Sphinx
是基于Java 语音识别库,用于纯语音识别开源工具包。
数据分析/数据可视化
-
Flink
– Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台
;
-
Hadoop
–
大数据分析平台;
-
Spark
– Spark
是一个
快速通用的大规模数据处理引擎;
-
Storm
– Storm
是一个分布式实时计算系统;
-
Impala
–
为
Hadoop
实现实时查询
-
DataMelt
–
用于数字计算、统计、符号计算、数据分析和数据可视化的数学软件;
-
Dr. Michael Thomas Flanagan’s Java Scientific Library
深度学习
-
Deeplearning4j
–
采用并行GPU的商用可扩展深度学习库。
数
J
avascript
-
Twitter-text
– Twitter文本处理库中使用JavaScript的实现;
-
NLP.js
–
使用JavaScript和CoffeeScript的
NLP
实用工具;
-
natural
–
用于节点的通用自然语言工具;
-
Knwl.js
–
JS中的自然语言处理器;
-
Retext
-用于分析和处理自然语言的可扩展系统;
-
TextProcessing
-情感分析,词干和词形还原,部分词性标注和组块,短语提取和命名实体识别;
-
NLP Compromise
– 浏览器中的自然语言处理。
数据分析/数据可视化
-
D3.js
-
High Charts
-
NVD3.js
-
dc.js
-
chartjs
-
dimple
-
amCharts
-
D3xter
–
直接建立在D3上的绘图;
-
statkit
–
JavaScript的统计工具;
-
datakit
– JavaScript的轻量级数据分析框架;
-
science.js
– JavaScript中的科学统计计算;
-
Z3d
–
在
Three.js
上轻松地绘制交互式3D图;
-
Sigma.js
– JavaScript库,专门用于图形绘制;
-
C3.js
–
基于
D3.js
的定制库,能够轻松绘制图表;
-
ZingChart
–
Vanilla JS
编写的库,用于大数据可视化;
-
cheminfo
–
数据可视化和分析的平台,使用
可视化
项目。
通用机器学习
-
Convnet.js
– ConvNetJS是一个JavaScript库,用于训练深度学习模型[深度学习];
-
Clusterfck
– 为Node.js和浏览器,用Javascript实现的凝聚层次聚类;
-
Clustering.js
–
Javascript为Node.js和浏览器实现的聚类算法;
-
Decision Trees
-使用ID3算法实现NodeJS决策树;
-
figue
– K-均值、模糊C均值和凝聚聚类;
-
Node-fann
-Node.js绑定的快速人工神经网络库(
Fast Artificial Neural Network Library
,
FANN
);
-
Kmeans.js
– K-均值算法用JavaScript的简单实现,用于Node.js和浏览器;
-
LDA.js
–
Node.js的LDA主题建模;
-
Learning.js
–
用Javascript实现逻辑回归/
c4.5
决策树;
-
Machine Learning
–
Node.js
的机器学习库;
-
Node-SVM
–
Node.js
的支持向量机;
-
Brain
–
JavaScript中的神经网络[已弃用];
-
Bayesian-Bandit
–
Node
和浏览器的贝叶斯实现;
-
Synaptic
–
用于Node.js和浏览器的无架构神经网络库;
-
kNear
–
JavaScript实现的k个最近邻算法,用于监督学习;
-
NeuralN
–
Node.js的C++神经网络库,其优点是有大量的数据集和多线程训练;
-
kalman
–
Javascript的卡尔曼滤波器;
-
shaman
–
Node.js库,同时支持简单和多元的线性回归;
-
ml.js
–
用于Node.js和浏览器的机器学习和数值分析工具;
-
Pavlov.js
–
利用马尔可夫决策过程强化学习;
-
MXNet
–
轻量级、便携式、灵活的分布式/深度学习系统,可对动态的、突变数据流调度部署,同时也支持Python、R、Julia、Go、Javascript 等编程语言。
其它
-
sylvester
–
用于JavaScript的向量和矩阵数学;
-
simple-statistics
–
描述,回归和推断统计的JavaScript实现;用文字实现的JavaScript,没有依赖性,能在所有现代浏览器(包括IE)以及在node.js中工作;
-
regression-js
–
JavaScript库,包含小二乘法拟合方法的集合,用于寻找数据集的趋势;
-
Lyric
–
线性回归库;
-
GreatCircle
–
计算大圆距的库。
Julia
-
MachineLearning
–
Julia
机器学习库;
-
MLBase
–
一组支持机器学习算法的发展的函数;
-
PGM
–
一个概率图模型的
Julia
框架;
-
DA
–
正则判别分析的
Julia
组件;
-
Regression
–
回归分析算法(例如线性回归和逻辑回归);
-
Local Regression
–
局部回归,超级流畅!
-
Naive Bayes
–
Julia
朴素贝叶斯方法的简单实现;
-
Mixed Models
–
用于装配(统计)混合效应模型的
Julia
组件;
-
Simple MCMC
–
Julia
实现基本的MCMC采样;
-
Distance
–
Julia
距离评估模块;
-
Decision Tree
–
决策树分类和回归;
-
Neural
–
Julia
神经网络;
-
MCMC
–
Julia
的MCMC工具;
-
Mamba
–
Julia
中马尔可夫链蒙特卡罗(MCMC)的贝叶斯分析;
-
GLM
–
Julia
的广义线性模型。
-
Online Learning
-
GLMNet
–
GMLNet的Julia包装版,适合套索/弹性网模型;
-
Clustering
–
集群数据的基本功能:K-均值,DP-均值等;
-
SVM
–
Julia
适用的
SVM
;
-
Kernal Density
–
Julia
的核密度估计量;
-
Dimensionality Reduction
–
降维方法;
-
NMF
–
非负矩阵分解的
Julia
包;
-
ANN
–
Julia
人工神经网络;
-
Mocha
–
受Caffe启发,
Julia
的深度学习框架;
-
XGBoost
–
Julia
中的
eXtreme Gradient Boosting
包
;
-
ManifoldLearning
–
用于流形学习和非线性降维的
Julia
组件;
-
MXNet
–
轻量级、便携式、灵活的分布式/深度学习系统,可对动态的、突变数据流调度部署,同时也支持Python、R、Julia、Go、Javascript 等编程语言。
-
Merlin
–
Julia
灵活的深度学习框架。
自然语言处理
-
Topic Models
–
Julia
下的主题模型;
-
Text Analysis
–
Julia
下的文本分析包。
数据分析/数据可视化
-
Graph Layout
–
纯
Julia
实现的图布局算法;
-
Data Frames Meta
–
DataFrames的元编程工具;
-
Julia Data
–
处理表格数据的Julia库;
-
Data Read
–
从Stata、SAS、SPSS读取文件;
-
Hypothesis Tests
–
Julia
的假设检验;
-
Gadfly
–
Julia
灵活的统计制图法;
-
Stats
–
Julia
的统计图检验;
-
RDataSets
–
用于装载许多R中可用数据集的
Julia
包;
-
DataFrames
–
处理列表数据的
Julia
库;
-
Distributions
–
概率分布和相关函数的
Julia
包;
-
Data Arrays
–
允许缺失值的数据结构;
-
Time Series
–
Julia
的时间序列工具包;
-
Sampling
–
Julia
的基本采样算法。
其他项/展示
-
DSP
–
数字信号处理(滤波,周期图,频谱图,窗函数);
-
JuliaCon Presentations
–
JuliaCon的演示文稿;
-
SignalProcessing
–
Julia
写的信号处理工具;
-
Images
–
Julia
的图像库。