溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

發(fā)布時間:2021-10-18 15:23:12 來源:億速云 閱讀:154 作者:iii 欄目:編程語言

這篇文章主要介紹“如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型”,在日常操作中,相信很多人在如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

這正是PyCaret發(fā)揮作用的地方。PyCaret是一個高級,低代碼的Python庫,它使僅需幾行代碼即可輕松比較,訓(xùn)練,評估,調(diào)整和部署機器學(xué)習(xí)模型。從本質(zhì)上講,PyCaret基本上只是許多Scikit-learn,Yellowbrick,SHAP,Optuna和Spacy等數(shù)據(jù)科學(xué)庫的大型包裝。是的,您可以將這些庫用于相同的任務(wù),但是如果您不想編寫大量代碼,PyCaret可以節(jié)省大量時間。

安裝PyCaret

PyCaret是一個具有很多依賴項的大型庫。我建議使用Conda為PyCaret創(chuàng)建一個虛擬環(huán)境,這樣安裝不會影響您現(xiàn)有的任何庫。要在Conda中創(chuàng)建和激活虛擬環(huán)境,請運行以下命令:

conda create --name pycaret_env python=3.6 conda activate pycaret_env

要安裝僅具有所需依賴項的默認較小版本的PyCaret,可以運行以下命令。

pip install pycaret

要安裝完整版本的PyCaret,您應(yīng)該運行以下命令。

pip install pycaret[full]

一旦安裝了PyCaret,請停用虛擬環(huán)境,然后使用以下命令將其添加到Jupyter。

conda deactivate python -m ipykernel install --user --name pycaret_env --display-name "pycaret_env"

現(xiàn)在,在瀏覽器中啟動Jupyter Notebook之后,您應(yīng)該能夠看到將環(huán)境更改為剛創(chuàng)建的選項的選項。

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> Changing the Conda virtual environment in Jupyter.

導(dǎo)入庫

您可以在此GitHub存儲庫中找到本文的完整代碼。在下面的代碼中,我僅導(dǎo)入了Numpy和Pandas來處理此演示的數(shù)據(jù)。

import numpy as np import pandas as pd

讀取數(shù)據(jù)

對于此示例,我使用了Kaggle上可用的“加利福尼亞住房價格”數(shù)據(jù)集。在下面的代碼中,我將此數(shù)據(jù)集讀入一個數(shù)據(jù)框,并顯示了該數(shù)據(jù)框的前十行。

housing_data = pd.read_csv('./data/housing.csv')housing_data.head(10)

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> First ten rows of the housing dataset.

上面的輸出使我們對數(shù)據(jù)的外觀有所了解。數(shù)據(jù)主要包含數(shù)字特征和一個分類特征,用于每個房屋與海洋的接近度。我們試圖預(yù)測的目標列是“ median_house_value”列。整個數(shù)據(jù)集總共包含20,640個觀測值。

初始化實驗

現(xiàn)在我們有了數(shù)據(jù),我們可以初始化一個PyCaret實驗,該實驗將對數(shù)據(jù)進行預(yù)處理并為將在此數(shù)據(jù)集上訓(xùn)練的所有模型啟用日志記錄。

from pycaret.regression import * reg_experiment = setup(housing_data,                         target = 'median_house_value',                         session_id=123,                         log_experiment=True,                         experiment_name='ca_housing')

如下面的GIF中所示,運行上面的代碼會對數(shù)據(jù)進行預(yù)處理,然后生成帶有實驗選項的數(shù)據(jù)框。

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> Pycaret setup function output.

比較基準模型

我們可以立即比較不同的基線模型,以找到具有使用compare_models函數(shù)的最佳K折交叉驗證性能的模型,如下面的代碼所示。在下面的示例中,出于演示目的,我已將XGBoost排除在外。

best_model = compare_models(exclude=['xgboost'], fold=5)

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> Results of comparing different models.

該函數(shù)將生成一個數(shù)據(jù)框,其中包含每個模型的性能統(tǒng)計信息,并突出顯示性能最佳的模型的指標,在本例中為CatBoost回歸器。

建立模型

我們還可以使用PyCaret在單行代碼中訓(xùn)練模型。create_model函數(shù)僅需要一個與您要訓(xùn)練的模型類型相對應(yīng)的字符串。您可以在PyCaret文檔頁面上找到此功能的可接受字符串的完整列表以及相應(yīng)的回歸模型。

catboost = create_model('catboost')

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

create_model函數(shù)使用訓(xùn)練后的CatBoost模型的交叉驗證指標來生成上面的數(shù)據(jù)框。

超參數(shù)調(diào)整

現(xiàn)在我們有了訓(xùn)練有素的模型,我們可以通過超參數(shù)調(diào)整進一步優(yōu)化它。只需一行代碼,我們就可以調(diào)整該模型的超參數(shù),如下所示。

tuned_catboost = tune_model(catboost, n_iter=50, optimize = 'MAE')

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> Results of hyperparameter tuning with 10-fold cross-validation.

最重要的結(jié)果(在這種情況下為平均指標)以黃色突出顯示。

可視化模型的性能

我們可以使用PyCaret創(chuàng)建許多圖表,以可視化模型的性能。PyCaret使用另一個稱為Yellowbrick的高級庫來構(gòu)建這些可視化文件。

殘留圖

默認情況下,plot_model函數(shù)將為回歸模型生成殘差圖,如下所示。

plot_model(tuned_catboost)

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> Residual plot for the tuned CatBoost model.

預(yù)測誤差

通過創(chuàng)建預(yù)測誤差圖,我們還可以將預(yù)測值相對于實際目標值可視化。

plot_model(tuned_catboost, plot = 'error')

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> Prediction error plot for the tuned CatBoost regressor.

上面的圖特別有用,因為它為我們提供了CatBoost模型的R²系數(shù)的直觀表示。在理想情況下(R²= 1),當(dāng)預(yù)測值與實際目標值完全匹配時,此圖將僅包含沿虛線的點。

功能重要性

我們還可以可視化模型的功能重要性,如下所示。

plot_model(tuned_catboost, plot = 'feature')

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> Feature importance plot for the CatBoost regressor.

從上面的圖可以看出,在預(yù)測房屋價格時,位數(shù)中位數(shù)是最重要的特征。由于此特征對應(yīng)于房屋建造區(qū)域的中位數(shù)收入,因此此評估非常合理。在高收入地區(qū)建造的房屋可能比低收入地區(qū)的房屋貴。

使用所有圖評估模型

我們還可以創(chuàng)建多個圖,以使用validate_model函數(shù)評估模型。

evaluate_model(tuned_catboost)

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> The interface created using the evaluate_model function.

解釋模型

interpret_model函數(shù)是用于解釋模型預(yù)測的有用工具。此函數(shù)使用一個稱為SHAP的可解釋機器學(xué)習(xí)庫,我在下面的文章中介紹了該庫。

僅需一行代碼,我們就可以為模型創(chuàng)建一個SHAPE蜂群圖。

interpret_model(tuned_catboost)

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> SHAP plot produced by calling the interpret_model function.

根據(jù)上面的圖,我們可以看到中位數(shù)收入字段對預(yù)測房屋價值的影響最大。

自動機器學(xué)習(xí)

PyCaret還具有運行自動機器學(xué)習(xí)(AutoML)的功能。我們可以指定我們要優(yōu)化的損失函數(shù)或度量,然后讓庫接管如下所示。

automlautoml_model = automl(optimize = 'MAE')

在此示例中,AutoML模型也恰好是CatBoost回歸變量,我們可以通過打印出該模型進行確認。

print(automl_model)

運行上面的print語句將產(chǎn)生以下輸出:

<catboost.core.CatBoostRegressor at 0x7f9f05f4aad0>

產(chǎn)生預(yù)測

預(yù)報模型功能允許我們通過使用來自實驗的數(shù)據(jù)或新的看不見的數(shù)據(jù)來生成預(yù)測。

pred_holdouts = predict_model(automl_model) pred_holdouts.head()

上面的predict_model函數(shù)為交叉驗證期間用于驗證模型的保持數(shù)據(jù)集生成預(yù)測。該代碼還為我們提供了一個數(shù)據(jù)框,其中包含針對AutoML模型生成的預(yù)測的性能統(tǒng)計信息。

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> Predictions generated by the AutoML model.

在上面的輸出中,“標簽”列表示由AutoML模型生成的預(yù)測。我們還可以對整個數(shù)據(jù)集進行預(yù)測,如下面的代碼所示。

new_data = housing_data.copy() new_data.drop(['median_house_value'], axis=1, inplace=True) predictions = predict_model(automl_model, data=new_data) predictions.head()

保存模型

PyCaret還允許我們使用save_model函數(shù)保存經(jīng)過訓(xùn)練的模型。此功能將模型的轉(zhuǎn)換管道保存到pickle文件中。

save_model(automl_model, model_name='automl-model')

我們還可以使用load_model函數(shù)加載保存的AutoML模型。

loaded_model = load_model('automl-model') print(loaded_model)

打印出加載的模型將產(chǎn)生以下輸出:

Pipeline(memory=None,          steps=[('dtypes',                  DataTypes_Auto_infer(categorical_features=[],                                       display_types=True, features_todrop=[],                                       id_columns=[], ml_usecase='regression',                                       numerical_features=[],                                       target='median_house_value',                                       time_features=[])),                 ('imputer',                  Simple_Imputer(categorical_strategy='not_available',                                 fill_value_categorical=None,                                 fill_value_numerical=None,                                 numer...                 ('cluster_all', 'passthrough'),                 ('dummy', Dummify(target='median_house_value')),                 ('fix_perfect', Remove_100(target='median_house_value')),                 ('clean_names', Clean_Colum_Names()),                 ('feature_select', 'passthrough'), ('fix_multi', 'passthrough'),                 ('dfs', 'passthrough'), ('pca', 'passthrough'),                 ['trained_model',                  <catboost.core.CatBoostRegressor object at 0x7fb750a0aad0>]],          verbose=False)

從上面的輸出中可以看到,PyCaret不僅在流水線的末尾保存了經(jīng)過訓(xùn)練的模型,還在流水線的開始處保存了特征工程和數(shù)據(jù)預(yù)處理步驟?,F(xiàn)在,我們在一個文件中有一個可用于生產(chǎn)的機器學(xué)習(xí)管道,我們不必擔(dān)心將管道的各個部分放在一起。

模型部署

現(xiàn)在我們已經(jīng)準備好可以生產(chǎn)的模型管道,我們還可以使用deploy_model函數(shù)將模型部署到諸如AWS的云平臺。如果打算將模型部署到S3存儲桶,則在運行此功能之前,必須運行以下命令來配置AWS命令行界面:

aws configure

運行上面的代碼將觸發(fā)一系列提示,提示您需要提供諸如AWS Secret Access Key之類的信息。完成此過程后,就可以使用deploy_model函數(shù)部署模型了。

deploy_model(automl_model, model_name = 'automl-model-aws',               platform='aws',              authentication = {'bucket' : 'pycaret-ca-housing-model'})

在上面的代碼中,我將AutoML模型部署到了AWS中名為pycaret-ca-housing-model的S3存儲桶中。從這里,您可以編寫一個AWS Lambda函數(shù),該函數(shù)從S3中提取模型并在云中運行。PyCaret還允許您使用load_model函數(shù)從S3加載模型。

MLflow用戶界面

PyCaret的另一個不錯的功能是,它可以使用稱為MLfLow的機器學(xué)習(xí)生命周期工具來記錄和跟蹤您的機器學(xué)習(xí)實驗。運行以下命令將從本地主機在瀏覽器中啟動MLflow用戶界面。

!mlflow ui

如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型

> MLFlow dashboard.

在上面的儀表板中,我們可以看到MLflow可以跟蹤您的PyCaret實驗的不同模型的運行情況。您可以查看性能指標以及實驗中每次運行的運行時間。

使用PyCaret的利與弊

如果您已經(jīng)閱讀了此書,則現(xiàn)在對如何使用PyCaret有了基本的了解。雖然PyCaret是一個很棒的工具,但它有其自身的優(yōu)缺點,如果您打算將其用于數(shù)據(jù)科學(xué)項目,則應(yīng)注意這一點。

優(yōu)點:

  • 低代碼庫。

  • 非常適合簡單的標準任務(wù)和通用機器學(xué)習(xí)。

  • 為回歸,分類,自然語言處理,聚類,異常檢測和關(guān)聯(lián)規(guī)則挖掘提供支持。

  • 使創(chuàng)建和保存模型的復(fù)雜轉(zhuǎn)換管道變得容易。

  • 使可視化模型性能變得容易。

缺點:

  • 到目前為止,由于NLP實用程序僅限于主題建模算法,因此PyCaret對于文本分類而言并不理想。

  • PyCaret不是深度學(xué)習(xí)的理想選擇,并且不使用Keras或PyTorch模型。

  • 您無法執(zhí)行更復(fù)雜的機器學(xué)習(xí)任務(wù),例如使用PyCaret(至少在版本2.2.0中)進行圖像分類和文本生成。

  • 通過使用PyCaret,您將在某種程度上犧牲對簡單和高級代碼的控制。

到此,關(guān)于“如何使用PyCaret快速輕松地構(gòu)建機器學(xué)習(xí)項目并為部署準備最終模型”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI