我试图用包神经网络计算神经网络,以解决回归问题。我试图近似函数: f(x1,x2)= sqrt(x1)+ sin(x2)+ x1 * x2。
这是我的代码:
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)
这是查看函数
的散点图的代码x <- seq(0, 100, 1)
y <- seq(0, 100, 1)
z <- sqrt(x) + sin(y) +x*y
scatterplot3d(x,y,z)
这是f的图表 https://i.stack.imgur.com/HkpbG.png
这是神经网络输出的图表 https://i.stack.imgur.com/N38dd.png
有人可以给我一些建议吗?非常感谢 !
答案 0 :(得分:0)
我找到了问题的答案。根据“统计学习要素”(Friedman,Tibshirani和Hastie)一书,在解决回归问题时,需要在神经网络的最后一层使用身份函数。这意味着输出是前一层的线性组合。为了使用R,需要设置&#34; linear.output&#34;为真,而不是假。