PyCaret 2.1橫空出世-有什麼新的內容?

THU資料派發表於2020-09-10

PyCaret 2.1橫空出世-有什麼新的內容?

可以使用pip下載Py Caret2.1,下載網址:

https://www.pycaret.org

我們激動地宣佈2020年8月PyCaret2.1 更新版本正式釋出!

Py Caret是一個開源的、低程式碼率的Python機器學習庫,它可以使機器學習工作流程自動化,同時,它也是一個端到端的機器學習和模型管理工具,可以縮短機器學習實驗週期,將生產力提高10倍。

與其他開源機器學習庫相比,Py Caret是低程式碼量庫的一個很好的選擇,只利用幾個單詞,便可以用它來替換數百行程式碼,從而使得實驗快速高效。

如果以前沒有聽到或使用過PyCaret,請參閱先前釋出的指南,以便快速入門。

安裝PyCaret

安裝Py Caret非常容易,只需要幾分鐘的時間。建議使用虛擬環境來避免與其他庫的潛在衝突。請參閱下面的示例程式碼,以建立Conda環境並在該Conda環境中安裝pycaret:

#建立conda環境

conda create --name yourenvname python=3.6

#啟用環境

conda activate yourenvname

#安裝pycaret

pip install pycaret

#建立與conda環境連結的notebook核心

python -m ipykernel install --user --name yourenvname --display-name "display-name"

如果你已經安裝好了PyCaret,還可以使用pip對它更新:

pip install --upgrade pycaret

PyCaret 2.1特徵概述

PyCaret 2.1橫空出世-有什麼新的內容?照片來源:Paweł CzerwińskiGPU上的引數調優

PyCare t2.0支援某些演算法(如:XGBoost、LightGBM和Catboost)的GPU訓練。PyCare2.1中新增了新的內容,可以實現在GPU上對這些模型的引數調優。

#使用GPU 訓練xgboost

xgboost = create_model('xgboost', tree_method = 'gpu_hist')

#xgboost 調優

tuned_xgboost = tune_model(xgboost)

由於tune_model函式自動從create_model函式建立的xgboost例項中繼承了tree_method,因此在tune_model函式內部不需要其他引數。請參看下圖:

包含88個特徵的100,000行包含8個類的多類問題。

PyCaret 2.1橫空出世-有什麼新的內容?

在GPU上進行XGBoost訓練(使用googlecolab)

模型部署

自從PyCaret於2020年4月釋出第一個版本以來,只需使用Notebook 中的deploy_model ,就可以在AWS上部署經過訓練的模型。在最近的版本中,新增了支援在GCP和Microsoft Azure上部署的功能。

Microsoft Azure

若要在Microsoft Azure上部署模型,必須設定連線字串的環境變數。可以從Azure中儲存帳戶的“訪問金鑰”獲取連線字串。

PyCaret 2.1橫空出世-有什麼新的內容?

https:/portal.azure.com — 從賬戶中獲取連線字串

複製連線字串後,可以將其設定為環境變數,參見以下示例:

Import os
os.environ['AZURE_STORAGE_CONNECTION_STRING'] = 'your-conn-string'

from pycaret.classification import deploy_model
deploy_model(model = model, model_name = 'model-name', platform = 'azure', authentication = {'container' : 'container-name'})

成了,就是這樣。只需一行程式碼,整個機器學習管道都已在Microsoft Azure容器中了,隨後可以使用 load_model 函式訪問它。

Import os
os.environ['AZURE_STORAGE_CONNECTION_STRING'] = 'your-conn-string'

from pycaret.classification import load_model

loaded_model = load_model(model_name = 'model-name', 
platform = 'azure', authentication = {
'container' :  'container-name'}

from pycaret.classification import predict_model

predictions = predict_model(loaded_model, data = new-dataframe)

谷歌雲平臺

要在Google雲平臺(GCP)上部署模型,必須首先使用命令列或GCP控制檯建立一個專案。建立專案後,應建立服務帳戶並將服務帳戶金鑰下載為JSON檔案,然後使用該檔案設定環境變數。

PyCaret 2.1橫空出世-有什麼新的內容?建立新的服務帳戶並從GCP控制檯下載JSON要了解關於建立服務帳戶的更多資訊,請閱讀官方文件。建立了服務帳戶並從GCP控制檯下載了JSON檔案之後,就可以部署了。

import os

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 
'c:/path-to-json- file.json'

from pycaret.classification import 
deploy_modeldeploy_model(model = model, model_name = 'model-name', 
platform = 'gcp', authentication = {'project' : 'project-name', 
'bucket' : 'bucket-name'})

載入模型之後,可以使用 load_model 函式從GCP bucket中訪問模型。

import os

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 
'c:/path-to-json- file.json'

from pycaret.classification import load_model

loaded_model = load_model(model_name = 'model-name', 
platform = 'gcp', authentication ='project-name', 
'bucket' :  'bucket-name'})

from pycaret.classification import predict_model

predictions = predict_model(loaded_model, data = new-dataframe)

MLFlow部署

除了使用PyCaret的本機部署功能之外,還可以使用所有的MLFlow部署功能。利用setup函式的log_experiment引數登入你的實驗。

#初始化設定

exp1 = setup(data, target = 'target-name', log_experiment = True, 
experiment_name = 'exp-name')

#建立xgboost模型

xgboost = create_model('xgboost')..
..
..
#其餘的指令碼

#在local host:5000上啟動mlflow伺服器

!mlflow ui

在瀏覽器上開啟:

https://localhost:5000PyCaret 2.1橫空出世-有什麼新的內容?

https://localhost:5000上的MLFlow UI

點選“Run Name” 左側的“Start Time”檢視細節,你能看到經過訓練的模型的所有引數和評分指標,向下滾動,所有的程式碼也會顯示出來(如下所示)。

PyCaret 2.1橫空出世-有什麼新的內容?MLFLow程式碼經過訓練的模型和所有後設資料檔案儲存在“/model”目錄下。MLFlow遵循一種標準格式來打包機器學習模型,以便在各種接下來的工具中使用,例如,透過REST API 或Apache Spark上的批處理推理進行實時服務。如果需要在本地為這個模型提供服務,可以利用MLFlow命令列來實現。

mlflow models serve -m local-path-to-model

然後,可以利用CURL將請求傳送給模型以獲得預測。

curl http://127.0.0.1:5000/invocations -H 'Content-Type: application/json' -d '{
"columns": ["age", "sex", "bmi", "children",
"smoker", "region"],
"data": [[19, "female", 27.9, 0, "yes", "southwest"]]}'

(注:MLFlow的這一功能尚不支援Windows作業系統)。

MLFlow還提供與AWS Sagemaker和Azure機器學習服務的整合,你可以在與SageMaker相容的環境下,在Docker容器中本地訓練模型,也可以在SageMaker上遠端訓練模型。為了遠端部署到SageMaker,你需要設定環境和AWS使用者帳戶。

使用MLflow CLI的示例工作流

mlflow sagemaker build-and-push-container 
mlflow sagemaker run-local -m <path-to-model> 
mlflow sagemaker deploy <parameters>

要了解有關MLFlow所有部署功能的更多資訊,請單擊此連線:

https://www.mlflow.org/docs/latest/models.html#

MLFlow模型登錄檔

MLflow模型登錄檔元件是一個集模型儲存、API集和UI為一體的元件,用於實現MLflow模型整個生命週期內的協同管理。它提供模型沿襲(MLflow實驗並執行生成的模型)、模型版本控制、階段轉換(例如從例程到量產)和註釋等服務。

如果需要要執行你自己的MLflow伺服器,則必須 使用資料庫支援的後端儲存才能訪問模型登錄檔。但是,如果正在使用 資料包 或任何託管資料包服務,如 Azure Databricks,則無需擔心設定的內容。

PyCaret 2.1橫空出世-有什麼新的內容?

 https://databricks.com/blog/2020/06/25/announcing-mlflow-model-serving-on-databricks.htm

高解析度繪圖

這一功能並不是開創性的,但對於使用PyCaret進行研究和發表文章的人來說,這確實是一個非常有用的補充。plot_ model帶有一個名為“scale”的附加引數,透過它可以控制解析度併為出版物生成高質量的繪圖。

#建立線性迴歸模型

lr = create_model('lr')

#高解析度繪圖

plot_model(lr, scale = 5) # 預設值為 1

PyCaret 2.1橫空出世-有什麼新的內容?PyCaret的高解析度繪圖使用者定義的損失函式

這是自第一個版本釋出以來請求最多的特性之一,它允許使用自定義/使用者定義函式調整模型的引數,從而給資料科學家帶來了極大的靈活性。現在可以使用 tune_model函式的custom_scorer 引數來自定義損失函式

#定義損失函式

def my_function(y_true, y_pred):
...
...

#使用sklearn建立記分器

from sklearn.metrics import make_scorer
my_own_scorer = make_scorer(my_function, needs_proba=True)

#訓練catboost模型

catboost = create_model('catboost')

#使用自定義記分器調整catboost

tuned_catboost=tune_model(catboost,custom_scorer=my_own_scorer)

特徵選擇

特徵選擇機器學習的基本步驟,在一大堆特徵中,你只想選擇相關的特徵而放棄其他特徵,這樣可以去除會引入不必要噪聲的無用特徵,從而使問題得以簡化。

在PyCaret2.1中,利用Python實現了Boruta演算法(最初是用R實現的)。Boruta是一個非常聰明的演算法,可以追溯到2010年,旨在自動對資料集執行特徵選擇。在setup 函式中執行feature_selection_method方法

exp1 = setup(data, target = 'target-var', 
feature_selection = True, feature_selection_method = 'boruta')

其他改變

  • compare_models函式中的blacklist 和whitelist 引數已變更為exclude 和 include,但是功能並沒有改變。
  • 在  compare_models函式中設定訓練時間的上限,新增了新引數budget_time。
  • PyCaret 可以與Pandas 的資料型別相容,它們在內部被轉換為object,像處理  object 或  bool 一樣。
  • 在數值處理部分,在setup 函式 的numeric_imputation引數中新增了zero 方法。當method設定為 zero 時,將其替換為常數0。
  • 為了方便閱讀,predict_model 函式返回Label 列的原始值而不是編碼值。

要了解pycaret2.1中所有更新的更多資訊,請參閱發行說明。

使用Python中的輕量級工作流自動化庫可以實現的功能是沒有限制的。如果你發現這個有用,請不要忘記在GitHub中給我們。

https://github.com/pycaret/pycaret/

欲瞭解更多關於PyCaret的資訊,請在LinkedIn和Youtube上關注我們。

原文連結:

https://towardsdatascience.com/pycaret-2-1-is-here-whats-new-4aae6a7f636a

編輯:於騰凱

校對:林亦霖

相關文章