五个不为人知,但又不可不知的机器学习开源项目 转学习资料

五个不为人知,但又不可不知的机器学习开源项目

本文做者:恒亮 2017-02-09 14:14
导语:本文将介绍的这五个小众项目来自不一样的生态系统和编程语言,而且版本更新活跃,具备必定的学习价值。

五个不为人知,但又不可不知的机器学习开源项目

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

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

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

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/iphone

2. 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/

3. N++

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

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

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

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

4. 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

5. 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,雷锋网编译

相关文章
相关标签/搜索