假 設事
件b1,
b2..
.bn是
樣本空間
ω的乙個
分割,且
他們各自
的概率為
p(b1
),p(
b2),
p(bn
)假設事件 b_1,b_2...b_n 是樣本空間ω的乙個分割,且他們各自的概率為p(b_1),p(b_2),p(b_n)
假設事件b1
,b2
...
bn是
樣本空間
ω的乙個
分割,且
他們各自
的概率為
p(b1
),p
(b2
),p(
bn)
a是事件ω中的乙個事件,則在a給定的條件下,事件bi的條件概率如下:
bi 通常視為a發生的」原因「,p(bi)稱為先驗概率(主觀概率),表示各種原因發生的可能性大小;p(bi|a)(i=1,2…)則反映當出現結果a之後,再對各種「原因」概率的新認識,故稱後驗概率。
大家都知道狼來了的故事,我們就有貝葉斯的思想來解釋一下這個故事:
在最開始的時候,大家對於放羊娃的認識不夠深刻,主觀上認為放羊娃說真話(記為事件b1)和說假話(記為事件b2)的概率相同。即:
p (b
1)=p
(b2)
=0.5
p(b_1) = p(b_2) = 0.5
p(b1)
=p(b
2)=
0.5再假設狼來了(記為事件a),說謊話喊狼來了時,狼來的概率為1/3,說真話喊狼來了時,狼來的概率是2/3,即:
p (a
∣b1)
=1/3
;p(a
∣b2)
=2/3
p(a|b_1) = 1/3 ; p(a|b_2) =2/3
p(a∣b1
)=1
/3;p
(a∣b
2)=
2/3第一次
村民上山
打狼,狼
沒來(記
為事件a
‾),此
時村民們
對放羊娃
就有了新
的認識:
第一次村民上山打狼,狼沒來(記為事件\overline),此時村民們對放羊娃就有了新的認識:
第一次村民上
山打狼,
狼沒來(
記為事件
a),此
時村民們
對放羊娃
就有了新
的認識:
狼沒來的情況下小孩說謊了(在村民們的主觀印象上,小孩說謊的概率增加了):
p (b
1∣a‾
)=p(
a‾∣b
1)p(
b1)∑
k=1n
p(a‾
∣bi)
p(bi
)=811
p(b_1|\overline)=\frac|b_1)p(b_1)}^n p(\overline|b_i)p(b_i)} = \frac
p(b1∣
a)=∑
k=1n
p(a
∣bi
)p(b
i)p
(a∣b
1)p
(b1
)=1
18
隨著小孩說謊的次數增加,村民們對於小孩說謊的主觀概率也不斷增加,當這個概率增加到一定程度時計算小孩說真話,村民們就不會再相信他。
之前提到的兩種判別分析方法都非常簡單,實用,但是也存在著一定的缺點:一是判別方法與各個總體出現的概率大小無關,而是與錯判後造成的損失無關。貝葉斯判別則考慮了這兩種情況:貝葉斯判別假定對樣本有一定的認知(先驗概率),然後計算得出後驗概率並進行統計推斷的判別方法。
由於過程較長,公式比較多,直接上書
本案例使用的資料為鳶尾花資料集
def main(args: array[string]): unit = )
.reducebykey((d1, d2) => )
.mapvalues(tp => )
val covbroad = sc.broadcast(covmatrix.collect())
val predictudf = udf((seq: seq[double]) => )
val pm = dist.map(x => math.exp(x._2)).sum
// 計算後驗概率
dist.map(tp => )
})irisfeatrus
.withcolumn("prediction", predictudf($"features"))
.show(truncate = false)
spark.stop()
}
結果檢視:從結果看出,分類效果還是很好的
|class |features |prediction |
+-----------+--------------------+-----------+
|iris-setosa|[5.1, 3.5, 1.4, 0.2]|iris-setosa|
|iris-setosa|[4.9, 3.0, 1.4, 0.2]|iris-setosa|
|iris-setosa|[4.7, 3.2, 1.3, 0.2]|iris-setosa|
由於作者水平有限,在介紹及實現過程中難免有紕漏之處,歡迎細心的朋友指 判別三連之二 Spark 分布式實現距離判別分析
設有兩個總體g1,g2,從第乙個總體抽取n個樣本,從第二個總體中抽取m個樣本,每個樣本都有p個測量指標。取任一樣本實測指標為x x1,x2,xp 分別計算x到兩個總體的距離d1,d2,按距離最近準則判別歸類。距離計算公式 馬氏距離 判別公式 某商場從市場隨機抽取20中品牌的電視機進行調查,其中13中...
單身三連之三
這是最終章,永久的思念。題目大意 有n張牌,每張牌兩面都有數字,範圍都在1到2n之間,求最少的反轉次數,使得每張牌朝上的一面的數字各不相同,並求出達到這個效果的方案數。多測,初始時每張牌正面朝上,無解輸出 1 1 題解 20 資料 n 20 直接搜尋即可。100 資料 n 1 105 搜尋複雜度不允...
Redis之(三) 分布式鎖
分布式應用進行邏輯處理時經常會遇到併發問題。對於單程序的併發場景,我們可以使用語言或者類庫提供的鎖,而對於分布式場景,我們可以使用分布式鎖。分布式鎖的實現方法也有很多,memcached分布式鎖 zookeeper分布式鎖等等,當然,redis分布式鎖也是很有代表性的分布式鎖的實現方式。例子 某個操...