<返回更多

20个必备的Python机器学习库

2022-09-26    CDA数据分析师
加入收藏

来源丨网络

AutoML是指自动机器学习。它说明了如何在组织和教育水平上自动化机器学习的端到端过程。机器学习模型基本上包括以下步骤:

最初,所有这些步骤都是手动完成的。但是现在随着AutoML的出现,这些步骤可以实现自动化。AutoML当前分为三类:

  1. 用于自动参数调整的AutoML(相对基本的类型)

  2. 用于非深度学习的AutoML,例如AutoSKlearn。此类型主要应用于数据预处理,自动特征分析,自动特征检测,自动特征选择和自动模型选择。

  3. 用于深度学习/神经网络的AutoML,包括NAS和ENAS以及用于框架的Auto-Keras。

为什么需要AutoML?

机器学习的需求日益增长。组织已经在应用程序级别采用了机器学习。仍在进行许多改进,并且仍然有许多公司正在努力为机器学习模型的部署提供更好的解决方案。

为了进行部署,企业需要有一个经验丰富的数据科学家团队,他们期望高薪。即使企业确实拥有优秀的团队,通常也需要更多的经验而不是AI知识来决定哪种模型最适合企业。机器学习在各种应用中的成功导致对机器学习系统的需求越来越高。即使对于非专家也应该易于使用。AutoML倾向于在ML管道中自动执行尽可能多的步骤,并以最少的人力保持良好的模型性能。

AutoML具有三个主要优点:

让我们看看以不同的编程语言提供的一些最常见的AutoML库:

以下是用Python/ target=_blank class=infotextkey>Python实现auto-sklearn

auto-sklearn是一种自动机器学习工具包,是scikit-learn估计器的直接替代品。Auto-SKLearn将机器学习用户从算法选择和超参数调整中解放出来。它包括功能设计方法,例如一站式,数字功能标准化和PCA。该模型使用SKLearn估计器来处理分类和回归问题。Auto-SKLearn创建管道并使用贝叶斯搜索来优化该渠道。在ML框架中,通过贝叶斯推理为超参数调整添加了两个组件:元学习用于使用贝叶斯初始化优化器,并在优化过程中评估配置的自动集合构造。

Auto-SKLearn在中小型数据集上表现良好,但无法生成在大型数据集中具有最先进性能的现代深度学习系统。

详细原理与案例请见 (点击查看):一文彻底搞懂自动机器学习AutoML:Auto-Sklearn

例importsklearn.model_selection

importsklearn.datasets

importsklearn.metrics

importautosklearn.regression

defmain:

X, y = sklearn.datasets.load_boston(return_X_y= True)

feature_types = ([ 'numerical'] * 3) + [ 'categorical'] + ([ 'numerical'] * 9)

X_train, X_test, y_train, y_test =

sklearn.model_selection.train_test_split(X, y, random_state= 1)

automl = autosklearn.regression.AutoSklearnRegressor(

time_left_for_this_task= 120,

per_run_time_limit= 30,

tmp_folder= '/tmp/autosklearn_regression_example_tmp',

output_folder= '/tmp/autosklearn_regression_example_out',

)

automl.fit(X_train, y_train, dataset_name= 'boston',

feat_type=feature_types)

print(automl.show_models)

predictions = automl.predict(X_test)

print( "R2 score:", sklearn.metrics.r2_score(y_test, predictions))

if__name__ == '__main__':

main

FeatureTools

它是用于自动功能工程的python库。

安装

用pip安装

python -m pip install featuretools

或通过conda上的Conda-forge频道:

conda install -c conda-forge featuretools

附加组件

我们可以运行以下命令单独安装或全部安装附件

python -m pip install featuretools[complete]

更新检查器—接收有关FeatureTools新版本的自动通知

python -m pip install featuretools[update_checker]

TSFresh基本体-在Featuretools中使用tsfresh中的60多个基本体

python -m pip install featuretools[tsfresh]

例importfeaturetools asft

es = ft.demo.load_mock_customer(return_entityset= True)

es.plot

Featuretools可以为任何"目标实体"自动创建一个特征表

feature_matrix, features_defs = ft.dfs(entityset=es,

target_entity= "customers")

feature_matrix.head( 5)

官方网站

https://featuretools.alteryx.com/cn/stable/

MLBox

MLBox是功能强大的自动化机器学习python库。 详细原理与案例请见(点击查看)一文彻底掌握自动机器学习AutoML:MLBox

根据官方文档,它具有以下功能:

MLBox体系结构

MLBox主软件包包含3个子软件包:

官方网站

https://github.com/AxeldeRomblay/MLBox

TPOT

TPOT代表基于树的管道优化工具,它使用遗传算法优化机器学习管道.TPOT建立在scikit-learn的基础上,并使用自己的回归器和分类器方法。TPOT探索了数千种可能的管道,并找到最适合数据的管道。

TPOT通过智能地探索成千上万的可能管道来找到最适合我们数据的管道,从而使机器学习中最繁琐的部分自动化。

TPOT建立在scikit-learn的基础上,因此它生成的所有代码都应该看起来很熟悉……无论如何,如果我们熟悉scikit-learn。 详细原理与案例请见(点击查看) 一文彻底搞懂自动机器学习AutoML:TPOT

TPOT仍在积极开发中。

例子分类 fromtpot importTPOTClassifier

fromsklearn.datasets importload_digits

fromsklearn.model_selection importtrain_test_split

digits = load_digits

X_train, X_test, y_train, y_test = train_test_split(digits.data,

digits.target,

train_size= 0.75,

test_size= 0.25,

random_state= 42)

tpot = TPOTClassifier(generations= 5, population_size= 50,

verbosity= 2, random_state= 42)

tpot.fit(X_train, y_train)

print(tpot.score(X_test, y_test))

tpot.export( 'tpot_digits_pipeline.py')

此代码将发现达到98%的测试精度的管道。应将相应的Python代码导出到tpot_digits_pipeline.py文件,其外观类似于以下内容:

importnumpy asnp

importpandas aspd

fromsklearn.ensemble importRandomForestClassifier

fromsklearn.linear_model importLogisticRegression

fromsklearn.model_selection importtrain_test_split

fromsklearn.pipeline importmake_pipeline, make_union

fromsklearn.preprocessing importPolynomialFeatures

fromtpot.builtins importStackingEstimator

fromtpot.export_utils importset_param_recursive

# NOTE:Make sure that the outcome column is labeled 'target' in the data file

tpot_data = pd.read_csv( 'PATH/TO/DATA/FILE', sep= 'COLUMN_SEPARATOR', dtype=np.float64)

features = tpot_data.drop( 'target', axis= 1)

training_features, testing_features, training_target, testing_target =

train_test_split(features, tpot_data[ 'target'], random_state= 42)

# Average CV score on the training set was: 0.9799428471757372

exported_pipeline = make_pipeline(

PolynomialFeatures(degree= 2, include_bias= False, interaction_only= False),

StackingEstimator(estimator=LogisticRegression(C= 0.1, dual= False, penalty= "l1")),

RandomForestClassifier(bootstrap= True, criterion= 'entropy',

max_features= 0.35000000000000003,

min_samples_leaf= 20, min_samples_split= 19,

n_estimators= 100)

)

# Fix random state for all the steps in exported pipeline

set_param_recursive(exported_pipeline.steps, 'random_state', 42)

exported_pipeline.fit(training_features, training_target)

results = exported_pipeline.predict(testing_features)

回归

TPOT可以优化管道以解决回归问题。以下是使用波士顿房屋价格数据集的最小工作示例。

fromtpot importTPOTRegressor

fromsklearn.datasets importload_boston

fromsklearn.model_selection importtrain_test_split

housing = load_boston

X_train, X_test, y_train, y_test = train_test_split(

housing.data, housing.target,

train_size= 0.75, test_size= 0.25,

random_state= 42)

tpot = TPOTRegressor(generations= 5, population_size= 50,

verbosity= 2, random_state= 42)

tpot.fit(X_train, y_train)

print(tpot.score(X_test, y_test))

tpot.export( 'tpot_boston_pipeline.py')

这将导致流水线达到约12.77均方误差(MSE),tpot_boston_pipeline.py中的Python代码应类似于:

importnumpy asnp

importpandas aspd

fromsklearn.ensemble importExtraTreesRegressor

fromsklearn.model_selection importtrain_test_split

fromsklearn.pipeline importmake_pipeline

fromsklearn.preprocessing importPolynomialFeatures

fromtpot.export_utils importset_param_recursive

# NOTE:Make sure that the outcome column is labeled 'target' in the data file

tpot_data = pd.read_csv( 'PATH/TO/DATA/FILE',

sep= 'COLUMN_SEPARATOR',

dtype=np.float64)

features = tpot_data.drop( 'target', axis= 1)

training_features, testing_features, training_target, testing_target =

train_test_split(features, tpot_data[ 'target'], random_state= 42)

# Average CV score on the training set was: -10.812040755234403

exported_pipeline = make_pipeline(

PolynomialFeatures(degree= 2, include_bias= False, interaction_only= False),

ExtraTreesRegressor(bootstrap= False, max_features= 0.5,

min_samples_leaf= 2, min_samples_split= 3,

n_estimators= 100)

)

# Fix random state for all the steps in exported pipeline

set_param_recursive(exported_pipeline.steps, 'random_state', 42)

exported_pipeline.fit(training_features, training_target)

results = exported_pipeline.predict(testing_features)

Github链接

https://github.com/EpistasisLab/tpot

Lightwood

一个基于Pytorch的框架,它将机器学习问题分解为较小的块,可以与一个目标无缝地粘合在一起:让它变得如此简单,以至于您只需要一行代码就可以构建预测模型。

安装

我们可以从pip安装Lightwood:

pip3 install lightwood

注意:根据我们的环境,在上面的命令中我们可能必须使用pip而不是pip3。

鉴于简单的sensor_data.csv,我们可以预测sensor3的值。

从Lightwood导入预测变量

fromlightwood importPredictor

训练模型。

importpanda

ssensor3_predictor = Predictor(output=[ 'sensor3']

).learn(from_data=pandas.read_csv( 'sensor_data.csv'))

现在我们可以预测sensor3的值。

prediction = sensor3_predictor.predict(when={ 'sensor1': 1, 'sensor2': -1})

官方链接

https://github.com/mindsdb/lightwood

MindsDB

MindsDB是现有数据库的开源AI层,可让您轻松使用SQL查询来开发,训练和部署最新的机器学习模型。

官方链接

https://github.com/mindsdb/mindsdb

mljar-supervised

mljar-supervised是一个自动化的机器学习Python软件包,可用于表格数据。它旨在为数据科学家节省时间time。它抽象了预处理数据,构建机器学习模型以及执行超参数调整以找到最佳模型common的通用方法。这不是黑盒子,因为您可以确切地看到ML管道的构造方式(每个ML模型都有详细的Markdown报告)。

在mljar-supervised中,将帮助您:

它具有三种内置的工作模式:

官方链接

https://github.com/mljar/mljar-supervisedv

Auto-Keras

Auto-Keras是由DATA Lab开发的用于自动机器学习(AutoML)的开源软件库。Auto-Keras建立在深度学习框架Keras之上,提供自动搜索深度学习模型的体系结构和超参数的功能。

Auto-Keras遵循经典的Scikit-Learn API设计,因此易于使用。当前版本提供了在深度学习期间自动搜索超参数的功能。

在Auto-Keras中,趋势是通过使用自动神经体系结构搜索(NAS)算法来简化ML。NAS基本上使用一组算法来自动调整模型,以取代深度学习工程师/从业人员。

官方链接

https://github.com/keras-team/autokeras

神经网络智能 NNI

用于神经体系结构搜索和超参数调整的开源AutoML工具包。NNI提供了CommandLine Tool以及用户友好的WebUI来管理训练实验。使用可扩展的API,您可以自定义自己的AutoML算法和培训服务。为了使新用户容易使用,NNI还提供了一组内置的最新AutoML算法,并为流行的培训平台提供了开箱即用的支持。

官方网站

https://nni.readthedocs.io/en/latest/

Ludwig

路德维希(Ludwig)是一个工具箱,可让用户无需编写代码即可训练和测试深度学习模型。它建立在TensorFlow之上,Ludwig基于可扩展性原则构建,并基于数据类型抽象,可以轻松添加对新数据类型和新模型架构的支持,可供从业人员快速培训和测试深度学习模型以及由研究人员获得的强基准进行比较,并具有实验设置,可通过执行相同的数据处理和评估来确保可比性。

路德维希提供了一组模型体系结构,可以将它们组合在一起以为给定用例创建端到端模型。举例来说,如果深度学习图书馆提供了建造建筑物的基础,路德维希提供了建造城市的建筑物,您可以在可用建筑物中进行选择,也可以将自己的建筑物添加到可用建筑物中。

官方链接

https://github.com/uber/ludwig

Ad.NET

AdaNet是基于TensorFlow的轻量级框架,可在最少的专家干预下自动学习高质量的模型。AdaNet建立在AutoML最近的努力基础上,以提供快速的,灵活的学习保证。重要的是,AdaNet提供了一个通用框架,不仅用于学习神经网络体系结构,而且还用于学习集成以获得更好的模型。

AdaNet具有以下目标:

官方链接

https://github.com/tensorflow/adanet

Darts

该算法基于架构空间中的连续松弛和梯度下降。它能够有效地设计用于图像分类的高性能卷积体系结构(在CIFAR-10和ImageNet上),以及用于语言建模的循环体系结构(在Penn Treebank和WikiText-2上)。只需要一个GPU。

官方链接

https://github.com/quark0/darts

automl-gs

提供一个输入的CSV文件和一个您希望预测为automl-gs的目标字段,并获得训练有素的高性能机器学习或深度学习模型以及本机Python代码管道,使您可以将该模型集成到任何预测工作流中。没有黑匣子:您可以确切地看到如何处理数据,如何构建模型以及可以根据需要进行调整。

automl-gs是一种AutoML工具,与Microsoft的NNI,Uber的Ludwig和TPOT不同,它提供了零代码/模型定义界面,可在多个流行的ML / DL框架中以最少的Python依赖关系获得优化的模型和数据转换管道。

官方链接

https://github.com/minimaxir/automl-gs

以下是用R实现 AutoKeras的R接口

AutoKeras是用于自动机器学习(AutoML)的开源软件库。它是由德克萨斯农工大学的DATA Lab和社区贡献者开发的。AutoML的最终目标是为数据科学或机器学习背景有限的领域专家提供易于访问的深度学习工具。AutoKeras提供了自动搜索深度学习模型的体系结构和超参数的功能。

在RStudio TensorFlow for R博客上查看AutoKeras博客文章。

官方文档

https://github.com/r-tensorflow/autokeras

以下是用Scala实现 TransmogrifAI

TransmogrifAI(发音为trăns-mŏgˈrə-fī)是用Scala编写的AutoML库,它在Apache Spark之上运行。它的开发重点是通过机器学习自动化来提高机器学习开发人员的生产率,以及一个用于强制执行编译时类型安全,模块化和重用的API。通过自动化,它实现了接近手动调整模型的精度,时间减少了近100倍。

如果您需要机器学习库来执行以下操作,请使用TransmogrifAI:

官方链接

https://github.com/salesforce/TransmogrifAI

以下是用JAVA实现 Glaucus

Glaucus是基于数据流的机器学习套件,它结合了自动机器学习管道,简化了机器学习算法的复杂过程,并应用了出色的分布式数据处理引擎。对于跨领域的非数据科学专业人士,帮助他们以简单的方式获得强大的机器学习工具的好处。

用户只需要上传数据,简单配置,算法选择,并通过自动或手动参数调整来训练算法。该平台还为培训模型提供了丰富的评估指标,因此非专业人员可以最大限度地发挥机器学习在其领域中的作用。整个平台结构如下图所示,主要功能是:

官方网站

https://github.com/ccnt-glaucus/glaucus

其他工具 H20 AutoML

H2O AutoML界面设计为具有尽可能少的参数,因此用户所需要做的只是指向他们的数据集,标识响应列,并可选地指定时间限制或训练的总模型数量的限制。

在R和Python API中,AutoML与其他H2O算法使用相同的数据相关参数x,y,training_frame,validation_frame。大多数时候,您需要做的就是指定数据参数。然后,您可以为max_runtime_secs和/或max_models配置值,以在运行时设置明确的时间或模型数量限制。

详细原理与案例请见(点击查看) 一文彻底搞懂自动机器学习AutoML:H2O

官方链接

https://github.com//h2oai/h2o-3/blob/master/h2o-docs/src/product/automl.rst

PocketFlow

PocketFlow旨在为开发人员提供一个易于使用的工具包,以提高推理效率而几乎不降低性能或不降低性能。开发人员只需指定所需的压缩和/或加速比,然后PocketFlow将自动选择适当的超参数以生成用于部署的高效压缩模型。

官方链接

https://github.com/Tencent/PocketFlow

Ray

Ray提供了用于构建分布式应用程序的简单通用API。

Ray与以下库打包在一起,以加快机器学习的工作量:

使用以下方式安装Ray:pip install ray

官方链接

https://github.com/ray-project/ray

Smac3

SMAC是用于算法配置的工具,可以跨一组实例优化任意算法的参数。这还包括ML算法的超参数优化。主要核心包括贝叶斯优化和积极的竞速机制,可有效地确定两种配置中哪一种的性能更好。

有关其主要思想的详细说明,请参阅

Hutter, F. and Hoos, H. H. and Leyton-Brown, K.Sequential Model-Based Optimization for General Algorithm ConfigurationIn: Proceedings of the conference on Learning and Intelligent OptimizatioN (LION 5)

SMAC v3是用Python3编写的,并经过了Python3.6和python3.6的持续测试。它的随机森林用C++编写。

结论

autoML库非常重要,因为它们可以自动执行重复任务,例如管道创建和超参数调整。它为数据科学家节省了时间,因此他们可以将更多的时间投入到业务问题上。AutoML还允许每个人代替一小部分人使用机器学习技术。数据科学家可以通过使用AutoML实施真正有效的机器学习来加速ML开发。

让我们看看AutoML的成功将取决于组织的使用情况和需求。时间将决定命运。但是目前我可以说AutoML在机器学习领域中很重要。

转自闻鸡起舞,版权属于原作者,仅用于学术分享

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>