朴素貝葉斯分類器


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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM