日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实现贝叶斯分类器_机器学习实战项目-朴素贝叶斯

發(fā)布時間:2023/12/4 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现贝叶斯分类器_机器学习实战项目-朴素贝叶斯 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

樸素貝葉斯 概述

貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎(chǔ),故統(tǒng)稱為貝葉斯分類。本章首先介紹貝葉斯分類算法的基礎(chǔ)——貝葉斯定理。最后,我們通過實例來討論貝葉斯分類的中最簡單的一種: 樸素貝葉斯分類。

貝葉斯理論 & 條件概率

貝葉斯理論

我們現(xiàn)在有一個數(shù)據(jù)集,它由兩類數(shù)據(jù)組成,數(shù)據(jù)分布如下圖所示:

我們現(xiàn)在用 p1(x,y) 表示數(shù)據(jù)點 (x,y) 屬于類別 1(圖中用圓點表示的類別)的概率,用 p2(x,y) 表示數(shù)據(jù)點 (x,y) 屬于類別 2(圖中三角形表示的類別)的概率,那么對于一個新數(shù)據(jù)點 (x,y),可以用下面的規(guī)則來判斷它的類別:

  • 如果 p1(x,y) > p2(x,y) ,那么類別為1
  • 如果 p2(x,y) > p1(x,y) ,那么類別為2

也就是說,我們會選擇高概率對應(yīng)的類別。這就是貝葉斯決策理論的核心思想,即選擇具有最高概率的決策。

條件概率

如果你對 p(x,y|c1) 符號很熟悉,那么可以跳過本小節(jié)。

有一個裝了 7 塊石頭的罐子,其中 3 塊是白色的,4 塊是黑色的。如果從罐子中隨機取出一塊石頭,那么是白色石頭的可能性是多少?由于取石頭有 7 種可能,其中 3 種為白色,所以取出白色石頭的概率為 3/7 。那么取到黑色石頭的概率又是多少呢?很顯然,是 4/7 。我們使用 P(white) 來表示取到白色石頭的概率,其概率值可以通過白色石頭數(shù)目除以總的石頭數(shù)目來得到。

如果這 7 塊石頭如下圖所示,放在兩個桶中,那么上述概率應(yīng)該如何計算?

計算 P(white) 或者 P(black) ,如果事先我們知道石頭所在桶的信息是會改變結(jié)果的。這就是所謂的條件概率(conditional probablity)。假定計算的是從 B 桶取到白色石頭的概率,這個概率可以記作 P(white|bucketB) ,我們稱之為“在已知石頭出自 B 桶的條件下,取出白色石頭的概率”。很容易得到,P(white|bucketA) 值為 2/4 ,P(white|bucketB) 的值為 1/3 。

條件概率的計算公式如下:

P(white|bucketB) = P(white and bucketB) / P(bucketB)

首先,我們用 B 桶中白色石頭的個數(shù)除以兩個桶中總的石頭數(shù),得到 P(white and bucketB) = 1/7 .其次,由于 B 桶中有 3 塊石頭,而總石頭數(shù)為 7 ,于是 P(bucketB) 就等于 3/7 。于是又 P(white|bucketB) = P(white and bucketB) / P(bucketB) = (1/7) / (3/7) = 1/3 。

使用條件概率來分類

上面我們提到貝葉斯決策理論要求計算兩個概率 p1(x, y) 和 p2(x, y):

  • 如果 p1(x, y) > p2(x, y), 那么屬于類別 1;
  • 如果 p2(x, y) > p1(X, y), 那么屬于類別 2.

這并不是貝葉斯決策理論的所有內(nèi)容。使用 p1() 和 p2() 只是為了盡可能簡化描述,而真正需要計算和比較的是 p(c1|x, y) 和 p(c2|x, y) .這些符號所代表的具體意義是: 給定某個由 x、y 表示的數(shù)據(jù)點,那么該數(shù)據(jù)點來自類別 c1 的概率是多少?數(shù)據(jù)點來自類別 c2 的概率又是多少?注意這些概率與概率 p(x, y|c1) 并不一樣,不過可以使用貝葉斯準(zhǔn)則來交換概率中條件與結(jié)果。具體地,應(yīng)用貝葉斯準(zhǔn)則得到:

使用上面這些定義,可以定義貝葉斯分類準(zhǔn)則為:

  • 如果 P(c1|x, y) > P(c2|x, y), 那么屬于類別 c1;
  • 如果 P(c2|x, y) > P(c1|x, y), 那么屬于類別 c2.

在文檔分類中,整個文檔(如一封電子郵件)是實例,而電子郵件中的某些元素則構(gòu)成特征。我們可以觀察文檔中出現(xiàn)的詞,并把每個詞作為一個特征,而每個詞的出現(xiàn)或者不出現(xiàn)作為該特征的值,這樣得到的特征數(shù)目就會跟詞匯表中的詞的數(shù)目一樣多。

我們假設(shè)特征之間 相互獨立 。所謂 獨立(independence) 指的是統(tǒng)計意義上的獨立,即一個特征或者單詞出現(xiàn)的可能性與它和其他單詞相鄰沒有關(guān)系,比如說,“我們”中的“我”和“們”出現(xiàn)的概率與這兩個字相鄰沒有任何關(guān)系。這個假設(shè)正是樸素貝葉斯分類器中 樸素(naive) 一詞的含義。樸素貝葉斯分類器中的另一個假設(shè)是,每個特征同等重要

Note: 樸素貝葉斯分類器通常有兩種實現(xiàn)方式: 一種基于伯努利模型實現(xiàn),一種基于多項式模型實現(xiàn)。這里采用前一種實現(xiàn)方式。該實現(xiàn)方式中并不考慮詞在文檔中出現(xiàn)的次數(shù),只考慮出不出現(xiàn),因此在這個意義上相當(dāng)于假設(shè)詞是等權(quán)重的。

樸素貝葉斯 場景

機器學(xué)習(xí)的一個重要應(yīng)用就是文檔的自動分類。

在文檔分類中,整個文檔(如一封電子郵件)是實例,而電子郵件中的某些元素則構(gòu)成特征。我們可以觀察文檔中出現(xiàn)的詞,并把每個詞作為一個特征,而每個詞的出現(xiàn)或者不出現(xiàn)作為該特征的值,這樣得到的特征數(shù)目就會跟詞匯表中的詞的數(shù)目一樣多。

樸素貝葉斯是上面介紹的貝葉斯分類器的一個擴展,是用于文檔分類的常用算法。下面我們會進行一些樸素貝葉斯分類的實踐項目。

樸素貝葉斯 原理

樸素貝葉斯 工作原理

提取所有文檔中的詞條并進行去重獲取文檔的所有類別計算每個類別中的文檔數(shù)目對每篇訓(xùn)練文檔: 對每個類別: 如果詞條出現(xiàn)在文檔中-->增加該詞條的計數(shù)值(for循環(huán)或者矩陣相加) 增加所有詞條的計數(shù)值(此類別下詞條總數(shù))對每個類別: 對每個詞條: 將該詞條的數(shù)目除以總詞條數(shù)目得到的條件概率(P(詞條|類別))返回該文檔屬于每個類別的條件概率(P(類別|文檔的所有詞條))

樸素貝葉斯 開發(fā)流程

收集數(shù)據(jù): 可以使用任何方法。準(zhǔn)備數(shù)據(jù): 需要數(shù)值型或者布爾型數(shù)據(jù)。分析數(shù)據(jù): 有大量特征時,繪制特征作用不大,此時使用直方圖效果更好。訓(xùn)練算法: 計算不同的獨立特征的條件概率。測試算法: 計算錯誤率。使用算法: 一個常見的樸素貝葉斯應(yīng)用是文檔分類??梢栽谌我獾姆诸悎鼍爸惺褂脴闼刎惾~斯分類器,不一定非要是文本。

樸素貝葉斯 算法特點

優(yōu)點: 在數(shù)據(jù)較少的情況下仍然有效,可以處理多類別問題。缺點: 對于輸入數(shù)據(jù)的準(zhǔn)備方式較為敏感。適用數(shù)據(jù)類型: 標(biāo)稱型數(shù)據(jù)。

樸素貝葉斯 項目案例

項目案例1: 屏蔽社區(qū)留言板的侮辱性言論

項目概述

構(gòu)建一個快速過濾器來屏蔽在線社區(qū)留言板上的侮辱性言論。如果某條留言使用了負(fù)面或者侮辱性的語言,那么就將該留言標(biāo)識為內(nèi)容不當(dāng)。對此問題建立兩個類別: 侮辱類和非侮辱類,使用 1 和 0 分別表示。

開發(fā)流程

收集數(shù)據(jù): 可以使用任何方法準(zhǔn)備數(shù)據(jù): 從文本中構(gòu)建詞向量分析數(shù)據(jù): 檢查詞條確保解析的正確性訓(xùn)練算法: 從詞向量計算概率測試算法: 根據(jù)現(xiàn)實情況修改分類器使用算法: 對社區(qū)留言板言論進行分類

收集數(shù)據(jù): 可以使用任何方法

本例是我們自己構(gòu)造的詞表:

def loadDataSet(): """ 創(chuàng)建數(shù)據(jù)集 :return: 單詞列表postingList, 所屬類別classVec """ postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'please'], #[0,0,1,1,1......] ['maybe', 'not', 'take', 'him', 'to', 'dog', 'park', 'stupid'], ['my', 'dalmation', 'is', 'so', 'cute', 'I', 'love', 'him'], ['stop', 'posting', 'stupid', 'worthless', 'garbage'], ['mr', 'licks', 'ate', 'my', 'steak', 'how', 'to', 'stop', 'him'], ['quit', 'buying', 'worthless', 'dog', 'food', 'stupid']] classVec = [0, 1, 0, 1, 0, 1] # 1 is abusive, 0 not return postingList, classVec

準(zhǔn)備數(shù)據(jù): 從文本中構(gòu)建詞向量

def createVocabList(dataSet): """ 獲取所有單詞的集合 :param dataSet: 數(shù)據(jù)集 :return: 所有單詞的集合(即不含重復(fù)元素的單詞列表) """ vocabSet = set([]) # create empty set for document in dataSet: # 操作符 | 用于求兩個集合的并集 vocabSet = vocabSet | set(document) # union of the two sets return list(vocabSet)def setOfWords2Vec(vocabList, inputSet): """ 遍歷查看該單詞是否出現(xiàn),出現(xiàn)該單詞則將該單詞置1 :param vocabList: 所有單詞集合列表 :param inputSet: 輸入數(shù)據(jù)集 :return: 匹配列表[0,1,0,1...],其中 1與0 表示詞匯表中的單詞是否出現(xiàn)在輸入的數(shù)據(jù)集中 """ # 創(chuàng)建一個和詞匯表等長的向量,并將其元素都設(shè)置為0 returnVec = [0] * len(vocabList)# [0,0......] # 遍歷文檔中的所有單詞,如果出現(xiàn)了詞匯表中的單詞,則將輸出的文檔向量中的對應(yīng)值設(shè)為1 for word in inputSet: if word in vocabList: returnVec[vocabList.index(word)] = 1 else: print "the word: %s is not in my Vocabulary!" % word return returnVec

分析數(shù)據(jù): 檢查詞條確保解析的正確性

檢查函數(shù)執(zhí)行情況,檢查詞表,不出現(xiàn)重復(fù)單詞,需要的話,可以對其進行排序。

>>> listOPosts, listClasses = bayes.loadDataSet()>>> myVocabList = bayes.createVocabList(listOPosts)>>> myVocabList['cute', 'love', 'help', 'garbage', 'quit', 'I', 'problems', 'is', 'park', 'stop', 'flea', 'dalmation', 'licks', 'food', 'not', 'him', 'buying', 'posting', 'has', 'worthless', 'ate', 'to', 'maybe', 'please', 'dog', 'how', 'stupid', 'so', 'take', 'mr', 'steak', 'my']

檢查函數(shù)有效性。例如:myVocabList 中索引為 2 的元素是什么單詞?應(yīng)該是是 help 。該單詞在第一篇文檔中出現(xiàn)了,現(xiàn)在檢查一下看看它是否出現(xiàn)在第四篇文檔中。

>>> bayes.setOfWords2Vec(myVocabList, listOPosts[0])[0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1]>>> bayes.setOfWords2Vec(myVocabList, listOPosts[3])[0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]

訓(xùn)練算法: 從詞向量計算概率

現(xiàn)在已經(jīng)知道了一個詞是否出現(xiàn)在一篇文檔中,也知道該文檔所屬的類別。接下來我們重寫貝葉斯準(zhǔn)則,將之前的 x, y 替換為 w. 粗體的 w 表示這是一個向量,即它由多個值組成。在這個例子中,數(shù)值個數(shù)與詞匯表中的詞個數(shù)相同。

我們使用上述公式,對每個類計算該值,然后比較這兩個概率值的大小。

首先可以通過類別 i (侮辱性留言或者非侮辱性留言)中的文檔數(shù)除以總的文檔數(shù)來計算概率 p(ci) 。接下來計算 p(w | ci) ,這里就要用到樸素貝葉斯假設(shè)。如果將 w 展開為一個個獨立特征,那么就可以將上述概率寫作 p(w0, w1, w2...wn | ci) 。這里假設(shè)所有詞都互相獨立,該假設(shè)也稱作條件獨立性假設(shè)(例如 A 和 B 兩個人拋骰子,概率是互不影響的,也就是相互獨立的,A 拋 2點的同時 B 拋 3 點的概率就是 1/6 * 1/6),它意味著可以使用 p(w0 | ci)p(w1 | ci)p(w2 | ci)...p(wn | ci) 來計算上述概率,這樣就極大地簡化了計算的過程。

樸素貝葉斯分類器訓(xùn)練函數(shù)

def _trainNB0(trainMatrix, trainCategory): """ 訓(xùn)練數(shù)據(jù)原版 :param trainMatrix: 文件單詞矩陣 [[1,0,1,1,1....],[],[]...] :param trainCategory: 文件對應(yīng)的類別[0,1,1,0....],列表長度等于單詞矩陣數(shù),其中的1代表對應(yīng)的文件是侮辱性文件,0代表不是侮辱性矩陣 :return: """ # 文件數(shù) numTrainDocs = len(trainMatrix) # 單詞數(shù) numWords = len(trainMatrix[0]) # 侮辱性文件的出現(xiàn)概率,即trainCategory中所有的1的個數(shù), # 代表的就是多少個侮辱性文件,與文件的總數(shù)相除就得到了侮辱性文件的出現(xiàn)概率 pAbusive = sum(trainCategory) / float(numTrainDocs) # 構(gòu)造單詞出現(xiàn)次數(shù)列表 p0Num = zeros(numWords) # [0,0,0,.....] p1Num = zeros(numWords) # [0,0,0,.....] # 整個數(shù)據(jù)集單詞出現(xiàn)總數(shù) p0Denom = 0.0 p1Denom = 0.0 for i in range(numTrainDocs): # 是否是侮辱性文件 if trainCategory[i] == 1: # 如果是侮辱性文件,對侮辱性文件的向量進行加和 p1Num += trainMatrix[i] #[0,1,1,....] + [0,1,1,....]->[0,2,2,...] # 對向量中的所有元素進行求和,也就是計算所有侮辱性文件中出現(xiàn)的單詞總數(shù) p1Denom += sum(trainMatrix[i]) else: p0Num += trainMatrix[i] p0Denom += sum(trainMatrix[i]) # 類別1,即侮辱性文檔的[P(F1|C1),P(F2|C1),P(F3|C1),P(F4|C1),P(F5|C1)....]列表 # 即 在1類別下,每個單詞出現(xiàn)的概率 p1Vect = p1Num / p1Denom# [1,2,3,5]/90->[1/90,...] # 類別0,即正常文檔的[P(F1|C0),P(F2|C0),P(F3|C0),P(F4|C0),P(F5|C0)....]列表 # 即 在0類別下,每個單詞出現(xiàn)的概率 p0Vect = p0Num / p0Denom return p0Vect, p1Vect, pAbusive

測試算法: 根據(jù)現(xiàn)實情況修改分類器

在利用貝葉斯分類器對文檔進行分類時,要計算多個概率的乘積以獲得文檔屬于某個類別的概率,即計算 p(w0|1) * p(w1|1) * p(w2|1)。如果其中一個概率值為 0,那么最后的乘積也為 0。為降低這種影響,可以將所有詞的出現(xiàn)數(shù)初始化為 1,并將分母初始化為 2 (取1 或 2 的目的主要是為了保證分子和分母不為0,大家可以根據(jù)業(yè)務(wù)需求進行更改)。

另一個遇到的問題是下溢出,這是由于太多很小的數(shù)相乘造成的。當(dāng)計算乘積 p(w0|ci) * p(w1|ci) * p(w2|ci)... p(wn|ci) 時,由于大部分因子都非常小,所以程序會下溢出或者得到不正確的答案。(用 Python 嘗試相乘許多很小的數(shù),最后四舍五入后會得到 0)。一種解決辦法是對乘積取自然對數(shù)。在代數(shù)中有 ln(a * b) = ln(a) + ln(b), 于是通過求對數(shù)可以避免下溢出或者浮點數(shù)舍入導(dǎo)致的錯誤。同時,采用自然對數(shù)進行處理不會有任何損失。

下圖給出了函數(shù) f(x) 與 ln(f(x)) 的曲線。可以看出,它們在相同區(qū)域內(nèi)同時增加或者減少,并且在相同點上取到極值。它們的取值雖然不同,但不影響最終結(jié)果。

def trainNB0(trainMatrix, trainCategory):

"""

訓(xùn)練數(shù)據(jù)優(yōu)化版本

:param trainMatrix: 文件單詞矩陣

:param trainCategory: 文件對應(yīng)的類別

:return:

"""

# 總文件數(shù)

numTrainDocs = len(trainMatrix)

# 總單詞數(shù)

numWords = len(trainMatrix[0])

# 侮辱性文件的出現(xiàn)概率

pAbusive = sum(trainCategory) / float(numTrainDocs)

# 構(gòu)造單詞出現(xiàn)次數(shù)列表

# p0Num 正常的統(tǒng)計

# p1Num 侮辱的統(tǒng)計

p0Num = ones(numWords)#[0,0......]->[1,1,1,1,1.....]

p1Num = ones(numWords)

# 整個數(shù)據(jù)集單詞出現(xiàn)總數(shù),2.0根據(jù)樣本/實際調(diào)查結(jié)果調(diào)整分母的值(2主要是避免分母為0,當(dāng)然值可以調(diào)整)

# p0Denom 正常的統(tǒng)計

# p1Denom 侮辱的統(tǒng)計

p0Denom = 2.0

p1Denom = 2.0

for i in range(numTrainDocs):

if trainCategory[i] == 1:

# 累加辱罵詞的頻次

p1Num += trainMatrix[i]

# 對每篇文章的辱罵的頻次 進行統(tǒng)計匯總

p1Denom += sum(trainMatrix[i])

else:

p0Num += trainMatrix[i]

p0Denom += sum(trainMatrix[i])

# 類別1,即侮辱性文檔的[log(P(F1|C1)),log(P(F2|C1)),log(P(F3|C1)),log(P(F4|C1)),log(P(F5|C1))....]列表

p1Vect = log(p1Num / p1Denom)

# 類別0,即正常文檔的[log(P(F1|C0)),log(P(F2|C0)),log(P(F3|C0)),log(P(F4|C0)),log(P(F5|C0))....]列表

p0Vect = log(p0Num / p0Denom)

return p0Vect, p1Vect, pAbusive

使用算法: 對社區(qū)留言板言論進行分類

樸素貝葉斯分類函數(shù)

def classifyNB(vec2Classify, p0Vec, p1Vec, pClass1): """ 使用算法: # 將乘法轉(zhuǎn)換為加法 乘法:P(C|F1F2...Fn) = P(F1F2...Fn|C)P(C)/P(F1F2...Fn) 加法:P(F1|C)*P(F2|C)....P(Fn|C)P(C) -> log(P(F1|C))+log(P(F2|C))+....+log(P(Fn|C))+log(P(C)) :param vec2Classify: 待測數(shù)據(jù)[0,1,1,1,1...],即要分類的向量 :param p0Vec: 類別0,即正常文檔的[log(P(F1|C0)),log(P(F2|C0)),log(P(F3|C0)),log(P(F4|C0)),log(P(F5|C0))....]列表 :param p1Vec: 類別1,即侮辱性文檔的[log(P(F1|C1)),log(P(F2|C1)),log(P(F3|C1)),log(P(F4|C1)),log(P(F5|C1))....]列表 :param pClass1: 類別1,侮辱性文件的出現(xiàn)概率 :return: 類別1 or 0 """ # 計算公式 log(P(F1|C))+log(P(F2|C))+....+log(P(Fn|C))+log(P(C)) # 大家可能會發(fā)現(xiàn),上面的計算公式,沒有除以貝葉斯準(zhǔn)則的公式的分母,也就是 P(w) (P(w) 指的是此文檔在所有的文檔中出現(xiàn)的概率)就進行概率大小的比較了, # 因為 P(w) 針對的是包含侮辱和非侮辱的全部文檔,所以 P(w) 是相同的。 # 使用 NumPy 數(shù)組來計算兩個向量相乘的結(jié)果,這里的相乘是指對應(yīng)元素相乘,即先將兩個向量中的第一個元素相乘,然后將第2個元素相乘,以此類推。 # 我的理解是:這里的 vec2Classify * p1Vec 的意思就是將每個詞與其對應(yīng)的概率相關(guān)聯(lián)起來 p1 = sum(vec2Classify * p1Vec) + log(pClass1) # P(w|c1) * P(c1) ,即貝葉斯準(zhǔn)則的分子 p0 = sum(vec2Classify * p0Vec) + log(1.0 - pClass1) # P(w|c0) * P(c0) ,即貝葉斯準(zhǔn)則的分子· if p1 > p0: return 1 else: return 0def testingNB(): """ 測試樸素貝葉斯算法 """ # 1. 加載數(shù)據(jù)集 listOPosts, listClasses = loadDataSet() # 2. 創(chuàng)建單詞集合 myVocabList = createVocabList(listOPosts) # 3. 計算單詞是否出現(xiàn)并創(chuàng)建數(shù)據(jù)矩陣 trainMat = [] for postinDoc in listOPosts: # 返回m*len(myVocabList)的矩陣, 記錄的都是0,1信息 trainMat.append(setOfWords2Vec(myVocabList, postinDoc)) # 4. 訓(xùn)練數(shù)據(jù) p0V, p1V, pAb = trainNB0(array(trainMat), array(listClasses)) # 5. 測試數(shù)據(jù) testEntry = ['love', 'my', 'dalmation'] thisDoc = array(setOfWords2Vec(myVocabList, testEntry)) print testEntry, 'classified as: ', classifyNB(thisDoc, p0V, p1V, pAb) testEntry = ['stupid', 'garbage'] thisDoc = array(setOfWords2Vec(myVocabList, testEntry)) print testEntry, 'classified as: ', classifyNB(thisDoc, p0V, p1V, pAb)

完整代碼地址: https://github.com/apachecn/MachineLearning/blob/master/src/python/4.NaiveBayes/bayes.py

項目案例2: 使用樸素貝葉斯過濾垃圾郵件

項目概述

完成樸素貝葉斯的一個最著名的應(yīng)用: 電子郵件垃圾過濾。

開發(fā)流程

使用樸素貝葉斯對電子郵件進行分類

收集數(shù)據(jù): 提供文本文件準(zhǔn)備數(shù)據(jù): 將文本文件解析成詞條向量分析數(shù)據(jù): 檢查詞條確保解析的正確性訓(xùn)練算法: 使用我們之前建立的 trainNB() 函數(shù)測試算法: 使用樸素貝葉斯進行交叉驗證使用算法: 構(gòu)建一個完整的程序?qū)σ唤M文檔進行分類,將錯分的文檔輸出到屏幕上

收集數(shù)據(jù): 提供文本文件

文本文件內(nèi)容如下:

Hi Peter,With Jose out of town, do you want tomeet once in a while to keep thingsgoing and do some interesting stuff?Let me knowEugene

準(zhǔn)備數(shù)據(jù): 將文本文件解析成詞條向量

使用正則表達(dá)式來切分文本

>>> mySent = 'This book is the best book on Python or M.L. I have ever laid eyes upon.'>>> import re>>> regEx = re.compile('W*')>>> listOfTokens = regEx.split(mySent)>>> listOfTokens['This', 'book', 'is', 'the', 'best', 'book', 'on', 'Python', 'or', 'M.L.', 'I', 'have', 'ever', 'laid', 'eyes', 'upon', '']

分析數(shù)據(jù): 檢查詞條確保解析的正確性

訓(xùn)練算法: 使用我們之前建立的 trainNB0() 函數(shù)

def trainNB0(trainMatrix, trainCategory): """ 訓(xùn)練數(shù)據(jù)優(yōu)化版本 :param trainMatrix: 文件單詞矩陣 :param trainCategory: 文件對應(yīng)的類別 :return: """ # 總文件數(shù) numTrainDocs = len(trainMatrix) # 總單詞數(shù) numWords = len(trainMatrix[0]) # 侮辱性文件的出現(xiàn)概率 pAbusive = sum(trainCategory) / float(numTrainDocs) # 構(gòu)造單詞出現(xiàn)次數(shù)列表 # p0Num 正常的統(tǒng)計 # p1Num 侮辱的統(tǒng)計 p0Num = ones(numWords)#[0,0......]->[1,1,1,1,1.....] p1Num = ones(numWords) # 整個數(shù)據(jù)集單詞出現(xiàn)總數(shù),2.0根據(jù)樣本/實際調(diào)查結(jié)果調(diào)整分母的值(2主要是避免分母為0,當(dāng)然值可以調(diào)整) # p0Denom 正常的統(tǒng)計 # p1Denom 侮辱的統(tǒng)計 p0Denom = 2.0 p1Denom = 2.0 for i in range(numTrainDocs): if trainCategory[i] == 1: # 累加辱罵詞的頻次 p1Num += trainMatrix[i] # 對每篇文章的辱罵的頻次 進行統(tǒng)計匯總 p1Denom += sum(trainMatrix[i]) else: p0Num += trainMatrix[i] p0Denom += sum(trainMatrix[i]) # 類別1,即侮辱性文檔的[log(P(F1|C1)),log(P(F2|C1)),log(P(F3|C1)),log(P(F4|C1)),log(P(F5|C1))....]列表 p1Vect = log(p1Num / p1Denom) # 類別0,即正常文檔的[log(P(F1|C0)),log(P(F2|C0)),log(P(F3|C0)),log(P(F4|C0)),log(P(F5|C0))....]列表 p0Vect = log(p0Num / p0Denom) return p0Vect, p1Vect, pAbusive

測試算法: 使用樸素貝葉斯進行交叉驗證

文件解析及完整的垃圾郵件測試函數(shù)

# 切分文本def textParse(bigString): ''' Desc: 接收一個大字符串并將其解析為字符串列表 Args: bigString -- 大字符串 Returns: 去掉少于 2 個字符的字符串,并將所有字符串轉(zhuǎn)換為小寫,返回字符串列表 ''' import re # 使用正則表達(dá)式來切分句子,其中分隔符是除單詞、數(shù)字外的任意字符串 listOfTokens = re.split(r'W*', bigString) return [tok.lower() for tok in listOfTokens if len(tok) > 2]def spamTest(): ''' Desc: 對貝葉斯垃圾郵件分類器進行自動化處理。 Args: none Returns: 對測試集中的每封郵件進行分類,若郵件分類錯誤,則錯誤數(shù)加 1,最后返回總的錯誤百分比。 ''' docList = [] classList = [] fullText = [] for i in range(1, 26): # 切分,解析數(shù)據(jù),并歸類為 1 類別 wordList = textParse(open('input/4.NaiveBayes/email/spam/%d.txt' % i).read()) docList.append(wordList) classList.append(1) # 切分,解析數(shù)據(jù),并歸類為 0 類別 wordList = textParse(open('input/4.NaiveBayes/email/ham/%d.txt' % i).read()) docList.append(wordList) fullText.extend(wordList) classList.append(0) # 創(chuàng)建詞匯表 vocabList = createVocabList(docList) trainingSet = range(50) testSet = [] # 隨機取 10 個郵件用來測試 for i in range(10): # random.uniform(x, y) 隨機生成一個范圍為 x - y 的實數(shù) randIndex = int(random.uniform(0, len(trainingSet))) testSet.append(trainingSet[randIndex]) del(trainingSet[randIndex]) trainMat = [] trainClasses = [] for docIndex in trainingSet: trainMat.append(setOfWords2Vec(vocabList, docList[docIndex])) trainClasses.append(classList[docIndex]) p0V, p1V, pSpam = trainNB0(array(trainMat), array(trainClasses)) errorCount = 0 for docIndex in testSet: wordVector = setOfWords2Vec(vocabList, docList[docIndex]) if classifyNB(array(wordVector), p0V, p1V, pSpam) != classList[docIndex]: errorCount += 1 print 'the errorCount is: ', errorCount print 'the testSet length is :', len(testSet) print 'the error rate is :', float(errorCount)/len(testSet)

使用算法: 構(gòu)建一個完整的程序?qū)σ唤M文檔進行分類,將錯分的文檔輸出到屏幕上

完整代碼地址: https://github.com/apachecn/MachineLearning/blob/master/src/python/4.NaiveBayes/bayes.py

項目案例3: 使用樸素貝葉斯分類器從個人廣告中獲取區(qū)域傾向

項目概述

廣告商往往想知道關(guān)于一個人的一些特定人口統(tǒng)計信息,以便能更好地定向推銷廣告。

我們將分別從美國的兩個城市中選取一些人,通過分析這些人發(fā)布的信息,來比較這兩個城市的人們在廣告用詞上是否不同。如果結(jié)論確實不同,那么他們各自常用的詞是那些,從人們的用詞當(dāng)中,我們能否對不同城市的人所關(guān)心的內(nèi)容有所了解。

開發(fā)流程

收集數(shù)據(jù): 從 RSS 源收集內(nèi)容,這里需要對 RSS 源構(gòu)建一個接口準(zhǔn)備數(shù)據(jù): 將文本文件解析成詞條向量分析數(shù)據(jù): 檢查詞條確保解析的正確性訓(xùn)練算法: 使用我們之前簡歷的 trainNB0() 函數(shù)測試算法: 觀察錯誤率,確保分類器可用。可以修改切分程序,以降低錯誤率,提高分類結(jié)果使用算法: 構(gòu)建一個完整的程序,封裝所有內(nèi)容。給定兩個 RSS 源,改程序會顯示最常用的公共詞

收集數(shù)據(jù): 從 RSS 源收集內(nèi)容,這里需要對 RSS 源構(gòu)建一個接口

也就是導(dǎo)入 RSS 源,我們使用 python 下載文本,在http://code.google.com/p/feedparser/ 下瀏覽相關(guān)文檔,安裝 feedparse,首先解壓下載的包,并將當(dāng)前目錄切換到解壓文件所在的文件夾,然后在 python 提示符下輸入:

>>> python setup.py install

準(zhǔn)備數(shù)據(jù): 將文本文件解析成詞條向量

文檔詞袋模型

我們將每個詞的出現(xiàn)與否作為一個特征,這可以被描述為 詞集模型(set-of-words model)。如果一個詞在文檔中出現(xiàn)不止一次,這可能意味著包含該詞是否出現(xiàn)在文檔中所不能表達(dá)的某種信息,這種方法被稱為 詞袋模型(bag-of-words model)。在詞袋中,每個單詞可以出現(xiàn)多次,而在詞集中,每個詞只能出現(xiàn)一次。為適應(yīng)詞袋模型,需要對函數(shù) setOfWords2Vec() 稍加修改,修改后的函數(shù)為 bagOfWords2Vec() 。

如下給出了基于詞袋模型的樸素貝葉斯代碼。它與函數(shù) setOfWords2Vec() 幾乎完全相同,唯一不同的是每當(dāng)遇到一個單詞時,它會增加詞向量中的對應(yīng)值,而不只是將對應(yīng)的數(shù)值設(shè)為 1 。

def bagOfWords2VecMN(vocaList, inputSet): returnVec = [0] * len(vocabList) for word in inputSet: if word in inputSet: returnVec[vocabList.index(word)] += 1 return returnVec#創(chuàng)建一個包含在所有文檔中出現(xiàn)的不重復(fù)詞的列表def createVocabList(dataSet): vocabSet=set([]) #創(chuàng)建一個空集 for document in dataSet: vocabSet=vocabSet|set(document) #創(chuàng)建兩個集合的并集 return list(vocabSet)def setOfWords2VecMN(vocabList,inputSet): returnVec=[0]*len(vocabList) #創(chuàng)建一個其中所含元素都為0的向量 for word in inputSet: if word in vocabList: returnVec[vocabList.index(word)]+=1 return returnVec#文件解析def textParse(bigString): import re listOfTokens=re.split(r'W*',bigString) return [tok.lower() for tok in listOfTokens if len(tok)>2]

分析數(shù)據(jù): 檢查詞條確保解析的正確性

訓(xùn)練算法: 使用我們之前簡歷的 trainNB0() 函數(shù)

def trainNB0(trainMatrix, trainCategory): """ 訓(xùn)練數(shù)據(jù)優(yōu)化版本 :param trainMatrix: 文件單詞矩陣 :param trainCategory: 文件對應(yīng)的類別 :return: """ # 總文件數(shù) numTrainDocs = len(trainMatrix) # 總單詞數(shù) numWords = len(trainMatrix[0]) # 侮辱性文件的出現(xiàn)概率 pAbusive = sum(trainCategory) / float(numTrainDocs) # 構(gòu)造單詞出現(xiàn)次數(shù)列表 # p0Num 正常的統(tǒng)計 # p1Num 侮辱的統(tǒng)計 # 避免單詞列表中的任何一個單詞為0,而導(dǎo)致最后的乘積為0,所以將每個單詞的出現(xiàn)次數(shù)初始化為 1 p0Num = ones(numWords)#[0,0......]->[1,1,1,1,1.....] p1Num = ones(numWords) # 整個數(shù)據(jù)集單詞出現(xiàn)總數(shù),2.0根據(jù)樣本/實際調(diào)查結(jié)果調(diào)整分母的值(2主要是避免分母為0,當(dāng)然值可以調(diào)整) # p0Denom 正常的統(tǒng)計 # p1Denom 侮辱的統(tǒng)計 p0Denom = 2.0 p1Denom = 2.0 for i in range(numTrainDocs): if trainCategory[i] == 1: # 累加辱罵詞的頻次 p1Num += trainMatrix[i] # 對每篇文章的辱罵的頻次 進行統(tǒng)計匯總 p1Denom += sum(trainMatrix[i]) else: p0Num += trainMatrix[i] p0Denom += sum(trainMatrix[i]) # 類別1,即侮辱性文檔的[log(P(F1|C1)),log(P(F2|C1)),log(P(F3|C1)),log(P(F4|C1)),log(P(F5|C1))....]列表 p1Vect = log(p1Num / p1Denom) # 類別0,即正常文檔的[log(P(F1|C0)),log(P(F2|C0)),log(P(F3|C0)),log(P(F4|C0)),log(P(F5|C0))....]列表 p0Vect = log(p0Num / p0Denom) return p0Vect, p1Vect, pAbusive

測試算法: 觀察錯誤率,確保分類器可用??梢孕薷那蟹殖绦?#xff0c;以降低錯誤率,提高分類結(jié)果

#RSS源分類器及高頻詞去除函數(shù)def calcMostFreq(vocabList,fullText): import operator freqDict={} for token in vocabList: #遍歷詞匯表中的每個詞 freqDict[token]=fullText.count(token) #統(tǒng)計每個詞在文本中出現(xiàn)的次數(shù) sortedFreq=sorted(freqDict.iteritems(),key=operator.itemgetter(1),reverse=True) #根據(jù)每個詞出現(xiàn)的次數(shù)從高到底對字典進行排序 return sortedFreq[:30] #返回出現(xiàn)次數(shù)最高的30個單詞def localWords(feed1,feed0): import feedparser docList=[];classList=[];fullText=[] minLen=min(len(feed1['entries']),len(feed0['entries'])) for i in range(minLen): wordList=textParse(feed1['entries'][i]['summary']) #每次訪問一條RSS源 docList.append(wordList) fullText.extend(wordList) classList.append(1) wordList=textParse(feed0['entries'][i]['summary']) docList.append(wordList) fullText.extend(wordList) classList.append(0) vocabList=createVocabList(docList) top30Words=calcMostFreq(vocabList,fullText) for pairW in top30Words: if pairW[0] in vocabList:vocabList.remove(pairW[0]) #去掉出現(xiàn)次數(shù)最高的那些詞 trainingSet=range(2*minLen);testSet=[] for i in range(20): randIndex=int(random.uniform(0,len(trainingSet))) testSet.append(trainingSet[randIndex]) del(trainingSet[randIndex]) trainMat=[];trainClasses=[] for docIndex in trainingSet: trainMat.append(bagOfWords2VecMN(vocabList,docList[docIndex])) trainClasses.append(classList[docIndex]) p0V,p1V,pSpam=trainNBO(array(trainMat),array(trainClasses)) errorCount=0 for docIndex in testSet: wordVector=bagOfWords2VecMN(vocabList,docList[docIndex]) if classifyNB(array(wordVector),p0V,p1V,pSpam)!=classList[docIndex]: errorCount+=1 print 'the error rate is:',float(errorCount)/len(testSet) return vocabList,p0V,p1V#樸素貝葉斯分類函數(shù)def classifyNB(vec2Classify,p0Vec,p1Vec,pClass1): p1=sum(vec2Classify*p1Vec)+log(pClass1) p0=sum(vec2Classify*p0Vec)+log(1.0-pClass1) if p1>p0: return 1 else: return 0

使用算法: 構(gòu)建一個完整的程序,封裝所有內(nèi)容。給定兩個 RSS 源,改程序會顯示最常用的公共詞

函數(shù) localWords() 使用了兩個 RSS 源作為參數(shù),RSS 源要在函數(shù)外導(dǎo)入,這樣做的原因是 RSS 源會隨時間而改變,重新加載 RSS 源就會得到新的數(shù)據(jù)

>>> reload(bayes)>>> import feedparser>>> ny=feedparser.parse('http://newyork.craigslist.org/stp/index.rss')>>> sy=feedparser.parse('http://sfbay.craigslist.org/stp/index.rss')>>> vocabList,pSF,pNY=bayes.localWords(ny,sf)the error rate is: 0.2>>> vocabList,pSF,pNY=bayes.localWords(ny,sf)the error rate is: 0.3>>> vocabList,pSF,pNY=bayes.localWords(ny,sf)the error rate is: 0.55

為了得到錯誤率的精確估計,應(yīng)該多次進行上述實驗,然后取平均值

接下來,我們要分析一下數(shù)據(jù),顯示地域相關(guān)的用詞

可以先對向量pSF與pNY進行排序,然后按照順序打印出來,將下面的代碼添加到文件中:

#最具表征性的詞匯顯示函數(shù)def getTopWords(ny,sf): import operator vocabList,p0V,p1V=localWords(ny,sf) topNY=[];topSF=[] for i in range(len(p0V)): if p0V[i]>-6.0:topSF.append((vocabList[i],p0V[i])) if p1V[i]>-6.0:topNY.append((vocabList[i],p1V[i])) sortedSF=sorted(topSF,key=lambda pair:pair[1],reverse=True) print "SF**SF**SF**SF**SF**SF**SF**SF**SF**SF**SF**SF**SF**SF**" for item in sortedSF: print item[0] sortedNY=sorted(topNY,key=lambda pair:pair[1],reverse=True) print "NY**NY**NY**NY**NY**NY**NY**NY**NY**NY**NY**NY**NY**NY**" for item in sortedNY: print item[0]

函數(shù) getTopWords() 使用兩個 RSS 源作為輸入,然后訓(xùn)練并測試樸素貝葉斯分類器,返回使用的概率值。然后創(chuàng)建兩個列表用于元組的存儲,與之前返回排名最高的 X 個單詞不同,這里可以返回大于某個閾值的所有詞,這些元組會按照它們的條件概率進行排序。

保存 bayes.py 文件,在python提示符下輸入:

>>> reload(bayes)>>> bayes.getTopWords(ny,sf)the error rate is: 0.55SF**SF**SF**SF**SF**SF**SF**SF**SF**SF**SF**SF**SF**SF**howlastman...veteranstillendslateoffownknowNY**NY**NY**NY**NY**NY**NY**NY**NY**NY**NY**NY**NY**NY**someonemeet...apparelrecalledstartingstrings

當(dāng)注釋掉用于移除高頻詞的三行代碼,然后比較注釋前后的分類性能,去掉這幾行代碼之后,錯誤率為54%,,而保留這些代碼得到的錯誤率為70%。這里觀察到,這些留言中出現(xiàn)次數(shù)最多的前30個詞涵蓋了所有用詞的30%,vocabList的大小約為3000個詞,也就是說,詞匯表中的一小部分單詞卻占據(jù)了所有文本用詞的一大部分。產(chǎn)生這種現(xiàn)象的原因是因為語言中大部分都是冗余和結(jié)構(gòu)輔助性內(nèi)容。另一個常用的方法是不僅移除高頻詞,同時從某個預(yù)定高頻詞中移除結(jié)構(gòu)上的輔助詞,該詞表稱為停用詞表。

最后輸出的單詞,可以看出程序輸出了大量的停用詞,可以移除固定的停用詞看看結(jié)果如何,這樣做的花,分類錯誤率也會降低。

完整代碼地址: https://github.com/apachecn/MachineLearning/blob/master/src/python/4.NaiveBayes/bayes.py

來源:羊三 小瑤 / ApacheCN ,只作分享,不作任何商業(yè)用途,版權(quán)歸原作者所有

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的实现贝叶斯分类器_机器学习实战项目-朴素贝叶斯的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产一区二区在线视频观看 | 99久久婷婷国产精品综合 | 中国一级特黄毛片大片久久 | av久久在线 | 在线观看网站黄 | 在线免费观看的av | 男女拍拍免费视频 | 天天av资源 | 99精彩视频在线观看免费 | h文在线观看免费 | 国产亚洲综合在线 | 探花视频免费观看高清视频 | 成人高清在线 | www.狠狠操.com | 麻豆一区二区 | 国产一区二三区好的 | 亚洲香蕉视频 | 国产精品欧美久久久久三级 | 手机色站 | 久久久久久综合 | 一级黄色片网站 | 婷婷午夜天 | 伊人亚洲综合网 | 亚洲成人精品在线观看 | 久久99久久99精品免费看小说 | 欧美极品少妇xxxx | 一级特黄av | 五月婷婷综合在线 | 天天射天天爱天天干 | 中文字幕在线观 | 五月婷婷开心中文字幕 | 国产视频日韩视频欧美视频 | 久久国产露脸精品国产 | 看国产黄色大片 | 福利av影院 | 青青草国产免费 | 亚洲精品五月天 | 激情综合啪 | 91久久精| 日日操网| 久久久免费 | 中日韩在线视频 | 超碰97中文 | 欧美ⅹxxxxxx | 欧美成人在线网站 | 波多野结衣视频一区二区三区 | 日本精品视频在线 | 在线天堂中文www视软件 | 久久久精品国产一区二区三区 | 欧美精品免费在线 | 亚洲精品88欧美一区二区 | 亚洲精品国偷自产在线99热 | 国产 日韩 欧美 在线 | 五月婷婷六月丁香在线观看 | 亚洲一区网 | 久久污视频 | 婷婷久久婷婷 | 国内精品二区 | 九九色在线| 亚洲国产免费看 | 欧美日韩免费在线视频 | 人人爽人人爽人人爽学生一级 | 精品国产一区二区三区四区vr | 一区二区精品久久 | 99视| 夜夜嗨av色一区二区不卡 | 久草免费在线视频观看 | 日韩美精品视频 | 97电影手机 | 午夜.dj高清免费观看视频 | 日韩精品在线看 | 最新国产精品拍自在线播放 | 日本美女xx | 国产男女爽爽爽免费视频 | 一二三区视频在线 | 玖玖视频国产 | 国产精品一区在线观看你懂的 | 日韩黄色大片在线观看 | 国产69精品久久久久久久久久 | 国产久草在线观看 | 亚洲激情在线播放 | 99久免费精品视频在线观看 | 亚洲成人免费 | 久草97| 日韩视频一区二区在线观看 | 久久激情五月丁香伊人 | av网站在线免费观看 | 中文字幕日韩高清 | 久久人人爽av | 国产精品一二 | 久久这里只有精品视频99 | 欧美成人视 | 天天综合导航 | 在线观看www. | 亚洲精品日韩av | 看片黄网站| 精品久久影院 | 91在线小视频 | 日韩一级片网址 | 五月婷在线 | 九色精品免费永久在线 | 综合网伊人 | 亚洲资源一区 | 色午夜 | 97超碰影视 | 日韩免费在线观看视频 | 日韩精品观看 | 婷婷成人在线 | 国产五月婷 | av蜜桃在线 | 99免费在线观看 | 在线欧美a | 激情综合国产 | 特级西西人体444是什么意思 | 亚洲一级电影视频 | 久草综合视频 | 69av久久| 99视频精品视频高清免费 | 操操操日日 | 免费在线激情电影 | 国产青青青 | 国产资源av| 亚洲一区二区三区在线看 | 国产午夜剧场 | 免费无遮挡动漫网站 | 不卡国产视频 | 日韩免费一级电影 | 黄污在线看 | 亚洲91网站 | 色网免费观看 | 欧美精品久久久久久久久久丰满 | 中文字幕在线观看免费高清电影 | 亚洲欧美激情精品一区二区 | 狠狠综合 | 永久免费的av电影 | 中文字幕中文字幕中文字幕 | 久久伊人八月婷婷综合激情 | 精品一区二区三区电影 | 日韩精品aaa | 国产精品高清在线 | 丁香婷婷久久 | 伊人久久av | 丰满少妇久久久 | 国产精品美女免费视频 | 97av在线视频免费播放 | 黄网站免费久久 | www.亚洲激情.com | 久草精品视频 | 中文字幕色网站 | 欧美精品一区二区三区四区在线 | 国产黄色片一级三级 | 少妇bbbb | 国产精品片 | 在线亚洲人成电影网站色www | 亚洲精品欧美精品 | 国产原创在线观看 | 99久e精品热线免费 99国产精品久久久久久久久久 | 国产成人三级 | 国产精品久久久久久久毛片 | 99婷婷狠狠成为人免费视频 | 中文在线免费一区三区 | 日韩av在线免费播放 | 欧美黑人性猛交 | 不卡av在线免费观看 | 亚洲精品久久久蜜桃直播 | 麻豆视频免费入口 | 日韩精品久久久久久中文字幕8 | 99精品国产视频 | 欧美日本啪啪无遮挡网站 | 国产网红在线 | 91免费网址 | 在线婷婷 | 黄色av电影免费观看 | 综合黄色网 | 深爱婷婷 | 激情综合婷婷 | 国产福利小视频在线 | www.伊人色.com | 国产精品亚洲综合久久 | 久久久这里有精品 | 综合久久一本 | 视频在线观看91 | 亚洲美女在线一区 | 国产97在线视频 | 免费影视大全推荐 | 国产精品成人一区二区 | 亚洲毛片视频 | 久久狠狠亚洲综合 | 欧美性视频网站 | 91人网站| 婷婷久久网 | 美腿丝袜一区二区三区 | 国产69精品久久久久久久久久 | 中文字幕视频一区 | 亚洲精品国产第一综合99久久 | 久久精品综合 | 成年人免费在线看 | 一区二区视频在线播放 | 免费看片成人 | 久久99偷拍视频 | 日韩中文字幕在线不卡 | 亚洲综合丁香 | 成人免费观看大片 | 亚洲涩涩一区 | www.天堂av | 亚在线播放中文视频 | 三级黄色三级 | 久久久久久久久久久黄色 | 九色视频网址 | 欧美日韩视频在线 | 国产精品扒开做爽爽的视频 | 精品国产乱码久久久久久1区二区 | 亚洲成aⅴ人片久久青草影院 | www.午夜| 日本久久91 | 天天草天天草 | 亚洲视频精品在线 | 午夜免费在线观看 | 国产一区二区高清 | 国产精品黄色av | 欧美精品免费在线观看 | 麻花豆传媒一二三产区 | 国产99久 | 九九九九色 | 91福利视频一区 | 亚洲精品18日本一区app | 99欧美| 国产精品视频久久久 | 国产视频1区2区3区 久久夜视频 | 日韩中文免费视频 | 日韩色中色 | 9797在线看片亚洲精品 | 欧美一区二区三区在线 | 在线成人av| 91成人在线视频 | 精品国产一区二 | 精品国产乱码一区二区三区在线 | 亚洲精品五月 | 欧美在线aaa | 日韩在线免费高清视频 | 99精品在线观看 | 色中色资源站 | 91麻豆精品国产自产在线游戏 | 97超碰精品| 国产精品美女久久久网av | 精品日本视频 | 97av.com| 免费麻豆视频 | 黄色av电影一级片 | 99精品免费久久久久久久久 | 亚洲综合色丁香婷婷六月图片 | 久久久精品视频成人 | 园产精品久久久久久久7电影 | 在线91色| 狠狠干婷婷 | 蜜臀av夜夜澡人人爽人人桃色 | 久久久精品二区 | 国产在线看 | 亚洲天天看 | 国产福利精品一区二区 | 婷婷色在线 | www.亚洲在线| 精品国产乱码久久久久久1区2匹 | 国产成人99av超碰超爽 | 欧美另类xxxx | 国产精品综合久久久久 | 久久 亚洲视频 | 色是在线视频 | 91热这里只有精品 | 免费高清影视 | 在线 影视 一区 | 国产视频 久久久 | 午夜精品影院 | 成年人免费在线看 | 黄色最新网址 | 欧美性高跟鞋xxxxhd | 国产精品久久久久高潮 | 2024国产精品视频 | 97中文字幕 | 天堂在线视频中文网 | 特级毛片爽www免费版 | 夜夜看av | 久久免费美女视频 | 久久66热这里只有精品 | 一区二区视频免费在线观看 | 五月天激情在线 | 99久久精品电影 | 日本特黄一级片 | 97成人资源 | 成人久久影院 | 色综合久久久久 | 久久精品国产精品亚洲 | 91激情视频在线播放 | 日本精品视频在线观看 | 久久久久久蜜桃一区二区 | 99国产精品| 免费在线看v | 在线观看一二三区 | 久久综合九色欧美综合狠狠 | www..com黄色片 | 国产午夜激情视频 | 亚洲精品乱码久久久久久久久久 | 中文字幕最新精品 | 亚洲综合情 | 亚洲一二三区精品 | 韩日精品中文字幕 | 国产精品久久久久久久电影 | 成人啪啪18免费游戏链接 | 99久久精品国产观看 | 亚洲精品视频一二三 | 国产亚洲视频系列 | 亚洲激精日韩激精欧美精品 | 国产中文字幕亚洲 | 五月精品 | av在线免费播放网站 | 免费av大片 | 国产福利91精品一区二区三区 | 欧美精品亚洲精品日韩精品 | 中文字幕在线观看的网站 | 国产精品毛片久久久久久久久久99999999 | 亚洲小视频在线观看 | 国产一区二区精品久久 | 日韩免费不卡视频 | 日韩免费电影网站 | 在线观看国产一区 | 国产精品午夜在线 | 在线91av| 国产精品久久久久久久久免费看 | 久久tv视频 | 9999精品免费视频 | 国产成人福利在线 | 一区 二区 精品 | 激情网第四色 | 国产在线精品国自产拍影院 | 黄色软件大全网站 | www.天天干.com | 欧美激情第一页xxx 午夜性福利 | 这里有精品在线视频 | 四虎在线永久免费观看 | 国产 日韩 欧美 中文 在线播放 | 日韩三级视频在线观看 | 九九热精品国产 | 国产成人三级在线播放 | 最新黄色av网址 | 日韩黄色免费看 | 五月天狠狠操 | av免费网页 | 黄色免费国产 | 91福利视频免费观看 | 中文字幕在线观看完整 | 日韩在线第一区 | 狠狠色狠狠色合久久伊人 | 久久99国产精品久久99 | 综合网天天色 | 久草视频在线播放 | 亚洲最新在线 | 97精品久久人人爽人人爽 | 国产网站色 | 国产96av | 久久久国产99久久国产一 | www.香蕉| 成人h在线观看 | 中文字幕av最新更新 | 日日夜夜天天人人 | 久久久视频在线 | 日韩av片免费在线观看 | 在线观看国产一区 | 国产美女精品久久久 | 久草在线视频在线观看 | 91中文字幕在线 | 午夜精品视频一区二区三区在线看 | 97色在线观看免费视频 | 丁香五婷 | 日韩精品在线一区 | 国产剧情一区 | 国产91精品高清一区二区三区 | 九九九九九九精品 | 最近中文字幕视频网 | 91视频首页 | 亚洲成 人精品 | 911国产在线观看 | 西西4444www大胆视频 | 最近2019中文免费高清视频观看www99 | 一区二区欧美在线观看 | 手机av在线不卡 | www.av中文字幕.com | 国产精品久久久久一区二区三区共 | 在线观看av国产 | 久久免费视频播放 | 色婷婷久久一区二区 | 久久久久麻豆v国产 | 亚洲精品午夜一区人人爽 | 久久狠狠亚洲综合 | 久久精品首页 | 中文字幕观看视频 | 日韩在线视频播放 | 天天操天天干天天爽 | 成人h视频在线 | 97国产在线视频 | 91av短视频| 黄网站app在线观看免费视频 | 久久久久久久久免费 | 中文国产在线观看 | 中午字幕在线观看 | 午夜精品一区二区三区在线 | 色综合色综合久久综合频道88 | 国产污视频在线观看 | 亚洲天堂网在线观看视频 | 亚洲精品视频在线观看网站 | 精品免费久久久久 | 92国产精品久久久久首页 | 一级片在线 | 中文字幕在线观看网址 | 性色av免费在线观看 | 欧美亚洲国产日韩 | 狠狠搞,com | 欧洲成人av | 成人一级在线观看 | 国产精品久久久久久久久久久不卡 | 成年人在线免费看片 | 99热这里有精品 | 激情av资源网 | 日韩最新av在线 | a在线免费 | 色橹橹欧美在线观看视频高清 | 中文在线中文a | 最近日本mv字幕免费观看 | 91天天视频| 色播五月婷婷 | 黄在线| 韩国精品福利一区二区三区 | 丰满少妇在线观看网站 | 久久99久久99免费视频 | 久久免费精品视频 | jizz欧美性9| 亚洲国产免费网站 | 综合色婷婷 | 四虎成人精品永久免费av | 狠狠色丁香婷婷综合久小说久 | av中文字幕在线观看网站 | 九九热视频在线免费观看 | 97涩涩视频 | 免费进去里的视频 | 久久在现视频 | 午夜免费福利片 | av福利在线| 亚洲国产人午在线一二区 | 精品国产一区二区三区久久久蜜臀 | 中日韩免费视频 | 国产精品九色 | 精品九九久久 | 黄色一级在线观看 | 夜夜操天天摸 | 色小说在线 | 精品国产成人在线影院 | 这里只有精品视频在线观看 | 中文字幕一区二区三区精华液 | 亚洲第一香蕉视频 | 亚洲成人频道 | 一级黄色片毛片 | 999热视频 | 久久超碰免费 | 国产精品一区二区av影院萌芽 | 欧美日韩免费看 | 伊人春色电影网 | 日韩精品不卡在线观看 | 久久观看免费视频 | 国产最新网站 | 日日夜夜天天射 | 久精品视频在线观看 | 国产 字幕 制服 中文 在线 | 一区二区三区播放 | 亚洲电影在线看 | 国产精品99久久免费观看 | 国产剧情av在线播放 | 麻豆 91 在线 | 在线黄色av | 日韩剧情 | 天天色综合三 | 亚洲国产成人精品电影在线观看 | 特级片免费看 | 亚洲经典在线 | 久久网站最新地址 | 国产无遮挡又黄又爽在线观看 | 在线观看久 | 国内精品久久久久久久影视麻豆 | 极品嫩模被强到高潮呻吟91 | 国产成人高清在线 | 日韩欧美在线播放 | 99爱在线 | 日本精品在线 | 国产免费亚洲高清 | 在线导航av| 深夜激情影院 | 中文字幕av在线不卡 | 亚洲日本va午夜在线影院 | 又黄又爽又色无遮挡免费 | 国产精品一区二区久久 | 国产69精品久久久久99 | 国产精品情侣视频 | 美女免费视频网站 | 国产91成人 | 五月开心六月婷婷 | 麻花传媒mv免费观看 | av成人在线观看 | 日韩激情久久 | 三级小视频在线观看 | 超碰成人免费电影 | 久久99精品久久久久蜜臀 | 天天av在线播放 | 成人欧美日韩国产 | 91成品人影院 | 国产手机在线视频 | 日韩在线观看视频免费 | 亚洲mv大片欧洲mv大片免费 | 中文有码在线 | 国产在线超碰 | 国产又粗又猛又爽 | 久久婷婷精品视频 | 色国产精品一区在线观看 | 99视频免费播放 | 国产一区二区三区免费在线观看 | 日韩在线视频网 | 欧洲亚洲精品 | 久艹在线播放 | 国产高清av在线播放 | 五月天久久 | a资源在线| 国产一区国产二区在线观看 | 国产h片在线观看 | 亚洲综合成人婷婷小说 | 在线免费三级 | 99国内精品久久久久久久 | 国产黄色在线看 | 久久开心激情 | 五月天激情视频 | 日日干日日色 | 99在线免费观看视频 | 97超视频免费观看 | 中文字幕中文字幕中文字幕 | 国产精品午夜久久久久久99热 | 欧美一区二区在线 | 国产精品久久久久久久电影 | 久99久精品视频免费观看 | 国产精品18久久久久久首页狼 | 在线电影 一区 | www.色五月| 狠狠网 | 亚洲一区精品人人爽人人躁 | 欧美在线99 | 九九综合久久 | 亚洲精品在线一区二区 | 99 色| 日韩成人免费观看 | 高清国产午夜精品久久久久久 | 天天色综合三 | 超级av在线| 国产精品av在线 | 婷婷六月综合网 | 狠狠色丁香九九婷婷综合五月 | 狠狠做深爱婷婷综合一区 | 最新久久久 | 亚洲国产精彩中文乱码av | 成人羞羞免费 | 国内外成人免费在线视频 | 天天综合色网 | 五月婷影院| 91亚洲永久精品 | 久久综合桃花 | 免费人成网ww44kk44 | 在线中文字幕观看 | www.久久久.cum| 久久久免费视频播放 | av免费网站| 国产高清一区二区 | 国产精品乱码高清在线看 | 欧美日韩国产在线一区 | 中文字幕在线免费观看 | 亚洲色图激情文学 | 亚洲国产精品500在线观看 | 国产成人黄色网址 | 日本精品久久久久 | 韩国一区二区av | 最近日本韩国中文字幕 | 99久久精品国产毛片 | 欧美在线视频一区二区三区 | 日韩黄色在线观看 | 欧美一进一出抽搐大尺度视频 | 亚洲综合在线五月 | 激情五月激情综合网 | 手机av观看 | 久章操 | 成年人在线观看免费视频 | 精品一区二区三区四区在线 | 日本久久精品 | 久草精品视频 | 91看片看淫黄大片 | 久草视频在线免费 | 日日色综合 | 精品久久久久久久久亚洲 | 国产丝袜 | 香蕉网址| 成人黄在线 | 丁香六月综合网 | 国产福利a| 国产精品久久久一区二区 | 亚洲国产成人高清精品 | www.成人精品| 精品成人网 | 久久精品影片 | 色欧美成人精品a∨在线观看 | 国产精品女主播一区二区三区 | 国产97在线视频 | 国产视频1区2区3区 久久夜视频 | 久久久久久久久久电影 | 97视频在线观看成人 | 奇米网在线观看 | 五月天精品视频 | 国产亚洲情侣一区二区无 | 96久久 | 日韩成人免费观看 | 手机看片久久 | 麻豆你懂的 | 日本系列中文字幕 | 日韩欧美视频在线播放 | 亚洲精品在线观看免费 | 深爱婷婷网 | 精品国产乱码久久久久久1区2匹 | 国产精品毛片一区二区在线 | 亚洲无吗视频在线 | 亚洲区视频在线 | 操操操日日日干干干 | av不卡中文 | 色黄久久久久久 | 国产成人久久久77777 | 一区在线观看 | 精品一区二区免费视频 | 久草在线视频免赞 | 亚洲国产97在线精品一区 | 成年人国产在线观看 | a级一a一级在线观看 | 久久不射影院 | 国产中文字幕第一页 | 五月婷婷黄色 | 国产午夜精品一区二区三区在线观看 | 欧美a级免费视频 | 久久不射影院 | 日本一区二区三区免费观看 | 999久久a精品合区久久久 | 日韩精品免费一区二区三区 | 久久不卡免费视频 | 丁香激情网 | 国产精品久久久精品 | 天天操夜操视频 | 蜜桃传媒一区二区 | 色婷婷www | 在线97| 免费看黄色毛片 | 人人添人人澡人人澡人人人爽 | 亚洲色图美腿丝袜 | 黄色a大片 | 免费看国产黄色 | 免费观看一级一片 | 五月花丁香婷婷 | 日韩中文幕 | 在线只有精品 | 日日日视频 | 天天夜夜操| 国产精品色婷婷视频 | 99视频免费播放 | 国内视频一区二区 | 国产精品久久久久久久久久三级 | 日韩精品视频免费看 | 黄色片网站免费 | 天天射狠狠干 | 最近最新mv字幕免费观看 | 日韩在线观看小视频 | 少妇高潮流白浆在线观看 | 91视频午夜| 2023av| 成人av片免费观看app下载 | 韩国av免费在线观看 | 99热精品在线 | 在线国产能看的 | 日韩最新中文字幕 | 国产午夜麻豆影院在线观看 | 精品99久久| 丁香五月亚洲综合在线 | 国产黄色播放 | 久久久麻豆 | 西西4444www大胆视频 | 国产美女网 | 欧美精品天堂 | 99r精品视频在线观看 | 日本成址在线观看 | 顶级欧美色妇4khd | 中国一级特黄毛片大片久久 | 日韩大片在线免费观看 | 国产久草在线 | a久久久久久 | 久久久久亚洲精品中文字幕 | 久草视频中文 | 国产69精品久久久久99 | 亚洲第一成网站 | 午夜精品一区二区三区在线视频 | 91视频啊啊啊 | 中文在线字幕免费观看 | 伊人射 | 成人国产综合 | 亚洲第一久久久 | 99视屏| 久久a免费视频 | 色黄久久久久久 | 久久久www成人免费毛片麻豆 | 亚洲视频99 | 免费观看一级成人毛片 | 国产视频亚洲视频 | 美女网色| 午夜99| 中文字幕av在线 | 国产日韩精品久久 | 免费成人在线网站 | 免费在线观看av网站 | 在线影院av| www.夜夜骑.com | 精品国精品自拍自在线 | av在线免费在线观看 | 国产第一福利 | 日韩在线观看一区二区 | 久久久五月天 | 亚洲丝袜中文 | 久久久久亚洲精品男人的天堂 | 91系列在线观看 | 国产成人精品久久久久蜜臀 | 人人澡人人爱 | 国产精品a成v人在线播放 | 主播av在线 | 不卡av电影在线 | 成人全视频免费观看在线看 | 日韩欧美xxxx | 国产一线天在线观看 | 成人在线免费看视频 | 日韩在线免费播放 | www.色午夜.com | 91av国产视频 | 在线观看国产91 | 国产亚洲在线视频 | 久久avav| 久久视频99 | 日韩午夜精品福利 | 美女福利视频在线 | 亚洲视频第一页 | 国产精品1区2区3区在线观看 | 国产精品一区二区三区观看 | 久久九九久久九九 | 亚洲第一av在线 | 久久97久久 | 亚洲免费公开视频 | 色视频成人在线观看免 | 免费a级大片 | 在线 精品 国产 | 奇米影视四色8888 | 丰满少妇高潮在线观看 | aaa毛片视频 | av片在线观看免费 | 在线精品播放 | 欧美日韩亚洲精品在线 | 免费一区在线 | 国产精品美女www爽爽爽视频 | 成人一区在线观看 | 狠狠躁夜夜av | 91人人爽久久涩噜噜噜 | 免费在线观看一区二区三区 | 在线观看激情av | 丁香婷婷成人 | 激情综合久久 | 日日草视频 | 久久视频免费观看 | 国产成人精品一区二区三区在线 | 久久,天天综合 | 国产a级片免费观看 | 日本天天色 | 久久久人人人 | 精品国产不卡 | 国产高清视频在线播放一区 | 久久精品三 | 欧美综合在线观看 | 六月丁香激情综合 | 国产高清99| 国产高清视频在线播放一区 | 中文字幕日本特黄aa毛片 | 亚洲精品一区二区久 | 欧美久久久一区二区三区 | 欧美韩国日本在线 | 亚洲精品久 | 欧美疯狂性受xxxxx另类 | 欧美精品国产综合久久 | 国产伦理久久精品久久久久_ | 亚洲午夜精品在线观看 | 极品久久久 | 日韩大片在线播放 | 2023国产精品自产拍在线观看 | 91在线在线观看 | 又爽又黄在线观看 | 国产精品美女久久久久久久久久久 | 日韩免费在线看 | av+在线播放在线播放 | 99视频在线免费观看 | 波多野结衣在线观看一区二区三区 | 欧美成人91 | 国产剧情av在线播放 | 99re视频在线观看 | 特级黄色视频毛片 | 日韩美精品视频 | 91插插插免费视频 | 亚洲精品美女久久久久网站 | 五月天激情电影 | 久久久久二区 | 国产99久久久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 黄色com| 99热手机在线 | 国产一区视频导航 | 日日操天天射 | 超碰97中文 | 国产成人99久久亚洲综合精品 | 欧美色道 | 精品视频免费 | 国产精品正在播放 | 国产精品久久久久久电影 | 免费观看国产精品视频 | 狠狠色狠狠色 | 亚洲经典中文字幕 | 久久免费视频网 | 成人av一区二区在线观看 | 中文字幕一区二区三区在线视频 | 在线观看av片 | 婷婷在线不卡 | 天天玩天天干天天操 | 久热这里有精品 | 在线观看aaa | 久久综合九色九九 | 亚洲天堂在线观看完整版 | 日韩欧美高清视频在线观看 | 日韩激情视频在线 | 二区三区精品 | 中文字幕成人一区 | 欧美精品一二 | 91av中文字幕 | 日韩免费一区 | 九月婷婷综合网 | 久久中国精品 | 久久精品国产精品亚洲 | 天天天色综合a | 国产一区二区三区 在线 | 97在线看 | 久草视频免费在线观看 | 免费看一级黄色 | 国产成人久久精品77777 | 国产精品免费观看国产网曝瓜 | 亚洲人久久 | 日韩一区二区三区高清免费看看 | 蜜臀av在线一区二区三区 | 午夜神马福利 | 天天爱天天操 | 久久精精品视频 | 久草在线视频资源 | 四虎永久免费在线观看 | 亚洲精品高清一区二区三区四区 | 六月婷婷网 | 亚洲黄色一级视频 | 在线精品亚洲一区二区 | 一级一片免费观看 | 免费看的毛片 | 97在线免费 | av看片在线 | 看国产黄色大片 | 欧美aa在线 | 免费看黄色大全 | 蜜臀av网址| 亚洲区另类春色综合小说校园片 | 91免费版在线 | 天天搞夜夜骑 | 欧美日韩精品在线观看 | 九九视频在线播放 | 狠狠操操网 | 国产黄色片免费 | 国产一级片不卡 | 国产第一页精品 | www.亚洲在线| 成人久久18免费网站图片 | 亚洲黄色在线免费观看 | 国内丰满少妇猛烈精品播放 | 婷婷色吧 | 精品久久久久久亚洲综合网站 | 高清精品久久 | 日韩乱色精品一区二区 | a级片韩国 | 国产自产在线视频 | 国产精品门事件 | 婷婷av在线| 91成人天堂久久成人 | 日韩专区在线 | 国产精品亚洲人在线观看 | 亚洲精品乱码久久久久久写真 | 国产精品高潮呻吟久久av无 | 国产经典 欧美精品 | 深夜免费小视频 | 亚州精品视频 | 69精品久久 | 日韩在线在线 | 国产成人精品一区二 | 在线观看日本高清mv视频 | 国产一级免费电影 | 精品免费久久久久久 | 天天综合狠狠精品 | 久久综合九色综合欧美就去吻 | 久草五月 | 在线亚洲观看 | 麻豆成人小视频 | 91完整版观看 | 亚洲综合成人婷婷小说 | 成人欧美一区二区三区黑人麻豆 | 啪嗒啪嗒免费观看完整版 | 国产热re99久久6国产精品 | 久久久久久高清 | 久操中文字幕在线观看 | 黄色精品一区二区 | 亚洲视频免费在线观看 | 夜添久久精品亚洲国产精品 | 欧美一区二区在线免费看 | 欧美成人91 | 欧美激情精品久久久久久免费印度 | 丁香色综合| 97看片吧| 国产999精品久久久 免费a网站 | 免费福利片2019潦草影视午夜 | 天天综合网在线 | 久久成人综合 | 久久久久久福利 | 九热在线| 91精选在线 | 激情狠狠干 | 国产精品初高中精品久久 | www.看片网站 | 一级黄色大片在线观看 | av在线8| 色视频 在线 | 91试看| 超碰国产在线观看 | 制服丝袜欧美 | 欧美福利在线播放 | 国产精品一区二区三区久久 | 国产精品美女久久久久久 | 日韩在线观看视频一区二区三区 | 91在线视频播放 | 在线 你懂 | 中文字幕高清在线 | 在线观看网站你懂的 | 91香蕉视频 | 天天干天天摸 | 丁香九月激情 | 日韩视频中文字幕 | 97操操| 日韩视频一区二区在线观看 | 免费成视频 | 久久久国产精品一区二区中文 | 久久99热这里只有精品 | 国产视频在线播放 | 中文字幕激情 | 国产又粗又长的视频 | 国产小视频国产精品 | 成人久久久久久久久久 | 亚洲人视频在线 | 国产视频精品网 | 97在线成人 | 国产精品成人一区二区 | 精品在线视频一区二区三区 | 美女网站黄免费 | 久久免费大片 | 噜噜色官网 | 久久精品欧美日韩精品 | 日本公妇色中文字幕 | 97在线免费视频 | 免费视频久久久久 | 久99久精品视频免费观看 | 国产中文字幕视频 | 中文字幕电影一区 | 亚洲在线看 | 久久免费高清视频 | 99精品免费久久久久久久久日本 | 欧美一级视频免费看 | 胖bbbb搡bbbb擦bbbb | 精品一区二区免费在线观看 | 亚洲精品国产精品国自产在线 | 国产探花在线看 | 韩日三级av | 亚洲黄色小说网址 |