【新智元导读】受欢迎的机器学习项目很多,它们受欢迎的程度体现在在 GitHub 上获得的星数(Star)。新智元不久前介绍了 GitHub 上星数最多的16个深度学习应用项目,本文作者发掘了几个数据科学和机器学习被人错过的好项目。即使你不需要使用这些特定的工具,但检查它们的实现细节或项目的代码,可能带给你一些新的启发。
Hyperopt-sklearn
Star:219
GitHub地址:https://github.com/hyperopt/hyperopt-sklearn
Hyperopt-sklearn 是基于 Hyperopt 的模型,用于 scikit-learn 项目中的机器学习算法。项目文档里的介绍如下:
找到适用你的数据的正确分类器可能很难。选好分类器后,为了获得最佳结果而对所有参数进行微调也非常乏味而且耗时。而且有可能在你做完所有这些艰苦的工作后,才发现从一开始就选择了错误的分类器。Hyperopt-sklearn 为这些问题提供了解决方案。
Hyperopt-sklearn 使用多种搜索算法,可以搜索所有(支持的)分类器,或仅在给定分类器的参数空间内进行搜索,并且支持多种预处理步骤,如 PCA,TfidfVectorizer,Normalzier 和 OneHotEncoder。
那么它的效果如何?
下表是使用 scikit-learn 的默认参数运行分类器得到的F1分数,以及在20个新闻组数据集上的 hyperopt-sklearn 优化参数。hyperopt-sklearn 的结果来自25次评估的单次运行。
Hyperopt-sklearn 只需非常少的额外代码,并有一些方便的快速启动代码。
Dlib
Star:1281
GitHub地址:https://github.com/davisking/dlib
Dlib 是一个通用的工具包,用于使用C++进行机器学习和数据分析应用。它是用C++编写的,也有一个 Python API。
官网的介绍如下:
Dlib 是一个现代C++工具包,包含机器学习算法和工具,用于使用C++创建复杂的软件来解决现实问题。它在工业界和学术界的各领域都有广泛应用,包括机器人、嵌入式设备、移动电话和大型高性能计算环境。
文档达到标准,API也得到很好的解释,并且该项目带有简明的介绍。博客社区也很活跃,介绍了一些有趣的项目。Dlib 不是新的项目,它自2002年以来一直在发展。
NN++
Star:184
GitHub地址:https://github.com/stagadish/NNplusplus
NN++ 是一个 C++ 实现的轻量级、非常容易使用的神经网络,它无需安装,直接 #include 即可。
项目repo的介绍如下:
NN++是一个简短,自包含,易于使用的C++神经网络实现。它包括神经网络实现和一个用于基本线性代数运算的 Matrix class。这个项目主要是为学习目的而建,但在 MNIST 数据集的初步测试结果显示了不错的性能。
它的文档是稀疏的,但需要额外解释伴随的 Matrix class 的使用。GitHub库中的一些代码片段解释了如何设置和查询神经网络。这里的代码是最小限度的,所以想要了解简单的神经网络或从其他语言直接跳到用C++实现网络,这个项目是值得一看的。
LightGBM
Star:2362
GitHub地址:https://github.com/Microsoft/LightGBM
LightGBM 是微软的一个实现GBDT算法的框架,支持高效率的并行训练。官方repo的介绍如下:
一个基于决策树算法的快速、分布式、高性能的梯度提升(GBDT,GBRT,GBM 或 MART)框架,通常用于排序、分类等机器学习任务。它是微软的 DMTK(分布式机器学习工具包)下的一个项目。
LightGBM 用 C++ 和 Python 编写,提供了快速入门指南,并行学习指南以及功能的概述。
它的表现如何呢?
使用公共数据集的实验表明,LightGBM 在效率和准确度方面均优于其他现有的 boosting 框架,并且内存消耗也显著低于其他框架。此外,实验表明,LightGBM 能够通过在特定设置中使用多台机器进行训练来实现线性加速。
LightGBM 有许多功能,值得一试。
Sklearn-pandas
Star:763
GitHub地址:https://github.com/paulgb/sklearn-pandas
前面介绍的项目都是通用的机器学习工具包,或是特定算法的实现。这个项目有点不同,它在机器学习任务中发挥着支持性的作用。
Sklearn-pandas 是一个正在开发的模块,它的 GitHub 库介绍中写道,它“在 Scikit-Learn 的机器学习方法和 pandas 风格的数据框架之间架起了桥梁”。
具体来说,它规定了以下两点:
这里的真正用处是将列(columns)映射到变换(transformations)。下面是 GitHub 仓库的一个代码片段:
需要注意的是,前三列是 LabelBinarizer 的输出(分别对应_cat_,_dog_和_fish_),第四列是children 数量的标准值。通常情况下,columns 根据构建 DataFrameMapper 时给定的顺序进行排序。
原文地址:http://www.kdnuggets.com/2017/01/five-machine-learning-projects-cant-overlook-january.html