作者|Moez Ali
編譯|VK
來源|Towards Data Science

PyCaret
PyCaret是Python中的一個開源、低代碼的機器學習庫,它自動化了機器學習作業流,它是一個端到端的機器學習和模型管理工具,可以加快機器學習實驗的周期,并使你更有效率,
與其他開放源代碼機器學習庫相比,PyCaret是一個低代碼庫,可以用很少的代碼來替換數百行代碼,這使得實驗具有指數級的速度和效率開發,
-
官方:https://www.pycaret.org
-
檔案:https://pycaret.readthedocs.io/en/latest/
-
git:https://www.github.com/pycaret/pycaret
compare_models比你想的要好
當我們在2020年4月發布了PyCaret的1.0版本時,compare_models函式會比較庫中的所有模型,以回傳平均的交叉驗證性能指標,在此基礎上,你可以使用create_model來訓練性能最好的模型,并獲得可用于預測的訓練模型輸出,
這種行為后來在版本2.0中進行了更改,compare_models現在根據n_select引數回傳最佳模型,該引數默認設定為1,這意味著它將回傳最佳模型(默認情況下),

通過將默認的n_select引數更改為3,可以獲得前3個模型的串列,例如:

回傳的物件是經過訓練的模型,實際上不需要再次呼叫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 = https://www.cnblogs.com/panchuangai/archive/2020/11/13/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/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/212751.html
標籤:其他
上一篇:作業三年多的感慨與總結(一)
下一篇:VOIP 網路電話 簡介下載
