AutoML工具-AutoGluon

news2024/10/2 12:34:14

1、简介

AutoGluon是AutoML的自动化工具,涉及方面有图像、文本、时间序列和表格式数据。

2、入门

2.1 安装

pip install autogluon

2.2 使用

(1)Tabular(解释是表格式数据,不知道对不对)

两个函数TabularDataset、TabularPredictor

例子参看:AutoGluon Tabular - Quick Start - AutoGluon 0.8.2 documentation

流程:training、prediction、evaluation

(2)Multimodal(多模式)

一个函数MultiModalPredictor

例子参看:AutoGluon Multimodal - Quick Start - AutoGluon 0.8.2 documentation

流程:training、prediction、evaluation

(3)Time Series(时间序列)

两个函数TimeSeriesDataFrame, TimeSeriesPredictor

例子参看:AutoGluon Time Series - Forecasting Quick Start - AutoGluon 0.8.2 documentation

流程:training、prediction、evaluation

该模型支持:GPU

3、进阶

(1)Tabular

目标:完成分类和回归任务

以分类为例,下图是基本实现流程:

from autogluon.tabular import TabularDataset, TabularPredictor


#准备数据
train_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv')
subsample_size = 500  # subsample subset of data for faster demo, try setting this to much larger values
train_data = train_data.sample(n=subsample_size, random_state=0)
train_data.head()


#测试集数据
test_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv')
y_test = test_data[label]  # values to predict
test_data_nolab = test_data.drop(columns=[label])  # delete label column to prove we're not cheating
test_data_nolab.head()


#标签值
label = 'class'
print("Summary of class variable: \n", train_data[label].describe())

#模型训练和保存
save_path = 'agModels-predictClass'  # specifies folder to store trained models
predictor = TabularPredictor(label=label, path=save_path).fit(train_data)


#加载模型,预测评估
predictor = TabularPredictor.load(save_path)  # unnecessary, just demonstrates how to load previously-trained predictor from file

y_pred = predictor.predict(test_data_nolab)
print("Predictions:  \n", y_pred)
perf = predictor.evaluate_predictions(y_true=y_test, y_pred=y_pred, auxiliary_metrics=True)


#在测试集评估模型性能
predictor.leaderboard(test_data, silent=True)

此外,还可进行调参:

from autogluon.common import space

nn_options = {  # specifies non-default hyperparameter values for neural network models
    'num_epochs': 10,  # number of training epochs (controls training time of NN models)
    'learning_rate': space.Real(1e-4, 1e-2, default=5e-4, log=True),  # learning rate used in training (real-valued hyperparameter searched on log-scale)
    'activation': space.Categorical('relu', 'softrelu', 'tanh'),  # activation function used in NN (categorical hyperparameter, default = first entry)
    'dropout_prob': space.Real(0.0, 0.5, default=0.1),  # dropout probability (real-valued hyperparameter)
}

gbm_options = {  # specifies non-default hyperparameter values for lightGBM gradient boosted trees
    'num_boost_round': 100,  # number of boosting rounds (controls training time of GBM models)
    'num_leaves': space.Int(lower=26, upper=66, default=36),  # number of leaves in trees (integer hyperparameter)
}

hyperparameters = {  # hyperparameters of each model type
                   'GBM': gbm_options,
                   'NN_TORCH': nn_options,  # NOTE: comment this line out if you get errors on Mac OSX
                  }  # When these keys are missing from hyperparameters dict, no models of that type are trained

time_limit = 2*60  # train various models for ~2 min
num_trials = 5  # try at most 5 different hyperparameter configurations for each type of model
search_strategy = 'auto'  # to tune hyperparameters using random search routine with a local scheduler

hyperparameter_tune_kwargs = {  # HPO is not performed unless hyperparameter_tune_kwargs is specified
    'num_trials': num_trials,
    'scheduler' : 'local',
    'searcher': search_strategy,
}  # Refer to TabularPredictor.fit docstring for all valid values

predictor = TabularPredictor(label=label, eval_metric=metric).fit(
    train_data,
    time_limit=time_limit,
    hyperparameters=hyperparameters,
    hyperparameter_tune_kwargs=hyperparameter_tune_kwargs,
)

模型集成(stacking/bagging):


predictor = TabularPredictor(label=label, eval_metric=metric).fit(train_data,
    num_bag_folds=5, num_bag_sets=1, num_stack_levels=1,
    hyperparameters = {'NN_TORCH': {'num_epochs': 2}, 'GBM': {'num_boost_round': 20}},  # last  argument is just for quick demo here, omit it in real applications
)

核心参数是num_bag_folds和num_stack_levels等,但是会增加训练时间和内存占用,num_bag_sets控制k-fold进程的时间,auto_stack自动进行stack操作

特征工程是常见操作,对数据处理,缺失值,任务类型判断等任务进行相应操作。详见:AutoGluon Tabular - Feature Engineering - AutoGluon 0.8.2 documentation

(2)Multimodal Prediction

MultiModal是基于Huggingface,实现任务如下图:

 (3)Time Series

时间序列支持的模型

  • 简单预测模型:ARIMA,ETS,Theta
  • 深度学习模型:DeepAR, Temporal Fusion Transformer
  • 树模型:LightGBM
  • 集成模型

 特征工程:

(1)静态变量

可以在数据集增加静态变量,例如位置信息(国家、州、城市)、产品的性质(品牌、颜色、大小、重量等)

(2)跟时间相关的变量

已知变量(known covariates):例如假期、工作日、周末等

过去变量(past covariates):促销信息、售卖产品信息等

Backtesting:

使用多窗口滑动测试

4、 总结

具体详细用法可以查看官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/836327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue使用QuillEditor富文本编辑器问题记录

1.内容绑定的问题 绑定内容要使用 v-model:content"xxx" 的形式。 2.设置字体字号 字体以及字号大小的设置需要先注册。 <script> import { QuillEditor,Quill } from vueup/vue-quill import vueup/vue-quill/dist/vue-quill.snow.css; // 设置字体大小 c…

认识聚类算法【机器学习必学】

什么是聚类算法? 聚类算法是一种典型的无监督学习算法&#xff0c;主要用于将相似的样本自动归到一个类别中。 在聚类算法中根据样本之间的相似性&#xff0c;将样本划分到不同的类别中&#xff0c;对于不同的相似度计算方法&#xff0c;会得到不同的聚类结果&#xff0c;常…

为代码生成一个良好可读的API文档-Doxygen简单实战

需求&#xff1f;为什么要有API文档 在代码开发过程中&#xff0c;我们会发现有这样的情况&#xff0c;其他团队的代码和自己团队的代码相异甚大&#xff0c;如果没有一个统一规范的文档来对接&#xff0c;会造成很多交流沟通上的不便&#xff0c;但我们又不想浪费时间去边写说…

探索产品项目管理软件的种类及功能

随着科技的不断发展&#xff0c;越来越多的企业开始重视产品项目管理的重要性。产品项目管理软件作为一种有效的工具&#xff0c;可以帮助企业更好地规划、执行和控制项目&#xff0c;提高项目的成功率。本文将分为两部分&#xff0c;分别介绍产品项目管理软件的功能以及一些知…

微信认证申请流程(其他组织)

第一步&#xff1a;登录微信公众平台->设置->微信认证->开通 第二步&#xff1a;同意协议&#xff1a;签署《微信公众平台认证服务协议》 第三步&#xff1a;验证管理员 第三步&#xff1a;选择认证类型及填写认证资料 选择认证类型及上传申请公函 其他组织资质信息 …

制作分班查询系统必备软件,轻松解决分班查询烦恼

常用的分班查询系统制作工具有以下几种&#xff1a; 1. 编程语言和框架&#xff1a;使用编程语言和相关的框架&#xff0c;如Java、Python、PHP等&#xff0c;可以自行开发分班查询系统。这种方式可以根据学校的具体需求进行定制开发&#xff0c;灵活性较高。 2. 数据库管理系…

管理类联考——逻辑——形式逻辑——汇总篇——专业术语

专业术语 专业术语 日常描述 符号化 符号表达 表达含义 常见标志词充分条件假言判断如果P&#xff0c;那么Q→P→Q如果P为真&#xff0c;则Q一定为真&#xff1b;如果Q为假&#xff0c;那么P一定为假。也就是P→Q和┐Q→┐P一定为真。如果P&#xff0c;那么Q&#xff1b;只要P&…

51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 实验三 LED流水灯

目录 前言 一、原理图及知识点介绍 二、代码分析 知识点五&#xff1a;#include 中的库函数解析 _crol_&#xff0c;_irol_&#xff0c;_lrol_ _cror_&#xff0c;_iror_&#xff0c;_lror_ _nop_ _testbit_ 前言 第一个实验:51单片机&#xff08;普中HC6800-EM3 V3.0…

OpenLayers入门,OpenLayers使用fetch加载并显示TopoJson格式区划边界数据并叠加文字标注,动态创建要素样式

专栏目录: OpenLayers入门教程汇总目录 前言 上一章中已经说明了TopoJson格式数据,《OpenLayers入门,OpenLayers加载TopoJson数据,使用行政区划边界作为示例》,大家应该都已经有所了解。 本章在上一章基础上改用fetch加载TopoJson格式数据,并手动解析数据为Feature要素…

学习单片机的秘诀:实践与坚持

在学习单片机时&#xff0c;将实践与学习结合起来是一个很好的方法。不要一上来就死磕指令和名词&#xff0c;而是边学边做实验&#xff0c;循序渐进地理解和应用指令。通过实验&#xff0c;你能亲身感受到指令的控制效果&#xff0c;增强对单片机的理解和兴趣。 学习单片机不…

LeetCode344.反转字符串

344.反转字符串 题目描述 解题思路 这是字符串专题的第一题 在之前反转链表的题目中&#xff0c;我们使用了双指针法来进行反转链表 这道题同样的&#xff0c;也使用双指针&#xff0c;对于字符串的反转&#xff0c;比链表更为简单 因为字符串本质上是一种数组&#xff0c…

Paleobotany——北美中生代-新生代化石植物总目(Paleobotanical card search)

北美中生代-新生代化石植物总目&#xff08;Paleobotanical card search&#xff09; 总览1. 介绍2. 历史3. 内容 用户手册&#xff08;卡片内容解读&#xff09;示例卡片组成CIC编号的详细解读年代编码解读 卡片检索 总览 了解学习使用由耶鲁皮博迪自然历史博物馆&#xff08…

印度想建设6G强国,是梦想还是幻想?

拥有14亿人口的印度&#xff0c;也是一个充满梦想与野心的国家&#xff0c;印度一直在努力追赶科技的发展&#xff0c;尤其是通信领域。印度目标是在2030年成为6G强国&#xff0c;然而其计划与现实之间还存在着巨大的鸿沟。 本报告分别从印度互联网普及率、城乡差异、用户性别、…

MySql006——检索数据:基础select语句

在《MySql003——结构化查询语言SQL基础知识》中&#xff0c;我们学习了有关SQL的基础知识&#xff0c;也知道SQL中查询语句select使用最为频繁。 它的用途是从一个或多个表中检索信息。为了使用SELECT检索表数据&#xff0c;必须至少给出两条信息——想选择什么&#xff0c;以…

AOP获取切点表达式中注解的属性

文章目录 1、获取Cacheable注解的属性2、获取自定义注解的属性 1、获取Cacheable注解的属性 有个小需求&#xff0c;要在日志中打印支持redis缓存的方法的相关信息&#xff0c;这里切点表达式动词用annotation&#xff0c;后面跟Cacheable注解 Component Aspect Slf4j public…

Vue2+TS封装一个可全局拖拽的弹窗组件

Vue2TS封装一个可全局拖拽的弹窗组件 ant组件的弹窗组件不支持拖拽&#xff0c;就很难受 项目里刚好有这个需求&#xff0c;就自己封装了一个 效果图&#xff1a; vue部分: <template><div class"image-standard-modal":style"{ top: top px, left…

Unity面试题:热更新篇

请简要介绍Unity热更新的原理和实现方式。 答&#xff1a;Unity热更新的原理是通过将游戏的资源和代码分离&#xff0c;将代码部分放置在服务器端&#xff0c;游戏启动时通过网络下载更新的代码并动态加载&#xff0c;以达到实现热更新的目的。实现方式包括AssetBundle、ILRunt…

【ArcGIS Pro二次开发】(57):地图系列

在ArcGIS Pro中&#xff0c;有一个地图系列&#xff0c;可以在一个布局中导出多个地图。 在SDK中为ArcGIS.Desktop.layout.MapSeries类和映射系列导出选项&#xff0c;可以以支持多页导出。 MapSeries类提供了一个静态CreateSpatialMapSeries方法&#xff0c;该方法使用指定的…

你是否好奇交流充电桩主板的安装维度?

你是否好奇交流充电桩主板的安装维度?安装环境、要求和方式&#xff0c;将影响充电桩的可靠性和安全性。 交流充电桩主板的安装环境至关重要&#xff0c;设备需要安装在室外&#xff0c;因此应选择防水、防火、耐候、耐腐蚀的材料。同时&#xff0c;安装要求具有良好的接地&am…

Redis入门-1

简介 nosql的一种&#xff0c;不是替代传统的sql&#xff0c;而是对传统的sql进行补充增强。redis用于短时间的高访问&#xff0c;其数据是存储在内存上的。 应用场景&#xff1a; 缓存 任务队列 消息队列 分布式锁 Linux系统上安装Redis 运行redis,进入/usr/local/redis-…