予測にニューラルネットを使用したいと思っています。
Xを作成します。
x <- cbind(seq(1, 50, 1), seq(51, 100, 1))
Yを作成:
y <- x[,1]*x[,2]
それらに名前を付けます
colnames(x) <- c('x1', 'x2')
names(y) <- 'y'
Data.frameを作成します。
dt <- data.frame(x, y)
そして今、私はエラーになりました
model <- neuralnet(y~., dt, hidden=10, threshold=0.01)
terms.formula(formula)のエラー: '。'式にあり、「データ」引数なし
たとえば、lm(線形モデル)ではこれが機能します。
私のコメントが述べているように、これはエクスポートされていない関数のバグのように見えますneuralnet:::generate.initial.variables
。回避策として、dt
を除くy
の名前から長い数式を作成します。
n <- names(dt)
f <- as.formula(paste("y ~", paste(n[!n %in% "y"], collapse = " + ")))
f
## gives
> f
y ~ x1 + x2
## fit model using `f`
model <- neuralnet(f, data = dt, hidden=10, threshold=0.01)
> model
Call: neuralnet(formula = f, data = dt, hidden = 10, threshold = 0.01)
1 repetition was calculated.
Error Reached Threshold Steps
1 53975276.25 0.00857558698 1967
前の答えに対するより簡単な代替手段を提供して、reformulate()
を使用してdt
の名前から式を作成できます。
_f <- reformulate(setdiff(colnames(dt), "y"), response="y")
_
reformulate()
はpaste()
の使用を必要とせず、用語を自動的に追加します。