亦菲喊你来学机器学习(11) --回归树算法

news2024/11/13 9:48:13

文章目录

  • 回归树
    • 回归树结构
    • 回归树的工作原理
    • 优点与缺点
    • 构建回归树模型
      • 回归树模型参数介绍
      • 训练模型
      • 测试模型
  • 总结

回归树

决策树是一种常用的机器学习算法,广泛应用于分类和回归任务中。当决策树用于回归任务时,我们称之为回归树(Regression Tree)。与分类树的主要区别在于,回归树的输出是连续的数值,而不是离散的类别标签。

回归树结构

在这里插入图片描述

回归树的工作原理

  1. 分裂节点的选择:
    • 在构建回归树时,选择最佳分裂点(即特征值)和分裂规则的主要依据是减少数据集的残差平方和(Residual Sum of Squares, RSS)。具体来说,对于每个候选分裂点,算法会评估将数据集分为两部分后,这两部分数据各自的残差平方和之和是否比不分裂时更小。
    • 通常使用最小二乘法来评估每个候选分裂点的质量。
  2. 生长与剪枝:
    • 回归树通过递归地选择最佳分裂点来生长,直到满足某个停止条件(如节点内样本数少于某个阈值、树的最大深度达到预设值等)。
    • 由于过拟合的风险,回归树在构建完成后通常需要进行剪枝。剪枝可以通过预剪枝(在树生长过程中提前停止)或后剪枝(树完全生长后再通过某种准则修剪)来实现。
  3. 预测:
    • 对于新样本的预测,回归树会将其沿树向下传递,直到达到一个叶节点。该叶节点的平均值(或其他统计量,如中位数)将被用作该样本的预测值。

优点与缺点

优点

  • 易于理解和解释。
  • 对异常值不敏感(因为树是基于分裂规则构建的,而不是直接拟合数据)。
  • 可以处理非线性关系。

缺点

  • 可能过拟合,尤其是当树生长得过于复杂时。
  • 对特征之间的交互建模能力有限。
  • 相比于一些其他回归模型,可能不够精确。

构建回归树模型

与分类树不同,回归树的目标是预测一个连续值,而不是一个类别。

对于构建一个完整的模型,主要从以下两个方面进行:

  1. 训练模型
  2. 测试模型

回归树模型参数介绍

class sklearn.tree.DecisionTreeRegressor(
criterion='mse',splitter='best',max_depth=None,min_samples_split=2,
min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=None,random_state=None,
max_leaf_nodes=None,min_impurity_decrease=0.0,min_impurity_split=None,presort=False)
criterion:节点分裂依据,默认:mse ----> 【按默认选择mse即可】
splitter:表示以最优的方式切分节点,默认best ----> 【按默认选择best即可】
max_depth:树的最大深度。----> 【通过交叉验证来进行选择】
min_samples_split :分裂一个内部节点需要的最小样本数,默认值是2。
min_samples_leaf :叶子节点最少样本数,默认值是1,
max_leaf_nodes:设置最多的叶子节点个数,达到要求就停止分裂【控制过拟合】 ----> 【设置此参数之后max_depth失效】★重要

训练模型

  1. 收集数据

链接:训练数据
提取码:7f7y

  1. 数据预处理

读取数据,将变量与标签分离:

import pandas as pd
#回归
data_1 = pd.read_csv("spambase.csv",encoding='gbk')
x = data_1.iloc[:,:-1] 	#取所有行的第一列到倒数第二列数据,左闭右开
y = data_1.iloc[:,-1]	#取所有行的最后一列数据
  1. 构建模型

可以通过交叉验证遍历最大深度max_depth来提高模型效果:

from sklearn import tree
reg = tree.DecisionTreeRegressor() #尝试修改参数max_depth,测试模型效果
reg = reg.fit(x,y)

测试模型

因为回归树训练的是回归模型,所以在此我们要观测模型效果不是通过混淆矩阵,我们通过R的平方结果查看效果:

y_pr = reg.predict(x)	#预测训练结果
print(y_pr)
score = reg.score(x,y)	#查看预测结果分数
print(score)
-------------------
[1. 1. 1. ... 0. 0. 0.]
0.99863358578953

这样,我们就构建了一个完整的回归树模型啦!!!

总结

本篇介绍了:

  1. 回归树的过程
  2. 回归树模型中的参数:比如通过交叉验证遍历最大深度max_depth,提高模型效果。
  3. 如何构建回归模型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2073303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零基础5分钟上手亚马逊云科技 - 网络安全分析最佳实践

简介: 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我会每天介绍一个基于亚马逊云科技…

【逐行注释】基于CV/CT模型的IMM|MATLAB程序|源代码复制后即可运行,无需下载

订阅专栏后可以直接查看完整的源代码(和注释),无需付费下载或其他的操作。代码复制到MATLAB上面可以得到和我一样的运行结果。 文章目录 程序概述完整代码与逐行注释运行结果解释按模块分析代码程序概述 基于EKF的多模型交互。以CV和CT两个模型进行交互,这里对代码进行逐…

Django后台管理Xadmin使用DjangoUeditor富文本编辑器

Django后台管理Xadmin使用DjangoUeditor富文本编辑器 一、下载 点击github下载 https://github.com/twz915/DjangoUeditor3 1、下载完后解压到跟xadmin同一层级目录: 2、解压后名称可能为DjangoUeditor3-master,需要改为DjangoUeditor 3、进入DjangoUeditor目录,把Djan…

Visiual Studio如何添加C语言的依赖和一些快捷键

Debug 和 Release 项目输出设置 Debug: 调试版本,包含调试信息,并且把进行任何优化,便于程序员调试。Debug模式下生成两个文件,除了 .exe 或者 .dll文件外,还有一个 .pdb 文件,这个文件记录了代码中断点等…

查找数学类文献的专业数据库有哪些 如何获取这些数据库资源

一、MathSciNet(美国数学会《数学评论》) MathSciNet数据库是美国数学学会出版的《数学评论》Mathematical Reviews和Current Mathematical Publications的网络版,包含《数学评论》自1940年出版以来的所有评论文章,包括期刊、图书…

【Node】【4】事件循环和EventEmitter类

事件循环 事件驱动:node中程序的执行是由事件的发生和相应的事件处理器(eventHandler)来驱动的编程范式。 程序监听并响应发生的事件。每个异步事件都生成一个事件观察者,在执行某个事件(主题)结束的时候…

SVN项目的文件泄露分析和漏洞修复

说明:本文仅是用于学习分析自己搭建的SVN漏洞内容和原理,请勿用在非法途径上,违者后果自负,与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其相关法规内容【学法时习之丨网络安全在身边一图了解网络安全法_中央网络安全和信息化委员会办公室】 …

信息学奥赛初赛天天练-75-NOIP2016普及组-完善程序-二分答案、二分查找、贪心算法、贪心策略

文章PDF链接: https://pan.baidu.com/s/1SVcGU_rApvoUWrUoviPCiA?pwdht2j 提取码: ht2j 复制这段内容后打开百度网盘手机App,操作更方便哦 1 完善程序 (单选题 ,每小题3分,共30分) 郊游活动 有 n名同学参加学校组织的郊游活动&#xff0c…

gateway的学习

1.网关的作用 1.负载均衡 2.过滤器的使用 1.通过配置文件实现的过滤器 2.代码逻辑层面实现全局过滤器 //全局过滤器代码逻辑实现 Component //Order(1):注解配置过滤器的执行顺序 public class GlobalFilter implements GatewayFilter, Ordered {/*** 处理当前请求,…

RocketMQ~高性能设计与实现(零拷贝技术)、多种集群模式

与Kafka类似,RocketMQ也使用了零拷贝技术、对于分区,其也有分队列的思维在。 零拷贝技术 传统的IO读写其实就是readwrite的操作,整个过程会分为如下几步 用户调用read()方法,开始读取数据,此时发生一次上下文从用户…

Storage:Keeping memories in the brain(存储:把记忆保存在大脑中)

Once you’ve encoded information, you now need to store it. Unfortunately, forgetting is a major part of how our brains work.Most of us can’t remember what we had for dinner Tuesday, three weeks ago.However, we can all remember our first kiss. 一旦完成了信…

工厂模式和策略模式的区别和各自的实现

工厂模式和策略模式是两种不同的设计模式,它们分别解决的是创建对象和定义算法家族的问题。 工厂模式 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,它提供了一种创建对象的方式,使得创建对象的过程与使…

如何发布年会通知?

在组织年会等重要活动时,确保每位参与者都能及时接收到通知至关重要。本文将指导您如何利用云分组平台发布年会通知,并通过查询功能为参与者提供座位号等信息。一、电脑端上传查询信息 1. 登录云分组官网 访问官网并通过微信扫码登录。2. 进入查询菜单 在…

通过因子分析识别消费者偏好的潜在因素的案例

因子分析是一种统计方法,用于研究变量之间的潜在关系。它是一种降维技术,通过识别较少数量的因子(或称为维度、成分)来解释多个观测变量之间的相关性。这些因子是不可观测的潜在变量,它们被认为是原始变量的潜在原因。…

厦门凯酷全科技有限公司抖音小店的新蓝海开启电商新篇章

在数字经济的浪潮中,电子商务以其独特的魅力和无限潜力,正以前所未有的速度改变着我们的消费方式和商业模式。作为这股浪潮中的佼佼者,厦门凯酷全科技有限公司凭借其敏锐的市场洞察力和前瞻性的战略布局,成功在抖音小店这一新兴平…

乐凡北斗卫星通信终端,多场景应用

北斗卫星通信终端在民生保障、抗险减灾、野外搜救、海洋渔业、交通运输、边境巡防等多个领域都有广阔的应用空间。在不同场景下,乐凡北斗卫星通信终端发挥着各自独特而关键的作用,其强大的定位功能和北斗三代短报文功能保障了信息的高效传递和任务的顺利…

Context-dependence:Why your environment matters(情境依赖:为什么环境很重要)

Consider an everyday situation:You get up from your desk to have a cup of tea.Once you arrive in the kitchen, you forget what you wanted.However, when you get back to your desk, you suddenly remember. 考虑一个日常会遇到的情况:你从桌旁起身想要倒杯茶&#xf…

内存管理篇-09伙伴系统初始化一:memblock管理

1.伙伴系统的初始化概述 硬件初始化:计算机加电后进行硬件检测。加载引导程序,将Linux内核加载到内存中。 内核初始化:内核被加载后开始初始化各个子系统。进行CPU架构相关的初始化。初始化内存控制器和其他设备驱动。 内存管理初始化&…

Chat App 项目之解析(四)

Chat App 项目介绍与解析(一)-CSDN博客文章浏览阅读76次。Chat App 是一个实时聊天应用程序,旨在为用户提供一个简单、直观的聊天平台。该应用程序不仅支持普通用户的注册和登录,还提供了管理员登录功能,以便管理员可以…

Nature Communications | 全球草地土壤碳储量随植物多样性的增加而增加

在许多生态系统中物多样性与土壤有机碳(SOC)储量呈正相关。最可能的原因是植物多样性积极影响植物生产力,从而影响土壤的有机碳输入量。大多数关于植物多样性对植物生产力和有机碳储量影响的证据都是基于控制植物物种丰富度的小规模实验。然而,那些短期的…