如何从插入包拆分数据创建createDataPartition函数?

Sas*_*yal 6 r subset data-partitioning r-caret

从文档:

对于自举样本,使用简单的随机采样.

对于其他数据分割,当y是试图平衡分裂内的类分布的因素时,随机采样在y的水平内完成.

对于数字y,样本基于百分位数分组为组,并且在这些子组内进行采样.

对于createDataPartition,百分位数通过groups参数设置.

我不明白为什么需要这种"平衡"的东西.我认为我从表面上理解它,但任何额外的见解都会非常有用.

lok*_*oki 13

这意味着,如果您有一个ds10000行的数据集

set.seed(42)
ds <- data.frame(values = runif(10000))
Run Code Online (Sandbox Code Playgroud)

2个"等级",分配不均(9000对1000)

ds$class <- c(rep(1, 9000), rep(2, 1000))
ds$class <- as.factor(ds$class)
table(ds$class)
#    1    2 
# 9000 1000 
Run Code Online (Sandbox Code Playgroud)

你可以创建一个样本,试图保持因子类的比例/"平衡".

dpart <- createDataPartition(ds$class, p = 0.1, list = F)
dsDP <- ds[dpart, ]
table(dsDP$class)
#   1   2 
# 900 100 
Run Code Online (Sandbox Code Playgroud)