如何避免短文本分类中的实体过度拟合?

时间:2019-05-20 09:23:52

标签: python scikit-learn logistic-regression cross-validation text-classification

我正在对标题进行二进制分类。这些标题介于1到7个字之间,有时还会包含创建这些标题的人的姓名或位置。 我能够以81%的精度进行分类,但是当我检查对每个分类组有影响的特征(单词)时,我注意到许多名称对某个特定组的分类最好,因为它们随机地仅出现在一组中。

我虽然有2种解决方案: 1.使用NER过滤实体 2.增加正则化(仍然没有成功)

处理这种过度拟合的最佳方法是什么? 如果要提高lambda值是答案,那么如何使用sklearn LogisticRegressionCV做到这一点?

相关代码:

from sklearn.linear_model import LogisticRegressionCV
X_train_stem_u = vectorizer_stem_u.fit_transform(X_train)

X_prepeared_data_train = X_train_stem_u 
selected_vectorizer = vectorizer_stem_u 

clf =  LogisticRegressionCV(cv=5,max_iter=800).fit(X_prepeared_data_train, y_train)#solver='liblinear',penalty='l1',

X_prepeared_data_test = selected_vectorizer.transform(X_test) 



predicted = clf.predict(X_prepeared_data_test)
print(np.mean(predicted == y_test))

import eli5

eli5.show_weights(clf, vec=selected_vectorizer, top=1500,
                  target_names=["group1","group2"])

还有一些示例功能:

+7.323  peter
+6.143  ing
+6.033  enabl
+5.918  anand
+5.893  jose 

0 个答案:

没有答案