gpt4 book ai didi

python - 处理 sklearn MultinomialNB 中的负值

转载 作者:太空狗 更新时间:2023-10-30 00:07:08 27 4
gpt4 key购买 nike

在 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)

不幸的是,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)

这是相同的情况,但我使用 NMP(非负矩阵分解)代替 SVD 并获得了 0.04% 的准确度。

将分类器 MultinomialNB 更改为 RandomForest,我得到了 79% 的准确率。

因此更改分类器或不应用矩阵分解。

关于python - 处理 sklearn MultinomialNB 中的负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24169238/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com