我有一个分类问题,试图预测6个班级。输入功能是ECG信号。这是数据集的标签;
愤怒,平静,厌恶,恐惧,幸福,悲伤
这是数据集的外观;
ecg 0 1 2 3 4 5
0 [[0.1912, 0.3597, 0.3597, 0.3597, 0.3597, 0.35... 1 0 0 0 0 0
1 [[0.2179, 0.4172, 0.4172, 0.4172, 0.4172, 0.41... 1 0 0 0 0 0
2 [[0.1986, 0.3537, 0.3537, 0.3537, 0.3537, 0.35... 0 1 0 0 0 0
3 [[0.2808, 0.5145, 0.5145, 0.5145, 0.5145, 0.51... 0 1 0 0 0 0
4 [[0.1758, 0.2977, 0.2977, 0.2977, 0.2977, 0.29... 0 0 1 0 0 0
5 [[0.2183, 0.396, 0.396, 0.396, 0.396, 0.396, 0... 0 0 1 0 0 0
6 [[0.204, 0.3869, 0.3869, 0.3869, 0.3869, 0.386... 0 0 0 1 0 0
7 [[0.1695, 0.2823, 0.2823, 0.2823, 0.2823, 0.28... 0 0 0 1 0 0
8 [[0.2005, 0.3575, 0.3575, 0.3575, 0.3575, 0.35... 0 0 0 0 1 0
9 [[0.1969, 0.344, 0.344, 0.344, 0.344, 0.344, 0... 0 0 0 0 1 0
10 [[0.2312, 0.4141, 0.4141, 0.4141, 0.4141, 0.41... 0 0 0 0 0 1
11 [[0.1862, 0.3084, 0.3084, 0.3084, 0.3084, 0.30... 0 0 0 0 0 1
12 [[0.2605, 0.47, 0.47, 0.47, 0.47, 0.47, 0.3814... 1 0 0 0 0 0
13 [[0.2154, 0.3733, 0.3733, 0.3733, 0.3733, 0.37... 1 0 0 0 0 0
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
如您所见,我对标签进行了一次热编码。
问题是,无论我如何尝试,准确性都不会超过0.2
,并且它总是在每个时期重复一次。之所以将这个数据集称为"non-weighted"
是因为每个类标签都有相同数量的实例。例如,如果有60行数据标记为"anger"
,则还有60 "calmness"
,60 "disgust"
,依此类推。我认为,这导致模型始终预测同一类,这就是为什么准确性不会改变的原因。
有什么办法解决这个问题?预先感谢。
编辑: 我试图将这个分类问题转换为“二进制分类”。我只是消除了所有标签,并将它们转换为一个被生气或不生气。在我的keras模型中,我仅将损失函数从“分类交叉熵” 更改为“二进制交叉熵” 。之后,模型的准确性发生了巨大变化,我的准确性超过了80%。因此,我不知道这意味着什么,从结果中我应该了解什么。但是不知何故,当我的数据集中有两个以上的类并且不是二进制分类问题时,准确性低于%20,并且会在每个时期重复一次。
答案 0 :(得分:1)
拥有一个平衡的数据集,即每个类别具有相同数量的样本,要比不平衡的样本好。所以我认为这不是问题。
如果您在训练中没有整理数据,则绝对应该这样做。
如果您这样做了,我认为最好检查一下数据集和网络。
对于数据集,只需绘制一些样本,然后查看是否可以正确分类即可。如果您做不到,则表示您的数据有问题。
对于模型,只需运行训练中的测试实验,该实验使用非常少的样本(例如100个),并使用完全相同的训练集进行测试。这个想法是,如果您的网络正常工作,它应该会迅速适应这个较小的数据集。否则,这意味着您的网络会遇到一些严重的问题。
其他一些快速提示: