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

機器學習第一步,這是一篇手把手的隨機森林入門實戰

新聞 機器學習
到了 2020 年,我們已經能找到很多好玩的機器學習教程。本文則從最流行的隨機森林出發,手把手教你構建一個模型,它的完整流程到底是什么樣的。

 到了 2020 年,我們已經能找到很多好玩的機器學習教程。本文則從最流行的隨機森林出發,手把手教你構建一個模型,它的完整流程到底是什么樣的。

机器学习第一步,这是一篇手把手的随机森林入门实战

作為數據科學家,我們可以通過很多方法來創建分類模型。最受歡迎的方法之一是隨機森林。我們可以在隨機森林上調整超參數來優化模型的性能。

在用模型擬合之前,嘗試主成分分析(PCA)也是常見的做法。但是,為什么還要增加這一步呢?難道隨機森林的目的不是幫助我們更輕松地理解特征重要性嗎?

當我們分析隨機森林模型的「特征重要性」時,PCA 會使每個「特征」的解釋變得更加困難。但是 PCA 會進行降維操作,這可以減少隨機森林要處理的特征數量,因此 PCA 可能有助于加快隨機森林模型的訓練速度。

請注意,計算成本高是隨機森林的最大缺點之一(運行模型可能需要很長時間)。尤其是當你使用數百甚至上千個預測特征時,PCA 就變得非常重要。因此,如果只想簡單地擁有最佳性能的模型,并且可以犧牲解釋特征的重要性,那么 PCA 可能會很有用。

現在讓我們舉個例子。我們將使用 Scikit-learn 的「乳腺癌」數據集,并創建 3 個模型,比較它們的性能:

 1. 隨機森林

2. 具有 PCA 降維的隨機森林

3. 具有 PCA 降維和超參數調整的隨機森林

導入數據

首先,我們加載數據并創建一個 DataFrame。這是 Scikit-learn 預先清理的「toy」數據集,因此我們可以繼續快速建模。但是,作為最佳實踐,我們應該執行以下操作:

  • 使用 df.head()查看新的 DataFrame,以確保它符合預期。
  • 使用 df.info()可以了解每一列中的數據類型和數據量。可能需要根據需要轉換數據類型。
  • 使用 df.isna()確保沒有 NaN 值。可能需要根據需要處理缺失值或刪除行。
  • 使用 df.describe()可以了解每列的最小值、最大值、均值、中位數、標準差和四分位數范圍。

名為「cancer」的列是我們要使用模型預測的目標變量。「0」表示「無癌癥」,「1」表示「癌癥」。

  1. import pandas as pd 
  2. from sklearn.datasets import load_breast_cancercolumns = ['mean radius''mean texture''mean perimeter''mean area''mean smoothness''mean compactness''mean concavity''mean concave points''mean symmetry''mean fractal dimension''radius error''texture error''perimeter error''area error''smoothness error''compactness error''concavity error''concave points error''symmetry error''fractal dimension error''worst radius''worst texture''worst perimeter''worst area''worst smoothness''worst compactness''worst concavity''worst concave points''worst symmetry''worst fractal dimension']dataset = load_breast_cancer() 
  3. data = pd.DataFrame(dataset['data'], columns=columns) 
  4. data['cancer'] = dataset['target']display(data.head()) 
  5. display(data.info()) 
  6. display(data.isna().sum()) 
  7. display(data.describe()) 

机器学习第一步,这是一篇手把手的随机森林入门实战

上圖是乳腺癌 DataFrame 的一部分。每行是一個患者的觀察結果。最后一列名為「cancer」是我們要預測的目標變量。0 表示「無癌癥」,1 表示「癌癥」。

訓練集/測試集分割

現在,我們使用 Scikit-learn 的「train_test_split」函數拆分數據。我們想讓模型有盡可能多的數據進行訓練。但是,我們也要確保有足夠的數據來測試模型。通常數據集中行數越多,我們可以提供給訓練集的數據越多。

例如,如果我們有數百萬行,那么我們可以將其中的 90%用作訓練,10%用作測試。但是,我們的數據集只有 569 行,數據量并不大。因此,為了匹配這種小型數據集,我們會將數據分為 50%的訓練和 50%的測試。我們設置 stratify = y 以確保訓練集和測試集與原始數據集的 0 和 1 的比例一致。

  1. from sklearn.model_selection import train_test_splitX = data.drop('cancer', axis=1)   
  2. y = data['cancer']  
  3. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.50, random_state = 2020, stratify=y) 

規范化數據

在建模之前,我們需要先將數據「居中」和「標準化」,對不同的變量要在相同尺度進行測量。我們進行縮放以便決定預測變量的特征可以彼此「公平競爭」。我們還將「y_train」從 Pandas「Series」對象轉換為 NumPy 數組,以供模型稍后接收訓練數據。

  1. import numpy as np 
  2. from sklearn.preprocessing import StandardScalerss = StandardScaler() 
  3. X_train_scaled = ss.fit_transform(X_train) 
  4. X_test_scaled = ss.transform(X_test) 
  5. y_train = np.array(y_train) 

擬合「基線」隨機森林模型

現在,我們創建一個「基線」隨機森林模型。該模型使用 Scikit-learn 隨機森林分類器文檔中定義的所有預測特征和默認設置。首先,我們實例化模型并使用規范化的數據擬合模型。我們可以通過訓練數據測量模型的準確性。

  1. from sklearn.ensemble import RandomForestClassifier 
  2. from sklearn.metrics import recall_scorerfc = RandomForestClassifier() 
  3. rfc.fit(X_train_scaled, y_train) 
  4. display(rfc.score(X_train_scaled, y_train))# 1.0 

如果我們想知道哪些特征對隨機森林模型預測乳腺癌最重要,我們可以通過調用「feature_importances _」方法來可視化和量化這些重要特征:

  1. feats = {} 
  2. for feature, importance in zip(data.columns, rfc_1.feature_importances_): 
  3. feats[feature] = importanceimportances = pd.DataFrame.from_dict(feats, orient='index').rename(columns={0'Gini-Importance'}) 
  4. importances = importances.sort_values(by='Gini-Importance', ascending=False) 
  5. importances = importances.reset_index() 
  6. importances = importances.rename(columns={'index''Features'})sns.set(font_scale = 5
  7. sns.set(style="whitegrid", color_codes=True, font_scale = 1.7
  8. fig, ax = plt.subplots() 
  9. fig.set_size_inches(30,15
  10. sns.barplot(x=importances['Gini-Importance'], y=importances['Features'], data=importances, color='skyblue'
  11. plt.xlabel('Importance', fontsize=25, weight = 'bold'
  12. plt.ylabel('Features', fontsize=25, weight = 'bold'
  13. plt.title('Feature Importance', fontsize=25, weight = 'bold')display(plt.show()) 
  14. display(importances) 

机器学习第一步,这是一篇手把手的随机森林入门实战

机器学习第一步,这是一篇手把手的随机森林入门实战

主成分分析(PCA)

現在,我們如何改進基線模型呢?使用降維,我們可以用更少的變量來擬合原始數據集,同時降低運行模型的計算花銷。使用 PCA,我們可以研究這些特征的累積方差比,以了解哪些特征代表數據中的最大方差。

我們實例化 PCA 函數并設置我們要考慮的成分(特征)數量。此處我們設置為 30,以查看所有生成成分的方差,并決定在何處切割。然后,我們將縮放后的 X_train 數據「擬合」到 PCA 函數中。

  1. import matplotlib.pyplot as plt 
  2. import seaborn as sns 
  3. from sklearn.decomposition import PCApca_test = PCA(n_components=30
  4. pca_test.fit(X_train_scaled)sns.set(style='whitegrid'
  5. plt.plot(np.cumsum(pca_test.explained_variance_ratio_)) 
  6. plt.xlabel('number of components'
  7. plt.ylabel('cumulative explained variance'
  8. plt.axvline(linewidth=4, color='r', linestyle = '--', x=10, ymin=0, ymax=1
  9. display(plt.show())evr = pca_test.explained_variance_ratio_ 
  10. cvr = np.cumsum(pca_test.explained_variance_ratio_)pca_df = pd.DataFrame() 
  11. pca_df['Cumulative Variance Ratio'] = cvr 
  12. pca_df['Explained Variance Ratio'] = evr 
  13. display(pca_df.head(10)) 

机器学习第一步,这是一篇手把手的随机森林入门实战

該圖顯示,在超過 10 個特征之后,我們并未獲得太多的解釋方差。此 DataFrame 顯示了累積方差比(解釋了數據的總方差)和解釋方差比(每個 PCA 成分說明了多少數據的總方差)。

机器学习第一步,这是一篇手把手的随机森林入门实战

從上面的 DataFrame 可以看出,當我們使用 PCA 將 30 個預測變量減少到 10 個分量時,我們仍然可以解釋 95%以上的方差。其他 20 個分量僅解釋了不到 5%的方差,因此 我們可以減少他們的權重。按此邏輯,我們將使用 PCA 將 X_train 和 X_test 的成分數量從 30 個減少到 10 個。我們將這些重新創建的「降維」數據集分配給「X_train_scaled_pca」和「X_test_scaled_pca」。

  1. pca = PCA(n_components=10
  2. pca.fit(X_train_scaled)X_train_scaled_pca = pca.transform(X_train_scaled) 
  3. X_test_scaled_pca = pca.transform(X_test_scaled) 

每個分量都是原始變量和相應「權重」的線性組合。通過創建一個 DataFrame,我們可以看到每個 PCA 成分的「權重」。

  1. pca_dims = [] 
  2. for x in range(0, len(pca_df)): 
  3. pca_dims.append('PCA Component {}'.format(x))pca_test_df = pd.DataFrame(pca_test.components_, columns=columns, index=pca_dims) 
  4. pca_test_df.head(10).T 

机器学习第一步,这是一篇手把手的随机森林入门实战

PCA 后擬合「基線」隨機森林模型

現在,我們可以將 X_train_scaled_pca 和 y_train 數據擬合到另一個「基線」隨機森林模型中,測試我們對該模型的預測是否有所改進。

  1. rfc = RandomForestClassifier() 
  2. rfc.fit(X_train_scaled_pca, y_train)display(rfc.score(X_train_scaled_pca, y_train))# 1.0 

第 1 輪超參數調優:RandomSearchCV

實現 PCA 之后,我們還可以通過一些超參數調優來調整我們的隨機森林以獲得更好的預測效果。超參數可以看作模型的「設置」。兩個不同數據集的理想設置并不相同,因此我們必須「調整」模型。

首先,我們可以從 RandomSearchCV 開始考慮更多的超參值。所有隨機森林的超參數都可以在 Scikit-learn 隨機森林分類器文檔中找到。

我們生成一個「param_dist」,其值的范圍適用于每個超參數。實例化 RandomSearchCV,首先傳入我們的隨機森林模型,然后傳入「param_dist」、測試迭代次數以及交叉驗證次數。

超參數「n_jobs」可以決定要使用多少處理器內核來運行模型。設置「n_jobs = -1」將使模型運行最快,因為它使用了所有計算機核心。

我們將調整這些超參數:

  • n_estimators:隨機森林中「樹」的數量。
  • max_features:每個分割處的特征數。
  • max_depth:每棵樹可以擁有的最大「分裂」數。
  • min_samples_split:在樹的節點分裂前所需的最少觀察數。
  • min_samples_leaf:每棵樹末端的葉節點所需的最少觀察數。
  • bootstrap:是否使用 bootstrapping 來為隨機林中的每棵樹提供數據。(bootstrapping 是從數據集中進行替換的隨機抽樣。)
  1. from sklearn.model_selection import RandomizedSearchCVn_estimators = [int(x) for x in np.linspace(start = 100, stop = 1000, num = 10)]max_features = ['log2''sqrt']max_depth = [int(x) for x in np.linspace(start = 1, stop = 15, num = 15)]min_samples_split = [int(x) for x in np.linspace(start = 2, stop = 50, num = 10)]min_samples_leaf = [int(x) for x in np.linspace(start = 2, stop = 50, num = 10)]bootstrap = [True, False]param_dist = {'n_estimators': n_estimators, 
  2. 'max_features': max_features, 
  3. 'max_depth': max_depth, 
  4. 'min_samples_split': min_samples_split, 
  5. 'min_samples_leaf': min_samples_leaf, 
  6. 'bootstrap': bootstrap}rs = RandomizedSearchCV(rfc_2,  
  7. param_dist,  
  8. n_iter = 100,  
  9. cv = 3,  
  10. verbose = 1,  
  11. n_jobs=-1,  
  12. random_state=0)rs.fit(X_train_scaled_pca, y_train) 
  13. rs.best_params_ 
  14.  
  15. ———————————————————————————————————————————— 
  16. # {'n_estimators'700
  17. 'min_samples_split'2
  18. 'min_samples_leaf'2
  19. 'max_features''log2'
  20. 'max_depth'11
  21. 'bootstrap': True} 

在 n_iter = 100 且 cv = 3 的情況下,我們創建了 300 個隨機森林模型,對上面輸入的超參數進行隨機采樣組合。我們可以調用「best_params」以獲取性能最佳的模型參數(如上面代碼框底部所示)。

但是,現階段的「best_params」可能無法為我們提供最有效的信息,以獲取一系列參數來執行下一次超參數調整。為了在更大范圍內進行嘗試,我們可以輕松地獲得 RandomSearchCV 結果的 DataFrame。

  1. rs_df = pd.DataFrame(rs.cv_results_).sort_values('rank_test_score').reset_index(drop=True) 
  2. rs_df = rs_df.drop([ 
  3. 'mean_fit_time',  
  4. 'std_fit_time',  
  5. 'mean_score_time'
  6. 'std_score_time',  
  7. 'params',  
  8. 'split0_test_score',  
  9. 'split1_test_score',  
  10. 'split2_test_score',  
  11. 'std_test_score'], 
  12. axis=1
  13. rs_df.head(10

机器学习第一步,这是一篇手把手的随机森林入门实战

現在,讓我們在 x 軸上創建每個超參數的柱狀圖,并針對每個值制作模型的平均得分,查看平均而言最優的值:

  1. fig, axs = plt.subplots(ncols=3, nrows=2
  2. sns.set(style="whitegrid", color_codes=True, font_scale = 2
  3. fig.set_size_inches(30,25)sns.barplot(x='param_n_estimators', y='mean_test_score', data=rs_df, ax=axs[0,0], color='lightgrey'
  4. axs[0,0].set_ylim([.83,.93])axs[0,0].set_title(label = 'n_estimators', size=30, weight='bold')sns.barplot(x='param_min_samples_split', y='mean_test_score', data=rs_df, ax=axs[0,1], color='coral'
  5. axs[0,1].set_ylim([.85,.93])axs[0,1].set_title(label = 'min_samples_split', size=30, weight='bold')sns.barplot(x='param_min_samples_leaf', y='mean_test_score', data=rs_df, ax=axs[0,2], color='lightgreen'
  6. axs[0,2].set_ylim([.80,.93])axs[0,2].set_title(label = 'min_samples_leaf', size=30, weight='bold')sns.barplot(x='param_max_features', y='mean_test_score', data=rs_df, ax=axs[1,0], color='wheat'
  7. axs[1,0].set_ylim([.88,.92])axs[1,0].set_title(label = 'max_features', size=30, weight='bold')sns.barplot(x='param_max_depth', y='mean_test_score', data=rs_df, ax=axs[1,1], color='lightpink'
  8. axs[1,1].set_ylim([.80,.93])axs[1,1].set_title(label = 'max_depth', size=30, weight='bold')sns.barplot(x='param_bootstrap',y='mean_test_score', data=rs_df, ax=axs[1,2], color='skyblue'
  9. axs[1,2].set_ylim([.88,.92]) 

机器学习第一步,这是一篇手把手的随机森林入门实战

通過上面的圖,我們可以了解每個超參數的值的平均執行情況。

n_estimators:300、500、700 的平均分數幾乎最高;

min_samples_split:較小的值(如 2 和 7)得分較高。23 處得分也很高。我們可以嘗試一些大于 2 的值,以及 23 附近的值;

min_samples_leaf:較小的值可能得到更高的分,我們可以嘗試使用 2–7 之間的值;

max_features:「sqrt」具有最高平均分;

max_depth:沒有明確的結果,但是 2、3、7、11、15 的效果很好;

bootstrap:「False」具有最高平均分。

現在我們可以利用這些結論,進入第二輪超參數調整,以進一步縮小選擇范圍。

第 2 輪超參數調整:GridSearchCV

使用 RandomSearchCV 之后,我們可以使用 GridSearchCV 對目前最佳超參數執行更精細的搜索。超參數是相同的,但是現在我們使用 GridSearchCV 執行更「詳盡」的搜索。

在 GridSearchCV 中,我們嘗試每個超參數的單獨組合,這比 RandomSearchCV 所需的計算力要多得多,在這里我們可以直接控制要嘗試的迭代次數。例如,僅對 6 個參數搜索 10 個不同的參數值,具有 3 折交叉驗證,則需要擬合模型 3,000,000 次!這就是為什么我們在使用 RandomSearchCV 之后執行 GridSearchCV,這能幫助我們首先縮小搜索范圍。

因此,利用我們從 RandomizedSearchCV 中學到的知識,代入每個超參數的平均最佳執行范圍:

  1. from sklearn.model_selection import GridSearchCVn_estimators = [300,500,700
  2. max_features = ['sqrt'
  3. max_depth = [2,3,7,11,15
  4. min_samples_split = [2,3,4,22,23,24
  5. min_samples_leaf = [2,3,4,5,6,7
  6. bootstrap = [False]param_grid = {'n_estimators': n_estimators, 
  7. 'max_features': max_features, 
  8. 'max_depth': max_depth, 
  9. 'min_samples_split': min_samples_split, 
  10. 'min_samples_leaf': min_samples_leaf, 
  11. 'bootstrap': bootstrap}gs = GridSearchCV(rfc_2, param_grid, cv = 3, verbose = 1, n_jobs=-1
  12. gs.fit(X_train_scaled_pca, y_train) 
  13. rfc_3 = gs.best_estimator_ 
  14. gs.best_params_ 
  15.  
  16. ———————————————————————————————————————————— 
  17. # {'bootstrap': False, 
  18. 'max_depth'7
  19. 'max_features''sqrt'
  20. 'min_samples_leaf'3
  21. 'min_samples_split'2
  22. 'n_estimators'500

在這里我們將對 3x 1 x 5x 6 x 6 x 1 = 540 個模型進行 3 折交叉驗證,總共是 1,620 個模型!現在,在執行 RandomizedSearchCV 和 GridSearchCV 之后,我們 可以調用「best_params_」獲得一個最佳模型來預測我們的數據(如上面代碼框的底部所示)。

根據測試數據評估模型的性能

現在,我們可以在測試數據上評估我們建立的模型。我們會測試 3 個模型:

  • 基線隨機森林
  • 具有 PCA 降維的基線隨機森林
  • 具有 PCA 降維和超參數調優的基線隨機森林

讓我們為每個模型生成預測結果:

  1. y_pred = rfc.predict(X_test_scaled) 
  2. y_pred_pca = rfc.predict(X_test_scaled_pca) 
  3. y_pred_gs = gs.best_estimator_.predict(X_test_scaled_pca) 

然后,我們為每個模型創建混淆矩陣,查看每個模型對乳腺癌的預測能力:

  1. from sklearn.metrics import confusion_matrixconf_matrix_baseline = pd.DataFrame(confusion_matrix(y_test, y_pred), index = ['actual 0''actual 1'], columns = ['predicted 0''predicted 1'])conf_matrix_baseline_pca = pd.DataFrame(confusion_matrix(y_test, y_pred_pca), index = ['actual 0''actual 1'], columns = ['predicted 0''predicted 1'])conf_matrix_tuned_pca = pd.DataFrame(confusion_matrix(y_test, y_pred_gs), index = ['actual 0''actual 1'], columns = ['predicted 0''predicted 1'])display(conf_matrix_baseline) 
  2. display('Baseline Random Forest recall score', recall_score(y_test, y_pred)) 
  3. display(conf_matrix_baseline_pca) 
  4. display('Baseline Random Forest With PCA recall score', recall_score(y_test, y_pred_pca)) 
  5. display(conf_matrix_tuned_pca) 
  6. display('Hyperparameter Tuned Random Forest With PCA Reduced Dimensionality recall score', recall_score(y_test, y_pred_gs)) 

下面是預測結果:

机器学习第一步,这是一篇手把手的随机森林入门实战

我們將召回率作為性能指標,因為我們處理的是癌癥診斷,我們最關心的是將模型中的假陰性預測誤差最小。

考慮到這一點,看起來我們的基線隨機森林模型表現最好,召回得分為 94.97%。根據我們的測試數據集,基線模型可以正確預測 179 名癌癥患者中的 170 名。

這個案例研究提出了一個重要的注意事項:有時,在 PCA 之后,甚至在進行大量的超參數調整之后,調整的模型性能可能不如普通的「原始」模型。但是嘗試很重要,你不嘗試,就永遠都不知道哪種模型最好。在預測癌癥方面,模型越好,可以挽救的生命就更多。

 

 

責任編輯:張燕妮 來源: 機器之心
相關推薦

2009-01-18 08:49:04

Java入門JDK

2019-11-21 15:35:28

機器學習人工智能計算機

2021-08-24 05:07:25

React

2021-01-15 18:17:06

網絡協議分層

2018-02-10 11:24:39

Python數據程序

2010-01-21 10:29:54

java認證

2015-06-02 11:42:00

Cloud FoundAzure

2012-07-11 16:43:14

飛視美

2013-01-15 09:17:11

2019-11-20 10:54:46

無密碼身份驗證網絡安全

2011-07-25 14:17:46

BSMIT運維北塔

2010-07-01 13:44:12

2017-08-28 16:09:13

機器學習自動化Hyperopt

2020-07-22 22:10:34

互聯網物聯網IOT

2012-08-30 11:14:11

云計算虛擬化

2020-11-17 14:55:36

亞馬遜云科技遷移

2023-06-09 11:33:42

數據分析報告

2022-09-21 11:29:05

數據分析業務復盤

2024-02-26 10:08:01

2020-11-11 07:09:05

隔離直播系統
點贊
收藏

51CTO技術棧公眾號

国产小视频免费| 欧美一区二区三区婷婷月色| 久久精品ww人人做人人爽| 日韩精品――中文字幕| 91精品国产自产观看在线| 亚洲激情第一区| 精品视频在线观看| 中文字幕第三页| 欧美精品二区| 亚洲欧美精品伊人久久| 五月婷婷六月丁香激情| 欧美黑人xx片| 久久久影院官网| 国产日韩在线看| 天海翼一区二区| 91视频综合| 精品福利av导航| 欧美日韩在线免费播放| 最新电影电视剧在线观看免费观看| 国产真实乱对白精彩久久| 国内精品美女av在线播放| www.黄色在线| 一区二区三区视频播放| 色婷婷综合久色| 吴梦梦av在线| 亚洲av成人无码网天堂| 丝袜亚洲另类欧美综合| 欧美黑人xxxx| 一二三四国产精品| 精品亚洲自拍| 日韩一级片在线观看| 精品久久久久久久免费人妻| av中文字幕在线观看| 久久婷婷成人综合色| 国产精品美女久久久免费| 国产乡下妇女做爰| 99欧美视频| 亚洲人成欧美中文字幕| 中文字幕第九页| 久久69av| 欧美日本免费一区二区三区| 蜜臀久久99精品久久久酒店新书| 丁香花在线观看完整版电影| 国产精品女主播在线观看| 久久精品国产第一区二区三区最新章节| 精品免费囯产一区二区三区| 狠狠干成人综合网| 久久综合亚洲社区| 激情五月激情综合| 成人6969www免费视频| 精品亚洲va在线va天堂资源站| 男生和女生一起差差差视频| 亚洲国产综合在线观看| 欧美日精品一区视频| 国产主播在线看| av老司机免费在线| 亚洲高清免费视频| 男人插女人视频在线观看| 在线观看的网站你懂的| 亚洲私人黄色宅男| 中文精品视频一区二区在线观看| 成a人v在线播放| 久久久综合视频| 日本成人三级| 午夜视频福利在线观看| 99久久精品免费精品国产| 国产精品亚洲综合| 色综合免费视频| 国产91精品露脸国语对白| 亚洲最大的免费| 国产人妻精品一区二区三| 91麻豆免费在线视频| aaa一区二区三区| 日韩精品色哟哟| 国产v综合ⅴ日韩v欧美大片 | japansex久久高清精品| 欧美中文一区二区三区| 热久久精品免费视频| 一区二区精品伦理...| 亚洲精品成a人| 日韩a级在线观看| 手机在线理论片| 91极品视觉盛宴| 日本xxxxxxx免费视频| 国产91欧美| 3atv在线一区二区三区| 18禁一区二区三区| 日韩激情网站| 伊人久久久久久久久久| 精品国产精品国产精品| 一区在线观看| 国产精品扒开腿做爽爽爽男男| 中文 欧美 日韩| 狠狠色丁香婷婷综合久久片| 91中文字幕在线| 国产成人三级在线观看视频| 久久亚洲一区二区三区四区| 午夜精品美女久久久久av福利| 黄网站app在线观看| 夜色激情一区二区| 亚洲成熟丰满熟妇高潮xxxxx| 亚洲精品aaa| 亚洲国产天堂久久综合| 伊人影院综合网| 欧美日韩国产色综合一二三四| 欧美性受xxx| 艳妇乳肉豪妇荡乳av| 成人免费三级在线| 日本在线免费观看一区| 亚洲丝袜一区| 一本大道久久a久久综合| 亚洲一区精品视频在线观看| www.豆豆成人网.com| 国产亚洲成精品久久| 免费又黄又爽又色的视频| 亚洲欧美日韩国产综合精品二区| 成人精品一区二区三区| 欧美香蕉爽爽人人爽| 欧美经典一区二区| 国产无限制自拍| 成人乱码手机视频| 国产午夜精品一区理论片飘花 | 一区二区免费av| 亚洲盗摄视频| 欧美黑人一级爽快片淫片高清| 免费黄色片视频| 国产mv日韩mv欧美| 亚洲国产午夜伦理片大全在线观看网站| 香蕉成人app免费看片| 欧美性一级生活| 丝袜熟女一区二区三区| 综合久久精品| 国产九九精品视频| 涩爱av在线播放一区二区| 国产精品国产三级国产aⅴ中文| 国产精品12345| 免费精品一区二区三区在线观看| 中文字幕亚洲无线码a| 色网站在线播放| 懂色av一区二区三区免费观看| 亚洲一区尤物| 日韩高清不卡| 亚洲精品网址在线观看| 久久久久亚洲AV| 国产曰批免费观看久久久| 亚洲精品在线免费| 亚洲人成在线网站| 日韩av有码在线| www.国产成人| www.亚洲激情.com| 无码人妻少妇伦在线电影| 亚洲精品18| 欧美大尺度激情区在线播放| 国产精品热久久| 国产精品高潮久久久久无| 黄色免费视频大全| 西野翔中文久久精品字幕| 国内精品视频在线| 亚洲国产综合一区| 亚洲综合一区二区三区| 美女搡bbb又爽又猛又黄www| 欧美午夜久久| 国产免费一区二区三区| 91资源在线观看| 日韩av一区二区在线| 国产区一区二区三| 久久精品夜色噜噜亚洲aⅴ| 日本黄网站免费| 欧美精品系列| 国产日韩欧美中文在线播放| 免费a级在线播放| 欧美精品自拍偷拍动漫精品| 在线视频这里只有精品| 久久精品国产亚洲a| 欧美 国产 精品| 精品国产欧美| 久久久噜噜噜久久中文字免| 亚洲 欧美 激情 另类| 日韩欧美亚洲范冰冰与中字| 亚洲午夜精品久久久久久高潮 | 欧美成人三级视频网站| 一区二区视频免费| 亚洲视频图片小说| 中国免费黄色片| 老牛影视一区二区三区| 亚洲精品国产精品国自产| 国产精品天堂蜜av在线播放 | www.综合网.com| 精品一区二区三区四区| 中文字幕在线日本| 中文字幕av不卡| 欧美日韩一区二区区别是什么 | 日韩欧美亚洲精品| 3d动漫一区二区三区在线观看| 欧美贵妇videos办公室| 神马午夜在线观看| 91高清视频免费看| 暗呦丨小u女国产精品| 91小视频在线| 亚州精品一二三区| 欧美成人69| 欧美三级网色| 亚洲综合网站| 日韩av电影国产| 亚洲综合伊人久久大杳蕉| 亚洲欧美制服丝袜| 亚洲第一狼人区| 综合av在线| 亚洲免费久久| 国产精品一区二区99| 国产视频在线观看一区| 国产精品国产亚洲精品| 国产精品精品视频一区二区三区| 678在线观看视频| 亚洲男人天堂古典| 天堂网在线观看视频| 日韩限制级电影在线观看| 特级西西444www高清大视频| 欧美视频在线观看免费| 国产精品成人av久久| 亚洲人吸女人奶水| 亚洲欧美综合7777色婷婷| 国产午夜一区二区三区| 色呦呦一区二区| 成人黄色在线看| 香蕉在线观看视频| 国产老女人精品毛片久久| www午夜视频| 美女脱光内衣内裤视频久久影院| 精品视频无码一区二区三区| 亚洲专区在线| 黄页网站大全在线观看| 最新国产乱人伦偷精品免费网站| 国产成人亚洲综合无码| 欧美日韩精品| 日韩精品在线视频免费观看| 欧美va亚洲va日韩∨a综合色| 一本色道久久88亚洲精品综合| 66国产精品| 久久国产精品免费观看| 国产精品theporn| 日韩久久久久久久久久久久| 黄色成人av网站| 国产精品久久中文字幕| 亚洲片区在线| www.com毛片| 日韩在线观看一区二区| 少妇激情一区二区三区| 免费国产亚洲视频| 中文字幕成人在线视频| 国产一区二区三区免费播放| 欧美色图校园春色| aa级大片欧美| 一级片视频免费看| 国产精品久久久久久久久图文区 | 亚洲自拍第三页| 高清在线不卡av| 漂亮人妻被黑人久久精品| zzijzzij亚洲日本少妇熟睡| 毛茸茸多毛bbb毛多视频| 国产三级三级三级精品8ⅰ区| youjizz亚洲女人| 亚洲同性gay激情无套| 精品在线视频观看| 色域天天综合网| 夜夜狠狠擅视频| 精品三级在线观看| 蜜桃免费在线| 日韩在线观看免费高清完整版| 视频在线这里都是精品| 91av视频在线观看| 国产精品原创视频| 99在线视频免费观看| 欧美18免费视频| 四虎永久国产精品| 午夜久久黄色| 久久久久狠狠高潮亚洲精品| 久久成人免费网站| 国产一卡二卡三卡四卡| 国产欧美日韩精品一区| 欧美精品一区二区蜜桃| 色婷婷久久综合| 国产丰满美女做爰| 日韩国产在线看| 国内外激情在线| 欧美中文字幕视频在线观看| 亚洲一区二区小说| 欧美极品jizzhd欧美| 亚洲精品a级片| 丁香啪啪综合成人亚洲| 韩国v欧美v日本v亚洲v| 久久无码人妻精品一区二区三区 | 午夜精品久久久久久毛片| 97netav| 九九热精品视频在线观看| 青青在线免费视频| 石原莉奈在线亚洲三区| 久久久无码人妻精品无码| 国产精品网站在线| 男人的天堂一区| 欧美一级夜夜爽| 国产网站在线播放| 97精品在线视频| 狂野欧美xxxx韩国少妇| 色狠狠久久av五月综合| 国产日韩一区二区三区在线播放| 欧美性猛交乱大交| 国产精品嫩草影院com| 欧美激情黑白配| 精品国产自在久精品国产| 日韩美女网站| 国产精品三级久久久久久电影| 欧美午夜寂寞| 久久99久久久久久| 国产一区二区三区高清播放| 蜜桃av免费观看| 日韩欧美中文免费| 天堂中文资源在线观看| 九九精品视频在线| 成人日韩视频| 中文字幕在线亚洲精品| 日日摸夜夜添夜夜添亚洲女人| 久久久久成人精品无码中文字幕| 亚洲美女免费在线| 国产精品视频在线观看免费| 中文字幕日韩欧美| 欧美free嫩15| 三区精品视频| 青青青爽久久午夜综合久久午夜| 人妻大战黑人白浆狂泄| 欧美日韩国产一区二区| 亚洲欧美自偷自拍| 欧美与黑人午夜性猛交久久久| 日韩伦理一区二区三区| 精品少妇人妻av免费久久洗澡| 国产成人午夜电影网| 久久一级黄色片| 欧美成人bangbros| 不卡视频观看| 精品乱子伦一区二区三区| 99riav国产精品| 国产福利短视频| 色伊人久久综合中文字幕| 好男人免费精品视频| 国产成人精品在线视频| 精品国产一区二区三区久久久蜜臀 | 黄色在线观看av| 欧美性xxxxx| 国产香蕉在线| 国产日韩欧美成人| 66久久国产| 2025中文字幕| 午夜精品爽啪视频| 蜜桃成人在线视频| 国产欧美一区二区白浆黑人| 亚洲国产成人精品女人| 成人做爰69片免费| 狠狠久久亚洲欧美专区| 国产h在线观看| 91视频8mav| 亚洲激情二区| 亚欧洲乱码视频| 欧美日韩大陆一区二区| 新版中文在线官网| 欧美精品一区二区三区在线四季 | 成av人电影在线观看| 亚洲自拍av在线| 一道本一区二区| 久久精品在线观看视频| 日韩欧美一区二区在线视频| 人狥杂交一区欧美二区| 视频一区亚洲| 国产成人免费网站| 丁香社区五月天| 久久av资源网站| 欧美自拍视频| 在线不卡一区二区三区| 激情久久av一区av二区av三区| 黄色在线网站| www.成人三级视频| 久久婷婷影院| 丰满少妇高潮久久三区| 亚洲女同性videos| 玖玖玖视频精品| 国产无套粉嫩白浆内谢的出处| 亚洲欧美电影一区二区| 欧美高清成人| av免费观看久久| 日韩va欧美va亚洲va久久| 欧美久久久久久久久久久久| 国产一区二区动漫| 超碰在线成人| www.超碰97.com| 欧美小视频在线观看| 天堂av最新在线| 亚洲国产精品视频一区| 99国产精品一区| 99久久精品国产色欲| 国产ts一区二区| 亚洲五月婷婷|