5個PyCaret的常見誤解

做者|Moez Ali
編譯|VK
來源|Towards Data Sciencehtml

PyCaret

PyCaret是Python中的一個開源、低代碼的機器學習庫,它自動化了機器學習工做流。它是一個端到端的機器學習和模型管理工具,能夠加快機器學習實驗的週期,並使你更有效率。python

與其餘開放源代碼機器學習庫相比,PyCaret是一個低代碼庫,能夠用不多的代碼來替換數百行代碼。這使得實驗具備指數級的速度和效率開發。git

compare_models比你想的要好

當咱們在2020年4月發佈了PyCaret的1.0版本時,compare_models函數會比較庫中的全部模型,以返回平均的交叉驗證性能指標。在此基礎上,你可使用create_model來訓練性能最好的模型,並得到可用於預測的訓練模型輸出。服務器

這種行爲後來在版本2.0中進行了更改。compare_models如今根據n_select參數返回最佳模型,該參數默認設置爲1,這意味着它將返回最佳模型(默認狀況下)。app

經過將默認的n_select參數更改成3,能夠得到前3個模型的列表。例如:dom

返回的對象是通過訓練的模型,實際上不須要再次調用create_model來訓練它們。若是你願意,你可使用這些模型來生成診斷圖,甚至能夠將它們用於預測。例如:機器學習

你認爲你只限於scikit-learn模型

咱們收到不少請求,要求在模型庫中包含非scikit-learn模型。不少人沒有意識到你不只僅侷限於默認模型。create_model函數除了接受模型庫中可用的模型ID以外,還接受未經訓練的模型對象。

只要你的對象與scikit learn-fit/predict-API兼容,它就能夠正常工做。例如,咱們只需導入未經訓練的NGBClassifier,就能夠從ngboost庫中訓練和評估NGBClassifier

你也能夠把未經訓練的模型傳遞到compare_models 的include參數中,這樣它就能夠正常工做了。

注意,包含的參數包括模型庫中三個未訓練模型的ID,即Logistic迴歸、決策樹和K近鄰,以及ngboost庫中的一個未訓練對象。另外,請注意,索引表示在include參數中輸入的模型的位置。

你不知道的pull

PyCaret中的全部訓練函數(create_model、tune_model、ensembly_model等)都會顯示一個分數網格,但不會返回分數網格。所以,你不能將分數網格存儲在DataFrame. 可是,有一個名爲pull的函數容許你這樣作。例如:

當你使用predict_model函數時,這也適用於保存分數網格。

如今你能夠像pandas同樣訪問度量了。例如,你能夠建立一個循環來訓練具備不一樣參數的模型,並使用如下簡單代碼建立一個比較表:

你認爲PyCaret是個黑匣子,其實否則。

另外一個常見的困惑是,全部的預處理都是在幕後進行的,用戶沒法訪問。所以,你沒法審覈運行設置函數時發生的狀況。這不是真的。

PyCaret get_config和set_config中有兩個函數,容許你訪問和更改後臺的全部內容,從訓練集到模型的隨機狀態。只需調用help(get_config)便可查看get_config函數的文檔,查看哪些變量可供你訪問:

你能夠經過在get_config函數中調用它來訪問該變量。例如,要訪問X_train 轉換後的數據集,請編寫如下內容:

你可使用set_config函數更改環境變量。根據你目前對pull、get_config和set_config函數的瞭解,你能夠建立一些很是複雜的工做流。例如,能夠對保留集從新採樣N次,以評估平均性能指標,而不是依賴於一個保留集:

import numpy as np
Xtest = get_config('X_test')
ytest = get_config('y_test')

AUC = []

for i in np.random.randint(0,1000,size=10):
    Xtest_sampled = Xtest.sample(n = 100, random_state = i)
    ytest_sampled = ytest[Xtest_sampled.index]
    set_config('X_test', Xtest_sampled)
    set_config('y_test', ytest_sampled)
    predict_model(dt);
    AUC.append(pull()['AUC'][0])
    
>>> print(AUC)

[Output]: [0.8182, 0.7483, 0.7812, 0.7887, 0.7799, 0.7967, 0.7812, 0.7209, 0.7958, 0.7404]

>>> print(np.array(AUC).mean())

[Output]: 0.77513

你沒有保存你的實驗

若是你沒有保存你的實驗,你應該當即開始保存它們。不管你是否要使用MLFlow後端服務器,你仍然應該記錄全部的實驗。當你執行任何實驗時,你會生成大量的元數據,這些元數據是不可能手動跟蹤的。

PyCaret的日誌功能將在使用get_logs函數時生成一個漂亮、輕量級、易於理解的excel電子表格。例如:

# 加載數據集
from pycaret.datasets import get_data
data = get_data('juice')

# 初始化setup
from pycaret.classification import *
s = setup(data, target = 'Purchase', silent = True, log_experiment = True, experiment_name = 'juice1')

# 比較基線模型
best = compare_models()

# 生成日誌
get_logs()

在這個很是短的實驗中,咱們已經生成了3000多個元數據點(度量、超參數、運行時等)。想象一下,你將如何手動跟蹤這些數據點?也許,這實際上不可能。幸運的是,PyCaret提供了一種簡單的方法來完成它。只需在設置函數中將log_experiment設置爲True便可。


要了解PyCareT2.2中的全部更新的更多信息,請參閱發行說明或閱讀此公告:https://www.github.com/pycaret/pycaret/

重要連接:

用戶指南:https://www.pycaret.org/guide

文檔:https://pycaret.readthedocs.io/en/latest/

官方教程:https://github.com/pycaret/pycaret/tree/master/tutorials

Notebook示例:https://github.com/pycaret/pycaret/tree/master/examples

其餘資源:https://github.com/pycaret/pycaret/tree/master/resources

想了解特定模塊嗎

單擊下面的連接,查看文檔和工做示例。

分類:https://pycaret.readthedocs.io/en/latest/api/classification.html

迴歸:https://pycaret.readthedocs.io/en/latest/api/regression.html

聚類:https://pycaret.readthedocs.io/en/latest/api/clustering.html

異常檢測:https://pycaret.readthedocs.io/en/latest/api/anomaly.html

天然語言處理:https://pycaret.readthedocs.io/en/latest/api/nlp.html

關聯規則挖掘:https://pycaret.readthedocs.io/en/latest/api/arules.html

原文連接:https://towardsdatascience.com/5-things-you-are-doing-wrong-in-pycaret-e01981575d2a

歡迎關注磐創AI博客站:
http://panchuang.net/

sklearn機器學習中文官方文檔:
http://sklearn123.com/

歡迎關注磐創博客資源彙總站:
http://docs.panchuang.net/

相關文章
相關標籤/搜索