1、集成模型
組裝訓練好的模型就像編寫ensemble_model一樣簡單。它僅采用一個強制性參數,即經過訓練的模型對象。此函數返回一個表,該表具有k倍的通用評估指標的交叉驗證分數以及訓練有素的模型對象。使用的評估指標是:
分類:准確性,AUC,召回率,精度,F1,Kappa,MCC
回歸:MAE,MSE,RMSE,R2,RMSLE,MAPE
可以使用ensemble_model函數中的fold參數定義折疊次數。默認情況下,折疊倍數設置為10。默認情況下,所有指標均四舍五入到4位小數,可以使用round參數進行更改。有兩種可用於合奏的方法,可以使用ensemble_model函數中的method參數設置。這兩種方法都需要對數據進行重新采樣並擬合多個估計量,因此可以使用n_estimators參數來控制估計量的數量。默認情況下,n_estimators設置為10。
該函數僅在pycaret.classification和pycaret.regression模塊中可用。
Bagging:Bagging,也稱為Bootstrap聚合,是一種機器學習集成元算法,旨在提高統計分類和回歸中使用的機器學習算法的穩定性和准確性。 它還可以減少差異並有助於避免過度擬合。 盡管它通常應用於決策樹方法,但可以與任何類型的方法一起使用。 套袋是模型平均方法的特例。
Boosting:Boosting是一種集成元算法,主要用於減少監督學習中的偏見和差異。 提升屬於機器學習算法家族,可將弱學習者轉化為強學習者。 弱學習者被定義為僅與真實分類略相關的分類器(它可以比隨機猜測更好地標記示例)。 相反,學習能力強的分類器是與真實分類任意相關的分類器。
分類例子:
from pycaret.datasets import get_data diabetes = get_data('diabetes') # Importing module and initializing setup from pycaret.classification import * clf1 = setup(data = diabetes, target = 'Class variable') # train a decision tree model dt = create_model('dt') # train a bagging classifier on dt bagged_dt = ensemble_model(dt, method = 'Bagging') # train a adaboost classifier on dt with 100 estimators boosted_dt = ensemble_model(dt, method = 'Boosting', n_estimators = 100)
回歸例子:
from pycaret.datasets import get_data boston = get_data('boston') # Importing module and initializing setup from pycaret.regression import * reg1 = setup(data = boston, target = 'medv') # train a decision tree model dt = create_model('dt') # train a bagging classifier on dt bagged_dt = ensemble_model(dt, method = 'Bagging') # train a adaboost classifier on dt with 100 estimators boosted_dt = ensemble_model(dt, method = 'Boosting', n_estimators = 100)
2、混合模型
混合模型是一種集合方法,它使用估算器之間的共識來生成最終預測。融合的思想是結合不同的機器學習算法,並在分類的情況下使用多數投票或平均預測概率來預測最終結果。在PyCaret中混合模型就像編寫blend_models一樣簡單。此函數可用於混合可以使用blend_models中的estimator_list參數傳遞的特定訓練模型,或者如果未傳遞列表,它將使用模型庫中的所有模型。在分類的情況下,方法參數可用於定義“軟”或“硬”,其中軟使用預測的概率進行投票,而硬使用預測的標簽。此函數返回一個表,該表具有k倍的通用評估指標的交叉驗證分數以及訓練有素的模型對象。使用的評估指標是:
分類:准確性,AUC,召回率,精度,F1,Kappa,MCC
回歸:MAE,MSE,RMSE,R2,RMSLE,MAPE
可以使用blend_models函數中的fold參數定義折疊次數。默認情況下,折疊倍數設置為10。默認情況下,所有指標均四舍五入到4位小數,可以使用blend_models中的round參數進行更改。
該函數僅在pycaret.classification和pycaret.regression模塊中可用。
分類例子:
# Importing dataset from pycaret.datasets import get_data diabetes = get_data('diabetes') # Importing module and initializing setup from pycaret.classification import * clf1 = setup(data = diabetes, target = 'Class variable') # train a votingclassifier on all models in library blender = blend_models() # train a voting classifier on specific models dt = create_model('dt') rf = create_model('rf') adaboost = create_model('ada') blender_specific = blend_models(estimator_list = [dt,rf,adaboost], method = 'soft') # train a voting classifier dynamically blender_specific = blend_models(estimator_list = compare_models(n_select = 5), method = 'hard')
回歸例子:
# Importing dataset from pycaret.datasets import get_data boston = get_data('boston') # Importing module and initializing setup from pycaret.regression import * reg1 = setup(data = boston, target = 'medv') # train a voting regressor on all models in library blender = blend_models() # train a voting regressoron specific models dt = create_model('dt') rf = create_model('rf') adaboost = create_model('ada') blender_specific = blend_models(estimator_list = [dt,rf,adaboost]) # train a voting regressor dynamically blender_specific = blend_models(estimator_list = compare_models(n_select = 5))
3、堆疊模型
堆疊模型是使用元學習的整合方法。堆疊背后的想法是建立一個元模型,該模型使用多個基本估計量的預測來生成最終預測。在PyCaret中堆疊模型就像編寫stack_models一樣簡單。此函數使用estimator_list參數獲取訓練模型的列表。所有這些模型構成了堆棧的基礎層,它們的預測用作元模型的輸入,可以使用meta_model參數傳遞該元模型。如果未傳遞任何元模型,則默認情況下使用線性模型。在分類的情況下,方法參數可用於定義“軟”或“硬”,其中軟使用預測的概率進行投票,而硬使用預測的標簽。該函數返回一個表,該表具有經過共同驗證的指標的k倍交叉驗證得分以及訓練有素的模型對象。使用的評估指標是:
分類:准確性,AUC,召回率,精度,F1,Kappa,MCC
回歸:MAE,MSE,RMSE,R2,RMSLE,MAPE
可以使用stack_models函數中的fold參數定義折疊次數。默認情況下,折疊倍數設置為10。默認情況下,所有指標均四舍五入到4位小數,可以使用stack_models中的round參數進行更改。 restack參數控制將原始數據公開給元模型的能力。默認情況下,它設置為True。當更改為False時,元模型將僅使用基本模型的預測來生成最終預測。
多層堆疊
基本模型可以在單層或多層中,在這種情況下,來自每個先前層的預測將作為輸入傳遞到下一層,直到到達元模型,其中將包括基本層在內的所有層的預測用作輸入 產生最終的預測。 要多層堆疊模型,create_stacknet函數接受estimator_list參數作為列表中的列表。 所有其他參數都相同。 請參見以下使用create_stacknet函數的回歸示例。
該函數僅在pycaret.classification和pycaret.regression模塊中可用。
警告:在以后的PyCaret 2.x發行版中將不建議使用此功能。
分類例子:
# Importing dataset from pycaret.datasets import get_data diabetes = get_data('diabetes') # Importing module and initializing setup from pycaret.classification import * clf1 = setup(data = diabetes, target = 'Class variable') # create individual models for stacking ridge = create_model('ridge') lda = create_model('lda') gbc = create_model('gbc') xgboost = create_model('xgboost') # stacking models stacker = stack_models(estimator_list = [ridge,lda,gbc], meta_model = xgboost) # stack models dynamically top5 = compare_models(n_select = 5) stacker = stack_models(estimator_list = top5[1:], meta_model = top5[0])
回歸例子:
# Importing dataset from pycaret.datasets import get_data boston = get_data('boston') # Importing module and initializing setup from pycaret.regression import * reg1 = setup(data = boston, target = 'medv') # creating multiple models for multiple layer stacking catboost = create_model('catboost') et = create_model('et') lightgbm = create_model('lightgbm') xgboost = create_model('xgboost') ada = create_model('ada') rf = create_model('rf') gbr = create_model('gbr') # creating multiple layer stacking from specific models stacknet = create_stacknet([[lightgbm, xgboost, ada], [et, gbr, catboost, rf]])