python - 一维 CNN 模型的准确率非常低
问题描述
我尝试为 DNA 突变分类构建 1D CNN 模型 我构建了模型并且它工作正常,但我得到的测试数据精度低 我有如下图所示的数据集
这是我的模型
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 函数中测试数据的百分比并增加测试数据的百分比以避免过度拟合,但测试准确度仍然很低
解决方案
您可以使用几种方法来概括您的模型并提高测试准确性:
1-检查您的数据集是否不平衡。不平衡的数据集意味着每个类中的数据大小有很大的不同。
2-您可以使用数据/图像增强技术来增加数据集的大小或平衡类的大小。
3- 进行超参数优化,更改优化器类型、batch_size、学习率和其他超参数以找到最佳超参数。
4- 在某些情况下,使用其他函数来获取损失和准确性可能会有所帮助。
推荐阅读
- python - 如何将 TesorFlow 拉入 docker windows 容器?
- mysql - 从 MySQL 中的表中选择前 3 个值
- reactjs - Redux 使用单独的 reducer 规范化数据
- css - CSS flex-wrap:除非包裹,否则在项目之间放置间隙?
- asp.net-mvc - 为什么我在 MVC 4.0 Web 应用程序中收到 500 错误?
- hadoop - 找到接口 org.apache.hadoop.mapreduce.TaskAttemptContext,但在 mapreduce 中预期类错误
- scala - 用于链表样式函数调用的 CPS 样式
- jdeveloper - JAVA正则表达式字符识别
- java - 为什么用户ID不按顺序输入?
- r - 嵌套循环查找最新评论