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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

机器学习

發(fā)布時(shí)間:2023/12/10 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

機(jī)器學(xué)習(xí)算法課程定位、目標(biāo)
定位
課程以算法、案例為驅(qū)動(dòng)的學(xué)習(xí),伴隨淺顯易懂的數(shù)學(xué)知識(shí)
作為人工智能領(lǐng)域(數(shù)據(jù)挖掘/機(jī)器學(xué)習(xí)方向)的提升課程,掌握更深更有效的解決問(wèn)題技能
目標(biāo)
應(yīng)用Scikit-learn實(shí)現(xiàn)數(shù)據(jù)集的特征工程
掌握機(jī)器學(xué)習(xí)常見(jiàn)算法原理
應(yīng)用Scikit-learn實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的應(yīng)用,結(jié)合場(chǎng)景解決實(shí)際問(wèn)題
機(jī)器學(xué)習(xí)概述
了解機(jī)器學(xué)習(xí)定義以及應(yīng)用場(chǎng)景
什么是機(jī)器學(xué)習(xí)
1、 背景介紹
人工智能范圍

2、定義
機(jī)器學(xué)習(xí)是從數(shù)據(jù)中自動(dòng)分析獲得規(guī)律(模型),并利用規(guī)律對(duì)未知數(shù)據(jù)進(jìn)行預(yù)測(cè)

3、解釋
alphago

廣告推薦

機(jī)器學(xué)習(xí)定義
為什么需要機(jī)器學(xué)習(xí)
解放生產(chǎn)力:
智能客服:不知疲倦24小時(shí)小時(shí)作業(yè)
量化投資:避免更多的編寫策略、交易人員
醫(yī)療:幫助醫(yī)生輔助醫(yī)療
機(jī)器學(xué)習(xí)應(yīng)用場(chǎng)景
機(jī)器學(xué)習(xí)的應(yīng)用場(chǎng)景非常多,可以說(shuō)滲透到了各個(gè)行業(yè)領(lǐng)域當(dāng)中。醫(yī)療、航空、教育、物流、電商等等領(lǐng)域的各種場(chǎng)景。

用在挖掘、預(yù)測(cè)領(lǐng)域:

應(yīng)用場(chǎng)景:店鋪銷量預(yù)測(cè)、量化投資、廣告推薦、企業(yè)客戶分類、SQL語(yǔ)句安全檢測(cè)分類…
傳統(tǒng)預(yù)測(cè)

量化投資

用在圖像領(lǐng)域:

應(yīng)用場(chǎng)景:街道交通標(biāo)志檢測(cè)、圖片商品識(shí)別檢測(cè)等等
用在自然語(yǔ)言處理領(lǐng)域:

應(yīng)用場(chǎng)景:文本分類、情感分析、自動(dòng)聊天、文本檢測(cè)等等
當(dāng)前重要的是掌握一些機(jī)器學(xué)習(xí)算法等技巧,從某個(gè)業(yè)務(wù)領(lǐng)域切入解決問(wèn)題。
學(xué)習(xí)框架和資料介紹
1、學(xué)習(xí)框架
框架

2、書籍資料
學(xué)習(xí)書籍

3、提深內(nèi)功(但不是必須)
深度學(xué)習(xí)
特征工程
了解特征工程在機(jī)器學(xué)習(xí)當(dāng)中的重要性
應(yīng)用sklearn實(shí)現(xiàn)特征預(yù)處理
應(yīng)用sklearn實(shí)現(xiàn)特征抽取
應(yīng)用sklearn實(shí)現(xiàn)特征選擇
應(yīng)用PCA實(shí)現(xiàn)特征的降維
說(shuō)明機(jī)器學(xué)習(xí)算法監(jiān)督學(xué)習(xí)與無(wú)監(jiān)督學(xué)習(xí)的區(qū)別
說(shuō)明監(jiān)督學(xué)習(xí)中的分類、回歸特點(diǎn)
說(shuō)明機(jī)器學(xué)習(xí)算法目標(biāo)值的兩種數(shù)據(jù)類型
說(shuō)明機(jī)器學(xué)習(xí)(數(shù)據(jù)挖掘)的開(kāi)發(fā)流程
特征工程介紹
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)出機(jī)器學(xué)習(xí)的訓(xùn)練數(shù)據(jù)集結(jié)構(gòu)組成
了解特征工程在機(jī)器學(xué)習(xí)當(dāng)中的重要性
知道特征工程的分類
應(yīng)用
無(wú)
1、什么是特征工程
特征工程是使用專業(yè)背景知識(shí)和技巧處理數(shù)據(jù),使得特征能在機(jī)器學(xué)習(xí)算法上發(fā)揮更好的作用的過(guò)程。

意義:會(huì)直接影響機(jī)器學(xué)習(xí)的效果
2、為什么需要特征工程(Feature Engineering)
機(jī)器學(xué)習(xí)領(lǐng)域的大神Andrew Ng(吳恩達(dá))老師說(shuō)“Coming up with features is difficult, time-consuming, requires expert knowledge. “Applied machine learning” is basically feature engineering. ”

注:業(yè)界廣泛流傳:數(shù)據(jù)和特征決定了機(jī)器學(xué)習(xí)的上限,而模型和算法只是逼近這個(gè)上限而已。

我們從一個(gè)簡(jiǎn)單的例子理解一下:

貓2

問(wèn)題:從歷史數(shù)據(jù)當(dāng)中獲得規(guī)律?這些歷史數(shù)據(jù)是怎么的格式?
3、數(shù)據(jù)集的構(gòu)成
3.1 可用數(shù)據(jù)集
可用數(shù)據(jù)集

Kaggle:https://www.kaggle.com/datasets

UCI:http://archive.ics.uci.edu/ml/index.php

3.2 數(shù)據(jù)集構(gòu)成
結(jié)構(gòu):特征值+目標(biāo)值
數(shù)據(jù)集結(jié)構(gòu)

注:有些數(shù)據(jù)集可以沒(méi)有目標(biāo)值,對(duì)于每一行數(shù)據(jù)我們可以稱之為樣本。

為什么需要這樣的結(jié)構(gòu)?后面結(jié)合機(jī)器學(xué)習(xí)算法去解釋

特征工程的位置與Pandas比較?
特征工程過(guò)程

pandas:一個(gè)數(shù)據(jù)讀取非常方便以及基本的處理格式的工具
sklearn:對(duì)于特征的處理提供了強(qiáng)大的接口
特征工程包含內(nèi)容
特征抽取
特征預(yù)處理
特征降維
4、特征工程所需工具
4.1Scikit-learn工具介紹
scikitlearn

Python語(yǔ)言的機(jī)器學(xué)習(xí)工具
Scikit-learn包括許多知名的機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)
Scikit-learn文檔完善,容易上手,豐富的API
目前穩(wěn)定版本0.18
4.2 安裝
pip3 install Scikit-learn==0.18
安裝好之后可以通過(guò)以下命令查看是否安裝成功

import sklearn
注:安裝scikit-learn需要Numpy,Pandas等庫(kù)

4.3 Scikit-learn包含的內(nèi)容
scikitlearn接口

分類、聚類、回歸
特征工程
模型選擇、調(diào)優(yōu)
特征提取
學(xué)習(xí)目標(biāo)
目標(biāo)
應(yīng)用DictVectorizer實(shí)現(xiàn)對(duì)類別特征進(jìn)行數(shù)值化、離散化
應(yīng)用CountVectorizer實(shí)現(xiàn)對(duì)文本特征進(jìn)行數(shù)值化
應(yīng)用TfidfVectorizer實(shí)現(xiàn)對(duì)文本特征進(jìn)行數(shù)值化
說(shuō)出兩種文本特征提取的方式區(qū)別
應(yīng)用
無(wú)
什么是特征提取呢?

文本特征提取圖

字典特征提取圖

演示案例:特征提取例子演示

1、特征提取
1.1包括將任意數(shù)據(jù)(如文本或圖像)轉(zhuǎn)換為可用于機(jī)器學(xué)習(xí)的數(shù)字特征
注:特征值化是為了計(jì)算機(jī)更好的去理解數(shù)據(jù)

字典特征提取(特征離散化)
文本特征提取
圖像特征提取(深度學(xué)習(xí)將介紹)
1.2 特征提取API
sklearn.feature_extraction
2、字典特征提取
作用:對(duì)字典數(shù)據(jù)進(jìn)行特征值化

sklearn.feature_extraction.DictVectorizer(sparse=True,…)
DictVectorizer.fit_transform(X) X:字典或者包含字典的迭代器返回值:返回sparse矩陣
DictVectorizer.inverse_transform(X) X:array數(shù)組或者sparse矩陣 返回值:轉(zhuǎn)換之前數(shù)據(jù)格式
DictVectorizer.get_feature_names() 返回類別名稱
2.1應(yīng)用
我們對(duì)以下數(shù)據(jù)進(jìn)行特征提取

[{‘city’: ‘北京’,‘temperature’:100}
{‘city’: ‘上海’,‘temperature’:60}
{‘city’: ‘深圳’,‘temperature’:30}]
dictvec結(jié)果

2.2流程分析
實(shí)例化類DictVectorizer
調(diào)用fit_transform方法輸入數(shù)據(jù)并轉(zhuǎn)換(注意返回格式)
def dict_vec():

# 實(shí)例化dict dict = DictVectorizer(sparse=False) # diaoyong fit_transformdata = dict.fit_transform([{'city': '北京','temperature':100},{'city': '上海','temperature':60},{'city': '深圳','temperature':30}])# 打印每一個(gè)列的名稱 print(dict.get_feature_names()) print(data)return None

注意觀察沒(méi)有加上sparse=False參數(shù)的結(jié)果

sparse矩陣

這個(gè)結(jié)果并不是我們想要看到的,所以加上參數(shù),得到想要的結(jié)果

我們會(huì)議之前在做pandas的離散化時(shí)候,也實(shí)現(xiàn)了類似的效果,那在這里我們把這個(gè)處理數(shù)據(jù)的技巧用專業(yè)的稱呼"one-hot"編碼,之前我們也解釋過(guò)為什么需要這種離散化的了,是分析數(shù)據(jù)的一種手段。比如下面例子:

onehot

onehot1

2.3 總結(jié)
對(duì)于特征當(dāng)中存在類別信息的我們都會(huì)做one-hot編碼處理

3、文本特征提取
作用:對(duì)文本數(shù)據(jù)進(jìn)行特征值化

sklearn.feature_extraction.text.CountVectorizer(stop_words=[])

返回詞頻矩陣
CountVectorizer.fit_transform(X) X:文本或者包含文本字符串的可迭代對(duì)象 返回值:返回sparse矩陣
CountVectorizer.inverse_transform(X) X:array數(shù)組或者sparse矩陣 返回值:轉(zhuǎn)換之前數(shù)據(jù)格
CountVectorizer.get_feature_names() 返回值:單詞列表
sklearn.feature_extraction.text.TfidfVectorizer
3.1應(yīng)用
我們對(duì)以下數(shù)據(jù)進(jìn)行特征提取

[“l(fā)ife is short,i like python”,
“l(fā)ife is too long,i dislike python”]
countvec結(jié)果

3.2 流程分析
實(shí)例化類CountVectorizer
調(diào)用fit_transform方法輸入數(shù)據(jù)并轉(zhuǎn)換 (注意返回格式,利用toarray()進(jìn)行sparse矩陣轉(zhuǎn)換array數(shù)組)
def countvec():

# 實(shí)例化conunt count = CountVectorizer()data = count.fit_transform(["life is is short,i like python", "life is too long,i dislike python"])# 內(nèi)容 print(count.get_feature_names()) print(data.toarray())return None

問(wèn)題:如果我們將數(shù)據(jù)替換成中文?
“人生苦短,我喜歡Python” “生活太長(zhǎng)久,我不喜歡Python”
那么最終得到的結(jié)果是

不支持單個(gè)中文字

為什么會(huì)得到這樣的結(jié)果呢,仔細(xì)分析之后會(huì)發(fā)現(xiàn)英文默認(rèn)是以空格分開(kāi)的。其實(shí)就達(dá)到了一個(gè)分詞的效果,所以我們要對(duì)中文進(jìn)行分詞處理

3.3jieba分詞處理
jieba.cut()
返回詞語(yǔ)組成的生成器
需要安裝下jieba庫(kù)

pip3 install jieba
3.4 案例分析
對(duì)以下三句話進(jìn)行特征值化

今天很殘酷,明天更殘酷,后天很美好,
但絕對(duì)大部分是死在明天晚上,所以每個(gè)人不要放棄今天。

我們看到的從很遠(yuǎn)星系來(lái)的光是在幾百萬(wàn)年之前發(fā)出的,
這樣當(dāng)我們看到宇宙時(shí),我們是在看它的過(guò)去。

如果只用一種方式了解某樣事物,你就不會(huì)真正了解它。
了解事物真正含義的秘密取決于如何將其與我們所了解的事物相聯(lián)系。
分析
準(zhǔn)備句子,利用jieba.cut進(jìn)行分詞
實(shí)例化CountVectorizer
將分詞結(jié)果變成字符串當(dāng)作fit_transform的輸入值
三段中文結(jié)果

def cutword():

# 將三個(gè)句子用jieba.cut處理 contetn1 = jieba.cut("今天很殘酷,明天更殘酷,后天很美好,但絕對(duì)大部分是死在明天晚上,所以每個(gè)人不要放棄今天。") contetn2 = jieba.cut("我們看到的從很遠(yuǎn)星系來(lái)的光是在幾百萬(wàn)年之前發(fā)出的,這樣當(dāng)我們看到宇宙時(shí),我們是在看它的過(guò)去。") contetn3 = jieba.cut("如果只用一種方式了解某樣事物,你就不會(huì)真正了解它。了解事物真正含義的秘密取決于如何將其與我們所了解的事物相聯(lián)系。")# 先將著三個(gè)轉(zhuǎn)換成列表 c1 = ' '.join(list(contetn1)) c2 = ' '.join(list(contetn2)) c3 = ' '.join(list(contetn3))return c1, c2, c3

def chvec():

# 實(shí)例化conunt count = CountVectorizer(stop_words=['不要', '我們', '所以'])# 定義一個(gè)分詞的函數(shù) c1, c2, c3 = cutword()data = count.fit_transform([c1, c2, c3])# 內(nèi)容 print(count.get_feature_names()) print(data.toarray())return None

請(qǐng)看問(wèn)題:

詞語(yǔ)占比

該如何處理某個(gè)詞或短語(yǔ)在多篇文章中出現(xiàn)的次數(shù)高這種情況

3.5 Tf-idf文本特征提取
TF-IDF的主要思想是:如果某個(gè)詞或短語(yǔ)在一篇文章中出現(xiàn)的概率高,并且在其他文章中很少出現(xiàn),則認(rèn)為此詞或者短語(yǔ)具有很好的類別區(qū)分能力,適合用來(lái)分類。
TF-IDF作用:用以評(píng)估一字詞對(duì)于一個(gè)文件集或一個(gè)語(yǔ)料庫(kù)中的其中一份文件的重要程度。
3.5.1 公式
詞頻(term frequency,tf)指的是某一個(gè)給定的詞語(yǔ)在該文件中出現(xiàn)的頻率
逆向文檔頻率(inverse document frequency,idf)是一個(gè)詞語(yǔ)普遍重要性的度量。某一特定詞語(yǔ)的idf,可以由總文件數(shù)目除以包含該詞語(yǔ)之文件的數(shù)目,再將得到的商取以10為底的對(duì)數(shù)得到
tfidf公式

最終得出結(jié)果可以理解為重要程度。

注:假如一篇文件的總詞語(yǔ)數(shù)是100個(gè),而詞語(yǔ)"非常"出現(xiàn)了5次,那么"非常"一詞在該文件中的詞頻就是5/100=0.05。而計(jì)算文件頻率(IDF)的方法是以文件集的文件總數(shù),除以出現(xiàn)"非常"一詞的文件數(shù)。所以,如果"非常"一詞在1,000份文件出現(xiàn)過(guò),而文件總數(shù)是10,000,000份的話,其逆向文件頻率就是lg(10,000,000 / 1,0000)=3。最后"非常"對(duì)于這篇文檔的tf-idf的分?jǐn)?shù)為0.05 * 3=0.15
3.5.2 案例
def tfidfvec():

# 實(shí)例化conunt tfidf = TfidfVectorizer()# 定義一個(gè)分詞的函數(shù) c1, c2, c3 = cutword()data = tfidf.fit_transform([c1, c2, c3])# 內(nèi)容 print(tfidf.get_feature_names()) print(data.toarray())return None

3.6 Tf-idf的重要性
分類機(jī)器學(xué)習(xí)算法進(jìn)行文章分類中前期數(shù)據(jù)處理方式
特征預(yù)處理
學(xué)習(xí)目標(biāo)
目標(biāo)
了解數(shù)值型數(shù)據(jù)、類別型數(shù)據(jù)特點(diǎn)
應(yīng)用MinMaxScaler實(shí)現(xiàn)對(duì)特征數(shù)據(jù)進(jìn)行歸一化
應(yīng)用StandardScaler實(shí)現(xiàn)對(duì)特征數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化
應(yīng)用
無(wú)
什么是特征預(yù)處理?

特征預(yù)處理圖

1、什么是特征預(yù)處理

scikit-learn的解釋

provides several common utility functions and transformer classes to change raw feature vectors into a representation that is more suitable for the downstream estimators.
翻譯過(guò)來(lái):通過(guò)一些轉(zhuǎn)換函數(shù)將特征數(shù)據(jù)轉(zhuǎn)換成更加適合算法模型的特征數(shù)據(jù)過(guò)程

可以通過(guò)上面那張圖來(lái)理解

1.1 包含內(nèi)容
數(shù)值型數(shù)據(jù)的無(wú)量綱化:
歸一化
標(biāo)準(zhǔn)化
1.2 特征預(yù)處理API
sklearn.preprocessing
為什么我們要進(jìn)行歸一化/標(biāo)準(zhǔn)化?
特征的單位或者大小相差較大,或者某特征的方差相比其他的特征要大出幾個(gè)數(shù)量級(jí),容易影響(支配)目標(biāo)結(jié)果,使得一些算法無(wú)法學(xué)習(xí)到其它的特征
約會(huì)對(duì)象數(shù)據(jù)
約會(huì)對(duì)象數(shù)據(jù)

我們需要用到一些方法進(jìn)行無(wú)量綱化,使不同規(guī)格的數(shù)據(jù)轉(zhuǎn)換到同一規(guī)格

2、歸一化
2.1定義
通過(guò)對(duì)原始數(shù)據(jù)進(jìn)行變換把數(shù)據(jù)映射到(默認(rèn)為[0,1])之間

2.2公式
歸一化公式

作用于每一列,max為一列的最大值,min為一列的最小值,那么X’’為最終結(jié)果,mx,mi分別為指定區(qū)間值默認(rèn)mx為1,mi為0

那么怎么理解這個(gè)過(guò)程呢?我們通過(guò)一個(gè)例子

歸一化計(jì)算過(guò)程

2.3 API
sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )
MinMaxScalar.fit_transform(X)
X:numpy array格式的數(shù)據(jù)[n_samples,n_features]
返回值:轉(zhuǎn)換后的形狀相同的array
2.4 數(shù)據(jù)計(jì)算
我們對(duì)以下數(shù)據(jù)進(jìn)行運(yùn)算,在dating.txt中。保存的就是之前的約會(huì)對(duì)象數(shù)據(jù)

milage,Liters,Consumtime,target
40920,8.326976,0.953952,3
14488,7.153469,1.673904,2
26052,1.441871,0.805124,1
75136,13.147394,0.428964,1
38344,1.669788,0.134296,1
分析
1、實(shí)例化MinMaxScalar

2、通過(guò)fit_transform轉(zhuǎn)換

def mm():
“”"
對(duì)二維數(shù)組進(jìn)行歸一化處理
:return:
“”"
data = pd.read_csv("./data/datingtest/dating.txt")

mm = MinMaxScaler(feature_range=(2, 3))data = mm.fit_transform(data[['milage','Liters','Consumtime']])print(data)return None

問(wèn)題:如果數(shù)據(jù)中異常點(diǎn)較多,會(huì)有什么影響?
異常點(diǎn)對(duì)歸一化影響

2.5 歸一化總結(jié)
注意最大值最小值是變化的,另外,最大值與最小值非常容易受異常點(diǎn)影響,所以這種方法魯棒性較差,只適合傳統(tǒng)精確小數(shù)據(jù)場(chǎng)景。

怎么辦?

3、標(biāo)準(zhǔn)化
3.1定義
通過(guò)對(duì)原始數(shù)據(jù)進(jìn)行變換把數(shù)據(jù)變換到均值為0,標(biāo)準(zhǔn)差為1范圍內(nèi)

3.2 公式
標(biāo)準(zhǔn)化公式

作用于每一列,mean為平均值,σ為標(biāo)準(zhǔn)差

所以回到剛才異常點(diǎn)的地方,我們?cè)賮?lái)看看標(biāo)準(zhǔn)化

標(biāo)準(zhǔn)化異常點(diǎn)影響

對(duì)于歸一化來(lái)說(shuō):如果出現(xiàn)異常點(diǎn),影響了最大值和最小值,那么結(jié)果顯然會(huì)發(fā)生改變
對(duì)于標(biāo)準(zhǔn)化來(lái)說(shuō):如果出現(xiàn)異常點(diǎn),由于具有一定數(shù)據(jù)量,少量的異常點(diǎn)對(duì)于平均值的影響并不大,從而方差改變較小。
3.3 API
sklearn.preprocessing.StandardScaler( )
處理之后每列來(lái)說(shuō)所有數(shù)據(jù)都聚集在均值0附近標(biāo)準(zhǔn)差差為1
StandardScaler.fit_transform(X)
X:numpy array格式的數(shù)據(jù)[n_samples,n_features]
返回值:轉(zhuǎn)換后的形狀相同的array
3.4 數(shù)據(jù)計(jì)算
同樣對(duì)上面的數(shù)據(jù)進(jìn)行處理

[[90,2,10,40],
[60,4,15,45],
[75,3,13,46]]
分析
1、實(shí)例化StandardScaler

2、通過(guò)fit_transform轉(zhuǎn)換

def std():
“”"
標(biāo)準(zhǔn)化處理
“”"
data = pd.read_csv("./data/datingtest/dating.txt")

std = StandardScaler()data = std.fit_transform(data[['milage','Liters','Consumtime']])print(data) return None

3.5 標(biāo)準(zhǔn)化總結(jié)
在已有樣本足夠多的情況下比較穩(wěn)定,適合現(xiàn)代嘈雜大數(shù)據(jù)場(chǎng)景。
特征選擇
學(xué)習(xí)目標(biāo)
目標(biāo)
知道特征選擇的嵌入式、過(guò)濾式以及包裹氏三種方式
應(yīng)用VarianceThreshold實(shí)現(xiàn)刪除低方差特征
了解相關(guān)系數(shù)的特點(diǎn)和計(jì)算
應(yīng)用相關(guān)性系數(shù)實(shí)現(xiàn)特征選擇
應(yīng)用
無(wú)
在講什么是特征選擇之前,我們得先介紹一個(gè)降維的概念
1、降維
降維是指在某些限定條件下,降低隨機(jī)變量(特征)個(gè)數(shù),得到一組“不相關(guān)”主變量的過(guò)程

降低隨機(jī)變量的個(gè)數(shù)
降維

相關(guān)特征(correlated feature)
的相對(duì)濕度與降雨量之間的相關(guān)
等等
正是因?yàn)樵谶M(jìn)行訓(xùn)練的時(shí)候,我們都是使用特征進(jìn)行學(xué)習(xí)。如果特征本身存在問(wèn)題或者特征之間相關(guān)性較強(qiáng),對(duì)于算法學(xué)習(xí)預(yù)測(cè)會(huì)影響較大

2、降維的兩種方式
特征選擇
主成分分析(可以理解一種特征提取的方式)
3、什么是特征選擇
3.1 定義
數(shù)據(jù)中包含冗余或無(wú)關(guān)變量(或稱特征、屬性、指標(biāo)等),旨在從原有特征中找出主要特征。

鳥(niǎo)類特征選擇

3.2 方法
Filter(過(guò)濾式):主要探究特征本身特點(diǎn)、特征與特征和目標(biāo)值之間關(guān)聯(lián)
方差選擇法:低方差特征過(guò)濾
相關(guān)系數(shù)
Embedded (嵌入式):算法自動(dòng)選擇特征(特征與目標(biāo)值之間的關(guān)聯(lián))
決策樹(shù):信息熵、信息增益
正則化:L1、L2
深度學(xué)習(xí):卷積等
Wrapper (包裹式)
對(duì)于Embedded方式,只能在講解算法的時(shí)候在進(jìn)行介紹,更好的去理解

3.3 模塊
sklearn.feature_selection
4、過(guò)濾式
4.1低方差特征過(guò)濾
刪除低方差的一些特征,前面講過(guò)方差的意義。再結(jié)合方差的大小來(lái)考慮這個(gè)方式的角度。

特征方差小:某個(gè)特征大多樣本的值比較相近
特征方差大:某個(gè)特征很多樣本的值都有差別
4.1.1 API
sklearn.feature_selection.VarianceThreshold(threshold = 0.0)
刪除所有低方差特征
Variance.fit_transform(X)
X:numpy array格式的數(shù)據(jù)[n_samples,n_features]
返回值:訓(xùn)練集差異低于threshold的特征將被刪除。默認(rèn)值是保留所有非零方差特征,即刪除所有樣本中具有相同值的特征。
4.1.2 數(shù)據(jù)計(jì)算
我們對(duì)某些股票的指標(biāo)特征之間進(jìn)行一個(gè)篩選,數(shù)據(jù)在"factor_regression_data/factor_returns.csv"文件當(dāng)中,除去’index,‘date’,'return’列不考慮(這些類型不匹配,也不是所需要指標(biāo))

一共這些特征

pe_ratio,pb_ratio,market_cap,return_on_asset_net_profit,du_return_on_equity,ev,earnings_per_share,revenue,total_expense
index,pe_ratio,pb_ratio,market_cap,return_on_asset_net_profit,du_return_on_equity,ev,earnings_per_share,revenue,total_expense,date,return
0,000001.XSHE,5.9572,1.1818,85252550922.0,0.8008,14.9403,1211444855670.0,2.01,20701401000.0,10882540000.0,2012-01-31,0.027657228229937388
1,000002.XSHE,7.0289,1.588,84113358168.0,1.6463,7.8656,300252061695.0,0.326,29308369223.2,23783476901.2,2012-01-31,0.08235182370820669
2,000008.XSHE,-262.7461,7.0003,517045520.0,-0.5678,-0.5943,770517752.56,-0.006,11679829.03,12030080.04,2012-01-31,0.09978900335112327
3,000060.XSHE,16.476,3.7146,19680455995.0,5.6036,14.617,28009159184.6,0.35,9189386877.65,7935542726.05,2012-01-31,0.12159482758620697
4,000069.XSHE,12.5878,2.5616,41727214853.0,2.8729,10.9097,81247380359.0,0.271,8951453490.28,7091397989.13,2012-01-31,-0.0026808154146886697
分析
1、初始化VarianceThreshold,指定閥值方差

2、調(diào)用fit_transform

def var():
“”"
刪除所有低方差特征
:return:
“”"
data = pd.read_csv("./data/factor_regression_data/factor_returns.csv")

var = VarianceThreshold(threshold=1.0)data = var.fit_transform(data.iloc[:, 1:10]) return None

4.2 相關(guān)系數(shù)
皮爾遜相關(guān)系數(shù)(Pearson Correlation Coefficient)
反映變量之間相關(guān)關(guān)系密切程度的統(tǒng)計(jì)指標(biāo)
4.2.2 公式計(jì)算案例(了解,不用記憶)
公式
相關(guān)系數(shù)公式

比如說(shuō)我們計(jì)算年廣告費(fèi)投入與月均銷售額
廣告費(fèi)表

那么之間的相關(guān)系數(shù)怎么計(jì)算

廣告費(fèi)統(tǒng)計(jì)系數(shù)結(jié)果

最終計(jì)算:

相關(guān)系數(shù)計(jì)算數(shù)字結(jié)果

= 0.9942

所以我們最終得出結(jié)論是廣告投入費(fèi)與月平均銷售額之間有高度的正相關(guān)關(guān)系。

4.2.2 特點(diǎn)
相關(guān)系數(shù)的值介于–1與+1之間,即–1≤ r ≤+1。其性質(zhì)如下:

當(dāng)r>0時(shí),表示兩變量正相關(guān),r<0時(shí),兩變量為負(fù)相關(guān)
當(dāng)|r|=1時(shí),表示兩變量為完全相關(guān),當(dāng)r=0時(shí),表示兩變量間無(wú)相關(guān)關(guān)系
當(dāng)0<|r|<1時(shí),表示兩變量存在一定程度的相關(guān)。且|r|越接近1,兩變量間線性關(guān)系越密切;|r|越接近于0,表示兩變量的線性相關(guān)越弱
一般可按三級(jí)劃分:|r|<0.4為低度相關(guān);0.4≤|r|<0.7為顯著性相關(guān);0.7≤|r|<1為高度線性相關(guān)
這個(gè)符號(hào):|r|為r的絕對(duì)值, |-5| = 5

4.2.2 API
from scipy.stats import pearsonr
x : (N,) array_like
y : (N,) array_like Returns: (Pearson’s correlation coefficient, p-value)
4.3、 案例:股票的財(cái)務(wù)指標(biāo)相關(guān)性計(jì)算
我們剛才的股票的這些指標(biāo)進(jìn)行相關(guān)性計(jì)算, 假設(shè)我們以

factor = [‘pe_ratio’,‘pb_ratio’,‘market_cap’,‘return_on_asset_net_profit’,‘du_return_on_equity’,‘ev’,‘earnings_per_share’,‘revenue’,‘total_expense’]
這些特征當(dāng)中的兩兩進(jìn)行計(jì)算,得出相關(guān)性高的一些特征

指標(biāo)相關(guān)性結(jié)果

分析
兩兩特征之間進(jìn)行相關(guān)性計(jì)算
data = pd.read_csv("./data/factor_regression_data/factor_returns.csv")

for i in range(len(factor)):
for j in range(i, len(factor)-1):
print(“指標(biāo)%s與指標(biāo)%s之間的相關(guān)性大小為%f” % (factor[i], factor[j+1], pearsonr(data[factor[i]], data[factor[j+1]])[0]))
從中我們得出

指標(biāo)revenue與指標(biāo)total_expense之間的相關(guān)性大小為0.995845
指標(biāo)return_on_asset_net_profit與指標(biāo)du_return_on_equity之間的相關(guān)性大小為0.818697
我們也可以通過(guò)畫圖來(lái)觀察結(jié)果

import matplotlib.pyplot as plt
plt.scatter(data[‘revenue’], data[‘total_expense’])
plt.show()
這兩對(duì)指標(biāo)之間的相關(guān)性較大,可以做之后的處理,比如合成這兩個(gè)指標(biāo)。
主成分分析
學(xué)習(xí)目標(biāo)
目標(biāo)
應(yīng)用PCA實(shí)現(xiàn)特征的降維
應(yīng)用
用戶與物品類別之間主成分分析
1、什么是主成分分析(PCA)
定義:高維數(shù)據(jù)轉(zhuǎn)化為低維數(shù)據(jù)的過(guò)程,在此過(guò)程中可能會(huì)舍棄原有數(shù)據(jù)、創(chuàng)造新的變量

作用:是數(shù)據(jù)維數(shù)壓縮,盡可能降低原數(shù)據(jù)的維數(shù)(復(fù)雜度),損失少量信息。

應(yīng)用:回歸分析或者聚類分析當(dāng)中
對(duì)于信息一詞,在決策樹(shù)中會(huì)進(jìn)行介紹

那么更好的理解這個(gè)過(guò)程呢?我們來(lái)看一張圖

PCA解釋圖

1.1 計(jì)算案例理解(了解,無(wú)需記憶)
假設(shè)對(duì)于給定5個(gè)點(diǎn),數(shù)據(jù)如下

(-1,-2)
(-1, 0)
( 0, 0)
( 2, 1)
( 0, 1)
PCA計(jì)算圖

要求:將這個(gè)二維的數(shù)據(jù)簡(jiǎn)化成一維? 并且損失少量的信息

PCA坐標(biāo)軸結(jié)果

這個(gè)過(guò)程如何計(jì)算的呢?找到一個(gè)合適的直線,通過(guò)一個(gè)矩陣運(yùn)算得出主成分分析的結(jié)果(不需要理解)

PCA運(yùn)算過(guò)程

1.2 API
sklearn.decomposition.PCA(n_components=None)
將數(shù)據(jù)分解為較低維數(shù)空間
n_components:
小數(shù):表示保留百分之多少的信息
整數(shù):減少到多少特征
PCA.fit_transform(X) X:numpy array格式的數(shù)據(jù)[n_samples,n_features]
返回值:轉(zhuǎn)換后指定維度的array
1.3 數(shù)據(jù)計(jì)算
先拿個(gè)簡(jiǎn)單的數(shù)據(jù)計(jì)算一下

[[2,8,4,5],
[6,3,0,8],
[5,4,9,1]]
def pca():
“”"
主成分分析進(jìn)行降維
:return:
“”"
pca = PCA(n_components=0.7)

data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])print(data)return None

2、案例:探究用戶對(duì)物品類別的喜好細(xì)分降維
instacart

數(shù)據(jù)如下:

order_products__prior.csv:訂單與商品信息

字段:order_id, product_id, add_to_cart_order, reordered
products.csv:商品信息

字段:product_id, product_name, aisle_id, department_id
orders.csv:用戶的訂單信息
字段:order_id,user_id,eval_set,order_number,….
aisles.csv:商品所屬具體物品類別
字段: aisle_id, aisle
2.1 需求
instacart效果

instacartPCA結(jié)果

2.2 分析
合并表,使得user_id與aisle在一張表當(dāng)中
進(jìn)行交叉表變換
進(jìn)行降維
2.3 完整代碼

去讀四張表的數(shù)據(jù)

prior = pd.read_csv("./data/instacart/order_products__prior.csv")
products = pd.read_csv("./data/instacart/products.csv")
orders = pd.read_csv("./data/instacart/orders.csv")
aisles = pd.read_csv("./data/instacart/aisles.csv")

合并四張表

mt = pd.merge(prior, products, on=[‘product_id’, ‘product_id’])
mt1 = pd.merge(mt, orders, on=[‘order_id’, ‘order_id’])
mt2 = pd.merge(mt1, aisles, on=[‘a(chǎn)isle_id’, ‘a(chǎn)isle_id’])

pd.crosstab 統(tǒng)計(jì)用戶與物品之間的次數(shù)關(guān)系(統(tǒng)計(jì)次數(shù))

cross = pd.crosstab(mt2[‘user_id’], mt2[‘a(chǎn)isle’])

PCA進(jìn)行主成分分析

pc = PCA(n_components=0.95)
data = pc.fit_transform(cross)
機(jī)器學(xué)習(xí)算法簡(jiǎn)介
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)明機(jī)器學(xué)習(xí)算法監(jiān)督學(xué)習(xí)與無(wú)監(jiān)督學(xué)習(xí)的區(qū)別
說(shuō)明機(jī)器學(xué)習(xí)算法目標(biāo)值的兩種數(shù)據(jù)類型
說(shuō)明監(jiān)督學(xué)習(xí)中的分類、回歸特點(diǎn)
說(shuō)明機(jī)器學(xué)習(xí)(數(shù)據(jù)挖掘)的開(kāi)發(fā)流程
應(yīng)用
無(wú)
1、機(jī)器學(xué)習(xí)算法類別
1.1 按照學(xué)習(xí)方式分類
監(jiān)督學(xué)習(xí)(supervised learning)(預(yù)測(cè))
定義:輸入數(shù)據(jù)是由輸入特征值和目標(biāo)值所組成。函數(shù)的輸出可以是一個(gè)連續(xù)的值(稱為回歸),或是輸出是有限個(gè)離散值(稱作分類)。
分類 k-近鄰算法、貝葉斯分類、決策樹(shù)與隨機(jī)森林、邏輯回歸、神經(jīng)網(wǎng)絡(luò)
回歸 線性回歸、嶺回歸
標(biāo)注 隱馬爾可夫模型 (不做要求)
無(wú)監(jiān)督學(xué)習(xí)(unsupervised learning)
定義:輸入數(shù)據(jù)是由輸入特征值所組成。
聚類 k-means
半監(jiān)督和強(qiáng)化學(xué)習(xí)
1.2 區(qū)別
監(jiān)督學(xué)習(xí)無(wú)監(jiān)督學(xué)習(xí)區(qū)別

1.3 理解監(jiān)督無(wú)監(jiān)督
1.4 關(guān)于監(jiān)督學(xué)習(xí)中的分類與回歸區(qū)別
要理解這兩個(gè)概念,我們從兩個(gè)數(shù)據(jù)類別來(lái)看。

數(shù)據(jù)類別圖

1.4.1 兩種數(shù)據(jù)類型
離散型數(shù)據(jù):由記錄不同類別個(gè)體的數(shù)目所得到的數(shù)據(jù),又稱計(jì)數(shù)數(shù)據(jù),所有這些數(shù)據(jù)全部都是整數(shù),而且不能再細(xì)分,也不能進(jìn)一步提高他們的精確度。
連續(xù)型數(shù)據(jù):變量可以在某個(gè)范圍內(nèi)取任一數(shù),即變量的取值可以是連續(xù)的,如,長(zhǎng)度、時(shí)間、質(zhì)量值等,這類整數(shù)通常是非整數(shù),含有小數(shù)部分。
注:只要記住一點(diǎn),離散型是區(qū)間內(nèi)不可分,連續(xù)型是區(qū)間內(nèi)可分

數(shù)據(jù)的類型將是機(jī)器學(xué)習(xí)中監(jiān)督學(xué)習(xí)不同問(wèn)題不同處理的依據(jù)?

貓狗

票房預(yù)測(cè)

結(jié)合剛才講過(guò)的數(shù)據(jù)類型,針對(duì)這兩個(gè)例子的輸出結(jié)果,得出結(jié)論

分類:目標(biāo)值數(shù)據(jù)類型為離散型
分類是監(jiān)督學(xué)習(xí)的一個(gè)核心問(wèn)題,在監(jiān)督學(xué)習(xí)中,當(dāng)輸出變量取有限個(gè)離散值時(shí),預(yù)測(cè)問(wèn)題變成為分類問(wèn)題,最基礎(chǔ)的便是二分類問(wèn)題,即判斷是非,從兩個(gè)類別中選擇一個(gè)作為預(yù)測(cè)結(jié)果;
回歸:目標(biāo)值數(shù)據(jù)類型為連續(xù)型
回歸是監(jiān)督學(xué)習(xí)的另一個(gè)重要問(wèn)題。回歸用于預(yù)測(cè)輸入變量和輸出變量之間的關(guān)系,輸出是連續(xù)型的值。
2、機(jī)器學(xué)習(xí)開(kāi)發(fā)流程
開(kāi)發(fā)流程

2.1 理解模型這個(gè)概念
指對(duì)于某個(gè)實(shí)際問(wèn)題或客觀事物,應(yīng)用合適的算法得到的結(jié)果,稱之為模型。

相當(dāng)于對(duì)問(wèn)題,抽象成數(shù)學(xué)問(wèn)題。模型 = 算法 + 數(shù)據(jù)
分類算法
知道數(shù)據(jù)集的分為訓(xùn)練集和測(cè)試集
知道sklearn的轉(zhuǎn)換器和估計(jì)器流程
了解sklearn的分類、回歸數(shù)據(jù)集
說(shuō)明K-近鄰算法的距離公式
說(shuō)明K-近鄰算法的超參數(shù)K值以及取值問(wèn)題
說(shuō)明K-近鄰算法的優(yōu)缺點(diǎn)
應(yīng)用KNeighborsClassifier實(shí)現(xiàn)分類
了解分類算法的評(píng)估標(biāo)準(zhǔn)準(zhǔn)確率
說(shuō)明樸素貝葉斯算法的原理
說(shuō)明樸素貝葉斯算法的優(yōu)缺點(diǎn)
應(yīng)用MultinomialNB實(shí)現(xiàn)文本分類
應(yīng)用模型選擇與調(diào)優(yōu)
說(shuō)明決策樹(shù)算法的原理
說(shuō)明決策樹(shù)算法的優(yōu)缺點(diǎn)
應(yīng)用DecisionTreeClassifier實(shí)現(xiàn)分類
說(shuō)明隨機(jī)森林算法的原理
說(shuō)明隨機(jī)森林算法的優(yōu)缺點(diǎn)
應(yīng)用RandomForestClassifier實(shí)現(xiàn)分類
數(shù)據(jù)集介紹與劃分
學(xué)習(xí)目標(biāo)
目標(biāo)
知道數(shù)據(jù)集的分為訓(xùn)練集和測(cè)試集
知道sklearn的分類、回歸數(shù)據(jù)集
應(yīng)用
無(wú)
拿到的數(shù)據(jù)是否全部都用來(lái)訓(xùn)練一個(gè)模型?

1、 數(shù)據(jù)集的劃分
機(jī)器學(xué)習(xí)一般的數(shù)據(jù)集會(huì)劃分為兩個(gè)部分:

訓(xùn)練數(shù)據(jù):用于訓(xùn)練,構(gòu)建模型
測(cè)試數(shù)據(jù):在模型檢驗(yàn)時(shí)使用,用于評(píng)估模型是否有效
劃分比例:

訓(xùn)練集:70% 80% 75%
測(cè)試集:30% 20% 30%
API
sklearn.model_selection.train_test_split(arrays, *options)
x 數(shù)據(jù)集的特征值
y 數(shù)據(jù)集的標(biāo)簽值
test_size 測(cè)試集的大小,一般為float
random_state 隨機(jī)數(shù)種子,不同的種子會(huì)造成不同的隨機(jī)采樣結(jié)果。相同的種子采樣結(jié)果相同。
return ,測(cè)試集特征訓(xùn)練集特征值值,訓(xùn)練標(biāo)簽,測(cè)試標(biāo)簽(默認(rèn)隨機(jī)取)
結(jié)合后面的數(shù)據(jù)集作介紹

2、sklearn數(shù)據(jù)集介紹
2.1分類和回歸數(shù)據(jù)集
分類數(shù)據(jù)集
分類數(shù)據(jù)集

sklearn.datasets.fetch_20newsgroups(data_home=None,subset=‘train’)
subset: ‘train’或者’test’,‘a(chǎn)ll’,可選,選擇要加載的數(shù)據(jù)集.訓(xùn)練集的“訓(xùn)練”,測(cè)試集的“測(cè)試”,兩者的“全部”
回歸數(shù)據(jù)集
回歸數(shù)據(jù)集

2.2 API
sklearn.datasets
加載獲取流行數(shù)據(jù)集
datasets.load_()
獲取小規(guī)模數(shù)據(jù)集,數(shù)據(jù)包含在datasets里
datasets.fetch_(data_home=None)
獲取大規(guī)模數(shù)據(jù)集,需要從網(wǎng)絡(luò)上下載,函數(shù)的第一個(gè)參數(shù)是data_home,表示數(shù)據(jù)集下載的目錄,默認(rèn)是 ~/scikit_learn_data/
2.3 返回類型
load和fetch返回的數(shù)據(jù)類型datasets.base.Bunch(字典格式)
data:特征數(shù)據(jù)數(shù)組,是 [n_samples * n_features] 的二維 numpy.ndarray 數(shù)組
target:標(biāo)簽數(shù)組,是 n_samples 的一維 numpy.ndarray 數(shù)組
DESCR:數(shù)據(jù)描述
feature_names:特征名,新聞數(shù)據(jù),手寫數(shù)字、回歸數(shù)據(jù)集沒(méi)有
target_names:標(biāo)簽名
sklearn轉(zhuǎn)換器和估計(jì)器
學(xué)習(xí)目標(biāo)
目標(biāo)
知道sklearn的轉(zhuǎn)換器和估計(jì)器流程
應(yīng)用
無(wú)
1、轉(zhuǎn)換器和估計(jì)器
1.1 轉(zhuǎn)換器
想一下之前做的特征工程的步驟?

1、實(shí)例化 (實(shí)例化的是一個(gè)轉(zhuǎn)換器類(Transformer))
2、調(diào)用fit_transform(對(duì)于文檔建立分類詞頻矩陣,不能同時(shí)調(diào)用)
我們把特征工程的接口稱之為轉(zhuǎn)換器,其中轉(zhuǎn)換器調(diào)用有這么幾種形式

fit_transform
fit
transform
這幾個(gè)方法之間的區(qū)別是什么呢?我們看以下代碼就清楚了

In [1]: from sklearn.preprocessing import StandardScaler

In [2]: std1 = StandardScaler()

In [3]: a = [[1,2,3], [4,5,6]]

In [4]: std1.fit_transform(a)
Out[4]:
array([[-1., -1., -1.],
[ 1., 1., 1.]])

In [5]: std2 = StandardScaler()

In [6]: std2.fit(a)
Out[6]: StandardScaler(copy=True, with_mean=True, with_std=True)

In [7]: std2.transform(a)
Out[7]:
array([[-1., -1., -1.],
[ 1., 1., 1.]])
從中可以看出,fit_transform的作用相當(dāng)于transform加上fit。但是為什么還要提供單獨(dú)的fit呢, 我們還是使用原來(lái)的std2來(lái)進(jìn)行標(biāo)準(zhǔn)化看看

In [8]: b = [[7,8,9], [10, 11, 12]]

In [9]: std2.transform(b)
Out[9]:
array([[3., 3., 3.],
[5., 5., 5.]])

In [10]: std2.fit_transform(b)
Out[10]:
array([[-1., -1., -1.],
[ 1., 1., 1.]])
1.2 估計(jì)器(sklearn機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn))
在sklearn中,估計(jì)器(estimator)是一個(gè)重要的角色,是一類實(shí)現(xiàn)了算法的API

1、用于分類的估計(jì)器:
sklearn.neighbors k-近鄰算法
sklearn.naive_bayes 貝葉斯
sklearn.linear_model.LogisticRegression 邏輯回歸
sklearn.tree 決策樹(shù)與隨機(jī)森林
2、用于回歸的估計(jì)器:
sklearn.linear_model.LinearRegression 線性回歸
sklearn.linear_model.Ridge 嶺回歸
3、用于無(wú)監(jiān)督學(xué)習(xí)的估計(jì)器
sklearn.cluster.KMeans 聚類
1.3 估計(jì)器工作流程
估計(jì)器工作流程
K-近鄰算法
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)明K-近鄰算法的距離公式
說(shuō)明K-近鄰算法的超參數(shù)K值以及取值問(wèn)題
說(shuō)明K-近鄰算法的優(yōu)缺點(diǎn)
應(yīng)用KNeighborsClassifier實(shí)現(xiàn)分類
了解分類算法的評(píng)估標(biāo)準(zhǔn)準(zhǔn)確率
應(yīng)用
Facebook簽到位置預(yù)測(cè)
問(wèn)題:回憶分類問(wèn)題的判定方法
什么是K-近鄰算法
地圖K緊鄰算法

你的“鄰居”來(lái)推斷出你的類別
1、K-近鄰算法(KNN)
1.1 定義
如果一個(gè)樣本在特征空間中的k個(gè)最相似(即特征空間中最鄰近)的樣本中的大多數(shù)屬于某一個(gè)類別,則該樣本也屬于這個(gè)類別。

來(lái)源:KNN算法最早是由Cover和Hart提出的一種分類算法

1.2 距離公式
兩個(gè)樣本的距離可以通過(guò)如下公式計(jì)算,又叫歐式距離

距離公式

2、電影類型分析
假設(shè)我們有現(xiàn)在幾部電影

電影類型分析

其中? 號(hào)電影不知道類別,如何去預(yù)測(cè)?我們可以利用K近鄰算法的思想

電影距離計(jì)算

2.1 問(wèn)題
如果去的最近的電影數(shù)量不一致?
2.2 K-近鄰算法數(shù)據(jù)的特征工程處理
結(jié)合前面的約會(huì)對(duì)象數(shù)據(jù),分析K-近鄰算法需要做什么樣的處理
3、K-近鄰算法API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5,algorithm=‘a(chǎn)uto’)
n_neighbors:int,可選(默認(rèn)= 5),k_neighbors查詢默認(rèn)使用的鄰居數(shù)
algorithm:{‘a(chǎn)uto’,‘ball_tree’,‘kd_tree’,‘brute’},可選用于計(jì)算最近鄰居的算法:‘ball_tree’將會(huì)使用 BallTree,‘kd_tree’將使用 KDTree。‘a(chǎn)uto’將嘗試根據(jù)傳遞給fit方法的值來(lái)決定最合適的算法。 (不同實(shí)現(xiàn)方式影響效率)
4、案例:預(yù)測(cè)簽到位置
FBlocation介紹

數(shù)據(jù)介紹:

train.csv,test.csv
row_id:登記事件的ID
xy:坐標(biāo)
準(zhǔn)確性:定位準(zhǔn)確性
時(shí)間:時(shí)間戳
place_id:業(yè)務(wù)的ID,這是您預(yù)測(cè)的目標(biāo)
4.1 分析
對(duì)于數(shù)據(jù)做一些基本處理(這里所做的一些處理不一定達(dá)到很好的效果,我們只是簡(jiǎn)單嘗試,有些特征我們可以根據(jù)一些特征選擇的方式去做處理)

1、縮小數(shù)據(jù)集范圍 DataFrame.query()

2、處理日期數(shù)據(jù) pd.to_datetime pd.DatetimeIndex

3、增加分割的日期數(shù)據(jù)

4、刪除沒(méi)用的日期數(shù)據(jù) DataFrame.drop

5、將簽到位置少于n個(gè)用戶的刪除

place_count = data.groupby(‘place_id’).count()

tf = place_count[place_count.row_id > 3].reset_index()

data = data[data[‘place_id’].isin(tf.place_id)]

分割數(shù)據(jù)集

標(biāo)準(zhǔn)化處理

k-近鄰預(yù)測(cè)

4.2 代碼
def knncls():
“”"
K近鄰算法預(yù)測(cè)入住位置類別
:return:
“”"
# 一、處理數(shù)據(jù)以及特征工程
# 1、讀取收,縮小數(shù)據(jù)的范圍
data = pd.read_csv("./data/FBlocation/train.csv")

# 數(shù)據(jù)邏輯篩選操作 df.query() data = data.query("x > 1.0 & x < 1.25 & y > 2.5 & y < 2.75")# 2、處理時(shí)間戳日期 time_value = pd.to_datetime(data['time'], unit='s')time_value = pd.DatetimeIndex(time_value)# 加入時(shí)間的其它的特征 data['day'] = time_value.daydata['weekday'] = time_value.weekdaydata['hour'] = time_value.hour# 刪除time這一列特征 data = data.drop(['time'], axis=1)print(data)# 刪除入住次數(shù)少于三次位置 place_count = data.groupby('place_id').count()tf = place_count[place_count.row_id > 3].reset_index()data = data[data['place_id'].isin(tf.place_id)]# 3、取出特征值和目標(biāo)值 y = data['place_id'] # y = data[['place_id']]x = data.drop(['place_id', 'row_id'], axis=1)# 4、數(shù)據(jù)分割與特征工程?# (1)、數(shù)據(jù)分割 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)# (2)、標(biāo)準(zhǔn)化 std = StandardScaler()# 隊(duì)訓(xùn)練集進(jìn)行標(biāo)準(zhǔn)化操作 x_train = std.fit_transform(x_train) print(x_train)# 進(jìn)行測(cè)試集的標(biāo)準(zhǔn)化操作 x_test = std.fit_transform(x_test)# 二、算法的輸入訓(xùn)練預(yù)測(cè) # K值:算法傳入?yún)?shù)不定的值 理論上:k = 根號(hào)(樣本數(shù)) # K值:后面會(huì)使用參數(shù)調(diào)優(yōu)方法,去輪流試出最好的參數(shù)[1,3,5,10,20,100,200] knn = KNeighborsClassifier(n_neighbors=1)# 調(diào)用fit() knn.fit(x_train, y_train)# 預(yù)測(cè)測(cè)試數(shù)據(jù)集,得出準(zhǔn)確率 y_predict = knn.predict(x_test)print("預(yù)測(cè)測(cè)試集類別:", y_predict)print("準(zhǔn)確率為:", knn.score(x_test, y_test))return None

4.3 結(jié)果分析
準(zhǔn)確率: 分類算法的評(píng)估之一
1、k值取多大?有什么影響?
k值取很小:容易受到異常點(diǎn)的影響

k值取很大:受到樣本均衡的問(wèn)題

2、性能問(wèn)題?
距離計(jì)算上面,時(shí)間復(fù)雜度高

5、K-近鄰總結(jié)
優(yōu)點(diǎn):
簡(jiǎn)單,易于理解,易于實(shí)現(xiàn),無(wú)需訓(xùn)練
缺點(diǎn):
懶惰算法,對(duì)測(cè)試樣本分類時(shí)的計(jì)算量大,內(nèi)存開(kāi)銷大
必須指定K值,K值選擇不當(dāng)則分類精度不能保證
使用場(chǎng)景:小數(shù)據(jù)場(chǎng)景,幾千~幾萬(wàn)樣本,具體場(chǎng)景具體業(yè)務(wù)去測(cè)試
模型選擇與調(diào)優(yōu)
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)明交叉驗(yàn)證過(guò)程
說(shuō)明超參數(shù)搜索過(guò)程
應(yīng)用GridSearchCV實(shí)現(xiàn)算法參數(shù)的調(diào)優(yōu)
應(yīng)用
Facebook簽到位置預(yù)測(cè)調(diào)優(yōu)
1、為什么需要交叉驗(yàn)證
交叉驗(yàn)證目的:為了讓被評(píng)估的模型更加準(zhǔn)確可信

2、什么是交叉驗(yàn)證(cross validation)
交叉驗(yàn)證:將拿到的訓(xùn)練數(shù)據(jù),分為訓(xùn)練和驗(yàn)證集。以下圖為例:將數(shù)據(jù)分成5份,其中一份作為驗(yàn)證集。然后經(jīng)過(guò)5次(組)的測(cè)試,每次都更換不同的驗(yàn)證集。即得到5組模型的結(jié)果,取平均值作為最終結(jié)果。又稱5折交叉驗(yàn)證。

2.1 分析
我們之前知道數(shù)據(jù)分為訓(xùn)練集和測(cè)試集,但是為了讓從訓(xùn)練得到模型結(jié)果更加準(zhǔn)確。做以下處理

訓(xùn)練集:訓(xùn)練集+驗(yàn)證集
測(cè)試集:測(cè)試集
交叉驗(yàn)證過(guò)程

問(wèn)題:那么這個(gè)只是對(duì)于參數(shù)得出更好的結(jié)果,那么怎么選擇或者調(diào)優(yōu)參數(shù)呢?
3、超參數(shù)搜索-網(wǎng)格搜索(Grid Search)
通常情況下,有很多參數(shù)是需要手動(dòng)指定的(如k-近鄰算法中的K值),這種叫超參數(shù)。但是手動(dòng)過(guò)程繁雜,所以需要對(duì)模型預(yù)設(shè)幾種超參數(shù)組合。每組超參數(shù)都采用交叉驗(yàn)證來(lái)進(jìn)行評(píng)估。最后選出最優(yōu)參數(shù)組合建立模型。

超參數(shù)

3.1 模型選擇與調(diào)優(yōu)
sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)
對(duì)估計(jì)器的指定參數(shù)值進(jìn)行詳盡搜索
estimator:估計(jì)器對(duì)象
param_grid:估計(jì)器參數(shù)(dict){“n_neighbors”:[1,3,5]}
cv:指定幾折交叉驗(yàn)證
fit:輸入訓(xùn)練數(shù)據(jù)
score:準(zhǔn)確率
結(jié)果分析:
bestscore:在交叉驗(yàn)證中驗(yàn)證的最好結(jié)果_
bestestimator:最好的參數(shù)模型
cvresults:每次交叉驗(yàn)證后的驗(yàn)證集準(zhǔn)確率結(jié)果和訓(xùn)練集準(zhǔn)確率結(jié)果
4、Facebook簽到位置預(yù)測(cè)K值調(diào)優(yōu)
使用網(wǎng)格搜索估計(jì)器

使用網(wǎng)格搜索和交叉驗(yàn)證找到合適的參數(shù)

knn = KNeighborsClassifier()

param = {“n_neighbors”: [3, 5, 10]}

gc = GridSearchCV(knn, param_grid=param, cv=2)

gc.fit(x_train, y_train)

print(“選擇了某個(gè)模型測(cè)試集當(dāng)中預(yù)測(cè)的準(zhǔn)確率為:”, gc.score(x_test, y_test))

訓(xùn)練驗(yàn)證集的結(jié)果

print(“在交叉驗(yàn)證當(dāng)中驗(yàn)證的最好結(jié)果:”, gc.best_score_)
print(“gc選擇了的模型K值是:”, gc.best_estimator_)
print(“每次交叉驗(yàn)證的結(jié)果為:”, gc.cv_results_)
樸素貝葉斯算法
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)明條件概率與聯(lián)合概率
說(shuō)明貝葉斯公式、以及特征獨(dú)立的關(guān)系
記憶貝葉斯公式
知道拉普拉斯平滑系數(shù)
應(yīng)用貝葉斯公式實(shí)現(xiàn)概率的計(jì)算
應(yīng)用
20類新聞文章分類預(yù)測(cè)
1、 什么是樸素貝葉斯分類方法
垃圾郵件分類

文章分類

2、 概率基礎(chǔ)
2.1 概率(Probability)定義
概率定義為一件事情發(fā)生的可能性
扔出一個(gè)硬幣,結(jié)果頭像朝上
某天是晴天
P(X) : 取值在[0, 1]
2.2 女神是否喜歡計(jì)算案例
在講這兩個(gè)概率之前我們通過(guò)一個(gè)例子,來(lái)計(jì)算一些結(jié)果:

計(jì)算概率

問(wèn)題如下:
概率問(wèn)題

那么其中有些問(wèn)題我們計(jì)算的結(jié)果不正確,或者不知道計(jì)算,我們有固定的公式去計(jì)算

2.3 條件概率與聯(lián)合概率
聯(lián)合概率:包含多個(gè)條件,且所有條件同時(shí)成立的概率
記作:P(A,B)
特性:P(A, B) = P(A)P(B)
條件概率:就是事件A在另外一個(gè)事件B已經(jīng)發(fā)生條件下的發(fā)生概率
記作:P(A|B)
特性:P(A1,A2|B) = P(A1|B)P(A2|B)
注意:此條件概率的成立,是由于A1,A2相互獨(dú)立的結(jié)果(記憶)

這樣我們計(jì)算結(jié)果為:

p(程序員, 勻稱) = P(程序員)P(勻稱) =3/7*(4/7) = 12/49
P(產(chǎn)品, 超重|喜歡) = P(產(chǎn)品|喜歡)P(超重|喜歡)=1/2 * 1/4 = 1/8
那么,我們知道了這些知識(shí)之后,繼續(xù)回到我們的主題中。樸素貝葉斯如何分類,這個(gè)算法經(jīng)常會(huì)用在文本分類,那就來(lái)看文章分類是一個(gè)什么樣的問(wèn)題?

文章分類引入

這個(gè)了類似一個(gè)條件概率,那么仔細(xì)一想,給定文章其實(shí)相當(dāng)于給定什么?結(jié)合前面我們將文本特征抽取的時(shí)候講的?所以我們可以理解為

文章分類引入2

但是這個(gè)公式怎么求?前面并沒(méi)有參考例子,其實(shí)是相似的,我們可以使用貝葉斯公式去計(jì)算

3、 貝葉斯公式
3.1 公式
貝葉斯公式

那么這個(gè)公式如果應(yīng)用在文章分類的場(chǎng)景當(dāng)中,我們可以這樣看:

貝葉斯公式理解

公式分為三個(gè)部分:

P?:每個(gè)文檔類別的概率(某文檔類別數(shù)/總文檔數(shù)量)
P(W│C):給定類別下特征(被預(yù)測(cè)文檔中出現(xiàn)的詞)的概率
計(jì)算方法:P(F1│C)=Ni/N (訓(xùn)練文檔中去計(jì)算)
Ni為該F1詞在C類別所有文檔中出現(xiàn)的次數(shù)
N為所屬類別C下的文檔所有詞出現(xiàn)的次數(shù)和
P(F1,F2,…) 預(yù)測(cè)文檔中每個(gè)詞的概率
如果計(jì)算兩個(gè)類別概率比較:

概率前面比較大小

所以我們只要比較前面的大小就可以,得出誰(shuí)的概率大

3.2 文章分類計(jì)算
假設(shè)我們從訓(xùn)練數(shù)據(jù)集得到如下信息
分類計(jì)算例子

計(jì)算結(jié)果
科技:P(科技|影院,支付寶,云計(jì)算) = ?(影院,支付寶,云計(jì)算|科技)?P(科技)=(8/100)?(20/100)?(63/100)?(30/90) = 0.00456109

娛樂(lè):P(娛樂(lè)|影院,支付寶,云計(jì)算) = ?(影院,支付寶,云計(jì)算|娛樂(lè))?P(娛樂(lè))=(56/121)?(15/121)?(0/121)?(60/90) = 0
思考:我們計(jì)算出來(lái)某個(gè)概率為0,合適嗎?
3.3 拉普拉斯平滑系數(shù)
目的:防止計(jì)算出的分類概率為0

平滑系數(shù)公式

P(娛樂(lè)|影院,支付寶,云計(jì)算) =P(影院,支付寶,云計(jì)算|娛樂(lè))P(娛樂(lè)) =P(影院|娛樂(lè))*P(支付寶|娛樂(lè))P(云計(jì)算|娛樂(lè))P(娛樂(lè))=(56+1/121+4)(15+1/121+4)(0+1/121+14)(60/90) = 0.00002
3.4 API
sklearn.naive_bayes.MultinomialNB(alpha = 1.0)
樸素貝葉斯分類
alpha:拉普拉斯平滑系數(shù)
4、案例:20類新聞分類
新聞分類介紹

4.1 分析
分割數(shù)據(jù)集

tfidf進(jìn)行的特征抽取

樸素貝葉斯預(yù)測(cè)
4.2 代碼
def nbcls():
“”"
樸素貝葉斯對(duì)新聞數(shù)據(jù)集進(jìn)行預(yù)測(cè)
:return:
“”"
# 獲取新聞的數(shù)據(jù),20個(gè)類別
news = fetch_20newsgroups(subset=‘a(chǎn)ll’)

# 進(jìn)行數(shù)據(jù)集分割 x_train, x_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.3)# 對(duì)于文本數(shù)據(jù),進(jìn)行特征抽取 tf = TfidfVectorizer()x_train = tf.fit_transform(x_train) # 這里打印出來(lái)的列表是:訓(xùn)練集當(dāng)中的所有不同詞的組成的一個(gè)列表 print(tf.get_feature_names()) # print(x_train.toarray())# 不能調(diào)用fit_transform x_test = tf.transform(x_test)# estimator估計(jì)器流程 mlb = MultinomialNB(alpha=1.0)mlb.fit(x_train, y_train)# 進(jìn)行預(yù)測(cè) y_predict = mlb.predict(x_test)print("預(yù)測(cè)每篇文章的類別:", y_predict[:100]) print("真實(shí)類別為:", y_test[:100])print("預(yù)測(cè)準(zhǔn)確率為:", mlb.score(x_test, y_test))return None

5、總結(jié)
優(yōu)點(diǎn):
樸素貝葉斯模型發(fā)源于古典數(shù)學(xué)理論,有穩(wěn)定的分類效率。
對(duì)缺失數(shù)據(jù)不太敏感,算法也比較簡(jiǎn)單,常用于文本分類。
分類準(zhǔn)確度高,速度快
缺點(diǎn):
由于使用了樣本屬性獨(dú)立性的假設(shè),所以如果特征屬性有關(guān)聯(lián)時(shí)其效果不好
決策樹(shù)
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)明信息熵的公式以及作用
說(shuō)明信息增益的公式作用
應(yīng)用信息增益實(shí)現(xiàn)計(jì)算特征的不確定性減少程度
了解決策樹(shù)的三種算法實(shí)現(xiàn)
應(yīng)用
泰坦尼克號(hào)乘客生存預(yù)測(cè)
1、認(rèn)識(shí)決策樹(shù)
決策樹(shù)思想的來(lái)源非常樸素,程序設(shè)計(jì)中的條件分支結(jié)構(gòu)就是if-then結(jié)構(gòu),最早的決策樹(shù)就是利用這類結(jié)構(gòu)分割數(shù)據(jù)的一種分類學(xué)習(xí)方法

怎么理解這句話?通過(guò)一個(gè)對(duì)話例子

相親對(duì)話

想一想這個(gè)女生為什么把年齡放在最上面判斷!!!!!!!!!

2、決策樹(shù)分類原理詳解
為了更好理解決策樹(shù)具體怎么分類的,我們通過(guò)一個(gè)問(wèn)題例子?

銀行貸款數(shù)

問(wèn)題:如何對(duì)這些客戶進(jìn)行分類預(yù)測(cè)?你是如何去劃分?
有可能你的劃分是這樣的

貸款劃分1

那么我們?cè)趺粗肋@些特征哪個(gè)更好放在最上面,那么決策樹(shù)的真是劃分是這樣的

貸款劃分2

2.1 原理
信息熵、信息增益等
需要用到信息論的知識(shí)!!!問(wèn)題:通過(guò)例子引入信息熵

2.2 信息熵
那來(lái)玩?zhèn)€猜測(cè)游戲,猜猜這32支球隊(duì)那個(gè)是冠軍。并且猜測(cè)錯(cuò)誤付出代價(jià)。每猜錯(cuò)一次給一塊錢,告訴我是否猜對(duì)了,那么我需要掏多少錢才能知道誰(shuí)是冠軍? (前提是:不知道任意球隊(duì)的信息、歷史比賽記錄、實(shí)力等)

足球隊(duì)

為了使代價(jià)最小,可以使用二分法猜測(cè):

我可以把球編上號(hào),從1到32,然后提問(wèn):冠 軍在1-16號(hào)嗎?依次詢問(wèn),只需要五次,就可以知道結(jié)果。

二分法猜測(cè)

我們來(lái)看這個(gè)式子:

32支球隊(duì),log32=5比特
64支球隊(duì),log64=6比特
香農(nóng)

香農(nóng)指出,它的準(zhǔn)確信息量應(yīng)該是,p為每個(gè)球隊(duì)獲勝的概率(假設(shè)概率相等,都為1/32),我們不用錢去衡量這個(gè)代價(jià)了,香濃指出用比特:

H = -(p1logp1 + p2logp2 + … + p32log32) = - log32
2.2.1 信息熵的定義
H的專業(yè)術(shù)語(yǔ)稱之為信息熵,單位為比特。
信息熵公式

“誰(shuí)是世界杯冠軍”的信息量應(yīng)該比5比特少,特點(diǎn)(重要):

當(dāng)這32支球隊(duì)奪冠的幾率相同時(shí),對(duì)應(yīng)的信息熵等于5比特
只要概率發(fā)生任意變化,信息熵都比5比特大
2.2.2 總結(jié)(重要)
信息和消除不確定性是相聯(lián)系的
當(dāng)我們得到的額外信息(球隊(duì)歷史比賽情況等等)越多的話,那么我們猜測(cè)的代價(jià)越小(猜測(cè)的不確定性減小)

問(wèn)題: 回到我們前面的貸款案例,怎么去劃分?可以利用當(dāng)?shù)弥硞€(gè)特征(比如是否有房子)之后,我們能夠減少的不確定性大小。越大我們可以認(rèn)為這個(gè)特征很重要。那怎么去衡量減少的不確定性大小呢?
2.3 決策樹(shù)的劃分依據(jù)之一------信息增益
2.3.1 定義與公式
特征A對(duì)訓(xùn)練數(shù)據(jù)集D的信息增益g(D,A),定義為集合D的信息熵H(D)與特征A給定條件下D的信息條件熵H(D|A)之差,即公式為:

信息增益公式

公式的詳細(xì)解釋:

信息增益公式詳解

注:信息增益表示得知特征X的信息而息的不確定性減少的程度使得類Y的信息熵減少的程度

2.3.2 貸款特征重要計(jì)算
銀行貸款數(shù)

我們以年齡特征來(lái)計(jì)算:
1、g(D, 年齡) = H(D) -H(D|年齡) = 0.971-[5/15H(青年)+5/15H(中年)+5/15H(老年]

2、H(D) = -(6/15log(6/15)+9/15log(9/15))=0.971

3、H(青年) = -(3/5log(3/5) +2/5log(2/5))
H(中年)=-(3/5log(3/5) +2/5log(2/5))
H(老年)=-(4/5og(4/5)+1/5log(1/5))
我們以A1、A2、A3、A4代表年齡、有工作、有自己的房子和貸款情況。最終計(jì)算的結(jié)果g(D, A1) = 0.313, g(D, A2) = 0.324, g(D, A3) = 0.420,g(D, A4) = 0.363。所以我們選擇A3 作為劃分的第一個(gè)特征。這樣我們就可以一棵樹(shù)慢慢建立

2.4 決策樹(shù)的三種算法實(shí)現(xiàn)
當(dāng)然決策樹(shù)的原理不止信息增益這一種,還有其他方法。但是原理都類似,我們就不去舉例計(jì)算。

ID3
信息增益 最大的準(zhǔn)則
C4.5
信息增益比 最大的準(zhǔn)則
CART
分類樹(shù): 基尼系數(shù) 最小的準(zhǔn)則 在sklearn中可以選擇劃分的默認(rèn)原則
優(yōu)勢(shì):劃分更加細(xì)致(從后面例子的樹(shù)顯示來(lái)理解)
2.5 決策樹(shù)API
class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, max_depth=None,random_state=None)
決策樹(shù)分類器
criterion:默認(rèn)是’gini’系數(shù),也可以選擇信息增益的熵’entropy’
max_depth:樹(shù)的深度大小
random_state:隨機(jī)數(shù)種子
其中會(huì)有些超參數(shù):max_depth:樹(shù)的深度大小
其它超參數(shù)我們會(huì)結(jié)合隨機(jī)森林講解
3、案例:泰坦尼克號(hào)乘客生存預(yù)測(cè)
泰坦尼克號(hào)數(shù)據(jù)
在泰坦尼克號(hào)和titanic2數(shù)據(jù)幀描述泰坦尼克號(hào)上的個(gè)別乘客的生存狀態(tài)。這里使用的數(shù)據(jù)集是由各種研究人員開(kāi)始的。其中包括許多研究人員創(chuàng)建的旅客名單,由Michael A. Findlay編輯。我們提取的數(shù)據(jù)集中的特征是票的類別,存活,乘坐班,年齡,登陸,home.dest,房間,票,船和性別。

1、乘坐班是指乘客班(1,2,3),是社會(huì)經(jīng)濟(jì)階層的代表。

2、其中age數(shù)據(jù)存在缺失。

數(shù)據(jù):http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt

泰坦尼克號(hào)數(shù)據(jù)

3.1 分析
選擇我們認(rèn)為重要的幾個(gè)特征 [‘pclass’, ‘a(chǎn)ge’, ‘sex’]
填充缺失值
特征中出現(xiàn)類別符號(hào),需要進(jìn)行one-hot編碼處理(DictVectorizer)
x.to_dict(orient=“records”) 需要將數(shù)組特征轉(zhuǎn)換成字典數(shù)據(jù)
數(shù)據(jù)集劃分
決策樹(shù)分類預(yù)測(cè)
3.2 代碼
def decisioncls():
“”"
決策樹(shù)進(jìn)行乘客生存預(yù)測(cè)
:return:
“”"
# 1、獲取數(shù)據(jù)
titan = pd.read_csv(“http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt”)

# 2、數(shù)據(jù)的處理 x = titan[['pclass', 'age', 'sex']]y = titan['survived']# print(x , y) # 缺失值需要處理,將特征當(dāng)中有類別的這些特征進(jìn)行字典特征抽取 x['age'].fillna(x['age'].mean(), inplace=True)# 對(duì)于x轉(zhuǎn)換成字典數(shù)據(jù)x.to_dict(orient="records") # [{"pclass": "1st", "age": 29.00, "sex": "female"}, {}]dict = DictVectorizer(sparse=False)x = dict.fit_transform(x.to_dict(orient="records"))print(dict.get_feature_names()) print(x)# 分割訓(xùn)練集合測(cè)試集 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)# 進(jìn)行決策樹(shù)的建立和預(yù)測(cè) dc = DecisionTreeClassifier(max_depth=5)dc.fit(x_train, y_train)print("預(yù)測(cè)的準(zhǔn)確率為:", dc.score(x_test, y_test))return None

由于決策樹(shù)類似一個(gè)樹(shù)的結(jié)構(gòu),我們可以保存到本地顯示

3.3 保存樹(shù)的結(jié)構(gòu)到dot文件
1、sklearn.tree.export_graphviz() 該函數(shù)能夠?qū)С鯠OT格式
tree.export_graphviz(estimator,out_file='tree.dot’,feature_names=[‘’,’’])
2、工具:(能夠?qū)ot文件轉(zhuǎn)換為pdf、png)
安裝graphviz
ubuntu:sudo apt-get install graphviz Mac:brew install graphviz
3、運(yùn)行命令
然后我們運(yùn)行這個(gè)命令
dot -Tpng tree.dot -o tree.png
export_graphviz(dc, out_file="./tree.dot", feature_names=[‘a(chǎn)ge’, ‘pclass=1st’, ‘pclass=2nd’, ‘pclass=3rd’, ‘女性’, ‘男性’])
4、 決策樹(shù)總結(jié)
優(yōu)點(diǎn):
簡(jiǎn)單的理解和解釋,樹(shù)木可視化。
缺點(diǎn):
決策樹(shù)學(xué)習(xí)者可以創(chuàng)建不能很好地推廣數(shù)據(jù)的過(guò)于復(fù)雜的樹(shù),這被稱為過(guò)擬合。
改進(jìn):
減枝cart算法(決策樹(shù)API當(dāng)中已經(jīng)實(shí)現(xiàn),隨機(jī)森林參數(shù)調(diào)優(yōu)有相關(guān)介紹)
隨機(jī)森林
注:企業(yè)重要決策,由于決策樹(shù)很好的分析能力,在決策過(guò)程應(yīng)用較多, 可以選擇特征
集成學(xué)習(xí)方法之隨機(jī)森林
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)名隨機(jī)森林每棵決策樹(shù)的建立過(guò)程
知道為什么需要隨機(jī)有放回(Bootstrap)的抽樣
說(shuō)明隨機(jī)森林的超參數(shù)
應(yīng)用
泰坦尼克號(hào)乘客生存預(yù)測(cè)
1、 什么是集成學(xué)習(xí)方法
集成學(xué)習(xí)通過(guò)建立幾個(gè)模型組合的來(lái)解決單一預(yù)測(cè)問(wèn)題。它的工作原理是生成多個(gè)分類器/模型,各自獨(dú)立地學(xué)習(xí)和作出預(yù)測(cè)。這些預(yù)測(cè)最后結(jié)合成組合預(yù)測(cè),因此優(yōu)于任何一個(gè)單分類的做出預(yù)測(cè)。

2、 什么是隨機(jī)森林
在機(jī)器學(xué)習(xí)中,隨機(jī)森林是一個(gè)包含多個(gè)決策樹(shù)的分類器,并且其輸出的類別是由個(gè)別樹(shù)輸出的類別的眾數(shù)而定。

隨機(jī)森林

例如, 如果你訓(xùn)練了5個(gè)樹(shù), 其中有4個(gè)樹(shù)的結(jié)果是True, 1個(gè)數(shù)的結(jié)果是False, 那么最終投票結(jié)果就是True

投票

3、 隨機(jī)森林原理過(guò)程
學(xué)習(xí)算法根據(jù)下列算法而建造每棵樹(shù):

用N來(lái)表示訓(xùn)練用例(樣本)的個(gè)數(shù),M表示特征數(shù)目。
1、一次隨機(jī)選出一個(gè)樣本,重復(fù)N次, (有可能出現(xiàn)重復(fù)的樣本)
2、隨機(jī)去選出m個(gè)特征, m <<M,建立決策樹(shù)
采取bootstrap抽樣
3.1 為什么采用BootStrap抽樣
為什么要隨機(jī)抽樣訓(xùn)練集?  
如果不進(jìn)行隨機(jī)抽樣,每棵樹(shù)的訓(xùn)練集都一樣,那么最終訓(xùn)練出的樹(shù)分類結(jié)果也是完全一樣的
為什么要有放回地抽樣?
如果不是有放回的抽樣,那么每棵樹(shù)的訓(xùn)練樣本都是不同的,都是沒(méi)有交集的,這樣每棵樹(shù)都是“有偏的”,都是絕對(duì)“片面的”(當(dāng)然這樣說(shuō)可能不對(duì)),也就是說(shuō)每棵樹(shù)訓(xùn)練出來(lái)都是有很大的差異的;而隨機(jī)森林最后分類取決于多棵樹(shù)(弱分類器)的投票表決。
3.2 API
class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)

隨機(jī)森林分類器
n_estimators:integer,optional(default = 10)森林里的樹(shù)木數(shù)量120,200,300,500,800,1200
criteria:string,可選(default =“gini”)分割特征的測(cè)量方法
max_depth:integer或None,可選(默認(rèn)=無(wú))樹(shù)的最大深度 5,8,15,25,30
max_features="auto”,每個(gè)決策樹(shù)的最大特征數(shù)量
If “auto”, then max_features=sqrt(n_features).
If “sqrt”, then max_features=sqrt(n_features) (same as “auto”).
If “l(fā)og2”, then max_features=log2(n_features).
If None, then max_features=n_features.
bootstrap:boolean,optional(default = True)是否在構(gòu)建樹(shù)時(shí)使用放回抽樣
min_samples_split:節(jié)點(diǎn)劃分最少樣本數(shù)
min_samples_leaf:葉子節(jié)點(diǎn)的最小樣本數(shù)
超參數(shù):n_estimator, max_depth, min_samples_split,min_samples_leaf
3.3 代碼

隨機(jī)森林去進(jìn)行預(yù)測(cè)

rf = RandomForestClassifier()

param = {“n_estimators”: [120,200,300,500,800,1200], “max_depth”: [5, 8, 15, 25, 30]}

超參數(shù)調(diào)優(yōu)

gc = GridSearchCV(rf, param_grid=param, cv=2)

gc.fit(x_train, y_train)

print(“隨機(jī)森林預(yù)測(cè)的準(zhǔn)確率為:”, gc.score(x_test, y_test))
4、總結(jié)
在當(dāng)前所有算法中,具有極好的準(zhǔn)確率
能夠有效地運(yùn)行在大數(shù)據(jù)集上,處理具有高維特征的輸入樣本,而且不需要降維
能夠評(píng)估各個(gè)特征在分類問(wèn)題上的重要性
回歸與聚類算法
說(shuō)明線性回歸的原理
應(yīng)用LinearRegression或SGDRegressor實(shí)現(xiàn)回歸預(yù)測(cè)
記憶回歸算法的評(píng)估標(biāo)準(zhǔn)及其公式
說(shuō)明線性回歸的缺點(diǎn)
說(shuō)明過(guò)擬合與欠擬合的原因以及解決方法
說(shuō)明嶺回歸的原理即與線性回歸的不同之處
說(shuō)明正則化對(duì)于權(quán)重參數(shù)的影響
說(shuō)明L1和L2正則化的區(qū)別
說(shuō)明邏輯回歸的原理
知道邏輯回歸的應(yīng)用場(chǎng)景
說(shuō)明分類(主要針對(duì)二分類)問(wèn)題的評(píng)估標(biāo)準(zhǔn)
應(yīng)用classification_report實(shí)現(xiàn)精確率、召回率計(jì)算
應(yīng)用roc_auc_score實(shí)現(xiàn)指標(biāo)計(jì)算
應(yīng)用joblib實(shí)現(xiàn)模型的保存與加載
說(shuō)明K-means算法原理
說(shuō)明K-means的性能評(píng)估標(biāo)準(zhǔn)輪廓系數(shù)
說(shuō)明K-means的優(yōu)缺點(diǎn)
線性回歸
學(xué)習(xí)目標(biāo)
目標(biāo)
記憶線性回歸的原理過(guò)程
應(yīng)用LinearRegression或SGDRegressor實(shí)現(xiàn)回歸預(yù)測(cè)
記憶回歸算法的評(píng)估標(biāo)準(zhǔn)及其公式
應(yīng)用
波士頓房?jī)r(jià)預(yù)測(cè)
回憶一下回歸問(wèn)題的判定是什么?
1、 線性回歸的原理
1.1 線性回歸應(yīng)用場(chǎng)景
房?jī)r(jià)預(yù)測(cè)
銷售額度預(yù)測(cè)
金融:貸款額度預(yù)測(cè)、利用線性回歸以及系數(shù)分析因子和選股
銷售額度

1.2 什么是線性回歸
1.2.1定義與公式
線性回歸(Linear regression)是利用回歸方程(函數(shù))對(duì)一個(gè)或多個(gè)自變量(特征值)和因變量(目標(biāo)值)之間關(guān)系進(jìn)行建模的一種分析方式。

特點(diǎn):只有一個(gè)自變量的情況稱為單變量回歸,大于一個(gè)自變量情況的叫做多元回歸
線性回歸公式

那么怎么理解呢?我們來(lái)看幾個(gè)例子

期末成績(jī):0.7×考試成績(jī)+0.3×平時(shí)成績(jī)
房子價(jià)格 = 0.02×中心區(qū)域的距離 + 0.04×城市一氧化氮濃度 + (-0.12×自住房平均房?jī)r(jià)) + 0.254×城鎮(zhèn)犯罪率
上面兩個(gè)例子,我們看到特征值與目標(biāo)值之間建立的一個(gè)關(guān)系,這個(gè)可以理解為回歸方程。

1.2.2 線性回歸的特征與目標(biāo)的關(guān)系分析
線性回歸當(dāng)中的關(guān)系有兩種,一種是線性關(guān)系,另一種是非線性關(guān)系。在這里我們只能畫一個(gè)平面更好去理解,所以都用單個(gè)特征舉例子。

線性關(guān)系
線性關(guān)系圖

多變量線性關(guān)系

注釋:如果在單特征與目標(biāo)值的關(guān)系呈直線關(guān)系,或者兩個(gè)特征與目標(biāo)值呈現(xiàn)平面的關(guān)系

更高維度的我們不用自己去想,記住這種關(guān)系即可

非線性關(guān)系
非線性關(guān)系

注釋:為什么會(huì)這樣的關(guān)系呢?原因是什么?我們后面 講解過(guò)擬合欠擬合重點(diǎn)介紹

如果是非線性關(guān)系,那么回歸方程可以理解為:w1x1+w2x22+w3x32

2、線性回歸的損失和優(yōu)化原理(理解記憶)
假設(shè)剛才的房子例子,真實(shí)的數(shù)據(jù)之間存在這樣的關(guān)系

真實(shí)關(guān)系:真實(shí)房子價(jià)格 = 0.02×中心區(qū)域的距離 + 0.04×城市一氧化氮濃度 + (-0.12×自住房平均房?jī)r(jià)) + 0.254×城鎮(zhèn)犯罪率
那么現(xiàn)在呢,我們隨意指定一個(gè)關(guān)系(猜測(cè))

隨機(jī)指定關(guān)系:預(yù)測(cè)房子價(jià)格 = 0.25×中心區(qū)域的距離 + 0.14×城市一氧化氮濃度 + 0.42×自住房平均房?jī)r(jià) + 0.34×城鎮(zhèn)犯罪率
請(qǐng)問(wèn)這樣的話,會(huì)發(fā)生什么?真實(shí)結(jié)果與我們預(yù)測(cè)的結(jié)果之間是不是存在一定的誤差呢?類似這樣樣子

誤差

那么存在這個(gè)誤差,我們將這個(gè)誤差給衡量出來(lái)

2.1 損失函數(shù)
總損失定義為:

線性回歸損失函數(shù)

y_i為第i個(gè)訓(xùn)練樣本的真實(shí)值
h(x_i)為第i個(gè)訓(xùn)練樣本特征值組合預(yù)測(cè)函數(shù)
又稱最小二乘法
如何去減少這個(gè)損失,使我們預(yù)測(cè)的更加準(zhǔn)確些?既然存在了這個(gè)損失,我們一直說(shuō)機(jī)器學(xué)習(xí)有自動(dòng)學(xué)習(xí)的功能,在線性回歸這里更是能夠體現(xiàn)。這里可以通過(guò)一些優(yōu)化方法去優(yōu)化(其實(shí)是數(shù)學(xué)當(dāng)中的求導(dǎo)功能)回歸的總損失!!!

2.2 優(yōu)化算法
如何去求模型當(dāng)中的W,使得損失最小?(目的是找到最小損失對(duì)應(yīng)的W值)

線性回歸經(jīng)常使用的兩種優(yōu)化算法

正規(guī)方程
正規(guī)方程

理解:X為特征值矩陣,y為目標(biāo)值矩陣。直接求到最好的結(jié)果

缺點(diǎn):當(dāng)特征過(guò)多過(guò)復(fù)雜時(shí),求解速度太慢并且得不到結(jié)果

損失行數(shù)求解1

梯度下降(Gradient Descent)
梯度下降公式

理解:α為學(xué)習(xí)速率,需要手動(dòng)指定(超參數(shù)),α旁邊的整體表示方向

沿著這個(gè)函數(shù)下降的方向找,最后就能找到山谷的最低點(diǎn),然后更新W值

使用:面對(duì)訓(xùn)練數(shù)據(jù)規(guī)模十分龐大的任務(wù) ,能夠找到較好的結(jié)果

我們通過(guò)兩個(gè)圖更好理解梯度下降的過(guò)程

單變量的梯度下降

多變量的梯度下降

所以有了梯度下降這樣一個(gè)優(yōu)化算法,回歸就有了"自動(dòng)學(xué)習(xí)"的能力

3、 線性回歸API
sklearn.linear_model.LinearRegression(fit_intercept=True)
通過(guò)正規(guī)方程優(yōu)化
fit_intercept:是否計(jì)算偏置
LinearRegression.coef_:回歸系數(shù)
LinearRegression.intercept_:偏置
sklearn.linear_model.SGDRegressor(loss=“squared_loss”, fit_intercept=True, learning_rate =‘invscaling’, eta0=0.01)
通過(guò)使用SGD優(yōu)化
loss:損失類型 *
fit_intercept:是否計(jì)算偏置
learning_rate : string, optional
學(xué)習(xí)率填充
‘constant’: eta = eta0
‘optimal’: eta = 1.0 / (alpha * (t + t0)) [default]
‘invscaling’: eta = eta0 / pow(t, power_t)
power_t=0.25:存在父類當(dāng)中
SGDRegressor.coef_:回歸系數(shù)
SGDRegressor.intercept_:偏置
sklearn提供給我們兩種實(shí)現(xiàn)的API, 可以根據(jù)選擇使用

4、波士頓房?jī)r(jià)預(yù)測(cè)
數(shù)據(jù)介紹
房?jī)r(jià)數(shù)據(jù)集介紹

屬性

給定的這些特征,是專家們得出的影響房?jī)r(jià)的結(jié)果屬性。我們此階段不需要自己去探究特征是否有用,只需要使用這些特征。到后面量化很多特征需要我們自己去尋找

4.1 分析
回歸當(dāng)中的數(shù)據(jù)大小不一致,是否會(huì)導(dǎo)致結(jié)果影響較大。所以需要做標(biāo)準(zhǔn)化處理。同時(shí)我們對(duì)目標(biāo)值也需要做標(biāo)準(zhǔn)化處理。

數(shù)據(jù)分割與標(biāo)準(zhǔn)化處理
回歸預(yù)測(cè)
線性回歸的算法效果評(píng)估
4.2 回歸性能評(píng)估
均方誤差(Mean Squared Error)MSE)評(píng)價(jià)機(jī)制:

線性回歸評(píng)估

注:y^i為預(yù)測(cè)值,ˉy為真實(shí)值

sklearn.metrics.mean_squared_error(y_true, y_pred)
均方誤差回歸損失
y_true:真實(shí)值
y_pred:預(yù)測(cè)值
return:浮點(diǎn)數(shù)結(jié)果
4.2 代碼
def mylinearregression():
“”"
線性回歸預(yù)測(cè)房子價(jià)格
:return:
“”"
lb = load_boston()
#
# print(lb.data)
#
# print(lb.target)

# 對(duì)數(shù)據(jù)集進(jìn)行劃分 x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.3, random_state=24)# 需要做標(biāo)準(zhǔn)化處理對(duì)于特征值處理 std_x = StandardScaler()x_train = std_x.fit_transform(x_train) x_test = std_x.fit_transform(x_test) # print(x_train)# 對(duì)于目標(biāo)值進(jìn)行標(biāo)準(zhǔn)化 std_y = StandardScaler()y_train = std_y.fit_transform(y_train) y_test = std_y.transform(y_test) # print(y_train) # y_test = std_y.inverse_transform(y_train) # print(y)y_test = std_y.inverse_transform(y_test)# 使用線性模型進(jìn)行預(yù)測(cè) # 使用正規(guī)方程求解 lr = LinearRegression() # # 此時(shí)在干什么? lr.fit(x_train, y_train)y_lr_predict = std_y.inverse_transform(lr.predict(x_test))print(lr.coef_)print("正規(guī)方程預(yù)測(cè)的結(jié)果為:", y_lr_predict)print("正規(guī)方程的均方誤差為:", mean_squared_error(y_test, y_lr_predict))# 梯度下降進(jìn)行預(yù)測(cè) sgd = SGDRegressor() # sgd.fit(x_train, y_train) print("SGD的權(quán)重參數(shù)為:", sgd.coef_) # y_sgd_predict = std_y.inverse_transform(sgd.predict(x_test)) # print("SGD的預(yù)測(cè)的結(jié)果為:", y_sgd_predict) # # # 怎么評(píng)判這兩個(gè)哪個(gè)好? print("SGD的均方誤差為:", mean_squared_error(y_test, y_sgd_predict))return None

當(dāng)我們嘗試去修改學(xué)習(xí)率的時(shí)候

sgd = SGDRegressor(learning_rate=‘constant’, eta0=0.5)
可以看到效果會(huì)更好,此時(shí)我們可以通過(guò)調(diào)參數(shù),找到學(xué)習(xí)率效果更好的值。

這里的案例數(shù)據(jù)比較簡(jiǎn)單,所以效果非常不錯(cuò)。可以在數(shù)據(jù)量、特征復(fù)雜的數(shù)據(jù)中進(jìn)行測(cè)試

4.3 正規(guī)方程和梯度下降對(duì)比
正規(guī)方程和梯度下降對(duì)比

文字對(duì)比
梯度下降 正規(guī)方程
需要選擇學(xué)習(xí)率 不需要
需要迭代求解 一次運(yùn)算得出
特征數(shù)量較大可以使用 需要計(jì)算方程,時(shí)間復(fù)雜度高O(n3)
選擇:
小規(guī)模數(shù)據(jù):
LinearRegression(不能解決擬合問(wèn)題)
嶺回歸
大規(guī)模數(shù)據(jù):SGDRegressor
5、總結(jié)
線性回歸的損失函數(shù)-均方誤差
線性回歸的優(yōu)化方法
正規(guī)方程
梯度下降
線性回歸的性能衡量方法-均方誤差
sklearn的SGDRegressor API 參數(shù)
欠擬合與過(guò)擬合
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)明線性回歸(不帶正則化)的缺點(diǎn)
說(shuō)明過(guò)擬合與欠擬合的原因以及解決方法
應(yīng)用
無(wú)
問(wèn)題:訓(xùn)練數(shù)據(jù)訓(xùn)練的很好啊,誤差也不大,為什么在測(cè)試集上面有問(wèn)題呢?
當(dāng)算法在某個(gè)數(shù)據(jù)集當(dāng)中出現(xiàn)這種情況,可能就出現(xiàn)了過(guò)擬合現(xiàn)象。

1、 什么是過(guò)擬合與欠擬合
欠擬合
欠擬合

過(guò)擬合
過(guò)擬合

分析
第一種情況:因?yàn)闄C(jī)器學(xué)習(xí)到的天鵝特征太少了,導(dǎo)致區(qū)分標(biāo)準(zhǔn)太粗糙,不能準(zhǔn)確識(shí)別出天鵝。
第二種情況:機(jī)器已經(jīng)基本能區(qū)別天鵝和其他動(dòng)物了。然后,很不巧已有的天鵝圖片全是白天鵝的,于是機(jī)器經(jīng)過(guò)學(xué)習(xí)后,會(huì)認(rèn)為天鵝的羽毛都是白的,以后看到羽毛是黑的天鵝就會(huì)認(rèn)為那不是天鵝。
1.1 定義
過(guò)擬合:一個(gè)假設(shè)在訓(xùn)練數(shù)據(jù)上能夠獲得比其他假設(shè)更好的擬合, 但是在測(cè)試數(shù)據(jù)集上卻不能很好地?cái)M合數(shù)據(jù),此時(shí)認(rèn)為這個(gè)假設(shè)出現(xiàn)了過(guò)擬合的現(xiàn)象。(模型過(guò)于復(fù)雜)
欠擬合:一個(gè)假設(shè)在訓(xùn)練數(shù)據(jù)上不能獲得更好的擬合,并且在測(cè)試數(shù)據(jù)集上也不能很好地?cái)M合數(shù)據(jù),此時(shí)認(rèn)為這個(gè)假設(shè)出現(xiàn)了欠擬合的現(xiàn)象。(模型過(guò)于簡(jiǎn)單)
欠擬合過(guò)擬合圖示

那么是什么原因?qū)е履P蛷?fù)雜?線性回歸進(jìn)行訓(xùn)練學(xué)習(xí)的時(shí)候變成模型會(huì)變得復(fù)雜,這里就對(duì)應(yīng)前面再說(shuō)的線性回歸的兩種關(guān)系,非線性關(guān)系的數(shù)據(jù),也就是存在很多無(wú)用的特征或者現(xiàn)實(shí)中的事物特征跟目標(biāo)值的關(guān)系并不是簡(jiǎn)單的線性關(guān)系。
2、 原因以及解決辦法
欠擬合原因以及解決辦法
原因:學(xué)習(xí)到數(shù)據(jù)的特征過(guò)少
解決辦法:增加數(shù)據(jù)的特征數(shù)量
過(guò)擬合原因以及解決辦法
原因:原始特征過(guò)多,存在一些嘈雜特征, 模型過(guò)于復(fù)雜是因?yàn)槟P蛧L試去兼顧各個(gè)測(cè)試數(shù)據(jù)點(diǎn)
解決辦法:
正則化
在這里針對(duì)回歸,我們選擇了正則化。但是對(duì)于其他機(jī)器學(xué)習(xí)算法如分類算法來(lái)說(shuō)也會(huì)出現(xiàn)這樣的問(wèn)題,除了一些算法本身作用之外(決策樹(shù)、神經(jīng)網(wǎng)絡(luò)),我們更多的也是去自己做特征選擇,包括之前說(shuō)的刪除、合并一些特征

模型復(fù)雜

如何解決?
正則化

在學(xué)習(xí)的時(shí)候,數(shù)據(jù)提供的特征有些影響模型復(fù)雜度或者這個(gè)特征的數(shù)據(jù)點(diǎn)異常較多,所以算法在學(xué)習(xí)的時(shí)候盡量減少這個(gè)特征的影響(甚至刪除某個(gè)特征的影響),這就是正則化

注:調(diào)整時(shí)候,算法并不知道某個(gè)特征影響,而是去調(diào)整參數(shù)得出優(yōu)化的結(jié)果

2.1 正則化類別
L2正則化
作用:可以使得其中一些W的都很小,都接近于0,削弱某個(gè)特征的影響
優(yōu)點(diǎn):越小的參數(shù)說(shuō)明模型越簡(jiǎn)單,越簡(jiǎn)單的模型則越不容易產(chǎn)生過(guò)擬合現(xiàn)象
Ridge回歸
L1正則化
作用:可以使得其中一些W的值直接為0,刪除這個(gè)特征的影響
LASSO回歸
2.2 拓展-原理(了解)
線性回歸的損失函數(shù)用最小二乘法,等價(jià)于當(dāng)預(yù)測(cè)值與真實(shí)值的誤差滿足正態(tài)分布時(shí)的極大似然估計(jì);嶺回歸的損失函數(shù),是最小二乘法+L2范數(shù),等價(jià)于當(dāng)預(yù)測(cè)值與真實(shí)值的誤差滿足正態(tài)分布,且權(quán)重值也滿足正態(tài)分布(先驗(yàn)分布)時(shí)的最大后驗(yàn)估計(jì);LASSO的損失函數(shù),是最小二乘法+L1范數(shù),等價(jià)于等價(jià)于當(dāng)預(yù)測(cè)值與真實(shí)值的誤差滿足正態(tài)分布,且且權(quán)重值滿足拉普拉斯分布(先驗(yàn)分布)時(shí)的最大后驗(yàn)估計(jì)
線性回歸的改進(jìn)-嶺回歸
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)明嶺回歸的原理即與線性回歸的不同之處
說(shuō)明正則化對(duì)于權(quán)重參數(shù)的影響
說(shuō)明L1和L2正則化的區(qū)別
應(yīng)用
波士頓房?jī)r(jià)預(yù)測(cè)
1、 帶有L2正則化的線性回歸-嶺回歸
嶺回歸,其實(shí)也是一種線性回歸。只不過(guò)在算法建立回歸方程時(shí)候,加上正則化的限制,從而達(dá)到解決過(guò)擬合的效果

1.1 API
sklearn.linear_model.Ridge(alpha=1.0)
具有l(wèi)2正則化的線性回歸
alpha:正則化力度,也叫 λ
λ取值:0~1 1~10
coef_:回歸系數(shù)
sklearn.linear_model.RidgeCV(BaseRidgeCV, RegressorMixin)
具有l(wèi)2正則化的線性回歸,可以進(jìn)行交叉驗(yàn)證
coef:回歸系數(shù)
class _BaseRidgeCV(LinearModel):
def init(self, alphas=(0.1, 1.0, 10.0),
fit_intercept=True, normalize=False, scoring=None,
cv=None, gcv_mode=None,
store_cv_values=False):
1.2 觀察正則化程度的變化,對(duì)結(jié)果的影響?
正則化力度

正則化力度越大,權(quán)重系數(shù)會(huì)越小
正則化力度越小,權(quán)重系數(shù)會(huì)越大
1.3 波士頓房?jī)r(jià)預(yù)測(cè)
rd = Ridge(alpha=1.0)

rd.fit(x_train, y_train)
print(“嶺回歸的權(quán)重參數(shù)為:”, rd.coef_)

y_rd_predict = std_y.inverse_transform(rd.predict(x_test))

print(“嶺回歸的預(yù)測(cè)的結(jié)果為:”, y_rd_predict)

print(“嶺回歸的均方誤差為:”, mean_squared_error(y_test, y_rd_predict))
分類算法-邏輯回歸與二分類
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)明邏輯回歸的損失函數(shù)
說(shuō)明邏輯回歸的優(yōu)化方法
說(shuō)明sigmoid函數(shù)
知道邏輯回歸的應(yīng)用場(chǎng)景
知道精確率、召回率指標(biāo)的區(qū)別
知道F1-score指標(biāo)說(shuō)明召回率的實(shí)際意義
說(shuō)明如何解決樣本不均衡情況下的評(píng)估
了解ROC曲線的意義說(shuō)明AUC指標(biāo)大小
應(yīng)用classification_report實(shí)現(xiàn)精確率、召回率計(jì)算
應(yīng)用roc_auc_score實(shí)現(xiàn)指標(biāo)計(jì)算
應(yīng)用
癌癥患者預(yù)測(cè)
邏輯回歸(Logistic Regression)是機(jī)器學(xué)習(xí)中的一種分類模型,邏輯回歸是一種分類算法,雖然名字中帶有回歸,但是它與回歸之間有一定的聯(lián)系。由于算法的簡(jiǎn)單和高效,在實(shí)際中應(yīng)用非常廣泛。

1、邏輯回歸的應(yīng)用場(chǎng)景
廣告點(diǎn)擊率
是否為垃圾郵件
是否患病
金融詐騙
虛假賬號(hào)
看到上面的例子,我們可以發(fā)現(xiàn)其中的特點(diǎn),那就是都屬于兩個(gè)類別之間的判斷。邏輯回歸就是解決二分類問(wèn)題的利器

2、 邏輯回歸的原理
2.1 輸入
邏輯回歸輸入

邏輯回歸的輸入就是一個(gè)線性回歸的結(jié)果。

2.2 激活函數(shù)
sigmoid函數(shù)
sigmoid公式

分析
回歸的結(jié)果輸入到sigmoid函數(shù)當(dāng)中
輸出結(jié)果:[0, 1]區(qū)間中的一個(gè)概率值,默認(rèn)為0.5為閾值
邏輯回歸最終的分類是通過(guò)屬于某個(gè)類別的概率值來(lái)判斷是否屬于某個(gè)類別,并且這個(gè)類別默認(rèn)標(biāo)記為1(正例),另外的一個(gè)類別會(huì)標(biāo)記為0(反例)。(方便損失計(jì)算)

輸出結(jié)果解釋(重要):假設(shè)有兩個(gè)類別A,B,并且假設(shè)我們的概率值為屬于A(1)這個(gè)類別的概率值。現(xiàn)在有一個(gè)樣本的輸入到邏輯回歸輸出結(jié)果0.6,那么這個(gè)概率值超過(guò)0.5,意味著我們訓(xùn)練或者預(yù)測(cè)的結(jié)果就是A(1)類別。那么反之,如果得出結(jié)果為0.3那么,訓(xùn)練或者預(yù)測(cè)結(jié)果就為B(0)類別。
所以接下來(lái)我們回憶之前的線性回歸預(yù)測(cè)結(jié)果我們用均方誤差衡量,那如果對(duì)于邏輯回歸,我們預(yù)測(cè)的結(jié)果不對(duì)該怎么去衡量這個(gè)損失呢?我們來(lái)看這樣一張圖
邏輯回歸運(yùn)算過(guò)程

那么如何去衡量邏輯回歸的預(yù)測(cè)結(jié)果與真實(shí)結(jié)果的差異呢?

2.3 損失以及優(yōu)化
2.3.1 損失
邏輯回歸的損失,稱之為對(duì)數(shù)似然損失,公式如下:

分開(kāi)類別:
單個(gè)對(duì)數(shù)似然損失

怎么理解單個(gè)的式子呢?這個(gè)要根據(jù)log的函數(shù)圖像來(lái)理解

單個(gè)損失解釋

綜合完整損失函數(shù)
完整對(duì)數(shù)似然損失

看到這個(gè)式子,其實(shí)跟我們講的信息熵類似。

接下來(lái)我們呢就帶入上面那個(gè)例子來(lái)計(jì)算一遍,就能理解意義了。

損失計(jì)算過(guò)程

我們已經(jīng)知道,log§, P值越大,結(jié)果越小,所以我們可以對(duì)著這個(gè)損失的式子去分析

2.3.2 優(yōu)化
同樣使用梯度下降優(yōu)化算法,去減少損失函數(shù)的值。這樣去更新邏輯回歸前面對(duì)應(yīng)算法的權(quán)重參數(shù),提升原本屬于1類別的概率,降低原本是0類別的概率。

拓展-關(guān)于邏輯回歸的損失和線性回歸的損失優(yōu)化問(wèn)題
均方誤差這種損失函數(shù),是一定能夠通過(guò)梯度下降找到最優(yōu)解。

3、邏輯回歸API
sklearn.linear_model.LogisticRegression(solver=‘liblinear’, penalty=‘l2’, C = 1.0)
solver:優(yōu)化求解方式(默認(rèn)開(kāi)源的liblinear庫(kù)實(shí)現(xiàn),內(nèi)部使用了坐標(biāo)軸下降法來(lái)迭代優(yōu)化損失函數(shù))
sag:隨機(jī)平均梯度下降
penalty:正則化的種類
C:正則化力度
默認(rèn)將類別數(shù)量少的當(dāng)做正例

4、 案例:癌癥分類預(yù)測(cè)-良/惡性乳腺癌腫瘤預(yù)測(cè)
數(shù)據(jù)介紹
癌癥數(shù)據(jù)

原始數(shù)據(jù)的下載地址:https://archive.ics.uci.edu/ml/machine-learning-databases/

數(shù)據(jù)描述

(1)699條樣本,共11列數(shù)據(jù),第一列用語(yǔ)檢索的id,后9列分別是與腫瘤

相關(guān)的醫(yī)學(xué)特征,最后一列表示腫瘤類型的數(shù)值。

(2)包含16個(gè)缺失值,用”?”標(biāo)出。

4.1 分析
缺失值處理
標(biāo)準(zhǔn)化處理
邏輯回歸預(yù)測(cè)
4.2 代碼
def logisticregression():
“”"
邏輯回歸進(jìn)行癌癥預(yù)測(cè)
:return: None
“”"
# 1、讀取數(shù)據(jù),處理缺失值以及標(biāo)準(zhǔn)化
column_name = [‘Sample code number’, ‘Clump Thickness’, ‘Uniformity of Cell Size’, ‘Uniformity of Cell Shape’,
‘Marginal Adhesion’, ‘Single Epithelial Cell Size’, ‘Bare Nuclei’, ‘Bland Chromatin’,
‘Normal Nucleoli’, ‘Mitoses’, ‘Class’]

data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data",names=column_name)# 刪除缺失值 data = data.replace(to_replace='?', value=np.nan)data = data.dropna()# 取出特征值 x = data[column_name[1:10]]y = data[column_name[10]]# 分割數(shù)據(jù)集 x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)# 進(jìn)行標(biāo)準(zhǔn)化 std = StandardScaler()x_train = std.fit_transform(x_train)x_test = std.transform(x_test)# 使用邏輯回歸 lr = LogisticRegression()lr.fit(x_train, y_train)print("得出來(lái)的權(quán)重:", lr.coef_)# 預(yù)測(cè)類別 print("預(yù)測(cè)的類別:", lr.predict(x_test))# 得出準(zhǔn)確率 print("預(yù)測(cè)的準(zhǔn)確率:", lr.score(x_test, y_test)) return None

在很多分類場(chǎng)景當(dāng)中我們不一定只關(guān)注預(yù)測(cè)的準(zhǔn)確率!!!!!

手機(jī)評(píng)判好壞

比如以這個(gè)癌癥舉例子!!!我們并不關(guān)注預(yù)測(cè)的準(zhǔn)確率,而是關(guān)注在所有的樣本當(dāng)中,癌癥患者有沒(méi)有被全部預(yù)測(cè)(檢測(cè))出來(lái)。

5、分類的評(píng)估方法
5.1 精確率與召回率
5.1.1混淆矩陣
在分類任務(wù)下,預(yù)測(cè)結(jié)果(Predicted Condition)與正確標(biāo)記(True Condition)之間存在四種不同的組合,構(gòu)成混淆矩陣(適用于多分類)

混淆矩陣

5.1.2 精確率(Precision)與召回率(Recall)
精確率:預(yù)測(cè)結(jié)果為正例樣本中真實(shí)為正例的比例(了解)
精確率

召回率:真實(shí)為正例的樣本中預(yù)測(cè)結(jié)果為正例的比例(查的全,對(duì)正樣本的區(qū)分能力)
召回率

那么怎么更好理解這個(gè)兩個(gè)概念

精確率與召回率理解

還有其他的評(píng)估標(biāo)準(zhǔn),F1-score,反映了模型的穩(wěn)健型

F1

5.1.3 分類評(píng)估報(bào)告API
sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None )
y_true:真實(shí)目標(biāo)值
y_pred:估計(jì)器預(yù)測(cè)目標(biāo)值
labels:指定類別對(duì)應(yīng)的數(shù)字
target_names:目標(biāo)類別名稱
return:每個(gè)類別精確率與召回率
print(“精確率和召回率為:”, classification_report(y_test, lr.predict(x_test), labels=[2, 4], target_names=[‘良性’, ‘惡性’]))
假設(shè)這樣一個(gè)情況,如果99個(gè)樣本癌癥,1個(gè)樣本非癌癥,不管怎樣我全都預(yù)測(cè)正例(默認(rèn)癌癥為正例),準(zhǔn)確率就為99%但是這樣效果并不好,這就是樣本不均衡下的評(píng)估問(wèn)題

問(wèn)題:如何衡量樣本不均衡下的評(píng)估?
5.2 ROC曲線與AUC指標(biāo)
5.2.1 知道TPR與FPR
TPR = TP / (TP + FN)
所有真實(shí)類別為1的樣本中,預(yù)測(cè)類別為1的比例
FPR = FP / (FP + FN)
所有真實(shí)類別為0的樣本中,預(yù)測(cè)類別為1的比例
5.2.2 ROC曲線
ROC曲線的橫軸就是FPRate,縱軸就是TPRate,當(dāng)二者相等時(shí),表示的意義則是:對(duì)于不論真實(shí)類別是1還是0的樣本,分類器預(yù)測(cè)為1的概率是相等的,此時(shí)AUC為0.5
ROC

5.2.3AUC指標(biāo)
AUC的概率意義是隨機(jī)取一對(duì)正負(fù)樣本,正樣本得分大于負(fù)樣本的概率
AUC的最小值為0.5,最大值為1,取值越高越好
AUC=1,完美分類器,采用這個(gè)預(yù)測(cè)模型時(shí),不管設(shè)定什么閾值都能得出完美預(yù)測(cè)。絕大多數(shù)預(yù)測(cè)的場(chǎng)合,不存在完美分類器。
0.5<AUC<1,優(yōu)于隨機(jī)猜測(cè)。這個(gè)分類器(模型)妥善設(shè)定閾值的話,能有預(yù)測(cè)價(jià)值。
AUC=0.5,跟隨機(jī)猜測(cè)一樣(例:丟銅板),模型沒(méi)有預(yù)測(cè)價(jià)值。
AUC<0.5,比隨機(jī)猜測(cè)還差;但只要總是反預(yù)測(cè)而行,就優(yōu)于隨機(jī)猜測(cè),因此不存在 AUC<0.5 的情況。
最終AUC的范圍在[0.5, 1]之間,并且越接近1越好

5.2.4 AUC計(jì)算API
from sklearn.metrics import roc_auc_score
sklearn.metrics.roc_auc_score(y_true, y_score)
計(jì)算ROC曲線面積,即AUC值
y_true:每個(gè)樣本的真實(shí)類別,必須為0(反例),1(正例)標(biāo)記
y_score:每個(gè)樣本預(yù)測(cè)的概率值

0.5~1之間,越接近于1約好

y_test = np.where(y_test > 2.5, 1, 0)

print(“AUC指標(biāo):”, roc_auc_score(y_test, lr.predict(x_test)))
5.2.5、總結(jié)
AUC只能用來(lái)評(píng)價(jià)二分類
AUC非常適合評(píng)價(jià)樣本不平衡中的分類器性能
AUC會(huì)比較預(yù)測(cè)出來(lái)的概率,而不僅僅是標(biāo)簽類
6、Scikit-learn的算法實(shí)現(xiàn)總結(jié)
scikit-learn把梯度下降求解的單獨(dú)分開(kāi),叫SGDclassifier和SGDRegressor,他們的損失都是分類和回歸對(duì)應(yīng)的損失,比如分類:有l(wèi)og loss, 和 hingle loss(SVM)的,回歸如:比如 均方誤差, 其它的API是一樣的損失,求解并不是用梯度下降的,所以一般大規(guī)模的數(shù)據(jù)都是用scikit-learn其中SGD的方式求解
模型保存和加載
學(xué)習(xí)目標(biāo)
目標(biāo)
應(yīng)用joblib實(shí)現(xiàn)模型的保存與加載
應(yīng)用
無(wú)
當(dāng)訓(xùn)練或者計(jì)算好一個(gè)模型之后,那么如果別人需要我們提供結(jié)果預(yù)測(cè),就需要保存模型(主要是保存算法的參數(shù))

1、sklearn模型的保存和加載API
from sklearn.externals import joblib
保存:joblib.dump(rf, ‘test.pkl’)
加載:estimator = joblib.load(‘test.pkl’)
2、線性回歸的模型保存加載案例
保存

使用線性模型進(jìn)行預(yù)測(cè)

使用正規(guī)方程求解

lr = LinearRegression()

此時(shí)在干什么?

lr.fit(x_train, y_train)

保存訓(xùn)練完結(jié)束的模型

joblib.dump(lr, “test.pkl”)
加載

通過(guò)已有的模型去預(yù)測(cè)房?jī)r(jià)

model = joblib.load(“test.pkl”)
print(“從文件加載進(jìn)來(lái)的模型預(yù)測(cè)房?jī)r(jià)的結(jié)果:”, std_y.inverse_transform(model.predict(x_test)))
無(wú)監(jiān)督學(xué)習(xí)-K-means算法
學(xué)習(xí)目標(biāo)
目標(biāo)
說(shuō)明K-means算法原理
說(shuō)明K-means的性能評(píng)估標(biāo)準(zhǔn)輪廓系數(shù)
說(shuō)明K-means的優(yōu)缺點(diǎn)
應(yīng)用
instacart用戶聚類
回憶非監(jiān)督學(xué)習(xí)的特點(diǎn)?
1、 什么是無(wú)監(jiān)督學(xué)習(xí)
人員聚類

一家廣告平臺(tái)需要根據(jù)相似的人口學(xué)特征和購(gòu)買習(xí)慣將美國(guó)人口分成不同的小組,以便廣告客戶可以通過(guò)有關(guān)聯(lián)的廣告接觸到他們的目標(biāo)客戶。
Airbnb 需要將自己的房屋清單分組成不同的社區(qū),以便用戶能更輕松地查閱這些清單。
一個(gè)數(shù)據(jù)科學(xué)團(tuán)隊(duì)需要降低一個(gè)大型數(shù)據(jù)集的維度的數(shù)量,以便簡(jiǎn)化建模和降低文件大小。
我們可以怎樣最有用地對(duì)其進(jìn)行歸納和分組?我們可以怎樣以一種壓縮格式有效地表征數(shù)據(jù)?這都是無(wú)監(jiān)督學(xué)習(xí)的目標(biāo),之所以稱之為無(wú)監(jiān)督,是因?yàn)檫@是從無(wú)標(biāo)簽的數(shù)據(jù)開(kāi)始學(xué)習(xí)的。

2、 無(wú)監(jiān)督學(xué)習(xí)包含算法
聚類
K-means(K均值聚類)
降維
PCA
3、 K-means原理
我們先來(lái)看一下一個(gè)K-means的聚類效果圖

K-means如何聚類效果

3.1 K-means聚類步驟
1、隨機(jī)設(shè)置K個(gè)特征空間內(nèi)的點(diǎn)作為初始的聚類中心
2、對(duì)于其他每個(gè)點(diǎn)計(jì)算到K個(gè)中心的距離,未知的點(diǎn)選擇最近的一個(gè)聚類中心點(diǎn)作為標(biāo)記類別
3、接著對(duì)著標(biāo)記的聚類中心之后,重新計(jì)算出每個(gè)聚類的新中心點(diǎn)(平均值)
4、如果計(jì)算得出的新中心點(diǎn)與原中心點(diǎn)一樣,那么結(jié)束,否則重新進(jìn)行第二步過(guò)程
我們以一張圖來(lái)解釋效果

K-means過(guò)程分析

4、K-meansAPI
sklearn.cluster.KMeans(n_clusters=8,init=‘k-means++’)
k-means聚類
n_clusters:開(kāi)始的聚類中心數(shù)量
init:初始化方法,默認(rèn)為’k-means ++’
labels_:默認(rèn)標(biāo)記的類型,可以和真實(shí)值比較(不是值比較)
5、 案例:k-means對(duì)Instacart Market用戶聚類
5.1 分析
1、降維之后的數(shù)據(jù)
2、k-means聚類
3、聚類結(jié)果顯示
5.2 代碼

取500個(gè)用戶進(jìn)行測(cè)試

cust = data[:500]
km = KMeans(n_clusters=4)
km.fit(cust)
pre = km.predict(cust)
問(wèn)題:如何去評(píng)估聚類的效果呢?
6、Kmeans性能評(píng)估指標(biāo)
6.1 輪廓系數(shù)
輪廓系數(shù)公式

注:對(duì)于每個(gè)點(diǎn)i 為已聚類數(shù)據(jù)中的樣本 ,b_i 為i 到其它族群的所有樣本的距離最小值,a_i 為i 到本身簇的距離平均值。最終計(jì)算出所有的樣本點(diǎn)的輪廓系數(shù)平均值

6.2 輪廓系數(shù)值分析

分析過(guò)程(我們以一個(gè)藍(lán)1點(diǎn)為例)

1、計(jì)算出藍(lán)1離本身族群所有點(diǎn)的距離的平均值a_i

2、藍(lán)1到其它兩個(gè)族群的距離計(jì)算出平均值紅平均,綠平均,取最小的那個(gè)距離作為b_i

根據(jù)公式:極端值考慮:如果b_i >>a_i: 那么公式結(jié)果趨近于1;如果a_i>>>b_i: 那么公式結(jié)果趨近于-1
6.3 結(jié)論
如果b_i>>a_i:趨近于1效果越好, b_i<<a_i:趨近于-1,效果不好。輪廓系數(shù)的值是介于 [-1,1] ,越趨近于1代表內(nèi)聚度和分離度都相對(duì)較優(yōu)。

6.4 輪廓系數(shù)API
sklearn.metrics.silhouette_score(X, labels)
計(jì)算所有樣本的平均輪廓系數(shù)
X:特征值
labels:被聚類標(biāo)記的目標(biāo)值
6.5 用戶聚類結(jié)果評(píng)估
silhouette_score(cust, pre)
7、K-means總結(jié)
特點(diǎn)分析:采用迭代式算法,直觀易懂并且非常實(shí)用
缺點(diǎn):容易收斂到局部最優(yōu)解(多次聚類)
注意:聚類一般做在分類之前

總結(jié)

以上是生活随笔為你收集整理的机器学习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

免费看的黄网站软件 | 中文字幕资源网在线观看 | 不卡av在线免费观看 | 国产麻豆精品一区 | 激情视频久久 | 91成人在线观看喷潮 | 在线香蕉视频 | av中文字幕在线免费观看 | 亚洲精品中文字幕在线观看 | 干狠狠 | 在线观看视频97 | 99视频免费 | av女优中文字幕在线观看 | 久久美女免费视频 | 中文字幕亚洲欧美日韩 | 在线免费观看的av | 在线观看岛国 | 欧美日韩网站 | 天天草天天插 | 国产色 在线 | aaa日本高清在线播放免费观看 | 亚洲97在线| 永久免费的啪啪网站免费观看浪潮 | 国产伦精品一区二区三区在线 | 国产色在线观看 | 精品免费国产一区二区三区四区 | 国产一区二区三区高清播放 | 一本一道久久a久久精品蜜桃 | 日韩91av| 91系列在线| 激情综合色播五月 | 久久亚洲精品国产亚洲老地址 | 亚洲片在线资源 | 97国产大学生情侣白嫩酒店 | 欧美国产日韩一区 | 在线国产日韩 | 欧美一区免费在线观看 | 999久久久免费精品国产 | 手机看片久久 | 亚洲国产精品一区二区尤物区 | 日一日操一操 | 中文字幕在线久一本久 | 国产精品视频内 | 黄色av一区二区 | 91av99| 99久久精品免费看国产四区 | 丁香六月天 | 成人在线观看日韩 | 97超碰人人模人人人爽人人爱 | 九九免费精品视频 | 久精品视频在线观看 | 五月婷婷伊人网 | 日韩高清av在线 | 国产精品地址 | 欧美日韩中文在线视频 | 亚洲国产精品500在线观看 | 国产精品黑丝在线观看 | 成人久久综合 | 欧美电影黄色 | 精品一区二区影视 | 日韩av一区二区在线影视 | 久久69精品 | 成人在线视频在线观看 | 亚洲人成人天堂h久久 | 极品久久久 | 久久国产精品99久久久久久老狼 | 日韩欧美国产成人 | 亚洲免费视频观看 | 日韩精品免费一区二区在线观看 | 日韩精品观看 | 美女视频网 | 狠狠色丁香久久婷婷综合_中 | 亚洲手机天堂 | av在线8| 国产91国语对白在线 | 欧美资源 | av久久在线 | 国产亚洲欧洲 | 丁香婷婷综合五月 | 日韩三级.com| 国产色视频网站 | 激情五月婷婷综合 | 91精品国产99久久久久久久 | 亚洲精品456在线播放乱码 | a电影免费看| www.看片网站 | 亚洲欧美日韩国产一区二区三区 | 免费在线观看av网站 | 免费亚洲片| 91av在线免费播放 | 成人免费毛片aaaaaa片 | 欧美一级视频免费看 | 精品美女国产在线 | 欧美日韩一区二区视频在线观看 | 久久精品中文视频 | 日韩中文字幕在线观看 | 久久成人免费视频 | 成人a级网站 | 99热99热| 国产黄色成人av | 一区二区三区在线观看免费 | 久久久免费观看完整版 | 97av视频 | 国产成人久久久77777 | 美女啪啪图片 | 在线天堂日本 | 色婷婷福利视频 | 婷婷丁香激情五月 | 婷婷久月 | 欧美一区二区三区激情视频 | 国产视频在线观看一区 | 天天草天天爽 | 亚洲成a人片77777潘金莲 | 香蕉视频在线播放 | 亚洲欧美视频一区二区三区 | 国产精品久久久久久久免费 | 97自拍超碰 | 人人爽人人爽 | 亚洲精品视频中文字幕 | 不卡国产视频 | 成人一级免费电影 | 日日夜夜狠狠 | 国内精品视频一区二区三区八戒 | 亚洲综合视频在线 | 国产精品video爽爽爽爽 | 免费在线播放黄色 | 99爱国产精品 | 久久一区二区三区国产精品 | 成人啊 v | 狠狠做深爱婷婷综合一区 | 最近中文字幕完整视频高清1 | 久久国产精品99久久久久久进口 | 亚洲春色综合另类校园电影 | 亚洲综合在线视频 | 99久久99久久免费精品蜜臀 | 亚洲一区久久 | 精品中文字幕在线 | 天天草天天插 | 久久国产精品电影 | 久久色在线播放 | 国产精品久久嫩一区二区免费 | 日韩一区二区三区高清在线观看 | 一区二区三区日韩精品 | 国产福利精品一区二区 | 在线观看中文字幕av | 日韩免费三级 | 天天干天天射天天操 | 激情开心站 | 久久综合五月 | 91亚洲视频在线观看 | 久久人人爽人人爽人人片av免费 | 日本久久久精品视频 | 激情五月色播五月 | 91大神免费在线观看 | 97伊人网 | 免费黄在线观看 | 国产精品影音先锋 | 亚洲国产精品日韩 | 欧美日bb | 精品福利在线视频 | 在线观看日韩专区 | 91大神在线看 | 天天操天天色天天射 | 欧美日韩亚洲在线观看 | 中文字幕4| 天天射天 | 永久免费精品视频网站 | 国产高清视频在线 | 国产最顶级的黄色片在线免费观看 | 亚洲mv大片欧洲mv大片免费 | 日本精品视频一区 | 国色综合 | 九九精品久久久 | 亚洲视频综合在线 | 国产一级一片免费播放放 | 亚洲女欲精品久久久久久久18 | 91视频com | 在线免费观看羞羞视频 | 永久免费看av | 四虎影视精品成人 | 成人在线视频观看 | 综合婷婷丁香 | 久久激情视频 | 成人黄色电影在线播放 | www看片网站| 亚洲一区二区黄色 | 黄色网址a | 久久99精品久久只有精品 | 99久久成人 | 人人干干人人 | 九九九在线观看视频 | 在线日本v二区不卡 | 超碰在线免费97 | 国产经典 欧美精品 | 色综合中文字幕 | 中国一级片在线观看 | 国产一级视频在线 | 99热99re6国产在线播放 | 久久人人爽爽 | 麻豆传媒电影在线观看 | 久久99精品国产麻豆宅宅 | 成人av影视观看 | 日韩精品资源 | 91资源在线视频 | 91视频一8mav | 国产xx视频 | 六月色丁香 | 中文字幕在线播放第一页 | 在线97| 97麻豆视频| 天天干夜夜操视频 | 久久理论电影网 | 亚洲成成品网站 | 亚洲日本韩国一区二区 | 久久视频精品在线观看 | 久久五月天综合 | 99视频在线精品 | 99精品国产在热久久下载 | 久久久五月婷婷 | 高清av影院| 久久深爱网 | 免费碰碰 | 99久久精品视频免费 | 五月婷婷色综合 | 亚洲资源一区 | 青青河边草观看完整版高清 | 国产成人精品久久久 | 国产精品18久久久久久首页狼 | 免费美女久久99 | 久久九九影视网 | 天天综合五月天 | 国产日韩欧美在线看 | 伊人婷婷综合 | 欧美成人理伦片 | 高清一区二区三区av | 精品视频免费看 | www久草 | 国产乱码精品一区二区三区介绍 | 日韩专区视频 | 亚洲精品自拍视频在线观看 | 亚洲综合爱 | 99精品福利 | 久久久综合精品 | 成年人免费观看国产 | 精品久久久久久国产偷窥 | 亚洲va综合va国产va中文 | 91久久人澡人人添人人爽欧美 | 女人久久久久 | 日本中文字幕电影在线免费观看 | 国产成人黄色 | 在线你懂的视频 | 麻豆极品 | 亚洲观看黄色网 | 999在线视频 | av解说在线观看 | 亚洲精品国产成人 | 国产精久久久久久妇女av | 欧洲激情在线 | 日韩欧美中文 | 国内精品久久天天躁人人爽 | 日韩首页 | 亚洲欧美视频在线播放 | 久久情侣偷拍 | 免费黄在线观看 | 国产精品久久久久久999 | 五月天亚洲综合小说网 | 国产一区二区不卡视频 | 99国产一区二区三精品乱码 | 国产色在线,com | 超碰97人人射妻 | 久久久亚洲电影 | 51久久成人国产精品麻豆 | av福利第一导航 | 国产麻豆精品一区二区 | 六月激情婷婷 | 国产又粗又猛又爽又黄的视频先 | 黄色网中文字幕 | 蜜臀一区二区三区精品免费视频 | 91视频在线看| 色成人亚洲 | av大片免费看 | 少妇bbw搡bbbb搡bbbb | 国产高清在线永久 | 成人av一区二区在线观看 | 五月黄色 | 亚州精品天堂中文字幕 | 国产专区视频在线观看 | 午夜av网站 | 一区二区三区高清在线 | 国产午夜一区二区 | 日韩精品高清不卡 | 久久午夜电影 | 久久免费播放视频 | 福利电影久久 | 精品欧美小视频在线观看 | 亚洲午夜精品福利 | 六月色丁香 | 美女免费视频一区二区 | 久久国产精品99国产精 | 91入口在线观看 | 三级在线视频观看 | 欧美精品一区在线发布 | 欧美乱大交 | 亚洲永久精品视频 | 在线v片免费观看视频 | 亚洲精品乱码久久久久久久久久 | 91麻豆精品国产91久久久无限制版 | av三区在线 | 成年免费在线视频 | 香蕉视频18 | 亚洲精品免费在线播放 | 一本一道波多野毛片中文在线 | 欧美日韩国产欧美 | 超级碰视频 | 波多野结衣在线观看一区二区三区 | 午夜精品一区二区三区在线观看 | 久久久首页 | 色婷婷综合久久久久中文字幕1 | 久久99国产一区二区三区 | 99亚洲精品 | 中文字幕一区二区在线观看 | 午夜婷婷在线观看 | 中文字幕av影院 | 狠狠干在线 | 国产精品久久9 | 亚洲精品视频在线观看免费 | 99精品视频在线观看免费 | 五月婷婷深开心 | 天堂av观看| 国产成人99久久亚洲综合精品 | 日韩女同一区二区三区在线观看 | 91精品国产麻豆 | 97超碰在线久草超碰在线观看 | .国产精品成人自产拍在线观看6 | 亚洲欧美日本国产 | 射久久久| 国产高清在线观看 | 日韩欧美在线第一页 | 丁香六月婷| 日韩艹 | 欧美一区二区三区四区夜夜大片 | 国产精品国产三级在线专区 | 色悠悠久久综合 | 玖玖视频 | av激情五月| 久久艹艹 | 国产伦精品一区二区三区高清 | 欧美性生活一级片 | 亚洲国产综合在线 | 人人cao| 久久综合激情 | 欧美一级小视频 | 日韩亚洲精品电影 | 国产a网站 | 少妇自拍av| 国产九色视频在线观看 | 九九久| 午夜精品一区二区三区在线视频 | 玖玖玖影院 | 国产第一页在线观看 | 日韩在线观看中文字幕 | 天天躁天天躁天天躁婷 | 亚洲狠狠操 | 日韩精品91偷拍在线观看 | 日韩激情在线 | 超碰免费久久 | 国产二级视频 | 免费看v片 | 五月婷婷综合在线视频 | 国产精品免费观看久久 | 欧美日韩在线视频一区 | 日韩精品在线一区 | 91在线观看视频网站 | 国产不卡av在线 | 91看片在线 | 人人人爽 | 91成人精品一区在线播放69 | 久久精品毛片 | 中文字幕传媒 | 国内精品免费久久影院 | 久草在线视频首页 | 成人久久影院 | 白丝av在线 | 久久在线免费 | 久久久国产网站 | 久久久久久免费 | 五月婷婷激情六月 | 中文字幕日本在线观看 | 精品久久久久久亚洲综合网站 | 欧美日韩在线精品一区二区 | 亚洲视频免费在线观看 | 婷婷在线网 | 亚洲黄色片在线 | 91成人黄色 | 黄色av电影在线观看 | 久久国产网站 | 欧美作爱视频 | 免费三级影片 | 亚洲a资源 | 黄色福利网站 | 福利网址在线观看 | 黄色av网站在线观看免费 | 国产成人精品一区二 | www.888.av| 日韩91在线 | 在线精品在线 | 91精品天码美女少妇 | 亚洲片在线资源 | 欧美成人h版电影 | 日本在线观看中文字幕 | 精品一区二区精品 | 中文字幕在线观看2018 | 爱色av.com | 午夜丰满寂寞少妇精品 | 综合久久久久久 | 国产一区电影在线观看 | 97人人模人人爽人人少妇 | 亚洲精品美女久久久 | 免费精品国产 | 色永久免费视频 | 国产精品久久久久久久免费观看 | 日日夜日日干 | 国内精品免费 | 91免费高清视频 | 国产喷水在线 | 婷婷色中文网 | 51精品国自产在线 | 亚洲网站在线看 | 欧美日韩国产欧美 | 狠狠狠色丁香婷婷综合久久五月 | 日日夜夜婷婷 | 国产精品久久久久久一二三四五 | 在线观看久草 | 欧美另类高清 | 日韩在线观看精品 | 在线91观看 | 久久艹在线观看 | 亚欧日韩av | 精品国产诱惑 | 久久视频免费在线 | 国产伦精品一区二区三区照片91 | 91黄色免费看 | 伊人首页 | 在线观看 亚洲 | 久久国产一区 | 麻豆91在线观看 | 9i看片成人免费看片 | av免费观看网站 | 国产精成人品免费观看 | 欧美成年性 | 国产精品丝袜久久久久久久不卡 | 日韩在线视频一区 | 99视频在线免费看 | 亚洲日本欧美 | av在线观 | 在线亚洲午夜片av大片 | 麻豆 91 在线 | 奇米导航 | 亚洲精品乱码久久久久久蜜桃不爽 | 亚洲婷婷网| 精品不卡视频 | 久久精品中文字幕免费mv | 国产最新91 | 超碰伊人网 | 波多野结衣久久资源 | 欧美精品亚州精品 | 九九精品久久久 | 久久高清免费视频 | 成人免费一区二区三区在线观看 | 精品国产一区二区三区男人吃奶 | 精品久久网 | 久久av在线| 色综合天天天天做夜夜夜夜做 | 久久不卡av| www五月天婷婷| 国产精品视频大全 | 黄色的网站免费看 | 国产精品21区 | 国产高清亚洲 | 在线观看av大片 | 久久久久久美女 | 91精品婷婷国产综合久久蝌蚪 | 国产高清视频在线观看 | 久久综合在线 | 日韩在线精品视频 | av解说在线观看 | 久久久国产一区二区 | 国内精品在线看 | 麻豆国产精品va在线观看不卡 | 黄色a视频 | 亚洲最快最全在线视频 | 久久精品一区二区三区中文字幕 | 香蕉91视频| 久久xxxx| 在线视频黄 | 一二区电影| 久久精品直播 | 午夜婷婷在线播放 | 五月婷婷在线视频观看 | 亚洲乱码国产乱码精品天美传媒 | 一区在线观看视频 | 日韩欧美精品在线视频 | 一区二区中文字幕在线 | 久久精品一二三 | 黄色精品一区 | 97精品国自产拍在线观看 | 中国精品少妇 | 91精品一区二区在线观看 | 91九色国产视频 | 国产一区二区不卡在线 | 男女激情麻豆 | 国产精品久久久久久一区二区三区 | 成年人视频免费在线播放 | 黄色小说免费观看 | 啪啪激情网| 久久久性 | 国产麻豆精品一区 | 国产精品剧情在线亚洲 | 久久8精品 | av大全免费在线观看 | 97国产精品 | 丁香资源影视免费观看 | 九九在线视频免费观看 | 日韩欧美成人网 | a特级毛片| 天天干人人干 | 最新国产在线 | 国产视频欧美视频 | 亚洲国产成人久久综合 | 天天夜操 | 视频一区在线免费观看 | 中文字幕区 | 亚洲精品欧美精品 | 亚洲午夜久久久久久久久久久 | 九九精品视频在线观看 | 精品国产一区二区三区久久久久久 | av资源在线观看 | 91亚洲成人 | 91免费在线| 91大神一区二区三区 | 亚洲日韩精品欧美一区二区 | japanesexxxxfreehd乱熟| a精品视频| 美女黄视频免费 | 成人av中文字幕在线观看 | 国产福利一区二区三区在线观看 | 欧美日韩一区二区在线观看 | 2023亚洲精品国偷拍自产在线 | 日韩av成人 | 午夜精品久久久99热福利 | 国产97在线观看 | 国产伦精品一区二区三区在线 | av在线免费在线观看 | 麻豆免费在线视频 | 日本中文在线 | 久久成年人视频 | 九九热视频在线播放 | 视频 天天草 | 91探花在线视频 | 成人一级电影在线观看 | 亚洲视频免费在线 | 久久精品一区 | 精品人人人 | 亚洲黄色在线免费观看 | 精品字幕 | 亚洲精品国产精品国自产 | 看片网站黄色 | 色婷婷久久久 | 久青草视频在线观看 | 日韩啪啪小视频 | 日韩av成人在线观看 | 四虎国产精品免费 | 免费看片在线观看 | 精品久久久久久久久亚洲 | 国模一二三区 | 成年人在线电影 | 丝袜+亚洲+另类+欧美+变态 | 人人澡人| 欧美999| 亚洲区精品 | 欧美激情精品久久久久久 | 欧美久久久影院 | 国产精品自拍在线 | 免费看国产a | 亚洲闷骚少妇在线观看网站 | 日韩成人免费在线 | 日韩欧美在线一区二区 | 免费看片色 | 欧美精品一区二区三区一线天视频 | 中文有码在线视频 | 久久婷婷精品 | 2018好看的中文在线观看 | 日韩在线观看中文 | 久久与婷婷 | av成人动漫在线观看 | 日韩在线视频一区 | 一区二区三区动漫 | 精品二区视频 | 激情黄色av| 日韩成片 | 日日夜精品| 精品久久网 | 国产三级香港三韩国三级 | 久操操| 国产高清久久 | 人人射人人射 | 中文字幕在线色 | 国产一二三四在线观看视频 | 中文字幕中文字幕在线中文字幕三区 | 午夜精品久久久久久99热明星 | 黄色免费网站 | 日批网站在线观看 | 波多野结衣综合网 | 日狠狠 | 一区二区av | 日韩午夜精品 | 亚洲一区二区三区在线看 | 97成人资源站 | 日韩免费观看一区二区 | 日韩免费播放 | 日本韩国在线不卡 | 99热这里只有精品免费 | 色国产精品一区在线观看 | 美女国内精品自产拍在线播放 | 久久久久在线视频 | 日韩国产欧美在线播放 | 亚洲欧洲视频 | 日本一区二区不卡高清 | 九九视频免费观看视频精品 | 狠狠色丁香久久婷婷综 | 欧洲激情在线 | 97精品国产97久久久久久粉红 | 一区二区毛片 | 日韩大陆欧美高清视频区 | 亚洲美女在线国产 | 婷婷日日| 在线观看免费观看在线91 | 日韩欧美视频在线免费观看 | 久久久久久久av麻豆果冻 | 99久久www免费 | 一区二区三区四区精品 | 精品国产美女在线 | 日日草夜夜操 | 欧美色伊人 | 在线观看视频福利 | 激情久久小说 | 成人av中文字幕在线观看 | 国产精品21区 | 九九视频在线 | 国产精选在线观看 | 日韩精品免费一区二区在线观看 | 天天摸夜夜操 | 99精品免费久久久久久日本 | 久久综合9988久久爱 | 色香网 | 久久免费视频在线观看30 | 久久久久久久久久网站 | 91亚洲综合| 黄色日本片 | www.狠狠色.com | 国产一区二区三区高清播放 | 天天鲁一鲁摸一摸爽一爽 | 九色视频自拍 | 超碰在线观看av | 婷婷视频在线观看 | 国产精品一区二区av影院萌芽 | 亚洲区另类春色综合小说 | 中文字幕av网站 | 亚洲国产中文字幕在线视频综合 | 热re99久久精品国产99热 | 伊人狠狠操 | 成人h电影在线观看 | 91成人免费在线 | 国产成人中文字幕 | 在线免费黄色av | 国产精品久久久久久久电影 | 夜夜操天天干 | 婷婷五月情 | 亚州国产精品视频 | 麻豆视屏 | 日韩在线第一 | 欧美色图一区 | 99久久精品免费看国产麻豆 | av网站在线免费观看 | 99国内精品久久久久久久 | 国产精品视频免费 | 99久久精品国产一区二区三区 | 黄色国产在线 | 99精品国产视频 | 四虎影视久久久 | 欧美做受高潮 | 成人毛片在线观看 | 国产亚洲在线视频 | 国产精品久久久久久超碰 | 亚洲精品乱码久久久一二三 | 日韩欧美在线免费观看 | 成人在线免费观看网站 | 亚洲成人av在线电影 | 国产区免费在线 | 日韩一二三 | 国产精品乱码久久久 | 国产裸体视频bbbbb | 久久婷婷一区二区三区 | 在线观看mv的中文字幕网站 | 婷婷亚洲五月 | 蜜桃传媒一区二区 | 天天综合久久综合 | 久久国产精品久久国产精品 | 久久久精品高清 | 一级片色播影院 | 久久久www成人免费精品 | 国内精品久久久久影院一蜜桃 | 久久免费看视频 | 亚洲免费小视频 | 久久久久亚洲精品成人网小说 | 爱爱一区 | 波多野结衣视频一区二区 | 狠狠五月天 | 欧美一区二区三区在线播放 | 91精品国产一区 | 国产精品成人一区二区 | 日韩色一区二区三区 | 99久久精品无免国产免费 | 国产一级视频在线观看 | 五月婷婷激情六月 | 成人97视频一区二区 | 久久久精品二区 | av中文字幕第一页 | 高清视频一区二区三区 | 草久电影 | 精品久久久久久久久久国产 | 国产乱码精品一区二区三区介绍 | 四虎国产免费 | 最近日本mv字幕免费观看 | 亚洲国产免费 | 91在线国产观看 | 亚洲免费a| 国产黄色精品网站 | 水蜜桃亚洲一二三四在线 | 日韩欧在线 | 热久久国产 | 久久手机免费视频 | 色吊丝在线永久观看最新版本 | 丁香电影小说免费视频观看 | av专区在线| 日韩一区二区免费视频 | 最近中文字幕完整视频高清1 | 国产一线天在线观看 | 中文字幕有码在线播放 | 亚洲aⅴ乱码精品成人区 | 五月天亚洲综合小说网 | 久久久久国产精品免费 | 在线视频日韩精品 | 男女视频91 | 深爱五月激情网 | 91在线中文字幕 | av电影一区 | 日韩高清一区 | 久久久精选 | 国产视频一区二区三区在线 | 丁香九月婷婷 | 日日躁你夜夜躁你av蜜 | 免费国产在线精品 | 国产午夜精品一区二区三区 | 亚洲精品国产成人av在线 | 国产精品精品久久久久久 | 亚洲欧美日韩一二三区 | 高清不卡毛片 | 久久激情小视频 | 在线中文字幕播放 | 蜜臀av夜夜澡人人爽人人 | 婷婷亚洲综合五月天小说 | 久久ww | 日韩sese | 免费在线观看av网址 | 国产精品专区在线观看 | 日韩欧美在线高清 | 人人超碰97| 91桃色在线观看视频 | 91在线视频免费91 | 91视频免费视频 | 99精品成人 | 久久久久久97三级 | 亚洲精品黄色在线观看 | 米奇四色影视 | 亚洲欧洲一区二区在线观看 | 久久精品婷婷 | 亚洲 欧洲 国产 精品 | 激情五月综合网 | 色噜噜日韩精品欧美一区二区 | 亚洲一区日韩在线 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国产成人一区二区精品非洲 | 久一在线| 国内久久久久 | 91在线视频网址 | 91xav| 日本中文字幕在线观看 | 91精品视频播放 | 毛片网站免费在线观看 | 91av免费观看 | 久碰视频在线观看 | 成人在线黄色电影 | 日韩三区在线观看 | 久久久久久国产精品999 | 天天草天天摸 | 久热av在线 | 久久久综合电影 | 亚洲成人av在线 | 久久艹国产视频 | 久久免费福利视频 | 又黄又爽又湿又无遮挡的在线视频 | 伊人伊成久久人综合网站 | 日韩高清dvd | 国产一区91 | 久久久91精品国产一区二区三区 | 国产 日韩 欧美 中文 在线播放 | www.狠狠插.com | 亚洲在线视频观看 | 成人午夜免费剧场 | 一区二区三区日韩在线观看 | 午夜av免费 | 国产馆在线播放 | 午夜婷婷在线播放 | 色香蕉在线视频 | 天天操天天舔天天干 | 国产福利一区二区三区在线观看 | 狠狠操操网 | 三上悠亚在线免费 | 亚洲天堂网视频 | 伊人久久一区 | 夜夜视频欧洲 | 天天干com | 中文字幕成人在线 | 日韩成人精品在线观看 | www麻豆视频 | 欧美日韩在线观看一区 | 99精品视频在线观看播放 | 国产婷婷视频在线 | 蜜桃视频在线观看一区 | 最新日本中文字幕 | 免费看成人 | 日韩黄视频 | 久久99精品国产麻豆宅宅 | 国产极品尤物在线 | 成人精品视频久久久久 | 亚洲久在线| 天天色综合三 | 精选久久 | 国产成人一区二区在线观看 | 久久9999久久免费精品国产 | 成人福利av | 欧美色图视频一区 | 欧美另类视频 | 中文网丁香综合网 | 国产黄色片在线免费观看 | 亚洲三级精品 | 国产精品igao视频网入口 | 国产精品大全 | 亚洲精品网站 | 日日干夜夜操视频 | 欧美三级高清 | 99久热在线精品视频观看 | 欧美午夜性生活 | 91激情在线视频 | 在线观看91精品国产网站 | 91av福利视频 | 在线色亚洲| 99在线看| 久久久久久美女 | 久久久久女人精品毛片九一 | 在线视频 国产 日韩 | 黄色毛片视频免费观看中文 | 国产在线观看污片 | 黄色.com | 久久久久一区 | 国产精品综合久久久久 | 亚洲精品国产自产拍在线观看 | 激情五月在线视频 | 中文字幕在线看视频 | 91爱在线| 国产不卡网站 | 人人爽人人搞 | 亚洲综合国产精品 | 国产明星视频三级a三级点| 久久永久免费视频 | 国产91aaa| 99视频播放 | 亚洲美女免费精品视频在线观看 | 美女黄频在线观看 | 国产精品24小时在线观看 | 在线黄色观看 | av在线播放不卡 | 日韩a在线看 | 国产在线观看你懂的 | 色婷婷久久久 | 久久婷亚洲五月一区天天躁 | 国产黄色片一级 | 亚洲动漫在线观看 | 狠狠操在线 | 三级av免费观看 | 精品一区二区在线免费观看 | 国产一区二区三区高清播放 | 97精品国产91久久久久久久 | 久久成人亚洲欧美电影 | 免费在线一区二区 | 日本激情中文字幕 | 国产成人黄色片 | 成人毛片在线视频 | 伊人日日干| 婷婷国产在线 | 国语精品久久 | 97精品国产一二三产区 | 亚洲视频在线观看网站 | 中文字幕国产精品一区二区 | 欧美成人中文字幕 | 九九久| 成人av直播 | 中文字幕a∨在线乱码免费看 | 免费观看一级视频 | 久久精品视频3 | 操操操com | 超碰免费公开 | 欧美一区视频 | 色 中文字幕| 高清久久久久久 | av电影免费在线 | 一区二区三区韩国免费中文网站 | 国产精品麻豆三级一区视频 | 成人中文字幕在线 | 天天操天天干天天爽 | 午夜精品久久久99热福利 | 国产123区在线观看 国产精品麻豆91 | 欧美激情视频一二三区 | 婷婷丁香花五月天 | 欧美一区二区精品在线 | 2019中文字幕第一页 | 色欧美综合 | 国产一区av在线 | 3d黄动漫免费看 | 高清精品视频 | 黄色小网站在线观看 | 久久久精品电影 | 免费热情视频 | 久青草影院| 91福利国产在线观看 | 欧美精品一区二区免费 | 亚洲区色 | 全黄网站 | 国产手机在线观看 | 久久亚洲专区 | 国产精品24小时在线观看 | 开心色插| 99视频国产精品免费观看 | 成人免费视频a | 国产精品高潮久久av | 久久久精品在线观看 | 中文字幕av最新 | 日本中文字幕一二区观 | 丁香花在线视频观看免费 | 亚洲精品合集 | 国产精品九九久久久久久久 | 国产一区免费在线 | 午夜久久成人 | 波多野结衣在线观看一区 | 韩国一区二区在线观看 | 在线观看深夜视频 | 精品免费观看视频 | 一区二区三区日韩在线观看 | 亚洲精品久久久久久久不卡四虎 | 精品国产理论片 | 免费黄色看片 | 日一日操一操 | 欧美在线你懂的 | 三级av免费 | 叶爱av在线| 国产免费中文字幕 | 97视频人人免费看 | 婷婷激情av| 日韩欧美在线视频一区二区 | 欧美美女视频在线观看 | 狠狠的操狠狠的干 | a视频在线播放 | 国产在线视频在线观看 | 精品在线免费视频 | 日韩免费中文 | 久久精品在线免费观看 | 色资源网免费观看视频 | av中文字幕在线观看网站 | 成人av一区二区兰花在线播放 | 久久伊人精品天天 | 国产69精品久久久久久 | 1区2区视频 | 亚洲精选国产 | 国产黄色片一级 | 欧美人人 | 最近更新好看的中文字幕 | 亚洲最新av网址 |