精品国产亚洲一区二区三区|亚洲国产精彩中文乱码AV|久久久久亚洲AV综合波多野结衣|漂亮少妇各种调教玩弄在线

<blockquote id="ixlwe"><option id="ixlwe"></option></blockquote>
  • <span id="ixlwe"></span>

  • <abbr id="ixlwe"></abbr>

    基于樸素貝葉斯自動過濾垃圾廣告

    貝葉斯定理

    貝葉斯定理是關(guān)于事件A和事件B的條件概率。先認(rèn)識一下這幾個符號:

    P(A|B):表示在事件B發(fā)生的情況下事件A發(fā)生的概率

    P(B|A):表示在事件A發(fā)生的情況下事件B發(fā)生的概率

    通常在已知P(A|B)的情況下,計算P(B|A)的值,此時P(A|B)可以稱為先驗概率,P(B|A)稱為后驗概率。

    這個時候貝葉斯定理就登場啦:

    通過這個定理我們就可以計算出P(B|A)的值。舉個栗子:

    一座別墅在過去的 20 年里一共發(fā)生過 2 次被盜,別墅的主人有一條狗,狗平均每周晚上叫 3 次,在盜賊入侵時狗叫的概率被估計為 0.9,在狗叫的時候發(fā)生入侵的概率是多少?

    我們假設(shè) A 事件為狗在晚上叫,B 為盜賊入侵,則以天為單位統(tǒng)計,P(A) = 3/7,P(B) = 2/(20*365) = 2/7300,P(A|B) = 0.9,按照公式很容易得出結(jié)果:P(B|A) = 0.9*(2/7300) / (3/7) = 0.00058

    貝葉斯定理延伸

    其實到這里只是貝葉斯定理的簡單版,下面來看看它的一般版。一般事件B的發(fā)生不止有一個影響因素,比如事件B為早上是否吃早餐,那么事件A1可以為幾點起床,A2表示為早上是否有課,A3天氣是否寒冷,...An食堂早餐賣到幾點,這n個事件共同影響事件B是否吃早飯的發(fā)生,此時各事件的概率就發(fā)生了變化:

    P(A)=P(A1,A2,A3,...An)

    P(A|B)=P(A1,A2,A3,...An|B)

    假設(shè)A1,A2,A3,...An都有兩種結(jié)果,那么一共有2^n個結(jié)果,對應(yīng)需要的樣本數(shù)也是呈指數(shù)增加,這顯然是不合實際的,這時,就提出了半樸素貝葉斯和樸素貝葉斯。

    這兩個定理都有樸素二字,這二字什么意思呢?白話一點就是簡化的意思,將A1,A2,A3,...An這n個事件的關(guān)聯(lián)切斷,假設(shè)它們是相互獨立的,即P(A)=P(A1,A2,A3,...An)=P(A1)P(A2)P(A3)...P(An);

    P(A|B)=P(A1,A2,A3,...An|B)=

    P(A1|B)P(A2|B)P(A3|B)...P(An|B)

    這么一樸素,整個過程簡單了不止一點點。但是事件A1可以為幾點起床和事件A2表示為早上是否有課真的一點關(guān)聯(lián)都沒有嗎?肯定是有關(guān)聯(lián)的,將相關(guān)性很高的一些事件提出,P(A)=P(A1,A2,A3,...An)=

    P(A1)P(A2)P(A3)...P(An)P(A1A2);既不忽略事件的相關(guān)性,又擁有樸素的特性,這就叫半樸素貝葉斯。

    半樸素貝葉斯

    樸素貝葉斯分類的正式定義如下:

    1、設(shè)

    為一個待分類項,而每個a為x的一個特征屬性。

    2、有類別集合

    3、計算

    4、如果

    基于屬性條件獨立性假設(shè),現(xiàn)在來計算P(y1|x),P(y2|x),...P(yn|x)。

    對于所有類別來說P(x)是相同的,因此只需計算分子部分。

    在實際計算時,為了避免下溢(小數(shù)點位數(shù)過高),一般會對等式兩邊同時進(jìn)行Ln變形,將*變?yōu)椋?;這里ln為一個增函數(shù),因此可以保證不改變P(yn|x)的大小排序。

    另一個需要注意的點是:樣本數(shù)是有限的,不可能包括所有的情形,這時會出現(xiàn)P(xn|yi)=0,但是這種情況不出現(xiàn)是不等價于不發(fā)生的,這是用到拉普拉斯修正進(jìn)行平滑:

    P(xn|yi)=(N(結(jié)果yi發(fā)生的前提下xn發(fā)生的次數(shù))+1)/(結(jié)果yi發(fā)生的次數(shù)+屬性xn所有可能的取值)

    數(shù)據(jù)預(yù)處理

    上圖是這次要用到的原始數(shù)據(jù),一行代表一則廣告。ham代表有用的廣告,spam代表垃圾短信。預(yù)處理一共有三部:

    第一步:將數(shù)據(jù)讀入進(jìn)來。

    def read_txt(): file = 'C:/Users/伊雅/Desktop/bayes.txt' with open(file, encoding='utf-8') as f: con = f.readlines() return con

    第二步:廣告存到dataset中,分類結(jié)果存儲到txt_class中,得到一個詞匯表將dataset中的廣告用于split為一個一個的單詞,并將長度小于1的單詞去掉(a)

    def create_word_list(con): reg = re.compile(r'W*') dataset = [] wordlist = set([]) txt_class = [] for i in con[1:]: dataset.a(chǎn)ppend(re.split(reg, i)[1:]) wordlist = wordlist | set(re.split(reg, i)[1:]) if re.split(reg, i)[0]=='ham':#有用的郵件 txt_class.a(chǎn)ppend(1) else:#垃圾郵件 txt_class.a(chǎn)ppend(0) wordlist=[i for i in wordlist if len(i)>2] return dataset,wordlist,txt_class

    第三步:對每一個廣告做循環(huán),通過函數(shù)words_vec輸入?yún)?shù)為每則廣告的單詞以及詞匯表wordlists,返回一個文檔向量,向量的每一個元素為0或1,分別表示詞匯表中的單詞在廣告次中是否出現(xiàn),如果出現(xiàn)該單詞的index則更新為1,否則則為0。

    def words_vec(txt,wordlist): returnvec=[0]*len(wordlist) for word in txt: if word in wordlist: returnvec[list(wordlist).index(word)]=1 return returnvec

    經(jīng)過這三步把單詞文本轉(zhuǎn)化為了數(shù)學(xué)向量,大大簡化了計算。

    12下一頁>

    (免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
    任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )

    贊助商
    2019-01-24
    基于樸素貝葉斯自動過濾垃圾廣告
    貝葉斯定理貝葉斯定理是關(guān)于事件A和事件B的條件概率。

    長按掃碼 閱讀全文