一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python之Sklearn使用入門(mén)教程

Python之Sklearn使用入門(mén)教程

2021-09-06 00:25謂之小一 Python

這篇文章主要介紹了Python之Sklearn使用入門(mén)教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1.Sklearn簡(jiǎn)介

Scikit-learn(sklearn)是機(jī)器學(xué)習(xí)中常用的第三方模塊,對(duì)常用的機(jī)器學(xué)習(xí)方法進(jìn)行了封裝,包括回歸(Regression)、降維(Dimensionality Reduction)、分類(Classfication)、聚類(Clustering)等方法。當(dāng)我們面臨機(jī)器學(xué)習(xí)問(wèn)題時(shí),便可根據(jù)下圖來(lái)選擇相應(yīng)的方法。Sklearn具有以下特點(diǎn):

  • 簡(jiǎn)單高效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具
  • 讓每個(gè)人能夠在復(fù)雜環(huán)境中重復(fù)使用
  • 建立NumPy、Scipy、MatPlotLib之上

Python之Sklearn使用入門(mén)教程

2.Sklearn安裝

Sklearn安裝要求Python(>=2.7 or >=3.3)NumPy (>= 1.8.2)SciPy (>= 0.13.3)。如果已經(jīng)安裝NumPy和SciPy,安裝scikit-learn可以使用pip install -U scikit-learn

3.Sklearn通用學(xué)習(xí)模式

Sklearn中包含眾多機(jī)器學(xué)習(xí)方法,但各種學(xué)習(xí)方法大致相同,我們?cè)谶@里介紹Sklearn通用學(xué)習(xí)模式。首先引入需要訓(xùn)練的數(shù)據(jù),Sklearn自帶部分?jǐn)?shù)據(jù)集,也可以通過(guò)相應(yīng)方法進(jìn)行構(gòu)造,4.Sklearn datasets中我們會(huì)介紹如何構(gòu)造數(shù)據(jù)。然后選擇相應(yīng)機(jī)器學(xué)習(xí)方法進(jìn)行訓(xùn)練,訓(xùn)練過(guò)程中可以通過(guò)一些技巧調(diào)整參數(shù),使得學(xué)習(xí)準(zhǔn)確率更高。模型訓(xùn)練完成之后便可預(yù)測(cè)新數(shù)據(jù),然后我們還可以通過(guò)MatPlotLib等方法來(lái)直觀的展示數(shù)據(jù)。另外還可以將我們已訓(xùn)練好的Model進(jìn)行保存,方便移動(dòng)到其他平臺(tái),不必重新訓(xùn)練。

  1. from sklearn import datasets#引入數(shù)據(jù)集,sklearn包含眾多數(shù)據(jù)集
  2. from sklearn.model_selection import train_test_split#將數(shù)據(jù)分為測(cè)試集和訓(xùn)練集
  3. from sklearn.neighbors import KNeighborsClassifier#利用鄰近點(diǎn)方式訓(xùn)練數(shù)據(jù)
  4.  
  5. ###引入數(shù)據(jù)###
  6. iris=datasets.load_iris()#引入iris鳶尾花數(shù)據(jù),iris數(shù)據(jù)包含4個(gè)特征變量
  7. iris_X=iris.data#特征變量
  8. iris_y=iris.target#目標(biāo)值
  9. X_train,X_test,y_train,y_test=train_test_split(iris_X,iris_y,test_size=0.3)#利用train_test_split進(jìn)行將訓(xùn)練集和測(cè)試集進(jìn)行分開(kāi),test_size30%
  10. print(y_train)#我們看到訓(xùn)練數(shù)據(jù)的特征值分為3
  11. '''
  12. [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  13. 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
  14. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2
  15. 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
  16. 2 2]
  17. '''
  18.  
  19. ###訓(xùn)練數(shù)據(jù)###
  20. knn=KNeighborsClassifier()#引入訓(xùn)練方法
  21. knn.fit(X_train,y_train)#進(jìn)行填充測(cè)試數(shù)據(jù)進(jìn)行訓(xùn)練
  22.  
  23. ###預(yù)測(cè)數(shù)據(jù)###
  24. print(knn.predict(X_test))#預(yù)測(cè)特征值
  25. '''
  26. [1 1 1 0 2 2 1 1 1 0 0 0 2 2 0 1 2 2 0 1 0 0 0 0 0 0 2 1 0 0 0 1 0 2 0 2 0
  27. 1 2 1 0 0 1 0 2]
  28. '''
  29. print(y_test)#真實(shí)特征值
  30. '''
  31. [1 1 1 0 1 2 1 1 1 0 0 0 2 2 0 1 2 2 0 1 0 0 0 0 0 0 2 1 0 0 0 1 0 2 0 2 0
  32. 1 2 1 0 0 1 0 2]
  33. '''

4.Sklearn datasets

Sklearn提供一些標(biāo)準(zhǔn)數(shù)據(jù),我們不必再?gòu)钠渌W(wǎng)站尋找數(shù)據(jù)進(jìn)行訓(xùn)練。例如我們上面用來(lái)訓(xùn)練的load_iris數(shù)據(jù),可以很方便的返回?cái)?shù)據(jù)特征變量和目標(biāo)值。除了引入數(shù)據(jù)之外,我們還可以通過(guò)load_sample_images()來(lái)引入圖片。

Python之Sklearn使用入門(mén)教程

除了sklearn提供的一些數(shù)據(jù)之外,還可以自己來(lái)構(gòu)造一些數(shù)據(jù)幫助我們學(xué)習(xí)。

  1. from sklearn import datasets#引入數(shù)據(jù)集
  2. #構(gòu)造的各種參數(shù)可以根據(jù)自己需要調(diào)整
  3. X,y=datasets.make_regression(n_samples=100,n_features=1,n_targets=1,noise=1)
  4.  
  5. ###繪制構(gòu)造的數(shù)據(jù)###
  6. import matplotlib.pyplot as plt
  7. plt.figure()
  8. plt.scatter(X,y)
  9. plt.show()

Python之Sklearn使用入門(mén)教程

5.Sklearn Model的屬性和功能

數(shù)據(jù)訓(xùn)練完成之后得到模型,我們可以根據(jù)不同模型得到相應(yīng)的屬性和功能,并將其輸出得到直觀結(jié)果。假如通過(guò)線性回歸訓(xùn)練之后得到線性函數(shù)y=0.3x+1,我們可通過(guò)_coef得到模型的系數(shù)為0.3,通過(guò)_intercept得到模型的截距為1。

  1. from sklearn import datasets
  2. from sklearn.linear_model import LinearRegression#引入線性回歸模型
  3.  
  4. ###引入數(shù)據(jù)###
  5. load_data=datasets.load_boston()
  6. data_X=load_data.data
  7. data_y=load_data.target
  8. print(data_X.shape)
  9. #(506, 13)data_X共13個(gè)特征變量
  10.  
  11. ###訓(xùn)練數(shù)據(jù)###
  12. model=LinearRegression()
  13. model.fit(data_X,data_y)
  14. model.predict(data_X[:4,:])#預(yù)測(cè)前4個(gè)數(shù)據(jù)
  15.  
  16. ###屬性和功能###
  17. print(model.coef_)
  18. '''
  19. [ -1.07170557e-01 4.63952195e-02 2.08602395e-02 2.68856140e+00
  20. -1.77957587e+01 3.80475246e+00 7.51061703e-04 -1.47575880e+00
  21. 3.05655038e-01 -1.23293463e-02 -9.53463555e-01 9.39251272e-03
  22. -5.25466633e-01]
  23. '''
  24. print(model.intercept_)
  25. #36.4911032804
  26. print(model.get_params())#得到模型的參數(shù)
  27. #{'copy_X': True, 'normalize': False, 'n_jobs': 1, 'fit_intercept': True}
  28. print(model.score(data_X,data_y))#對(duì)訓(xùn)練情況進(jìn)行打分
  29. #0.740607742865

6.Sklearn數(shù)據(jù)預(yù)處理

數(shù)據(jù)集的標(biāo)準(zhǔn)化對(duì)于大部分機(jī)器學(xué)習(xí)算法來(lái)說(shuō)都是一種常規(guī)要求,如果單個(gè)特征沒(méi)有或多或少地接近于標(biāo)準(zhǔn)正態(tài)分布,那么它可能并不能在項(xiàng)目中表現(xiàn)出很好的性能。在實(shí)際情況中,我們經(jīng)常忽略特征的分布形狀,直接去均值來(lái)對(duì)某個(gè)特征進(jìn)行中心化,再通過(guò)除以非常量特征(non-constant features)的標(biāo)準(zhǔn)差進(jìn)行縮放。

例如, 許多學(xué)習(xí)算法中目標(biāo)函數(shù)的基礎(chǔ)都是假設(shè)所有的特征都是零均值并且具有同一階數(shù)上的方差(比如徑向基函數(shù)、支持向量機(jī)以及L1L2正則化項(xiàng)等)。如果某個(gè)特征的方差比其他特征大幾個(gè)數(shù)量級(jí),那么它就會(huì)在學(xué)習(xí)算法中占據(jù)主導(dǎo)位置,導(dǎo)致學(xué)習(xí)器并不能像我們說(shuō)期望的那樣,從其他特征中學(xué)習(xí)。例如我們可以通過(guò)Scale將數(shù)據(jù)縮放,達(dá)到標(biāo)準(zhǔn)化的目的。

  1. from sklearn import preprocessing
  2. import numpy as np
  3. a=np.array([[10,2.7,3.6],
  4. [-100,5,-2],
  5. [120,20,40]],dtype=np.float64)
  6. print(a)
  7. print(preprocessing.scale(a))#將值的相差度減小
  8. '''
  9. [[ 10. 2.7 3.6]
  10. [-100. 5. -2. ]
  11. [ 120. 20. 40
  12. [[ 0. -0.85170713 -0.55138018]
  13. [-1.22474487 -0.55187146 -0.852133 ]
  14. [ 1.22474487 1.40357859 1.40351318]]
  15. '''

我們來(lái)看下預(yù)處理前和預(yù)處理預(yù)處理后的差別,預(yù)處理之前模型評(píng)分為0.511111111111,預(yù)處理后模型評(píng)分為0.933333333333,可以看到預(yù)處理對(duì)模型評(píng)分有很大程度的提升。

  1. from sklearn.model_selection import train_test_split
  2. from sklearn.datasets.samples_generator import make_classification
  3. from sklearn.svm import SVC
  4. import matplotlib.pyplot as plt
  5.  
  6. ###生成的數(shù)據(jù)如下圖所示###
  7. plt.figure
  8. X,y=make_classification(n_samples=300,n_features=2,n_redundant=0,n_informative=2, random_state=22,n_clusters_per_class=1,scale=100)
  9. plt.scatter(X[:,0],X[:,1],c=y)
  10. plt.show()
  11.  
  12. ###利用minmax方式對(duì)數(shù)據(jù)進(jìn)行規(guī)范化###
  13. X=preprocessing.minmax_scale(X)#feature_range=(-1,1)可設(shè)置重置范圍
  14. X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)
  15. clf=SVC()
  16. clf.fit(X_train,y_train)
  17. print(clf.score(X_test,y_test))
  18. #0.933333333333
  19. #沒(méi)有規(guī)范化之前我們的訓(xùn)練分?jǐn)?shù)為0.511111111111,規(guī)范化后為0.933333333333,準(zhǔn)確度有很大提升

Python之Sklearn使用入門(mén)教程

7.交叉驗(yàn)證

交叉驗(yàn)證的基本思想是將原始數(shù)據(jù)進(jìn)行分組,一部分做為訓(xùn)練集來(lái)訓(xùn)練模型,另一部分做為測(cè)試集來(lái)評(píng)價(jià)模型。交叉驗(yàn)證用于評(píng)估模型的預(yù)測(cè)性能,尤其是訓(xùn)練好的模型在新數(shù)據(jù)上的表現(xiàn),可以在一定程度上減小過(guò)擬合。還可以從有限的數(shù)據(jù)中獲取盡可能多的有效信息。

機(jī)器學(xué)習(xí)任務(wù)中,拿到數(shù)據(jù)后,我們首先會(huì)將原始數(shù)據(jù)集分為三部分:訓(xùn)練集、驗(yàn)證集和測(cè)試集。 訓(xùn)練集用于訓(xùn)練模型,驗(yàn)證集用于模型的參數(shù)選擇配置,測(cè)試集對(duì)于模型來(lái)說(shuō)是未知數(shù)據(jù),用于評(píng)估模型的泛化能力。不同的劃分會(huì)得到不同的最終模型。

以前我們是直接將數(shù)據(jù)分割成70%的訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù),現(xiàn)在我們利用K折交叉驗(yàn)證分割數(shù)據(jù),首先將數(shù)據(jù)分為5組,然后再?gòu)?組數(shù)據(jù)之中選擇不同數(shù)據(jù)進(jìn)行訓(xùn)練。

Python之Sklearn使用入門(mén)教程

  1. from sklearn.datasets import load_iris
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.neighbors import KNeighborsClassifier
  4.  
  5. ###引入數(shù)據(jù)###
  6. iris=load_iris()
  7. X=iris.data
  8. y=iris.target
  9.  
  10. ###訓(xùn)練數(shù)據(jù)###
  11. X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)
  12. #引入交叉驗(yàn)證,數(shù)據(jù)分為5組進(jìn)行訓(xùn)練
  13. from sklearn.model_selection import cross_val_score
  14. knn=KNeighborsClassifier(n_neighbors=5)#選擇鄰近的5個(gè)點(diǎn)
  15. scores=cross_val_score(knn,X,y,cv=5,scoring='accuracy')#評(píng)分方式為accuracy
  16. print(scores)#每組的評(píng)分結(jié)果
  17. #[ 0.96666667 1. 0.93333333 0.96666667 1. ]5組數(shù)據(jù)
  18. print(scores.mean())#平均評(píng)分結(jié)果
  19. #0.973333333333

那么是否n_neighbor=5便是最好呢,我們來(lái)調(diào)整參數(shù)來(lái)看模型最終訓(xùn)練分?jǐn)?shù)。

  1. from sklearn import datasets
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.neighbors import KNeighborsClassifier
  4. from sklearn.model_selection import cross_val_score#引入交叉驗(yàn)證
  5. import matplotlib.pyplot as plt
  6. ###引入數(shù)據(jù)###
  7. iris=datasets.load_iris()
  8. X=iris.data
  9. y=iris.target
  10. ###設(shè)置n_neighbors的值為1到30,通過(guò)繪圖來(lái)看訓(xùn)練分?jǐn)?shù)###
  11. k_range=range(1,31)
  12. k_score=[]
  13. for k in k_range:
  14. knn=KNeighborsClassifier(n_neighbors=k)
  15. scores=cross_val_score(knn,X,y,cv=10,scoring='accuracy')#for classfication
  16. k_score.append(scores.mean())
  17. plt.figure()
  18. plt.plot(k_range,k_score)
  19. plt.xlabel('Value of k for KNN')
  20. plt.ylabel('CrossValidation accuracy')
  21. plt.show()
  22. #K過(guò)大會(huì)帶來(lái)過(guò)擬合問(wèn)題,我們可以選擇12-18之間的值

我們可以看到n_neighbor在12-18之間評(píng)分比較高,實(shí)際項(xiàng)目之中我們可以通過(guò)這種方式來(lái)選擇不同參數(shù)。另外我們還可以選擇2-fold Cross Validation,Leave-One-Out Cross Validation等方法來(lái)分割數(shù)據(jù),比較不同方法和參數(shù)得到最優(yōu)結(jié)果。

Python之Sklearn使用入門(mén)教程

我們將上述代碼中的循環(huán)部分改變一下,評(píng)分函數(shù)改為neg_mean_squared_error,便得到對(duì)于不同參數(shù)時(shí)的損失函數(shù)。

  1. for k in k_range:
  2. knn=KNeighborsClassifier(n_neighbors=k)
  3. loss=-cross_val_score(knn,X,y,cv=10,scoring='neg_mean_squared_error')# for regression
  4. k_score.append(loss.mean())

Python之Sklearn使用入門(mén)教程

8.過(guò)擬合問(wèn)題

什么是過(guò)擬合問(wèn)題呢?例如下面這張圖片,黑色線已經(jīng)可以很好的分類出紅色點(diǎn)和藍(lán)色點(diǎn),但是在機(jī)器學(xué)習(xí)過(guò)程中,模型過(guò)于糾結(jié)準(zhǔn)確度,便形成了綠色線的結(jié)果。然后在預(yù)測(cè)測(cè)試數(shù)據(jù)集結(jié)果的過(guò)程中往往會(huì)浪費(fèi)很多時(shí)間并且準(zhǔn)確率不是太好。

Python之Sklearn使用入門(mén)教程

我們先舉例如何辨別overfitting問(wèn)題。Sklearn.learning_curve中的learning curve可以很直觀的看出Model學(xué)習(xí)的進(jìn)度,對(duì)比發(fā)現(xiàn)有沒(méi)有過(guò)擬合。

  1. from sklearn.model_selection import learning_curve
  2. from sklearn.datasets import load_digits
  3. from sklearn.svm import SVC
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6.  
  7. #引入數(shù)據(jù)
  8. digits=load_digits()
  9. X=digits.data
  10. y=digits.target
  11.  
  12. #train_size表示記錄學(xué)習(xí)過(guò)程中的某一步,比如在10%,25%...的過(guò)程中記錄一下
  13. train_size,train_loss,test_loss=learning_curve(
  14. SVC(gamma=0.1),X,y,cv=10,scoring='neg_mean_squared_error',
  15. train_sizes=[0.1,0.25,0.5,0.75,1]
  16. )
  17. train_loss_mean=-np.mean(train_loss,axis=1)
  18. test_loss_mean=-np.mean(test_loss,axis=1)
  19.  
  20. plt.figure()
  21. #將每一步進(jìn)行打印出來(lái)
  22. plt.plot(train_size,train_loss_mean,'o-',color='r',label='Training')
  23. plt.plot(train_size,test_loss_mean,'o-',color='g',label='Cross-validation')
  24. plt.legend('best')
  25. plt.show()

Python之Sklearn使用入門(mén)教程

如果我們改變gamma的值,那么會(huì)改變相應(yīng)的Loss函數(shù)。損失函數(shù)便在10左右停留,此時(shí)便能直觀的看出過(guò)擬合。

Python之Sklearn使用入門(mén)教程

下面我們通過(guò)修改gamma參數(shù)來(lái)修正過(guò)擬合問(wèn)題。

  1. from sklearn.model_selection import validation_curve#將learning_curve改為validation_curve
  2. from sklearn.datasets import load_digits
  3. from sklearn.svm import SVC
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. #引入數(shù)據(jù)
  7. digits=load_digits()
  8. X=digits.data
  9. y=digits.target
  10.  
  11. #改變param來(lái)觀察Loss函數(shù)情況
  12. param_range=np.logspace(-6,-2.3,5)
  13. train_loss,test_loss=validation_curve(
  14. SVC(),X,y,param_name='gamma',param_range=param_range,cv=10,
  15. scoring='neg_mean_squared_error'
  16. )
  17. train_loss_mean=-np.mean(train_loss,axis=1)
  18. test_loss_mean=-np.mean(test_loss,axis=1)
  19.  
  20. plt.figure()
  21. plt.plot(param_range,train_loss_mean,'o-',color='r',label='Training')
  22. plt.plot(param_range,test_loss_mean,'o-',color='g',label='Cross-validation')
  23. plt.xlabel('gamma')
  24. plt.ylabel('loss')
  25. plt.legend(loc='best')
  26. plt.show()

通過(guò)改變不同的gamma值我們可以看到Loss函數(shù)的變化情況。從圖中可以看到,如果gamma的值大于0.001便會(huì)出現(xiàn)過(guò)擬合的問(wèn)題,那么我們構(gòu)建模型時(shí)gamma參數(shù)設(shè)置應(yīng)該小于0.001。

Python之Sklearn使用入門(mén)教程

9.保存模型

我們花費(fèi)很長(zhǎng)時(shí)間用來(lái)訓(xùn)練數(shù)據(jù),調(diào)整參數(shù),得到最優(yōu)模型。但如果改變平臺(tái),我們還需要重新訓(xùn)練數(shù)據(jù)和修正參數(shù)來(lái)得到模型,將會(huì)非常的浪費(fèi)時(shí)間。此時(shí)我們可以先將model保存起來(lái),然后便可以很方便的將模型遷移。

  1. from sklearn import svm
  2. from sklearn import datasets
  3.  
  4. #引入和訓(xùn)練數(shù)據(jù)
  5. iris=datasets.load_iris()
  6. X,y=iris.data,iris.target
  7. clf=svm.SVC()
  8. clf.fit(X,y)
  9.  
  10. #引入sklearn中自帶的保存模塊
  11. from sklearn.externals import joblib
  12. #保存model
  13. joblib.dump(clf,'sklearn_save/clf.pkl')
  14.  
  15. #重新加載model,只有保存一次后才能加載model
  16. clf3=joblib.load('sklearn_save/clf.pkl')
  17. print(clf3.predict(X[0:1]))
  18. #存放model能夠更快的獲得以前的結(jié)果

參考鏈接

此文檔整理自莫煩sklearn視頻教程,鏈接為https://morvanzhou.github.io/tutorials/machine-learning/sklearn/。

到此這篇關(guān)于Python之Sklearn使用入門(mén)教程的文章就介紹到這了,更多相關(guān)Sklearn 入門(mén)內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/XiaoYi_Eric/article/details/79952325

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 被强迫变性翘秘书 | 农村妇女野战bbxxx农村妇女 | 美女艹b | 99这里精品 | 免费看隐私美女 | 成人综合网站 | 婷婷sese| 国产va免费精品高清在线观看 | 亚洲国产三级在线观看 | 日韩一区二区在线视频 | 91在线精品国产 | 精品国产福利在线观看一区 | 欧美日韩一本 | 国内交换一区二区三区 | hezyo加勒比一区二区三区 | 色综合久久中文字幕 | 国产高清在线视频一区二区三区 | 免费观看成年肉动漫网站 | aaa级大片| 亚洲网红精品大秀在线观看 | 亚洲国产在线视频中文字 | 欧美久草在线 | 国产三级精品久久三级国专区 | www.色老板| 免费看黄色大片 | 日韩欧美一区二区在线 | bt天堂午夜国产精品 | 日韩丝袜在线观看 | 女暴露狂校园裸露小说 | 精品无码久久久久久久久 | 我将她侵犯1~6樱花动漫在线看 | 91精品国产色综合久久不卡蜜 | 美女扒开两腿露出尿口的视频 | 高考录取率1977-2021 | 国内精品露脸在线视频播放 | 亚洲成人黄色网址 | 免费的毛片视频 | 日本xxxx69hd| 二次元美女内裤凹陷太深 | 操操小说 | 国产一级视频久久 |