如何使用 SVM 提高文本分类和映射的准确性?

数据挖掘 Python 分类 支持向量机
2022-02-25 22:02:58

我正在解决一个问题,我需要预测与训练数据文件中另一个文本相对应的文本。例如:如果我在我的一个列中具有类似于软件的值,并且另一个相应的列为其保存一个值 adobe pdf,那么我的算法也应该能够为我的测试数据预测相同的值。例如,如果我的测试数据有 Tableau,那么预测的类别应该是与之对应的软件。这里是软件、税收等数据选项,与它们对应的是子类别。我的工作是根据我的测试数据中的主要类别预测正确的子类别。

我应该怎么做才能提高我的准确性?n_ngram 对准确性的影响很大吗?我可以看到一些但不是很多。

from sklearn.featureextraction.text import CountVectorizer from sklearn.featureextraction.text import TfidfTransformer
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import LinearSVC
#preparing the final pipeline using the selected parameters
model = Pipeline([('vectorizer', CountVectorizer(ngramrange=(1,4))), ('tfidf', TfidfTransformer(useidf=True)),
('clf', OneVsRestClassifier(LinearSVC(class_weight="balanced")))])

我已经使用 SVM 和线性 SVC 进行分类,但我的准确率只有 78%。我的训练数据集是德语,没有停用词,因为这些是类别而不是纯长文本。

1个回答

对于高维文本数据,一个通用的好方法是使用词嵌入和神经网络。如果您想坚持使用您正在使用的模型和方法,我建议您不要过度设计您的数据集,首先尝试使用简单的词袋方法,然后在交叉验证时尝试不同的 n-gram、pos-tagging 但我怀疑非常高维的特征空间正在降低您的准确度得分。