【AutoML】一个用于图像、文本、时间序列和表格数据的AutoML

一个用于图像、文本、时间序列和表格数据的AutoML

  • AutoGluon介绍
    • 安装AutoGluon
    • 快速上手
  • 参考资料

AutoGluon自动化机器学习任务,使您能够在应用程序中轻松实现强大的预测性能。只需几行代码就可以训练和部署有关图像,文本,时间序列和表格数据的高准确机器学习以及深度学习模型。

项目地址:https://github.com/autogluon/autogluon
AutoGluon
本文中的代码使用Google colab实现。

AutoGluon介绍

AutoGluon
AutoGluon: AutoML for Image, Text, Time Series, and Tabular Data
主要特点:

  • 快速原型制作:用几行代码在原始数据上构建机器学习解决方案。
  • 最先进的技术:无需专业知识即可自动利用SOTA模型。
  • 易于部署:从实验到生产云预测因子和预建装容器。
  • 可自定义:可扩展使用自定义功能处理,模型和指标。

快速上手:

pip install autogluon

安装AutoGluon

对于Linux操作环境,如果有GPU,则执行如下:

pip install -U pip
pip install -U setuptools wheel# Install the proper version of PyTorch following https://pytorch.org/get-started/locally/
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --index-url https://download.pytorch.org/whl/cu118pip install autogluon

快速上手

在本教程中将看到如何使用AutoGluon的TabularPredictor来预测基于表格数据集中其他列的目标列的值。

首先确保已安装AutoGluon,然后导入Autogluon的TabulardataTasetTabular Pressixor。我们将使用前者加载数据和后者来训练模型并做出预测。

!python -m pip install --upgrade pip
!python -m pip install autogluon

加载TabulardataTasetTabular Pressixor

from autogluon.tabular import TabularDataset, TabularPredictor

(1)示例数据
在本教程中将使用《自然》杂志第7887期封面故事中的数据集:人工智能引导的数学定理直觉。我们的目标是根据knot(绳结)的特性来预测它的特征。我们从原始数据中抽取了10K 训练和5K 测试的样本。采样的数据集使本教程快速运行,但是如果需要,AutoGluon 可以处理完整的数据集。

直接从URL加载此数据集。Autogluon的Tabulardataset是Pandas DataFrame的一个子类,因此也可以在TabulardatAset上使用任何Dataframe方法。

data_url = 'https://raw.githubusercontent.com/mli/ag-docs/main/knot_theory/'
train_data = TabularDataset(f'{data_url}train.csv')
train_data.head()

训练数据
我们的目标存储在“signature”列中,该列有18个独特的整数。即使pandas没有正确地将此数据类型识别为分类,Autogluon也会解决此问题。

label = 'signature'
train_data[label].describe()

count 10000.000000
mean -0.022000
std 3.025166
min -12.000000
25% -2.000000
50% 0.000000
75% 2.000000
max 12.000000
Name: signature, dtype: float64
(2)训练
现在,我们通过指定“signature”列名称,然后在数据集上使用TagularPredictor.fit()在数据集上进行训练。我们不需要指定任何其他参数。Autogluon将认识到这是一项多类分类任务,执行自动功能工程,训练多个模型,然后将模型集成以创建最终预测器

predictor = TabularPredictor(label=label).fit(train_data)

执行过程如下:

No path specified. Models will be saved in: "AutogluonModels/ag-20240326_144222"
No presets specified! To achieve strong results with AutoGluon, it is recommended to use the available presets.Recommended Presets (For more details refer to https://auto.gluon.ai/stable/tutorials/tabular/tabular-essentials.html#presets):presets='best_quality'   : Maximize accuracy. Default time_limit=3600.presets='high_quality'   : Strong accuracy with fast inference speed. Default time_limit=3600.presets='good_quality'   : Good accuracy with very fast inference speed. Default time_limit=3600.presets='medium_quality' : Fast training time, ideal for initial prototyping.
Beginning AutoGluon training ...
AutoGluon will save models to "AutogluonModels/ag-20240326_144222"
=================== System Info ===================
AutoGluon Version:  1.0.0
Python Version:     3.10.12
Operating System:   Linux
Platform Machine:   x86_64
Platform Version:   #1 SMP PREEMPT_DYNAMIC Sat Nov 18 15:31:17 UTC 2023
CPU Count:          2
Memory Avail:       11.26 GB / 12.67 GB (88.9%)
Disk Space Avail:   41.86 GB / 78.19 GB (53.5%)
===================================================
Train Data Rows:    10000
Train Data Columns: 18
Label Column:       signature
AutoGluon infers your prediction problem is: 'multiclass' (because dtype of label-column == int, but few unique label-values observed).First 10 (of 13) unique label values:  [-2, 0, 2, -8, 4, -4, -6, 8, 6, 10]If 'multiclass' is not the correct problem_type, please manually specify the problem_type parameter during predictor init (You may specify problem_type as one of: ['binary', 'multiclass', 'regression'])
Problem Type:       multiclass
Preprocessing data ...
Warning: Some classes in the training set have fewer than 10 examples. AutoGluon will only keep 9 out of 13 classes for training and will not try to predict the rare classes. To keep more classes, increase the number of datapoints from these rare classes in the training data or reduce label_count_threshold.
Fraction of data from classes with at least 10 examples that will be kept for training models: 0.9984
Train Data Class Count: 9
Using Feature Generators to preprocess the data ...
Fitting AutoMLPipelineFeatureGenerator...Available Memory:                    11534.85 MBTrain Data (Original)  Memory Usage: 1.37 MB (0.0% of available memory)Inferring data type of each feature based on column values. Set feature_metadata_in to manually specify special dtypes of the features.Stage 1 Generators:Fitting AsTypeFeatureGenerator...Note: Converting 5 features to boolean dtype as they only contain 2 unique values.Stage 2 Generators:Fitting FillNaFeatureGenerator...Stage 3 Generators:Fitting IdentityFeatureGenerator...Stage 4 Generators:Fitting DropUniqueFeatureGenerator...Stage 5 Generators:Fitting DropDuplicatesFeatureGenerator...Useless Original Features (Count: 1): ['Symmetry_D8']These features carry no predictive signal and should be manually investigated.This is typically a feature which has the same value for all rows.These features do not need to be present at inference time.Types of features in original data (raw dtype, special dtypes):('float', []) : 14 | ['chern_simons', 'cusp_volume', 'injectivity_radius', 'longitudinal_translation', 'meridinal_translation_imag', ...]('int', [])   :  3 | ['Unnamed: 0', 'hyperbolic_adjoint_torsion_degree', 'hyperbolic_torsion_degree']Types of features in processed data (raw dtype, special dtypes):('float', [])     : 9 | ['chern_simons', 'cusp_volume', 'injectivity_radius', 'longitudinal_translation', 'meridinal_translation_imag', ...]('int', [])       : 3 | ['Unnamed: 0', 'hyperbolic_adjoint_torsion_degree', 'hyperbolic_torsion_degree']('int', ['bool']) : 5 | ['Symmetry_0', 'Symmetry_D3', 'Symmetry_D4', 'Symmetry_D6', 'Symmetry_Z/2 + Z/2']0.1s = Fit runtime17 features in original data used to generate 17 features in processed data.Train Data (Processed) Memory Usage: 0.96 MB (0.0% of available memory)
Data preprocessing and feature engineering runtime = 0.2s ...
AutoGluon will gauge predictive performance using evaluation metric: 'accuracy'To change this, specify the eval_metric parameter of Predictor()
Automatically generating train/validation split with holdout_frac=0.1, Train Rows: 8985, Val Rows: 999
User-specified model hyperparameters to be fit:
{'NN_TORCH': {},'GBM': [{'extra_trees': True, 'ag_args': {'name_suffix': 'XT'}}, {}, 'GBMLarge'],'CAT': {},'XGB': {},'FASTAI': {},'RF': [{'criterion': 'gini', 'ag_args': {'name_suffix': 'Gini', 'problem_types': ['binary', 'multiclass']}}, {'criterion': 'entropy', 'ag_args': {'name_suffix': 'Entr', 'problem_types': ['binary', 'multiclass']}}, {'criterion': 'squared_error', 'ag_args': {'name_suffix': 'MSE', 'problem_types': ['regression', 'quantile']}}],'XT': [{'criterion': 'gini', 'ag_args': {'name_suffix': 'Gini', 'problem_types': ['binary', 'multiclass']}}, {'criterion': 'entropy', 'ag_args': {'name_suffix': 'Entr', 'problem_types': ['binary', 'multiclass']}}, {'criterion': 'squared_error', 'ag_args': {'name_suffix': 'MSE', 'problem_types': ['regression', 'quantile']}}],'KNN': [{'weights': 'uniform', 'ag_args': {'name_suffix': 'Unif'}}, {'weights': 'distance', 'ag_args': {'name_suffix': 'Dist'}}],
}
Fitting 13 L1 models ...
Fitting model: KNeighborsUnif ...0.2232	 = Validation score   (accuracy)0.06s	 = Training   runtime0.02s	 = Validation runtime
Fitting model: KNeighborsDist ...0.2132	 = Validation score   (accuracy)0.04s	 = Training   runtime0.02s	 = Validation runtime
Fitting model: NeuralNetFastAI ...0.9459	 = Validation score   (accuracy)21.81s	 = Training   runtime0.02s	 = Validation runtime
Fitting model: LightGBMXT ...0.9459	 = Validation score   (accuracy)8.91s	 = Training   runtime0.21s	 = Validation runtime
Fitting model: LightGBM ...0.956	 = Validation score   (accuracy)6.37s	 = Training   runtime0.12s	 = Validation runtime
Fitting model: RandomForestGini ...0.9449	 = Validation score   (accuracy)5.6s	 = Training   runtime0.09s	 = Validation runtime
Fitting model: RandomForestEntr ...0.9499	 = Validation score   (accuracy)6.36s	 = Training   runtime0.1s	 = Validation runtime
Fitting model: CatBoost ...0.956	 = Validation score   (accuracy)57.69s	 = Training   runtime0.01s	 = Validation runtime
Fitting model: ExtraTreesGini ...0.9469	 = Validation score   (accuracy)2.16s	 = Training   runtime0.11s	 = Validation runtime
Fitting model: ExtraTreesEntr ...0.9429	 = Validation score   (accuracy)2.06s	 = Training   runtime0.16s	 = Validation runtime
Fitting model: XGBoost ...0.957	 = Validation score   (accuracy)11.36s	 = Training   runtime0.36s	 = Validation runtime
Fitting model: NeuralNetTorch ...0.9409	 = Validation score   (accuracy)41.09s	 = Training   runtime0.01s	 = Validation runtime
Fitting model: LightGBMLarge ...0.9499	 = Validation score   (accuracy)12.24s	 = Training   runtime0.33s	 = Validation runtime
Fitting model: WeightedEnsemble_L2 ...Ensemble Weights: {'NeuralNetFastAI': 0.22, 'RandomForestEntr': 0.22, 'ExtraTreesGini': 0.171, 'KNeighborsUnif': 0.122, 'RandomForestGini': 0.073, 'XGBoost': 0.073, 'LightGBMXT': 0.049, 'NeuralNetTorch': 0.049, 'LightGBMLarge': 0.024}0.966	 = Validation score   (accuracy)1.05s	 = Training   runtime0.0s	 = Validation runtime
AutoGluon training complete, total runtime = 181.72s ... Best model: "WeightedEnsemble_L2"
TabularPredictor saved. To load, use: predictor = TabularPredictor.load("AutogluonModels/ag-20240326_144222")

根据CPU型号模型拟合应花费几分钟或更短的时间。可以通过指定time_limit参数来更快地进行训练。例如,fit(..., time_limit=60)将在60秒后停止训练。较高的时间限制通常会导致更好的预测性能,并且过度较低的时间限制将阻止AutoGluon训练并结合一组合理的模型。
(3)预测
一旦有一个适合训练数据集的predictor,就可以加载一组数据集以用于预测和评估。

test_data = TabularDataset(f'{data_url}test.csv')y_pred = predictor.predict(test_data.drop(columns=[label]))
y_pred.head()

执行结果:

Loaded data from: https://raw.githubusercontent.com/mli/ag-docs/main/knot_theory/test.csv | Columns = 19 / 19 | Rows = 5000 -> 5000
0   -4
1    0
2    0
3    4
4    2
Name: signature, dtype: int64

(4)评估
我们可以使用evaluate()函数在测试数据集上评估predictor,该函数测量predictor在未用于拟合模型的数据上的表现。

predictor.evaluate(test_data, silent=True)

执行结果:

{'accuracy': 0.9462,'balanced_accuracy': 0.7437099196728706,'mcc': 0.9340692878044228}

Autogluon的TabularPredictor还提供了leaderboard()函数,这使我们能够评估每个经过训练的模型在测试数据上的性能。

predictor.leaderboard(test_data)

预测结果
(5)结论
在此教程中,我们看到了Autogluon的基本拟合度,并使用TabularDatasetTabularPredictor预测功能。Autogluon通过不需要特征工程或模型超参数调整来简化模型训练过程。

参考资料

  1. AutoGluon GitHub Repo: https://github.com/autogluon/autogluon
  2. AutoGluon 官方文档:https://auto.gluon.ai/stable/index.html
  3. AutoGluon Quick Start: https://colab.research.google.com/github/autogluon/autogluon/blob/stable/docs/tutorials/tabular/tabular-quick-start.ipynb#scrollTo=EQlCXX50IvBp

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

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

相关文章

记录在项目中引用本地的npm包

1、先把需要的包下载下来,以Photo Sphere Viewer 为引用的npm包、项目以shpereRepo为例子 git clone https://github.com/mistic100/Photo-Sphere-Viewer2、拉下代码后修改之后执行 ./build.sh build.sh #!/usr/bin/env bashyarn run build targetDir"../sh…

mysql安装及操作

一、Mysql 1.1 MySQL数据库介绍 1.1.1 什么是数据库DB? DB的全称是database,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行…

【pytest、playwright】allure报告生成视频和图片

目录 1、修改插件pytest_playwright 2、conftest.py配置 3、修改pytest.ini文件 4、运行case 5、注意事项 1、修改插件pytest_playwright pytest_playwright.py内容如下: # Copyright (c) Microsoft Corporation. # # Licensed under the Apache License, Ver…

Maven package classifier测试

package package阶段会生成一个jar文件,包含了main文件夹下编译后的资源。可作为其他项目的依赖引用。 classifier install后,在仓库中存放的artifact的最终文件,即将package最终文件存入仓库,若在打包时需要加以定制&#xff…

双目的Occupancy——Occdepth

文章目录 论文链接:[https://arxiv.org/pdf/2302.13540.pdf](https://arxiv.org/pdf/2302.13540.pdf)、代码链接: [https://github.com/megvii-research/OccDepth](https://github.com/megvii-research/OccDepth) 网络结构:Stereo moudule 通…

政策导向与行业发展

方向一:政策导向与行业发展 政府工作报告中对计算机行业的政策导向主要包括促进信息技术与实体经济深度融合、推动数字化转型升级、加强网络安全和数据保护等。这些政策的出台将直接影响着计算机行业的发展方向和企业的经营策略。 首先,政府将进一步推…

【线段树二分】第十三届蓝桥杯省赛C++ A组/研究生组 Python 研究生组《扫描游戏》(C++)

【题目描述】 有一根围绕原点 O 顺时针旋转的棒 OA,初始时指向正上方(Y 轴正向)。 在平面中有若干物件,第 i 个物件的坐标为(,),价值为 。 当棒扫到某个物件时,棒的长度会瞬间增长 &#xff…

pycharm使用远程服务器的jupyter环境

1、确保服务器上安装了jupyter,如果没有,执行下面命令安装 pip install jupyter2、启动jupyter notebook服务 jupyter notebook --no-browser --port8888 --ip0.0.0.0 --allow-root表明在服务器的8888 端口上启动 Jupyter Notebook,并允许从任何 IP 地…

基于ACO蚁群优化的UAV最优巡检路线规划算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 蚂蚁移动和信息素更新 4.2 整体优化过程 5.完整程序 1.程序功能描述 基于ACO蚁群优化法的UAV最优巡检路线规划。蚁群优化算法源于对自然界蚂蚁寻找食物路径行为的模拟。在无人机巡检路…

哪些属于“法律、行政法规另有规定,依照其规定进行评估/批准”的情况?

哪些属于“法律、行政法规另有规定,依照其规定进行评估/批准”的情况? 除《网络安全法》《数据安全法》和《个人信息保护法》确立的数据和网络安全整体体系外,企业还应当考虑其他相关法律法规的要求。 例如: ✮如根据《中华人民…

Python(Socket) +Unreal(HTTP)

Python(Socket) Unreal(HTTP) python(Socket):UE:Post请求并发送本机IP 上班咯,好久没记笔记了。。。 局域网 UE的apk,请求Python的Socket 跑起Socket ,UE发 …

科技引领趋势:3D元宇宙展厅在各行业中的应用及其未来展望

随着技术的不断进步,3D元宇宙展厅正逐渐成为各行各业展示产品的新选择。相较于传统的线下展厅,3D元宇宙展厅以其独特的优势,为产品展示和品牌推广提供了全新的可能性。 一、虚拟与现实的完美融合 3D元宇宙展厅是指在虚拟世界中构建的三维展览…

设计模式之抽象工厂模式精讲

概念:为创建一组相关或相互依赖的对象提供一个接口,而且无须指定他们的具体类。 抽象工厂模式是工厂方法模式的升级版本。在存在多个业务品种或分类时,抽象工厂模式是一种更好的解决方式。 抽象工厂模式的UML类图如下: 可以看…

数据结构——第5章 树和二叉树

1 二叉树 二叉树和树都属于树形结构,但两者互不包含。即二叉树不是特殊的树。 1.1 二叉树的基本概念 1.2 二叉树的顺序存储 仅适用于完全二叉树 #define MaxSize 100 typedef int ElemType; typedef struct TreeNode{ElemType value;//结点中的数据元素bool isE…

使用Spark单机版环境

在Spark单机版环境中,可通过多种方式进行实战操作。首先,可使用特定算法或数学软件计算圆周率π,并通过SparkPi工具验证结果。其次,在交互式Scala版或Python版Spark Shell中,可以进行简单的计算、打印九九表等操作&…

Object Detection--Loss Function:从IoU到CIoU

本篇总结Loss Function中的IoU系列代码。 1. IoU 交并集,两个框交集面积除以并集面积。(论写写画画的重要性)(找原文看看) """ box1[x1, y1, x2, y2] box2[x1, y1, x2, y2] return iou ""…

【WEEK5】 【DAY2】文件上传下载【中文版】

2024.3.26 Tuesday 目录 10.文件的上传和下载10.1.准备工作10.2.基础配置10.2.1.新建名为springmvc-08-file的module10.2.2.新建controller文件夹,applicationContext.xml文件 10.3.文件上传10.3.1.在本模块的pom.xml中导入文件上传的jar包:commons-file…

中国土壤总氮含量空间分布数据

总氮,简称为TN,水中的总氮含量是衡量水质的重要指标之一。总氮的定义是水中各种形态无机和有机氮的总量。包括NO3-、NO2-和NH4等无机氮和蛋白质、氨基酸和有机胺等有机氮,以每升水含氮毫克数计算。常被用来表示水体受营养物质污染的程度。 中…

机械结构篇之四足机器人身体设计

欢迎关注微信公众号 “四足机器人研习社”,本公众号的文章和资料和四足机器人相关,包括行业的经典教材、行业资料手册,同时会涉及到职业知识学习及思考、行业发展、学习方法等一些方面的文章。 目录 1.躯干 2.腿部结构 a.轮腿结合式 …

Net8 ABP VNext完美集成FreeSql、SqlSugar,实现聚合根增删改查,完全去掉EFCore

没有基础的,请参考上一篇 彩蛋到最后一张图里找 参考链接 结果直接上图,没有任何业务代码 启动后,已经有了基本的CRUD功能,还扩展了批量删除,与动态查询 动态查询截图,支持分页,排序 实现原理…