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

如果你对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,它们分别用于分类和回归任务。 两者都具有用户指定的相同参数,其中最重要的是时间限制和集合大小。import autosklearn as ask

#ask.regression.AutoSklearnRegressor()用于回归任务

model = ask.classification.AutoSklearnClassifier(ensemble_size=10, #最终集合的大小(最小值为1)

time_left_for_this_task=120, #进程运行的秒数

per_run_time_limit=30) #每个模型分配的最大秒数

model.fit(X_train, y_train) #开始拟合搜索模型

print(model.sprint_statistics()) #打印搜索统计信息

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 中运行这些长程序。import tpot

pipeline_optimizer = tpot.TPOTClassifier(generations=5, #进行训练的迭代次数

population_size=20, #训练的数据量

cv=5) #StratifiedKFold中的倍数

pipeline_optimizer.fit(X_train, y_train) #适配管道优化器-可能需要很长时间print(pipeline_optimizer.score(X_test, y_test)) #打印管道评分

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的一次搜索结果,就会发现该结果导致没有预处理的梯度提升分类器:{'learner': GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse', init=None,

learning_rate=0.009132299586303643, loss='deviance',

max_depth=None, max_features='sqrt',

max_leaf_nodes=None, min_impurity_decrease=0.0,

min_impurity_split=None, min_samples_leaf=1,

min_samples_split=2, min_weight_fraction_leaf=0.0,

n_estimators=342, n_iter_no_change=None,

presort='auto', random_state=2,

subsample=0.6844206624548879, tol=0.0001,

validation_fraction=0.1, verbose=0,

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 生成的文本分类任务的这种经过考虑的体系结构。Hyperparameter      |Value     |Best Value So Far

text_block_1/block_type|transformer|transformer

classification_head_1/dropout|0         |0

optimizer           |adam      |adam

learning_rate       |0.001     |0.001

text_block_1/max_tokens|20000     |20000

text_block_1/text_to_int_sequence_1/output_sequence_length|200       |200

text_block_1/transformer_1/pretraining|none      |none

text_block_1/transformer_1/embedding_dim|32        |32

text_block_1/transformer_1/num_heads|2         |2

text_block_1/transformer_1/dense_dim|32        |32

text_block_1/transformer_1/dropout|0.25      |0.25

text_block_1/spatial_reduction_1/reduction_type|global_avg|global_avg

text_block_1/dense_block_1/num_layers|1         |1

text_block_1/dense_block_1/use_batchnorm|False     |False

text_block_1/dense_block_1/dropout|0.5       |0.5

text_block_1/dense_block_1/units_0|20        |20

AutoKeras 教程:https://towardsdatascience.com/automl-creating-top-performing-neural-networks-without-defining-architectures-c7d3b08cddc

AutoKeras官方文档:https://autokeras.com/

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

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

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

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

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

python让solidworks自动建模_让机器学习自动帮我们建模,这4个Python库能让你大开眼界...相关推荐

  1. python dag调度系统开发_基于机器学习的DAG调度平台

    什么是DAG? 有向无环图 树形结构:除根节点,每个节点有且仅有一个上级节点,下级节点不限.根节点没有上级节点. 图结构:每个节点上级.下级节点数不限. DAG调度平台的定义及场景 任务调度是在各行各 ...

  2. python 建筑建模_基于CityEngine的建筑物自动化建模

    近年来, 全国很多城市都在进行数字城市建设, 推进城市信息化进程[.数字城市是运用3S.遥测.仿真-虚拟等技术,以计算机技术.多媒体技术和大规模存储技术为基础,以宽带网络为纽带,实现对城市多尺度.多时 ...

  3. 32岁了学python来的及吗_为什么每个人都应该在2020年学习Python?

    如今每个人都在谈论 Python,包括那些曾经对 Python 嗤之以鼻的人.本文作者 Javinpaul 原是一名 Java 狂热粉,他以前还曾号召大家学习 Java 而不是 Python.如今他的 ...

  4. python好用的软件_【分享|10款超好用的辅助Python的软件,初学者请查收!】- 环球网校...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注Py ...

  5. python获取历史双色球数据_你的梦想,我来买单!Python分析双色球中奖号码竟成功获取特等奖

    关于双色球的话题估计大家都听的很多,毕竟成本很低,但是收获很高.毕竟当利润达到100%时,就有人敢于铤而走险.当利润达到200%时,他们就敢于冒上断头台的危险. 而当利润达到300%他们就会践踏人间的 ...

  6. python做erp系统教程_“python2.7教程廖雪峰“刚开始学openERP Python,如何快速入门?...

    为什么廖雪峰的JS教程不如Python 教程 娃娃哈 廖雪峰python教程在哪 这是他的网址:www.liaoxuefeng.com 这是python专有python2.7,python3,可供选择 ...

  7. python print end报错_下面代码的输出结果是 for i in Python: print(i,end= )_学小易找答案...

    [单选题]关于Python字符串,以下选项中描述错误的是 [单选题]以下程序的输出结果是: lcat =["狮子","猎豹","虎猫",&q ...

  8. is在python中是什么意思_【IT专家】关键字:is和=在python中有什么区别

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 关键字: is 和 = 在 python 中有什么区别 关键字: is 和 = 在 python 中有什么区别 [ 英 ]What is the ...

  9. python人工智能方向面试准备_关于机器学习面试的经典题目(面试经验和建议)...

    今年年初以来,作者一直在印度找数据科学.机器学习以及深度学习领域的工作.在找工作的这三十四天里,他面试了8到10家公司,其中也包括初创公司.基于服务的公司以及基于产品的公司.作者希望他的面试经验能够为 ...

  10. 基于python对天气的预测_使用机器学习预测天气(第一部分)

    概述 本章是使用机器学习预测天气系列教程的第一部分,使用Python和机器学习来构建模型,根据从Weather Underground收集的数据来预测天气温度.该教程将由三个不同的部分组成,涵盖的主题 ...

最新文章

  1. angularJs 跨控制器与跨页面传值
  2. 因为高考砸了,所以大学一直在超越
  3. Matlab图像处理创新实践-实验3【图像锐化】
  4. 怎么new一个指针_19. Go语言里的 make 和 new 有什么区别?
  5. spring restTemplate使用方法
  6. Leetcode-204 Count Primes
  7. python selenium 自动化 第四章-实用selenium+python实现web自动化测试第四节
  8. 【java】Applet显示阶乘结果
  9. 均匀三次b样条曲线_西门子数控曲线加工进给速度优化指令
  10. Xna环境在PC平台下的功能扩展
  11. c语言给定n个矩形及其长和宽,七年级数学秋季学期期末考试试题
  12. 光纤是计算机网络介质之一,计算机网络技术传输介质--光纤.pptx
  13. python判断用户名密码是否正确_Python 判断输入的用户名和密码是否正确
  14. R语言作图——Lollipop chart(棒棒糖图)
  15. GRUB legacy和GRUB 2介绍 与 命令【包含kernel 与 initrd的详解】使用
  16. unity剩余高度自适应实现办法
  17. Kubernetes 污点和容忍
  18. Linux作业 实现一个特殊的备份工具bak
  19. php中电话号码输入框,php中固定电话号码和手机号码正则表达式验证
  20. 【CE入门教程】使用Cheat Engine(CE)修改游戏“植物大战僵尸”之植物篇

热门文章

  1. 我家猫老喜欢和我躲猫猫,我用Python赶忙写了个猫脸检测器。在哪里都逃不出我的手心。
  2. 使用Excel条件格式-重复值
  3. 闲话英特尔发展史中的尴尬瞬间(1)-名不副实的MMX
  4. 简单学习一下ibd数据文件解析
  5. 大话设计模式之爱你一万年:大话设计模式之爱你一万年由来
  6. 学excel还是学python_以Excel处理为目的学习python还是VBA?
  7. linux中进程unit是什么意思,Unit(linux)基础命令
  8. DC影视作品及观看顺序
  9. ourplay插件_ourplay64位辅助包
  10. 分布式搜索引擎es原理