2017-06-30 11 views
0

ニューラルネット関数を使用してDNNを実行しました。ただし、me​​dv〜。と入力すると、以下のようなneuralnet関数のformulaパラメータに次のエラーが表示されます。ニューラルネット関数の式パラメータ

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' 인자가 없습니다 

ただし、次の説明変数を入力しても問題ありません。

説明変数が多い場合は、1つずつ書き込むことはできません。どうしたの?すべての変数をmedv〜のような短いコードと見なすにはどうしたらいいですか? 。

+1

https://stackoverflow.com/questions/17794575/error-in-terms-formulaformula-in-formula-and-no-data-argumentを参照してください。 –

答えて

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

関連する問題