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

从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.xdnf.cn/news/1226485.html

相关文章:

  • 【2025/08/01】GitHub 今日热门项目
  • Android使用MediaProjectionManager获取游戏画面和投屏
  • 应用药品注册证识别技术,为医药行业的合规、高效与创新发展提供核心驱动力
  • TwinCAT3示例项目1
  • 探索 VMware 虚拟机:开启虚拟化世界的大门
  • 学习游戏制作记录(各种水晶能力以及多晶体)8.1
  • 新手小白如何快速检测IP 的好坏?
  • Vue2 项目实现 Gzip 压缩全攻略:从配置到部署避坑指南
  • 基于coze studio开源框架二次定制开发教程
  • 【MySQL索引失效场景】索引失效原因及最左前缀原则详解
  • OSPF综合实验报告册
  • Qt 开发 IDE 插件开发指南
  • 【文章素材】3dBackgroundBoxes(3D背景盒子组件)项目及文章思路
  • 从游戏NPC到手术助手:Agent AI重构多模态交互,具身智能打开AGI新大门
  • Spring之【循环引用】
  • SpringCloud(一)微服务基础认识
  • Transformer架构全解析:搭建AI的“神经网络大厦“
  • 从零到英雄:掌握神经网络的完整指南
  • Spotlight on MySQL 300安装教程(附使用指南):实时监控MySQL性能的工具
  • 60 GHz DreamHAT+ 雷达已被正式批准为“Powered by Raspberry Pi”产品
  • 学习笔记:原子操作与锁以及share_ptr的c++实现
  • 下载一个JeecgBoot-master项目 导入idea需要什么操作启动项目
  • 小杰数据结构(four day)——藏器于身,待时而动。
  • 十、SpringBootWeb快速入门-入门案例
  • 李宏毅深度学习教程 第4-5章 CNN卷积神经网络+RNN循环神经网络
  • 大模型开发框架LangChain之构建知识库
  • 暑期算法训练.12
  • 人员定位卡人脸智能充电发卡机
  • 【PHP】接入百度AI开放平台人脸识别API,实现人脸对比
  • 【无标题】严谨推导第一代宇宙的创生机制,避免无限回溯问题。