pycaret之集成模型(集成模型、混合模型、堆疊模型)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM