【发布时间】:2020-09-24 07:33:57
【问题描述】:
我有一个数据集,比如 Data,它由分类变量和数值变量组成。清理它们后,我只使用了缩放数值变量(猜测分类不能缩放)
Data <- Data %>% dplyr::mutate_if(is.numeric, ~scale(.) %>% as.vector)
然后我将其随机分成 70-30% 使用
set.seed(123)
sample_size = floor(0.70*nrow(Data))
xyz <- sample(seq_len(nrow(Data)),size = sample_size)
Train_Set <- Join[xyz,]
Test_Set <- Join[-xyz,]
我已经使用 Ranger 构建了一个分类模型,比如 model_rang,使用 Train_Set 并使用 Test_Set 对其进行了测试。
如果一个新数据,比如 new_data,到达生产环境,在清理它之后,是否足以以上述方式对其进行扩展?我是说
new_data <- new_data %>% dplyr::mutate_if(is.numeric, ~scale(.) %>% as.vector)
然后用它来预测结果使用(有两个类 0 和 1 和 1 是感兴趣的)
probabilities <- as.data.frame(predict(model_rang, data = new_data, num.trees = 5000, type='response', verbose = TRUE)$predictions)
caret::confusionMatrix(table(max.col(probabilities) - 1,new_data$Class), positive='1')
规模是否像数据中那样正确完成,或者我是否遗漏了生产数据中的任何关键内容?
或者,我是否必须单独缩放 Train_Set 并取每个变量的标准差和相关的平均值来缩放 Test_Set,并且当生产过程中的新数据到达时,将来自 Train_Set 的旧标准差和平均值应用于每个新数据集?
【问题讨论】:
-
我觉得这个链接很有趣:stats.stackexchange.com/questions/89172/…
标签: r dataframe classification scale scaling