gpt4 book ai didi

r - Caret - 基于多个变量创建分层数据集

转载 作者:行者123 更新时间:2023-12-05 00:39:53 26 4
gpt4 key购买 nike

在 R 包 caret 中,我们能否使用函数 createDataPartition()(或用于交叉验证的 createFolds())基于多个变量创建分层训练和测试集?

这是一个变量的示例:

#2/3rds for training
library(caret)
inTrain = createDataPartition(df$yourFactor, p = 2/3, list = FALSE)
dfTrain=df[inTrain,]
dfTest=df[-inTrain,]

在上面的代码中,训练集和测试集按“df$yourFactor”分层。但是是否可以使用多个变量(例如“df$yourFactor”和“df$yourFactor2”)进行分层?以下代码似乎可以工作,但我不知道它是否正确:

inTrain = createDataPartition(df$yourFactor, df$yourFactor2, p = 2/3, list = FALSE)

最佳答案

如果你使用 tidyverse,这相当简单。

例如:

df <- df %>%
mutate(n = row_number()) %>% #create row number if you dont have one
select(n, everything()) # put 'n' at the front of the dataset
train <- df %>%
group_by(var1, var2) %>% #any number of variables you wish to partition by proportionally
sample_frac(.7) # '.7' is the proportion of the original df you wish to sample
test <- anti_join(df, train) # creates test dataframe with those observations not in 'train.'

关于r - Caret - 基于多个变量创建分层数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54566428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com