r - 在 Caret 的 train 函数中设置 preProcess 参数如何工作?
问题描述
我正在尝试预测训练神经网络的时间表。但是,我无法真正了解Caret中的preProcess
参数是如何工作的。train
在文档中,它说:
preProcess 类可用于预测变量的许多操作,包括居中和缩放。
当我们preProcess
像下面这样设置时,
tt.cv <- train(product ~ .,
data = tt.train,
method = 'neuralnet',
tuneGrid = tune.grid,
trControl = train.control,
linear.output = TRUE,
algorithm = 'backprop',
preProcess = 'range',
learningrate = 0.01)
- 在这种情况下,这是否意味着该
train
函数对传递的训练数据进行了预处理(规范化)tt.train
? - 训练完成后,当我们尝试 时
predict
,我们是将归一化的输入传递给predict
函数还是因为我们设置了preProcess
参数而在函数中归一化了输入?
# Do we do
predict(tt.cv, tt.test)
# or
predict(tt.cv, tt.normalized.test)
- 从上面的引用看来,当我们使用 时
preProcess
,输出在训练中没有以这种方式标准化,我们如何对输出进行标准化呢?还是我们只是像下面这样预先对训练数据进行归一化,然后将其传递给train
函数?
preProc <- preProcess(tt, method = 'range')
tt.preProcessed <- predict(preProc, tt)
tt.preProcessed.train <- tt.preProcessed[indexes,]
tt.preProcessed.test <- tt.preProcessed[-indexes,]
整个代码:
library(caret)
library(neuralnet)
# Create the dataset
tt = data.frame(multiplier = rep(1:10, times = 10), multiplicand = rep(1:10, each = 10))
tt = cbind(tt, data.frame(product = tt$multiplier * tt$multiplicand))
# Splitting
indexes = createDataPartition(tt$product,
times = 1,
p = 0.7,
list = FALSE)
tt.train = tt[indexes,]
tt.test = tt[-indexes,]
# Pre-process
preProc <- preProcess(tt, method = c('center', 'scale'))
tt.preProcessed <- predict(preProc, tt)
tt.preProcessed.train <- tt.preProcessed[indexes,]
tt.preProcessed.test <- tt.preProcessed[-indexes,]
# Train
train.control <- trainControl(method = "repeatedcv",
number = 10,
repeats = 3,
savePredictions = TRUE)
tune.grid <- expand.grid(layer1 = 8,
layer2 = 0,
layer3 = 0)
tt.cv <- train(product ~ .,
data = tt.train,
method = 'neuralnet',
tuneGrid = tune.grid,
trControl = train.control,
algorithm = 'backprop',
learningrate = 0.01,
stepmax = 100000,
preProcess = c('center', 'scale'),
lifesign = 'minimal',
threshold = 0.01)
解决方案
推荐阅读
- javascript - 如何从angular 8中的javascript函数触发打字稿功能
- sql-server - 在什么存储过程中从 ssrs 接收多值参数?
- tensorflow - TF/Keras:ModelCheckpoint "period" 和 "save_best_only"
- regression - 负二项式回归 SPSS - 数量与距离
- reactjs - 检查反应中唯一孩子的类型
- vba - 对任何类型的字符串使用 Like 运算符
- javascript - 关于 javascript 中的 moduler 模式
- python - 如何在 Colab 中导入 ImgAug 0.4.0?
- php - SQL状态imssp服务器2100参数错误PDO
- azure-devops - jmeter 和 azure devops 负载测试,“至少应该存在并启用一个 HTTP 请求采样器”