我通过使用具有 86% 正类和 14% 负类样本的不平衡数据集来使用 LSTM 进行情绪分析。这是一个非常小的数据集,包含 472 个句子,但它们使用的是区域语言。train_test_split 比率为 0.3。我在实施中有两个问题:
1:训练和验证的准确性在整个过程中保持不变(没有 SMOTE)。 2:使用 SMOTE 进行过采样时,y_train 在过采样的 y_train.shape 中仅显示 1 个标签
from imblearn.over_sampling import SMOTE
ros = SMOTE()
X_train_oversample, y_train_oversample = ros.fit_sample(X_train_pad, y_train)
print(X_train_pad.shape)
print(X_train_oversample.shape)
print(y_train.shape)
print(y_train_oversample.shape)
y_train 的结果:
X_train_pad.shape (331, 832)
X_train_oversample.shape (570, 832)
y_train.shape (331, **2**)
y_train_oversample.shape (570, **1**)
然而,数据的实际形状如下:
Shape of X_train_pad tensor (331, 832)
Shape of y_train tensor (331, 2)
Shape of X_test_pad tensor (141, 832)
Shape of y_test tensor (141, 2)
因此,LSTM 训练给出了错误信息
ValueError: Error when checking target: expected dense_1 to have shape (2,) but got array with shape (1,)