集成学习之-stacking

一、引言

对于单模型来说,模型的抗干扰能力低,且难以拟合复杂的数据。
所以可以集成多个模型的优缺点,提高泛化能力。
集成学习一般有三种:boosting是利用多个弱学习器串行,逐个纠错,构造强学习器。
bagging是构造多个独立的模型,然后增强泛化能力。
而stacking结合了以上两种方式,将xy先进行n-fold,然后分给n个基学习器学习,再将n个输出的预测值进行堆叠,形成新的样本数据作为x。新的x和旧的y交给第二层模型进行拟合。

二、代码

import numpy as np
from sklearn.model_selection import KFold
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
class MyStacking:
    # 初始化模型参数
    def __init__(self, estimators, final_estimator, cv=5, method='predict'):
        self.cv = cv
        self.method = method
        self.estimators = estimators
        self.final_estimator = final_estimator
    # 模型训练
    def fit(self, X, y):
        # 获得一级输出
        dataset_train = self.stacking(X, y)
        # 模型融合
        self.final_estimator.fit(dataset_train, y)
    # 堆叠输出
    def stacking(self, X, y):
        kf = KFold(n_splits=self.cv, shuffle=True, random_state=2021)
        # 获得一级输出
        dataset_train = np.zeros((X.shape[0], len(self.estimators)))
        for i, model in enumerate(self.estimators):
            for (train, val) in kf.split(X, y):
                X_train = X[train]
                X_val = X[val]
                y_train = y[train]
                y_val_pred = model.fit(X_train, y_train).predict(X_val)
                dataset_train[val, i] = y_val_pred
            self.estimators[i] = model
        return dataset_train
    # 模型预测
    def predict(self, X):
        datasets_test = np.zeros((X.shape[0], len(self.estimators)))
        for i, model in enumerate(self.estimators):
            datasets_test[:, i] = model.predict(X)
        return self.final_estimator.predict(datasets_test)
    # 模型精度
    def score(self, X, y):
        datasets_test = np.zeros((X.shape[0], len(self.estimators)))
        for i, model in enumerate(self.estimators):
            datasets_test[:, i] = model.predict(X)
        return self.final_estimator.score(datasets_test, y)
if __name__ == '__main__':
    X, y = load_iris(return_X_y=True)
    X_train, X_test, y_train, y_test = train_test_split(
        X, y, train_size=0.7, random_state=0)
    estimators = [
        RandomForestClassifier(n_estimators=10),
        GradientBoostingClassifier(n_estimators=10)
    ]
    clf = MyStacking(estimators=estimators,
                     final_estimator=LogisticRegression())
    clf.fit(X_train, y_train)
    print(clf.score(X_train, y_train))
    print(clf.score(X_test, y_test))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/34499.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux-使用 tslib 库

上一章我们学习了如何编写触摸屏应用程序,包括单点触摸和多点触摸,主要是对读取到的 struct input_event 类型数据进行剖析,得到各个触摸点的坐标。本章向大家介绍 tslib 库,这是 Linux 系统下,专门为触摸屏开发的应用…

SHELL----正则表达式

一、文本搜索工具——grep grep -参数 条件 文件名 其中参数有以下: -i 忽略大小写 -c 统计匹配的行数 -v 取反,不显示匹配的行 -w 匹配单词 -E 等价于 egrep ,即启用扩展正则表达式 -n 显示行号 -rl 将指定目录内的文件打…

[Redis#15] 持久化 | AOF | rewrite | aof_buf | 混合持久化

目录 1 使用AOF 流程 问题一:父进程在fork之后继续写旧AOF文件的意义 问题二:执行BGREWRITEAOF时的特殊情况处理 2 命令写入 3 文件同步 4 重写机制 工作流程: 触发条件 混合持久化 持久化 sum AOF(Append Only File&a…

重生之我在异世界学智力题(1)

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言智力题题目:《奇怪的时钟…

【WRF后处理】WRF时区(UTC)需转化为北京时间(CST)!!!

目录 WRF运行时间标准注意事项-本地时区问题 输入数据:ERA5时间标准ERA5数据和WRF模型需要转换为北京时间!!!北京时间(CST)与协调世界时(UTC)的关系转换方法 参考 WRF运行时间标准 …

css怎么使页面高度占满屏幕?

下面是一个小程序的页面,用uniapp写的,现在有一个问题,就是最外层的allmy的图层,屏幕是灰色,我怎么才能使这个图层占满屏幕,就是让灰色占满屏幕。 直接先给page设置一个height:100%;然后allmy的height:100%…

K8S离线部署Nacos集群【Oracle作外部数据源】

一、前言 由于公司的要求下要使Nacos集群以Oracle作为外部数据源,前期咱们已经阐述了如何在本地搭建(Nacos集群搭建【Oracle作外部数据源】),本次将带领大家在k8s上部署Nacos集群并以Oracle作为外部数据源。 二、软件包 nacos-f…

Halcon 深度学习目标分类:原理与应用全解析

摘要: 本文深入探讨了 Halcon 在深度学习目标分类方面的原理及广泛的应用场景。详细阐述了从数据准备到模型训练与分类决策的目标分类工作流程,剖析了其背后的深度学习技术支撑。同时,结合多个行业领域,展示了 Halcon 目标分类技术…

【burp】burpsuite基础(五)

Burp Suite基础(五) 声明:该笔记为up主 泷羽的课程笔记,本节链接指路。 警告:本教程仅作学习用途,若有用于非法行为的,概不负责。 抓包方式 burp在抓包上十分全面,这里介绍几种抓包…

固态电池产业路径思考

《固态电池产业路径思考》主要探讨了固态电池的研究思路、解决方案、已取得的成果以及TC固态电池的介绍。以下是核心内容的整理: 一、固态电池优势 高比能耐高温易匹配高电压镍钴锰(NCM)正极和金属锂负极 二、固态电池关键共性问题 固态电…

第3章.垃圾收集器与内存分配策略

概述 对象已死 引用计数法 可达性分析算法 再谈引用 生存还是死亡 回收方法区 垃圾收集算法 分代收集理论 3种垃圾收集算法 HotSpot的算法细节实现 根节点枚举 安全点 安全区域 记忆集与卡表 写屏障 并发的可达性分析 误消亡问题 经典垃圾收集器 概述 简单的一些GC CMS G1 低延…

推动行业创新 猿辅导素养课斩获“2024影响力教育品牌”奖项

近日,由教育界网、校长邦联合主办,鲸媒体、职教共创会协办的“第9届榜样教育年度盛典”评奖结果揭晓。猿辅导素养课凭借在素养教育领域的卓越表现和深远影响力,荣获“2024影响力教育品牌”奖项。这一殊荣不仅肯定了猿辅导素养课在教学教研和产…

Vue工程化开发中各文件的作用

1.main.js文件 main.js文件的主要作用:导入App.vue,基于App.vue创建结构渲染index.html。

注解方式的AspectJ实现方式

BookService类 package com.hkd.service;public interface BookService {public void buyJava();public int comment();void buy(); }BookServiceImp类 package com.hkd.service;import org.springframework.stereotype.Component;Component("bs") public class Bo…

侦查与监测类吊舱应用场景!

一、军事领域 侦察与监视: 侦查与监测类吊舱能够全天候、全气候地提供高清图像数据,支持军事侦察和监视任务。 通过可见光相机和红外热成像仪的结合,吊舱可以在白天和夜晚、晴天和恶劣天气条件下,为无人机等空中平台提供清晰的…

(ICLR-2022)LoRA:大型语言模型的低秩自适应

LoRA:大型语言模型的低秩自适应 Paper是Microsoft Corporation发表在ICLR 2022的工作 Paper Title:LoRA: Low-Rank Adaptation of Large Language Models Code :地址 Abstract 自然语言处理的主导范式包括对通用领域数据进行大规模预训练&am…

linux上修改容器网卡docker0为固定ip

修改容器为固定ip段。 1.在一次项目中发现创建的容器网段跟办公室网段有冲突的,导致连接不上。修改容器ip为固定ip 这是默认启动docker自动创建的。172网段 2.修改前先停用运行容器 3.在配置路径下修改vim /etc/docker/daemon.json 4.重启docker systemctl re…

群硕融合医疗器械:打造智能治疗设备管理平台,全程护航精准手术

治疗成功率更高,患者更信任。 科技革命在医疗领域开花 在珠海航展上,一群灵活穿梭于复杂地形的机器狗吸引了人们的目光,它们仿佛是从科幻电影中走出的“未来战士”,展现了科技应用的无限潜力。 与此同时,医疗领域同…

成都栩熙酷网络科技抖音电商为您打造无忧购物体验

在这个信息爆炸的时代,电子商务的便捷性让越来越多的人选择在线购物。作为一家深耕西南地区的创新型科技企业,成都栩熙酷网络科技有限公司(以下简称“栩熙酷”)始终将用户的安全与满意度置于首位,致力于通过先进的技术…

细节之处见真章:移门缓冲支架的功能之美

细节之处见真章,这句话在移门缓冲支架的设计与应用中得到了完美的诠释。移门缓冲支架不仅仅是一个简单的五金件,它通过一系列精心设计的功能,确保了移门关闭过程中的平稳和安静,同时为家居环境增添了实用和美学价值。下面我们将深…