文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

20个面向数据科学家的自动机器学习库

2024-12-03 15:10

关注

 "机器学习的圣杯之一是使越来越多的特征工程过程自动化。"

佩德罗·多明戈斯(Pedro Domingos)

介绍

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

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

为什么需要AutoML?

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

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

AutoML具有三个主要优点:

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

Python

1. auto-sklearn


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

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

例:

  1. import sklearn.model_selection 
  2. import sklearn.datasets 
  3. import sklearn.metrics 
  4.  
  5. import autosklearn.regression 
  6.  
  7. def main(): 
  8.     X, y = sklearn.datasets.load_boston(return_X_y=True
  9.     feature_types = (['numerical'] * 3) + ['categorical'] + (['numerical'] * 9) 
  10.     X_train, X_test, y_train, y_test = \ 
  11.     sklearn.model_selection.train_test_split(X, y, random_state=1
  12.  
  13.     automl = autosklearn.regression.AutoSklearnRegressor( 
  14.     time_left_for_this_task=120
  15.     per_run_time_limit=30
  16.     tmp_folder='/tmp/autosklearn_regression_example_tmp'
  17.     output_folder='/tmp/autosklearn_regression_example_out'
  18.     ) 
  19.     automl.fit(X_train, y_train, dataset_name='boston'
  20.     feat_type=feature_types
  21.  
  22.     print(automl.show_models()) 
  23.     predictions = automl.predict(X_test) 
  24.     print("R2 score:", sklearn.metrics.r2_score(y_test, predictions)) 
  25.  
  26.  
  27. if __name__ == '__main__': 
  28. main() 

2. FeatureTools


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

(1) 安装:

用pip安装:

  1. python -m pip install featuretools 

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

  1. conda install -c conda-forge featuretools 

(2) 附加组件

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

  1. python -m pip install featuretools[complete] 

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

  1. python -m pip install featuretools[update_checker] 

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

  1. python -m pip install featuretools[tsfresh] 

例:

  1. >> import featuretools as ft 
  2. >> es = ft.demo.load_mock_customer(return_entityset=True
  3. >> es.plot() 

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

  1. >> feature_matrix, features_defs = ft.dfs(entityset=es,  
  2.                                           target_entity="customers"
  3. >> feature_matrix.head(5) 

 

官方网站:https://featuretools.alteryx.com/cn/stable/

3. MLBox


MLBox是功能强大的自动化机器学习python库。根据官方文档,它具有以下功能:

MLBox体系结构:

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

官方网站:https://github.com/AxeldeRomblay/MLBox

4. TPOT

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


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


TPOT完成搜索后,它将为我们提供找到的最佳管道的Python代码,因此我们可以从那里修改管道。


TPOT建立在scikit-learn的基础上,因此它生成的所有代码都应该看起来很熟悉……无论如何,如果我们熟悉scikit-learn。

TPOT仍在积极开发中。

例子:分类

这是具有手写数字数据集光学识别功能的示例。

  1. from tpot import TPOTClassifier 
  2. from sklearn.datasets import load_digits 
  3. from sklearn.model_selection import train_test_split 
  4. digits = load_digits() 
  5. X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, 
  6.  train_size=0.75, test_size=0.25, random_state=42
  7. tpot = TPOTClassifier(generations=5population_size=50verbosity=2random_state=42
  8. tpot.fit(X_train, y_train) 
  9. print(tpot.score(X_test, y_test)) 
  10. tpot.export(‘tpot_digits_pipeline.py’) 

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

  1. import numpy as np 
  2. import pandas as pd 
  3. from sklearn.ensemble import RandomForestClassifier 
  4. from sklearn.linear_model import LogisticRegression 
  5. from sklearn.model_selection import train_test_split 
  6. from sklearn.pipeline import make_pipeline, make_union 
  7. from sklearn.preprocessing import PolynomialFeatures 
  8. from tpot.builtins import StackingEstimator 
  9. from tpot.export_utils import set_param_recursive 
  10. # NOTE: Make sure that the outcome column is labeled ‘target’ in the data file 
  11. tpot_data = pd.read_csv(‘PATH/TO/DATA/FILE’, sep=’COLUMN_SEPARATOR’, dtype=np.float64) 
  12. features = tpot_data.drop(‘target’, axis=1
  13. training_features, testing_features, training_target, testing_target = \ 
  14.  train_test_split(features, tpot_data[‘target’], random_state=42
  15. # Average CV score on the training set was: 0.9799428471757372 
  16. exported_pipeline = make_pipeline
  17.  PolynomialFeatures(degree=2include_bias=Falseinteraction_only=False), 
  18.  StackingEstimator(estimator=LogisticRegression(C=0.1, dual=Falsepenalty=”l1")), 
  19.  RandomForestClassifier(bootstrap=Truecriterion=”entropy”, max_features=0.35000000000000003, min_samples_leaf=20min_samples_split=19n_estimators=100
  20. # Fix random state for all the steps in exported pipeline 
  21. set_param_recursive(exported_pipeline.steps, ‘random_state’, 42) 
  22. exported_pipeline.fit(training_features, training_target) 
  23. results = exported_pipeline.predict(testing_features) 

回归

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

  1. from tpot import TPOTRegressor 
  2. from sklearn.datasets import load_boston 
  3. from sklearn.model_selection import train_test_split 
  4. housing = load_boston() 
  5. X_train, X_test, y_train, y_test = train_test_split(housing.data, housing.target, 
  6.  train_size=0.75, test_size=0.25, random_state=42
  7. tpot = TPOTRegressor(generations=5population_size=50verbosity=2random_state=42
  8. tpot.fit(X_train, y_train) 
  9. print(tpot.score(X_test, y_test)) 
  10. tpot.export(‘tpot_boston_pipeline.py’) 

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

  1. import numpy as np 
  2. import pandas as pd 
  3. from sklearn.ensemble import ExtraTreesRegressor 
  4. from sklearn.model_selection import train_test_split 
  5. from sklearn.pipeline import make_pipeline 
  6. from sklearn.preprocessing import PolynomialFeatures 
  7. from tpot.export_utils import set_param_recursive 
  8. # NOTE: Make sure that the outcome column is labeled ‘target’ in the data file 
  9. tpot_data = pd.read_csv(‘PATH/TO/DATA/FILE’, sep=’COLUMN_SEPARATOR’, dtype=np.float64) 
  10. features = tpot_data.drop(‘target’, axis=1
  11. training_features, testing_features, training_target, testing_target = \ 
  12.  train_test_split(features, tpot_data[‘target’], random_state=42
  13. # Average CV score on the training set was: -10.812040755234403 
  14. exported_pipeline = make_pipeline
  15.  PolynomialFeatures(degree=2include_bias=Falseinteraction_only=False), 
  16.  ExtraTreesRegressor(bootstrap=Falsemax_features=0.5, min_samples_leaf=2min_samples_split=3n_estimators=100
  17. # Fix random state for all the steps in exported pipeline 
  18. set_param_recursive(exported_pipeline.steps, ‘random_state’, 42) 
  19. exported_pipeline.fit(training_features, training_target) 
  20. results = exported_pipeline.predict(testing_features) 

Github链接:-https://github.com/EpistasisLab/tpot

5. Lightwood


Lightwood就像机器学习的乐高玩具。

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

安装

我们可以从pip安装Lightwood:

  1. pip3 install lightwood 

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

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


从Lightwood导入预测变量

  1. from lightwood import Predictor 

训练模型。

  1. import pandas 
  2. sensor3_predictor = Predictor(output=['sensor3']) 
  3.   .learn(from_data=pandas.read_csv('sensor_data.csv')) 

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

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

官方链接:https://github.com/mindsdb/lightwood

6. MindsDB


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


官方链接:https://github.com/mindsdb/mindsdb

7. mljar-supervised


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

在mljar-supervised中,将帮助您:

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

官方链接:-https://github.com/mljar/mljar-supervised

8. 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

9. 神经网络智能 NNI


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

官方网站:-https://nni.readthedocs.io/en/latest/

10. Ludwig

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

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

官方链接:-https://github.com/uber/ludwig

11. AdaNet


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

AdaNet具有以下目标:


官方链接:https://github.com/tensorflow/adanet

12. Darts(可差分架构搜索)

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

官方链接:-https://github.com/quark0/darts

13. automl-gs

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


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

官方链接:-https://github.com/minimaxir/automl-gs

14. AutoKeras的R接口

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

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

官方文档:https://github.com/r-tensorflow/autokeras

15. TransmogrifAI

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

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

官方链接:https://github.com/salesforce/TransmogrifAI

16. Glaucus


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

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


官方网站:-https://github.com/ccnt-glaucus/glaucus

17. H20 AutoML


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

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

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

18. PocketFlow

PocketFlow是一个开源框架,用于以最少的人力来压缩和加速深度学习模型。深度学习广泛用于计算机视觉,语音识别和自然语言翻译等各个领域。但是,深度学习模型通常在计算上很昂贵,这限制了在计算资源有限的移动设备上的进一步应用。

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


官方链接:-https://github.com/Tencent/PocketFlow

19. Ray


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

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

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

官方链接:https://github.com/ray-project/ray

20. 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编写的,并经过了Python 3.6和python3.6的持续测试。它的随机森林用C ++编写。

结论

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

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

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯