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 (将#修改为@)