sklearn庫學習之樸素貝葉斯分類器

2021-08-29 07:59:27 字數 1020 閱讀 3143

樸素貝葉斯模型的泛化能力比線性模型稍差,但它的訓練速度更快。它通過單獨檢視每個特徵來學習引數,並從每個特徵中收集簡單的類別統計資料。想要作出**,需要將資料點與每個類別的統計資料進行比較,並將最匹配的類別作為**結果。

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...