python - 如何避免短文本分类中的实体过拟合?
问题描述
我正在对标题进行二元分类。此标题介于 1 到 7 个字之间,有时还包括创建它们的人的姓名或位置。我能够以 81% 的准确率进行分类,但是当我检查影响每个分类组的特征(单词)时,我注意到许多名称对特定组的分类最好,因为它们随机只出现在 1 个组中。
我虽然大约有 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"])
还有一些 na,es 示例功能:
+7.323 peter
+6.143 ing
+6.033 enabl
+5.918 anand
+5.893 jose
解决方案
推荐阅读
- postgresql - 表 X 上的更新或删除违反了表 Z 上的外键约束 Y
- graphics - 预乘 alpha 像素如何处理高于 alpha 的 RGB 值
- javascript - 你如何让机器人检测它发送的嵌入并允许用户在 Discord.js 中使用特定命令?
- image - 过滤二值图像以仅保留线条
- jsf - 当我想在输入旁边时,屏幕右上角显示错误消息
- javascript - BITFIELD_INVALID Discord.js V12
- ansible - Ansible如何检查缓冲区中是否存在文件
- android - 如何将 ACTION_OPEN_DOCUMENT_TREE 与创建目录一起使用?
- javascript - 安全规则无法识别初始 Firebase 登录身份验证
- php - 来自使用 Laravel Mail 的地址的自定义电子邮件不起作用