5個PyCaret的常見誤解

2021-10-10 12:29:33 字數 4001 閱讀 6376

作者|moez ali 編譯|vk **|towards data science

pycaret是python中的乙個開源、低**的機器學習庫,它自動化了機器學習工作流。它是乙個端到端的機器學習和模型管理工具,可以加快機器學習實驗的週期,並使你更有效率。

與其他開放源**機器學習庫相比,pycaret是乙個低**庫,可以用很少的**來替換數百行**。這使得實驗具有指數級的速度和效率開發。

當我們在2023年4月發布了pycaret的1.0版本時,compare_models函式會比較庫中的所有模型,以返回平均的交叉驗證效能指標。在此基礎上,你可以使用create_model來訓練效能最好的模型,並獲得可用於**的訓練模型輸出。

這種行為後來在版本2.0中進行了更改。compare_models現在根據n_select引數返回最佳模型,該引數預設設定為1,這意味著它將返回最佳模型(預設情況下)。

通過將預設的n_select引數更改為3,可以獲得前3個模型的列表。例如:

返回的物件是經過訓練的模型,實際上不需要再次呼叫create_model來訓練它們。如果你願意,你可以使用這些模型來生成診斷圖,甚至可以將它們用於**。例如:

我們收到很多請求,要求在模型庫中包含非scikit-learn模型。很多人沒有意識到你不僅僅侷限於預設模型。create_model函式除了接受模型庫中可用的模型id之外,還接受未經訓練的模型物件。

只要你的物件與scikit learn-fit/predict-api相容,它就可以正常工作。例如,我們只需匯入未經訓練的ngbclassifier,就可以從ngboost庫中訓練和評估ngbclassifier

你也可以把未經訓練的模型傳遞到compare_models的include引數中,這樣它就可以正常工作了。

注意,包含的引數包括模型庫中三個未訓練模型的id,即logistic回歸、決策樹和k近鄰,以及ngboost庫中的乙個未訓練物件。另外,請注意,索引表示在include引數中輸入的模型的位置。

pycaret中的所有訓練函式(create_model、tune_model、ensembly_model等)都會顯示乙個分數網格,但不會返回分數網格。因此,你不能將分數網格儲存在dataframe. 但是,有乙個名為pull的函式允許你這樣做。例如:

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

現在你可以像pandas一樣訪問度量了。例如,你可以建立乙個迴圈來訓練具有不同引數的模型,並使用以下簡單**建立乙個比較表:

另乙個常見的困惑是,所有的預處理都是在幕後進行的,使用者無法訪問。因此,你無法審核執行設定函式時發生的情況。這不是真的。

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);

>>> 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中的所有更新的更多資訊,請參閱發行說明或閱讀此公告:

使用者指南:

文件:官方教程:

notebook示例:

其他資源:

單擊下面的鏈結,檢視文件和工作示例。

分類:api/classification.html

回歸:api/regression.html

聚類:api/clustering.html

異常檢測:api/anomaly.html

自然語言處理:api/nlp.html

關聯規則挖掘:api/arules.html

sklearn機器學習中文官方文件:

ant debug最常見的乙個錯誤解決

這個問題,我用了一下午的時間,在網上搜尋各種解決方法都沒有解決,最後我同事一句話就給解決了!好了,閒話少說,直接貼問題和解決方法 問題 ant debug失敗,失敗資訊如下 build failed users documents android developer adt bundle mac x...

Http的常見錯誤解析

http 400 請求無效 http 401.1 未授權 登入失敗 http 401.2 未授權 伺服器配置問題導致登入失敗 http 401.3 acl禁止訪問資源 http 401.4 未授權 授權被篩選器拒絕 http 401.5 未授權 isapi或cgi授權失敗 http 403 禁止訪問...

Http的常見錯誤解析

http 400 請求無效 http 401.1 未授權 登入失敗 http 401.2 未授權 伺服器配置問題導致登入失敗 http 401.3 acl禁止訪問資源 http 401.4 未授權 授權被篩選器拒絕 http 401.5 未授權 isapi或cgi授權失敗 http 403 禁止訪問...