【问题标题】:How does createDataPartition function from caret package split data?createDataPartition 函数如何从 caret 包拆分数据?
【发布时间】:2016-11-20 21:42:32
【问题描述】:
来自文档:
对于引导样本,使用简单随机抽样。
对于其他数据拆分,随机抽样是在 y 的层级内完成的
当 y 是试图平衡内部类别分布的一个因素时
分裂。
对于数字 y,样本根据百分位数分成几组部分
并在这些子组内进行抽样。
对于 createDataPartition,百分位数通过组设置
论据。
我不明白为什么需要这种“平衡”的东西。我想我只是表面上理解它,但任何额外的见解都会非常有帮助。
【问题讨论】:
标签:
r
subset
r-caret
data-partitioning
【解决方案1】:
这意味着,如果您有一个包含 10000 行的数据集 ds
set.seed(42)
ds <- data.frame(values = runif(10000))
有 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
您可以创建一个示例,尝试保持factor 类的比率/“平衡”。
dpart <- createDataPartition(ds$class, p = 0.1, list = F)
dsDP <- ds[dpart, ]
table(dsDP$class)
# 1 2
# 900 100