不能使用 sklearn.naive_bayes MultinomialNB 从一个属性进行预测

数据挖掘 scikit-学习
2022-02-21 03:29:33

我试图通过学习一个属性来为朴素贝叶斯创建一个简单的例子。似乎我不能用sklearn.naive_bayes.MultinomialNB一个属性来预测。这是因为predict_proba对于每个输入都是相同的。

这是代码:

import numpy as np
X = np.array([1, 1, 1, 0, 0, 1, 1])
X = X.reshape(-1,1)
y = np.array([0, 0, 0, 0, 1, 1, 1])

from sklearn.naive_bayes import MultinomialNB
clf = MultinomialNB()
clf.fit(X, y)

print(clf.predict(X))
print(clf.predict_proba(X))

及其结果。

[0 0 0 0 0 0 0]
[[0.57142857 0.42857143]
 [0.57142857 0.42857143]
 [0.57142857 0.42857143]
 [0.57142857 0.42857143]
 [0.57142857 0.42857143]
 [0.57142857 0.42857143]
 [0.57142857 0.42857143]]
1个回答

如果您的问题如您所说,您可能需要重新考虑您的朴素贝叶斯模型。MultinomialNB 似乎不适合您的情况。您可以使用使用高斯分布的朴素贝叶斯分类器。

from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
gnb.fit(X, y)
print(gnb.predict(X))
print(gnb.predict_proba(X))