r语言 - 根据训练集缩放测试集中的连续特征



我正在构建一个GBM分类器来预测某个目标变量。

我的数据包含许多连续变量,我想使用scale函数只缩放其中一个(age)。我应该在训练集中缩放这个变量然后在测试集中根据训练集缩放它,这样我就不会泄露信息了。我的问题是如何在R中应用这个?

我这样做的方式是通过在训练集和测试集中分别缩放年龄特征,这是不完全正确的。下面是我的代码(我使用了插入符号包):

for (i in (1:10)) {
print(i)
set.seed(i)

IND = createDataPartition(y = MYData$Target_feature, p=0.8, list = FALSE)
TRAIN_set = MYData[IND, ]
TEST_set = MYData[-IND,]

TRAIN_set$age = scale(TRAIN_set$age)
TEST_set$age = scale(TEST_set$age)

GBMModel <- train(Target_feature~., data = TRAIN_set,
method = "gbm",
metric="ROC",
trControl = ctrlCV,
tuneGrid = gbmGRID,
verbose = FALSE

)


AUCs_Trn[i] = auc(roc(TRAIN_set$Target_feature,predict(GBMModel,TRAIN_set, type='prob')[,1]))
AUCs_Tst[i] = auc(roc(TEST_set$Target_feature,predict(GBMModel,TEST_set, type='prob')[,1]))

}

注意:我只想缩放age特性。

一种方法是通过训练集的平均值和标准偏差手动缩放测试数据(相当于scale()所做的)。

test$age_scaled = (test$age - mean(train$age) ) / sd(train$age) 

最新更新