参考:
https://www.cnblogs.com/gobetter/p/13786704.html
https://blog.csdn.net/oyww710/article/details/106310449

文章目录

  • 一、基础原理
    • 1.1 硬投票
    • 1.2 软投票
  • 二、代码
    • 2.1 硬投票
    • 2.2 软投票

一、基础原理

  在所有集成学习方法中,最直观的是多数投票。因为其目的是输出基础学习者的预测中最受欢迎(或最受欢迎)的预测。多数投票是最简单的集成学习技术,它允许多个基本学习器的预测相结合。与选举的工作方式类似,该算法假定每个基础学习器都是投票者,每个类别都是竞争者。为了选出竞争者为获胜者,该算法会考虑投票。将多种预测与投票结合起来的主要方法有两种:一种是硬投票,另一种是软投票。我们在这里介绍两种方法。

  这种投票分类器往往比单个的最佳分类器获得更高的准确率。事实上,即使每个分类器都是一个弱的学习者(意味着它只比随机猜测稍微好一点),如果有足够多的弱学习者并且他们足够多样化,那么最终集成得到的投票分类器仍然可以是一个强学习者(达到高精度)。

Hard Voting Classifier(硬投票):根据少数服从多数来定最终结果;
Soft Voting Classifier(软投票):将所有模型预测样本为某一类别的概率的平均值作为标准,概率最高的对应的类型为最终的预测结果。

1.1 硬投票

   硬投票通过假设投票最多的类别是获胜者,结合了许多预测。在具有两个类别和三个基础学习器的简单情况下,如果目标类别至少具有两票,则它将成为集成法的最后输出。

   模型 1:A - 99%、B - 1%,表示模型 1 认为该样本是 A 类型的概率为 99%,为 B 类型的概率为 1%;

1.2 软投票

   软投票考虑了预测类别的可能性。为了结合预测结果,软投票计算每个类别的平均概率,并假设获胜者是具有最高平均概率的类别。

二、代码

2.1 硬投票

from sklearn.ensemble import RandomForestClassifier#随机森林分类器(该分类器本身就是集合而来)
from sklearn.ensemble import VotingClassifier      #投票分类器
from sklearn.linear_model import LogisticRegression#逻辑回归分类器
from sklearn.svm import SVC                        #支持向量机分类器
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_splitX,y = make_moons(n_samples=500, noise=0.3,random_state=42)
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=42)
log_clf = LogisticRegression()
rnd_clf = RandomForestClassifier()
svm_clf = SVC()
voting_clf = VotingClassifier(estimators=[('lr',log_clf),('rf',rnd_clf),('svc',svm_clf)],#estimators:子分类器voting='hard') #参数voting代表你的投票方式,hard,soft# 输出每个模型法预测准确率
from sklearn.metrics import accuracy_score
for clf in (log_clf,rnd_clf,svm_clf,voting_clf):clf.fit(X_train,y_train)y_pre = clf.predict(X_test)print(clf.__class__,accuracy_score(y_pre,y_test))

2.2 软投票

   如果所有的分类器都能够估计类概率(即sklearn中它们都有一个predict_proba()方法),那么可以求出类别的概率平均值,投票分类器将具有最高概率的类作为自己的预测。这称为软投票。

   在代码中需要两处做更改,在支持向量机中,需要将参数probablity设置为True,使支持向量机具备预测类概率的功能。投票分类器中需要把voting设置为soft

svm_clf1 = SVC(probability=True) # probablity设置为True,可输出概率
voting_clf = VotingClassifier(estimators=[('lf',log_clf),('svc',svm_clf1),('rf',rnd_clf)],voting='soft')
for clf in (log_clf, rnd_clf, svm_clf1, voting_clf):clf.fit(X_train, y_train)y_pred = clf.predict(X_test)print(clf.__class__.__name__,accuracy_score(y_pred, y_test))

一般soft比hard表现的更出色!

模型融合(集成方法) -投票法相关推荐

  1. 【机器学习之模型融合】Voting投票法简单实践

    目录 前言

  2. 7 种模型加权集成方法

    # 7 种模型加权集成方法 不同任务 -> 不同加权方法 分类 类别投票 概率值加权 回归 预测值加权 排序 排序次序加权 目标检测 预测结果NMS 语义分割 像素类别投票 加权 集成学习 考虑 ...

  3. sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并自定义子分类器的权重(weights)、计算融合模型的混淆矩阵、可视化混淆矩阵

    sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并自定义子分类器的权重(weights).计算融合模型的混淆矩阵.可视化混淆矩阵 目 ...

  4. sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并计算融合模型的混淆矩阵、可视化混淆矩阵(confusion matrix)

    sklearn使用投票器VotingClassifier算法构建多模型融合的软投票器分类器(soft voting)并计算融合模型的混淆矩阵.可视化混淆矩阵(confusion matrix) 目录

  5. sklearn使用投票器VotingClassifier算法构建多模型融合的硬投票器分类器(hard voting)并计算融合模型的混淆矩阵、可视化混淆矩阵(confusion matrix)

    sklearn使用投票器VotingClassifier算法构建多模型融合的硬投票器分类器(hard voting)并计算融合模型的混淆矩阵.可视化混淆矩阵(confusion matrix) 目录

  6. 模型优化之模型融合|集成学习

    目录 模型融合 Bagging 随机森林RF Boosting Adaboost GBDT Xgboost Stacking Blending 结合策略 平均法 投票法 学习法 在机器学习训练完模型之 ...

  7. 【机器学习】集成学习投票法:投票回归器(VotingRegressor) 投票分类器(VotingClassifier)

    前言 投票回归器和投票分类器都属于集成学习.在[机器学习]集成学习基础概念介绍中有提到过,集成学习的结合策略包括: 平均法.投票法和学习法.sklearn.ensemble库中的Voting Clas ...

  8. 机器学习模型的集成方法总结:Bagging, Boosting, Stacking, Voting, Blending

    机器学习是人工智能的一个分支领域,致力于构建自动学习和自适应的系统,它利用统计模型来可视化.分析和预测数据.一个通用的机器学习模型包括一个数据集(用于训练模型)和一个算法(从数据学习).但是有些模型的 ...

  9. kaggle中zillow比赛中模型融合的方法及其代码

    在机器学习这个领域,尤其是做多媒体(声音.图像.视频)相关的机器学习方法研究,会涉及很多特征.分类模型(分类任务)的选择.以声音识别为例,常见的特征有MFCC.LPCC.spectrogram-lik ...

最新文章

  1. poj-2828 Buy Tickets ***
  2. 请问:如何写出没有BUG的代码?
  3. Mysql group by 问题
  4. 【转】ABP源码分析一:整体项目结构及目录
  5. 关于python django开发过程中的常见的问题及解决办法总结
  6. 报名 | 美团技术沙龙第64期:美团不同业务场景下的系统架构实践
  7. android webdav 播放器,Android WebDAV
  8. 6Linux 终端命令格式
  9. 读取自定义配置文件属性值
  10. Filter(过滤器)Listene(监听器)笔记
  11. 虾皮shopee根据ID取商品详情 API 返回值说明
  12. Vue项目:IE11中地址栏直接改变路由页面不跳转bug
  13. 社区发现算法——(Spectral Clustering)谱聚类算法
  14. Day.js 一个轻量级的 JavaScript 时间日期处理库
  15. Liunx实现超级签名详细攻略(一)超级签名简介
  16. springboot+清远旅游推荐网站 毕业设计-附源码211551
  17. IDEA引用Class文件失败问题解决
  18. Java培训机构哪家好,不靠谱的有哪些
  19. Tapdata 创始人唐建法:以秒级响应速度,为企业提供实时数据服务 | 阿里云云原生加速器特别报道
  20. 64位WIN7下虚拟机安装winxp

热门文章

  1. 用python输出十二星座_十二星座对应的星球是什么
  2. 函数中有多个return?C语言中,一个函数可以有几个返回值?
  3. Dynamics 365 CRM证书更换
  4. P1967 货车运输 题解
  5. Arduino ESP8266 清空WIFI配置信息
  6. 盈利模式方案范本_模式方案
  7. Xilinx IP核AXI Memory Mapped to PCI Express使用
  8. 工信部网站备案系统升级完成 新增备案用户激增
  9. 调用baidu aip
  10. android耳机音量与外放音量同步