网络机器人吧社区

2017年1月最牛逼的五个机器学习项目

小象 2018-12-05 12:49:15

我  相  信  这  么  优秀  的  你 

 已  经  置 顶  了  我

翻译|史若画 选文|小象  

转载请联系后台


本文将展示您可能还没有听说过的5个机器学习项目,包括来自许多不同生态系统和编程语言。您可能会发现,即使您没有任何这些特定工具的要求,检查其广泛的实施细节或其具体代码也可能有助于产生您自己的一些想法。


(点击阅读原文可以找到更多关于这五个项目的资料)


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


Dlib是一个通用的工具包,用于在C ++中进行机器学习和数据分析应用程序。尽管它是用C ++编写的,但不要害怕; 它还有一个Python API。


来自官方网站:


Dlib是一个现代的C ++工具包,包含机器学习算法和工具,用于在C++中创建复杂的软件来解决现实问题。它在工业和学术界被广泛应用于各种领域,包括机器人,嵌入式设备,移动电话和大型高性能计算环境。




文档达到了标准,API被很好地解释,并且该项目带有简明的介绍。博客也很活跃,使用库来概述一些有趣的项目。Dlib也不是新的,它自2002年以来一直在发展。

鉴于其广泛的可用算法,我非常感兴趣看到一个基于scikit-learn并行执行时间的比较。有人可以吗?有人可以吗?


NN++


与C ++接触了一段时间,NN ++是一个微小和易于使用的神经网络实现所述语言。无需安装; 只需下载和#include。


从它的repo来看:


它是一个简短的,自包含的,易于使用的C++的神经网络实现。它包括神经网络实现和用于基本线性代数运算的Matrix类。这个项目主要目的是为了学习,但在MNIST数据集的初步测试结果会显示一些承诺。


它的文档是稀疏的,但它需要一些额外的关心来解释伴随的Matrix类的使用。一些代码片段解释了设置和查询神经网络。代码是最小的,所以对那些想要了解简单的神经网络在引擎盖下,或者从另一种语言直接移植到C++实现网络的人来说,这个项目是一个不错的选择。


LightGBM


LightGBM是Microsoft梯度提升树算法实现。

从它的repo来看:


它是基于决策树算法的快速,分布式,高性能梯度提升(GBDT,GBRT,GBM或MART)框架,用于排名,分类和许多其他机器学习任务。它是微软的DMTK(http://github.com/microsoft/dmtk)项目的保护伞。


LightGBM使用C ++和Python编写,提供了快速入门指南,并行学习指南以及其功能的质量视图。



但它如何执行?


对公共数据集的实验表明,LightGBM可以在效率和准确性方面优于其他现有的提升框架,显着降低内存消耗。此外,实验表明,LightGBM可以通过在特定设置中使用多台机器进行训练来实现线性加速。


LightGBM像Microsoft分布式机器学习工具包的其余部分一样,有许多功能使它看起来值得一试。


Sklearn-pandas


迄今为止的项目已经是通用机器学习工具包或特定算法的实现。个项目有点不同,在机器学习任务中发挥着支持作用。


Sklearn-pandas是一个积极开发的模块,它“提供了Scikit-Learn的机器学习方法和熊猫风格的数据框架之间的桥梁。


从它的Github页总结上来看:


它规定了——


1.将DataFrame列映射到转换的方法,它们以后被重新组合成特征。


2.旧的scikit-learn版本的交叉验证兼容性垫片,它使用pandas DataFrame作为输入。这只需要scikit-learn <0.16.0(详情参见#11)。它已被弃用,可能会在skearn-pandas == 2.0中删除。


这里的真正用途是将列映射到变换。这里是一个来自Github的代码片段:



注意,前三列是LabelBinarizer的输出(分别对应于_cat_,_dog_和_fish_),第四列是子数量的标准化值。通常,根据构建DataFrameMapper时给出的顺序对列进行排序。


希望你在这些项目中发现了一些有趣的东西。祝机器学习快乐!


(点击阅读原文可以找到更多关于这五个项目的资料)




译者介绍

史若画


一个和数学和计算机纠缠不清的统计学学生,对每一段数字和代码倾注独有的感情。热爱运动,热爱自然,热爱科学~


Copyright © 网络机器人吧社区@2017