【发布时间】:2020-08-29 18:49:51
【问题描述】:
我正在使用 Keras 和 Bert (HuggingFace) 构建多类文本分类模型,但我的数据集非常不平衡。我使用了来自 Sklearn 的 SMOTE,以便为欠平衡类生成额外的样本(我总共有 45 个),当我使用来自 Bert Tokenizer 的输入 id 时,它工作得很好。
但是,我还希望能够对输入掩码 id 使用 smote,以允许模型确定填充值的位置。
我的问题是如何将 smote 用于输入 ID 和掩码 ID?到目前为止,我已经完成了以下操作,模型没有抱怨,但我不确定重新采样的掩码是否与重新采样的输入 id 行匹配。 Smote 需要两个输入,输入和标签,所以我用相同的随机状态复制了这个过程,并且只返回了所需的元素:
def smote(input_ids, input_masks, labels):
smote = SMOTE("not majority", random_state=27)
input_ids_resampled, labels_resampled = smote.fit_sample(input_ids, labels)
input_masks_resampled, _ = smote.fit_sample(input_masks, labels)
return input_ids_resampled, input_masks_resampled, labels_resampled
这可以接受吗?有没有更好的方法来做到这一点?
【问题讨论】:
标签: python keras scikit-learn huggingface-transformers smote