20 Open Source Projects of the 2016(Python)

去年 KDnuggets 评选了前 20 大机器学习开源项目​(Python版),今年进行重新评选后,出现了一些新的面孔,有13个新开源项目入选了这个名单。

作者:雷锋网 小东

如今,开源已经成为创新与技术发展的核心。在本文中,雷锋网(公众号:雷锋网)将介绍 2016 Python 前20大机器学习开源项目。

去年 KDnuggets 评选了前 20 大机器学习开源项目(Python版),今年的评选结果与去年相比,名单中出现了一些新的面孔,有13个新开源项目入围了这个名单。作者 Prasad Pore 将具体介绍这些开源项目,雷锋网编译,未经许可不得转载。

第一名:Scikit-learn

Scikit-learn可以说是一款简单而高效的数据挖掘与分析工具,大家可以免费下载安装,使用它处理各种数据,使用时需引入 NumPy, SciPy, and matplotlib这些第三方开源模块。

提交: 21486 贡献: 736 Github URL: Scikit-learn

第二名:Tensorflow

Tensorflow是由谷歌大脑与谷歌人工智能实验室的科研人员研发而成的,这个系统用于机器学习的研究,可以简单、快速的实现研究人员的想法。前段时间恰逢Tensorflow一周年,雷锋网也做过报道和回顾。

提交: 10466 贡献: 493 Github URL: Tensorflow

第三名:Theano

Theano可以对那些高维数组数学表达式进行定义、优化与评估。

提交: 24108 贡献: 263 Github URL: Theano

第四名:Caffe

Caffe是一款具有表达、加速、模块化思想的深度学习框架,由 Berkeley Vision and Learning Center (BVLC)于社区志愿者共同开发维护。

提交: 3801 贡献: 215 Github URL: Caffe

第五名:Gensim

Gensim是一个免费的Python库,这个库可以实现文本的情感倾向判断,相似文本检索等功能。

提交: 2702 贡献: 145 Github URL: Gensim

第六名:Pylearn2

Pylearn2 也是一个机器学习的开源库,但它是一个基于Theano的库,所以它有一些Theano的特点,你可以使用数学表达式来写Pylearn2插件,Theano会自动对你写的表达式进行优化,按照你的选择(用CPU或GPU)对这些表达式进行编译。

提交: 7100 贡献: 115 Github URL: Pylearn2

第七名:Statsmodels

Statsmodels是一款Python开源工具,可以实现数据探究、统计模型评价、性能测试等功能,扩展性能良好,可对各种类型的数据进行各种处理,例如描述统计、统计测试、绘图、结果统计等等。

提交: 8664 贡献: 108 Github URL: Statsmodels

第八名:Shogun

Shogun是一款机器学习工具,其包含了各种机器学习方法。它可以简单的实现多种数据表示、多种算法的无缝融合。

提交: 15172 贡献: 105 Github URL: Shogun

第九名:Chainer

Chainer是一个基于Python的开源深度学习框架,它可以让你以一种灵活、简单、快速的方式实现多种深度学习模型,包括RNN与各种自编码。

提交: 6298 贡献: 84 Github URL: Chainer

第十名:NuPIC

NuPIC是一个基于Hierarchical Temporal Memory理论的开源项目,目前Hierarchical Temporal Memory这个理论中的部分功能已经实现,并进行了测试与应用,其它部分正在完善中。

提交: 6088 贡献: 76 Github URL: NuPIC

第十一名:Neon

Neon是一款深度学习第三方库,在进行高性能计算时它具有简单易用的特点。

提交: 875 贡献: 47 Github URL: Neon

第十二名:NiLearn

NiLearn主要用于处理医学图像数据,具有简单、快速的特点。它通过调用scikit-learn进行多元统计分析(例如:预测模型、分类、解码、关联分析)。

提交: 5254 贡献: 46 Github URL: NiLearn

第十三名:Orange3

Orange3是一款机器学习与数据可视化开源工具,可以对数据进行各种交互分析。

提交: 6356 贡献: 40 Github URL: Orange3

第十四名:Pymc

Pymc是一个贝叶斯统计模型(包括马尔科夫链)库,具有灵活、扩展性能好的特点。

提交: 2701 贡献: 37 Github URL: Pymc

第十五名:PyBrain:

PyBrain是一个机器学习库,它的目标是让算法的实现变的简单、灵活、高效。同时使得在特定环境下对算法的测试与比较也变的简单、灵活、高效。

提交: 984 贡献: 31 Github URL: PyBrain

第十六名:Fuel

Fuel主要用于算法与输入数据之间的衔接。它将被Blocks and Pylearn2这两个Python库使用。

提交: 1053 贡献: 29 Github URL: Fuel

第十七名: PyMVPA

PyMVPA 适用于大规模的数据集,具有扩展性能好优点,提供多种算法(分类、回归、特征选择、数据导入、数据导出等)接口。

提交: 9258 贡献: 26 Github URL: PyMVPA

第十八名:Annoy

Annoy是一个Python可调用的C++库,主要用来对给定数据进行搜索。它可以生成大量的基于文档的可读数据结构,这种数据结构与内存相对应,从而使数据被共享。

提交: 365 贡献: 24 Github URL: Annoy

第十九名:Deap

Deap是一款新的计算框架,它使得算法实现与数据结构变得简单明了。它采用的是并行处理机制。

提交: 1854 贡献: 21 Github URL: Deap

第二十名:Pattern

Pattern是一款web信息挖掘工具,它集成了各种工具。这些工具可以用来进行数据挖掘、自然语言处理、机器学习、网络分析。

提交: 943 贡献: 20 Github URL: Pattern

如下图所示,PyMVPA的社区贡献率最高,而排名第一的Scikit-learn社区贡献率却很低,究其原因是PyMVPA是还是一个比较新的开源项目,还有一些地方需要完善、修复。而Scikit-learn则是一个相对来说比较成熟的项目,需要修改、完善的地方比较少。

当我们对2015与2016的结果进行对比(下图),我们发现Pattern, PyBrain and Pylearn2这三个项目的贡献人数与提交数均没有变化。贡献的人增加了,提交的次数也才跟着增加,这就是开源社区的神奇所在。这些新增的贡献者与其提交内容导致了新的思想、新的软件的产生。

基于2016年20大机器学习开源项目的贡献人数与提交数,以上是雷锋网整理的简单分析。不知道到明年的评选上,又有怎样的开源平台会登上这个榜单呢?

via Top 20 Python Machine Learning Open Source Project

五个鲜为人知,但又不可不知的机器学习开源项目
本文作者:恒亮 2017-02-09 14:14
导语:本文将介绍的这五个小众项目来自不同的生态系统和编程语言,并且版本更新活跃,具有一定的学习价值。
五个鲜为人知,但又不可不知的机器学习开源项目

借着人工智能的热潮,各种机器学习项目也迎来了一个爆发期。其中有一些因为背后的巨头支持或者稳定可靠的性能而广为人知,例如Tensorflow、Caffe和Theano等。但实际上,有为数更多的项目却并不为人所知。在这些相对小众的项目中,是否隐藏着一些版本迭代积极,且具有一定参考价值的项目?答案显然是肯定的。

本文将介绍的这五个小众项目来自不同的生态系统和编程语言,并且版本更新活跃,具有一定的参考价值。或许你会觉得了解这些小众的项目并没有太多实际意义,但本文的原作者Matthew Mayo,一位资深的数据科学家和无监督学习领域的大牛认为,仔细学习这些项目的实现细节和编码方式,将帮助开发者对他们自己的项目产生一些具有积极意义的想法,因此仍然是大有裨益的。

原文来自KDnuggets,以下项目排名不分先后,雷锋网(公众号:雷锋网)编译。

  1. Hyperopt-sklearn

    Hyperopt-sklearn是基于scikit-learn项目的一个子集,其全称是:Hyper-parameter optimization for scikit-learn,即针对scikit-learn项目的超级参数优化工具。由于scikit-learn是基于Python的机器学习开源框架,因此Hyperopt-sklearn也基于Python语言。

    Hyperopt-sklearn的文档称:对于开发者而言,针对不同的训练数据挑选一个合适的分类器(classifier)通常是困难的。而且即使选好了分类器,后面的参数调试过程也相当乏味和耗时。更严重的是,还有许多情况是开发者好不容易调试好了选定的分类器,却发现一开始的选择本身就是错误的,这本身就浪费了大量的精力和时间。针对该问题,Hyperopt-sklearn提供了一种解决方案。

    Hyperopt-sklearn支持各种不同的搜索算法(包括随机搜索、Tree of Parzen Estimators、Annealing等),可以搜索所有支持的分类器(KNeightborsClassifier、KNeightborsClassifier、SGDClassifier等)或者在给定的分类器下搜索所有可能的参数配置,并评估最优选择。并且Hyperopt-sklearn还支持多种预处理流程,包括TfidfVectorizer,Normalzier和OneHotEncoder等。

    那么Hyperopt-sklearn的实际效果究竟如何?下表分别展示了使用scikit-learn默认参数和Hyperopt-sklearn优化参数运行的分类器的F-score分数,数据源来自20个不同的新闻组稿件。可以看到,经过优化的分类器的平均得分都要高于默认参数的情况。

另外,Hyperopt-sklearn的编码量也很小,并且维护团队还提供了丰富的参考样例。

主页:http://hyperopt.github.io/hyperopt-sklearn/

  1. Dlib

Dlib的目标用户并没有Hyperopt-sklearn细分,它是一个基于C++语言的通用的机器学习和数据分析库。值得一提的是,虽然Dlib的确是由C++实现的,但它却提供了针对Python语言的API。

Dlib的官网称:Dlib是一个现代的C++工具包,实现了大量机器学习的相关算法和工具,可用于在C++环境下创建复杂的软件来解决现实问题。目前,Dlib在工业界和学术界都得到了广泛的应用,包括机器人,嵌入式设备,移动电话和大规模的高性能计算环境等。

Dlib的帮助文档非常规范,针对每个API接口的解释也相当全面,而且Dlib还提供了非常详细的入门参考。更为难能可贵的是,Dlib的博客更新也非常频繁,官方人员经常通过博客分享基于Dlib实现的有趣的应用项目。实际上,Dlib也并非随着近两年的人工智能热潮才发起的项目,相对而言,它的历史非常悠久,早在2002年,Dlib的维护团队就已经开始着手开发了。

鉴于Dlib包含了为数众多的算法实现,因此原文作者认为Dlib的运行效率应该与scikit-learn接近,甚至有可能超越后者。

主页:http://dlib.net/

  1. N++

    N++同样基于C++环境,相对其他项目而言,它是一个非常小巧易用的神经网络实现库。这一点主要体现在,N++并不需要复杂的安装过程,使用时只需要在C++代码中通过#include语句对所需的库文件做一个声明就可以了。

    其官网称:N++是一个简短、自包含(self-contained)、易于使用的基于C++环境的神经网络工具包。它实现了包括神经网络和基本线性代数运算在内的一些矩阵类。该项目的主要目的是为了相互学习和交流,但基于MNIST数据库的一些初步测试结果却表明N++在某些实际应用项目中的表现同样出色。

    N++的配套文档并不多,但它却对矩阵类的相关用法进行了详细解释。另外,N++官方还公布了一些对神经网络进行设置和查询的代码片段,而且由于这些代码相对其他实现都非常简短,因此N++特别适合于那些想要了解简单的神经网络实现或者刚从其他编程语言转到C++环境的开发者。

    主页:https://github.com/stagadish/NNplusplus

  2. LightGBM

    LightGBM是基于微软DMTK(Microsoft Distributed Machine Learning Toolkit)开源项目的一个子集,它的全称是:Light Gradient Boosting Machine,专注于各种梯度提升(Gradient Boosting)算法的实现,包括GBDT,GBRT,GBM和MART等。

官网描述称:基于公开数据集的测试结果表明,LightGBM无论在模型训练的速度、准确性还是内存消耗等各方面都要优于其他的梯度提升算法实现。此外,LightGBM还可以通过在特定设置中使用多台机器进行并行训练的方式来实现线性加速(linear speed-up)。

LightGBM本身由C++和Python两种语言实现,微软为开发者提供了完整的帮助文档和入门参考。背靠科技巨头微软的鼎力支持,LightGBM自然也是一个非常值得关注的项目。

主页:https://github.com/Microsoft/LightGBM

  1. Sklearn-pandas

与前面的几个项目不同,Sklearn-pandas既可以视为一个通用型的机器学习工具包,也可是视为一些特定算法的实现。它在具体的机器学习任务中主要充当支持者的角色。

这里所谓支持者的角色,按照其官网的解释即是说:Sklearn-pandas在Scikit-Learn和pandas之间提供了一个互通的桥梁(这一点从项目的名称也能看出)。Scikit-Learn上文已经提过,这里pandas是指一个开源的基于Python实现的数据分析工具。

具体的说,Sklearn-pandas的桥梁作用主要体现在以下两个方面:

1) 提供将DataFrame列映射到transformations的方法,这些列此后还可以重新组合成特征(features);

2) 以pandas DataFrame为输入,为scikit-learn旧版本的管道交叉验证(cross-validate a pipeline)提供兼容性支持。

Sklearn-pandas的版本更新活跃,也是一个非常值得关注的开源项目。

主页:https://github.com/paulgb/sklearn-pandas

来源:kdnuggets,雷锋网编译