您的位置:消费 >

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

2022-04-01 15:16:20 来源:TechWeb阅读量:11612   

朱先忠

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

梁策 孙淑娟

AutoML简介

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

目前市场上流行的一些著名AutoML库包括:

LightAutoMLMLJarEvalMLFLAMLPyCaretAutoGluonH2O 3

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

AutoXGB项目简介

AutoXGB是一个开源,简单,有效的AutoML辅助开发工具,可以直接从CSV文件中训练模型表格数据集AutoXGB使用XGBoost来训练模型,使用Optuna进行超参数优化,并使用基于Python的FastAPI框架并以API的形式提供模型推理

下面让我们从安装AutoXGB开始介绍如果在运行服务器时遇到错误,请确保预先已正确安装了FastAPI框架和unvicorn服务器程序

pip install autoxgb初始化

接下来,我们将深入介绍AutoXGB函数的特征,以及如何使用与之相关的各项参数来改进计算结果或减少训练时间。AutoXGB函数的各项参数含义说明如下:

train_filename:训练数据所在的路径output:存储工件的输出文件夹的路径test_filename:测试数据所在路径如果未指定,则仅保存折外预测数据task:如果未指定该参数值,系统将自动推断其值

1."classification"

2."regression"

idx:如果未指定该参数值,系统将自动使用名称id生成 id列targets:如果未指定该参数值,则假定目标列被命名为目标,并将该问题视为一个二分类,多类分类或单列回归三种问题之一

1.

2.

features:如果未指定该参数值, 除去id,targets和kfold列外的所有列都会被使用。指定值方式例如:

1.features =

categorical_features:如果未指定该参数值,将自动推断分类列。他已经多次采取措施加快Autopilot及其姊妹软件全自动驾驶系统的交付时间。指定值方式例如:

1.categorical_features =

use_gpu:如果未指定该参数值,将不启用GPU计算功能。。指定值方式例如:

1.use_gpu = True

2.use_gpu = False

num_folds:用来进行交叉验证的折的个数seed:随机种子的重复性num_trials:运行的Optuna试验次数,默认值为1000time_limit:以秒计量的optuna试验时限

1.如果未指定,将运行所有试验此时有time_limit = None

fast:如果fast参数值设置为True,超参数调整将只使用一次,从而减少优化时间之后,将在折的其余部分进行训练,并生成OOF和测试预测

在我们的测试项目中,除了参数train_filename,output,target,num_folds,seed,num_trails和time_limit之外,我们将大多数参数的值设置为默认值。自特斯拉创建以来,马斯克一直很关注Autopilot的开发进度。目前,特斯拉Autopilot因为卷入了至少12起事故而遭到美国国家公路交通安全管理局的调查。项目中各参数的完整设置情况,如下所示:

from autoxgb import AutoXGBtrain_filename = "binary_classification.csv"output = "output"test_filename = Nonetask = Noneidx = Nonetargets = features = Nonecategorical_features = Noneuse_gpu = Falsenum_folds = 5seed = 42num_trials = 100time_limit = 360fast = False训练与优化

现在,我们可以使用AutoXGB函数定义模型,并将之前定义的参数添加到模型中最后,我们将调用axgb.train函数开始训练过程此时,将运行XGBoost和Optuna,并输出各种制品

axgb = AutoXGBaxgb.train

训练过程耗时10—12分钟,我们可以看到下面的最佳训练结果,并可以通过增加时间限制来提高F1分数此外,我们还可以使用其他超参数来提高模型性能

autoxgb.utils:predict_model:336 — Metrics: 'auc': 0.851585935958628, 'logloss': 0.3868651767621002, 'f1': 0.5351485750859325, 'accuracy': 0.8230396087432015, 'precision': 0.7282822005864846, 'recall': 0.42303153575005525使用CLI命令行进行训练

为了使用bash终端方式进行模型训练,我们可以使用命令autoxgb train此时,我们将只需设置train_filename和output两个参数即可其中,参数train_filename用于确定训练的二分类文件名,而参数output用于指出输出文件夹位置

autoxgb train ——train_filename binary_classification.csv ——output output Web API

通过在终端中运行autoxgb 服务的方式,我们可以在本地运行FastAPI服务器。马斯克辩称,这会拖慢Autopilot的开发进程。

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

我们提供了运行服务器的模型路径,主机ip和端口号。例如,特斯拉会定期更新其FSD软件,使用其测试版驱动程序来识别程序中的漏洞。

!autoxgb serve ——model_path /work/output ——host 0.0.0.0 ——port 8080 ——debug

我们可以添加随机输入来预测某人的收入是否超过5万美元在本例中,我们使用FastAPI/docs选项访问用户界面

输入数据

我们使用FastAPI GUI来运行模型预测,这可以通过在服务器地址末尾添加/docs实现,例如172.3.167.43:39118/docs。本文项目中输入的其他测试数据如下:

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:40

测试结果

实验的结果是:小于5万美元的置信度为97.6%,而大于5万美元的置信度为2.3%。

使用Request库进行测试

你还可以借助Python中的requests库来测试API这一步很简单,你只需以字典的形式推送参数,然后就可以通过JSON格式获得输出结果

import requestsparams = "workclass": "Private", "education": "HS—grad", "marital.status": "Widowed", "occupation": "Transport—moving", "relationship": "Unmarried", "race": "White", "sex": "Male", "native.country": "United—States", "age": 20, "fnlwgt": 313986, "education.num": 9, "capital.gain": 0, "capital.loss": 0, "hours.per.week": 40,article = requests.postdata_dict = article.jsonprint## 'id': 0, 'lt,=50K': 0.9762147068977356, 'gt,50K': 0.023785298690199852有关项目源码

如果对本文项目的完整代码及有关示例感兴趣,请访问下面几个链接:

DeepnoteGitHubDAGsHub结论

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

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

译者介绍

声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多企业信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。投资有风险,需谨慎。

相关推荐
崂山区科创委联合沙子口街道、大石社区启动农民水彩画展

崂山区科创委联合沙子口街道、大石社区启动农民水彩画展

9月6日上午,在崂山区政府西塔楼一楼大厅,崂山区科创委联合沙子口街道、大石社区启动了为期5天的大石村农民水彩画展。本次画

2021-09-08 12:23
“95后”女孩5米高空开“天车”

“95后”女孩5米高空开“天车”

在5米高空作业,将数吨重的火车车轮或者小到几十斤的ldquo;铁疙瘩rdquo;安全装卸到位,可能谁也不会把这一切和一个

2021-09-03 11:10
做孩子心中的光

做孩子心中的光

每个孩子都有其独特的成长规律。在孩子成长的过程中,每一步都充满着对这个世界的好奇,那作为家长的我们,该如何顺应孩子的成长

2021-08-30 18:50
独家冠名2021第五届中国家居品牌大会国美打扮家有何独特之处?

独家冠名2021第五届中国家居品牌大会国美打扮家有何独特之处?

2021年7月19日,备受关注的2021第五届中国家居品牌大会在广州启幕,现场发布2020-2021中国家居十大优选品牌

2021-07-26 01:28
精彩推荐
头条关注
热点新闻