从0开始学习R语言--Day64--决策树回归

对于没有特征或者说需要寻找另类关系的数据集,我们通常会用聚合或KNN近邻的方法来分类,但这样的分类或许在结果上是好的,但是解释性并不好,有时候我们甚至能看到好的结果反直觉;而决策树回归做出的结果,由于其树的结构,我们能看到每一步的决策,也就能推测出树这么做的原因,还能进一步地调整树的深度,使得结果更好。

以下是一个例子:

# 加载必要的包
library(rpart)      # 决策树
library(rpart.plot) # 可视化树# 1. 生成模拟数据集(非线性关系)
set.seed(123)
n <- 200
x <- runif(n, 0, 10)          # 特征x:0到10的随机数
y <- sin(x) + rnorm(n, 0, 0.3) # 目标y:sin(x)加噪声
data <- data.frame(x, y)# 2. 划分训练集和测试集
train_idx <- sample(1:n, 0.7 * n)
train_data <- data[train_idx, ]
test_data <- data[-train_idx, ]# 3. 训练决策树回归模型
tree_model <- rpart(y ~ x, data = train_data, method = "anova",  # 回归任务control = rpart.control(maxdepth = 3)) # 限制树深度# 4. 可视化树结构
rpart.plot(tree_model, main = "决策树回归")# 5. 预测并计算误差
predictions <- predict(tree_model, test_data)
mse <- mean((predictions - test_data$y)^2)
cat("测试集均方误差(MSE):", round(mse, 3), "\n")# 6. 绘制真实值与预测值对比
plot(test_data$x, test_data$y, col = "blue", pch = 19, main = "真实值 vs 预测值", xlab = "x", ylab = "y")
points(test_data$x, predictions, col = "red", pch = 4)
legend("topright", legend = c("真实值", "预测值"), col = c("blue", "red"), pch = c(19, 4))

输出:

可以看到图中的决策树对于每一步的分支,都能看到分离之后两边的方差变化;而分布图则表明决策树对于波动较大的数据分布很难捕捉到趋势,很容易出现欠拟合的现象,但是由于其可以根据结果反推进一步调参,反而能加深其结果的解释性。

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

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

相关文章

B+树高效实现与优化技巧

B树的定义 一颗M阶B树T,满足以下条件 每个结点至多拥有M课子树 根结点至少拥有两颗子树 除了根结点以外,其余每个分支结点至少拥有M/2课子树 所有的叶结点都在同一层上 有k棵子树的分支结点则存在k-1个关键字,关键字按照递增顺序进行排序 关键字数量满足 ceil( M/2 ) - 1 &…

Android 基础入门学习目录(持续更新)

四大组件 Activity&#xff1a; Service&#xff1a; BroadcastReceiver&#xff1a; ContentProvider&#xff1a; UI 与交互开发 常见的UI布局和UI控件 样式与主题 Fragment Intent 数据存储 自定义View和自定义Group 自定义View 自定义ViewGroup 事件分发 Key…

Linux移动大量文件命令

背景 使用 mv 命令报“/bin/mv: 参数列表过长”&#xff0c;也是第一遇到&#xff0c;查了一下&#xff0c;最后用rsync命令解决了。还好每台服务器&#xff0c;都必装rsync了&#xff0c;记录如下。 命令 nohup rsync -av --remove-source-files --progress /public/tmp/video…

SQL中的HAVING用法

HAVING 是 SQL 中专门对 “分组之后的聚合结果” 再做筛选的子句。 它一般跟在 GROUP BY 后面&#xff0c;不能单独使用&#xff0c;作用类似于分组版的 WHERE。✅ 1. 语法位置 SELECT 列1, 聚合函数(列2) AS 别名 FROM 表 GROUP BY 列1 HAVING 聚合条件; -- 这里写对聚合…

【Halcon 】Halcon 实战:如何为 XLD 模板添加极性信息以提升匹配精度?

Halcon 实战&#xff1a;如何为 XLD 模板添加极性信息以提升匹配精度&#xff1f; 在使用 Halcon 进行模板匹配时&#xff0c;我们通常有两种方式创建模板&#xff1a; 基于图像灰度&#xff08;CreateScaledShapeModel&#xff09;基于轮廓 XLD&#xff08;CreateScaledShapeM…

grafana/lock-stack 日志 Pipeline 配置

前言 本文使用的是 grafana/loki-stack chart 抓取的 k8s 日志。其他 chart 配置都差不多。 日志问题 docker 容器运行时 pod 内原始日志 [cpu-4] Hello, 第 9788 次报时&#xff0c;时间&#xff1a;2025-08-01T06:35:420000 {"HOSTNAME":"cpu-4",&qu…

appium2.0+之PointerActions详解

以下内容在 夜神模拟器 上进行。 一、应用场景 一些针对手势的操作&#xff0c;比如滑动、长按、拖动等。可以将这些基本手势组合成一个相对复杂的手势。 二、使用步骤创建触摸输入设备&#xff08;模拟手指操作&#xff09; touch_input PointerInput(interaction.POINTER_TO…

Java HTTPS 请求失败排查与证书导入全过程

文章目录Java HTTPS 请求失败排查与证书导入全过程问题背景问题初步分析排查过程查看目标地址证书导入证书验证证书是否导入成功重启应用进一步验证&#xff1a;是否真的是证书问题&#xff1f;1. 浏览器访问2. 抓包工具验证&#xff08;如 Charles、Wireshark&#xff09;补充…

android APT技术

1&#xff0c;背景 对于注解的使用&#xff0c;想必大家都不陌生&#xff0c;它出现在我们的源码中&#xff0c;以及大部分框架中&#xff0c;比如ButterKnife、Arouter、Retrofit&#xff0c;但它们是有区别的&#xff0c;其中前2个是编译时注解&#xff0c;最后一个是运行时注…

MySQL 和 PostgreSQL综合比对分析汇总

面对大数据项目或其它类型项目中&#xff0c;面对关系型数据库选择一直是很总要的一点&#xff0c;本文针对MySQL 和 PostgreSQL进行综合比对分析汇总&#xff0c;内容仅供参考。MySQL 和 PostgreSQL 是两款主流的开源关系型数据库&#xff08;RDBMS&#xff09;&#xff0c;但…

Linux---make和makefile

一、基本概念1.是什么make是一条命令&#xff0c;makefile是一个文件2.对应在vs中按一下f5就能运行代码&#xff0c;在Linux中make就相当于f5&#xff0c;使用makefile来封装从而实现我&#xff0c; 想要的功能3.使用①创建makefile文件②编辑makefile解释&#xff1a;test.exe…

【DAB收音机】DAB收音机协议及其他资料汇总

目录[ETSI DAB标准协议文档](https://www.etsi.org/standards)Other DAB资料DAB收音机相关的专利DAB收音机相关的期刊及学位论文DAB开源项目代码仓库qt-dab工具welle.io工具dablin工具【eti广播工具】⚙️ 项目对比与选型建议Other 收音机资料Other资料ETSI DAB标准协议文档 官…

RabbitMQ的特点和消息可靠性保障

掌握RabbitMQ的核心知识&#xff0c;需从其特点和消息可靠性保障&#xff08;尤其是消息丢失解决方案&#xff09;两方面入手&#xff0c;以下是详细说明&#xff1a; 一、RabbitMQ的核心特点 RabbitMQ是基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议…

项目升级啦

公司要新做一个医疗行业的业务&#xff0c;经过业务端和产品端的评估该业务与公司已有的产品线关联不大&#xff0c;用户后续也不想在老系统那台老爷车上继续使用&#xff0c;话说老系统到现在差不多10年了&#xff0c;中间经历过的前后端开发者形形色色&#xff0c;维护者换了…

Android中页面生命周期变化

一、Activity切换的生命周期变化&#xff08;A启动B&#xff09;1. 标准流程&#xff08;B完全覆盖A&#xff09;完整生命周期路径&#xff1a;Activity A&#xff1a;onPause()&#xff1a;失去焦点&#xff0c;仍部分可见onStop()&#xff1a;完全不可见&#xff08;当B完全覆…

自动驾驶控制算法——PID算法

自动驾驶控制算法——PID算法 文章目录自动驾驶控制算法——PID算法一、PID 是什么&#xff1f;二、PID 原理2.1 **比例环节&#xff08;P&#xff09;**2.2 **积分环节&#xff08;I&#xff09;**2.3 **微分环节&#xff08;D&#xff09;**2.4 特点总结2.5 案例分析 —— 小…

Spring Boot 异步执行方式全解析:@Async、CompletableFuture 与 TaskExecutor 对比

在 Spring Boot 开发中&#xff0c;异步执行是提升系统性能的重要手段&#xff0c;尤其适用于处理耗时操作&#xff08;如日志记录、邮件发送、数据同步等&#xff09;。本文将深入对比 Spring Boot 中三种主流的异步实现方式 ——Async注解、手动CompletableFuture和直接使用T…

高效微调2:Prompt-Tuning原理与实战

高效微调2:Prompt-Tuning原理与实战 Prompt-Tuning原理介绍 代码 Prompt-Tuning原理介绍 Prompt-Tuning Prompt-Tuning的思想:冻结主模型全部参数,在训练数据前加入一小段Prompt,只训练Prompt的表示层,即一个Embedding模块。其中,Prompt.又存在两种形式,一种是hard promp…

使用BART模型和T5模型实现文本改写

BART模型BART&#xff08;Bidirectional and Auto-Regressive Transformers&#xff09;是由 Facebook AI Research&#xff08;FAIR&#xff09;在 2019 年提出的序列到序列&#xff08;seq2seq&#xff09;预训练模型&#xff0c;论文发表于《BART: Denoising Sequence-to-Se…

电商前端Nginx访问日志收集分析实战

使用FileBeatLogstashES实现分布式日志收集 在大型项目中 &#xff0c;往往服务都是分布在非常多不同的机器上 &#xff0c;每个机器都会打印自己的log日志 但是 &#xff0c;这样分散的日志 &#xff0c;本来就无法进行整体分析。再加上微服务的负载均衡体系 &#xff0c;甚至…