Python 当一个主题太宽而另一个主题很窄时,如何平衡两类主题数据集?
我有一个简单的预测,其中数据集由每个类别2300个样本组成,e.I.总数=4600(二元分类)。第一个类包含除另一个类之外的所有新闻类型,这是一个非常狭窄的主题。我使用了NLTK的方法来执行这个任务,分类器对样本进行一次热编码。尽管分类器在数据集的测试部分表现良好(准确率为94%),但在对爬网新闻进行分类(生产中)时却失败得很惨。Python 当一个主题太宽而另一个主题很窄时,如何平衡两类主题数据集?,python,nltk,prediction,text-classification,Python,Nltk,Prediction,Text Classification,我有一个简单的预测,其中数据集由每个类别2300个样本组成,e.I.总数=4600(二元分类)。第一个类包含除另一个类之外的所有新闻类型,这是一个非常狭窄的主题。我使用了NLTK的方法来执行这个任务,分类器对样本进行一次热编码。尽管分类器在数据集的测试部分表现良好(准确率为94%),但在对爬网新闻进行分类(生产中)时却失败得很惨。 我认为这个问题是因为这两个类在现实世界中是不平衡的。如果这是原因,那么,如何克服这个问题呢?如何平衡我的数据集?假设我可以为宽类(A)另外收集许多样本,但为窄类(B)
我认为这个问题是因为这两个类在现实世界中是不平衡的。如果这是原因,那么,如何克服这个问题呢?如何平衡我的数据集?假设我可以为宽类(A)另外收集许多样本,但为窄类(B)收集很少的样本。您可以使用合成少数过采样技术SMOTE来增加少数类的大小
from imblearn.over_sampling import SMOTE
sm = SMOTE()
x1, y1 = sm.fit_sample(X_train, Y_train)
另外,对于不平衡类,朴素贝叶斯不是一个好的算法,尝试使用随机林(无SMOTE)或梯度增强树(有SMOTE)。那么SMOTE是一个分类器吗?不,分类器是朴素贝叶斯、梯度增强树、神经网络、支持向量机、逻辑回归、决策树,等等。SMOTE是一种考虑欧几里德距离的算法,可以在少数类中创建更多的示例,遵循现有少数类的类似分布。我已经理解了SMOTE的基本概念,但是如何将SMOTE应用于使用一种热编码表示的样本?或者我应该用不同的方式表示它们?然后你可以使用EM(期望最大化)算法。