Ich habe gerade meinen ersten Versuch geschrieben, ein neuronales Netzwerk für die Haushaltsklassifikation bereitzustellen, indem ich Energieverbrauchsmerkmale verwende. Bisher konnte ich es laufen lassen, aber die Ausgabe scheint fraglich zu sein. So wie Sie sehen können, verwende ich 18 Funktionen (vielleicht zu viel?), Um vorherzusagen, ob es sich um einen einzelnen oder nicht-einzelnen Haushalt handelt.Neuronale Netto-Genauigkeit ist zu niedrig
Ich habe 3488 Zeilen wie folgt aus:
c_day c_weekend c_evening c_morning c_night c_noon c_max c_min r_mean_max r_min_mean r_night_day r_morning_noon
12 14 1826 9 765 3 447 2 878 0 7338 4
r_evening_noon t_above_1kw t_above_2kw t_above_mean t_daily_max single
3424 1 695 0 174319075712881 1
Meine neuronale Netzwerk mit diesen Parametern:
net.nn <- neuralnet(single
~ c_day
+ c_weekend
+ c_weekday
+ c_evening
+ c_morning
+ c_night
+ c_noon
+ c_max
+ c_min
+ r_mean_max
+ r_min_mean
+ r_night_day
+ r_morning_noon
+ r_evening_noon
+ t_above_1kw
+ t_above_2kw
+ t_above_mean
+ t_daily_max
,train, hidden=15, threshold=0.01,linear.output=F)
1 repetition was calculated.
Error Reached Threshold Steps
1 126.3425379 0.009899229932 4091
ich die Daten normalisiert, bevor sie durch die Min-Max-Normalisierung Formel:
for(i in names(full_data)){
x <- as.numeric(full_data[,i])
full_data[,i] <- (x-min(x)/max(x)-min(x))
}
Ich habe 3488 Zeilen von Daten und spaltete sie in ein Training und ein Test-Set.
half <- nrow(full_data)/2
train <- full_data[1:half,]
test <- full_data[half:3488,]
net.results <- compute(net.nn,test)
nn$net.result
verwenden ich das Vorhersageverfahren und band es um den eigentlich „single [y/nein]“ - Spalte das Ergebnis zu vergleichen:
predict <- nn$net.result
cleanoutput <- cbind(predict,full_data$single[half:3488])
colnames(cleanoutput) <- c("predicted","actual")
Also, wenn ich es drucken, das ist meine Klassifizierung Ergebnis für die ersten 10 Reihen:
predicted actual
1701 0.1661093405 0
1702 0.1317067578 0
1703 0.1677147708 1
1704 0.2051188618 1
1705 0.2013035634 0
1706 0.2088726723 0
1707 0.2683753128 1
1708 0.1661093405 0
1709 0.2385537285 1
1710 0.1257108821 0
Also, wenn ich es richtig verstehe, wenn ich die vorhergesagten Ausgabe abzurunden sollte es entweder eine 0 oder 1, aber es endet immer eine 0 sein!
Verwende ich die falschen Parameter? Sind meine Daten einfach nicht für die Vorhersage von nn geeignet? Ist die Normalisierung falsch?
Danke für den Hinweis. Ich habe gerade die Normalisierung der Standardabweichung versucht, wie Sie gesagt haben, und den Fehler auf ~ 25 gesenkt. – MayaK
Gut, dass Ihr Fehler jetzt niedrig ist. Jetzt möchten Sie vielleicht den Fehler zwischen Trainings- und Testdatensätzen vergleichen, um zu sehen, ob Sie überanpassen. – abhiieor