日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报 分类: 机器学习(19) 听说

發布時間:2025/3/21 python 30 豆豆

Python實現基于樸素貝葉斯的垃圾郵件分類

標簽:?python樸素貝葉斯垃圾郵件分類 ?2750人閱讀?評論(1)?收藏?舉報 ?分類: 機器學習(19)?

聽說樸素貝葉斯在垃圾郵件分類的應用中效果很好,尋思樸素貝葉斯容易實現,就用Python寫了一個樸素貝葉斯模型下的垃圾郵件分類。在400封郵件(正常郵件與垃圾郵件各一半)的測試集中測試結果為分類準確率95.15%,在僅僅統計詞頻計算概率的情況下,分類結果還是相當不錯的。

實現代碼及數據集下載

1、準備工作?
python3.4開發環境;?
結巴分詞工具:https://github.com/fxsjy/jieba

2、貝葉斯公式?
我們要做的是計算在已知詞向量w=(w1,w2,...,wn)的條件下求包含該詞向量郵件是否為垃圾郵件的概率,即求:?

P(s|w),w=(w1,w2,...,wn)
其中,s表示分類為垃圾郵件?
根據貝葉斯公式和全概率公式,?
P(s|w1,w2,...,wn)?
=P(s,w1,w2,...,wn)P(w1,w2,...,wn)?
=P(w1,w2,...,wn|s)P(s)P(w1,w2,...,wn)?
=P(w1,w2,...,wn|s)P(s)P(w1,w2,...,wn|s)?p(s)+P(w1,w2,...,wn|s)?p(s)...1?
根據樸素貝葉斯的條件獨立假設,并設先驗概率P(s)=P(s)=0.5,上式可化為:?
=j=1nP(wj|s)j=1nP(wj|s)+j=1nP(wj|s)?
再利用貝葉斯P(wj|s)=P(s|wj)?P(wj)P(s),式子化為?
=j=1nP(s|wj)j=1nP(s|wj)+j=1nP(s|wj)?
=j=1nP(s|wj)j=1nP(s|wj)+j=1n(1?P(s|wj))...2?
至此,我們接下來會用式2來計算概率P(s|w),為什么不用式1而用式2來計算概率,是因為通過式2可以將關于s的部分用s表示,方便計算。

3、實現步驟?
具體實現的源碼已經給出,這里簡單說下思路,就是一個分詞并記錄詞頻的過程:?
(1)對訓練集用結巴分詞,并用停用表進行簡單過濾,然后使用正則表達式過濾掉郵件中的非中文字符;?
(2)分別保存正常郵件與垃圾郵件中出現的詞有多少郵件出現該詞,得到兩個詞典。例如詞”瘋狂”在8000封正常郵件中出現了20次,在8000封垃圾郵件中出現了200次;?
(3)對測試集中的每一封郵件做同樣的處理,并計算得到P(s|w)最高的15個詞,在計算過程中,若該詞只出現在垃圾郵件的詞典中,則令P(w|s)=0.01,反之亦然;若都未出現,則令P(s|w)=0.4。PS.這里做的幾個假設基于前人做的一些研究工作得出的。?
(4)對得到的每封郵件中重要的15個詞利用式2計算概率,若概率>閾值α(0.9),則判為垃圾郵件,否則判為正常郵件。

總結

以上是生活随笔為你收集整理的Python实现基于朴素贝叶斯的垃圾邮件分类 标签: python朴素贝叶斯垃圾邮件分类 2016-04-20 15:09 2750人阅读 评论(1) 收藏 举报 分类: 机器学习(19) 听说的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。