可以使用pip下載Py Caret2.1,下載網址:
我們激動地宣佈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特徵概述
GPU上的超引數調優
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個類的多類問題。
在GPU上進行XGBoost訓練(使用googlecolab)
模型部署
自從PyCaret於2020年4月釋出第一個版本以來,只需使用Notebook 中的deploy_model ,就可以在AWS上部署經過訓練的模型。在最近的版本中,新增了支援在GCP和Microsoft Azure上部署的功能。
Microsoft Azure
若要在Microsoft Azure上部署模型,必須設定連線字串的環境變數。可以從Azure中儲存帳戶的“訪問金鑰”獲取連線字串。
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檔案,然後使用該檔案設定環境變數。
要了解關於建立服務帳戶的更多資訊,請閱讀官方文件。建立了服務帳戶並從GCP控制檯下載了JSON檔案之後,就可以部署了。
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] =
'c:/path-to-json- file.json'
from pycaret.classification import
deploy_model
deploy_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:5000
https://localhost:5000上的MLFlow UI
點選“Run Name” 左側的“Start Time”檢視細節,你能看到經過訓練的模型的所有超引數和評分指標,向下滾動,所有的程式碼也會顯示出來(如下所示)。
經過訓練的模型和所有後設資料檔案儲存在“/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,則無需擔心設定的內容。
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
使用者定義的損失函式
這是自第一個版本釋出以來請求最多的特性之一,它允許使用自定義/使用者定義函式調整模型的超引數,從而給資料科學家帶來了極大的靈活性。現在可以使用 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
編輯:於騰凱
校對:林亦霖