2016-10-31 20 views
0

私は回帰問題を解決するために、パッケージneuralnetでニューラルネットワークを計算しようとしています。私は関数を近似しようとしています: f(x1、x2)= sqrt(x1)+ sin(x2)+ x1 * x2。ここNeuralnetパッケージでの問題R

は私のコードです:ここ

library(neuralnet) 
library(scatterplot3d) 
X1 <- as.data.frame(runif(1000, min = 0 , max = 100)) 
X2 <- as.data.frame(runif(1000, min = 0 , max = 100)) 
input <- cbind(X1,X2) 
sortie <- sqrt(X1) + sin(X2) + X1*X2 
donnee <- cbind(sortie,input) 
colnames(donnee) <- c("sortie","entree1","entree2") 

f <- as.formula(sortie ~ entree1 + entree2) 
net.f <- neuralnet(f , donnee, hidden = c(10,10,10) ,linear.output = FALSE) 

は、ニューラルネットワークの出力の散布図を見てコードです:

abscisse1 <- 0:100 
    abscisse2 <- 0:100 
    net.abscisseformule <- compute(net.f , cbind(abscisse1,abscisse2)) 
    neuralsortie <- c(net.abscisseformule$net.result) 
    scatterplot3d(abscisse1,abscisse2,neuralsortie) 

私は、結果が間違っていることをかなり確信しています散布図は関数fの散布図のようには見えないためです。私はこの問題は、ここで

f <-as.formula(sortie ~ entree1 + entree2) 

ラインから来ることthonk機能の散布

x <- seq(0, 100, 1) 
y <- seq(0, 100, 1) 
z <- sqrt(x) + sin(y) +x*y 
scatterplot3d(x,y,z) 

を見てコードは、これはこれは

https://i.stack.imgur.com/HkpbG.png のfのグラフですニューラルネットワークの出力のグラフ https://i.stack.imgur.com/N38dd.png

誰かが私にπを与えることができますかアドバイスのエース?どうもありがとう !

+0

すべてのライブラリステートメントをコードに含めてください。私はあなたが少なくとも2つ不足していると思います。あなたが比較している2つのプロットも表示してください。 –

答えて

0

私の質問に対する答えが見つかりました。本の「統計的学習の要素」(Friedman、TibshiraniおよびHastie)によると、回帰問題を解くとき、ニューラルネットワークの最後の層でアイデンティティ関数を使用する必要があります。これは、出力が前のレイヤの線形結合であることを意味します。 Rでこれを行うには、 "linear.output"をTRUEに設定し、FALSEに設定しないでください。

関連する問題