Sklearn实现朴素贝叶斯

#------------------------------Sklearn 实现朴素贝叶斯-----------------------

# 在scikit-learn中,一共有3个朴素贝叶斯的分类算法类。
# 分别是GaussianNB,MultinomialNB和BernoulliNB。
# 其中GaussianNB就是先验为高斯分布的朴素贝叶斯,
# MultinomialNB就是先验为多项式分布的朴素贝叶斯,
# 而BernoulliNB就是先验为伯努利分布的朴素贝叶斯。
#
# 这三个类适用的分类场景各不相同,一般来说,如果样本特征的分布大部分是连续值,使用GaussianNB会比较好。
# 如果如果样本特征的分大部分是多元离散值,使用MultinomialNB比较合适。
# 而如果样本特征是二元离散值或者很稀疏的多元离散值,应该使用BernoulliNB。

#----------------------------------案例一------------------------------------
#GaussianNB_高斯朴素贝叶斯
import numpy as np
from sklearn.naive_bayes import GaussianNB
from sklearn.naive_bayes import MultinomialNB
from sklearn.naive_bayes import BernoulliNB

X=np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]])
Y=np.array([1,1,1,2,2,2])

clf=GaussianNB()
clf.fit(X,Y)
print(clf.predict([[-0.8,-1]]))
print(clf.predict_proba([[-0.8,-1]]))
print(clf.predict_log_proba([[-0.8,-1]]))
'''
    在使用GaussianNB的fit方法拟合数据后,我们可以进行预测。此时预测有三种方法,
    包括predict,predict_log_proba和predict_proba。
    predict方法就是我们最常用的预测方法,直接给出测试集的预测类别输出。
    predict_proba则不同,它会给出测试集样本在各个类别上预测的概率。
    容易理解,predict_proba预测出的各个类别概率里的最大值对应的类别,也就是predict方法得到类别。
    predict_log_proba和predict_proba类似,它会给出测试集样本在各个类别上预测的概率的一个对数转化。
    转化后predict_log_proba预测出的各个类别对数概率里的最大值对应的类别,也就是predict方法得到类别。
'''
clf_pf = GaussianNB()
clf_pf.partial_fit(X, Y, np.unique(Y))
print(clf_pf.predict([[-0.8, -1]]))
'''
    GaussianNB一个重要的功能是有 partial_fit方法,这个方法的一般用在如果训练集数据量非常大,一次不能全部载入内存的时候。
    这时我们可以把训练集分成若干等分,重复调用partial_fit来一步步的学习训练集,非常方便。
'''

#MultinomialNB_多项朴素贝叶斯
X1=np.random.randint(5,size=(6,100))#6*100的数组,每个数不超过4
y1=np.array([1,2,3,4,5,6])
clf1=MultinomialNB()
clf1.fit(X1,y1)
print(clf1.predict(X1[2:3]))

#BernoulliNB_伯努利朴素贝叶斯
X2=np.random.randint(2,size=(6,100))
y2=np.array([1,2,3,4,5,4])
clf2=BernoulliNB()
clf2.fit(X2,y2)
print(clf2.predict(X2[2:3]))
 

你可能感兴趣的:(Sklearn)