成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用開源項目AutoXGB助力AutoML開發,實現幾行代碼構建應用API

譯文 精選
開源 機器學習
本文將向您介紹如何借助開源項目AutoXGB來簡化自動機器學習,僅用幾行代碼即可訓練、優化和構建應用API。

譯者 | 朱先忠

審校 | 梁策 孫淑娟

AutoML簡介

自動機器學習(AutoML)能夠自動運行各種機器學習過程,并優化錯誤度量以生成最佳模型。這些過程包括數據預處理、編碼、縮放、優化超參數、模型訓練、生成制品和結果列表。自動化機器學習過程可以快速開發人工智能解決方案,讓用戶體驗變得友好,并通常以低代碼即可生成準確結果。

目前市場上流行的一些著名AutoML庫包括:

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

AutoXGB項目簡介

AutoXGB是一個開源、簡單、有效的AutoML輔助開發工具,可以直接從CSV文件中訓練模型表格數據集。AutoXGB使用XGBoost(優化的分布式梯度增強庫)來訓練模型,使用Optuna(為機器學習、深度學習特別設計的自動超參數優化框架)進行超參數優化,并使用基于Python的FastAPI框架并以API的形式提供模型推理。

下面讓我們從安裝AutoXGB開始介紹。如果在運行服務器時遇到錯誤,請確保預先已正確安裝了FastAPI框架和unvicorn服務器程序。安裝AutoXGB的命令如下:

pip install autoxgb

初始化

接下來,我們將深入介紹AutoXGB函數的特征,以及如何使用與之相關的各項參數來改進計算結果或減少訓練時間。AutoXGB函數的各項參數含義說明如下:

  • train_filename:訓練數據所在的路徑。
  • output:存儲工件的輸出文件夾的路徑。
  • test_filename:測試數據所在路徑。如果未指定,則僅保存折外預測(out-of-fold predictions,簡稱“OOF預測”)數據。
  • task:如果未指定該參數值,系統將自動推斷其值。此參數有兩個取值:

1."classification"

2."regression"

  • idx:如果未指定該參數值,系統將自動使用名稱id生成 id列。
  • targets:如果未指定該參數值,則假定目標列被命名為目標(target),并將該問題視為一個二分類、多類分類或單列回歸三種問題之一。此參數可以使用如下兩種取值:

1.["target"]

2.["target1", "target2"]

  • features:如果未指定該參數值, 除去id、targets和kfold列外的所有列都會被使用。指定值方式例如:

1.features = ["col1", "col2"]

  • categorical_features:如果未指定該參數值,將自動推斷分類列。指定值方式例如:

1.categorical_features = ["col1", "col2"]

  • use_gpu:如果未指定該參數值,將不啟用GPU計算功能。指定值方式例如:

1.use_gpu = True

2.use_gpu = False

  • num_folds:用來進行交叉驗證的折(fold)的個數。
  • seed:隨機種子的重復性。
  • num_trials:運行的Optuna試驗次數;默認值為1000。
  • time_limit:以秒計量的optuna試驗時限。

1.如果未指定,將運行所有試驗。此時(默認)有time_limit = None。

  • fast:如果fast參數值設置為True,超參數調整將只使用一次,從而減少優化時間。之后,將在折(fold)的其余部分進行訓練,并生成OOF和測試預測。

在我們的測試項目中,除了參數train_filename、output、target、num_folds、seed、num_trails和time_limit之外,我們將大多數參數的值設置為默認值。項目中各參數的完整設置情況,如下所示:

from autoxgb import AutoXGB
train_filename = "binary_classification.csv"
output = "output"
test_filename = None
task = None
idx = None
targets = ["income"]
features = None
categorical_features = None
use_gpu = False
num_folds = 5
seed = 42
num_trials = 100
time_limit = 360
fast = False

訓練與優化

現在,我們可以使用AutoXGB函數定義模型,并將之前定義的參數添加到模型中。最后,我們將調用axgb.train()函數開始訓練過程。此時,將運行XGBoost和Optuna,并輸出各種制品(包括模型、預測、結果、配置、參數、編碼器等)。

axgb = AutoXGB(
train_filename=train_filename,
output=output,
test_filename=test_filename,
task=task,
idx=idx,
targets=targets,
features=features,
categorical_features=categorical_features,
use_gpu=use_gpu,
num_folds=num_folds,
seed=seed,
num_trials=num_trials,
time_limit=time_limit,
fast=fast,
)
axgb.train()

訓練過程耗時10-12分鐘,我們可以看到下面的最佳訓練結果,并可以通過增加時間限制來提高F1分數。此外,我們還可以使用其他超參數來提高模型性能。

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}

使用CLI命令行進行訓練

為了使用bash終端方式進行模型訓練,我們可以使用命令autoxgb train。此時,我們將只需設置train_filename和output兩個參數即可。其中,參數train_filename用于確定訓練的二分類文件名,而參數output用于指出輸出文件夾位置。命令如下:

autoxgb train \
--train_filename binary_classification.csv \
--output output \

Web API

通過在終端中運行autoxgb 服務的方式,我們可以在本地運行FastAPI服務器。

AutoXGB服務參數

  • model_path:指向模型文件的路徑。在本文測試中,指向輸出文件夾。
  • Port:服務器主機運行的端口號,值為8080。
  • host:運行的服務器主機,IP地址是:0.0.0.0。
  • workers:工作線程數或同時請求的數量。
  • debug:顯示錯誤和成功的日志。

在Deepnote云服務器上運行

為了在云上運行服務器,??Deepnote??使用ngrok創建了一個公共URL。我們只需要啟用該選項并使用8080端口即可。當然,如果您在本地運行,則無需此步,直接使用地址“http://0.0.0.0:8080”即可。

我們提供了運行服務器的模型路徑、主機ip和端口號。

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

結果顯示,我們的API運行平穩。您可以使用網址https://8d3ae411-c6bc-4cad-8a14-732f8e3f13b7.deepnoteproject.com來觀察相應的結果數據。

INFO:     Will watch for changes in these directories: ['/work']
INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
INFO: Started reloader process [153] using watchgod
INFO: Started server process [163]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: 172.3.161.55:40628 - "GET /docs HTTP/1.1" 200 OK
INFO: 172.3.188.123:38788 - "GET /openapi.json HTTP/1.1" 200 OK
INFO: 172.3.167.43:48326 - "GET /docs HTTP/1.1" 200 OK
INFO: 172.3.161.55:47018 - "GET /openapi.json HTTP/1.1" 200 OK

預測

我們可以添加隨機輸入來預測某人的收入是否超過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:20
  • fnlwgt:313986
  • education.num:9
  • capital.gain:0
  • capital.loss:0
  • hours.per.week:40

測試結果

實驗的結果是:小于5萬美元的置信度為97.6%,而大于5萬美元的置信度為2.3%。

使用Request庫進行測試

你還可以借助Python中的requests庫來測試API。這一步很簡單,你只需以字典的形式推送參數,然后就可以通過JSON格式獲得輸出結果。

import requests

params = {
"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.post(
f"https://8d3ae411-c6bc-4cad-8a14-732f8e3f13b7.deepnoteproject.com/predict",
json=params,
)

data_dict = article.json()
print(data_dict)
## {'id': 0, '<=50K': 0.9762147068977356, '>50K': 0.023785298690199852}

有關項目源碼

如果對本文項目的完整代碼及有關示例感興趣,請訪問下面幾個鏈接:

結論

我本人曾借助AutoXGB并使用AutoML在Kaggle競賽中獲得過優異成績,并為一些機器學習項目開發過一個基礎模型。在整個機器學習過程中,有時結果可以快速而準確的獲得,但如果想要創建最先進的解決方案,則需要手動嘗試各種機器學習過程。

本教程帶我們學習了AutoXGB的各種功能,現在我們可以使用AutoXGB預處理數據,訓練XGboost模型,使用Optuna優化模型,以及FastAPI運行Web服務器。簡而言之,AutoXGB能夠為日常表格數據問題提供端到端的解決方案。

譯者介紹

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

原文標題:??No Brainer AutoML with AutoXGB??,作者:Abid Ali Awan


責任編輯:華軒 來源: 51CTO
相關推薦

2019-01-24 09:00:00

PythonAutoML機器學習

2024-10-10 13:30:00

2025-05-22 06:59:53

2024-07-17 08:17:20

2023-10-27 11:38:09

PythonWord

2020-08-10 06:36:21

強化學習代碼深度學習

2025-03-05 08:57:55

2016-06-23 10:01:30

2021-06-22 09:55:05

代碼圖像技術

2022-04-06 13:49:04

Budibase開源

2023-03-31 08:25:08

零代碼開源項目

2021-08-09 07:26:33

瀑布流布局代碼

2016-07-01 14:43:32

DockerServerless

2020-04-17 14:48:30

代碼機器學習Python

2021-11-19 17:01:49

Flutter谷歌Chrome OS

2015-07-21 14:19:49

百度開放API

2023-01-28 16:13:08

InfluxData開源

2021-07-23 08:00:00

深度學習框架模型

2020-09-29 10:09:43

Python文字識別編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美福利三区 | 国产精品视频在 | 全免费a级毛片免费看视频免 | 黄色毛片黄色毛片 | 美女福利网站 | 天天综合网天天综合 | 精品91久久 | 欧美性一区二区三区 | 国产一级一片免费播放 | 午夜小视频在线播放 | eeuss国产一区二区三区四区 | www国产精| 草久久| 一本一道久久a久久精品综合蜜臀 | 成人三级在线播放 | 国产精品毛片一区二区三区 | 99福利视频 | 97人澡人人添人人爽欧美 | av网站在线免费观看 | 99久久久久久久久 | 妞干网福利视频 | 欧美日韩亚洲一区 | 国产亚洲一区二区精品 | 在线精品观看 | 国产精品一区二区三区久久久 | 欧美日韩亚洲三区 | 国产欧美一区二区三区久久人妖 | 男女深夜网站 | 精品国产一区二区三区日日嗨 | 久久人人网| 国内精品久久久久久 | 中文字幕 视频一区 | 亚洲毛片 | 在线国产视频 | 夜夜夜夜夜夜曰天天天 | 国产精品1区| 在线视频中文字幕 | 久久免费视频网 | 久久久久久毛片免费观看 | 欧美日韩综合视频 | 精品一区二区三区在线观看国产 |