KerasでNNによるモデルを構築しようとしています。
特徴量は243個のバイナリーデータで、二値分類問題です。
とりあえず適当に予測してみようと思い、以下を実行しました。
python
1 2 3from sklearn.model_selection import train_test_split, KFold 4from keras.models import Sequential 5from keras.layers import Dense, Activation 6from keras.optimizers import SGD, Adadelta, Adam 7from keras.callbacks import EarlyStopping 8 9 10kf=KFold(n_splits=5, random_state=1) 11loss_list=[] 12acc_list=[] 13for train_idx, val_idx in kf.split(x_sampled): 14 x_train, x_val=x[train_idx], x[val_idx] 15 y_train, y_val=y[train_idx], y[val_idx] 16 17 model=Sequential() 18 model.add(Dense(units=100, input_dim=len(x[0]))) 19 model.add(Activation('sigmoid')) 20 model.add(Dense(units=50, input_dim=100)) 21 model.add(Activation('sigmoid')) 22 model.add(Dense(units=10, input_dim=50)) 23 model.add(Activation('sigmoid')) 24 model.add(Dense(units=1)) 25 26 model.compile(optimizer='Adam', loss='binary_crossentropy', metrics=['accuracy']) 27 28 history=model.fit(x_train, y_train, epochs = 100, batch_size = 32, validation_data = (x_val, y_val), callbacks = [EarlyStopping()]) 29 30 score=model.evaluate(x_val, y_val, verbose = 0) 31 loss_list.append(score[0]) 32 acc_list.append(score[1]) 33 34print('loss avg is {}'.format(np.mean(loss_list))) 35print('acc avg is {}'.format(np.mean(acc_list)))
この結果なのですが、
python
1Train on 368 samples, validate on 92 samples 2Epoch 1/100 3368/368 [==============================] - 1s 3ms/step - loss: 0.5381 - acc: 0.7799 - val_loss: 0.1971 - val_acc: 1.0000 4Epoch 2/100 5368/368 [==============================] - 0s 157us/step - loss: 0.5045 - acc: 0.7799 - val_loss: 0.2338 - val_acc: 1.0000 6Train on 368 samples, validate on 92 samples 7Epoch 1/100 8368/368 [==============================] - 1s 3ms/step - loss: 0.6302 - acc: 0.5951 - val_loss: 0.5771 - val_acc: 0.7717 9Epoch 2/100 10368/368 [==============================] - 0s 141us/step - loss: 0.4722 - acc: 0.8370 - val_loss: 0.5404 - val_acc: 0.7717 11Epoch 3/100 12368/368 [==============================] - 0s 130us/step - loss: 0.4451 - acc: 0.8370 - val_loss: 0.5288 - val_acc: 0.7717 13Epoch 4/100 14368/368 [==============================] - 0s 136us/step - loss: 0.4172 - acc: 0.8370 - val_loss: 0.5713 - val_acc: 0.7717 15Train on 368 samples, validate on 92 samples 16Epoch 1/100 17368/368 [==============================] - 1s 3ms/step - loss: 2.5404 - acc: 0.0054 - val_loss: 4.0295 - val_acc: 0.0000e+00 18Epoch 2/100 19368/368 [==============================] - 0s 138us/step - loss: 2.5404 - acc: 0.0054 - val_loss: 4.0295 - val_acc: 0.0000e+00 20Train on 368 samples, validate on 92 samples 21Epoch 1/100 22368/368 [==============================] - 1s 3ms/step - loss: 2.8031 - acc: 0.8261 - val_loss: 2.9783 - val_acc: 0.8152 23Epoch 2/100 24368/368 [==============================] - 0s 148us/step - loss: 2.8031 - acc: 0.8261 - val_loss: 2.9783 - val_acc: 0.8152 25Train on 368 samples, validate on 92 samples 26Epoch 1/100 27368/368 [==============================] - 1s 4ms/step - loss: 2.6717 - acc: 0.8342 - val_loss: 3.5039 - val_acc: 0.7826 28Epoch 2/100 29368/368 [==============================] - 0s 149us/step - loss: 2.6717 - acc: 0.8342 - val_loss: 3.5039 - val_acc: 0.7826 30loss avg is 2.263390034566755 31acc avg is 0.6739130434782609 32 33 34
となり、accがゼロ付近のまま終わってしまっているfoldがあります。
この理由として考えられることはどんなものがあるでしょうか?
NN初心者のため、ヒントだけでもいただければ幸いです。
回答2件
あなたの回答
tips
プレビュー