sklearn ComplementNB:可分离数据仅预测类0
下面的内容展示了一个平衡的一维数据,这些数据可以被 sklearn GaussianNB
完美地分开。但是,为什么用 sklearn ComplementNB
处理同样的数据时,分类结果全都是零呢?
from sklearn.naive_bayes import GaussianNB
from sklearn.naive_bayes import ComplementNB
import numpy as np
N = 20
np.random.seed(9)
pos = np.random.uniform(size = N, low = 0.7, high = 0.8).reshape(-1, 1)
neg = np.random.uniform(size = N, low = 0.4, high = 0.5).reshape(-1, 1)
X = np.r_[pos, neg]
Y = np.array([1] * N + [0] * N)
gnb = GaussianNB()
cnb = ComplementNB()
gnb.fit(X,Y)
cnb.fit(X,Y)
#predict training data
print(gnb.predict(X))
print(cnb.predict(X))
高斯朴素贝叶斯模型的预测是100%正确的,而补充朴素贝叶斯模型却只预测出零。这是为什么呢?
[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]