我使用了四年的数据,在前 3 年进行训练,在第四次进行测试。使用带有 Keras 的 LSTM。我的测试数据集(与训练完全没有重叠)始终比我的训练数据表现更好。我该如何解释这个?这似乎很不寻常。这是模型输出的结尾。您可以看到我在给定 epoch 的训练准确率徘徊在 80% 左右,但测试输出跃升至 86% 左右:
Epoch 8/10
9092/9092 [==============================] - 9s 964us/step - loss: 0.9870 - acc: 0.8185
Epoch 9/10
9092/9092 [==============================] - 9s 1ms/step - loss: 0.9670 - acc: 0.7996
Epoch 10/10
9092/9092 [==============================] - 9s 937us/step - loss: 0.9799 - acc: 0.7895
Test Set Accuracy: 85.96%
predicted 0 1
actual
0 2639 238
1 211 111
编辑:这是我创建和编译模型的代码:
embedding_vector_length = 32
days = 30
model = Sequential()
model.add(Embedding(2080, embedding_vector_length, input_length=days)
model.add(LSTM(100))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(train_x, train_y, epochs=3, batch_size=64,class_weight={0:1.,1:1})
scores = model.evaluate(test_x, test_y, verbose=0)
print("Test Set Accuracy: %.2f%%" % (scores[1]*100))