当前位置: 首页 > news >正文

机器学习第10天:集成学习

文章目录

机器学习专栏

介绍

投票分类器

介绍

代码

核心代码

示例代码

软投票与硬投票

bagging与pasting

介绍

核心代码

随机森林

介绍

代码

结语


机器学习专栏

机器学习_Nowl的博客-CSDN博客

介绍

集成学习的思想是很直观的:多个人判断的结合往往比一个人的想法好

我们将在下面介绍几种常见的集成学习思想与方法 

投票分类器

介绍

假如我们有一个分类任务,我们训练了多个模型:逻辑回归模型,SVM分类器,决策树分类器,然后我们看他们预测的结果,如果两个分类器预测为1,一个分类器预测为0,那么最后模型判断为1,采用的是一种少数服从多数的思想


代码

核心代码

引入投票分类器库,并创建模型

from sklearn.ensemble import VotingClassifierlog_model = LogisticRegression()
tree_model = DecisionTreeClassifier()
svc_model = SVC()voting_model = VotingClassifier(estimators=[('lr', log_model), ('df', tree_model), ('sf', svc_model)],voting='hard'
)voting_model.fit(x, y)

例子中创建了三个基础分类器,最后再组合成一个投票分类器 

示例代码

我们在鸢尾花数据集上测试不同模型的分类效果

from sklearn.ensemble import VotingClassifier
from sklearn.svm import SVC
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_splitiris = load_iris()
X = iris.data  # petal length and width
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)log_model = LogisticRegression()
tree_model = DecisionTreeClassifier()
svc_model = SVC()voting_model = VotingClassifier(estimators=[('lr', log_model), ('df', tree_model), ('sf', svc_model)],voting='hard'
)for model in (log_model, tree_model, svc_model, voting_model):model.fit(X_train, y_train)y_pred = model.predict(X_test)print(model, accuracy_score(y_test, y_pred))

运行结果

该示例代码可以看到各个模型在相同数据集上的性能测试,该示例的数据集较小,所以性能相差不大,当数据集增大时 ,集成学习的性能往往比单个模型更优


软投票与硬投票

当基本模型可以计算每个类的概率时,集成学习将概率进行平均计算得出结果,这种方法被称作软投票,当基本模型只能输出类别时,只能实行硬投票(以预测次数多的为最终结果)

bagging与pasting

介绍

除了投票分类这种集成方法,我们还有其他方法,例如:使用相同的基础分类器,但是每个分类器训练的样本将从数据集中随机抽取,最后再结合性能,若抽取样本放回,则叫做bagging方法,若不放回,则叫做pasting方法


核心代码

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifiermodel = BaggingClassifier(DecisionTreeClassifier(), n_estimators=500,max_samples=100, bootstrap=True, n_jobs=-1
)model.fit(X_train, y_train)

若基本分类器可以计算每个类的概率,BaggingClassifier自动执行软分类方法

bootstrap = True设置模型采用Bagging放回采样法

n_jobs参数代表用多少CPU内核进行训练何预测(-1代表使用所有可用内核)

设置为False时采用Pasting不放回采样法 


随机森林

介绍

随机森林就是一种基本模型是决策树的Bagging方法,你可以使用BaggingClassifier集成DecisionTreeClassifier,也可以使用现成的库


代码

from sklearn.ensemble import RandomForestClassifiermodel = RandomForestClassifier(n_estimators=100, max_leaf_nodes=16, n_jobs=-1)
model.fit(X_train, y_train)

max_leaf_nodes限制了子分类器的最大叶子节点数量


结语

集成学习就是利用了一个很基本的思想:多数人的想法往往比一个人的想法更优,同时概率论中也有这样一个场景:实验次数越多,概率越接近本质

相关文章:

  • Java变量和数据类型
  • 【算法】区间调度算法
  • mysql5.6 修改密码
  • python运行hhsearch二进制命令的包装器类
  • Kafka、RocketMQ、RabbitMQ的比较总结Kafka、RocketMQ、RabbitMQ的比较总结
  • 【开源】基于JAVA的社区买菜系统
  • Golang基础-面向过程篇
  • [算法学习笔记](超全)概率与期望
  • BUG:编写springboot单元测试,自动注入实体类报空指针异常
  • 深入分析TaskView源码之触摸相关
  • Docker发布简单springboot项目
  • 实战项目:VB龟兔赛跑游戏+猜数字游戏
  • 【PyQt小知识 - 3】: QComboBox下拉框内容的设置和更新、默认值的设置、值和下标的获取
  • 在 Windows 中关闭 Nginx 所有进程
  • 基于Towers of Binary Fields的succinct arguments
  • Javascript基础之Array数组API
  • Lsb图片隐写
  • MYSQL 的 IF 函数
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 第十八天-企业应用架构模式-基本模式
  • 简析gRPC client 连接管理
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端技术周刊 2019-01-14:客户端存储
  • 前端学习笔记之观察者模式
  • 人脸识别最新开发经验demo
  • 如何在招聘中考核.NET架构师
  • #include<初见C语言之指针(5)>
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (¥1011)-(一千零一拾一元整)输出
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Java)【深基9.例1】选举学生会
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • .NET Core 2.1路线图
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Standard 的管理策略
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NetCore 如何动态路由
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [JavaEE系列] wait(等待) 和 notify(唤醒)
  • [js] 正则表达式
  • [nginx] 网上最全面nginx教程(近100篇文章整理)
  • [nlp] tokenizer
  • [NOIP2005]过河