In [1]:
import numpy as np
from sklearn.naive_bayes import MultinomialNB,BernoulliNB
import warnings
warnings.filterwarnings(action='ignore') #不输出警告

In [2]:
x = np.random.randint(5,size=(50,20))
y = np.array(range(50)).reshape(50,1)
clf = MultinomialNB()
clf.fit(x,y)


Out[2]:
MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)

In [3]:
clf.predict(x[22].reshape(1,-1))   #predict expects 2D array


Out[3]:
array([22])

值得注意的是,多项式模型在训练一个数据集结束后可以继续训练其他数据集而无需将两个数据集放在一起进行训练。在sklearn中,MultinomialNB()类的partial_fit()方法可以进行这种训练。这种方式特别适合于训练集大到内存无法一次性放入的情况。

在第一次调用partial_fit()时需要给出所有的分类标号。


In [4]:
clf_1 = BernoulliNB()
clf_1.fit(x,y)


Out[4]:
BernoulliNB(alpha=1.0, binarize=0.0, class_prior=None, fit_prior=True)

In [5]:
clf_1.predict(x[22].reshape(1,-1))


Out[5]:
array([22])