机器学习笔记-投票法(Voting)理论与实现
投票法(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)理论与实现相关推荐
- (七)集成学习中-投票法Voting
集成学习第一法宝:投票! 参考:DataWhale教程链接 集成学习(上)所有Task: (一)集成学习上--机器学习三大任务 (二)集成学习上--回归模型 (三)集成学习上--偏差与方差 (四)集成 ...
- 【机器学习】集成学习投票法:投票回归器(VotingRegressor) 投票分类器(VotingClassifier)
前言 投票回归器和投票分类器都属于集成学习.在[机器学习]集成学习基础概念介绍中有提到过,集成学习的结合策略包括: 平均法.投票法和学习法.sklearn.ensemble库中的Voting Clas ...
- 机器学习笔记之玻尔兹曼机(三)梯度求解(基于平均场理论的变分推断)
机器学习笔记之玻尔兹曼机--基于平均场推断梯度求解 引言 回顾:玻尔兹曼机模型参数梯度求解困难与MCMC方法的处理方式 变分推断方法处理玻尔兹曼机对数似然梯度 引言 上一节介绍了使用马尔可夫链蒙特卡洛 ...
- 机器学习笔记之正则化(一)拉格朗日乘数法角度
机器学习笔记之正则化--拉格朗日乘数法角度 引言 回顾:基于正则化的最小二乘法 正则化描述 正则化的优化对象 常见的正则化方法 正则化角度处理神经网络的过拟合问题 场景构建 最优模型参数的不确定性 最 ...
- 机器学习笔记之玻尔兹曼机(三)基于平均场理论变分推断的梯度求解(续)
机器学习笔记之玻尔兹曼机--基于平均场推断梯度求解[续] 引言 Λ 3 \Lambda_3 Λ3梯度求解 求解最优参数 ϕ ^ j \hat {\phi}_j ϕ^j 引言 基于玻尔兹曼机(三) ...
- 【LeetCode笔记】169. 多数元素(Java、摩尔投票法、哈希表)
文章目录 题目描述 思路 & 代码 思路一:哈希表 思路二: 摩尔投票法 题目描述 好家伙,这是今天最有意思的题目了 思路 & 代码 思路一:哈希表 先说缺点:空间复杂度O(n) 一次 ...
- 关于集成学习的总结(一) 投票法
最近在写那个完整的机器学习项目博客时候,我本来打算用一篇博客来写的.结果发现要写的越来越多.而且最关键的是,以前以为有些地方理解了,其实并没有理解.大概这就是写博客记笔记的好处吧...可惜我上高中初中 ...
- Python机器学习笔记:sklearn库的学习
自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法.还包括了特征提取,数据 ...
- matlab回归问题,机器学习笔记(一)—— 线性回归问题与Matlab求解
给你多组数据集,例如给你很多房子的面积.房子距离市中心的距离.房子的价格,然后再给你一组面积. 距离,让你预测房价.这类问题称为回归问题. 回归问题(Regression) 是给定多个自变量.一个因变 ...
最新文章
- mysql 表空间监控shell_一种通过zabbix监控mysql表空间的方法
- 京东大数据:南方姑娘更爱驾驭8cm以上高跟鞋
- 小编教您Springboot项目中异常拦截设计与处理
- 在北京,一款App从无到有至少需要100万?
- 体质测试数据统计软件,[体质测试数据excel自动统计表]体质测试数据Excel自动统计模板的研制...
- 壁纸控、视觉控少不了高图网解决图片需求问题
- DNS配置,主从,子域,转发
- $.ajax跳入error之 async
- VS 的编译选项 build下的 platform target -- Any CPU和x86有什么影响?
- 3D数学基础:矩阵的几何解释
- web 打开pdf文件
- 英语测试用什么软件有哪些,学习英语的软件哪个好 什么比较好用
- 谷歌浏览器怎么长截图怎么截_Google浏览器如何截取网页长图 - 里维斯社
- 抖音返利分销模式及代理系统开发
- coreldraw x7 分布_CDR X7新增功能有哪些,CDR X7新功能介绍
- IDEA Maven下载依赖时报错: ERROR - #org.jetbrains.idea.maven - Cannot reconnect.
- 互联网产品之运营管理
- JAVA编程基础实验
- 使用three.js模拟城市灯光秀
- 2023 简单响应个人收款二维码源码 美化版