sea*_*enz 8 python scikit-learn multinomial
我正在像这样在sklearn中运行MultinomialNB之前标准化我的文本输入:
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)
Run Code Online (Sandbox Code Playgroud)
不幸的是,MultinomialNB不接受在LSA阶段创建的非负值。有什么解决办法吗?
我建议您不要将朴素贝叶斯与SVD或其他矩阵分解一起使用,因为朴素贝叶斯基于应用贝叶斯定理并在要素之间具有强烈的(朴素)独立性假设。使用其他分类器,例如RandomForest
我用这个结果尝试了这个实验:
vectorizer = TfidfVectorizer(max_df=0.5, stop_words='english', use_idf=True)
lsa = NMF(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)
Run Code Online (Sandbox Code Playgroud)
这是相同的情况,但是我使用NMP(非负矩阵分解)而不是SVD并获得了0.04%的精度。
将分类器MultinomialNB更改为RandomForest,我的准确度为79%。
因此,请更改分类器或不应用矩阵分解。
| 归档时间: |
|
| 查看次数: |
7946 次 |
| 最近记录: |