朴素贝叶斯分类器

时间:2022-02-08 20:41:02

在scikit-learn中,提供了3中朴素贝叶斯分类算法:GaussianNB(高斯朴素贝叶斯)、MultinomialNB(多项式朴素贝叶斯)、BernoulliNB(伯努利朴素贝叶斯)

简单介绍:

  • 高斯朴素贝叶斯:适用于连续型数值,比如身高在160cm以下为一类,160-170cm为一个类,则划分不够细腻。
  • 多项式朴素贝叶斯:常用于文本分类,特征是单词,值是单词出现的次数
  • 伯努利朴素贝叶斯:所用特征为全局特征,只是它计算的不是单词的数量,而是出现则为1,否则为0。也就是特征等权重
import numpy as np
from sklearn.naive_bayes import GaussianNB, MultinomialNB, BernoulliNB

X = np.array([[1,2,3,4],[1,3,4,4],[2,4,5,5],[2,5,6,5],[3,4,5,6],[3,5,6,6]])
y = np.array([1,1,4,2,3,3])

'''sklearn.naive_bayes.GaussianNB(priors=None)'''
clf = GaussianNB()#默认priors=None
clf.fit(X,y) #sample_weight=np.array([0.05,0.05,0.1,0.1,0.1,0.2,0.2,0.2])

#clf.set_params(priors=[0.625, 0.375])
clf.priors #无返回值,因priors=None
clf.class_prior_
clf.class_count_
clf.theta_
clf.sigma_

'''sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
alpha添加拉普拉修/Lidstone平滑参数'''
clf = MultinomialNB(alpha=2.0, fit_prior=True)
clf.fit(X,y)
#clf.partial_fit(X,y,classes=[1,2]) #数据量大时,增量训练,X可稀疏,初次制定class

clf.coef_
clf.intercept_
clf.class_count_
clf.feature_count_
clf.class_log_prior_
clf.feature_log_prob_ #特征概率对数值,(n_classes, n_features)

'''sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True,class_prior=None)'''
clf = BernoulliNB(alpha=2.0,binarize = 3.0,fit_prior=True)
clf.fit(X,y)

clf.class_count_
clf.feature_count_
clf.class_log_prior_
clf.feature_log_prob_ #特征概率对数值,(n_classes, n_features)

# 预测
clf.predict([[-6,-6],[4,5]])
clf.predict_proba([[-6,-6],[4,5]])
clf.predict_log_proba([[-6,-6],[4,5]])
clf.score(X,y)