在sklearn中运行多项式nb之前,我正在规范化文本输入,如下所示:
vectorizer = TfidfVectorizer(max_df=0.5, stop_words='english', use_idf=True)
lsa = TruncatedSVD(n_components=100)
mnb = MultinomialNB(alpha=0.01)
train_text = vectorizer.fit_transform(raw_text_train)
train_text = lsa.fit_transform(train_text)
train_text = Normalizer(copy=False).fit_transform(train_text)
mnb.fit(train_text, train_labels)
不幸的是,多项式nb不接受LSA阶段创建的非负值。有什么解决办法吗?
我建议您不要将朴素Bayes与SVD或其他矩阵分解结合使用,因为基于应用Bayes定理的朴素Bayes在特征之间具有强(朴素)独立性假设。使用其他分类器,例如RandomForest
我试过这个实验,结果是:
这是相同的情况,但我使用NMP(非负矩阵分解)代替SVD,得到0,04%的准确率。
改变RandomForest的分类器多项式nb,我得到了79%的准确率。
因此更改分类器或不应用矩阵分解。
相关问题 更多 >
编程相关推荐