Sklearn實現樸素貝葉斯

2021-10-01 23:58:09 字數 2076 閱讀 9149

#------------------------------sklearn 實現樸素貝葉斯-----------------------

# 在scikit-learn中,一共有3個樸素貝葉斯的分類演算法類。

# 分別是gaussiannb,multinomialnb和bernoullinb。

# 其中gaussiannb就是先驗為高斯分布的樸素貝葉斯,

# multinomialnb就是先驗為多項式分布的樸素貝葉斯,

# 而bernoullinb就是先驗為伯努利分布的樸素貝葉斯。

## 這三個類適用的分類場景各不相同,一般來說,如果樣本特徵的分布大部分是連續值,使用gaussiannb會比較好。

# 如果如果樣本特徵的分大部分是多元離散值,使用multinomialnb比較合適。

# 而如果樣本特徵是二元離散值或者很稀疏的多元離散值,應該使用bernoullinb。

#----------------------------------案例一------------------------------------

#gaussiannb_高斯樸素貝葉斯

import numpy as np

from sklearn.*****_bayes import gaussiannb

from sklearn.*****_bayes import multinomialnb

from sklearn.*****_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實現樸素貝葉斯

sklearn 實現樸素貝葉斯 在scikit learn中,一共有3個樸素貝葉斯的分類演算法類。分別是gaussiannb,multinomialnb和bernoullinb。其中gaussiannb就是先驗為高斯分布的樸素貝葉斯,multinomialnb就是先驗為多項式分布的樸素貝葉斯,而be...

sklearn之樸素貝葉斯實戰

multinomialnb 實現了資料服從多項式分布時的貝葉斯演算法。import numpy as np 隨機產生0 4之間的整數,產六組,一組100個 x np.random randint 5,size 6,10 y np.array 1,2,3,4,5,6 from sklearn.baye...

sklearn調包俠之樸素貝葉斯

樸素貝葉斯演算法常用於文件的分類問題上,但計算機是不能直接理解文件內容的,怎麼把文件內容轉換為計算機可以計算的數字,這是自然語言處理 nlp 中很重要的內容。tf idf方法資料匯入和tf idf 在sklearn中,通過load files方法可以將子目錄的名字轉換為文件類別 target 將目錄...