zoukankan      html  css  js  c++  java
  • 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]])

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 阮小二买彩票
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 企业奖金发放
    Java实现 蓝桥杯VIP 算法提高 企业奖金发放
    让程序后台隐藏运行
    只要你喜欢,并且可以养家糊口,就是好的
  • 原文地址:https://www.cnblogs.com/xiximayou/p/13799094.html
Copyright © 2011-2022 走看看