首页 > 解决方案 > 当一个主题太宽而另一个主题很窄时,如何平衡两个主题的数据集?

问题描述

我有简单的预测,其中数据集由每个类的 2300 个样本组成 ei 总计 = 4600(二进制分类)。第一类包含除另一类非常狭窄的主题之外的所有新闻类型。我使用了 NLTK 的朴素贝叶斯分类器来执行任务,分类器采用单热编码的样本。尽管分类器在数据集的测试部分表现良好(94% 的准确率),但在分类抓取的新闻(在生产中)时却惨遭失败。 在此处输入图像描述 我认为问题是由于这两个类在现实中是不平衡的。如果是这个原因,那么,如何克服这个问题呢?如何平衡我的数据集?假设我可以为大类(A)额外收集许多样本,但为窄类(B)收集很少的样本。

标签: pythonnltkpredictiontext-classification

解决方案


您可以使用合成少数类过采样技术 SMOTE 来增加少数类的大小。

from imblearn.over_sampling import SMOTE
sm = SMOTE()
x1, y1 = sm.fit_sample(X_train, Y_train)

此外,朴素贝叶斯对于不平衡类不是一个好的算法,尝试使用随机森林(没有 SMOTE)或梯度提升树(有 SMOTE)。


推荐阅读