[R] Que faire lorsqu'une erreur se produit dans la fonction neuralnet

2018er mars 11

fonction neuralnet

La fonction neuralnet est l'une des bibliothèques de réseaux neuronaux de R.L'avantage de cette bibliothèque est que l'apprenant créé peut être visualisé directement avec plot (), et le graphique de calcul et les valeurs de poids / biais peuvent être visualisés en un coup d'œil.
Ce qui suit est un mémo qui sert également de mémorandum parce que j'ai trébuché de différentes manières lors de l'exécution d'une classification multi-classe avec l'ensemble de données d'iris comme pratique.Lorsque vous essayez réellement des réseaux de neurones dans R, il est recommandé de choisir une autre bibliothèque facile à utiliser.

Erreur et gestion lors de l'exécution de neuralnet

Erreur d'entrée de variable qualitative

Dans de nombreuses fonctions R, si vous définissez une variable qualitative comme type de facteur, elle sera automatiquement traitée comme une variable fictive (python n'a pas de type de facteur, la fonction pandas get_dummies etc. divise les variables qualitatives, et 0 ou 1 est ce que Create une colonne pour indiquer si elle appartient). Étant donné que la fonction neuralnet ne peut gérer que des variables quantitatives, elle n'a pas pu reconnaître correctement les variables qualitatives telles que «Espèce» d'iris, et une erreur s'est produite.Pour convertir une variable qualitative en variable factice, exécutez le code suivant.

library(caret) 
tmp <- dummyVars(~.,data=train) 
dummy <- as.data.frame(predict(tmp, train))

À propos de la formule au moment de la classification multi-classes

Dans la fonction nnet, etc., il peut être écrit comme suit.Ici, pour les espèces, d'autres variables sont spécifiées comme variables explicatives ("".Moyens autres que la variable objective).

library(nnet) 
nn1 <- nnet(formula = Species ~ ., size=5, data=train)

Puisque la variable explicative a été convertie en variable fictive, la formule décrit toutes les classes à classer en les reliant avec "+".

library("neuralnet") f = Species.setosa + Species.versicolor + Species.virginica       
~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width 
nn2 <- neuralnet(formula = f, data = dummy)

結果

J'ai pu classer les iris en toute sécurité.