我构建了一个具有35000个输入样本和20个预测变量的序列keras模型,测试数据输出类分布为:
利用(np_utils.to_categorical)将输出转换为二进制类矩阵后,训练精度约为54%,当我使用测试数据进行模型拟合(15000个样本)时,所有预测(100%)恰好属于同一类,即class_3"训练输出中出现次数最多",这种偏差的原因是什么,而对其他类没有单一的预测?如何使模型对预测更少的类更敏感并提高准确性,特别是如果训练数据中的并发性低至1-3%.
model = Sequential()
model.add(Dense(40, input_dim=20, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10, activation='relu'))
model.add(Dense(5, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
model.fit(X, Y, epochs=500, verbose=1)
Run Code Online (Sandbox Code Playgroud)