首页 > 解决方案 > 一维 CNN 模型的准确率非常低

问题描述

我尝试为 DNA 突变分类构建 1D CNN 模型 我构建了模型并且它工作正常,但我得到的测试数据精度低 我有如下图所示的数据集1

这是我的模型

vocab_size = 100
embedding_dim = 150
max_len = 90
X_train = pad_sequences(X_train,padding ='post', maxlen = max_len)
X_test = pad_sequences(X_test,padding ='post', maxlen = max_len)
model = Sequential()
model.add(layers.Embedding(vocab_size,embedding_dim,input_length = max_len))
model.add(layers.Conv1D(128, 7, activation = 'relu'))
model.add(layers.GlobalMaxPooling1D())
model.add(layers.Dense(10, activation = 'relu'))
model.add(layers.Dense(1, activation = 'sigmoid'))
model.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics= ['accuracy'])
model.summary()
history = model.fit(X_train,y_train,epochs = 10, verbose = False,validation_data = (X_test,y_test),batch_size = 10)
loss,accuracy = model.evaluate(X_train,y_train, verbose = False)
accuracy = accuracy*100
print("training accuracy = {:.2f}".format(accuracy))
loss,accuracy = model.evaluate(X_test,y_test, verbose = False)
accuracy = accuracy*100
print("test accuracy = {:.2f}".format(accuracy))

我的输入是 ['sequence','normal','mutated','position'] 和目标列是 ['class'] 列所以我的测试准确性有什么问题。

编辑: 我尝试更改 train_test_split 函数中测试数据的百分比并增加测试数据的百分比以避免过度拟合,但测试准确度仍然很低

标签: pythontensorflowmachine-learningkerasconv-neural-network

解决方案


您可以使用几种方法来概括您的模型并提高测试准确性:

1-检查您的数据集是否不平衡。不平衡的数据集意味着每个类中的数据大小有很大的不同。

2-您可以使用数据/图像增强技术来增加数据集的大小或平衡类的大小。

3- 进行超参数优化,更改优化器类型、batch_size、学习率和其他超参数以找到最佳超参数。

4- 在某些情况下,使用其他函数来获取损失和准确性可能会有所帮助。


推荐阅读