集成学习-Voting

集成学习-Voting一、什么是集成学习集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。一般情况下,集成学习中的多个学习器都是同质的”弱学习器”。上面的描述来自百度百科,看定义的话知道是基于‘弱学习器’的,很多讲集成学习的教程都会先讲决策树,然后讲到随机森林和GBDT,也就是bagging和boosting,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

集成学习-Voting

 

一、什么是集成学习

       集成学习是使用一系列学习器进行学习,并使用某种规则把各个学习结果进行整合从而获得比单个学习器更好的学习效果的一种机器学习方法。一般情况下,集成学习中的多个学习器都是同质的”弱学习器”。

      上面的描述来自百度百科,看定义的话知道是基于‘弱学习器’的,很多讲集成学习的教程都会先讲决策树,然后讲到随机森林和GBDT,也就是bagging和boosting,其实还有更简单的集成学习思路,也就是voting,也就是投票原则,可能太简单了,很少见人讨论过,觉得对于实际的业务来讲作用应该蛮好的,所以总结下。

 二、具体思想

       少数服从多数,假定有5个分类器,有3个分类为正样本,2个分类为负样本,按照HardVoting的思想就是投票,你的正样本多就是你了,与之思想不太一样的就是Soft Voting,也就是每个人投票的权重不一样,在基于概率的分类模型中,如果一个模型有90%的概率判定为正样本,另一个模型有40%的概率判定为正样本,这2个模型的加权投票概率就是65%(也就是求个平均)。

      

三、Hard Voting的简单例子

1、首先,写入数据集,然后看下数据的大致分布

import numpy as np
import matplotlib.pyplot as plt

from sklearn import datasets

X, y = datasets.make_moons(n_samples=500, noise=0.3, random_state=42)

plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.show()

from sklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666)

Jetbrains全家桶1年46,售后保障稳定

2、,然后,先用逻辑回归尝试下

from sklearn.linear_model import LogisticRegression

#这里使用默认的参数
log_clf = LogisticRegression()
log_clf.fit(X_train,y_train)
log_clf.score(X_test,y_test)

结果:0.824

3、再用SVM跑下

from sklearn.svm import SVC

svm_clf = SVC()
svm_clf.fit(X_train,y_train)
svm_clf.score(X_test,y_test)

结果是:0.88

4、再用决策树跑下

from sklearn.tree import DecisionTreeClassifier

dt_clf = DecisionTreeClassifier()
dt_clf.fit(X_train,y_train)
dt_clf.score(X_test,y_test)

结果:0.832

5、我们把3个结果汇总起来,取2个相同的

y_predict1 = log_clf.predict(X_test)
y_predict2 = svm_clf.predict(X_test)
y_predict3 = dt_clf.predict(X_test)

y_predict = np.array((y_predict1+y_predict2+y_predict3)>=2,dtype='int')

from sklearn.metrics import accuracy_score

accuracy_score(y_test, y_predict)

结果是:0.88

6、这里的结果有一点提升(虽然并不是很明显)

然后我们用sklearn封装好的模块来跑一下,这里的voting=’hard’就对应了集成的方式

from sklearn.ensemble import VotingClassifier

voting_clf = VotingClassifier(estimators=[
    ('log_clf',LogisticRegression()),
    ('svm_clf',SVC()),
    ('dt_clf',DecisionTreeClassifier())
],voting='hard')

voting_clf.fit(X_train, y_train)

voting_clf.score(X_test,y_test)

这里我的结果是:0.88,和自己计算的结果是一样的,这个结果不是太好

四、Soft Voting简单例子(前提是每一个模型都能估计概率)

前提:分类器都可以计算分类概率

对于SVM也可以计算概率,(这点我是不太懂),具体使用是调整下面这个参数为True

probablility:boolean,optional(default=False)

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

下面我们使用Soft Voting

from sklearn.ensemble import VotingClassifier

#决策树这里加个随机种子是为了每次跑的结果保持一致
voting_clf2 = VotingClassifier(estimators=[
    ('log_clf',LogisticRegression()),
    ('svm_clf',SVC(probability=True)),
    ('dt_clf',DecisionTreeClassifier(random_state=666))
],voting='soft')

voting_clf2.fit(X_train, y_train)
voting_clf2.score(X_test,y_test)

结果是:0.856

这就是voting的大致过程。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/230609.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • django1.8_django-vue-admin

    django1.8_django-vue-admin前言由于之前我们一直使用的django-rest-framework-jwt这个库,但是作者在17年的时候就已经不再维护了(有部分bug没有解决),所以我们也就不用了,目前我们使用django-r

  • xgboost入门与实战(原理篇)

    xgboost入门与实战(原理篇)xgboost入门与实战(原理篇)前言:xgboost是大规模并行boostedtree的工具,它是目前最快最好的开源boostedtree工具包,比常见的工具包快10倍以上。在数据科学方面,有大量kaggle选手选用它进行数据挖掘比赛,其中包括两个以上kaggle比赛的夺冠方案。在工业界规模方面,xgboost的分布式版本有广泛的可移植性,支持在YARN,MPI,SungridEn

  • ExecuteNonQuery()返回值问题[通俗易懂]

    ExecuteNonQuery()返回值问题[通俗易懂]1.使用update,insert,delete等对数据库中表行进行操作的时候,返回值为所操作的行数(若该条语句未作用在任何一行,则返回0)2.使用alter添加表空间数据文件,create创建表,drop删除表等操作时返回值为03.数据库连接字符串http://blog.csdn.net/cddchina/article/details/46046

  • PDMan-国产免费通用数据库建模工具(极简,漂亮)

    背景情况说明  本人长期以来一直从事于金融应用软件的研发以及项目实施工作,经常做数据库建模(数据表设计)。有一款称心如意的数据库建模工具,自然能够事半功倍,PowerDesigner的pdm模型为我的工作提供了很大的便利性。但电脑换了Mac系统之后,就只能在虚拟机Windows上使用PD,机器越来越吃不消了。PD是一款商业化优秀的建模工具。其设计初衷就是用作数据库建模,所以他必然是一款非常优秀的数…

  • Linux 操作系统基础知识总结

    Linux 操作系统基础知识总结1、操作系统总体介绍CPU:就像人的大脑,主要负责相关事情的判断以及实际处理的机制。查询指令:cat/proc/cpuinfo内存:大脑中的记忆区块,将皮肤、眼睛等所收集到的信息记录起来的地方,以供CPU进行判断。查询指令:cat/proc/meminfo1)物理内存物理内存,就是我们将内存条插在主板内存槽上的内存条的容量的大小。看计算机配置的时候,主要看的就是这个物理内存2)虚拟内存Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会

    2022年10月30日
  • js动态显示表格的汇总信息和详细信息

    我在做数据结果展示的时候,想要实现一个如下的功能:用户可以选择一个时间段,默认显示这个时间段的汇总数据,当鼠标点击这个时间段的时候,将显示每个时间点的详细数据,再次点击的时候,详细数据收起,只显示汇

    2021年12月24日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号