[R] Wat te doen als er een fout optreedt in de neuralnet-functie

2018 年 11 月 15 日

neuralnet-functie

De neuralnet-functie is een van de neurale netwerkbibliotheken in R.Het voordeel van deze bibliotheek is dat de gecreëerde leerling direct kan worden gevisualiseerd met plot (), en de rekengrafiek en de waarden voor gewicht / afwijking zijn in één oogopslag te zien.
Het volgende is een memo die ook als een memorandum dient, omdat ik op verschillende manieren struikelde bij het uitvoeren van multi-class classificatie met de iris-dataset als een oefening.Bij het daadwerkelijk uitproberen van neurale netwerken in R, wordt aanbevolen om een ​​andere gebruiksvriendelijke bibliotheek te kiezen.

Fout en afhandeling bij het uitvoeren van neuralnet

Kwalitatieve variabele invoerfout

Als u in veel R-functies een kwalitatieve variabele definieert als een factortype, wordt deze automatisch behandeld als een dummy-variabele (python heeft geen factortype, panda's get_dummies-functie enz. Verdeelt kwalitatieve variabelen, en 0 of 1 is die Create een kolom om aan te geven of het thuishoort). Aangezien de functie neuralnet alleen kwantitatieve variabelen kan verwerken, kon het kwalitatieve variabelen zoals "Species" van de iris niet correct herkennen en trad er een fout op.Voer de volgende code uit om een ​​kwalitatieve variabele om te zetten in een dummy-variabele.

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

Over formule op het moment van classificatie met meerdere klassen

In de nnet-functie enz. Kan het als volgt worden geschreven.Hier worden voor soorten andere variabelen gespecificeerd als verklarende variabelen ("".Andere middelen dan de objectieve variabele).

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

Omdat de verklarende variabele is omgezet in een dummy-variabele, beschrijft de formule alle klassen die moeten worden geclassificeerd door ze te verbinden met "+".

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

resultaat

Ik heb de iris veilig kunnen classificeren.