Je suis sur le point d'utiliser Neuralnet pour la prédiction.
Créez des X:
x <- cbind(seq(1, 50, 1), seq(51, 100, 1))
Créer Y:
y <- x[,1]*x[,2]
Donnez-leur un nom
colnames(x) <- c('x1', 'x2')
names(y) <- 'y'
Créez data.frame:
dt <- data.frame(x, y)
Et maintenant, j'ai une erreur
model <- neuralnet(y~., dt, hidden=10, threshold=0.01)
erreur dans terms.formula (formule): '.' dans la formule et pas d'argument "données"
Par exemple, en lm (modèle linéaire), cela fonctionne.
Comme mon commentaire l'indique, cela ressemble à un bogue dans la fonction non exportée neuralnet:::generate.initial.variables
. Pour contourner le problème, créez simplement une longue formule à partir des noms de dt
, à l'exclusion de y
, par exemple.
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
En proposant une alternative plus simple à la réponse précédente, vous pouvez créer une formule à partir des noms de dt
à l'aide de reformulate()
:
f <- reformulate(setdiff(colnames(dt), "y"), response="y")
reformulate()
ne nécessite pas l'utilisation de paste()
et ajoute automatiquement les termes ensemble.