1. 程式人生 > >Python實現基於樸素貝葉斯的垃圾郵件分類

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

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

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|

相關推薦

Python實現基於樸素垃圾郵件分類

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

基於樸素的新聞分類

貝葉斯理論 在我們有一大堆樣本(包含特徵和類別)的時候,我們非常容易通過統計得到 p(特徵|類別) . 大家又都很熟悉下述公式: #coding: utf-8 import os import time import random import

(資料探勘-入門-8)基於樸素的文字分類

主要內容: 1、動機 2、基於樸素貝葉斯的文字分類器 3、python實現 一、動機 之前介紹的樸素貝葉斯分類器所使用的都是結構化的資料集,即每行代表一個樣本,每列代表一個特徵屬性。 但在實際中,尤其是網頁中,爬蟲所採集到的資料都是非結構化的,如新聞、微博、帖子等,如果要對對這一類資料進行分類,應該怎麼辦

文字處理之垃圾郵件分類

本文所講解的是如何通過Python將文字讀取,並且將每一個文字生成對應的詞向量並返回. 文章的背景是將50封郵件(包含25封正常郵件,25封垃圾郵件)通過貝葉斯演算法對其進行分類. 主要分為如下幾個部分: ①讀取所有郵件; ②建立詞彙表; ③生成沒封郵件對應的詞

模式分類與應用-垃圾郵件分類

垃圾郵件分類 任務要求 使用檔案spambase.data中的資料,訓練垃圾郵件分類的貝葉斯分類器,並測試分類效能。 資料初步分析 spambase.data是一個垃圾郵件的資料庫,來自於惠普公司的Hewlett Packard L

機器學習實戰(三)——NaiveBayes樸素演算法郵件分類

樸素貝葉斯分類的原理是條件概率的計算: 在已知先驗概率的條件下,計算後驗概率,後驗概率即是在當前資料條件下屬於分類1或者分類2 的概率,取概率較大的一個為輸出。 貝葉斯準則很熟悉了,不解釋了,但在這個演算法中引入了一個很重要的思想:將文字等資料物件轉化為向量

基於樸素分類演算法實現垃圾郵箱分類

貝葉斯決策理論 在機器學習中,樸素貝葉斯是基於貝葉斯決策 的一種簡單形式,下面給出貝葉斯的基本公式,也是最重要的公式: 其中X是一個m*n的矩陣,m為他的樣本數,n為特徵的個數,即我們要求的是:在已知的樣本情況下的條件概率。 )表示

《機器學習實戰》基於樸素分類演算法構建文字分類器的Python實現

Python程式碼實現:#encoding:utf-8 from numpy import * #詞表到向量的轉換函式 def loadDataSet(): postingList = [['my','dog','has','flea','problems','help','please'],

基於樸素的關於網際網路金融新聞分類python實現

        中國網際網路金融發展迅速,2014年是中國網際網路金融起步的一年,但在短短的一年時間內,網際網路金融創業者們融資額度一再創高,雨後春筍般湧現出各類網際網路金融產品讓使用者眼花繚亂,隨著創業門檻的降低,在即將到來的2015年,網際網路金融必將在中國掀起熱潮。

基於樸素的中文文字分類器(python實現,非呼叫)

本文將用樸素貝葉斯原理做一箇中文文字分類器。樸素貝葉斯完全可以勝任多分類任務。為了方便,這裡就先做個2分類的。理論部分:https://blog.csdn.net/montecarlostyle/article/details/79870860 我們事先準備兩

Python--基於樸素演算法的情感分類

環境 win8, python3.7, jupyter notebook 正文 什麼是情感分析?(以下引用百度百科定義) 情感分析(Sentiment analysis),又稱傾向性分析,意見抽取(Opinion extraction),意見挖掘(Opinion mining),情感挖掘(Sentiment

基於樸素垃圾郵件過濾

1.文字切分  #對於一個文字字串,可以使用Python的string.split()方法將其切分 mySent = 'This book is the best book on python or M.L. I have ever laid eyes upon' word

基於樸素分類器的 20-news-group分類及結果對比(Python3)

之前看了很多CSDN文章,很多都是根據stack overflow 或者一些英文網站的照搬。導致我看了一整天最後一點收穫都沒有。 這個作業也借鑑了很多外文網站的幫助 但是是基於自己理解寫的,算是一個學習筆記吧。環境是python3(海外留學原因作業是英文的,渣英語見諒吧)程式碼最後附上。 M

基於樸素算法的情感分類

set 求最大值 記錄 變焦 def ... rop ros 結果 環境 win8, python3.7, jupyter notebook 正文 什麽是情感分析?(以下引用百度百科定義) 情感分析(Sentiment analysis),又稱傾向性分析,意見抽取(Opi

kaggle | 基於樸素分類器的語音性別識別

概要: 本實驗基於kaggle上的一個資料集,採用樸素貝葉斯分類器,實現了通過語音識別說話人性別的功能。本文將簡要介紹這一方法的原理、程式碼實現以及在程式設計過程中需要注意的若干問題,程式碼仍然是用MATLAB寫成的。 關鍵字: MATLAB; 語音性別識別

MINIST | 基於樸素分類器的0-9數字手寫體識別

概要: 本實驗基於MINIST資料集,採用樸素貝葉斯分類器,實現了0-9數字手寫體的識別。本文將簡要介紹這一方法的原理、程式碼實現以及在程式設計過程中需要注意的若干問題,程式碼仍然是用MATLAB寫成的。 關鍵字: MATLAB; 影象處理; 數字手寫體識別

python資料分析:內容資料化運營(下)——基於多項式增量學習分類文字

案例背景及資料 見上一篇 案例實現 匯入模組 import re import tarfile import os import numpy as np from bs4 import BeautifulSoup from sklearn.feature_extracti

基於樸素分類器的文字分類

實驗要求題目要求 1、用MapReduce演算法實現貝葉斯分類器的訓練過程,並輸出訓練模型; 2、用輸出的模型對測試集文件進行分類測試。測試過程可基於單機Java程式,也可以是MapRe

sklearn實現多項式樸素

以下程式碼是利用sklearn自帶的資料庫來實現對垃圾郵件的分類,關於樸素貝葉斯實現分類的原理網上有很多教程,這裡不再贅述,直接上程式碼: # --*-- coding:utf-8 --*-- from sklearn.datasets import fetch_20newsgroups