2016-07-19 29 views
0

Ich bin ein Anfänger in R.Neuralnet Formel in R

ich versuche zu lernen, wie ich neuronale Netze in R machen und nutzen sie, um einen Ausgang zu prognostizieren. Ich fand ein Beispiel mit einem Boston-Datensatz online und wurde angepasst, um meinen Code zu testen. Es funktioniert (Ich bin ein MSE 250 :(bekommen), aber ich kann diesen Teil des Codes nicht verstehen.

n <- names(train_) 
    f <- as.formula(paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + "))) 
    nn <- neuralnet(f,data=train_,hidden=c(5,3),linear.output=T) 
    pr.nn <- compute(nn,test_[,1:5]) 

Kann jemand erklären, wie das funktioniert? Vielen Dank!

Antwort

2

Ich glaube, Sie dieses Stück Code bedeuten

f <- as.formula(paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + "))) 

lässt also diese brechen Stück für Stück.

f der Variablenname ist.

as.formula erzwingt den Variablentyp zu einem "Formel" -Typ. Welche hat die allgemeine Form von Response ~ Variable_1 + Variable_2. Was heißt: Verwenden Sie Variable 1 und Variable 2, um den Response-Wert vorherzusagen.

paste ist eine Funktion, die Saitenstücke verkettet. Also

würde geben "String", mit sep = "" sagen, geben Sie mir eine Trennung zwischen den Eingängen von "". Was ist nichts

In dem Code, den Sie haben, ist es mit collapse = "+", die ein Pluszeichen zwischen den Werten, in der zweiten Einfügefunktion setzt.

paste(n[!n %in% "pred_con"], collapse = " + ") 

n die Namen der Spalten in der train_

gesetzt
n <- names(train_) 

So fügen (n, kollabieren = "+") würde mit der Verwendung jeder Spaltennamen geben ein + zwischen ihnen unterschreiben.

Allerdings wollen wir nicht "pred_con" den Wert, den wir versuchen zu prognostizieren. Dies wird im früheren Teil dieser Codezeile behandelt.

Also n [! N% in% "pred_con"] sagt jeden Namen, der NICHT "pred_con" ist.

So von

paste(n[!n %in% "pred_con"], collapse = " + ") 

Wir bekommen jeden Spaltennamen mit einem Pluszeichen zwischen ihnen, anders als "pred_con"

wir die Formel wollen aus der Y ~ X1 + X2

So Fügen Sie das "pred_con" vor der Liste der Spaltennamen, die wir gerade erstellt haben, ein, indem Sie eine andere paste-Anweisung verwenden. Geben Sie uns:

paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + ")) 

Und schließlich machen wir es vom Typ Formel anstelle von String, so dass wir es mit der as.formula Funktion wickeln.

Was uns jetzt auf die volle Linie bringt von:

f <- as.formula(paste("pred_con ~", paste(n[!n %in% "pred_con"], collapse = " + "))) 

Die letzten beiden Zeilen sind nur das neuronale Netz Paket Zeug mit so würde nicht ich darauf konzentrieren.

nn <- neuralnet(f,data=train_,hidden=c(5,3),linear.output=T) 

Dies ist nur Ihr neurales Netzwerk trainieren. Und speichert es als „nn“

pr.nn <- compute(nn,test_[,1:5]) 

Dies wird den Wert der „test_“ set Vorhersage mit „nn“ und speichert sie in „pr.nn“