python模型训练效果没有优化_LSTM模型训练效果好,但测试结果较差,不能看出拟合过度...
以下是我的数据:
我有500个录音(任意分成训练,验证和测试集)。每个记录包含一定数量的行,每一行对应一个1s的EEG片段,换句话说,每个记录的长度等于一个EEG信号的长度(s)。每行包含22个通道*22个时间/频率特征=484个特征+输出标签(0或1)。在
所以我想执行二进制分类。在
正如许多论文(看this good paper)所建议的那样,对于每一个记录,我创建长度为look_back的序列,以便在预测每个标签时考虑到“周围”片段的特征。代码如下:def create_dataset(feat,targ, look_back=1):
semi_window=math.floor(look_back/2)
dataX, dataY = [], []
for i in range(semi_window,len(targ)-semi_window):
a = feat[i-semi_window:(i+semi_window+1), :]
dataX.append(a)
dataY.append(targ[i])
return np.array(dataX), np.array(dataY)
此函数返回大小为(samples, look_back=time_steps, features=484)的三维数组。在
为了处理不平衡的类,我测试了make_imbalance函数以删除实例以保持每个类的实例数不变,以及在loss函数中考虑到不平衡的class_weight参数。在
所以,我使用了一个LSTM模型,并使用earlystup回调参数,在验证精度没有增加给定容差的情况下停止。在
这是我的完整模型:
^{pr2}$
我得到的结果是:
训练混淆矩阵显著,但验证矩阵和测试矩阵较差。。。在
我想这并不过分,因为我的模型尺寸很小(一层,…)。此外,我认为这个模型是恰当的,因为它能够很好地区分(巨大)训练集上的数据。。。在
那么,怎么了?在
NB:我说的是,我对经典的Keras前馈神经网络也有同样的问题
编辑:以下是我绘制学习曲线时得到的结果:
你可以看到的是,训练精度仍然很高,而验证精度(实际上橙色曲线应该是“验证”)仍然很低。。。在
编辑:我尝试使用XGBoost和SVM分类器,但是我无法得到结果(仍然是相同的行为)
编辑:我试着洗牌数据看看。我得到了很好的结果,但这有点像海市蜃楼。。。事实上,我有来自相同记录的数据(不完全相同,但非常接近)在训练和验证集。。。有点作弊。当我向模特展示一张全新的唱片时,它崩溃了。。。所以,我还没有找到解决办法
总结
以上是生活随笔为你收集整理的python模型训练效果没有优化_LSTM模型训练效果好,但测试结果较差,不能看出拟合过度...的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 可变车道怎么走不违章_郑州街头现可变车道
- 下一篇: excel多元线性拟合_Python一元