2017-07-04 1 views
1

Das unten definierte neuronale Netzwerk wird verwendet, um den Datensatz im Bild zu klassifizieren: image.
Simulationsstatistiken deuten darauf hin, dass die Klassifikationsgenauigkeit 50% beträgt. Meine Frage lautet also: Woher weiß ich, welche Fälle des Datensatzes nicht korrekt klassifiziert wurden?Falsch klassifizierte Fälle in einer binären Klassifikationsherausforderung (in Keras)

from keras.models import Sequential 
from keras.layers import Dense 
from sklearn.cross_validation import train_test_split 
import numpy 
# fix random seed for reproducibility 
seed = 7 
numpy.random.seed(seed) 

dataset = numpy.loadtxt("sorted output.csv", delimiter=",") 
# split into input (X) and output (Y) variables 
X = dataset[:,0:3] 
Y = dataset[:,3] 
# split into 67% for train and 33% for test 
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=seed) 
# create model 
model = Sequential() 
model.add(Dense(12, input_dim=3, init='uniform', activation='relu')) 
model.add(Dense(3, init='uniform', activation='relu')) 
model.add(Dense(1, init='uniform', activation='sigmoid')) 
# Compile model 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 
# Fit the model 
model.fit(X_train, y_train, validation_data=(X_test,y_test), nb_epoch=150, batch_size=10) 
+0

Was meinen Sie mit Simulationsstatistiken? Sie können einfach die Vorhersage-Methode für Ihre Test- oder Trainingsdaten aufrufen und diese dann mit der Grundwahrheit vergleichen. – marcopah

+0

Ich erhalte eine Klassifizierungsgenauigkeit von 50% für meine Testdaten (val_acc). Dies bedeutet, dass die Hälfte der Testdaten nicht korrekt klassifiziert ist. Ich würde einfach wissen, welche Spuren meines Datensatzes vom NN nicht korrekt klassifiziert wurden. Können Sie bitte genauer sein? Danke im Voraus – Adriano10

Antwort

1

Vergleichen model.predict(X_train) mit y_train. Um dies zu tun, können Sie die Zeilen

an das Ende Ihres Codes hinzufügen. Dann können Sie die Einträge ungleich Null in train_prediction-y_train betrachten. Die Positionen dieser Einträge sind die Stellen, an denen das Modell Fehlklassifizierungen vorgenommen hat.

Der Grund für die np.round ist, dass Ihre letzte Aktivierungsfunktion sigmoid ist. Dies bedeutet, dass Werte, die näher bei 0 liegen, als 0 klassifiziert werden, und solche, die näher bei 1 liegen, werden als 1 klassifiziert.

Verwandte Themen