Norm Matloff
是加州大学戴维斯分校的计算机科学教授,他针对数据科学界常年争论的要点,作了一篇关于
R 和 Python 的对比分析。

数据科学中R VS Python:获胜者是…

在”最佳”数据科学工具的比赛中,R和Python都有自己的优缺点.对二者的选择取决于使用背景,学习花费和其他常用工具的需要

Martijn Theuwissen发表于DataCamp.

在DataCamp,学生经常问我们他们日常数据分析任务使用R或Python。虽然我们主要是提供交互式R教程,我们总是回答这个问题取决于他们所面对的数据分析挑战的类型。
R和Python都是流行的统计编程语言.R的功能由统计学家开发(想想R强大的数据可视化能力),Python常常被称赞为易于理解的语法.

本文中,我们重点介绍R和Python的不同,以及二者如何在数据科学和统计世界中占有位置的.如果你更喜欢视觉展现,确保检查出相应的信息图表”数据科学的战争:R
vs Python“.

推荐!国外程序员整理的机器学习资源大全

本文汇编了一些机器学习领域的框架、库以及软件(按编程语言排序)。

伯乐在线已在 GitHub
上发起「机器学习资源大全中文版」的整理。欢迎扩散、欢迎加入。

在分析开始之前,Matloff 先抛出自己可能带有的潜在偏见:他写过 4 本与 R
相关的书,在 useR! 和其他 R 的会议上做过演讲,并且目前担任 R
期刊的主编。但同时他也用 Python 敲过多年代码。Matloff
希望自己的分析能够被认为是公平且有帮助的。

R的介绍

Ross Ihaka 和 Robert Gentleman
1995年创建开源语言R作为S编程语言的实现.其目的是开发一个提供更好更人性化数学据分析,统计和图形模型的语言.最初,R主要是在学术和研究中使用,最近其余也开始使用R.这使得R成为全球发展最快的统计语言.

R的主要优势的其强大的社区,通过邮件列表,用户贡献文档和一个非常活跃的Stack
Overflow小组提供支持.还有CRAN,一个用户可以轻松贡献R包的巨大资源库.这些软件包是一个R函数和数据的集合,可以马上访问最新技术和功能,不需要从头开始开发.

最后,如果你是一个有经验的程序员,学习R可能并不难.然而作为一个初学者,你可能会感觉到非常纠结.幸运的是,有许多你可以咨询的当下的学习资源.

C++

接着,这位专业的计算机科学家和统计学家从以下几方面对 R 和 Python
做出了对比:

Python的介绍

Python是由Guido van Rossum
1991年创建,强调效率和代码的可读性。希望深入的数据分析或应用统计技术的程序员一些Python用于统计的主要用户。

你越接近在工程环境中工作,越有可能更喜欢Python。它是一种灵活的语言,并让其专注于可读性和简单性,它的学习曲线是比较低的。

与R类似,Python同样有包。PyPI是Python包的索引,由用户贡献的库组成。就像R,Python有一个伟大的社区,但它有点分散,因为它是一个通用的语言。然而,Python中数据科学正在迅速声称在Python世界中更占优势的地位:预期正在成长,更具创新性的科学数据的应用程序将在这里看到自己的起源。

计算机视觉

  • CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库
  • OpenCV—它提供C++, C, Python, Java 以及
    MATLAB接口,并支持Windows, Linux, Android and Mac OS操作系统。

优雅

Python 明显胜出。

当然这是主观的。但是在不同编程语言的对比之下,Python
大大减少了括号的使用:

if x > y: 
   z = 5
   w = 8

vs.

if (x > y)
{ 
   z = 5
   w = 8
}

Python 很时尚!

R和Python:通用量

在网络上,你可以找到许多比较R和Python使用和普及的数量。虽然这些数字往往告诉我们这两种语言是在计算机科学的整个生态系统发展的很好,这很难横向对比。造成这种情况的主要原因是,你只会在数据科学环境发现R;而另一方面,Python作为一种通用语言被广泛应用于许多领域,如网络开发。这往往偏向有利于Python中的排名结果,而结果是有些负面影响。
澳门新葡萄京官网首页 1

通用机器学习

  • MLPack
  • DLib
  • ecogg
  • shark

学习曲线

R 在这一场赢得巨大胜利。

作为一名教育工作者,Matloff 对这一点尤其感兴趣。

若使用 Python 做数据科学,必须学习很多不在基础 Python 中的材料,例如
NumPy、Pandas 和 matplotlib。

相比之下,矩阵类型和基本图形已经内置于基础
R,新手可以在几分钟内完成简单的数据分析。

即使对于精通系统的人来说,Python 库也很难配置,而大多数 R
软件包都是开箱即用的。

什么时候,如何使用R?

R主要用于当数据分析任务需要各个服务器独立计算或分析。探索性的工作非常棒,对于几乎任何类型的数据分析得心应手,因为大量的包和容易使用的测试,经常为你提供必要的工具,快速启动和运行.
R甚至可以是大数据解决方案的一部分。

当开始使用R,一个良好的第一步骤是安装神奇的 IDE
RStudio。一旦做到这一点,我们建议您看看下面的流行的包:

dplyr,plyr和data.table轻松地操纵包,  
stringr操作字符串,
zoo处理定期和不定期的时间序列,
ggvis,lattice,和GGPLOT2可视化数据,
caret 机器学习

Closure

可用的数据科学库

R 轻微取胜。

CRAN 拥有超过 14,000
个包。PyPI 的包则多于 183,000
个,不过在数据科学方面看起来似乎比较薄弱。

Matloff 举了一个例子:他曾经需要代码来快速计算给定数据点的最近相邻,在
CRAN 中能够立即找到不止一个包来执行此操作。而在 PyPi
中粗略搜索后空手而归。

他还指出在 PyPI 中进行以下搜索没有任何结果:EM
算法;对数线性模型;泊松回归;工具变量;空间数据;整体错误率等等。

“这并不是说这些东西不存在 Python 库。只是在 PyPI 中不容易找到它们,而在
CRAN 中很容易找到。”

事实上,R 具有规范的封装结构是一个很大的优势。
安装新软件包时,确切地知道会出现什么。 类似地,R 的泛型函数对于 R
来说也是一大的优势。当使用新的包时,人们知道自己可以使用
print()、plot()、summary() 等,所有这些都构成了包的“通用语言”。

什么时候,如何使用Python?

当你的数据分析任务需要整合Web应用程序,或者如果统计代码需要纳入生产数据库时,可以使用Python。作为一个完全成熟的编程语言,它是实现生产使用算法一个伟大的工具。

而过去Python包进行数据分析不成熟是一个问题,多年来这已经显著改善。请确保安装NumPy
/SciPy的(科学计算)和pandas
(数据处理),以使Python可用于数据分析。也看看matplotlib制作图形和scikit-learn用于机器学习。

不像R,Python有没有明确的“最优”IDE。我们建议你使用Spyder,IPython
Notebook 和Rodeo ,看看哪一个最适合您的需求。

通用机器学习

  • Closure
    Toolbox—Clojure语言库与工具的分类目录

机器学习

Python 略微胜出。

R vs. Python 辩论主要是统计与 CS 的争论,由于神经网络的大多数研究来自
CS,因此 NN(Neural Network,神经网络) 的可用软件主要是 Python。
RStudio 在开发 Keras 实现方面做了一些出色的工作,但目前为止,R
在这个领域受到限制。

另一方面,随机森林研究(random forest
research)主要由统计界进行,在这个领域 R 更具优越性。R
还具有优异的梯度增强封装。

这里 Python 略胜一筹,因为对很多人来说,机器学习就意味着神经网络。

R和Python:数据科学的数量

如果你看一下最近的民意调查,重点用于数据分析的编程语言,R往往是明显的赢家。如果您特别注重Python和R数据分析领域,会得到一个类似的模式。
澳门新葡萄京官网首页 2
尽管上述数字,有越来越多的人从R转向Python。此外,有越来越多人同时使用二者。这也正符合我们推荐给学生。

如果你打算开始数据科学的职业生涯,最好熟练两种语言。招聘趋势显示这两个技能的需求不断增加,工资又远高于平均水平。

Go

统计正确性

R 赢得大胜。

Matloff 表示 “R 是由统计学家为统计学家编写的”。他发现“那些主要使用
Python 进行机器学习的人往往对其中的统计问题缺乏了解,甚至不屑一顾”。

R:优点和缺点

Pro :一张图片胜过比千言万语

可视数据通常比单独的原始数据更易于理解。
R和可视化是一个完美的搭配。一些必看的可视化包是GGPLOT2,ggvis,googleVis和rCharts。

Pro:R生态系统

R有丰富的生态系统,其中包括前沿的包和活跃的社区。包可CRAN,Bioconductor和Github上得到。您可以在Rdocumentation搜索所有的包。

Pro:数据科学中用得上R

R由统计学家为统计专家开发。他们可以通过R代码和包传达的思想和观念,你不一定需要计算机科学的背景。此外,学术界外的人们越来越多的使用R。

Pro/CON:R很慢

r的开发是为了让统计人员的生活更轻松,而不是你的电脑的使用寿命。虽然R可能运行缓慢是由于写得不好的代码,有多个包来提高的r性能:PQR,renjin
和FastR,Riposte 等等。

CON:R有一个陡峭的学习曲线

R学习曲线很复杂,特别是如果你是来自统计分析的GUI。如果你不熟悉它,即便寻找包可能会非常耗时。

自然语言处理

  • go-porterstemmer—一个Porter词干提取算法的原生Go语言净室实现
  • paicehusk—Paice/Husk词干提取算法的Go语言实现
  • snowball—Go语言版的Snowball词干提取器

并行计算

双方打成平手。

R 和 Python 的基础版本都不能很好地支持多核计算。 Python 中的线程很适合
I/O,但由于臭名昭著的 Global Interpreter
Lock,使用它们进行多核计算是不可能的。 Python 的多处理软件包和 R
的“并行”软件包都不是好的解决方法。 支持集群计算的外部库在两种语言中都
OK。

目前,Python 具有更好的 GPU 接口。

Python:优点和缺点

Pro:IPython Notebook

IPython Notebook更容易处理Python和数据。您可以轻松地与同事共享notebooks
,无需他们安装任何东西。这大大减少了组织代码,输出和注释文件的开销。这将让您花更多的时间做实际工作。

Pro:通用语言

Python是容易和直观的通用语言。这给了它一个相对平坦的学习曲线,它可以增加你写一个程序的速度。总之,你需要更少的时间写代码!

此外,Python测试框架是一个内置的地要求的测试框架,鼓励良好的测试覆盖率。这样可以保证你的代码是可重复使用的和可靠的。

Pro:一个多用途的语言

Python将不同背景的人聚集在一起。作为一个通用的,容易理解的语言,统计学家可以很容易地学会,你可以建立一个单一的工具集成您的工作流程的每一个部分。

Pro/ CON:可视化

选择数据分析软件时,可视化是一个重要的标准。虽然Python有一些不错的可视化库,如Seaborn,Bokeh
和Pygal,有太多可供选择的方案。此外,相比于R,可视化通常是比较繁琐,结果并不总是那么顺眼。

CON:Python是挑战者

Python是R的挑战者.它不提供数百必不可少的R包的替代。虽然它正在追赶,目前还不清楚这是否会让人放弃了R?

通用机器学习

  • 澳门新葡萄京官网首页,Go Learn— Go语言机器学习库
  • go-pr —Go语言机器学习包.
  • bayesian—Go语言朴素贝叶斯分类库。
  • go-galib—Go语言遗传算法库。

C/C++ 接口和性能增强

R 略胜一筹。

虽然有 SWIG 等工具可以将 Python 连接到 C/C++,但目前没有像 R 的 Rcpp
那样强大的功能。Pybind11 软件包正在开发中。

此外,R 的新 ALTREP 理念在提高性能和可用性方面具有巨大潜力。

另一方面,Python 的 Cython 和 PyPy 变体在某些情况下可以预先消除对显式
C/C++ 接口的需求。确实有人会说 Cython 是一个 C/C++ 接口。

谁是胜利者?

由你决定!作为一名数据科学家,选择最符合需求的语言是你的工作。有些问题可以帮助你:

你想解决什么问题?
学习语言的净成本是什么?
在你的领域中常用的工具是什么?
其他可用的工具是什么和这些相关工具日常中是如何使用的?

希望对你是有帮助的!

数据分析/数据可视化

  • go-graph—Go语言图形库。
  • SVGo—Go语言的SVG生成库。

面向对象,元编程

依然是 R 略胜一筹。

举例来说,尽管函数在两种语言中都可作为对象,但 R 比 Python
更进一步。Matloff 说每当自己使用 Python
工作时,都会因为无法直接将函数输入到终端或编辑它而感到恼火,但在 R
上就可以这样做。

Python 只有一个 OOP 范例。在 R 中,可以选择几种(S3、S4、R6
等),不过也有些人可能会争论这是否是一件好事。

R 有神奇的元编程特性(产生代码的代码),但是大多数 CS 人都没有意识到它。

Java

语言统一性

R 损失巨大。

Python 目前正在从 2.7 版过渡到 3.x
版,这会导致一些中断,但不至于太复杂。

相比之下,R 正迅速转变为两种相互无法理解的语言,即普通的 R 和
Tidyverse。 作为一名经验丰富的 R 程序员,Matloff 表示自己无法阅读 Tidy
代码,因为它调用了许多他不知道的 Tidyverse
函数。也有网友评论说“人们可以在对 R 没什么了解的情况下,在 Tidyverse
中进行编码”。

自然语言处理

  • CoreNLP—斯坦福大学的CoreNLP提供一系列的自然语言处理工具,输入原始英语文本,可以给出单词的基本形式(下面Stanford开头的几个工具都包含其中)。
  • Stanford
    Parser—一个自然语言解析器。
  • Stanford POS
    Tagger —一个词性分类器。
  • Stanford Name Entity
    Recognizer—Java实现的名称识别器
  • Stanford Word
    Segmenter—分词器,很多NLP工作中都要用到的标准预处理步骤。
  • Tregex, Tsurgeon and
    Semgrex —用来在树状数据结构中进行模式匹配,基于树关系以及节点匹配的正则表达式(名字是“tree
    regular expressions”的缩写)。
  • Stanford
    Phrasal:最新的基于统计短语的机器翻译系统,java编写
  • Stanford Tokens
    Regex—用以定义文本模式的框架。
  • Stanford Temporal
    Tagger—SUTime是一个识别并标准化时间表达式的库。
  • Stanford
    SPIED—在种子集上使用模式,以迭代方式从无标签文本中学习字符实体
  • Stanford Topic Modeling
    Toolbox —为社会科学家及其他希望分析数据集的人员提供的主题建模工具。
  • Twitter Text
    Java—Java实现的推特文本处理库
  • MALLET -—基于Java的统计自然语言处理、文档分类、聚类、主题建模、信息提取以及其他机器学习文本应用包。
  • OpenNLP—处理自然语言文本的机器学习工具包。
  • LingPipe —使用计算机语言学处理文本的工具包。

关联的数据结构

Python 获胜。

经典计算机科学数据结构,例如二叉树,很容易在 Python 中实现。它不是基础 R
的一部分,但可以以各种方式完成,例如数据结构包,它包含了使用广泛的 Boost
C++ 库。

通用机器学习

  • MLlib in Apache
    Spark—Spark中的分布式机器学习程序库
  • Mahout —分布式的机器学习库
  • Stanford
    Classifier —斯坦福大学的分类器
  • Weka—Weka是数据挖掘方面的机器学习算法集。
  • ORYX—提供一个简单的大规模实时机器学习/预测分析基础架构。

在线帮助

R 大获胜。

首先,R 的基本 help() 函数比 Python 的信息量大得多。它很好地补充了
example()。最重要的是,在 R 包中能够编写 vignette(通过函数 vignette()
返回,一般是 PDF 格式的实用介绍性文章)使 R
在这方面成为了一个不折不扣的赢家。

数据分析/数据可视化

  • Hadoop—大数据分析平台
  • Spark—快速通用的大规模数据处理引擎。
  • Impala —为Hadoop实现实时查询

R/Python 互操作性

RStudio 开发的 reticulate 包能够在 R 上运行 Python,可以作为 Python
和 R 之间的桥梁,适用于纯计算。 但它并没有解决 Python
中出现的棘手问题,例如虚拟环境等。

目前,Matloff 不建议编写混合的 Python/R 代码。

分析了这么多,最后当然还是要根据实际需求来进行选择,毕竟语言之间没有孰优孰劣。

原文:

 

Javascript

自然语言处理

  • Twitter-text-js —JavaScript实现的推特文本处理库
  • NLP.js —javascript及coffeescript编写的NLP工具
  • natural—Node下的通用NLP工具
  • Knwl.js—JS编写的自然语言处理器

 

数据分析/数据可视化

  • D3.js
  • High Charts
  • NVD3.js
  • dc.js
  • chartjs
  • dimple
  • amCharts

通用机器学习

  • Convnet.js—训练深度学习模型的JavaScript库。
  • Clustering.js—用JavaScript实现的聚类算法,供Node.js及浏览器使用。
  • Decision
    Trees—Node.js实现的决策树,使用ID3算法。
  • Node-fann —Node.js下的快速人工神经网络库。
  • Kmeans.js—k-means算法的简单Javascript实现,供Node.js及浏览器使用。
  • LDA.js —供Node.js用的LDA主题建模工具。
  • Learning.js—逻辑回归/c4.5决策树的JavaScript实现
  • Machine
    Learning—Node.js的机器学习库。
  • Node-SVM—Node.js的支持向量机
  • Brain —JavaScript实现的神经网络
  • Bayesian-Bandit —贝叶斯强盗算法的实现,供Node.js及浏览器使用。

Julia

通用机器学习

  • 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工具
  • GLM —Julia写的广义线性模型包
  • Online Learning
  • GLMNet —GMLNet的Julia包装版,适合套索/弹性网模型。
  • Clustering—数据聚类的基本函数:k-means,
    dp-means等。
  • SVM—Julia下的支持向量机。
  • Kernal
    Density—Julia下的核密度估计器
  • Dimensionality
    Reduction—降维算法
  • NMF —Julia下的非负矩阵分解包
  • ANN—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中的假设检验包
  • Gladfly —Julia编写的灵巧的统计绘图系统。
  • Stats—Julia编写的统计测试函数包
  • RDataSets —读取R语言中众多可用的数据集的Julia函数包。
  • DataFrames —处理表格数据的Julia库。
  • Distributions—概率分布及相关函数的Julia包。
  • Data
    Arrays —元素值可以为空的数据结构。
  • Time
    Series—Julia的时间序列数据工具包。
  • Sampling—Julia的基本采样算法包

杂项/演示文稿

  • DSP —数字信号处理
  • JuliaCon
    Presentations—Julia大会上的演示文稿
  • SignalProcessing—Julia的信号处理工具
  • Images—Julia的图片库

Lua

通用机器学习

  • Torch7
    • cephes —Cephes数学函数库,包装成Torch可用形式。提供并包装了超过180个特殊的数学函数,由Stephen L.
      Moshier开发,是SciPy的核心,应用于很多场合。
    • graph —供Torch使用的图形包。
    • randomkit—从Numpy提取的随机数生成包,包装成Torch可用形式。
    • signal —Torch-7可用的信号处理工具包,可进行FFT,
      DCT, Hilbert, cepstrums, stft等变换。
    • nn —Torch可用的神经网络包。
    • nngraph —为nn库提供图形计算能力。
    • nnx—一个不稳定实验性的包,扩展Torch内置的nn库。
    • optim—Torch可用的优化算法库,包括
      SGD, Adagrad, 共轭梯度算法, LBFGS, RProp等算法。
    • unsup—Torch下的非监督学习包。提供的模块与nn(LinearPsd,
      ConvPsd, AutoEncoder, …)及独立算法 (k-means, PCA)等兼容。
    • manifold—操作流形的包。
    • svm—Torch的支持向量机库。
    • lbfgs—将liblbfgs包装为FFI接口。
    • vowpalwabbit —老版的vowpalwabbit对torch的接口。
    • OpenGM—OpenGM是C++编写的图形建模及推断库,该binding可以用Lua以简单的方式描述图形,然后用OpenGM优化。
    • sphagetti —MichaelMathieu为torch7编写的稀疏线性模块。
    • LuaSHKit —将局部敏感哈希库SHKit包装成lua可用形式。
    • kernel
      smoothing —KNN、核权平均以及局部线性回归平滑器
    • cutorch—torch的CUDA后端实现
    • cunn —torch的CUDA神经网络实现。
    • imgraph—torch的图像/图形库,提供从图像创建图形、分割、建立树、又转化回图像的例程
    • videograph—torch的视频/图形库,提供从视频创建图形、分割、建立树、又转化回视频的例程
    • saliency —积分图像的代码和工具,用来从快速积分直方图中寻找兴趣点。
    • stitch —使用hugin拼合图像并将其生成视频序列。
    • sfm—运动场景束调整/结构包
    • fex —torch的特征提取包,提供SIFT和dSIFT模块。
    • OverFeat—当前最高水准的通用密度特征提取器。
  • Numeric Lua
  • Lunatic Python
  • SciLua
  • Lua – Numerical Algorithms
  • Lunum

演示及脚本

  • Core torch7 demos
    repository.核心torch7演示程序库

    • 线性回归、逻辑回归
    • 人脸检测(训练和检测是独立的演示)
    • 基于mst的断词器
    • train-a-digit-classifier
    • train-autoencoder
    • optical flow demo
    • train-on-housenumbers
    • train-on-cifar
    • tracking with deep nets
    • kinect demo
    • 滤波可视化
    • saliency-networks
  • Training a Convnet for the Galaxy-Zoo Kaggle challenge(CUDA
    demo)
  • Music
    Tagging—torch7下的音乐标签脚本
  • torch-datasets 读取几个流行的数据集的脚本,包括:
    • BSR 500
    • CIFAR-10
    • COIL
    • Street View House Numbers
    • MNIST
    • NORB
  • Atari2600 —在Arcade Learning
    Environment模拟器中用静态帧生成数据集的脚本。

Matlab

计算机视觉

  • Contourlets —实现轮廓波变换及其使用函数的MATLAB源代码
  • Shearlets—剪切波变换的MATLAB源码
  • Curvelets—Curvelet变换的MATLAB源码(Curvelet变换是对小波变换向更高维的推广,用来在不同尺度角度表示图像。)
  • Bandlets—Bandlets变换的MATLAB源码

自然语言处理

  • NLP —一个Matlab的NLP库

通用机器学习

  • Training a deep autoencoder or a classifier on MNIST
    digits—在MNIST字符数据集上训练一个深度的autoencoder或分类器[深度学习]。
  • t-Distributed Stochastic Neighbor
    Embedding —获奖的降维技术,特别适合于高维数据集的可视化
  • Spider—Matlab机器学习的完整面向对象环境。
  • LibSVM —支持向量机程序库
  • LibLinear —大型线性分类程序库
  • Machine Learning
    Module —M.
    A .Girolami教授的机器学习课程,包括PDF,讲义及代码。
  • Caffe—考虑了代码清洁、可读性及速度的深度学习框架
  • Pattern Recognition
    Toolbox —Matlab中的模式识别工具包,完全面向对象

数据分析/数据可视化

  • matlab_gbl—处理图像的Matlab包
  • gamic—图像算法纯Matlab高效实现,对MatlabBGL的mex函数是个补充。

.NET

计算机视觉

  • OpenCVDotNet —包装器,使.NET程序能使用OpenCV代码
  • Emgu
    CV—跨平台的包装器,能在Windows,
    Linus, Mac OS X, iOS, 和Android上编译。

自然语言处理

  • Stanford.NLP for
    .NET —斯坦福大学NLP包在.NET上的完全移植,还可作为NuGet包进行预编译。

通用机器学习

  • Accord.MachineLearning —支持向量机、决策树、朴素贝叶斯模型、K-means、高斯混合模型和机器学习应用的通用算法,例如:随机抽样一致性算法、交叉验证、网格搜索。这个包是Accord.NET框架的一部分。
  • Vulpes—F#语言实现的Deep
    belief和深度学习包,它在Alea.cuBase下利用CUDA GPU来执行。
  • Encog —先进的神经网络和机器学习框架,包括用来创建多种网络的类,也支持神经网络需要的数据规则化及处理的类。它的训练采用多线程弹性传播。它也能使用GPU加快处理时间。提供了图形化界面来帮助建模和训练神经网络。
  • Neural Network
    Designer —这是一个数据库管理系统和神经网络设计器。设计器用WPF开发,也是一个UI,你可以设计你的神经网络、查询网络、创建并配置聊天机器人,它能问问题,并从你的反馈中学习。这些机器人甚至可以从网络搜集信息用来输出,或是用来学习。

数据分析/数据可视化

  • numl —numl这个机器学习库,目标就是简化预测和聚类的标准建模技术。
  • Math.NET
    Numerics—Math.NET项目的数值计算基础,着眼提供科学、工程以及日常数值计算的方法和算法。支持
    Windows, Linux 和 Mac上的 .Net 4.0, .Net 3.5 和 Mono ,Silverlight
    5, WindowsPhone/SL 8, WindowsPhone 8.1 以及装有 PCL Portable
    Profiles 47 及 344的Windows 8, 装有 Xamarin的Android/iOS 。
  • Sho —Sho是数据分析和科学计算的交互式环境,可以让你将脚本(IronPython语言)和编译的代码(.NET)无缝连接,以快速灵活的建立原型。这个环境包括强大高效的库,如线性代数、数据可视化,可供任何.NET语言使用,还为快速开发提供了功能丰富的交互式shell。

Python

计算机视觉

  • SimpleCV—开源的计算机视觉框架,可以访问如OpenCV等高性能计算机视觉库。使用Python编写,可以在Mac、Windows以及Ubuntu上运行。

自然语言处理

  • NLTK —一个领先的平台,用来编写处理人类语言数据的Python程序
  • Pattern—Python可用的web挖掘模块,包括自然语言处理、机器学习等工具。
  • TextBlob—为普通自然语言处理任务提供一致的API,以NLTK和Pattern为基础,并和两者都能很好兼容。
  • jieba—中文断词工具。
  • SnowNLP —中文文本处理库。
  • loso—另一个中文断词库。
  • genius —基于条件随机域的中文断词库。
  • nut —自然语言理解工具包。

通用机器学习

  • Bayesian Methods for
    Hackers —Python语言概率规划的电子书
  • MLlib in Apache
    Spark—Spark下的分布式机器学习库。
  • scikit-learn—基于SciPy的机器学习模块
  • graphlab-create —包含多种机器学习模块的库(回归,聚类,推荐系统,图分析等),基于可以磁盘存储的DataFrame。
  • BigML—连接外部服务器的库。
  • pattern—Python的web挖掘模块
  • NuPIC—Numenta公司的智能计算平台。
  • Pylearn2—基于Theano的机器学习库。
  • hebel —Python编写的使用GPU加速的深度学习库。
  • gensim—主题建模工具。
  • PyBrain—另一个机器学习库。
  • Crab —可扩展的、快速推荐引擎。
  • python-recsys —Python实现的推荐系统。
  • thinking
    bayes—关于贝叶斯分析的书籍
  • Restricted Boltzmann
    Machines —Python实现的受限波尔兹曼机。[深度学习]。
  • Bolt —在线学习工具箱。
  • CoverTree —cover
    tree的Python实现,scipy.spatial.kdtree便捷的替代。
  • nilearn—Python实现的神经影像学机器学习库。
  • Shogun—机器学习工具箱。
  • Pyevolve —遗传算法框架。
  • Caffe —考虑了代码清洁、可读性及速度的深度学习框架
  • breze—深度及递归神经网络的程序库,基于Theano。

数据分析/数据可视化

  • SciPy —基于Python的数学、科学、工程开源软件生态系统。
  • NumPy—Python科学计算基础包。
  • Numba —Python的低级虚拟机JIT编译器,Cython
    and NumPy的开发者编写,供科学计算使用
  • NetworkX —为复杂网络使用的高效软件。
  • Pandas—这个库提供了高性能、易用的数据结构及数据分析工具。
  • Open
    Mining—Python中的商业智能工具(Pandas
    web接口)。
  • PyMC —MCMC采样工具包。
  • zipline—Python的算法交易库。
  • PyDy—全名Python Dynamics,协助基于NumPy, SciPy,
    IPython以及 matplotlib的动态建模工作流。
  • SymPy —符号数学Python库。
  • statsmodels—Python的统计建模及计量经济学库。
  • astropy —Python天文学程序库,社区协作编写
  • matplotlib —Python的2D绘图库。
  • bokeh—Python的交互式Web绘图库。
  • plotly —Python and
    matplotlib的协作web绘图库。
  • vincent—将Python数据结构转换为Vega可视化语法。
  • d3py—Python的绘图库,基于D3.js。
  • ggplot —和R语言里的ggplot2提供同样的API。
  • Kartograph.py—Python中渲染SVG图的库,效果漂亮。
  • pygal—Python下的SVG图表生成器。
  • pycascading

杂项脚本/iPython笔记/代码库

  • pattern_classification
  • thinking stats 2
  • hyperopt
  • numpic
  • 2012-paper-diginorm
  • ipython-notebooks
  • decision-weights
  • Sarah Palin
    LDA —Sarah
    Palin关于主题建模的电邮。
  • Diffusion
    Segmentation —基于扩散方法的图像分割算法集合。
  • Scipy
    Tutorials —SciPy教程,已过时,请查看scipy-lecture-notes
  • Crab—Python的推荐引擎库。
  • BayesPy—Python中的贝叶斯推断工具。
  • scikit-learn
    tutorials—scikit-learn学习笔记系列
  • sentiment-analyzer —推特情绪分析器
  • group-lasso—坐标下降算法实验,应用于(稀疏)群套索模型。
  • mne-python-notebooks—使用
    mne-python进行EEG/MEG数据处理的IPython笔记
  • pandas
    cookbook—使用Python
    pandas库的方法书。
  • climin—机器学习的优化程序库,用Python实现了梯度下降、LBFGS、rmsprop、adadelta
    等算法。

Kaggle竞赛源代码

  • wiki
    challange —Kaggle上一个维基预测挑战赛
    Dell Zhang解法的实现。
  • kaggle
    insults—Kaggle上”从社交媒体评论中检测辱骂“竞赛提交的代码
  • kaggle_acquire-valued-shoppers-challenge—Kaggle预测回头客挑战赛的代码
  • kaggle-cifar —Kaggle上CIFAR-10
    竞赛的代码,使用cuda-convnet
  • kaggle-blackbox —Kaggle上blackbox赛代码,关于深度学习。
  • kaggle-accelerometer —Kaggle上加速度计数据识别用户竞赛的代码
  • kaggle-advertised-salaries —Kaggle上用广告预测工资竞赛的代码
  • kaggle
    amazon —Kaggle上给定员工角色预测其访问需求竞赛的代码
  • kaggle-bestbuy_big—Kaggle上根据bestbuy用户查询预测点击商品竞赛的代码(大数据版)
  • kaggle-bestbuy_small—Kaggle上根据bestbuy用户查询预测点击商品竞赛的代码(小数据版)
  • Kaggle Dogs vs.
    Cats —Kaggle上从图片中识别猫和狗竞赛的代码
  • Kaggle Galaxy
    Challenge —Kaggle上遥远星系形态分类竞赛的优胜代码
  • Kaggle
    Gender —Kaggle竞赛:从笔迹区分性别
  • Kaggle
    Merck—Kaggle上预测药物分子活性竞赛的代码(默克制药赞助)
  • Kaggle
    Stackoverflow—Kaggle上
    预测Stack Overflow网站问题是否会被关闭竞赛的代码
  • wine-quality —预测红酒质量。

Ruby

自然语言处理

  • Treat—文本检索与注释工具包,Ruby上我见过的最全面的工具包。
  • Ruby
    Linguistics—这个框架可以用任何语言为Ruby对象构建语言学工具。包括一个语言无关的通用前端,一个将语言代码映射到语言名的模块,和一个含有很有英文语言工具的模块。
  • Stemmer—使得Ruby可用
    libstemmer_c中的接口。
  • Ruby
    Wordnet —WordNet的Ruby接口库。
  • Raspel —aspell绑定到Ruby的接口
  • UEA Stemmer—UEALite
    Stemmer的Ruby移植版,供搜索和检索用的保守的词干分析器
  • Twitter-text-rb—该程序库可以将推特中的用户名、列表和话题标签自动连接并提取出来。

通用机器学习

  • Ruby Machine
    Learning —Ruby实现的一些机器学习算法。
  • Machine Learning
    Ruby
  • jRuby
    Mahout —精华!在JRuby世界中释放了Apache
    Mahout的威力。
  • CardMagic-Classifier—可用贝叶斯及其他分类法的通用分类器模块。
  • Neural Networks and Deep
    Learning—《神经网络和深度学习》一书的示例代码。

数据分析/数据可视化

  • rsruby – Ruby – R bridge
  • data-visualization-ruby—关于数据可视化的Ruby
    Manor演示的源代码和支持内容
  • ruby-plot —将gnuplot包装为Ruby形式,特别适合将ROC曲线转化为svg文件。
  • plot-rb—基于Vega和D3的ruby绘图库
  • scruffy —Ruby下出色的图形工具包
  • SciRuby
  • Glean—数据管理工具
  • Bioruby
  • Arel

Misc 杂项

  • Big Data For
    Chimps—大数据处理严肃而有趣的指南书

R

通用机器学习

  • Clever Algorithms For Machine
    Learning
  • Machine Learning For Hackers
  • Machine Learning Task View on
    CRAN—R语言机器学习包列表,按算法类型分组。
  • caret—R语言150个机器学习算法的统一接口
  • SuperLearner and subsemble—该包集合了多种机器学习算法
  • Introduction to Statistical
    Learning

数据分析/数据可视化

  • Learning Statistics Using R
  • ggplot2—基于图形语法的数据可视化包。

Scala

自然语言处理

  • ScalaNLP—机器学习和数值计算库的套装
  • Breeze —Scala用的数值处理库
  • Chalk—自然语言处理库。
  • FACTORIE—可部署的概率建模工具包,用Scala实现的软件库。为用户提供简洁的语言来创建关系因素图,评估参数并进行推断。

数据分析/数据可视化

  • MLlib in Apache
    Spark—Spark下的分布式机器学习库
  • Scalding —CAscading的Scala接口
  • Summing Bird—用Scalding 和
    Storm进行Streaming MapReduce
  • Algebird —Scala的抽象代数工具
  • xerial —Scala的数据管理工具
  • simmer —化简你的数据,进行代数聚合的unix过滤器
  • PredictionIO —供软件开发者和数据工程师用的机器学习服务器。
  • BIDMat—支持大规模探索性数据分析的CPU和GPU加速矩阵库。

通用机器学习

  • Conjecture—Scalding下可扩展的机器学习框架
  • brushfire—scalding下的决策树工具。
  • ganitha —基于scalding的机器学习程序库
  • adam—使用Apache Avro,
    Apache Spark 和 Parquet的基因组处理引擎,有专用的文件格式,Apache
    2软件许可。
  • bioscala —Scala语言可用的生物信息学程序库
  • BIDMach—机器学习CPU和GPU加速库。

伯乐在线已在 GitHub
上发起「机器学习资源大全中文版」的整理。欢迎扩散、欢迎加入。