Tom*_*evi 11 r machine-learning prediction neural-network r-caret
mlp包中的方法caret调用mlp函数RSNNS.在RSNNS包中,我可以通过设置size参数在神经网络中设置尽可能多的隐藏层,例如
data(iris)
#shuffle the vector
iris <- iris[sample(1:nrow(iris),length(1:nrow(iris))),1:ncol(iris)]
irisValues <- iris[,1:4]
irisTargets <- decodeClassLabels(iris[,5])
#irisTargets <- decodeClassLabels(iris[,5], valTrue=0.9, valFalse=0.1)
iris <- splitForTrainingAndTest(irisValues, irisTargets, ratio=0.15)
iris <- normTrainingAndTestSet(iris)
model <- mlp(iris$inputsTrain, iris$targetsTrain, size=c(5,7), learnFuncParams=c(0.1),
maxit=50, inputsTest=iris$inputsTest, targetsTest=iris$targetsTest)
Run Code Online (Sandbox Code Playgroud)
将建立一个神经网络,分别有5个和7个节点的两个隐藏层.我想使用该caret包,因为它具有进行参数/模型搜索的功能,以及集群的并行实现.在caret,当我查找方法时,它只能用一个参数进行调整size,例如
data(iris)
mlpGrid <- data.frame(.size=3)
model2<-caret::train(Species~. , iris, method='mlp', tuneGrid=mlpGrid)
Run Code Online (Sandbox Code Playgroud)
建立具有3节点单隐藏层的神经网络.
我已经尝试过添加其他列mlpGrid等等,但caret似乎不允许添加第二个(或更多)隐藏层.
您应该使用插入“mlp”的插入符号“ mlpML ”方法。它确实使用了 RSNNS 的 mlp 函数,但您可以分别定义每个隐藏层的神经元数量。例如,以下代码应该可以完成这项工作。你与你的图层的定义定义您的自定义网格,每个层(1,2,和3),以及如何每层许多神经元。
mlp_grid = expand.grid(layer1 = 10,
layer2 = 10,
layer3 = 10)
mlp_fit = caret::train(x = train_x,
y = train_y,
method = "mlpML",
preProc = c('center', 'scale', 'knnImpute', 'pca'),
trControl = trainControl(method = "cv", verboseIter = TRUE, returnData = FALSE),
tuneGrid = mlp_grid)
Run Code Online (Sandbox Code Playgroud)
鉴于verboseIter=TRUE它表明确实应用了这些值
+ Fold01: layer1=10, layer2=10, layer3=10
+ Fold02: layer1=10, layer2=10, layer3=10
+ Fold03: layer1=10, layer2=10, layer3=10
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6050 次 |
| 最近记录: |