首页 文章

caret :: train:指定训练数据参数

提问于
浏览
1

我正在设计一个神经网络模型,该模型使用有限的更多扩展输入数据(如纹理,体积密度和一个或两个保水性)来预测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 回答

  • 2

    caret 只是它调用的算法的包装器,所以你可以在算法中指定任何参数,即使它不是插入符号's tuning grid. This is accomplishing via the 2878635 in caret' s train() 函数中的一个选项,这基本上是说你可以将任何额外的参数传递给你的方法 . 呼叫 . 我在访问您的保管箱数据时遇到错误)所以这里有一个简单的示例,将特定值传递给 maxitHess

    > library(caret)
    > m1 <- train(Species~.,data=iris, method='nnet', linout=TRUE, trace = FALSE,trControl=trainControl("cv"))
    > #this time pass in values for maxint and Hess
    > m2 <- train(Species~.,data=iris, method='nnet', linout=TRUE, trace = FALSE,trControl=trainControl("cv"),maxint=10,Hess=T)
    > m1$finalModel$call
    nnet.formula(formula = modFormula, data = data, size = tuneValue$.size, 
        decay = tuneValue$.decay, linout = TRUE, trace = FALSE)
    > m2$finalModel$call
    nnet.formula(formula = modFormula, data = data, size = tuneValue$.size, 
        decay = tuneValue$.decay, linout = TRUE, trace = FALSE, maxint = 10, 
        Hess = ..4)
    

相关问题