大師兄的數(shù)據(jù)分析學(xué)習(xí)筆記(十六):分類模型(二)

大師兄的數(shù)據(jù)分析學(xué)習(xí)筆記(十五):分類模型(一)
大師兄的數(shù)據(jù)分析學(xué)習(xí)筆記(十七):分類模型(三)

二恕曲、樸素貝葉斯

1. 回顧概率
  • 概率P(A)是可能性判別的大小哺呜,概率值越大事件A越可能發(fā)生来涨,反之則越不可能發(fā)生软族。
  • 條件概率P(A|B)统翩,在一定條件(事件B發(fā)生的情況)下,事件A發(fā)生的概率山叮。
  • 聯(lián)合概率P(A,B)蔫敲,事件A和事件B共同發(fā)生的概率。
  • 條件概率聯(lián)合概率有如下關(guān)系:P(A,B) = P(A|B)P(B) = P(B|A)P(A)
  • 全概率公式P(B) = \sum{P(A_i)P(B|A_i)}
  • 綜合以上情況驻谆,可以得到貝葉斯公式P(B_i|A) = \frac{P(B_i)P(A|B_i)}{\sum{P(B_j)P(A|B_j)}} -> P(B|A) = \frac{P(A|B)P(B)}{P(A)}
  • 貝葉斯公式用來描述兩個條件概率之間的關(guān)系卵凑。
  • 從上面的公式可以看出,貝葉斯公式的分子可以看作聯(lián)合概率胜臊,而分母可以看作全概率勺卢。
2. 樸素貝葉斯的基本思想
  • 首先樸素貝葉斯Naive Bayes樸素Naive的含義是,數(shù)據(jù)中的特征相互獨(dú)立象对。
  • 假設(shè)1000個微信好友中黑忱,真實(shí)賬號比例C_0 = 0.89,虛假賬號比例C_1=0.11勒魔,且已知特征:
  • F_1:日志數(shù)量/注冊天數(shù)甫煞,離散化:F_1<=0.05, 0.05<F_1<0.2, F_1>=0.2
  • F_2:好友數(shù)量/注冊天數(shù),離散化:F_2<=0.1, 0.1<F_2<0.8, F_2>0.8
  • F_3:是否使用真實(shí)頭像冠绢,離散化: True = 1/False = 0
  • 如果某賬號狀態(tài):F_1 落入?yún)^(qū)間1, F_2落入?yún)^(qū)間1, F_3落入?yún)^(qū)間0
  • 已知條件:

真實(shí)賬號落入F_1的比例為0.5:P(F1=1|C_0)=0.5 / 虛假賬號落入F_1的比例為0.1:P(F_1|C_1)=0.1
真實(shí)賬號落入F_2的比例為0.7:P(F1=1|C_0)=0.7 / 虛假賬號落入F_1的比例為0.2:P(F_1|C_1)=0.2
真實(shí)賬號落入F_3的比例為0.2:P(F1=1|C_0)=0.2 / 虛假賬號落入F_1的比例為0.2:P(F_1|C_1)=0.9

  • 根據(jù)貝葉斯公式:P(C|F_1=1,F_2=1,F_3=0)=\frac{P(F_1=1,F_2=1,F_3=0|C)P(C)}{P(F_1=1,F_2=1,F_3=0)}
  • 由于樸素貝葉斯特征是相互獨(dú)立的抚吠,內(nèi)部轉(zhuǎn)化后:P(C|F_1=1,F_2=1,F_3=0)=\frac{P(F_1=1|C)P(F_2=1|C)P(F_3=0|C)P(C)}{P(F_1=1,F_2=1,F_3=0|C)P(C)}
  • 將已知條件帶入后,可以分別獲得真實(shí)賬號和虛假賬號的值:

P(F_1=1|C_0)P(F_2=1|C_0)P(F_3=0|C_0)P(C_0) = 0.5 \times 0.7 \times 0.2 \times 0.89 = 0.0623
P(F_1=1|C_1)P(F_2=1|C_1)P(F_3=0|C_1)P(C_1) = 0.1 \times 0.2 \times 0.9 \times 0.11 = 0.00198

  • 由于真實(shí)賬號的值大于虛假賬號的值弟胀,所以更傾向認(rèn)為賬號是真實(shí)賬號楷力。
3. 拉普拉斯平滑
  • 回到樸素貝葉斯公式:P(C|F_1=1,F_2=1,F_3=0)=\frac{P(F_1=1|C)P(F_2=1|C)P(F_3=0|C)P(C)}{P(F_1=1,F_2=1,F_3=0|C)P(C)}
  • 假設(shè)條件概率F_3=0|C_0:0/F_3=0|C_1:0導(dǎo)致P(F_3=0|C_0)=0/P(F_3=0|C_1)=0 并造成整個公式為0。
  • 為了避免這種情況孵户,需要將全部條件概率加1萧朝。
4. 代碼實(shí)現(xiàn)
>>>import os
>>>import pandas as pd
>>>import numpy as np
>>>from sklearn.model_selection import train_test_split
>>>from sklearn.naive_bayes import GaussianNB,BernoulliNB
>>>from sklearn.metrics import  accuracy_score,recall_score,f1_score

>>>models = []
>>>models.append(("GaussianNB",GaussianNB()))
>>>models.append(("BernoulliNB",BernoulliNB()))

>>>df = pd.read_csv(os.path.join(".", "data", "WA_Fn-UseC_-HR-Employee-Attrition.csv"))
>>>X_tt,X_validation,Y_tt,Y_validation = train_test_split(df.JobLevel,df.JobSatisfaction,test_size=0.2)
>>>X_train,X_test,Y_train,Y_test = train_test_split(X_tt,Y_tt,test_size=0.25)

>>>data = df[["JobSatisfaction","JobLevel"]]

>>>for clf_name,clf in models:
>>>    clf.fit(np.array(X_train).reshape(-1,1),np.array(Y_train).reshape(-1,1))
>>>    xy_lst = [(X_train,Y_train),(X_validation,Y_validation),(X_test,Y_test)]
>>>    for i in range(len(xy_lst)):
>>>        X_part = xy_lst[i][0]
>>>        Y_part = xy_lst[i][1]
>>>        Y_pred = clf.predict(np.array(X_part).reshape(-1,1))
>>>        print(i)
>>>        print(clf_name,"-ACC",accuracy_score(Y_part,Y_pred))
>>>        print(clf_name,"-REC",recall_score(Y_part,Y_pred,average='macro'))
>>>        print(clf_name,"-F1",f1_score(Y_part,Y_pred,average='macro'))
>>>       print("="*40)
0
GaussianNB -ACC 0.3253968253968254
GaussianNB -REC 0.25
GaussianNB -F1 0.12275449101796408
========================================
1
GaussianNB -ACC 0.2755102040816326
GaussianNB -REC 0.25
GaussianNB -F1 0.10799999999999998
========================================
2
GaussianNB -ACC 0.30952380952380953
GaussianNB -REC 0.25
GaussianNB -F1 0.11818181818181818
========================================
0
BernoulliNB -ACC 0.3253968253968254
BernoulliNB -REC 0.25
BernoulliNB -F1 0.12275449101796408
========================================
1
BernoulliNB -ACC 0.2755102040816326
BernoulliNB -REC 0.25
BernoulliNB -F1 0.10799999999999998
========================================
2
BernoulliNB -ACC 0.30952380952380953
BernoulliNB -REC 0.25
BernoulliNB -F1 0.11818181818181818
========================================
5. 生成模型與判別模型
  • 生成模型:通過求輸入與輸出的聯(lián)合概率分布,再求解類別歸類的概率夏哭,比如樸素貝葉斯模型检柬。
  • 判別模型:不通過聯(lián)合概率分布,直接可以獲得輸出對應(yīng)最大分類的概率竖配,比如KNN何址。
  • 生成模型相對判別模型對數(shù)據(jù)的要求更高酱固,速度也更快。
  • 判別模型相對生成模型對數(shù)據(jù)的容忍程度更高头朱,使用范圍更廣。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末龄减,一起剝皮案震驚了整個濱河市项钮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌希停,老刑警劉巖烁巫,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宠能,居然都是意外死亡亚隙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門违崇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阿弃,“玉大人,你說我怎么就攤上這事羞延≡荆” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵伴箩,是天一觀的道長入愧。 經(jīng)常有香客問我,道長嗤谚,這世上最難降的妖魔是什么棺蛛? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮巩步,結(jié)果婚禮上旁赊,老公的妹妹穿的比我還像新娘。我一直安慰自己渗钉,他們只是感情好彤恶,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鳄橘,像睡著了一般声离。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘫怜,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天术徊,我揣著相機(jī)與錄音,去河邊找鬼鲸湃。 笑死赠涮,一個胖子當(dāng)著我的面吹牛子寓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播笋除,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼斜友,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了垃它?” 一聲冷哼從身側(cè)響起鲜屏,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎国拇,沒想到半個月后洛史,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酱吝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年也殖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片务热。...
    茶點(diǎn)故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡忆嗜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出崎岂,到底是詐尸還是另有隱情霎褐,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布该镣,位于F島的核電站冻璃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏损合。R本人自食惡果不足惜省艳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫁审。 院中可真熱鬧跋炕,春花似錦、人聲如沸律适。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捂贿。三九已至纠修,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厂僧,已是汗流浹背扣草。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人辰妙。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓鹰祸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親密浑。 傳聞我的和親對象是個殘疾皇子蛙婴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容