【机器学习】Sklearn 集成学习-投票分类器(VoteClassifier)
前言
在【机器学习】集成学习基础概念介绍中有提到过,集成学习的结合策略包括: 平均法、投票法和学习法。sklearn.ensemble
库中的包含投票分类器(Voting Classifier) 和投票回归器(Voting Regressor),分别对回归任务和分类任务的机器学习模型进行投票。
本文分成两个部分:
1)VoteClassifier:介绍软、硬两种投票方法的原理;
2)详细的代码示例,使用鸢尾花数据集展示如何通过投票分类器提高整体模型的表现。
VoteClassifier
VotingClassifier背后的想法是组合概念上不同的机器学习分类器,并使用多数投票或平均预测概率(软投票)来预测类别标签。这样的分类器可以用于一组性能同样良好的模型,以平衡它们各自的弱点。
#定义投票分类器
model= VotingClassifier(estimators=[('lr',LR), ('rf', RF), ('gnb', GNB)], #指定需要投票的学习器,这里lr\rf\gnb代表3中不同的模型。voting='soft', #选择投票方式,有soft和hardweights=[2,10,1]) #权重设置#使用投票分类器训练模型
model.fit(X,y)
硬投票(Majority/Hard Voting)
- 多数投票法,也叫硬投票,根据少数服从多数的原则 (Majority Class Labels),。
- 若是有并列的最高票,则会按照升序排序顺序选择。举例如下:
例子1:会被标记为class 1, 因为三个分类器中有两个投了"class 1"。
classifier 1 -> class 1
classifier 2 -> class 1
classifier 3 -> class 2
例子2:按照结果升序排列,最终标记为class 1。
classifier 1 -> class 2
classifier 2 -> class 1
软投票(Soft Voting):
- 加权投票法,增加了权重
weight
参数, 使用加权平均概率(Weighted Average Probabilities) - 该方法要求分类器支持
predict_proba
方法,即可以输出每个实例属于每一类的概率。 - 如下图所示, 有三个分类器(classifier 1、classifier 2、classifier 3)和三个分类(class1,2,3) ,我们分别给3个分类器都设置相同的权重,即:w1=1, w2=1, w3=1。class2的平均概率是最高的(0.4>0.37>0.23),所以该实例最后的分类为class 2。
详细代码示例
1. 导入包和数据准备
数据集使用的是鸢尾花数据集。
from sklearn import datasets
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import VotingClassifier
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings("ignore")#数据提取
iris = datasets.load_iris()
#设置X、y
X, y = iris.data[:, 1:3], iris.target#格式转换,整合成表格
iris_data = pd.DataFrame(np.hstack((X, y.reshape(-1, 1))),index = range(X.shape[0]),columns=['petal_length_cm','petal_width_cm','class'] )
2.基础分类器建模
这里使用了逻辑回归、随机森林、朴素贝叶斯三个模型作为基础的分类器
#逻辑回归
LR = LogisticRegression(random_state=1)
LR.fit(X,y)
iris_data['LR']=LR.predict(X)#随机森林
RF = RandomForestClassifier(n_estimators=50, random_state=1)
RF.fit(X,y)
iris_data['RF']=RF.predict(X)#朴素贝叶斯
GNB = GaussianNB()
GNB.fit(X,y)
iris_data['GNB']=GNB.predict(X)
3.VotingClassifier
集成学习使用硬投票、软投票以及设定权重后的软投票法。
#硬投票
hard_vote = VotingClassifier(estimators=[('lr',LR), ('rf', RF), ('gnb', GNB)],voting='hard')
hard_vote.fit(X,y)
iris_data['hard_vote']=hard_vote.predict(X)# 软投票
soft_vote = VotingClassifier(estimators=[('lr',LR), ('rf', RF), ('gnb', GNB)],voting='soft')
soft_vote.fit(X,y)
iris_data['soft_vote']=soft_vote.predict(X)# 软投票自定义权重
soft_weight_vote = VotingClassifier(estimators=[('lr',LR), ('rf', RF), ('gnb', GNB)],voting='soft',weights=[2,10,1]) #权重设置
soft_weight_vote.fit(X,y)
iris_data['soft_weight_vote']=soft_weight_vote.predict(X)
3.结果查看
查找结果不同的实例:
- 通过对比RF、soft_vote和soft_weight_vote, 后者因为权重的设置增加了RF分类器的权重,所以soft_weight_vote 的结果和RF一致。
- hard_vote是根据LR、RF、GNB中的多数结果。
#查看结果
#iris_data.tail(10)
#iris_data.head(10)
iris_data[iris_data['RF']!=iris_data['soft_vote']]
仅这个实例而言,通过计算accuracy 对比模型效果:
- 三个基础模型的准确率差异较大;
- 三个投票分类器的准确率都在0.95,表明集成算法的准确性最高、也更稳定。
#查看各个模型表现
for clf, label in zip([LR, RF, GNB, hard_vote,soft_vote,soft_weight_vote], ['Logistic Regression', 'Random Forest', 'naive Bayes', 'Ensemble(hard)','Ensemble(soft_weight)']):scores = cross_val_score(clf, X, y, scoring='accuracy', cv=5)print("Accuracy: %0.2f (+/- %0.2f) [%s]" % (scores.mean(), scores.std(), label))
参考链接
https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingClassifier.html#sklearn.ensemble.VotingClassifier
https://scikit-learn.org/stable/auto_examples/ensemble/plot_voting_probas.html#sphx-glr-auto-examples-ensemble-plot-voting-probas-py
相关文章:
【机器学习】Sklearn 集成学习-投票分类器(VoteClassifier)
前言 在【机器学习】集成学习基础概念介绍中有提到过,集成学习的结合策略包括: 平均法、投票法和学习法。sklearn.ensemble库中的包含投票分类器(Voting Classifier) 和投票回归器(Voting Regressor),分别对回归任务和分类任务的…...
Day892.MySql读写分离过期读问题 -MySQL实战
MySql读写分离过期读问题 Hi,我是阿昌,今天学习记录的是关于MySql读写分离过期读问题的内容。 一主多从架构的应用场景:读写分离,以及怎么处理主备延迟导致的读写分离问题。 一主多从的结构,其实就是读写分离的基本…...
无线蓝牙耳机哪个品牌音质好?性价比高音质好的蓝牙耳机排行榜
其实蓝牙耳机购买者最担忧的就是音质问题,怕拿到手的蓝牙耳机低频过重又闷又糊,听歌闷耳的问题,但从2021年蓝牙技术开始突飞猛进后,蓝牙耳机的音质、连接甚至是功能都发生了很大的变化,下面我分享几款性价比高音质的蓝…...
店铺微信公众号怎么创建?
有些小伙伴问店铺微信公众号怎么创建,在解答这个问题之前,先简单说说店铺和微信公众号关系: 店铺一般是指小程序店铺,商家通过小程序店铺来卖货;微信公众号则是一个发布信息的平台。但是两者之间可以打通,…...
goLang Mutex用法案例详解
Golang以其并发性Goroutines而闻名。不仅是并发,还有更多。 因此,在这种情况下,我们必须确保多个goroutines不应该同时试图修改资源,从而导致冲突。 为了确保资源一次只能被一个goroutine访问,我们可以使用一个叫做sync.Mutex的东西。 This concept is called mutual ex…...
java常见的异常
异常分类 Throwable 是java异常的顶级类,所有异常都继承于这个类。 Error,Exception是异常类的两个大分类。 Error Error是非程序异常,即程序不能捕获的异常,一般是编译或者系统性的错误,如OutOfMemorry内存溢出异常等。 Exc…...
从0开始学python -33
Python3 输入和输出 -1 在前面几个章节中,我们其实已经接触了 Python 的输入输出的功能。本章节我们将具体介绍 Python 的输入输出。 — 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 第三种方式是使用文件对象的 write() 方法ÿ…...
ModuleNotFoundError: No module named ‘glfw‘ 解决方案
错误描述 env gym.make(env_id) File "/opt/conda/envs/WNPG/lib/python3.8/site-packages/gym/envs/registration.py", line 619, in make env_creator load(spec_.entry_point) File "/opt/conda/envs/WNPG/lib/python3.8/site-packages/gym/envs/r…...
RadZen运行和部署,生成业务web应用程序
RadZen运行和部署,生成业务web应用程序 快速简单地生成业务web应用程序,可视化地构建和启动web程序,而我们为您创建新代码。 从信息开始 连接到数据库。Radzen推断您的信息并生成一个功能完备的web应用程序。支持MSSQL REST服务。 微调 添加页面或编辑生…...
分享7个比B站更刺激的老司机网站,别轻易点开
俗话说摸鱼一时爽,一直摸一直爽,作为一个程序员老司机了,一头乌黑浓密的头发还时不时被同事调侃,就靠这10个网站让我健康生活,不建议经常性使用,因为还有一句俗话,那就是“摸鱼一时爽࿰…...
浅析:如何在Vue3+Vite中使用JSX
目录 0. Vue3,Vite,JSX 三者的关系 JSX介绍 在 Vue3 中使用 JSX 安装插件(vitejs/plugin-vue-jsx) 新建 jsx 文件 语法 补充知识:注意事项 0. Vue3,Vite,JSX 三者的关系 Vue3、Vite 和 …...
开发小程序需要什么技术?
小程序是一种新的开发能力,相比于原生APP 开发周期短,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。 开发小程序需要什么技术? 前端技术基础:html、js、css。具体到小程序&a…...
7个营销人员常见的社交媒体问题以及解决方法
在如今的数字营销时代,许多营销人员都害怕在社交媒体上犯错。他们担心他们的社交媒体中的失误会演变成一场公关危机。面对一些常见的社交媒体问题,您需要知道如何避免和解决。对于数字营销人员来说,在现在这个信息互通,每时每刻都…...
BFC 是什么
在页面布局的时候,经常出现以下情况: 这个元素高度怎么没了?这两栏布局怎么没法自适应?这两个元素的间距怎么有点奇怪的样子?...... 原因是元素之间相互的影响,导致了意料之外的情况,这里就涉及…...
07 react+echart+大屏
reactechart大屏大屏ECharts 图表实际步骤React Typescript搭建大屏项目,并实现屏幕适配flexible rem实现适配1. 安装插件对echarts进行的React封装,可以用于React项目中,支持JS、TS如何使用完整例子官网参考大屏 ECharts 图表 ECharts 图…...
Linux/Ubuntu安装部署Odoo15仓管系统,只需不到十步---史上最成功
sudo apt-get update sudo apt install postgresql -y sudo apt-get -f install sudo dpkg -i /home/ubuntu/odoo_15.0.latest_all.deb —报错再次执行上一条命令再执行 —安装包地址:http://nightly.odoo.com/15.0/nightly/deb/–翻到最下面 sudo apt-get ins…...
Python奇异值分解
当AAA是方阵时,可以很容易地进行特征分解:AWΣW−1AW\Sigma W^{-1}AWΣW−1,其中Σ\SigmaΣ是AAA的特征值组成的对角矩阵。如果WWW由标准正交基组成,则W−1WTW^{-1}W^TW−1WT,特征分解可进一步写成WTΣWW^T\Sigma WWTΣ…...
AWS攻略——子网
文章目录分配子网给Public子网分配互联网网关创建互联网网关附加到VPC给Public子网创建路由表关联子网打通Public子网和互联网网关创建Public子网下的EC2进行测试配置Private子网路由给Private子网创建路由表附加在Private子网创建Private子网下的EC2进行测试创建实例在跳板机上…...
java面试 - mq
RocketMq和RabbitMq的优缺点 1、RabbitMQ 优点:rabbitMq 几万级数据量,基于erlang语言开发,因此响应速度快些,并且社区活跃度比较活跃,可视化界面。 缺点:数据吞吐量相对与小一些,并且是基于er…...
PTP GPTP芯片资料翻译88E6352
88E6352应用 网关 车载信息娱乐 车身域控制器 PTP PTP通过周期型地交换控制包实现 选择其中网络最佳质量时钟元素,作为PTP网络中Grand Master.没有Grand Master 节点变成PTP slave节点。PTP节点从Grand Master节点获得他们驱动频率和时间信息。 基本观念是PTP帧…...
用Python实现一个电影订票系统
一、效果展示通过Python实现一个电影订票系统,效果如下所示:二、整体结构图三、代码分解3.1 infos.py一部电影的详细信息适合用 字典 结构来存储,我们可以给字典里添加多个键值对来保存电影的名称、座位表和宣传时用的字符画,比如…...
什么是瞪铃企业
“瞪羚企业”是指创业后跨过死亡谷以科技创新或商业模式创新为支撑进入高成长期的中小企业。认定范围主要是产业领域符合国家和省战略新兴产业发展方向,涵盖新兴工业、新一代信息技术、生物健康、人工智能、金融科技、节能环保、消费升级等领域。按照硅谷的解释&…...
【深度学习】多分类问题和多标签分类问题
上一章——激活函数 文章目录什么是多分类问题Softmax贝叶斯公式softmax的损失函数多标签分类问题什么是多分类问题 在之前的课程中,我们学习了二分问题,二分问题中的所有数据会被分类为0和1(或者Ture和False)两种输出标签。但是…...
大学生开学买什么,返校必备数码好物推荐
开学还不知道需要准备些什么,这篇开学数码好物,希望能够对你在开学购买的好物有一些帮助,一款好的数码装备,可以让我们在学校学习当中能够用最少的时间,最大的产出,节省时间,提高学习效率&#…...
Unreal Engine06:Actor的实现
写在前面 Actor是可以放进地图的最基本类,这里主要是介绍一下Actor的使用。 一、空间坐标系 1. Actor的变换操作 Actor的变换变换操作主要包括四个部分: 位置;旋转;缩放; 上面三者都是对应三个轴进行变换࿱…...
2023美国大学生数学建模竞赛C题思路解析(含代码+数据可视化)
以下为2023美国大学生数学建模竞赛C题思路解析(含代码数据可视化)规则:猜词,字母猜对,位置不对为黄色,位置对为绿色,两者皆不对为灰色。困难模式下的要求:对于猜对的字母(…...
aws codebuild 自定义构建环境和本地构建
参考资料 Extending AWS CodeBuild with Custom Build Environments Docker in custom image sample for CodeBuild codebuild自定义构建环境 在创建codebuild项目的时候发现 构建环境是 Docker 映像,其中包含构建和测试项目所需的所有内容的完整文件系统 用ru…...
3年功能3年自动化,从8k到23k的学习过程
简单的先说一下,坐标杭州,14届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少)其中成功的有4家&…...
leaflet: 数据聚合,显示当前bounds区域中的点的名称列表(078)
第078个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中实现数据聚合的功能 ,左边列出右边可视区域内的marker的名称。这里主要用到了可视区域的范围以及contains函数。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方…...
XXL-JOB分布式任务调度框架(一)-基础入门
文章目录1.什么是任务调度2.常见定时任务方案2.1. 传统定时任务方案示例2.2. 缺点分析3.什么是分布式任务调度?3.1. 并行任务调度3.2. 高可用3.3. 弹性扩容3.4. 任务管理与监测4.市面上常见的分布式任务调度产品5.初识xxl-job6.xxl-job架构设计6.1.设计思想6.2.架构…...
网站改版 合同/沈阳百度seo排名优化软件
#正则表达式select * from employee where name like jin%;select * from employee where name regexp ^jin;select * from employee where name regexp ^jin.*(g|n)$; 转载于:https://www.cnblogs.com/FlFtFw/p/9544251.html...
建设基础化学网站的经验/今日军事新闻头条
选自GoogleAIblog 作者:Django Stars本文转自机器之心(nearhuman2014)原文链接:https://djangostars.com/blog/python-ide/前言写 Python 代码最好的方式莫过于使用集成开发环境(IDE)了。它们不仅能使你的…...
王爷王妃她红鸾心动了/网站做优化一开始怎么做
https://tech.meituan.com/2018/01/19/mybatis-cache.html https://blog.csdn.net/chi_666/article/details/107052896 一: 只能在【只有单表操作】的表上使用缓存 不只是要保证这个表在整个系统中只有单表操作,而且和该表有关的全部操作必须全部在一…...
郑州做网站的多不多/百度知道登录
目录 一.什么是火墙 二. iptables和filrewalld两种工具的切换 三.firewalld 1.火墙的域 2.设定原理及数据存储 3.firewalld 的管理命令 4.firewalld高级规则 三.iptables 1.五条链 2.三张表 3.iptables 4.数据包状态 5.dnat,snat 一.什么是火墙 Natfilter 是集成到lin…...
企业网站写好如何发布/专业网站推广软件
论文题目:Extracting Entities and Events as a Single Task Using a Transition-Based Neural Model 论文来源:IJCAI 2019 武汉大学, 东华大学, 西湖大学 论文链接:https://www.ijcai.org/Proceedings/2019/753 代码链接:http…...
十大黄金软件app/泰州网站排名seo
Open3D 自定义可视化背景颜色与点的大小 Open3D是一个现代化的3D计算机视觉库,用于处理三维数据。它支持从各种格式的文件中读取、显示和处理点云、网格、体积数据和三角测量数据等多种类型的3D数据。在进行3D数据的可视化时,可视化背景颜色的设置非常重要,并且设置点的大小…...