0

预期的结果应该是什么

当我手动计算时,我得到P(y=1|x=1) > P(y=0|x=1)。但模型预测输出为 0。

from sklearn.naive_bayes import GaussianNB,MultinomialNB
xx = [[1],[1],[1],[2],[2],[3]]
yy = [1,1,1,0,0,0]
# clf = GaussianNB()
clf = MultinomialNB()
clf.fit(xx,yy)
print(clf.predict([[1]]))

我还尝试将 alpha 参数从 1 更改为 1000。对于输入 = 1,输出仍然为 0。

4

2 回答 2

0

对于多项式朴素贝叶斯,该模型假设特征是从多项式分布中计数的。下面的代码应该清楚地说明这一点:

import numpy as np
from sklearn.naive_bayes import MultinomialNB
from sklearn.preprocessing import MultiLabelBinarizer

xx = [[1],[1],[1],[2],[2],[3]]
yy = [1,1,1,0,0,0]

mlb = MultiLabelBinarizer()
xxtransformed =  mlb.fit_transform(xx)
print(xxtransformed)
# [[1 0 0]
# [1 0 0]
# [1 0 0]
# [0 1 0]
# [0 1 0]
# [0 0 1]]

clf = MultinomialNB()
clf.fit(xxtransformed,yy)
print(mlb.transform(np.array([[1]])))
#[[1 0 0]]
print(clf.predict(mlb.transform(np.array([[1]]))))
#[1]

事实上,我们得到了 1 的预期预测

于 2019-08-28T13:28:57.093 回答
0

你好 Dbaker 这背后的原因是什么......为什么在 Bhanu raja 发布之前它不起作用以及为什么你的答案起作用......

于 2019-08-29T03:34:19.227 回答