2017-07-04 11 views
1

画像に見られるデータセットを分類するために、以下に定義されたニューラルネットワークが使用される:image
シミュレーションの統計は、分類精度が50%であることを示しています。したがって、正しく分類されていないデータセットのケースをどのように知っていますか?バイナリ分類の挑戦(ケラスにおける)で間違って分類されたケース

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

シミュレーション統計はどういう意味ですか?あなたはあなたのテストや列車のデータの予測メソッドを呼び出し、それを地面の真理と比較することができます。 – marcopah

+0

テストデータ(val_acc)に50%の分類精度があります。これは、テストデータの半分が正しく分類されていないことを意味します。私は自分のデータセットのどの痕跡がNNによって正しく分類されていないか知りたいだけです。あなたはもっと具体的になりますか?前もって感謝します – Adriano10

答えて

1

y_trainmodel.predict(X_train)を比較してください。これを行うには、コードの末尾に行を追加することができます。

train_prediction=np.round(model.predict(X_train)).reshape(-1) 
train_prediction=train_prediction.astype(int) 

次に、train_prediction-y_trainの0でないエントリを見ることができます。これらのエントリーの位置は、モデルがミス分類を行った場所である。

np.roundの理由は、最後の有効化機能がシグモイドであるためです。これは、0に近い値は0に分類され、1に近い値は1に分類されることを意味します。

関連する問題