投票法(Voting)简介

投票法(Voting)是利用多个模型来训练数据集,最终使用投票的方式来选择结果。

Voting分为两种类型:软投票(Soft Voting)和硬投票(Hard Voting)。

软投票:输出类概率

硬投票:输出类标签

投票法(Voting)实现

硬投票

import numpy as np
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.ensemble import VotingClassifier
from sklearn.model_selection import cross_val_score
#载入数据集
iris=datasets.load_iris()
#只要1,2两列的特征
x_data,y_data=iris.data[:,1:3],iris.target
#定义三个不同的分类器
clf1=KNeighborsClassifier(n_neighbors=1)
clf2=DecisionTreeClassifier()
clf3=LogisticRegression()
vclf=VotingClassifier(estimators=[('knn',clf1),('dt',clf2),('lr',clf3)], voting='hard')
for clf, clf_name in zip([clf1, clf2, clf3, vclf],['KNN', 'DT', 'LR', 'Ensemble']):scores = cross_val_score(clf, x_data, y_data, cv=5, scoring='accuracy')print('Accuracy: {:.2f} (+/- {:.2f}) [{}]'.format(scores.mean(), scores.std(), clf_name))

硬投票结果如下所示:

软投票实现:

import matplotlib.pyplot as plt
plt.style.use('ggplot')
from itertools import product
soft_clf=VotingClassifier(estimators=[('knn',clf1),('dt',clf2),('lr',clf3)], voting='soft',weights=[2,1,1])
#weights控制每个算法的权重,soft:软投票
clf1.fit(x_data,y_data)#训练模型
clf2.fit(x_data,y_data)
clf3.fit(x_data,y_data)
soft_clf.fit(x_data,y_data)x_min, x_max = x_data[:,0].min() -1, x_data[:,0].max() + 1
y_min, y_max = x_data[:,1].min() -1, x_data[:,1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01))  #创建网格fig, axes = plt.subplots(2, 2, sharex='col', sharey='row', figsize=(10, 8)) #共享X轴和Y轴for idx, clf, title in zip(product([0, 1],[0, 1]),[clf1, clf2, clf3, soft_clf],['KNN (k=1)','DT','LR', 'Soft Voting']):Z = clf.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape)axes[idx[0], idx[1]].contourf(xx, yy, Z, alpha=0.4)axes[idx[0], idx[1]].scatter(x_data[:, 0],x_data[:, 1], c=y_data, s=20, edgecolor='k')axes[idx[0], idx[1]].set_title(title)
plt.show()

软投票结果如下图所示:


参考文献:https://www.seaxiang.com/blog/c228c01936704287b0eb0949df4e97ea

机器学习笔记-投票法(Voting)理论与实现相关推荐

  1. (七)集成学习中-投票法Voting

    集成学习第一法宝:投票! 参考:DataWhale教程链接 集成学习(上)所有Task: (一)集成学习上--机器学习三大任务 (二)集成学习上--回归模型 (三)集成学习上--偏差与方差 (四)集成 ...

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

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

  3. 机器学习笔记之玻尔兹曼机(三)梯度求解(基于平均场理论的变分推断)

    机器学习笔记之玻尔兹曼机--基于平均场推断梯度求解 引言 回顾:玻尔兹曼机模型参数梯度求解困难与MCMC方法的处理方式 变分推断方法处理玻尔兹曼机对数似然梯度 引言 上一节介绍了使用马尔可夫链蒙特卡洛 ...

  4. 机器学习笔记之正则化(一)拉格朗日乘数法角度

    机器学习笔记之正则化--拉格朗日乘数法角度 引言 回顾:基于正则化的最小二乘法 正则化描述 正则化的优化对象 常见的正则化方法 正则化角度处理神经网络的过拟合问题 场景构建 最优模型参数的不确定性 最 ...

  5. 机器学习笔记之玻尔兹曼机(三)基于平均场理论变分推断的梯度求解(续)

    机器学习笔记之玻尔兹曼机--基于平均场推断梯度求解[续] 引言 Λ 3 \Lambda_3 Λ3​梯度求解 求解最优参数 ϕ ^ j \hat {\phi}_j ϕ^​j​ 引言 基于玻尔兹曼机(三) ...

  6. 【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)

    文章目录 题目描述 思路 & 代码 思路一:哈希表 思路二: 摩尔投票法 题目描述 好家伙,这是今天最有意思的题目了 思路 & 代码 思路一:哈希表 先说缺点:空间复杂度O(n) 一次 ...

  7. 关于集成学习的总结(一) 投票法

    最近在写那个完整的机器学习项目博客时候,我本来打算用一篇博客来写的.结果发现要写的越来越多.而且最关键的是,以前以为有些地方理解了,其实并没有理解.大概这就是写博客记笔记的好处吧...可惜我上高中初中 ...

  8. Python机器学习笔记:sklearn库的学习

    自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法.还包括了特征提取,数据 ...

  9. matlab回归问题,机器学习笔记(一)—— 线性回归问题与Matlab求解

    给你多组数据集,例如给你很多房子的面积.房子距离市中心的距离.房子的价格,然后再给你一组面积. 距离,让你预测房价.这类问题称为回归问题. 回归问题(Regression) 是给定多个自变量.一个因变 ...

最新文章

  1. 根据某一列的进行去重的小工具----duplicated.exe
  2. 【Linux运维】Centos7上借助ansible搭建LVS+Keepalived
  3. Matlab 坐标轴比例一致导致图形变形
  4. spring 扫描所有_从Spring的几个阶段理解其工作过程
  5. vector容器中清空元素(但原来的元素还在)
  6. java中的重量级与轻量级概念
  7. 香港科技大学工学院理学硕士土木基建工程及管理(MSc CIEM)2022Fall宣讲会(线上)
  8. 计算机通信职称评定,2017年通信工程师中级职称评定条件说明
  9. word任意带圈数字
  10. matlab多项式运算开方,matlab多项式运算【技术材料】
  11. 安卓学习专栏——实现记住密码功能(图文+代码)
  12. 聊聊Web 3为什么可以解决数据使用中存在的难题
  13. 灰灰深入浅出讲解支持向量机(SVM)
  14. pygame用blit()实现动画效果
  15. 金蝶、用友等引入凭证导入常见错误分析
  16. pwn基本ROP——ret2libc
  17. 【Python】 Python编程基础练习100题学习记录第七期(61~70)
  18. AOP—面向切面编程
  19. 下载IE6的完整版的‘方法
  20. 家庭版win7怎么把计算机,手把手教你win7家庭普通版升级为旗舰版的方法

热门文章

  1. 第08讲:既生 Synchronized,何生 ReentrantLock
  2. 【号外篇】GaussDB的具体版本讲述及如何下载到正确版本
  3. Android 圆形旋转菜单
  4. Webpack5 - 常用Plugin(插件)
  5. 如何简单使用纯CSS3模仿时钟的指针转动
  6. vsftpd的配置详解
  7. 推荐一个好用的ros plot工具 plot juggler 以及ROS常用的绘图工具
  8. C语言程序设计 现代设计方法_第8章代码、练习题及编程题答案
  9. 震惊!这个链接里面竟然有
  10. 2018-2019-2 20175227张雪莹《Java程序设计》实验四 《Android程序设计》