机器学习第10天:集成学习

文章目录

机器学习专栏

介绍

投票分类器

介绍

代码

核心代码

示例代码

软投票与硬投票

bagging与pasting

介绍

核心代码

随机森林

介绍

代码

结语


机器学习专栏

机器学习_Nowl的博客-CSDN博客

介绍

集成学习的思想是很直观的:多个人判断的结合往往比一个人的想法好

我们将在下面介绍几种常见的集成学习思想与方法 

投票分类器

介绍

假如我们有一个分类任务,我们训练了多个模型:逻辑回归模型,SVM分类器,决策树分类器,然后我们看他们预测的结果,如果两个分类器预测为1,一个分类器预测为0,那么最后模型判断为1,采用的是一种少数服从多数的思想


代码

核心代码

引入投票分类器库,并创建模型

from sklearn.ensemble import VotingClassifierlog_model = LogisticRegression()
tree_model = DecisionTreeClassifier()
svc_model = SVC()voting_model = VotingClassifier(estimators=[('lr', log_model), ('df', tree_model), ('sf', svc_model)],voting='hard'
)voting_model.fit(x, y)

例子中创建了三个基础分类器,最后再组合成一个投票分类器 

示例代码

我们在鸢尾花数据集上测试不同模型的分类效果

from sklearn.ensemble import VotingClassifier
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_splitiris = load_iris()
X = iris.data  # petal length and width
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)log_model = LogisticRegression()
tree_model = DecisionTreeClassifier()
svc_model = SVC()voting_model = VotingClassifier(estimators=[('lr', log_model), ('df', tree_model), ('sf', svc_model)],voting='hard'
)for model in (log_model, tree_model, svc_model, voting_model):model.fit(X_train, y_train)y_pred = model.predict(X_test)print(model, accuracy_score(y_test, y_pred))

运行结果

该示例代码可以看到各个模型在相同数据集上的性能测试,该示例的数据集较小,所以性能相差不大,当数据集增大时 ,集成学习的性能往往比单个模型更优


软投票与硬投票

当基本模型可以计算每个类的概率时,集成学习将概率进行平均计算得出结果,这种方法被称作软投票,当基本模型只能输出类别时,只能实行硬投票(以预测次数多的为最终结果)

bagging与pasting

介绍

除了投票分类这种集成方法,我们还有其他方法,例如:使用相同的基础分类器,但是每个分类器训练的样本将从数据集中随机抽取,最后再结合性能,若抽取样本放回,则叫做bagging方法,若不放回,则叫做pasting方法


核心代码

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifiermodel = BaggingClassifier(DecisionTreeClassifier(), n_estimators=500,max_samples=100, bootstrap=True, n_jobs=-1
)model.fit(X_train, y_train)

若基本分类器可以计算每个类的概率,BaggingClassifier自动执行软分类方法

bootstrap = True设置模型采用Bagging放回采样法

n_jobs参数代表用多少CPU内核进行训练何预测(-1代表使用所有可用内核)

设置为False时采用Pasting不放回采样法 


随机森林

介绍

随机森林就是一种基本模型是决策树的Bagging方法,你可以使用BaggingClassifier集成DecisionTreeClassifier,也可以使用现成的库


代码

from sklearn.ensemble import RandomForestClassifiermodel = RandomForestClassifier(n_estimators=100, max_leaf_nodes=16, n_jobs=-1)
model.fit(X_train, y_train)

max_leaf_nodes限制了子分类器的最大叶子节点数量


结语

集成学习就是利用了一个很基本的思想:多数人的想法往往比一个人的想法更优,同时概率论中也有这样一个场景:实验次数越多,概率越接近本质

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

身份证阅读器和社保卡读卡器Harmony鸿蒙系统ArkTS语言SDK开发包

项目需求,用ArkTS新一代开发语言实现了在Harmony鸿蒙系统上面兼容身份证阅读器和社保卡读卡器,调用了DonseeDeviceLib.har这个读卡库。 需要注意的是,鸿蒙系统的app扩展名为.hap,本项目编译输出的应用为:entry-default…

下厨房网站月度最佳栏目菜谱数据获取及分析PLus

目录 概要 源数据获取 写Python代码爬取数据 Scala介绍与数据处理 1.Sacla介绍 2.Scala数据处理流程 数据可视化 最终大屏效果 小结 概要 本文的主题是获取下厨房网站月度最佳栏目近十年数据,最终进行数据清洗、处理后生成所需的数据库表,最终进…

JPA整合Sqlite解决Dialect报错问题, 最新版Hibernate6

前言 我个人项目中,不想使用太重的数据库,而内嵌数据库中SQLite又是最受欢迎的, 因此决定采用这个数据库。 可是JPA并不支持Sqlite,这篇文章就是记录如何解决这个问题的。 原因 JPA屏蔽了底层的各个数据库差异, 但是…

竞赛 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

亚马逊第二个大语言模型 Olympus 即将上线

据外媒爆料,亚马逊正在训练他的第二个大语言模型——Olympus,很有可能在今年12月份上线。亚马逊计划将Olympus接入在线零售商店、Echo等设备上的Alexa语音助手,并为AWS平台提供新的功能。据说这个大语言模型规模达到2万亿(2000B&a…

读《Segment Anything in Defect Detection》

摘要 (好像只是说把SAM应用到了红外缺陷分割领域) 引言 无损检测得到红外图像,根据热能观察异常 贡献: •从两个光学脉冲热成像系统构建广泛的缺陷热数据库,包括各种材料并释放它们。 • 开发DefectSAM,这是第一个用于缺陷检测…

MAC地址注册的网络安全影响和措施分析

MAC地址注册对网络安全具有重要影响,同时也需要采取相应的措施来应对潜在的安全风险。以下是有关MAC地址注册的网络安全影响和应对措施的分析: 影响: 1. 身份验证:MAC地址注册可用于设备的身份验证,但MAC地址本身并不…

不标年份的葡萄酒质量好吗?

我们在葡萄酒标上经常看到生产年份,也就是指全部葡萄采摘的年份。旧世界葡萄酒产国认为葡萄酒年份对他们的影响较大,而新世界葡萄酒,年份的意义就稍微小些。甚至有一部分葡萄酒酒标上没有年份。在酒标上没有标注年份的葡萄酒,被称…

学习无人机代码框架【第一天】---VMware 安装Ubuntu16.04时显示不全的解决方法

ros环境配置篇 环境配置在vmware上安装ubantu16.04操作系统安装完成后显示界面太小解决办法其他遇到的一些ubantu问题最后一步是在ubantu16上安装ros-kinetic其他很重要的一个工具是安装vmware-tool,可以支持把外部的文件或文字传入到虚拟机中管理不同的终端的软件代…

[C/C++] 数据结构 LeetCode:用队列实现栈

题目描述: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元…

kubernetes集群编排——etcd

备份 从镜像中拷贝etcdctl二进制命令 [rootk8s1 ~]# docker run -it --rm reg.westos.org/k8s/etcd:3.5.6-0 sh 输入ctrlpq快捷键,把容器打入后台 获取容器id [rootk8s1 ~]# docker ps 从容器拷贝命令到本机 docker container cp c7e28b381f07:/usr/local/bin/etcdc…

最大子段和(分治法+动态规划法)

求最大子段和 此类问题通常是求数列中连续子段和的最大值,经典的股票问题就是考察的这个思想及拓展。 例题: AcWing:1054. 股票买卖 Leetcode:53. 最大子数组和 分治法O(nlogn) 此类问题时分适合采用分治思想,因为所有子区间 [ s t a r t …

要事第一:如何通过6个步骤确定项目的优先级

当收到很多项目请求并且每个请求都是重中之重时,该怎么办?从最易完成的开始?还是先解决最大的问题? 实际上两种做法都不对。确定项目优先级的更好方法是评估以下内容,而不是关注项目规模或完成时长: ● 每…

DBeaver连接本地MySQL

原文: DBeaver21.3.0安装与连接本地MySQL_dbeaver创建本地数据库_傅大胖的博客-CSDN博客 其他: mysql 的驱动下载地址: Central Repository: mysql/mysql-connector-java ​​​​​​​

三相异步电机动态数学模型及矢量控制仿真

文章目录 三相异步电机动态数学模型及矢量控制仿真1、异步电机三相方程2、坐标变换3、磁链3/2变换推导4、两相静止坐标系下的方程5、两相旋转坐标系下的方程6、以 ω-is-Ψr 为状态变量的状态方程7、矢量控制及 matlab 仿真 原文链接需要仿真的同学请关注【Qin的学习营地】 三相…

百云齐鲁 | 云轴科技ZStack成功实践精选(山东)

山东省作为我国重要的工业基地和北方地区经济发展的战略支点,在“十四五”规划中将数字强省建设分为数字基础设施、数字科技、数字经济、数字政府、数字社会、数字生态六大部分,涵盖政治、经济、民生等多个方面,并将大数据、云计算、人工智能…

统一身份认证平台之SSO建设

前言 上篇说道Passwordless无密码技术,也提到了数字时代密码管理的难度,其实在日常的生活中,很多用户也会因为忘记某些网站的登录密码而烦恼。为了方便记忆,很多人都在不同的站点使用相同的用户名和密码,虽然也可以减少…

uvm环境获取系统时间的方法和使用案例

背景: 有时候我们想统计一下验证环境中某个步骤总共花费了多少时间,有什么比较方便的方法呢,利用$realtime理论上也是能做到的,不过这个和timescale绑定起来了,需要手动换算成单位是秒的数,现在提供一种利用…

未来之路:互联网技术驱动汽车行业的创新浪潮

在互联网迅猛发展的今天,它的触角已延伸至各行各业,其中最引人注目的莫过于汽车行业。随着互联网技术的融合,汽车正变得越来越智能,预示着一场关于出行方式的革命。 首先,自动驾驶技术的发展正日益成熟。依托先进的传感…

josef约瑟 闭锁继电器 LB-7DG 100V 50HZ 导轨安装

LB-7型闭锁继电器 闭锁继电器LB-7导轨安装 一、用途 LB-7型闭锁继电器(以下简称继电器)用于发电厂及变电所内高压母线带电时防止和接地刀闸。 二、结构和工作原理 1、继电器按整流式原理构成,该继电器由变压器、电阻器、整流桥、滤波电容、极化继电器及指示灯组…