一、Hard Voting 与 Soft Voting 的对比

 1)使用方式

  • voting = 'hard':表示最终决策方式为 Hard Voting Classifier;
  • voting = 'soft':表示最终决策方式为 Soft Voting Classifier;

 2)思想

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

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

  • 将所有模型预测样本为某一类别的概率的平均值作为标准;
  • Hard Voting 投票方式的弊端
  1. 如上图,最终的分类结果不是由概率值更大的模型 1 和模型 4 决定,而是由概率值相对较低的模型 2/3/5 来决定的;

二、各分类算法的概率计算

  • Soft Voting 的决策方式,要求集合的每一个模型都能估计概率;

 1)逻辑回归算法

  • P = σ( y_predict )

 2)kNN 算法

  • k 个样本点中,数量最多的样本所对应的类别作为最终的预测结果;
  • kNN 算法也可以考虑权值,根据选中的 k 个点距离待预测点的距离不同,k 个点的权值也不同;
  • P = n / k
  • n:k 个样本中,最终确定的类型的个数;如下图,最终判断为 红色类型,概率:p = n/k = 2 / 3;

 3)决策树算法

  • 通常在“叶子”节点处的信息熵或者基尼系数不为 0,数据集中包含多种类别的数据,以数量最多的样本对应的类别作为最终的预测结果;(和 kNN 算法类似)
  • P = n / N 
  1. n:“叶子”中数量最多的样本的类型对应的样本数量;
  2. N:“叶子”中样本总量;

 4)SVM 算法

  • 在 scikit-learn 中的 SVC() 中的一个参数:probability
  1. probability = True:SVC() 返回样本为各个类别的概率;(默认为 False)

    from sklearn.svm import SVC
    svc = SVC(probability=True)
    
  2. 计算样本为各个类别的概率需要花费较多时间;

三、scikit-learn 中使用集成分类器:VotingClassifier

 1)模拟数据集

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_splitX, y = datasets.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

 2)voting = 'hard':使用 Hard Voting 做决策

from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import VotingClassifier# 实例化
voting_clf = VotingClassifier(estimators=[('log_clf', LogisticRegression()),('svm_clf', SVC()),('dt_clf', DecisionTreeClassifier(random_state=666))
], voting='hard')voting_clf.fit(X_train, y_train)
voting_clf.score(X_test, y_test)
# 准确率:0.896

 3)voting = 'soft':使用 Soft Voting 做决策​​​​​​​

voting_clf = VotingClassifier(estimators=[('log_clf', LogisticRegression()),('svm_clf', SVC(probability=True)),('dt_clf', DecisionTreeClassifier(random_state=666))
], voting='soft')voting_clf.fit(X_train, y_train)
voting_clf.score(X_test, y_test)
# 准确率:0.912
  • 使用 Soft Voting 时,SVC() 算法的参数:probability=True

Hard Voting 与 Soft Voting 的对比相关推荐

  1. 集成学习 hard/soft Voting,Bagging/Pasting,oob 随机森林

    文章目录 一.什么是集成学习? 1.hard Voting 2.soft Voting 二.Bagging 和Pasting 1.引入Bagging和Pasting 2.代码举例 三.oob和关于Ba ...

  2. kaggle 泰坦尼克项目实战(详细代码分享)——集成学习Soft voting

    顺利注册完kaggle之后,终于可以开始上手撸项目啦! 先从大名鼎鼎的泰坦尼克号开始吧! 尽管网上有很多大神进行了"入门级别"的代码分享讲解,但我看了一轮仍然觉得对新手不够友好. ...

  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. 通俗易懂的机器学习——集成学习

    集成学习 普通决策树与随机森林的对比 生成circles数据集 画图函数 使用决策树进行预测 构建决策树并训练 画图 交叉验证 使用Voting Classifier 投票 构建投票分类器 画图 So ...

  6. Ensemble Methods——python

    Ensemble Methods Agenda 文章目录 Ensemble Methods Agenda Introduction to Ensemble Method集成方法简介 RandomFor ...

  7. 第13章 集成学习和随机森林

    1.什么是集成学习? kNN,逻辑回归,SVM,决策树,神经网络,贝叶斯->>用多数算法最终给出的结果当做最终的决策依据,投票:少数服从多数 Voting Classifier(sciki ...

  8. 机器学习系列笔记十三: 集成学习/模型聚合

    机器学习系列笔记十三: 集成学习/模型聚合 文章目录 机器学习系列笔记十三: 集成学习/模型聚合 什么是集成学习 Voting Hard Voting 模拟实现Hard Voting 集成学习 使用V ...

  9. 投票理论简介以及机器学习中的投票规则

    投票理论简介以及机器学习中的投票规则 政治市场 从个人需求到集体决策 自由的政治市场 投票理论简介 Arrow不可能定理 Majority Rule May定理 Condorcet赢家 中位投票者定理 ...

最新文章

  1. Linux下的Shell编程(2)环境变量和局部变量
  2. strom.yaml配置
  3. 使用jasmine.createSpyObj具有依赖关系的Angular服务进行单元测试
  4. Linux怎么更新镜像,利用 Zsync 更新已有的 Ubuntu ISO 镜像
  5. Educational Codeforces Round 106 (Rated for Div. 2) D. The Number of Pairs 数论gcd
  6. 前端学习(1257):基于promise处理ajax请求
  7. poj1062昂贵的聘礼(Dijkstra**)
  8. 转载:制造业信息化:计划模拟APS软件驱动敏捷制造
  9. SpringBoot+JWT+SpringSecurity对api进行授权保护
  10. ubuntu16.04+VScode+C/C++编译器常用插件
  11. 部门换届推文文字_宿委会换届表彰大会!!!
  12. Linux容器的安装链接
  13. 关联分析:Apriori算法
  14. 无线信道:地波天波视距传输的特点和区别。
  15. 解决“fatal: 'origin' does not appear to be a git repository...”
  16. Python爬虫-IP隐藏技术与代理爬取
  17. Qt软键盘使用和修改软键盘参数 支持中文
  18. 沈阳贫民窟男孩的5条择偶观
  19. 7-18 二分法求多项式单根 (C语言)
  20. 利用决策树算法在鲍鱼数据集上对年龄进行预测

热门文章

  1. 基于 Thingsboard 平台自定义 RPC 控制类小部件示例
  2. Tailwind教程1 - 开始使用
  3. 怎么把Word转换PPT?这几个方法超好用
  4. Cobar Client的使用
  5. abaqus中英文切换
  6. Linux----SUID提权复现
  7. java的入口函数_java入口函数有几种
  8. Problem1: Magic Square
  9. 【Git 系列】一个超好用的命令你会用吗?
  10. 敏感电阻-----热敏电阻NTC的一些知识