【发布时间】:2018-01-29 21:17:25
【问题描述】:
我有一个包含两个结果变量的数据集,case1 和 case2。 Case1 有 4 个级别,而 case2 有 50 个(case2 中的级别可能会在以后增加)。我想为训练创建数据分区并测试在这两种情况下保持比率。 case1 和 case2 的真实数据是不平衡的。例如,
library(caret)
set.seed(123)
matris=matrix(rnorm(10),1000,20)
case1 <- as.factor(ceiling(runif(1000, 0, 4)))
case2 <- as.factor(ceiling(runif(1000, 0, 50)))
df <- as.data.frame(matris)
df$case1 <- case1
df$case2 <- case2
split1 <- createDataPartition(df$case1, p=0.2)[[1]]
train1 <- df[-split1,]
test1 <- df[split1,]
length(split1)
201
split2 <- createDataPartition(df$case2, p=0.2)[[1]]
train2 <- df[-split2,]
test2 <- df[split2,]
length(split2)
220
如果我进行单独拆分,我会得到不同长度的数据框。如果我根据 case2 进行一次拆分(一个有更多类),我会丢失 case1 的类比率。
我将分别预测这两种情况,但最后我的准确性将通过两种情况的完全匹配来给出(例如,ix = which(pred1 == case1 & pred2 == case2),所以我需要数组大小相同。
有没有聪明的方法来做到这一点?
谢谢!
【问题讨论】: