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

借着人工智能的热潮,各种机器学习项目也迎来了一个爆发期。其中有一些因为背后的巨头支持或者稳定可靠的性能而广为人知,例如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/

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

雷锋网(公众号:雷锋网)相关文章:

Python粉都应该知道的开源机器学习框架:Scikit-learn入门指南

机器学习年度 20 大开源项目花落谁家?(Python 版)

本文作者:恒亮

本文转自雷锋网禁止二次转载,原文链接

时间: 2025-01-20 13:01:51

五个鲜为人知,但又不可不知的机器学习开源项目的相关文章

你所不知道的 EMC 开源的那些事

很多人都知道 EMC 这个公司,知道它是一家全球顶尖的存储产品供应商,但是很多人却不知道 EMC 也是一位开源先锋. 前一段时间去参加 EMC World 2016大会[1],在大会上的见闻了种种新技术,也第一时间听到了不少最新披露的消息.这期间,令笔者非常吃惊的是,EMC 在开源方面的步伐之大,远在很多同侪之上. EMC {code} 在 EMC World 2016 上 对 EMC 的印象 原本印象中,EMC 是一个以硬件和专有软件为主的厂商,在开源方面不会有太多的积极性,而且存储方面的专有

你不得不知的微软开源那些事儿

现在的开源天空已经不再是只有Red Hat的大旗了,不管是后面有追兵还是前面有堵截,开源潮流俨然深入到了这个行业的最底层,这也难怪开源几乎遮住了我们的视野了.下面,我们为大家梳理了微软公司在开放开源道路上的一些重要事件,从中我们也看到微软也不能逃出开源开放的潮流. 一.过去,参与Linux内核贡献.成立开放技术子公司 首先来刨刨过去,微软这几年在开源领域不断秀肌肉. 在2012年的时候, 微软成立"微软开放技术有限公司(Microsoft Open Technologies Inc.)"

Hadoop创始人寄语2017:五种让开源项目成功的方法

搭建一个开源平台,组织就能利用云供应商套利来降低成本 由于Doug Cutting和Apache软件基金会有多年的合作关系,于是经常被问到"什么是开源技术的未来?".Doug的回应一般要么是"我不知道",要么是"有无穷的可能性". 在过去的一年中,我们已经看到开源技术强势的发展成了企业的技术主流.谁会想到十年前Doug在Hadoop所做的工作会影响到那么多的行业,从制造到电信,再到金融等等.它们都掌握了开源生态系统的力量,不仅改善了客户的体验,变

Hadoop创始人Doug Cutting寄语2017:五种让开源项目成功的方法

搭建一个开源平台,组织就能利用云供应商套利来降低成本 由于Doug Cutting和Apache软件基金会有多年的合作关系,于是经常被问到"什么是开源技术的未来?".Doug的回应一般要么是"我不知道",要么是"有无穷的可能性". 在过去的一年中,我们已经看到开源技术强势的发展成了企业的技术主流.谁会想到十年前Doug在Hadoop所做的工作会影响到那么多的行业,从制造到电信,再到金融等等.它们都掌握了开源生态系统的力量,不仅改善了客户的体验,变

你可能不知道的10个新的开源项目

1. Bootstrap, 一个来自 Twitter 的工具包,用于快速开发 Web 应用和网站. 2. BrowserID, 一个安全,分散,开源,基于 email 地址的跨浏览器网站同步登录. 3. Canvas, 基于云计算的学习管理系统 LMS 4. Cloud Foundry, 一个开放的平台作为一种服务(PaaS)云,开发框架和应用服务的选择; 5. Moai, 一个移动游戏开发平台,提供基于云的游戏服务和 iOS, Android 应用快速开发平台. 6.Mooege,一个开放源码

机器学习年度 20 大开源项目花落谁家?(Python 版)

如今,开源已经成为创新与技术发展的核心.在本文中,雷锋网(公众号:雷锋网)将介绍 2016 Python 前20大机器学习开源项目. 去年 KDnuggets 评选了前 20 大机器学习开源项目(Python版),今年的评选结果与去年相比,名单中出现了一些新的面孔,有13个新开源项目入围了这个名单.作者 Prasad Pore 将具体介绍这些开源项目,雷锋网编译,未经许可不得转载. 第一名:Scikit-learn Scikit-learn可以说是一款简单而高效的数据挖掘与分析工具,大家可以免费

程序崩溃后如何更好的反馈信息

我们使用Windows都知道,整个Windows和微软提供的应用软件的稳定性和崩溃后的体验是逐步提升的.在大牛的作品<软件调试> 中有描述. 在Windows下,软件出错,常见的报告手段: 1.事件日志:这里记录了很多关键的错误信息 2.崩溃报告:可以自动提交错误的信息,或者手动提交,以不断的改进软件和方便排错 3.专用的日志工具:如Netmon,sysinternal等   那我们的软件在崩溃后如何处理呢?主要目的: 1.方便我们的排错 2.提供更好的使用体验 最近在设计一个应用系统时对这个

google的开源c++

代码风格指南 http://code.google.com/p/google-styleguide/通过这个了解代码规范和编写新代码 Open Source Projects Released By Google  http://code.google.com/intl/zh-CN/opensource/projects.html google的完整开源例子 https://developers.google.com/ http://code.google.com/intl/zh-CN/open

8 个你可能不知道的 Docker 知识

本文讲的是8 个你可能不知道的 Docker 知识,[编者的话]在过去的一年内,Docker 技术已经逐渐走向成熟,并且推动了大型初创公司例如 Twitter 和 Airbnb 的发展,甚至在银行.连锁超市.甚至 NASA 的数据中心都赢得了一席之地.本文介绍了一些基本的Docker知识,比如Docker可以做什么.Docker的文件系统. 自从上世纪 90 年代硬件虚拟化被主流的技术广泛普及之后,对数据中心而言,发生的最大的变革莫过于容器和容器管理工具,例如:Docker.在过去的一年内,Do