我正在开发一个产品分类器,它将接收与产品描述连接的标题,并从 8 个类别中预测其类别。我有每个班级的 1500 个项目,因此数据是平衡的。我当前的数据如下所示:
我然后使用具有以下参数的 TfidfVectorizer,然后构建、训练和测试 LogisticRegression 模型。
corpus_train, corpus_test, y_train, y_test = train_test_split(data['Name_Description'],
data['Category'],
test_size=0.2,
random_state=0)
vectorizer = TfidfVectorizer(stop_words=stopwords.words('english'),
ngram_range=(1, 3),
min_df=3,
analyzer='word')
X_train = vectorizer.fit_transform(corpus_train)
X_test = vectorizer.transform(corpus_test)
classifier = LogisticRegression(C=10, max_iter=1000)
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
我得到的结果如下:
训练准确度:0.99875
测试准确度:0.915
所以模型有点过拟合。这些是我尝试过的东西:
SGDClassifier
和 LinearSVM
= 1% 增益)。其他分类器也好不到哪里去。以下是错误分析中的几张图片:
预测:食物
对于第一个单词,婴儿出现在描述中,但它仍然预测美丽,因为其他词给了它更高的分数。在另一个中,电池这个词与家庭有关,但它没有预测到这一点。有没有办法让经常出现的词有更大的影响?
我想不出如何进一步改进模型的想法。有什么想法吗?
这里是整个笔记本的链接:https://colab.research.google.com/drive/1fGzVciF30uRTvhGpsKqCJyIv0n46eolU?usp=sharing