【发布时间】:2017-05-07 16:10:56
【问题描述】:
我有一个包含 10,000 个观察值的数据集。我的目标变量有两个类——“Y”和“N”。下面是“Y”和“N”的分布:
> table(data$Target_Var)
Y N
2000 8000
现在我想创建一个平衡的训练数据集,使“Y”的 50% (1000) 处于训练状态。由于训练数据集应该是平衡的,它将有另外 1000 行带有“N”。观察总数 = 2000。
table(Training$Target_Var)
Y N
1000 1000
测试数据集将是不平衡的,但“Y”和“N”的比率与总体中相同,即测试将有 5000 行观察,其中 1000 个“Y”和 4000 行“N”。
table(Test$Target_Var)
Y N
1000 4000
现在,我可以编写一个函数来做到这一点,但是有没有内置的 R 函数可以做到这一点?我探索了插入符号和采样包的采样函数,但找不到任何可以创建 BALANCED 训练数据集的函数。 SMOTE 这样做是通过创建一个新的观察来实现的。
【问题讨论】:
-
你可以试试
sample(levels(Training$Target_Var), 2000, replace=TRUE, prob = c(0.2, 0.8))
标签: r validation random statistics r-caret