当前位置:首页 > 科技  > 知识百科

用开源项目AutoXGB助力AutoML开发,实现几行代码构建应用API 译文

来源: 责编: 时间:2023-08-07 16:30:07 144观看
导读 译者 | 朱先忠审校 | 梁策 孙淑娟AutoML简介自动机器学习(AutoML)能够自动运行各种机器学习过程,并优化错误度量以生成最佳模型。这些过程包括数据预处理、编码、缩放、优化

译者 | 朱先忠GZW28资讯网——每日最新资讯28at.com

审校 | 梁策 孙淑娟GZW28资讯网——每日最新资讯28at.com

AutoML简介GZW28资讯网——每日最新资讯28at.com

GZW28资讯网——每日最新资讯28at.com

自动机器学习(AutoML)能够自动运行各种机器学习过程,并优化错误度量以生成最佳模型。这些过程包括数据预处理、编码、缩放、优化超参数、模型训练、生成制品和结果列表。自动化机器学习过程可以快速开发人工智能解决方案,让用户体验变得友好,并通常以低代码即可生成准确结果。GZW28资讯网——每日最新资讯28at.com

目前市场上流行的一些著名AutoML库包括:GZW28资讯网——每日最新资讯28at.com

LightAutoMLMLJarEvalMLFLAMLPyCaretAutoGluonH2O 3GZW28资讯网——每日最新资讯28at.com

在这篇教程中,我们将使用美国1994年人口普查时的收入数据来预测一个人的年收入是否超过5万美元。这是一个经典的二分类问题,我们将在CC0公共域许可下使用Kaggle成人普查收入数据集进行预测。该数据由美国硅图公司(SGI,Silicon Graphics)数据挖掘和可视化部门的罗尼·克哈伊(Ronny Kohavi)和巴里·贝克尔(Barry Becker)从美国1994年人口普查局数据库中提供。但是,我们这里不去深入研究数据分析或模型工作方式,只是仅用几行代码来构建一个优化的机器学习模型,并使用FastAPI服务器对该模型进行访问。GZW28资讯网——每日最新资讯28at.com

AutoXGB项目简介GZW28资讯网——每日最新资讯28at.com

AutoXGB是一个开源、简单、有效的AutoML辅助开发工具,可以直接从CSV文件中训练模型表格数据集。AutoXGB使用XGBoost(优化的分布式梯度增强库)来训练模型,使用Optuna(为机器学习、深度学习特别设计的自动超参数优化框架)进行超参数优化,并使用基于Python的FastAPI框架并以API的形式提供模型推理。GZW28资讯网——每日最新资讯28at.com

下面让我们从安装AutoXGB开始介绍。如果在运行服务器时遇到错误,请确保预先已正确安装了FastAPI框架和unvicorn服务器程序。安装AutoXGB的命令如下:GZW28资讯网——每日最新资讯28at.com

pip install autoxgbGZW28资讯网——每日最新资讯28at.com
初始化GZW28资讯网——每日最新资讯28at.com

接下来,我们将深入介绍AutoXGB函数的特征,以及如何使用与之相关的各项参数来改进计算结果或减少训练时间。AutoXGB函数的各项参数含义说明如下:GZW28资讯网——每日最新资讯28at.com

train_filename:训练数据所在的路径。output:存储工件的输出文件夹的路径。test_filename:测试数据所在路径。如果未指定,则仅保存折外预测(out-of-fold predictions,简称“OOF预测”)数据。task:如果未指定该参数值,系统将自动推断其值。此参数有两个取值:GZW28资讯网——每日最新资讯28at.com

1."classification"GZW28资讯网——每日最新资讯28at.com

2."regression"GZW28资讯网——每日最新资讯28at.com

idx:如果未指定该参数值,系统将自动使用名称id生成 id列。targets:如果未指定该参数值,则假定目标列被命名为目标(target),并将该问题视为一个二分类、多类分类或单列回归三种问题之一。此参数可以使用如下两种取值:GZW28资讯网——每日最新资讯28at.com

1.["target"]GZW28资讯网——每日最新资讯28at.com

2.["target1", "target2"]GZW28资讯网——每日最新资讯28at.com

features:如果未指定该参数值, 除去id、targets和kfold列外的所有列都会被使用。指定值方式例如:GZW28资讯网——每日最新资讯28at.com

1.features = ["col1", "col2"]GZW28资讯网——每日最新资讯28at.com

categorical_features:如果未指定该参数值,将自动推断分类列。指定值方式例如:GZW28资讯网——每日最新资讯28at.com

1.categorical_features = ["col1", "col2"]GZW28资讯网——每日最新资讯28at.com

use_gpu:如果未指定该参数值,将不启用GPU计算功能。指定值方式例如:GZW28资讯网——每日最新资讯28at.com

1.use_gpu = TrueGZW28资讯网——每日最新资讯28at.com

2.use_gpu = FalseGZW28资讯网——每日最新资讯28at.com

num_folds:用来进行交叉验证的折(fold)的个数。seed:随机种子的重复性。num_trials:运行的Optuna试验次数;默认值为1000。time_limit:以秒计量的optuna试验时限。GZW28资讯网——每日最新资讯28at.com

1.如果未指定,将运行所有试验。此时(默认)有time_limit = None。GZW28资讯网——每日最新资讯28at.com

fast:如果fast参数值设置为True,超参数调整将只使用一次,从而减少优化时间。之后,将在折(fold)的其余部分进行训练,并生成OOF和测试预测。GZW28资讯网——每日最新资讯28at.com

在我们的测试项目中,除了参数train_filename、output、target、num_folds、seed、num_trails和time_limit之外,我们将大多数参数的值设置为默认值。项目中各参数的完整设置情况,如下所示:GZW28资讯网——每日最新资讯28at.com

from autoxgb import AutoXGBGZW28资讯网——每日最新资讯28at.com
train_filename = "binary_classification.csv"GZW28资讯网——每日最新资讯28at.com
output = "output"GZW28资讯网——每日最新资讯28at.com
test_filename = NoneGZW28资讯网——每日最新资讯28at.com
task = NoneGZW28资讯网——每日最新资讯28at.com
idx = NoneGZW28资讯网——每日最新资讯28at.com
targets = ["income"]GZW28资讯网——每日最新资讯28at.com
features = NoneGZW28资讯网——每日最新资讯28at.com
categorical_features = NoneGZW28资讯网——每日最新资讯28at.com
use_gpu = FalseGZW28资讯网——每日最新资讯28at.com
num_folds = 5GZW28资讯网——每日最新资讯28at.com
seed = 42GZW28资讯网——每日最新资讯28at.com
num_trials = 100GZW28资讯网——每日最新资讯28at.com
time_limit = 360GZW28资讯网——每日最新资讯28at.com
fast = FalseGZW28资讯网——每日最新资讯28at.com
训练与优化GZW28资讯网——每日最新资讯28at.com

现在,我们可以使用AutoXGB函数定义模型,并将之前定义的参数添加到模型中。最后,我们将调用axgb.train()函数开始训练过程。此时,将运行XGBoost和Optuna,并输出各种制品(包括模型、预测、结果、配置、参数、编码器等)。GZW28资讯网——每日最新资讯28at.com

axgb = AutoXGB(GZW28资讯网——每日最新资讯28at.com
train_filename=train_filename,GZW28资讯网——每日最新资讯28at.com
output=output,GZW28资讯网——每日最新资讯28at.com
test_filename=test_filename,GZW28资讯网——每日最新资讯28at.com
task=task,GZW28资讯网——每日最新资讯28at.com
idx=idx,GZW28资讯网——每日最新资讯28at.com
targets=targets,GZW28资讯网——每日最新资讯28at.com
features=features,GZW28资讯网——每日最新资讯28at.com
categorical_features=categorical_features,GZW28资讯网——每日最新资讯28at.com
use_gpu=use_gpu,GZW28资讯网——每日最新资讯28at.com
num_folds=num_folds,GZW28资讯网——每日最新资讯28at.com
seed=seed,GZW28资讯网——每日最新资讯28at.com
num_trials=num_trials,GZW28资讯网——每日最新资讯28at.com
time_limit=time_limit,GZW28资讯网——每日最新资讯28at.com
fast=fast,GZW28资讯网——每日最新资讯28at.com
)GZW28资讯网——每日最新资讯28at.com
axgb.train()GZW28资讯网——每日最新资讯28at.com

训练过程耗时10-12分钟,我们可以看到下面的最佳训练结果,并可以通过增加时间限制来提高F1分数。此外,我们还可以使用其他超参数来提高模型性能。GZW28资讯网——每日最新资讯28at.com

2022-02-09 18:11:27.163 | INFO | autoxgb.utils:predict_model:336 - Metrics: {'auc': 0.851585935958628, 'logloss': 0.3868651767621002, 'f1': 0.5351485750859325, 'accuracy': 0.8230396087432015, 'precision': 0.7282822005864846, 'recall': 0.42303153575005525}GZW28资讯网——每日最新资讯28at.com
使用CLI命令行进行训练GZW28资讯网——每日最新资讯28at.com

为了使用bash终端方式进行模型训练,我们可以使用命令autoxgb train。此时,我们将只需设置train_filename和output两个参数即可。其中,参数train_filename用于确定训练的二分类文件名,而参数output用于指出输出文件夹位置。命令如下:GZW28资讯网——每日最新资讯28at.com

autoxgb train GZW28资讯网——每日最新资讯28at.com
--train_filename binary_classification.csv GZW28资讯网——每日最新资讯28at.com
--output output GZW28资讯网——每日最新资讯28at.com
Web APIGZW28资讯网——每日最新资讯28at.com

通过在终端中运行autoxgb 服务的方式,我们可以在本地运行FastAPI服务器。GZW28资讯网——每日最新资讯28at.com

GZW28资讯网——每日最新资讯28at.com

AutoXGB服务参数model_path:指向模型文件的路径。在本文测试中,指向输出文件夹。Port:服务器主机运行的端口号,值为8080。host:运行的服务器主机,IP地址是:0.0.0.0。workers:工作线程数或同时请求的数量。debug:显示错误和成功的日志。在Deepnote云服务器上运行GZW28资讯网——每日最新资讯28at.com

为了在云上运行服务器,Deepnote使用ngrok创建了一个公共URL。我们只需要启用该选项并使用8080端口即可。当然,如果您在本地运行,则无需此步,直接使用地址“http://0.0.0.0:8080”即可。GZW28资讯网——每日最新资讯28at.com

GZW28资讯网——每日最新资讯28at.com

我们提供了运行服务器的模型路径、主机ip和端口号。GZW28资讯网——每日最新资讯28at.com

!autoxgb serve --model_path /work/output --host 0.0.0.0 --port 8080 --debugGZW28资讯网——每日最新资讯28at.com

结果显示,我们的API运行平稳。您可以使用网址https://8d3ae411-c6bc-4cad-8a14-732f8e3f13b7.deepnoteproject.com来观察相应的结果数据。GZW28资讯网——每日最新资讯28at.com

INFO: Will watch for changes in these directories: ['/work']GZW28资讯网——每日最新资讯28at.com
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)GZW28资讯网——每日最新资讯28at.com
INFO: Started reloader process [153] using watchgodGZW28资讯网——每日最新资讯28at.com
INFO: Started server process [163]GZW28资讯网——每日最新资讯28at.com
INFO: Waiting for application startup.GZW28资讯网——每日最新资讯28at.com
INFO: Application startup complete.GZW28资讯网——每日最新资讯28at.com
INFO: 172.3.161.55:40628 - "GET /docs HTTP/1.1" 200 OKGZW28资讯网——每日最新资讯28at.com
INFO: 172.3.188.123:38788 - "GET /openapi.json HTTP/1.1" 200 OKGZW28资讯网——每日最新资讯28at.com
INFO: 172.3.167.43:48326 - "GET /docs HTTP/1.1" 200 OKGZW28资讯网——每日最新资讯28at.com
INFO: 172.3.161.55:47018 - "GET /openapi.json HTTP/1.1" 200 OKGZW28资讯网——每日最新资讯28at.com
预测GZW28资讯网——每日最新资讯28at.com

我们可以添加随机输入来预测某人的收入是否超过5万美元。在本例中,我们使用FastAPI/docs选项访问用户界面。GZW28资讯网——每日最新资讯28at.com

输入数据GZW28资讯网——每日最新资讯28at.com

我们使用FastAPI GUI来运行模型预测,这可以通过在服务器地址末尾添加/docs实现,例如“172.3.167.43:39118/docs”。本文项目中输入的其他测试数据如下:GZW28资讯网——每日最新资讯28at.com

workclass:"Private"education:"HS-grad"marital.status:"Widowed"occupation:"Transport-moving"relationship:"Unmarried"race:"White"sex:"Male"native.country:"United-States"age:20fnlwgt:313986education.num:9capital.gain:0capital.loss:0hours.per.week:40GZW28资讯网——每日最新资讯28at.com

GZW28资讯网——每日最新资讯28at.com

测试结果GZW28资讯网——每日最新资讯28at.com

实验的结果是:小于5万美元的置信度为97.6%,而大于5万美元的置信度为2.3%。GZW28资讯网——每日最新资讯28at.com

GZW28资讯网——每日最新资讯28at.com

使用Request库进行测试GZW28资讯网——每日最新资讯28at.com

你还可以借助Python中的requests库来测试API。这一步很简单,你只需以字典的形式推送参数,然后就可以通过JSON格式获得输出结果。GZW28资讯网——每日最新资讯28at.com

import requestsGZW28资讯网——每日最新资讯28at.com
GZW28资讯网——每日最新资讯28at.com
params = {GZW28资讯网——每日最新资讯28at.com
"workclass": "Private",GZW28资讯网——每日最新资讯28at.com
"education": "HS-grad",GZW28资讯网——每日最新资讯28at.com
"marital.status": "Widowed",GZW28资讯网——每日最新资讯28at.com
"occupation": "Transport-moving",GZW28资讯网——每日最新资讯28at.com
"relationship": "Unmarried",GZW28资讯网——每日最新资讯28at.com
"race": "White",GZW28资讯网——每日最新资讯28at.com
"sex": "Male",GZW28资讯网——每日最新资讯28at.com
"native.country": "United-States",GZW28资讯网——每日最新资讯28at.com
"age": 20,GZW28资讯网——每日最新资讯28at.com
"fnlwgt": 313986,GZW28资讯网——每日最新资讯28at.com
"education.num": 9,GZW28资讯网——每日最新资讯28at.com
"capital.gain": 0,GZW28资讯网——每日最新资讯28at.com
"capital.loss": 0,GZW28资讯网——每日最新资讯28at.com
"hours.per.week": 40,GZW28资讯网——每日最新资讯28at.com
}GZW28资讯网——每日最新资讯28at.com
GZW28资讯网——每日最新资讯28at.com
article = requests.post(GZW28资讯网——每日最新资讯28at.com
f"https://8d3ae411-c6bc-4cad-8a14-732f8e3f13b7.deepnoteproject.com/predict",GZW28资讯网——每日最新资讯28at.com
json=params,GZW28资讯网——每日最新资讯28at.com
)GZW28资讯网——每日最新资讯28at.com
GZW28资讯网——每日最新资讯28at.com
data_dict = article.json()GZW28资讯网——每日最新资讯28at.com
print(data_dict)GZW28资讯网——每日最新资讯28at.com
## {'id': 0, '<=50K': 0.9762147068977356, '>50K': 0.023785298690199852}GZW28资讯网——每日最新资讯28at.com
GZW28资讯网——每日最新资讯28at.com
有关项目源码GZW28资讯网——每日最新资讯28at.com

如果对本文项目的完整代码及有关示例感兴趣,请访问下面几个链接:GZW28资讯网——每日最新资讯28at.com

DeepnoteGitHubDAGsHub结论GZW28资讯网——每日最新资讯28at.com

我本人曾借助AutoXGB并使用AutoML在Kaggle竞赛中获得过优异成绩,并为一些机器学习项目开发过一个基础模型。在整个机器学习过程中,有时结果可以快速而准确的获得,但如果想要创建最先进的解决方案,则需要手动尝试各种机器学习过程。GZW28资讯网——每日最新资讯28at.com

本教程带我们学习了AutoXGB的各种功能,现在我们可以使用AutoXGB预处理数据,训练XGboost模型,使用Optuna优化模型,以及FastAPI运行Web服务器。简而言之,AutoXGB能够为日常表格数据问题提供端到端的解决方案。GZW28资讯网——每日最新资讯28at.com

译者介绍GZW28资讯网——每日最新资讯28at.com

朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。早期专注各种微软技术(编著成ASP.NET AJX、Cocos 2d-X相关三本技术图书),近十多年投身于开源世界(熟悉流行全栈Web开发技术),了解基于OneNet/AliOS+Arduino/ESP32/树莓派等物联网开发技术与Scala+Hadoop+Spark+Flink等大数据开发技术。GZW28资讯网——每日最新资讯28at.com

原文标题:No Brainer AutoML with AutoXGB,作者:Abid Ali AwanGZW28资讯网——每日最新资讯28at.com

 GZW28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-119-2254-0.html用开源项目AutoXGB助力AutoML开发,实现几行代码构建应用API 译文

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 数据分析的12个神话被揭穿!

下一篇: 云计算开发:Python3-List sort()方法详解

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • 服务存储设计模式:Cache-Aside模式

    服务存储设计模式:Cache-Aside模式

    Cache-Aside模式一种常用的缓存方式,通常是把数据从主存储加载到KV缓存中,加速后续的访问。在存在重复度的场景,Cache-Aside可以提升服务性能,降低底层存储的压力,缺点是缓存和底
  • Golang 中的 io 包详解:组合接口

    Golang 中的 io 包详解:组合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是对Reader和Writer接口的组合,
  • 一个注解实现接口幂等,这样才优雅!

    一个注解实现接口幂等,这样才优雅!

    场景码猿慢病云管理系统中其实高并发的场景不是很多,没有必要每个接口都去考虑并发高的场景,比如添加住院患者的这个接口,具体的业务代码就不贴了,业务伪代码如下:图片上述代码有
  • 中国家电海外掘金正当时|出海专题

    中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • iQOO 11S新品发布会

    iQOO 11S新品发布会

    iQOO将在7月4日19:00举行新品发布会,推出杭州亚运会电竞赛事官方用机iQOO 11S。
  • iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    iQOO Neo8 Pro抢先上架:首发天玑9200+ 安卓性能之王

    经过了一段时间的密集爆料,昨日iQOO官方如期对外宣布:将于5月23日推出全新的iQOO Neo8系列新品,官方称这是一款拥有旗舰级性能调校的作品。随着发布时
  • 外交部:美方应停止在网络安全问题上不负责任地指责他国

    外交部:美方应停止在网络安全问题上不负责任地指责他国

      中国外交部今天(16日)举行例行记者会。会上,有记者问,美国情报官员称,他们正在阻拦来自中国以及其他国家的黑客获取相关科研成果。 中方对此有何评论?对此
Top
Baidu
map