微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MultinomialNB 如何计算概率预测?

如何解决MultinomialNB 如何计算概率预测?

来自 scikit-learn 的

MultinomialNB 为一些简单的用例提供了意想不到的输出

import numpy as np
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer

docs = ['aa','aa','','aa']
y    = np.array([1,1,2])

vec = CountVectorizer()
X = vec.fit_transform(docs)
clf = MultinomialNB(alpha=1e-10).fit(X,y)
X_test = vec.transform(['aa'])
print(clf.predict_proba(X_test)[0,0])
# >> 0.8

鉴于我理解 P(y|X) 在这种情况下近似为 P(x='aa'|y=1) * P(y=1) = 2/4 * 4/5 = 0.4,因此我期望 0.4。所以 P(X) 被忽略

现在,documentationthis stackoverflow discussion 让我觉得计算真的是 P(x='aa'| all words in y=1 samples) * P(y=1) = 2/2 * 4/5 = 0.8

但是,如果您运行上面相同的示例,但使用 docs = ['aa','bb','aa'],这将不起作用,它给出 0.6666667 作为输出

在这个新案例中,我希望两个公式都给出 (2/4 * 2/4) * 4/5 = 0.2我有 (2/4 * 2/4),因为在独立性假设下,P(X|y) 项是当 y=1 时有“aa”和没有“bb”的乘积。

感谢任何澄清。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。