我正在设计一个神经网络模型,该模型使用有限的更多扩展输入数据(如纹理,体积密度和一个或两个保水性)来预测van genuchten保水参数(theta_r,thera_s,alpha,n)的估计 . 调查R项目中的神经网络我发现了RSNNS包,我创建并训练了多个多层感知器(MLP),并调整了隐藏单元的数量和学习速率 . 以这些模型的训练和测试RMSE为特征的一般性能非常差且随机,实际上,我使用了对数字和n参数的对数变换值来避免偏差并考虑它们的近似对数正态分布,但这没有多大帮助:(我被推荐使用nnet和caret包但我在修改代码时遇到了麻烦,我不知道我做错了什么,有什么建议吗?
#input dataset
basic <- read.table(url("https://dl.dropboxusercontent.com/s/m8qe4k5swz1m3ij/basic.txt?dl=1&token_hash=AAH6Z3d6fWTLoQZYi04Ys72sdufdERE5gm4v7eF0cgMlkQ"), header=T, sep=" ")
#output dataset
fitted <- read.table(url("https://dl.dropboxusercontent.com/s/rjx745ej80osbbu/fitted.txt?dl=1&token_hash=AAHP1zcPQyw4uSe8rw8swVm3Buqe3TP7I1j-4_SOeeUTvw"), header=T, sep=" ")
# Use log-transformed values of alpha and n output parameters
fitted$alpha <- log(fitted$alpha)
fitted$n <- log(fitted$n)
#Fit model with caret package
library(caret)
model <- train(x = basic, y = fitted, method='nnet', linout=TRUE, trace = FALSE,
#Grid of tuning parameters to try:
tuneGrid=expand.grid(.size=c(1,5,10),.decay=c(0,0.001,0.1)))
1 回答
caret
只是它调用的算法的包装器,所以你可以在算法中指定任何参数,即使它不是插入符号's tuning grid. This is accomplishing via the 2878635 in caret' strain()
函数中的一个选项,这基本上是说你可以将任何额外的参数传递给你的方法 . 呼叫 . 我在访问您的保管箱数据时遇到错误)所以这里有一个简单的示例,将特定值传递给maxit
和Hess
: