草庐IT

全自动化机器学习建模!效果吊打初级炼丹师! ⛵

ShowMeAI 2023-03-28 原文

? 作者:韩信子@ShowMeAI
? 机器学习实战系列https://www.showmeai.tech/tutorials/41
? 本文地址https://www.showmeai.tech/article-detail/289
? 声明:版权所有,转载请联系平台与作者并注明出处
? 收藏ShowMeAI查看更多精彩内容

自动化机器学习,也称为自动化 ML 或 AutoML,是自动化完成开发耗时且需要反复迭代的机器学习建模过程。它让数据科学家、分析师和开发人员轻松构建具有高规模、高效率和生产力的机器学习模型,同时保持模型质量。

常规的机器学习模型开发应用,需要大量时间来构建和比较若干个不同模型。借助自动化机器学习,一些繁琐枯燥的迭代开发环境可以自动完成,提高了效率。

Python 拥有不断增长的开源 AutoML 库生态系统。ShowMeAI在本篇中梳理了截止2022年,最流行和实用的 AutoML 库,其中也有不少企业级应用工具。ShowMeAI本次介绍的AutoML工具库包括:

  • PyCaret
  • H2O AutoML
  • TPOT
  • Auto-sklearn
  • FLAML
  • EvalML
  • AutoKeras
  • Auto-ViML
  • AutoGluon
  • MLBox

? PyCaret

PyCaret 是 Python 中的一个开源、低代码机器学习库,可自动执行机器学习工作流。它也是一个端到端的机器学习和模型管理工具,可以成倍地加快实验周期,提升工作开发效率。

与其他开源机器学习库相比,PyCaret 有着明显的低代码特质,可仅用几行代码完成原本需要数百行代码完成的工作,尤其是对于密集的实验迭代过程可以大大提速。PyCaret 本质上是围绕多个机器学习库和框架封装而成,包括大家熟悉的scikit-learn、XGBoost、LightGBM、CatBoost、spaCy、Optuna、Hyperopt 和 Ray等。

Pycaret的相关资料链接如下:

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e6b9bc122e5a4ec8ac3ba85385589d54~tplv-k3u1fbpfcp-zoom-1.image)

? H2O AutoML

H2O AutoML是另一个很有名的自动化机器学习库,可以帮助我们在有限的时间内自动训练和调优许多模型。

H2O 的核心代码是用 Java 编写的。这些算法在 H2O 的分布式 Map/Reduce 框架之上实现,并利用 Java Fork/Join 框架进行多线程处理。数据被并行读取并分布在集群中,并以压缩方式以列格式存储在内存中。

H2O AutoML 的设计理念是,希望尽量自动化,即用户只需要给定数据集和极少量的参数,即可开始建模和调优,并在指定的时间或者其他约束条件下,尽量找到最佳的模型。

import h2o
from h2o.automl import H2OAutoML

# 初始化
h2o.init()
aml = H2OAutoML(max_models =25,
                balance_classes=True,
                seed = 1)

# 自动建模训练
aml.train(training_frame = X, y = 'y')
lb = aml.leaderboard

# 获取最佳模型
best_model = aml.get_best_model()
print(best_model)

相关的文档可以在 ? 这里 查阅。

? TPOT

TPOT自动化机器学习 (AutoML) 工具库构建在scikit-learn 之上,它使用 Gentic Programming (GP) 来有效地发现给定数据集的最佳模型流水线。

TPOT 使用遗传编程来自动设计和优化一系列数据转换(特征处理)和机器学习模型,并努力最大限度提高给定监督学习数据集的效果。

流程示意图如下:

整个建模调优过程也非常简单,如下2行代码即可完成完整过程。

# 初始化
model = TPOTClassifier(generations=5, population_size=50, cv=cv, scoring='accuracy', verbosity=2, random_state=1, n_jobs=-1)

# 自动化拟合与调优
model.fit(X, y)

关于TPOT的资料可以在它的 ? 文档 和官方 ? GitHub 查看。

? Auto-sklearn

从名字可以看出来,Auto-sklearn 是一个基于sklearn的自动化机器学习工具包。它利用了贝叶斯优化、元学习和集成模型等方法来自动化建模与调优。

使用方法和sklearn非常相似,熟悉sklearn的同学可以无障碍快速应用。示例代码如下:

import autosklearn.classification
# 构建自动化分类器
cls = autosklearn.classification.AutoSklearnClassifier()
# 拟合调优
cls.fit(X_train, y_train)
# 预估
predictions = cls.predict(X_test)

关于Auto-sklearn的资料可以在它的 ? 文档 和官方 ? GitHub 查看。

? FLAML

FLAML 是微软推出的轻量级 Python 自动化机器学习库,可以自动、高效且经济地找到准确的机器学习模型。FLAML还有来自 Visual Studio 2022 中的 ML.NE 模型生成器的 .NET 实现。

FLAML 可以快速找到具有低计算资源的高质量模型。它支持经典机器学习模型和深度神经网络。

关于FLAML的资料可以在它的 ? 文档 和官方 ? GitHub 查看。大家可以在ShowMeAI的教程文章 ? AutoML自动化机器学习建模 中查看FLAML的详细用法,简单的使用示例代码如下:

from flaml import AutoML
# 构建自动化学习器
automl = AutoML()
# 拟合调优
automl.fit(X_train, y_train, task=”classification”)

? EvalML

EvalML这个AutoML工具库使用特定领域的目标函数来构建、优化和评估机器学习流水线。它结合了先进的数据处理与特征工程工具库 ? Featuretools 和 ? Compose,可以非常方便地构建端到端的监督机器学习解决方案。

EvalML 支持多种监督学习任务/问题,如回归、分类(二元和多类)、时间序列分析(包括时间序列回归和分类)等。

关于EvalML的资料可以在它的 ? 文档 和官方 ? GitHub 查看。示例使用方法如下:

from evalml.automl import AutoMLSearch
# 初始化
automl = AutoMLSearch(X_train=X_train, y_train=y_train, problem_type="binary", objective="F1")
# 搜索调优
automl.search()

? AutoKeras

AutoKeras 是一个自动化建模库,主要聚焦在自动搜索 深度学习模型的架构和超参数, 并尽快获得性能最佳的深度学习模型。Auto-Keras的API接口和scikit-learn风格完全一致,容易上手。

它包括用于文本、图像和结构化数据的分类和回归的构建块。选择高级架构后,Autokeras 会自动调整模型。

关于AutoKeras的资料可以在它的 ? 文档 和官方 ? GitHub 查看。示例使用方法如下:

import autokeras
# 初始化分类器
search = autokeras.StructuredDataClassifier(max_trials=15)
# 拟合与寻找最佳网络结构和超参数
search.fit(x=X_train, y=y_train, verbose=0)
# 预估
y_pred = search.predict(X_new) 

? Auto-ViML

Auto-ViML(自动变量可解释机器学习)是一个开源 Python 库,可以训练多个模型并自动识别最佳超参数。它内置大量的数据预处理和可解释性功能:

  • 自动化数据处理与清洗:给定数据集(通常是Dataframe格式),Auto_ViML 会尽量自动化处理缺失值、格式化变量、添加变量等。
  • 特征选择:Auto-ViML自动选择特征变量,当我们特征维度特别高的时候,非常有用。

关于Auto-ViML的资料可以在它的 ? 文档 和官方 ? GitHub 查看。示例使用方法如下:

from autoviml.Auto_ViML import Auto_ViML

#包含所有参数的一个示例代码
model, features, trainm, testm = Auto_ViML(
    train,
    target,
    test,
    sample_submission,
    hyper_param="GS",
    feature_reduction=True,
    scoring_parameter="weighted-f1",
    KMeans_Featurizer=False,
    Boosting_Flag=False,
    Binning_Flag=False,
    Add_Poly=False,
    Stacking_Flag=False,
    Imbalanced_Flag=False,
    verbose=0,
)

? AutoGluon

AutoGluon 是一个由 AWS 开源的为深度学习开发优化而生的 autoML 框架。除了结构化表格数据,它还支持图像分类、目标检测和自然语言处理任务。

AutoGluon 的核心功能包括:

  • 自动化寻找性能最佳的深度学习架构和超参数。
  • 模型选择和自动超参数调优。
  • 自动化数据预处理。

关于 AutoGluon 的资料可以在它的 ? 文档 和官方? GitHub 查看。示例使用方法如下:

from autogluon.tabular import TabularDataset, TabularPredictor
# 构建训练集与测试集表格数据
train_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv')
test_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv')
# 自动拟合与优化
predictor = TabularPredictor(label='class').fit(train_data=train_data)
# 预估
predictions = predictor.predict(test_data)

? MLBox

MLBox 是一个开源的 AutoML Python 库。覆盖如下的强大功能:

  • 特征选择、缺失值填充和异常值检测。
  • 更快效果更好的数据预处理。
  • 自动超参数优化。
  • 用于分类和回归的自动模型选择。
  • 模型预测与模型可解释性。

关于MLBox的资料可以在它的 ? 文档 和官方 ? GitHub 查看。示例使用方法如下:

import mlbox as mlb
# 数据自动化预处理
data = mlb.preprocessing.Drift_thresholder().fit_transform(data)
# 优化与拟合预估
best = mlb.optimisation.Optimiser().evaluate(None, data)
mlb.prediction.Predictor().fit_predict(best, data)

参考资料

有关全自动化机器学习建模!效果吊打初级炼丹师! ⛵的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  3. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  4. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  5. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  6. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  7. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  8. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  9. ruby-on-rails - 有没有一种工具可以在编码时自动保存对文件的增量更改? - 2

    我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功

  10. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

随机推荐