在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)