将数据拆分为训练集和测试集:如何确保所有因素都包含在训练集中?
Split data into training and test set: How to make sure all factors are included in training set?
我有一个名为 b
的数据框。我把它分成训练集和测试集。
smp_size <- floor(0.75 * nrow(b))
set.seed(123)
train_ind <- sample(seq_len(nrow(b)), size = smp_size)
b_train <- b[train_ind, ]
b_test <- b[-train_ind, ]
b
包含一个 variable/column,比方说 x
,我将其用作 factor()
和许多不同的类别。
我使用 b_train
得到函数为 lm()
的线性模型。之后,我将函数 predict()
与 lm()
对象和 b_test
一起使用。遗憾的是,b_train$x
并未包含 b$x
中所有不同类型的字符。因此,无法使用函数 predict()
,因为 b_test$x
包含不在 b_train$x
.
中的类别
如何确保所有类型的类别都包含在b_train$x
中?
这可以使用 caret 包的 createDataPartition() 函数轻松完成。
library(caret)
samp = createDataPartition(as.factor(b$x), p = 0.75, list = F)
train = b[samp,]
test = b[-samp,]
我有一个名为 b
的数据框。我把它分成训练集和测试集。
smp_size <- floor(0.75 * nrow(b))
set.seed(123)
train_ind <- sample(seq_len(nrow(b)), size = smp_size)
b_train <- b[train_ind, ]
b_test <- b[-train_ind, ]
b
包含一个 variable/column,比方说 x
,我将其用作 factor()
和许多不同的类别。
我使用 b_train
得到函数为 lm()
的线性模型。之后,我将函数 predict()
与 lm()
对象和 b_test
一起使用。遗憾的是,b_train$x
并未包含 b$x
中所有不同类型的字符。因此,无法使用函数 predict()
,因为 b_test$x
包含不在 b_train$x
.
如何确保所有类型的类别都包含在b_train$x
中?
这可以使用 caret 包的 createDataPartition() 函数轻松完成。
library(caret)
samp = createDataPartition(as.factor(b$x), p = 0.75, list = F)
train = b[samp,]
test = b[-samp,]