我的编程空间,编程开发者的网络收藏夹
学习永远不晚
位置:首页-资讯-运维

让机器学习自动帮我们建模,这4个Python库能让你大开眼界

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

让机器学习自动帮我们建模,这4个Python库能让你大开眼界

自动机器学习(通常简称为AutoML)是一个新兴的领域,在这个领域中,通过建立机器学习模型来对数据进行建模的过程是自动化的。AutoML能让建模变得更容易,也能让每个人更容易访问。

让机器学习自动帮我们建模,这4个Python库能让你大开眼界_Python库视频_Python库学习视频_Python库课程视频_编程学习网

如果你对AutoML感兴趣,下面这四个Python库是最好的选择!

1.auto-sklearn

auto-sklearn 是一个自动化的机器学习工具库,可与大家都非常熟悉的标准 sklearn 接口无缝集成。通过使用最近的方法,比如贝叶斯优化,该库可被用来导航可能模型的空间,并学会推断特定配置是否能很好地完成给定的任务。

该库由 Matthias Feurer 等人创建,其技术细节在论文《高效和鲁棒的机器学习》中进行了描述,费勒写道:

…我们引入了一个基于scikit-learn的强大的新AutoML系统(使用15个分类器,14个特征预处理方法和4个数据预处理方法,产生了一个包含110个超参数的结构化假设空间)。

auto-sklearn 可能是入门 AutoML 的最佳库了。除了发现数据集的数据准备和模型选择之外,它还可以从相似数据集上表现良好的模型中进行学习,并且可以将效果最佳的模型汇总在一起。

除了高效的实现之外,auto-sklearn 只需要最少的用户交互, 使用 pip install auto-sklearn 即可安装该库。

可以使用的主要类是 AutoSklearnClassifier 和 AutoSklearnRegressor,它们分别用于分类和回归任务。 两者都具有用户指定的相同参数,其中最重要的是时间限制和集合大小。

  1. import autosklearn as ask 
  2. #ask.regression.AutoSklearnRegressor()用于回归任务 
  3. model = ask.classification.AutoSklearnClassifier(ensemble_size=10, #最终集合的大小(最小值为1) 
  4.                                                  time_left_for_this_task=120, #进程运行的秒数 
  5.                                                  per_run_time_limit=30) #每个模型分配的最大秒数 
  6. model.fit(X_train, y_train) #开始拟合搜索模型 
  7. print(model.sprint_statistics()) #打印搜索统计信息 
  8. y_predictions = model.predict(X_test) #从模型中获得预测 

AutoSklearn官方文档:https://automl.github.io/auto-sklearn/master/

2.TPOT

TPOT 是另一个自动化建模的 Python 库,但是该库更加着重于数据准备以及建模算法和模型超参数。它通过一种基于进化树的结构(称为“基于树的管道优化工具(TPOT),可自动设计和优化机器学习管道)来实现特征选择、预处理和构造的自动化。”

程序或管道用树表示。遗传程序选择并进化某些程序,以使每个自动机器学习管道的最终结果最大化。

正如 Pedro Domingos 所说,“垃圾算法遇上海量数据也比数据有限的聪明算法强大。”事实也是如此:TPOT 可以生成复杂的数据预处理管道。

TPOT管道优化器可能需要几个小时才能产生很好的结果,就像很多AutoML算法一样(除非数据集很小)。你也可以在 Kaggle committes 或 googlecolab 中运行这些长程序。

  1. import tpot 
  2. pipeline_optimizer = tpot.TPOTClassifier(generations=5, #进行训练的迭代次数 
  3.                                          population_size=20, #训练的数据量 
  4.                                          cv=5) #StratifiedKFold中的倍数 
  5. pipeline_optimizer.fit(X_train, y_train) #适配管道优化器-可能需要很长时间print(pipeline_optimizer.score(X_test, y_test)) #打印管道评分 
  6. pipeline_optimizer.export('tpot_exported_pipeline.py') #导出管道-用Python代码! 

TPOT 的最好功能是将模型导出为Python代码文件,这样可以方便以后使用。

TPOT 官方文档:https://epistasislab.github.io/tpot/

TPOT 示例:https://epistasislab.github.io/tpot/examples/

3.HyperOpt

HyperOpt 是由 James Bergstra 开发用于贝叶斯优化的 Python 库。该库专为大规模优化具有数百个参数的模型而设计,可显式地用于优化机器学习管道,并具有用于选择跨多个核心和机器的优化过程的选项。

但是,HyperOpt 很难直接使用,因为它非常技术性,并且需要仔细指定优化步骤和参数。相反,建议大家用 HyperOpt-sklearn,一个包含 sklearn 库的 HyperOpt 包装器。

具体来说,HyperOpt 虽然确实支持预处理,但重点仍然放在特定模型中的许多超参数上。如果我们仔细观察 HyperOpt-sklearn的一次搜索结果,就会发现该结果导致没有预处理的梯度提升分类器:

  1. {'learner': GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse', init=None, 
  2.                            learning_rate=0.009132299586303643, loss='deviance'
  3.                            max_depth=None, max_features='sqrt'
  4.                            max_leaf_nodes=None, min_impurity_decrease=0.0, 
  5.                            min_impurity_split=None, min_samples_leaf=1, 
  6.                            min_samples_split=2, min_weight_fraction_leaf=0.0, 
  7.                            n_estimators=342, n_iter_no_change=None, 
  8.                            presort='auto', random_state=2, 
  9.                            subsample=0.6844206624548879, tol=0.0001, 
  10.                            validation_fraction=0.1, verbose=0, 
  11.                            warm_start=False), 'preprocs': (), 'ex_preprocs': ()} 

用于构建 HyperOpt-sklearn 模型的文档:http://hyperopt.github.io/hyperopt-sklearn/。

虽然 HyperOpt 库比 auto-sklearn、TPOT复杂得多,但是如果对于你的模型而已,超参数非常重要,那就值得你去把它用起来。

4.AutoKeras

与标准的机器学习库相比,神经网络和深度学习功能更强大,因此更难实现自动化。

使用 AutoKeras,神经结构搜索算法可以找到最佳的结构,如一个层中的神经元数量、层的数量、要合并的层、特定于层的参数,如过滤器大小或丢失神经元的百分比等。一旦搜索完成,可以将该模型用作普通的 TensorFlow/Keras 模型。

通过使用AutoKeras,我们可以构建一个包含复杂元素(如嵌入和空间缩减)的模型,这些元素对于仍在学习深度学习过程中的人来说是不太容易访问的。

当 AutoKeras 为我们创建模型时,许多预处理,如矢量化或清除文本数据,都会为您完成并优化。

启动和训练搜索需要两条线。AutoKeras 拥有一个类似 Keras 的界面,所以它不难记住和使用。

AutoKeras 支持文本、图像和结构化数据,以及为初学者和寻求更多技术细节的人提供的界面,AutoKeras 使用进化神经结构搜索方法为我们消除繁重的工作和模糊性。

虽然 AutoKeras 运行需要很长时间,但是有许多用户指定的参数可用于控制运行时间、探索的模型数量、搜索空间大小等。

考虑使用 AutoKeras 生成的文本分类任务的这种经过考虑的体系结构。

  1. Hyperparameter      |Value     |Best Value So Far    
  2. text_block_1/block_type|transformer|transformer          
  3. classification_head_1/dropout|0         |0                    
  4. optimizer           |adam      |adam                 
  5. learning_rate       |0.001     |0.001                
  6. text_block_1/max_tokens|20000     |20000                
  7. text_block_1/text_to_int_sequence_1/output_sequence_length|200       |200                  
  8. text_block_1/transformer_1/pretraining|none      |none                 
  9. text_block_1/transformer_1/embedding_dim|32        |32                   
  10. text_block_1/transformer_1/num_heads|2         |2                    
  11. text_block_1/transformer_1/dense_dim|32        |32                   
  12. text_block_1/transformer_1/dropout|0.25      |0.25                 
  13. text_block_1/spatial_reduction_1/reduction_type|global_avg|global_avg           
  14. text_block_1/dense_block_1/num_layers|1         |1                    
  15. text_block_1/dense_block_1/use_batchnorm|False     |False                
  16. text_block_1/dense_block_1/dropout|0.5       |0.5                  
  17. text_block_1/dense_block_1/units_0|20        |20 

对比:你应该用哪一个AutoML库?

如果你的首要任务是需要一个干净,简单的界面和相对快速的结果,请选择使用auto-sklearn。此外:该库与sklearn的自然集成,可与常用的模型和方法一起使用,这样可以对时间有更多的控制作用。

如果你的首要任务是高准确度,不考虑可能需要的长时间训练,则使用TPOT。强调高级预处理方法,通过将管道表示为树结构而成为可能。额外提示:TPOT可以为最佳模型输出Python代码。

如果你的首要任务是高准确度,不考虑可能需要的长时间训练,则可以使用 HyperOpt sklearn。强调模型的超参数优化,不知道是否产生效果,具体情况要取决于数据集和算法。

如果你的问题需要神经网络才能解决,特别是当它以文本或图像的形式出现时,使用AutoKeras。虽然确实需要很长的训练时间,但有很多措施可以控制时间和搜索空间的大小。

免责声明:

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

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

让机器学习自动帮我们建模,这4个Python库能让你大开眼界

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

让机器学习自动帮我们建模,这4个Python库能让你大开眼界

自动机器学习(通常简称为AutoML)是一个新兴的领域,在这个领域中,通过建立机器学习模型来对数据进行建模的过程是自动化的。AutoML能让建模变得更容易,也能让每个人更容易访问。
让机器学习自动帮我们建模,这4个Python库能让你大开眼界
2024-04-23

编程热搜

  • 人工智能你要知道的那些事
    编程学习网:早在1g时代我们只能接打电话。2g时代可以打电话发短信,玩早期的qq,但网络十分不稳定。3g时代带给我们很大的改变就是宽带上网,视频通话,看视频,听歌玩游戏。那时的人们认为4g无用,认为不会有什么改变,但当4g出来时我们才发现这是一次质的飞跃。
    人工智能你要知道的那些事
  • 人工智能无人机管制到底有多难?
    编程学习网:近日,一段“重庆网红列车遭无人机撞击逼停”的视频,在网络热传。
    人工智能无人机管制到底有多难?
  • 人工智能与人类
    欢迎各位阅读本篇,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。本篇文章讲述了人工智能与人类,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    人工智能与人类
  • 两小时 Elasticsearch 性能优化,直接把慢查询干团灭了……
    公共集群的机器负载分布不均衡的问题,业务的查询和流量不可控等各种各样的问题,要节省机器资源就一定会面对这种各种各样的问题,除非土豪式做法,每个业务都拥有自己的机器资源,这里面有很多很多颇具技术挑战的事情。
    两小时 Elasticsearch 性能优化,直接把慢查询干团灭了……
  • 关于OpenStack的架构详细讲解
    欢迎各位阅读本篇文章,OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。本篇文章讲述了关于OpenStack的架构详细讲解,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    关于OpenStack的架构详细讲解
  • AI &神经网络
    欢迎各位阅读本篇,本篇文章讲述了AI &神经网络,人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。神经网络内容丰富,反映了当前国内外该领域的最新研究成果和动向,编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    AI &神经网络
  • 人工智能对于网络安全的优缺点
    编程学习网:如今,产生的数据比以往任何时候都要多。由于数据分析工具的发展,各行各业的组织都更加重视大数据的收集和存储。
    人工智能对于网络安全的优缺点
  • Bash 初学者系列 7:bash 中的条件语句(if else)
    今天我们介绍一下如何在 bash 中使用条件语句。
    Bash 初学者系列 7:bash 中的条件语句(if else)
  • 人工智能机器学习的重要趋势是什么?
    编程学习网:在竞争日益激烈的技术市场中,从高科技初创公司到全球跨国公司都将人工智能视为关键竞争优势。但是,人工智能行业发展如此之快,以至于很难跟踪最新的研究突破和成就,甚至很难应用科学成果来实现业务成果。
    人工智能机器学习的重要趋势是什么?
  • 人工智能为什么会觉得Matplotlib用起来困难?
    编程学习网:Matplotlib是一个流行的Python库,可以很容易地用于创建数据可视化。
    人工智能为什么会觉得Matplotlib用起来困难?

目录