You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

R语言拆分训练测试集遇对象未找到错误求助

解决R语言拆分数据集时的"object not found"报错

嘿,我来帮你搞定这个问题!你反复遇到的Error: object 'wisc_bc_data_test' not found报错,根源很简单——你在创建训练集和测试集的时候,错误地引用了还未定义的对象

问题出在哪?

看你这段代码:

wisc_bc_data_train <- wisc_bc_data_train[train_ind, ]
wisc_bc_data_test <- wisc_bc_data_test[-train_ind, ]

你试图从wisc_bc_data_trainwisc_bc_data_test里提取行,但这两个对象在你写这行代码之前根本不存在!R自然找不到它们,所以报错。正确的做法应该是从你已有的原始数据集wisc_bc_data中提取数据来创建训练集和测试集。

修正后的完整代码

你前面的拆分比例计算和随机种子设置都是对的,只需要修改最后两行:

# 计算训练集大小(70%的数据)
data_split <- floor(0.7 * nrow(wisc_bc_data))
# 设置随机种子保证结果可复现
set.seed(123)
# 随机抽取训练集的行索引
train_ind <- sample(seq_len(nrow(wisc_bc_data)), size = data_split)

# 从原始数据集提取训练集和测试集(关键修正!)
wisc_bc_data_train <- wisc_bc_data[train_ind, ]
wisc_bc_data_test <- wisc_bc_data[-train_ind, ]

额外小提示

如果你以后经常需要拆分数据集,可以试试caret包的createDataPartition函数,它会更智能地保持分类变量的分布(比如这个乳腺癌数据集的诊断标签):

# 先安装并加载caret包(如果没装过的话)
# install.packages("caret")
library(caret)

set.seed(123)
# 假设诊断列是diagnosis,按这个列分层抽样
train_ind <- createDataPartition(wisc_bc_data$diagnosis, p = 0.7, list = FALSE)
wisc_bc_data_train <- wisc_bc_data[train_ind, ]
wisc_bc_data_test <- wisc_bc_data[-train_ind, ]

内容的提问来源于stack exchange,提问作者John Darroch

火山引擎 最新活动