AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 知識百科

用開源項目AutoXGB助力AutoML開發(fā),實現(xiàn)幾行代碼構(gòu)建應(yīng)用API 譯文

來源: 責(zé)編: 時間:2023-08-07 16:30:07 298觀看
導(dǎo)讀 譯者 | 朱先忠審校 | 梁策 孫淑娟AutoML簡介自動機器學(xué)習(xí)(AutoML)能夠自動運行各種機器學(xué)習(xí)過程,并優(yōu)化錯誤度量以生成最佳模型。這些過程包括數(shù)據(jù)預(yù)處理、編碼、縮放、優(yōu)化

譯者 | 朱先忠oQd28資訊網(wǎng)——每日最新資訊28at.com

審校 | 梁策 孫淑娟oQd28資訊網(wǎng)——每日最新資訊28at.com

AutoML簡介oQd28資訊網(wǎng)——每日最新資訊28at.com

oQd28資訊網(wǎng)——每日最新資訊28at.com

自動機器學(xué)習(xí)(AutoML)能夠自動運行各種機器學(xué)習(xí)過程,并優(yōu)化錯誤度量以生成最佳模型。這些過程包括數(shù)據(jù)預(yù)處理、編碼、縮放、優(yōu)化超參數(shù)、模型訓(xùn)練、生成制品和結(jié)果列表。自動化機器學(xué)習(xí)過程可以快速開發(fā)人工智能解決方案,讓用戶體驗變得友好,并通常以低代碼即可生成準確結(jié)果。oQd28資訊網(wǎng)——每日最新資訊28at.com

目前市場上流行的一些著名AutoML庫包括:oQd28資訊網(wǎng)——每日最新資訊28at.com

LightAutoMLMLJarEvalMLFLAMLPyCaretAutoGluonH2O 3oQd28資訊網(wǎng)——每日最新資訊28at.com

在這篇教程中,我們將使用美國1994年人口普查時的收入數(shù)據(jù)來預(yù)測一個人的年收入是否超過5萬美元。這是一個經(jīng)典的二分類問題,我們將在CC0公共域許可下使用Kaggle成人普查收入數(shù)據(jù)集進行預(yù)測。該數(shù)據(jù)由美國硅圖公司(SGI,Silicon Graphics)數(shù)據(jù)挖掘和可視化部門的羅尼·克哈伊(Ronny Kohavi)和巴里·貝克爾(Barry Becker)從美國1994年人口普查局數(shù)據(jù)庫中提供。但是,我們這里不去深入研究數(shù)據(jù)分析或模型工作方式,只是僅用幾行代碼來構(gòu)建一個優(yōu)化的機器學(xué)習(xí)模型,并使用FastAPI服務(wù)器對該模型進行訪問。oQd28資訊網(wǎng)——每日最新資訊28at.com

AutoXGB項目簡介oQd28資訊網(wǎng)——每日最新資訊28at.com

AutoXGB是一個開源、簡單、有效的AutoML輔助開發(fā)工具,可以直接從CSV文件中訓(xùn)練模型表格數(shù)據(jù)集。AutoXGB使用XGBoost(優(yōu)化的分布式梯度增強庫)來訓(xùn)練模型,使用Optuna(為機器學(xué)習(xí)、深度學(xué)習(xí)特別設(shè)計的自動超參數(shù)優(yōu)化框架)進行超參數(shù)優(yōu)化,并使用基于Python的FastAPI框架并以API的形式提供模型推理。oQd28資訊網(wǎng)——每日最新資訊28at.com

下面讓我們從安裝AutoXGB開始介紹。如果在運行服務(wù)器時遇到錯誤,請確保預(yù)先已正確安裝了FastAPI框架和unvicorn服務(wù)器程序。安裝AutoXGB的命令如下:oQd28資訊網(wǎng)——每日最新資訊28at.com

pip install autoxgboQd28資訊網(wǎng)——每日最新資訊28at.com
初始化oQd28資訊網(wǎng)——每日最新資訊28at.com

接下來,我們將深入介紹AutoXGB函數(shù)的特征,以及如何使用與之相關(guān)的各項參數(shù)來改進計算結(jié)果或減少訓(xùn)練時間。AutoXGB函數(shù)的各項參數(shù)含義說明如下:oQd28資訊網(wǎng)——每日最新資訊28at.com

train_filename:訓(xùn)練數(shù)據(jù)所在的路徑。output:存儲工件的輸出文件夾的路徑。test_filename:測試數(shù)據(jù)所在路徑。如果未指定,則僅保存折外預(yù)測(out-of-fold predictions,簡稱“OOF預(yù)測”)數(shù)據(jù)。task:如果未指定該參數(shù)值,系統(tǒng)將自動推斷其值。此參數(shù)有兩個取值:oQd28資訊網(wǎng)——每日最新資訊28at.com

1."classification"oQd28資訊網(wǎng)——每日最新資訊28at.com

2."regression"oQd28資訊網(wǎng)——每日最新資訊28at.com

idx:如果未指定該參數(shù)值,系統(tǒng)將自動使用名稱id生成 id列。targets:如果未指定該參數(shù)值,則假定目標列被命名為目標(target),并將該問題視為一個二分類、多類分類或單列回歸三種問題之一。此參數(shù)可以使用如下兩種取值:oQd28資訊網(wǎng)——每日最新資訊28at.com

1.["target"]oQd28資訊網(wǎng)——每日最新資訊28at.com

2.["target1", "target2"]oQd28資訊網(wǎng)——每日最新資訊28at.com

features:如果未指定該參數(shù)值, 除去id、targets和kfold列外的所有列都會被使用。指定值方式例如:oQd28資訊網(wǎng)——每日最新資訊28at.com

1.features = ["col1", "col2"]oQd28資訊網(wǎng)——每日最新資訊28at.com

categorical_features:如果未指定該參數(shù)值,將自動推斷分類列。指定值方式例如:oQd28資訊網(wǎng)——每日最新資訊28at.com

1.categorical_features = ["col1", "col2"]oQd28資訊網(wǎng)——每日最新資訊28at.com

use_gpu:如果未指定該參數(shù)值,將不啟用GPU計算功能。指定值方式例如:oQd28資訊網(wǎng)——每日最新資訊28at.com

1.use_gpu = TrueoQd28資訊網(wǎng)——每日最新資訊28at.com

2.use_gpu = FalseoQd28資訊網(wǎng)——每日最新資訊28at.com

num_folds:用來進行交叉驗證的折(fold)的個數(shù)。seed:隨機種子的重復(fù)性。num_trials:運行的Optuna試驗次數(shù);默認值為1000。time_limit:以秒計量的optuna試驗時限。oQd28資訊網(wǎng)——每日最新資訊28at.com

1.如果未指定,將運行所有試驗。此時(默認)有time_limit = None。oQd28資訊網(wǎng)——每日最新資訊28at.com

fast:如果fast參數(shù)值設(shè)置為True,超參數(shù)調(diào)整將只使用一次,從而減少優(yōu)化時間。之后,將在折(fold)的其余部分進行訓(xùn)練,并生成OOF和測試預(yù)測。oQd28資訊網(wǎng)——每日最新資訊28at.com

在我們的測試項目中,除了參數(shù)train_filename、output、target、num_folds、seed、num_trails和time_limit之外,我們將大多數(shù)參數(shù)的值設(shè)置為默認值。項目中各參數(shù)的完整設(shè)置情況,如下所示:oQd28資訊網(wǎng)——每日最新資訊28at.com

from autoxgb import AutoXGBoQd28資訊網(wǎng)——每日最新資訊28at.com
train_filename = "binary_classification.csv"oQd28資訊網(wǎng)——每日最新資訊28at.com
output = "output"oQd28資訊網(wǎng)——每日最新資訊28at.com
test_filename = NoneoQd28資訊網(wǎng)——每日最新資訊28at.com
task = NoneoQd28資訊網(wǎng)——每日最新資訊28at.com
idx = NoneoQd28資訊網(wǎng)——每日最新資訊28at.com
targets = ["income"]oQd28資訊網(wǎng)——每日最新資訊28at.com
features = NoneoQd28資訊網(wǎng)——每日最新資訊28at.com
categorical_features = NoneoQd28資訊網(wǎng)——每日最新資訊28at.com
use_gpu = FalseoQd28資訊網(wǎng)——每日最新資訊28at.com
num_folds = 5oQd28資訊網(wǎng)——每日最新資訊28at.com
seed = 42oQd28資訊網(wǎng)——每日最新資訊28at.com
num_trials = 100oQd28資訊網(wǎng)——每日最新資訊28at.com
time_limit = 360oQd28資訊網(wǎng)——每日最新資訊28at.com
fast = FalseoQd28資訊網(wǎng)——每日最新資訊28at.com
訓(xùn)練與優(yōu)化oQd28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在,我們可以使用AutoXGB函數(shù)定義模型,并將之前定義的參數(shù)添加到模型中。最后,我們將調(diào)用axgb.train()函數(shù)開始訓(xùn)練過程。此時,將運行XGBoost和Optuna,并輸出各種制品(包括模型、預(yù)測、結(jié)果、配置、參數(shù)、編碼器等)。oQd28資訊網(wǎng)——每日最新資訊28at.com

axgb = AutoXGB(oQd28資訊網(wǎng)——每日最新資訊28at.com
train_filename=train_filename,oQd28資訊網(wǎng)——每日最新資訊28at.com
output=output,oQd28資訊網(wǎng)——每日最新資訊28at.com
test_filename=test_filename,oQd28資訊網(wǎng)——每日最新資訊28at.com
task=task,oQd28資訊網(wǎng)——每日最新資訊28at.com
idx=idx,oQd28資訊網(wǎng)——每日最新資訊28at.com
targets=targets,oQd28資訊網(wǎng)——每日最新資訊28at.com
features=features,oQd28資訊網(wǎng)——每日最新資訊28at.com
categorical_features=categorical_features,oQd28資訊網(wǎng)——每日最新資訊28at.com
use_gpu=use_gpu,oQd28資訊網(wǎng)——每日最新資訊28at.com
num_folds=num_folds,oQd28資訊網(wǎng)——每日最新資訊28at.com
seed=seed,oQd28資訊網(wǎng)——每日最新資訊28at.com
num_trials=num_trials,oQd28資訊網(wǎng)——每日最新資訊28at.com
time_limit=time_limit,oQd28資訊網(wǎng)——每日最新資訊28at.com
fast=fast,oQd28資訊網(wǎng)——每日最新資訊28at.com
)oQd28資訊網(wǎng)——每日最新資訊28at.com
axgb.train()oQd28資訊網(wǎng)——每日最新資訊28at.com

訓(xùn)練過程耗時10-12分鐘,我們可以看到下面的最佳訓(xùn)練結(jié)果,并可以通過增加時間限制來提高F1分數(shù)。此外,我們還可以使用其他超參數(shù)來提高模型性能。oQd28資訊網(wǎng)——每日最新資訊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}oQd28資訊網(wǎng)——每日最新資訊28at.com
使用CLI命令行進行訓(xùn)練oQd28資訊網(wǎng)——每日最新資訊28at.com

為了使用bash終端方式進行模型訓(xùn)練,我們可以使用命令autoxgb train。此時,我們將只需設(shè)置train_filename和output兩個參數(shù)即可。其中,參數(shù)train_filename用于確定訓(xùn)練的二分類文件名,而參數(shù)output用于指出輸出文件夾位置。命令如下:oQd28資訊網(wǎng)——每日最新資訊28at.com

autoxgb train oQd28資訊網(wǎng)——每日最新資訊28at.com
--train_filename binary_classification.csv oQd28資訊網(wǎng)——每日最新資訊28at.com
--output output oQd28資訊網(wǎng)——每日最新資訊28at.com
Web APIoQd28資訊網(wǎng)——每日最新資訊28at.com

通過在終端中運行autoxgb 服務(wù)的方式,我們可以在本地運行FastAPI服務(wù)器。oQd28資訊網(wǎng)——每日最新資訊28at.com

oQd28資訊網(wǎng)——每日最新資訊28at.com

AutoXGB服務(wù)參數(shù)model_path:指向模型文件的路徑。在本文測試中,指向輸出文件夾。Port:服務(wù)器主機運行的端口號,值為8080。host:運行的服務(wù)器主機,IP地址是:0.0.0.0。workers:工作線程數(shù)或同時請求的數(shù)量。debug:顯示錯誤和成功的日志。在Deepnote云服務(wù)器上運行oQd28資訊網(wǎng)——每日最新資訊28at.com

為了在云上運行服務(wù)器,Deepnote使用ngrok創(chuàng)建了一個公共URL。我們只需要啟用該選項并使用8080端口即可。當(dāng)然,如果您在本地運行,則無需此步,直接使用地址“http://0.0.0.0:8080”即可。oQd28資訊網(wǎng)——每日最新資訊28at.com

oQd28資訊網(wǎng)——每日最新資訊28at.com

我們提供了運行服務(wù)器的模型路徑、主機ip和端口號。oQd28資訊網(wǎng)——每日最新資訊28at.com

!autoxgb serve --model_path /work/output --host 0.0.0.0 --port 8080 --debugoQd28資訊網(wǎng)——每日最新資訊28at.com

結(jié)果顯示,我們的API運行平穩(wěn)。您可以使用網(wǎng)址https://8d3ae411-c6bc-4cad-8a14-732f8e3f13b7.deepnoteproject.com來觀察相應(yīng)的結(jié)果數(shù)據(jù)。oQd28資訊網(wǎng)——每日最新資訊28at.com

INFO: Will watch for changes in these directories: ['/work']oQd28資訊網(wǎng)——每日最新資訊28at.com
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)oQd28資訊網(wǎng)——每日最新資訊28at.com
INFO: Started reloader process [153] using watchgodoQd28資訊網(wǎng)——每日最新資訊28at.com
INFO: Started server process [163]oQd28資訊網(wǎng)——每日最新資訊28at.com
INFO: Waiting for application startup.oQd28資訊網(wǎng)——每日最新資訊28at.com
INFO: Application startup complete.oQd28資訊網(wǎng)——每日最新資訊28at.com
INFO: 172.3.161.55:40628 - "GET /docs HTTP/1.1" 200 OKoQd28資訊網(wǎng)——每日最新資訊28at.com
INFO: 172.3.188.123:38788 - "GET /openapi.json HTTP/1.1" 200 OKoQd28資訊網(wǎng)——每日最新資訊28at.com
INFO: 172.3.167.43:48326 - "GET /docs HTTP/1.1" 200 OKoQd28資訊網(wǎng)——每日最新資訊28at.com
INFO: 172.3.161.55:47018 - "GET /openapi.json HTTP/1.1" 200 OKoQd28資訊網(wǎng)——每日最新資訊28at.com
預(yù)測oQd28資訊網(wǎng)——每日最新資訊28at.com

我們可以添加隨機輸入來預(yù)測某人的收入是否超過5萬美元。在本例中,我們使用FastAPI/docs選項訪問用戶界面。oQd28資訊網(wǎng)——每日最新資訊28at.com

輸入數(shù)據(jù)oQd28資訊網(wǎng)——每日最新資訊28at.com

我們使用FastAPI GUI來運行模型預(yù)測,這可以通過在服務(wù)器地址末尾添加/docs實現(xiàn),例如“172.3.167.43:39118/docs”。本文項目中輸入的其他測試數(shù)據(jù)如下:oQd28資訊網(wǎng)——每日最新資訊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:40oQd28資訊網(wǎng)——每日最新資訊28at.com

oQd28資訊網(wǎng)——每日最新資訊28at.com

測試結(jié)果oQd28資訊網(wǎng)——每日最新資訊28at.com

實驗的結(jié)果是:小于5萬美元的置信度為97.6%,而大于5萬美元的置信度為2.3%。oQd28資訊網(wǎng)——每日最新資訊28at.com

oQd28資訊網(wǎng)——每日最新資訊28at.com

使用Request庫進行測試oQd28資訊網(wǎng)——每日最新資訊28at.com

你還可以借助Python中的requests庫來測試API。這一步很簡單,你只需以字典的形式推送參數(shù),然后就可以通過JSON格式獲得輸出結(jié)果。oQd28資訊網(wǎng)——每日最新資訊28at.com

import requestsoQd28資訊網(wǎng)——每日最新資訊28at.com
oQd28資訊網(wǎng)——每日最新資訊28at.com
params = {oQd28資訊網(wǎng)——每日最新資訊28at.com
"workclass": "Private",oQd28資訊網(wǎng)——每日最新資訊28at.com
"education": "HS-grad",oQd28資訊網(wǎng)——每日最新資訊28at.com
"marital.status": "Widowed",oQd28資訊網(wǎng)——每日最新資訊28at.com
"occupation": "Transport-moving",oQd28資訊網(wǎng)——每日最新資訊28at.com
"relationship": "Unmarried",oQd28資訊網(wǎng)——每日最新資訊28at.com
"race": "White",oQd28資訊網(wǎng)——每日最新資訊28at.com
"sex": "Male",oQd28資訊網(wǎng)——每日最新資訊28at.com
"native.country": "United-States",oQd28資訊網(wǎng)——每日最新資訊28at.com
"age": 20,oQd28資訊網(wǎng)——每日最新資訊28at.com
"fnlwgt": 313986,oQd28資訊網(wǎng)——每日最新資訊28at.com
"education.num": 9,oQd28資訊網(wǎng)——每日最新資訊28at.com
"capital.gain": 0,oQd28資訊網(wǎng)——每日最新資訊28at.com
"capital.loss": 0,oQd28資訊網(wǎng)——每日最新資訊28at.com
"hours.per.week": 40,oQd28資訊網(wǎng)——每日最新資訊28at.com
}oQd28資訊網(wǎng)——每日最新資訊28at.com
oQd28資訊網(wǎng)——每日最新資訊28at.com
article = requests.post(oQd28資訊網(wǎng)——每日最新資訊28at.com
f"https://8d3ae411-c6bc-4cad-8a14-732f8e3f13b7.deepnoteproject.com/predict",oQd28資訊網(wǎng)——每日最新資訊28at.com
json=params,oQd28資訊網(wǎng)——每日最新資訊28at.com
)oQd28資訊網(wǎng)——每日最新資訊28at.com
oQd28資訊網(wǎng)——每日最新資訊28at.com
data_dict = article.json()oQd28資訊網(wǎng)——每日最新資訊28at.com
print(data_dict)oQd28資訊網(wǎng)——每日最新資訊28at.com
## {'id': 0, '<=50K': 0.9762147068977356, '>50K': 0.023785298690199852}oQd28資訊網(wǎng)——每日最新資訊28at.com
oQd28資訊網(wǎng)——每日最新資訊28at.com
有關(guān)項目源碼oQd28資訊網(wǎng)——每日最新資訊28at.com

如果對本文項目的完整代碼及有關(guān)示例感興趣,請訪問下面幾個鏈接:oQd28資訊網(wǎng)——每日最新資訊28at.com

DeepnoteGitHubDAGsHub結(jié)論oQd28資訊網(wǎng)——每日最新資訊28at.com

我本人曾借助AutoXGB并使用AutoML在Kaggle競賽中獲得過優(yōu)異成績,并為一些機器學(xué)習(xí)項目開發(fā)過一個基礎(chǔ)模型。在整個機器學(xué)習(xí)過程中,有時結(jié)果可以快速而準確的獲得,但如果想要創(chuàng)建最先進的解決方案,則需要手動嘗試各種機器學(xué)習(xí)過程。oQd28資訊網(wǎng)——每日最新資訊28at.com

本教程帶我們學(xué)習(xí)了AutoXGB的各種功能,現(xiàn)在我們可以使用AutoXGB預(yù)處理數(shù)據(jù),訓(xùn)練XGboost模型,使用Optuna優(yōu)化模型,以及FastAPI運行Web服務(wù)器。簡而言之,AutoXGB能夠為日常表格數(shù)據(jù)問題提供端到端的解決方案。oQd28資訊網(wǎng)——每日最新資訊28at.com

譯者介紹oQd28資訊網(wǎng)——每日最新資訊28at.com

朱先忠,51CTO社區(qū)編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。早期專注各種微軟技術(shù)(編著成ASP.NET AJX、Cocos 2d-X相關(guān)三本技術(shù)圖書),近十多年投身于開源世界(熟悉流行全棧Web開發(fā)技術(shù)),了解基于OneNet/AliOS+Arduino/ESP32/樹莓派等物聯(lián)網(wǎng)開發(fā)技術(shù)與Scala+Hadoop+Spark+Flink等大數(shù)據(jù)開發(fā)技術(shù)。oQd28資訊網(wǎng)——每日最新資訊28at.com

原文標題:No Brainer AutoML with AutoXGB,作者:Abid Ali AwanoQd28資訊網(wǎng)——每日最新資訊28at.com

 oQd28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-119-2254-0.html用開源項目AutoXGB助力AutoML開發(fā),實現(xiàn)幾行代碼構(gòu)建應(yīng)用API 譯文

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 數(shù)據(jù)分析的12個神話被揭穿!

下一篇: 云計算開發(fā):Python3-List sort()方法詳解

標簽:
  • 熱門焦點
Top