樸素貝葉斯模型的泛化能力比線性模型稍差,但它的訓練速度更快。它通過單獨檢視每個特徵來學習引數,並從每個特徵中收集簡單的類別統計資料。想要作出**,需要將資料點與每個類別的統計資料進行比較,並將最匹配的類別作為**結果。
gaussiannb應用於任意連續資料,它儲存每個類別中每個特徵的平均值和標準差,主要用於高維資料。
bernoullinb假定輸入資料為二分類資料,分別計算每個類別中每個特徵不為0的元素個數。
import numpy as np
#四個資料點,每個資料點有4個二分類特徵,一共有兩個類別:0和1
x = np.array([[0,1,0,1],
[1,0,1,1],
[0,0,0,1],
[1,0,1,0]])
y = np.array([0,1,0,1])
#對於類別0(第1、3個資料點),第乙個特徵有2個零、0個不為零,第二個特徵有1個零、1個不為零
#計算每個類別中非零元素個數
counts = {}
for label in np.unique(y):
#對每個類別遍歷
counts[label] = x[y == label].sum(axis = 0)
print("feature counts:\n{}".format(counts))
#np.array([0,1,0,1]) == 0
multinomialnb假定輸入資料為計數資料(即每個特徵代表某個物件的整數計數,比如乙個單詞在句子裡的出現次數),它計算每個類別中每個特徵的平均值。
mumtinomialnb和bernoullinb都只有乙個引數alpha,用於控制模型複雜度。演算法向資料中新增alpha這麼多的虛擬資料點,這些點對所有特徵都取正值,可以將統計資料平滑化。演算法效能對alpha值的魯棒性較好。這兩種模型廣泛用於稀疏計算資料,如文字。
python中numpy庫unique函式解析
python sum()函式和.sum(axis=0)函式的使用
演算法的魯棒性
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實現樸素貝葉斯
sklearn 實現樸素貝葉斯 在scikit learn中,一共有3個樸素貝葉斯的分類演算法類。分別是gaussiannb,multinomialnb和bernoullinb。其中gaussiannb就是先驗為高斯分布的樸素貝葉斯,multinomialnb就是先驗為多項式分布的樸素貝葉斯,而be...
Sklearn實現樸素貝葉斯
sklearn 實現樸素貝葉斯 在scikit learn中,一共有3個樸素貝葉斯的分類演算法類。分別是gaussiannb,multinomialnb和bernoullinb。其中gaussiannb就是先驗為高斯分布的樸素貝葉斯,multinomialnb就是先驗為多項式分布的樸素貝葉斯,而be...