Sie werden verstehen dies besser mit einem Beispiel (ich es modifiziert, um ein wenig, aber ich habe es von here):
itrain <- iris[sample(1:150, 50),]
itrain$setosa <- c(itrain$Species == 'setosa')
itrain$versicolor <- c(itrain$Species == 'versicolor')
itrain$virginica <- c(itrain$Species == 'virginica')
itrain$Species <- NULL
inet <- neuralnet(setosa + versicolor + virginica ~ Sepal.Length + Sepal.Width +
Petal.Length + Petal.Width, itrain, hidden=3, lifesign="full")
#make a prediction on the training set and then compare to
#inet$net.result[[1]]
predict <- compute(inet, itrain[1:4])
Nun nehmen Sie einen Blick auf die Ergebnisse:
head(predict$net.result)
# [,1] [,2] [,3]
#80 0.0167232688257 0.995316738272 -0.011840391533
#112 -0.0008289388986 -0.006814451178 1.007637170495
#17 1.0028534166840 0.004240124926 -0.007115290101
#104 -0.0002256650283 -0.031771967776 1.031855488316
#149 0.0019424886784 0.007205356060 0.990892583485
#82 -0.0061699713404 0.957656929739 0.048564910023
head(inet$net.result[[1]])
# [,1] [,2] [,3]
#80 0.0167232688257 0.995316738272 -0.011840391533
#112 -0.0008289388986 -0.006814451178 1.007637170495
#17 1.0028534166840 0.004240124926 -0.007115290101
#104 -0.0002256650283 -0.031771967776 1.031855488316
#149 0.0019424886784 0.007205356060 0.990892583485
#82 -0.0061699713404 0.957656929739 0.048564910023
I verwendet compute
, um eine Vorhersage über den Trainingssatz unter Verwendung des neuronalen Netzwerkmodells zu treffen. Wie Sie sehen können, sind inet$net.result[[1]]
und predict$net.result
gleich. So ist inet$net.result[[1]]
nur eine Vorhersage für den Datensatz, den Sie verwendet haben, um das Modell zu trainieren (es entspricht den angepassten Werten des Modells lm
).
Laut @sebastimms wirklich nützlichen Kommentar gibt es einen Grund, warum net.result
eine Liste ist. Im Grunde hat neuralnet
einen Parameter rep
, der es ermöglicht, mehrere Modelle in einem Aufruf zu trainieren. Wenn rep
größer als 1 ist, wird net.result
größer als 1 (wie auch andere Komponenten (weights
, result.matrix
, start.weights
)).
Excellant vielen Dank. Es ist seltsam, dass das inet $ net.result [[1]] das Ergebnis eine Liste mit 1 Element ist. Bedeutet dies, dass in bestimmten Szenarien mehr als 1 Ergebnismenge wie inet $ net.result [[2]] gesetzt sein könnte? – edb500
Sie sind herzlich willkommen @ edb500. Um ehrlich zu sein, habe ich nie 'inet $ net.result [[2]]' oder irgendein anderes Element benutzt, also bin ich mir nicht sicher. – LyzandeR
Ok danke trotzdem – edb500