精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

自己動手寫貝葉斯分類器給圖書分類

移動開發(fā)
首先,這是一個機(jī)器學(xué)習(xí)初學(xué)者兼非數(shù)學(xué)科班出身的非典型工程師的自學(xué)記錄。所以本文不會特別理論,也不會太深入地講解公式,但是會非常有目的性,針對一個特別現(xiàn)實(shí)的問題,從頭開始分享解決方案,包括某些優(yōu)化方案。

[[141939]]

背景與目的

首先,這是一個機(jī)器學(xué)習(xí)初學(xué)者兼非數(shù)學(xué)科班出身的非典型工程師的自學(xué)記錄。所以本文不會特別理論,也不會太深入地講解公式,但是會非常有目的性,針對一個特別現(xiàn)實(shí)的問題,從頭開始分享解決方案,包括某些優(yōu)化方案。

從問題開始

我們要解決的問題,是對圖書進(jìn)行二元分類。分類的依據(jù)是圖書的tag。這些tag可能來自專家,或者編輯,或者用戶。例如“外國文學(xué)”,“偵探”,“計算機(jī)”,“python”都屬于tag。

出于我們的小小實(shí)驗項目的需求,簡化問題,我們現(xiàn)在要把圖書分為“人文”或者“非人文”兩類。所以,正如上文所說,這是一個對圖書進(jìn)行的二元分類問題。

例如,《計算機(jī)科學(xué)導(dǎo)論》,它的標(biāo)簽有“計算機(jī)”“科學(xué)”“經(jīng)典”“導(dǎo)論”,它屬于“非人文”。《麥田里的守望者》,它的標(biāo)簽有“小說”“文學(xué)”“美國”,它屬于“人文”。我們的分類器有能力根據(jù)一本書的標(biāo)簽,自動地將其歸類為“人文”或者“非人文”。試試看,蠻有意思的!

為了解決這個問題,我們給出若干個前提:

  • 任何一本書只可能歸類為“人文”或“非人文”中的一類
  • 1本書有1個或以上的tag
  • 所有書都沒有“人文”和“非人文” 的tag(什么?你不相信?看看亞馬遜京東就知道了)
  • 你需要很少的概率知識,比如什么是概率?條件概率又是什么?

使用python和numpy

我們將使用python作為這個實(shí)驗項目的編程語言。

numpy是一個python的科學(xué)計算庫,需要你自行安裝。因為我們的程序涉及一些簡單的矩陣運(yùn)算,用numpy可以大大簡化編程工作量。

基本原理

貝葉斯分類器的工作原理

還是需要了解一定的理論知識的,別擔(dān)心,這部分很快就過去。我會直接結(jié)合要解決的問題來講解。

基本上,用貝葉斯分類是要解決一個這樣的問題:已知一本書有這些tag:tag1,tag2,tag3......它屬于“人文”分類的概率是多少?屬于“非人文”分類的概率呢?

假設(shè)p1表示在這種情況下,它屬于“人文”的概率,p2表示這種情況下,它屬于“非人文”的概率。

如果p1>p2,那么這本書就屬于“人文”,反過來就是“非人文”。我們不考慮p1=p2的情況。

很簡單,不是么?

所以,問題就變成了,如何通過tag1,tag2,tag3...來計算p1和p2?畢竟,只要知道了這兩個值,我們的最終問題就解決了。

條件概率

其實(shí),這是一個條件概率的問題。所謂條件概率,就是求:在已知b發(fā)生的情況下,a發(fā)生的概率。我們寫做:p(a|b)。

結(jié)合我們的實(shí)際問題,那就是在tag1,tag2,tag3...已經(jīng)發(fā)生的情況下(也就是這本書的tag就是tag1,tag2,tag3...),這本書屬于“人文”和“非人文”的概率。我們寫做:
p(cate1|tag1,tag2,tag3...) 意思是在tag1,tag2,tag3...發(fā)生的情況下,這本書屬于cate1的概率(cate1=“人文”)

p(cate2|tag1,tag2,tag3...) 意思是在tag1,tag2,tag3...發(fā)生的情況下,這本書屬于cate2的概率(cate2=“非人文”)

這里的p(cate1|tag1,tag2,tag3...)其實(shí)就是上面說的p1,我們這里用更為專業(yè)的方法來寫。

條件概率怎么求呢?這就是貝葉斯公式:

p(a|b) = p(b|a) * p(a) / p(b)

這個意思就是:想要求p(a|b),而你又知道p(b|a),p(a)和p(b)的值,那你就可以通過p(b|a)*p(a)/p(b)來求得p(a|b)。

換成我們要解決的實(shí)際問題,等于:

p(cate1|tag1,tag2,tag3...) = p(tag1,tag2,tag3...|cate1) * p(cate1) / p(tag1,tag2,tag3...)

翻譯為人話,那就是你想求p(cate1|tag1,tag2,tag3...),而你現(xiàn)在知道:

  • p(tag1,tag2,tag3...|cate1)的值,也就是你知道在一本書已經(jīng)被分類為“人文”的情況下,tag1,tag2,tag3...一起出現(xiàn)的概率
  • p(cate1),也就是所有被標(biāo)記為“人文”分類的書,(在訓(xùn)練集中)在所有書(“人文”和“非人文”)中出現(xiàn)的概率
  • p(tag1,tag2,tag3...),也就是tag1,tag2,tag3...(在訓(xùn)練集)所有tag中出現(xiàn)的概率

也就是說,我們只要挨個求出上述3項,我們就可以求出p(cate1|tag1,tag2,tag3...)了。同樣,p(cate2|tag1,tag2,tag3...)也可以求出。

這里有個值得注意的技巧,上述3項中,其實(shí)第3項不需要我們計算。因為我們的目的是比較p(cate1|tag1,tag2,tag3...)與p(cate2|tag1,tag2,tag3...)的大小,不是為了得到實(shí)際的值,由于上述公式里的分母p(tag1,tag2,tag3...)是一樣的,所以,我們只需要比較分子的大小就可以了。也就是比較:

p(tag1,tag2,tag3...|cate1) * p(cate1),

與p(tag1,tag2,tag3...|cate2) * p(cate2)的大小

這樣可以省去我們一些計算。

樸素貝葉斯

那么,如何計算p(tag1,tag2,tag3...|cate1)呢?這里要用到樸素貝葉斯的概念,就是說,我們認(rèn)為,在一本書中的標(biāo)簽里,每個標(biāo)簽都是相互獨(dú)立的,與對方是否出現(xiàn)沒有關(guān)系。也就是說“計算機(jī)”和“經(jīng)典”出現(xiàn)的概率互不相關(guān),不會因為“計算機(jī)”出現(xiàn)了就導(dǎo)致“經(jīng)典”出現(xiàn)的概率高。

既然是相互獨(dú)立,那么,p(tag1,tag2,tag3...|cate1)就等于:

p(tag1|cate1) x p(tag2|cate1) x p(tag3|cate1) x ...

p(tag1,tag2,tag3...|cate2)就等于:

p(tag1|cate2) x p(tag2|cate2) x p(tag3|cate2) x ...

也就是說,我們可以計算每一個tag,分別在“人文”和“非人文”書籍的所有tag中出現(xiàn)的概率,然后將它們乘起來,就得到我們想要的。

舉例分析

我們現(xiàn)在有一本書《計算機(jī)科學(xué)導(dǎo)論》,它的標(biāo)簽是“計算機(jī)”“科學(xué)”“理論”“經(jīng)典”“導(dǎo)論”,我們想知道在這幾個標(biāo)簽出現(xiàn)的情況下,《計算機(jī)科學(xué)導(dǎo)論》分別屬于“人文”和“非人文”的概率。

那么,我們已經(jīng)有了什么呢?幸運(yùn)的是,我們目前手頭有10本書,已知其中6本是“人文”,4本是“非人文”。這10本書,經(jīng)過排重,一共有70個不同的標(biāo)簽,“計算機(jī)”,“科學(xué)”,“理論”,“導(dǎo)論”也在其中。

基于此,我們可以得出,p(cate1)=6/10=0.6,p(cate2)=1-0.6=0.4。也就是說“人文”書在所有書中的概率是0.6,“非人文”是0.4。

接下來就是p(tag1,tag2,tag3...|cate1)和p(tag1,tag2,tag3...|cate2)了。也就是,我們要算出,在“人文”類里的所有書中,“計算機(jī)”“科學(xué)”“理論”“經(jīng)典”“導(dǎo)論”這幾個tag在“人文”書的所有tag里出現(xiàn)的概率。同樣,我們還要算出,在“非人文”類里的所有書中,上述這幾個tag在所有“非人文”書中的所有tag里出現(xiàn)的概率。計算的方法,就是將每個tag在“人文”和“非人文”中出現(xiàn)的概率,相乘,然后再分別乘以0.6和0.4。

然后比較一下大小就可以了。也就是比較p(cate1) x p(tag1,tag2,tag3...|cate1)與p(cate2) x p(tag1,tag2,tag3...|cate2)的大小。

開始動手

1.準(zhǔn)備訓(xùn)練集

幾乎所有的機(jī)器學(xué)習(xí)都需要訓(xùn)練集。貝葉斯分類也一樣。事實(shí)上,我們上面所說的我們##已知##的數(shù)據(jù),就是訓(xùn)練集。上面例子中舉出的那10本書,以及這10本書所有排重后的tag,就是我們的訓(xùn)練集;而0.6和0.4這兩個概率,還有p1(tag1,tag2,tag3...|cate1)和p2(tag1,tag2,tag3...|cate2),就是我們基于訓(xùn)練集的數(shù)據(jù)計算出來的,機(jī)器學(xué)習(xí)管這叫“訓(xùn)練”。

基于我們的問題,我們需要準(zhǔn)備100本書,人為地分為“人文”和“非人文”兩類,并且收集將這些書的所有tag。這些書如何獲得?你可以爬取亞馬遜或者豆瓣上的書籍資源。

2.形成tag集

將上述所說的tag,用python里的列表來保存,我們令其為dicts.dicts里的每一個元素是一個tag,例如:

dicts = ['科學(xué)','理論','c++']這樣的形式。

3.計算訓(xùn)練集中“人文”和“非人文”的概率

非常簡單,如我們的例子所說,假設(shè)這訓(xùn)練集中的這100本書,有60本是“人文”,那么p(cate1)=60/100=0.6。p(cate2)=1-p(cate1)=0.4。這里我們用變量:

pcate1 = 0.6
pcate2 = 0.4

4.計算tag集中每個tag在訓(xùn)練集“人文”書籍中的tag出現(xiàn)的概率

首先,我們基于訓(xùn)練集構(gòu)造一個列表,這個列表里的每一項又是一個列表,這個列表里的每一項,不是1就是0。1表示這個詞典中這個位置的tag是這本書的一個tag。

舉例:假設(shè)我們的dicts是這樣的:

['計算機(jī)','小說','心理','科學(xué)','編程','行為','導(dǎo)論','經(jīng)典','游記','美國']
我們有這樣一個列表:tag_vector_cate1
[
[0,1,0,0,0,0,0,1,1],
[0,0,1,0,0,0,0,1,0],
..............
]

這個列表對應(yīng)的是“人文”類。

每一行代表訓(xùn)練集中“人文”類的一本書。***行對應(yīng)的書是《麥田里的守望者》,它的標(biāo)簽是“小說”,“經(jīng)典”,“美國”。第二行對應(yīng)的書是《可預(yù)測的非理性》,它的標(biāo)簽是“心理”,“行為”,“美國”。注意,我們是用整個tag集dicts來表示一本書的tag。所以,***行第1列(我們從0開始計數(shù))的1,表示《每天里的守望者》有一個'小說'的tag(對應(yīng)dicts里的第1列);***行第2列的0,表示《麥田里的守望者》這本書沒有'心理'這個tag(對應(yīng)dicts里的第2列)。同理,我們看到***行和第二行的第7列都是1,說明《麥田里的守望者》和《可預(yù)測的非理性》都有'美國'這個tag。

有了這樣的數(shù)據(jù),我們就很好計算了。現(xiàn)在以計算p(tag1|cate1)為例。對于tag1,我們計算出在訓(xùn)練集里“人文”的所有書中,tag1出現(xiàn)了多少次。例如:在訓(xùn)練集里,“人文”有60本,其中40本書都有“經(jīng)典”這個tag,那么我們就令num_of_tag1=40。按照這個方法,我們求出每個tag出現(xiàn)了多少次,比如:num_of_tag2=32,num_of_tage=18......

然后,我們求出在“人文”類里,所有書的tag標(biāo)簽總數(shù)(注意這里是不排重的)。例如“人文”類有2本書,***本書的標(biāo)簽是“散文”“經(jīng)典”“外國”,第二本是“經(jīng)典”“小說”。那么,所有書的tag標(biāo)簽總數(shù)就是3+2=5。現(xiàn)在,我們求出訓(xùn)練集里所有100本的tag標(biāo)簽總數(shù)。假設(shè)總數(shù)是700。我們令total_cate1=700。

于是,tag1在“人文”類里出現(xiàn)的概率:p(tag1|cate1) = num_of_tag1 / total_cate1 = 40/700 = 0.057。同理,我們得出p(tag2|cate1),p(tag3|cate1)...

利用numpy,我們可以很方便地用幾句代碼來實(shí)現(xiàn)這個過程。

  1. from numpy import * 
  2. num_tags_cate1 = ones(len(dicts)) #(1
  3. total_cate1 = 2.0 #(2
  4. for item in tag_vector_cate1: num_tags_cate1 += item #(3) total_cate1 += sum(item) #(4) p_tags_cate1 = num_tags_cate1 / total_cate1 #(5

這里做一下說明。
(1)代碼,表示生成一個numpy數(shù)組。ones()是numpy的函數(shù),返回一個填充了數(shù)值1的numpy數(shù)組,參數(shù)是這個數(shù)組的長度。例如:temp=ones(3),表示生成了一個numpy數(shù)組[1,1,1]并返回給了temp。所以,(1)代碼就是以訓(xùn)練集的tag集dicts的長度為參數(shù),生成一個和dicts等長的填充了1的numpy數(shù)組,返回給num_tags_cate1。為什么要和dicts登長?還記得吧,我們是以整個字典集來表示一本書的。我們要計算的就是這個dicts里的每一個tag的概率,并放到一個數(shù)組里。num_tags_cate1就是這個數(shù)組。至于這個數(shù)組為什么要填充1,稍后會說明。

(2)total_cate1 = 2.0。total_cate1是分母,分母不能是0,所以我們要令其初始值不為0。為什么是2.0?稍后會說明。

(3)num_tags_cate1 += item。item顯然是一個python的列表,就是我們剛才說的[0,1,0,0,0,0,0,1,1]。當(dāng)你用一個numpy數(shù)組加上一個python的list時,numpy會幫你做對應(yīng)項目的計算,相當(dāng)于重載了+。例如,a是一個numpy數(shù)組:[1,2,3,5,0],b是一個python的list:[0,0,3,2,1]。a + b = [1,2,6,7,1],結(jié)果是一個numpy數(shù)組。在這個例子里,相當(dāng)于“小說”,“經(jīng)典”,“美國”這3個標(biāo)簽的數(shù)量分別增加了1。

(4)把每本書出現(xiàn)的所有tag的數(shù)量相加。sum(item)也是numpy的函數(shù),作用是將item里的每一項相加。例如:sum([2,5,-1]),其結(jié)果2+5+(-1)=6。假如item是這樣的一個list:[0,1,0,0,0,0,0,1,1],對應(yīng)的是《麥田里的守望者》,它的標(biāo)簽分別是“小說”“經(jīng)典”“美國”,相當(dāng)于標(biāo)簽總數(shù)增加了3。

(5)很明顯,我們用num_tags_cate1去除以total_cate1,這也是numpy重載了“/”運(yùn)算符,例如[2,4,6]/2,相當(dāng)于每一項分別除以2,***得到一個numpy數(shù)組,也就是[1,2,3]。在這個例子里,就相當(dāng)于我們分別用tag1,tag2,tag3...出現(xiàn)的次數(shù)去除以標(biāo)簽的總數(shù)量,并得到一個numpy數(shù)組p_tags_cate1。這個數(shù)組里的每一項是一個概率值,代表其對應(yīng)的tag在cate1(“人文”)類別里出現(xiàn)的概率。

同樣,我們可以計算出p_tags_cate2。也就是每個tag在cate2(“非人文”)里出現(xiàn)的概率。

5.現(xiàn)在我們有什么

來到這里,我們已經(jīng)有了幾乎所有的東西。回憶一下貝葉斯分類的公式:

p(cate1|tag1,tag2,tag3...) = p(tag1,tag2,tag3...|cate1) x p(cate1) / p(tag1,tag2,tag3...)

我們前面討論過,分子可以忽略,不計算,也就是不需要理會分母p(tag1,tag2,tag3...)。

進(jìn)一步地,按照樸素貝葉斯理論,分子等于:

p(tag1,tag2,tag3...|cate1) x p(cate1) = p(tag1|cate1) x p(tag2|cate1) x p(tag3|cate1) x ... x p(cate1)

p(cate1)就是等于上面所說的pcate1。

p(tag1|cate1),p(tag2|cate1)......就是我們上面得出的numpy數(shù)組p_tags_cate1里的每一項。我們只需要把它們相乘起來,就得到p(tag1|cate1) x p(tag2|cate1) x ...... !

來到這里,我們要解釋一下,為什么上文的代碼用1來填充num_tags_cate1。如果我們用0來填充,當(dāng)某個tag一直為0時(雖然理論上不可能出現(xiàn)),整個分子相乘的結(jié)果為0,這樣***的值就變?yōu)?了,影響了結(jié)果。所以,為了避免這種情況,我們認(rèn)為每個tag至少要出現(xiàn)1次,所以我們用ones來填充。這樣,最壞情況下,num_tags_cate1=[1,1,1,.....]。

而total_cate1=2.0,就是對應(yīng)當(dāng)num_tags_cate1=[1,1,1,...]時,那么我們認(rèn)為每個tag出現(xiàn)的概率是0.5(1/2.0),這是一個可以調(diào)節(jié)的參數(shù),但是要記住不要令total_cate1=1.0。如果這樣,那么每個tag出現(xiàn)的概率變成1了,大有問題。

6.利用訓(xùn)練得出的數(shù)據(jù)給新書進(jìn)行分類

終于完成了貝葉斯分類器,現(xiàn)在我們看看如何給新書分類。

所謂給新書分類,就是當(dāng)已經(jīng)完成了訓(xùn)練集的訓(xùn)練后(還記得吧?那100本手工分類的書就是訓(xùn)練集),這時候,我們要對第101本書進(jìn)行分類。這本書不是訓(xùn)練集里的書,是新書。我們基于前面計算出來的公式里的幾個元素,來對它進(jìn)行分類。

同樣的,我們抽取新書的標(biāo)簽,并用python里的list來保存,記作:tagvects,它的形式如:[1,0,0,1,0,0,1....]。

接著,我們讓p_tags_cate1里的每個項乘以對應(yīng)的tagvects里的項:

  1. results_tags_cate1 = p_tags_cate1 * tagvects 

再令num_tags_cate1里的每一項相乘:

  1. temp1 = 1.0 
  2. for item in results_tags_cate1: if item != 0: temp1 = temp1 * item 

同樣的方法,計算出temp2:

  1. results_tags_cate2 = p_tags_cate2 * tagvects 
  2. temp2 = 1.0 
  3. for item in results_tags_cate2: if item != 0: temp2 = temp2 * item 

***,這樣:

  1. p_cate1_tags = temp1 * pcate1 
  2. p_cate2_tags = temp2 x pcate2 
  3. if p_cate1_tags > p_cate2_tags: print '人文' else: print '非人文' 

顯然,我們通過比較p_cate1_tags與p_cate2_tags的大小,就可以為新書進(jìn)行分類了,哪邊的值大,就分到哪邊。

優(yōu)化trick

由于上面的公式,是多個概率相乘,當(dāng)你的tag集dicts的長度非常大時(也就是你的書的標(biāo)簽特別多時),這是個很可怕的做法,由于每一項都是小數(shù),這么多小數(shù)相乘,將可能出現(xiàn)溢出,或者數(shù)太小導(dǎo)致計算結(jié)果為0。這時候,需要一個trick,來做一下優(yōu)化,避免這種情況。

我們?nèi)?shù)學(xué)上非常流行的做法,取對數(shù)ln,來改善我們的算法。在python里,取對數(shù)的函數(shù)是log()。

可以在幾個地方取對數(shù)。這里推薦這樣的做法,把要計算的式子變成:

  1. ln(p(tag1|cate1) * p(tag2|cate1) *....* p(cate1))) 

展開來,就變成:

  1. ln(p(tag1|cate1)) + ln(p(tag2|cate1)) + ... + ln(pcate1) 

回憶一下,p(tag1|cate1),p(tag2|cate1)...是我們上面算出的p_tags_cate1的每一項(p_tags_cate1是numpy數(shù)組,其中每一項表示對應(yīng)的tag在“人文”分類中出現(xiàn)的概率)。在我們上面的計算中:

  1. p_tags_cate1 = num_tags_cate1 / total_cate1 

現(xiàn)在我們對其取對數(shù),于是,改代碼改為:

  1. p_tags_cate1 = log(num_tags_cate1 / total_cate1) 

注意,這里的log,是對numpy的數(shù)組中的每一項求log,結(jié)果還是一個數(shù)組。

于是,p_tags_cate1就成為了取對數(shù)后的數(shù)組。

然后求ln(pcate1),把pcate1變?yōu)椋?/p>

  1. pcate1 = log(pcate1) 

所以,上面***分類的代碼就改為:

  1. results_tags_cate1 = p_tags_cate1 * tagvects 
  2. temp1 = 1.0 
  3. for item in results_tags_cate1: if item != 0: temp1 = temp1 + item 

同樣的方法,計算出temp2:

  1. results_tags_cate2 = p_tags_cate2 * tagvects 
  2. temp2 = 1.0 
  3. for item in results_tags_cate2: if item != 0: temp2 = temp2 + item 

然后就可以分類了:

  1. p_cate1_tags = temp1 + pcate1 
  2. p_cate2_tags = temp2 + pcate2 
  3. if p_cate1_tags > p_cate2_tags: print '人文' else: print '非人文' 

總結(jié)

很高興你終于來到了這里。本文力求簡潔,盡量降低學(xué)習(xí)成本。但是肯定存在***次閱讀還覺得有些不太理解的可能,這是正常的,凡事總有個過程,尤其是機(jī)器學(xué)習(xí)這個領(lǐng)域,需要你反復(fù)咀嚼和思考以及實(shí)踐。攥寫本文的過程中,我也在反復(fù)加深對貝葉斯分類的理解,但是表達(dá)出來,還是有不太清晰的地方。如果你有不解或者建議,歡迎與我多討論。

通過本文,我們明白了:

  1. 什么是樸素貝葉斯
  2. 為了施行樸素貝葉斯分類,應(yīng)該如何準(zhǔn)備訓(xùn)練集,其中tag集是非常重要的
  3. 在訓(xùn)練數(shù)據(jù)的基礎(chǔ)上,得到每個tag在“人文”和“非人文”中的出現(xiàn)概率
  4. 利用這些出現(xiàn)概率,為新的文章進(jìn)行分類
  5. 巧妙利用對數(shù)和一些初始值(例如ones())來為算法做一些優(yōu)化
責(zé)任編輯:倪明 來源: 簡書
相關(guān)推薦

2014-11-26 10:54:20

C#

2017-06-22 09:53:01

機(jī)器學(xué)習(xí)Python樸素貝葉斯

2020-09-29 12:13:46

SQL引擎底層

2017-03-02 13:31:02

監(jiān)控系統(tǒng)

2018-02-07 10:46:20

數(shù)據(jù)存儲

2018-09-12 10:58:11

NBA數(shù)據(jù)存儲

2015-06-02 09:51:40

iOS網(wǎng)絡(luò)請求封裝接口

2015-06-02 10:24:43

iOS網(wǎng)絡(luò)請求降低耦合

2024-11-20 08:29:26

2020-06-01 14:11:39

AdaBoost數(shù)據(jù)科學(xué)分類器

2023-12-15 10:14:42

數(shù)據(jù)庫select語句

2011-10-31 10:17:05

插件

2023-12-16 13:21:00

Python元類ORM

2011-08-25 09:30:22

2010-08-23 13:06:33

存儲器配置

2012-09-10 15:12:57

2009-01-08 09:52:26

2015-10-09 10:59:26

算法分類

2015-10-30 16:09:23

分類算法總結(jié)

2015-06-02 09:41:00

iOS網(wǎng)絡(luò)請求NSURLSessio
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

国模一区二区三区私拍视频| 中文字幕欧美日韩| 男人和女人啪啪网站| 国产尤物视频在线| 黄色小说综合网站| 午夜精品久久久久久久男人的天堂 | 91免费视频播放| 欧美一区二区三区久久精品茉莉花| 精品久久久久国产| 亚洲欧洲免费无码| 亚洲不卡免费视频| 男女男精品视频| 海角国产乱辈乱精品视频| 久久视频精品在线观看| 成人线上播放| 欧美美女bb生活片| 成人免费在线小视频| а√天堂8资源在线官网| 91视频在线看| 99中文字幕| 超碰在线免费97| 国产亚洲亚洲| 久久99精品视频一区97| 亚洲色图日韩精品| 九九久久婷婷| 亚洲精品国偷自产在线99热| 无套内谢丰满少妇中文字幕| 在线国产成人影院| 精品毛片三在线观看| japanese在线播放| 麻豆tv入口在线看| 久久亚洲精品国产精品紫薇| 国产精品xxxx| www.国产欧美| 国产精品一区二区久久精品爱涩 | 免费在线一区二区三区| 成人看的羞羞网站| 亚洲免费成人av电影| 一级黄色片毛片| 亚洲色图图片| 欧美男女性生活在线直播观看| 日本三级中文字幕在线观看| 色老头视频在线观看| 欧美国产1区2区| 免费成人av网站| 婷婷色在线视频| 国产成人午夜视频| 超碰在线观看97| 亚洲国产综合一区| 国产 欧美在线| 成人高清在线观看| 亚洲国产av一区二区| 国产麻豆91精品| 51国偷自产一区二区三区| 国产婷婷一区二区三区久久| 国产一区二区三区在线观看免费视频| 久久人人爽人人爽人人片av高请| 我和岳m愉情xxxⅹ视频| 窝窝社区一区二区| 亚洲欧美制服中文字幕| 人妻少妇无码精品视频区| 性人久久久久| 国产亚洲一级高清| 三级黄色片在线观看| 婷婷亚洲最大| 色综合男人天堂| 免费在线视频观看| 国产午夜久久| 国产精品白丝jk喷水视频一区| 日韩精品一区二区在线播放 | 青春草在线视频免费观看| 美女黄视频在线观看| 亚洲猫色日本管| 日韩一级片免费视频| 国产污视频在线播放| 欧美性极品xxxx娇小| 成人在线观看a| 青青在线精品| 精品免费99久久| 成人免费无遮挡无码黄漫视频| 精品视频自拍| 亚洲精品自在久久| 欧美成人久久久免费播放| 亚洲精品二区三区| 9.1国产丝袜在线观看| 国产又大又粗又爽| 久久国产生活片100| 99国产超薄丝袜足j在线观看| 一区二区三区日| 国产成人在线电影| 日本精品一区二区三区视频 | 欧美极品欧美精品欧美| 88xx成人网| 精品精品欲导航| 亚洲黄色免费视频| 欧美日韩国产探花| 国产精品青青在线观看爽香蕉| 91av在线免费视频| 麻豆91在线看| 久久久久久久久久久久久9999| 亚洲va久久久噜噜噜无码久久| 精品在线播放免费| 久久99久久精品国产| 嫩草香蕉在线91一二三区| 亚洲成av人**亚洲成av**| 日日噜噜噜噜久久久精品毛片| 日韩av电影资源网| 精品国产91乱码一区二区三区| 久久久久亚洲av无码麻豆| 同性恋视频一区| 久久99青青精品免费观看| 特级西西444www大胆免费看| 福利一区二区在线观看| 一级做a爰片久久| 久久青草伊人| 欧美成人r级一区二区三区| 91导航在线观看| 亚洲欧美成人综合| 国产精品.com| 天使と恶魔の榨精在线播放| 欧美日韩中文字幕一区| 亚洲午夜福利在线观看| 激情成人亚洲| 97视频中文字幕| 老司机精品视频在线观看6| 91久久精品一区二区二区| 无码国产精品一区二区免费式直播 | 国产区一区二区| 成人三级网址| 欧美日韩国产影片| 国产精品美女高潮无套| 久久激情一区| 免费电影一区| 人成在线免费网站| 亚洲国产美女精品久久久久∴| 国产黑丝在线观看| 欧美精品导航| 亚洲综合国产精品| 成人免费看片| 欧美精品v国产精品v日韩精品 | 国产精品国产自产拍在线| 欧美日韩在线成人| 精品美女视频| 国产精品对白刺激| 成av人电影在线观看| 日本韩国一区二区三区| 香蕉视频久久久| 丝袜脚交一区二区| 色一情一区二区三区四区 | 国产精品亚洲人成在99www| 欧美在线视频免费播放| 午夜小视频在线播放| 午夜精品久久久久久久99水蜜桃| 六月激情综合网| 嫩草一区二区三区| 国产精品999| 99免在线观看免费视频高清| 欧美日产国产精品| 国产精品白丝喷水在线观看| 国产精品自拍一区| 欧美亚洲日本一区二区三区| 午夜欧洲一区| 国产精品一区二区三区免费视频| 亚洲精品久久久蜜桃动漫| 亚洲一区二区高清| 182在线视频| 久久影院亚洲| 亚洲一区美女| 亚洲精品一区在线| 45www国产精品网站| 电影在线一区| 欧美一卡二卡在线观看| 国产午夜视频在线播放| 久久网这里都是精品| www.久久久精品| 欧美三级不卡| 欧美日韩一区二| 亚洲一区有码| 97精品一区二区视频在线观看| 精品国产18久久久久久| 午夜精品久久久久久久99樱桃| 日本黄色一级网站| 一区二区日韩免费看| 日本一区不卡| 成人在线tv视频| 国产精品网红直播| a级片免费在线观看| 亚洲视频axxx| 午夜精品久久久久久久99热黄桃 | 亚洲国产午夜伦理片大全在线观看网站 | 午夜精品一区二区三区电影天堂| 亚洲制服在线观看| 一本综合精品| 久久av秘一区二区三区| 男人的天堂久久| 成人精品网站在线观看| 伊人成综合网站| 久久天天躁狠狠躁夜夜躁| 天堂在线一二区| 欧美一卡二卡三卡| 成人a v视频| 亚洲成人动漫一区| 91n在线视频| 久久久午夜精品理论片中文字幕| 亚洲成熟丰满熟妇高潮xxxxx| 久久综合五月婷婷| 国产精品免费视频xxxx| 黄网站app在线观看| 亚洲精选中文字幕| 好吊色一区二区三区| 欧美色男人天堂| 日韩一区二区视频在线| 亚洲一区免费观看| а天堂中文在线资源| 国产亚洲精品福利| 欧美激情 亚洲| 国产精品99久久久久久宅男| 啊啊啊国产视频| 男人的天堂亚洲在线| 久久国产午夜精品理论片最新版本| 亚洲视频三区| 成人h视频在线观看播放| 亚洲人成在线网站| 久久久久久97| 少女频道在线观看免费播放电视剧| 日韩精品一区二区在线观看| 中文字幕免费播放| 一本一道久久a久久精品| 免费一级特黄特色大片| 又紧又大又爽精品一区二区| frxxee中国xxx麻豆hd| 中文在线一区二区 | 久久综合久久综合九色| 中文字幕视频观看| 国产电影精品久久禁18| 深爱五月综合网| 久久99久久精品| 一区二区三区韩国| 蜜臀91精品一区二区三区| 亚洲视频在线观看一区二区三区| 在线观看国产精品入口| 国产成年人在线观看| 午夜精品一区二区三区国产| 一区二区三区的久久的视频| 久久视频国产| 国产对白在线播放| 93在线视频精品免费观看| 天堂一区二区三区| 色喇叭免费久久综合网| 一区二区在线不卡| 一区二区三区中文| 99久久99久久精品| 国内精品亚洲| 91精品91久久久中77777老牛| 99久久夜色精品国产亚洲96| 在线天堂一区av电影| 午夜精品毛片| 99在线观看视频免费| 亚洲福利一区| 波多野结衣作品集| 麻豆成人在线观看| 992kp免费看片| 国产99久久久久| 亚洲综合自拍网| 国产日产欧美精品一区二区三区| 日本精品一二三区| 不卡一区中文字幕| 午夜在线观看一区| 自拍偷在线精品自拍偷无码专区| www在线观看免费视频| 国产精品婷婷午夜在线观看| 亚洲一二三四五六区| 亚洲影院在线观看| 黄色在线视频网址| 欧美日韩不卡一区| 少妇av在线播放| 最近2019中文字幕在线高清| 中文字幕有码在线视频| 韩国福利视频一区| 777午夜精品电影免费看| 3d精品h动漫啪啪一区二区 | 欧美一级日韩不卡播放免费| 成人免费视频国产免费麻豆| 国产小视频国产精品| 国产三级在线播放| 欧美在线视频观看| 95精品视频| 久久久久久久久一区二区| 久久中文字幕av| 欧美精品自拍视频| 久久99精品久久久| 波多野结衣影院| 136国产福利精品导航| av中文在线播放| 911精品国产一区二区在线| 四虎影视2018在线播放alocalhost| 日韩精品欧美国产精品忘忧草| 成人免费公开视频| 中文字幕精品av| 天堂电影一区| 91精品国产综合久久久久久丝袜 | 久久99精品国产99久久| 精品久久久久中文字幕小说| 大陆av在线播放| 国产综合久久久久影院| 久久精品一区二区免费播放 | 搜索黄色一级片| 色综合久久六月婷婷中文字幕| 精品国产午夜福利| 精品久久国产老人久久综合| 黄黄的网站在线观看| 国产91在线播放九色快色| 超碰在线亚洲| 在线观看成人免费| 蜜臀久久99精品久久久久久9| 日本黄大片一区二区三区| 26uuu亚洲| 日本熟妇成熟毛茸茸| 91精品婷婷国产综合久久| 中文字幕在线播放| 国产成人啪精品视频免费网| 99国产精品久久一区二区三区| 久久久久资源| 亚洲高清激情| 五月天丁香社区| 亚洲色图制服诱惑| 亚洲综合精品在线| 在线视频免费一区二区| 成人做爰视频www网站小优视频| 国产一区二中文字幕在线看| 国产九一精品| 精品免费国产一区二区| 久久综合九色综合久久久精品综合| 日本性高潮视频| 色呦呦网站一区| 裸体xxxx视频在线| 日本成人黄色片| 久久99久久人婷婷精品综合| 欧美极品欧美精品欧美图片| 久久五月婷婷丁香社区| 六月丁香婷婷综合| 精品偷拍各种wc美女嘘嘘| 国产在线美女| 麻豆av一区二区| 丝瓜av网站精品一区二区| 男人舔女人下部高潮全视频 | 天堂网一区二区三区| 精品国产区一区| 超碰在线99| 青青草成人网| 久久精品国产一区二区三区免费看 | 女女同性女同一区二区三区按摩| 最新成人av网站| 久久久久久久人妻无码中文字幕爆| 日本一区二区动态图| 中国一级特黄视频| 中文字幕亚洲欧美日韩高清| 亚洲精品成a人ⅴ香蕉片| 300部国产真实乱| 成人激情午夜影院| 一区二区三区福利视频| 亚洲人成人99网站| 四虎视频在线精品免费网址| 欧美少妇一区二区三区| 不卡一二三区首页| 神马久久久久久久| 久久精品亚洲一区| jazzjazz国产精品久久| 免费在线观看亚洲视频| 国产婷婷色一区二区三区四区| 日本少妇裸体做爰| 日韩精品中文字幕在线观看| 欧美日韩五区| 亚洲av综合色区| 91在线高清观看| 伊人免费在线观看| 欧美激情精品久久久久久久变态| 国产精品久久久久久av公交车 | 亚洲精品a级片| 又色又爽又黄18网站| 欧美午夜电影在线| 日本成人网址| 国产一区免费| 久久精品久久99精品久久| 日本中文字幕免费| 深夜福利亚洲导航| 国产精品sss在线观看av| 日韩无套无码精品| 一区二区成人在线| 国产日韩精品在线看| 波多野结衣一区二区三区在线观看| 综合亚洲视频| 亚洲综合网在线观看| 在线综合亚洲欧美在线视频| 夜鲁夜鲁夜鲁视频在线播放| 亚洲人成网站在线播放2019| 99久久国产综合色|国产精品| 日韩欧美大片在线观看| 色噜噜狠狠狠综合曰曰曰| h视频久久久|