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]])
- 从零开始的Spring Session(三)
- 从零开始的Spring Session(一)
- 一个通用的Java正则匹配工具
- 从零开始的Spring Session(二)
- [汇总]2013年度全球重、特大网络安全事件回顾
- android常用接口(一)
- 2014密码时代已死?六种旨在取代传统密码位置的新奇想法
- 程序员你为什么这么累【续】:编码习惯之配置规范
- Spring Security (一) Architecture Overview
- Spring Security (二) Guides
- 一个 android 的框架
- Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式
- android常用接口(二)
- Spring Cloud实战小贴士:Zuul的饥饿加载(eager-load)使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用DockerFile构建运行GoWeb
- windows版gbc:基于enginx的组件服务器系统paas,可用于mixed web与websocket game
- 01 . RPC简介原理及用Go实现一个RPC
- 17 . Go之网络编程
- 01 . Go框架之Beego简介部署及程序流程分析
- 服务器入侵排查流程
- Nginx配置各种响应头防止XSS,点击劫持,frame恶意攻击
- Redis一站式管理平台工具,支持集群创建,管理,监控,报警
- Go操作Redis
- 腾讯蓝鲸自动化运维平台简介部署及常见报错解决
- 07 . ELK Stack7.2一键多机部署脚本
- Kibana配置nginx反代并本地ca加密nginx
- Nginx WebUI管理
- Go之Gorm和BeegoORM简介及配置使用
- msyscuione:基于msys的一体化CUI开发生产环境,支持qt,llvm,ros集成常见web appstack