r-如何在训练集和测试集之间划分数据集,同时保持两个集中目标变量的比例



我有一个数据集,我打算将其在training settesting set之间进行分割,以便使用R进行machine learning分析。

假设我的数据集(称为MyDataset(基于目标变量(称为Leaver(的比率为是(60%(和否(40%(,我如何确保我的分割在训练集和测试集中都保持这个比率?

您想要做的是对数据集进行分层拆分。您可以使用插入符号包中的createDataPartition来执行此操作。只需确保您的Leaver变量设置为一个因子即可。

请参阅下面的代码示例。

library(caret)
data(GermanCredit)
prop.table(table(GermanCredit$Class))
Bad Good 
0.3  0.7 
index <- createDataPartition(GermanCredit$Class, p = 0.6, list = FALSE)
# train
prop.table(table(GermanCredit$Class[index]))
Bad Good 
0.3  0.7 
#test
prop.table(table(GermanCredit$Class[-index]))
Bad Good 
0.3  0.7 

无包装:

GermanCredit$id<-1:dim(GermanCredit)[1]
bad_id<-sample(GermanCredit$id[GermanCredit$Class=="Bad"],0.6*.3*300)
good_id<-sample(GermanCredit$id[GermanCredit$Class=="Good"],0.6*.7*300)
train_index<-sample(c(bad_id,good_id))
#train set
prop.table(table(GermanCredit$Class[train_index]))
Bad Good 
0.3  0.7 
#test
prop.table(table(GermanCredit$Class[-train_index]))
Bad Good 
0.3  0.7 

相关内容

最新更新