1. 程式人生 > >實戰04 似是而非,概率大小——樸素貝葉斯

實戰04 似是而非,概率大小——樸素貝葉斯

樸素貝葉斯決策論的核心思想:選擇高概率對應的類別。
貝葉斯概率:先驗概率 p ( c ) p(c) 和後驗概率 p

( c x ) p(c|x)
貝葉斯準則: p (
c x ) = p ( x
c ) p ( c )
p ( x )
p(c|x) = \frac{p(x|c) p(c)}{p(x)}

一 本章的核心是:

利用條件概率來分類
如果 p ( c 1 x , y ) > p ( c 2 x , y ) p(c_1|x,y) > p(c_2|x,y) 那麼屬於類別c1
如果 p ( c 1 x , y ) < p ( c 2 x , y ) p(c_1|x,y) < p(c_2|x,y) 那麼屬於類別c2

二 使用python進行文字分類
1 準備資料:從文字中構建詞向量

  • 詞表(wordList)
    [
    [‘my’, ‘dog’, ‘has’, ‘flea’, ‘problems’, ‘help’, ‘please’],-------------(文件1)
    [‘maybe’, ‘not’, ‘take’, ‘him’, ‘to’, ‘dog’, ‘park’, ‘stupid’],-----------(文件2)
    … …------------------------------------------------------------------(文件 n)
    ]
  • 總詞表(vocabList)
    [‘my’, ‘dog’, ‘has’, ‘flea’, ‘problems’, ‘help’, ‘please’,‘maybe’, ‘not’, ‘take’, ‘him’, ‘to’, ‘park’, ‘stupid’…] (無重複單詞)
  • 詞向量 [0,0,1,0,0,0,0,1,0,0,0,1,0,0,0,1,…](長度取決於vocabList)(setOfWords2Vec, bagOfWords2Vec)
    詞矩陣 trainMat
  • 類別標籤集 classVec = [0,1,0,1,0,1](#1表示侮辱性文字,0表示正常言論)
    - 以上詞表中的文件與類別標籤中的元素一一對應。
    - 文件中的每個單詞與詞向量中的元素一一對應。

三 改進分類器

  • “連乘為0”問題 =》 所有詞的出現數初始為1,分母初始為2
  • “下溢位”問題 =》取對數 log、
  • 計算時忽略分母 p ( w ) p(w)
  • 停用詞
  • 優化切分器

四 收集資料:匯入RSS源
使用python 下載文字,可用RSS。
安裝了anaconda的使用者,可以直接在anaconda prompt 中使用以下命令列:

conda install feedparser
conda list

沒有安裝anaconda的使用者,百度Universal Feed Parser找到相應的下載頁面,使用
python setup.py install

使用feedparser:

import feedparser
ny=feedparser.parse(‘http://www.nasa.gov/rss/dyn/image_of_the_day.rss’)

ny[‘entries’]
len(ny[‘entries’])