我使用插入包和神经网络模型,以一个包含几个预测因子的数据集为基础,通过主成分分析找到神经网络的最佳调谐参数。此数据集还包含两个输出数值变量,因此我希望根据预测器对这两个变量进行建模。因此,我正在执行回归。
当使用‘神经网络’包时,我得到了想要的输出:一个输出层由两个神经元组成的网络,对应于我想要建模的两个输出变量,如下面的代码所示。
library(neuralnet)
neuralnet.network <- neuralnet(x + y ~ PC1 + PC2, train.pca.groundTruth, hidden=2, rep=5, algorithm = "rprop+", linear.output=T)
> head(compute(neuralnet.network, test.pca[,c(1,2)])$net.result)
[,1] [,2]
187 0.5890781796 0.3481661367
72 0.7182396668 0.4330461404
107 0.5854193907 0.3446555435
228 0.6114171607 0.3648684296
262 0.6727465772 0.4035759540
135 0.5559830113 0.3288717153但是,当使用来自插入符号包的train函数的相同模型时,输出仅由一个名为“. output”的变量组成,这实际上是两个变量的和。这是代码:
paramGrid <- expand.grid(.layer1 = c(2), .layer2 = 0, .layer3 = 0)
ctrl <- trainControl(method = "repeatedcv", repeats = 5)
set.seed(23)
caret.neuralnet <- train(x + y ~ PC1 + PC2, data = train.pca.groundTruth, method = "neuralnet", metric = "RMSE", tuneGrid = paramGrid, trControl = ctrl, algorithm = "rprop+", linear.output = T)
> head(predict(caret.neuralnet, test.pca[,c(1,2)]))
[1] 0.9221328635 1.1953289038 1.0333353272 0.9561434406 1.0409961115 0.8834807926是否有可能阻止插入训练函数将公式中的符号“+”解释为求和,但将其解释为若干输出变量的规范,就像神经网络那样?我试过了x-y的形式,尽管它不起作用。
我想知道在不对每个输出变量进行单独的模型训练的情况下,是否有任何形式可以这样做。
非常感谢!
发布于 2015-01-13 00:34:42
train不支持多个结果,因此预期的符号公式x + y解析为文字公式,添加了x和y。
最大值
https://stackoverflow.com/questions/27901187
复制相似问题