5个冷门机器学习项目,助你打怪升级!

5个冷门机器学习项目,助你打怪升级!

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

5个冷门机器学习项目,助你打怪升级!

1. 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需要很少的额外代码就能正常工作,并且有一些便于快速启动的代码可以用。

5个冷门机器学习项目,助你打怪升级!

2. Dlib

Dlib是一个通用工具包,它可在C++中创建机器学习和数据分析应用程序。它是用C ++编写的。但不要担心,它还有一个Python API。

来自官方网站:

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

文档符合标准,API得到了很好的解释,项目附带了简洁的介绍。博客也很使人活跃,博客使用该库概述了一些有趣的项目。Dlib也不是新的; 它自2002年以来一直在开发中。

5个冷门机器学习项目,助你打怪升级!

3. NN++

暂时使用C ++,NN ++对于所述语言来说是一个很小且易于使用的神经网络实现。它无需安装,只需下载和#include。

报告节选:

一个简短,独立且易于使用的C ++神经网络实现。它包括神经网络实现和用于基本线性代数运算的Matrix类。 该项目主要用于学习目的,但MNIST数据集的初步测试结果展示了些成功的希望。

它的文档很稀疏,但该文档特别注意解释随附的Matrix类的用法。 一些代码片段解释了设置和查询神经网络。 代码是最小的,所以那些希望了解后台的简单神经网络或者直接从另一种语言转移到用C ++实现网络编程的人,这个项目值得一看。

5个冷门机器学习项目,助你打怪升级!

4. LightGBM

LightGBM是Microsoft梯度提升树算法的实现。报告节选:

基于决策树算法的快速,分布式,高性能梯度增强(GBDT,GBRT,GBM或MART)框架,用于排名,分类和许多其他机器学习任务。该框架位域微软的DMTK项目的保护伞下。

LightGBM以C ++和Python编写,具有快速入门指南,并行学习指南以及其功能的质量概述。

5个冷门机器学习项目,助你打怪升级!

但它是如何表现的?

公共数据集上的实验表明,LightGBM在效率和准确性方面都优于其他现有的增强框架,并且大大降低了内存消耗。更重要的是,实验表明LightGBM可以通过在特定设置中使用多台机器进行训练来实现线性加速。

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

5个冷门机器学习项目,助你打怪升级!

5. Sklearn-pandas

迄今为止,项目成为通用机器学习的工具包,或特定算法的实现。这个项目有点不同,它对机器学习任务起着支持的作用。

Sklearn-pandas是一个积极开发的模块,“它使Scikit-Learn的机器学习方法和pandas式数据框架之间实现了连接。”

报告节选:

特别是,它提供了:一种将DataFrame列映射到转换的方法,这些转换稍后会重新组合到要素中。旧scikit-learn版本的兼容性填充程序,用于交叉验证将pandas DataFrame作为输入的通道。这只需要scikit-learn <0.16.0(详见#11)。 它已被弃用,可能会被丢弃在skearn-pandas == 2.0中。

这里真正的用途是将列映射到转换。以下是来自Gitub报告中的片段,演示如下:

import pandas as pd

import numpy as np

import sklearn.preprocessing, sklearn.decomposition, sklearn.linear_model, sklearn.pipeline, sklearn.metrics

from sklearn.feature_extraction.text import CountVectorizer

# Import Sklearn-pandas

from sklearn_pandas import DataFrameMapper, cross_val_score

# Load some Data

data = pd.DataFrame({'pet': ['cat', 'dog', 'dog', 'fish', 'cat', 'dog', 'cat', 'fish'],

'children': [4., 6, 3, 3, 2, 3, 5, 4],

'salary': [90, 24, 44, 27, 32, 59, 36, 27]})

# Map the Columns to Transformations

mapper = DataFrameMapper([

('pet', sklearn.preprocessing.LabelBinarizer()),

(['children'], sklearn.preprocessing.StandardScaler())

])

# Test the Transformation

print np.round(mapper.fit_transform(data.copy()), 2)

array([[ 1. , 0. , 0. , 0.21],

[ 0. , 1. , 0. , 1.88],

[ 0. , 1. , 0. , -0.63],

[ 0. , 0. , 1. , -0.63],

[ 1. , 0. , 0. , -1.46],

[ 0. , 1. , 0. , -0.63],

[ 1. , 0. , 0. , 1.04],

[ 0. , 0. , 1. , 0.21]])

请注意,前三列是LabelBinarizer的输出(分别对应于cat,dog和fish),第四列是子节点数的标准值。通常,列是根据构造DataFrameMapper时给出的顺序排序的。

相关推荐