本文實例講述了Python實現樸素貝葉斯分類器的方法。分享給大家供大家參考,具體如下:
貝葉斯定理是通過對觀測值概率分布的主觀判斷(即先驗概率)進行修正的定理,在概率論中具有重要地位。
先驗概率分布(邊緣概率)是指基于主觀判斷而非樣本分布的概率分布,后驗概率(條件概率)是根據樣本分布和未知參數的先驗概率分布求得的條件概率分布。
貝葉斯公式:
P(A∩B) = P(A)*P(B|A) = P(B)*P(A|B)
變形得:
P(A|B)=P(B|A)*P(A)/P(B)
其中
P(A)
是A的先驗概率或邊緣概率,稱作"先驗"是因為它不考慮B因素。 P(A|B)
是已知B發生后A的條件概率,也稱作A的后驗概率。 P(B|A)
是已知A發生后B的條件概率,也稱作B的后驗概率,這里稱作似然度。 P(B)
是B的先驗概率或邊緣概率,這里稱作標準化常量。 P(B|A)/P(B)
稱作標準似然度。樸素貝葉斯分類器在估計類條件概率時假設屬性之間條件獨立。
首先定義
x = {a1,a2,...}
為一個樣本向量,a為一個特征屬性 div = {d1 = [l1,u1],...}
特征屬性的一個劃分 class = {y1,y2,...}
樣本所屬的類別算法流程:
(1) 通過樣本集中類別的分布,對每個類別計算先驗概率p(y[i])
(2) 計算每個類別下每個特征屬性劃分的頻率p(a[j] in d[k] | y[i])
(3) 計算每個樣本的p(x|y[i])
p(x|y[i]) = p(a[1] in d | y[i]) * p(a[2] in d | y[i]) * ...
樣本的所有特征屬性已知,所以特征屬性所屬的區間d已知。
可以通過(2)確定p(a[k] in d | y[i])
的值,從而求得p(x|y[i])
。
(4) 由貝葉斯定理得:
p(y[i]|x) = ( p(x|y[i]) * p(y[i]) ) / p(x)
因為分母相同,只需計算分子。
p(y[i]|x)
是觀測樣本屬于分類y[i]的概率,找出最大概率對應的分類作為分類結果。
示例:
導入數據集
{a1 = 0, a2 = 0, C = 0} {a1 = 0, a2 = 0, C = 1}{a1 = 0, a2 = 0, C = 0} {a1 = 0, a2 = 0, C = 1}{a1 = 0, a2 = 0, C = 0} {a1 = 0, a2 = 0, C = 1}{a1 = 1, a2 = 0, C = 0} {a1 = 0, a2 = 0, C = 1}{a1 = 1, a2 = 0, C = 0} {a1 = 0, a2 = 0, C = 1}{a1 = 1, a2 = 0, C = 0} {a1 = 1, a2 = 0, C = 1}{a1 = 1, a2 = 1, C = 0} {a1 = 1, a2 = 0, C = 1}{a1 = 1, a2 = 1, C = 0} {a1 = 1, a2 = 1, C = 1}{a1 = 1, a2 = 1, C = 0} {a1 = 1, a2 = 1, C = 1}{a1 = 1, a2 = 1, C = 0} {a1 = 1, a2 = 1, C = 1}
計算類別的先驗概率
P(C = 0) = 0.5P(C = 1) = 0.5
計算每個特征屬性條件概率:
P(a1 = 0 | C = 0) = 0.3P(a1 = 1 | C = 0) = 0.7P(a2 = 0 | C = 0) = 0.4P(a2 = 1 | C = 0) = 0.6P(a1 = 0 | C = 1) = 0.5P(a1 = 1 | C = 1) = 0.5P(a2 = 0 | C = 1) = 0.7P(a2 = 1 | C = 1) = 0.3
新聞熱點
疑難解答