神经网络函数中的公式参数

时间:2017-06-30 01:45:07

标签: r neural-network deep-learning formula

DNN使用神经网络功能进行。但是,如果我输入medv~。,在神经网络功能的公式参数中,如下所示,会出现以下错误。

library("MASS")
data("Boston", package="MASS")
data<-Boston
keeps<-c("crim","indus","nox","rm","age","dis","tax","ptratio","lstat","medv")
data<-data[,keeps]

set.seed(2016)
train<-sample(1:nrow(data),400,FALSE)

fit<-neuralnet(medv~.,data=data[train,],hidden=c(10,12,20),algorithm="rprop+",err.fct="sse",
               act.fct="logistic",threshold=0.1,linear.output = TRUE)
Error in terms.formula(formula) : 
  formula 안에  '.'가 사용되었는데 'data' 인자가 없습니다

但是,如果输入以下解释变量,则没有问题。

fit<-neuralnet(medv~crim+indus+nox+rm+age+dis+tax+ptratio+lstat, data=data[train,],hidden=c(10,12,20),algorithm="rprop+",err.fct="sse",
               act.fct="logistic",threshold=0.1,linear.output = TRUE)

如果有很多解释变量,就不可能逐一编写。有什么问题?我能做些什么来将所有变量都视为像medv~这样的短代码。 。

1 个答案:

答案 0 :(得分:0)

你可以试试这个。

f = as.formula(paste('medv~', paste(names(Boston.scaled)[!names(Boston.scaled) %in% c('medv')], collapse='+')))
它对我有用。这是我的榜样。

Boston.scaled <- as.data.frame(scale(Boston))
min.medv <- min(Boston$medv)

max.medv <- max(Boston$medv)
Boston.scaled$medv <- scale(Boston$medv
                            , center = min.medv
                            , scale = max.medv - min.medv)
f = as.formula(paste('medv~', paste(names(Boston.scaled)[!names(Boston.scaled) %in% c('medv')], collapse='+')))
Boston.nn.5.3 <- neuralnet(f
                           , data=Boston.scaled
                           , hidden=c(5,3), rep=3
                           , linear.output=TRUE)

error.v = which.min(Boston.nn.5.3$result.matrix[1, ])
nn.5.3.predY = compute(Boston.nn.5.3, Boston.scaled[, -14], rep=error.v)$net.result
nn.5.3.predY.scaled = nn.5.3.predY*(max.medv - min.medv) + min.medv
nn.5.3.MSE = mean((nn.5.3.predY.scaled-Boston$medv)^2)
plot(Boston$medv,nn.5.3.predY.scaled,col='red',main='Real vs predicted NN with linear.output',pch=18,cex=0.7)
abline(0,1,lwd=2)
legend('bottomright',legend=c('with'),pch=18,col='red', bty='n')

nn, neuralnet, neuralnetwork