首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据火车组在测试集中缩放连续特征

根据火车组在测试集中缩放连续特征
EN

Stack Overflow用户
提问于 2022-11-14 15:10:01
回答 1查看 30关注 0票数 1

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

我的数据包含许多连续变量,我希望使用age函数来扩展其中的一个变量( scale )。我应该在火车集合中缩放这个变量,然后根据火车集的在测试集中进行缩放,这样我就不会得到信息泄漏。我的问题是如何在R中应用这个?

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

代码语言:javascript
复制
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特性。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-14 15:22:30

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

代码语言:javascript
复制
test$age_scaled = (test$age - mean(train$age) ) / sd(train$age) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74433828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档