为了账号安全,请及时绑定邮箱和手机立即绑定

Keras 模型产生相同的输出

Keras 模型产生相同的输出

Go
喵喔喔 2022-06-02 14:39:33
我见过几个有类似问题的问题,但没有一个能解决我的问题。我正在尝试将 Keras 中的神经网络拟合到具有 22 个输入特征的数据集以进行二进制分类。问题是我只有 195 个训练样本。我知道这是一个小数据集,但我不知道是否有可能以合理的准确度拟合模型(我的目标是> 95%的准确度)。我遇到的问题是我的模型只输出 1 并获得 75% 的准确率,因为我的数据集是 75% 的正例。这是我的代码:data = pd.read_csv("") #filename omitted, but it loads properlyscaler = MinMaxScaler()X = scaler.fit_transform(X)Y = data['status']X = data.drop(['status', 'name'], axis = 1)xTrain, xTest, yTrain, yTest = train_test_split(X, Y, train_size = 0.8)model = Sequential()model.add(Dense(48, input_shape=(22,), activation = 'relu'))model.add(Dropout(0.5))model.add(Dense(1, activation = 'softmax'))optim = keras.optimizers.adam(lr=0.0001)model.compile(optimizer = optim, loss = 'binary_crossentropy', metrics = ['accuracy'])model.fit(xTrain, yTrain, epochs = 20, batch_size = 5, validation_data = (xTest, yTest))我尝试添加更多隐藏层,增加训练 epoch 的数量,并增加和降低优化器的学习率,但准确度保持不变。这是数据集的链接:https ://www.dropbox.com/s/c4td650b4z7aizc/fixed.xlsx?dl=0
查看完整描述

1 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

您需要尝试一些事情以获得更好的准确性:

  1. 不要简单地将数据集原样输入到 NN 中。做一些数据准备,比如平衡响应类。请查看各种采样技术,例如欠采样、过采样、SMOTE 等。如果您的数据集具有平衡的类分布,则可以很好地提高准确性。

  2. 而不是 activation = 'softmax',您应该使用sigmoid激活函数。

除了这些,您应该尝试其他几种架构,lr 值,不。epochs、batch_size、优化器等


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号