[R] Was tun, wenn ein Fehler in der Neuralnet-Funktion auftritt?

2018/11/15

Neuralnet-Funktion

Die Neuralnetzfunktion ist eine der neuronalen Netzwerkbibliotheken in R.Der Vorteil dieser Bibliothek besteht darin, dass der erstellte Lernende direkt mit plot () visualisiert werden kann und das Berechnungsdiagramm und die Gewichts- / Bias-Werte auf einen Blick angezeigt werden.
Das Folgende ist ein Memo, das auch als Memorandum dient, da ich bei der Durchführung einer Mehrklassenklassifizierung mit dem Iris-Datensatz als Übung auf verschiedene Weise gestolpert bin.Wenn Sie neuronale Netze in R ausprobieren, wird empfohlen, eine andere benutzerfreundliche Bibliothek zu wählen.

Fehler und Behandlung beim Ausführen des Neuralnetzes

Fehler bei der Eingabe einer qualitativen Variablen

Wenn Sie in vielen R-Funktionen eine qualitative Variable als Faktortyp definieren, wird diese automatisch als Dummy-Variable behandelt (Python hat keinen Faktortyp, die Funktion pandas get_dummies usw. teilt qualitative Variablen, und 0 oder 1 ist diejenige, die erstellt wird eine Spalte, um anzuzeigen, ob es gehört). Da die Neuralnet-Funktion nur quantitative Variablen verarbeiten kann, konnte sie qualitative Variablen wie "Arten" der Iris nicht korrekt erkennen, und es ist ein Fehler aufgetreten.Führen Sie den folgenden Code aus, um eine qualitative Variable in eine Dummy-Variable zu konvertieren.

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

Über die Formel zum Zeitpunkt der Klassifizierung mehrerer Klassen

In der nnet-Funktion usw. kann wie folgt geschrieben werden.Hier werden für Arten andere Variablen als erklärende Variablen angegeben ("".Andere Mittel als die Zielvariable).

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

Da die erklärende Variable in eine Dummy-Variable konvertiert wurde, beschreibt die Formel alle zu klassifizierenden Klassen, indem sie mit "+" verbunden wird.

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

結果

Ich konnte die Iris sicher klassifizieren.