使用scikit学习0.10
为什么会出现以下简单的代码片段:
from sklearn.naive_bayes import *
import sklearn
from sklearn.naive_bayes import *
print sklearn.__version__
X = np.array([ [1, 1, 1, 1, 1],
[0, 0, 0, 0, 0] ])
print "X: ", X
Y = np.array([ 1, 2 ])
print "Y: ", Y
clf = BernoulliNB()
clf.fit(X, Y)
print "Prediction:", clf.predict( [0, 0, 0, 0, 0] )
打印出“1”的答案?在[0,0,0,0,0]=>;2上训练了模型之后,我期待“2”作为答案。
为什么把Y替换成
Y = np.array([ 3, 2 ])
给出另一个“2”类的答案(正确的答案)?这不只是一个班级标签吗?
有人能解释一下吗?
默认情况下,alpha是一个平滑参数。正如msw所说,你的训练设备非常小。由于平滑,没有留下任何信息。如果将alpha设置为一个很小的值,则应该会看到预期的结果。
您的训练集太小,如所示
会产生
这表明分类器将所有分类视为等价的。与文档中显示的BernoulliNB的样本进行比较,该样本的
predict_proba()
产生:我将
numpy.exp()
应用于结果以使其更可读。很明显,概率甚至不接近相等,事实上很好地分类了训练集。相关问题 更多 >
编程相关推荐