久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信用卡欺诈检测

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信用卡欺诈检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

信用卡欺詐檢測

信用卡欺詐檢測是kaggle上一個項目,數據來源是2013年歐洲持有信用卡的交易數據,詳細內容見https://www.kaggle.com/mlg-ulb/creditcardfraud
這個項目所要實現的目標是對一個交易預測它是否存在信用卡欺詐,和大部分機器學習項目的區別在于正負樣本的不均衡,而且是極不均衡的,所以這是特征工程需要處理的第一個問題。
除此之外,在數據預處理上減輕的負擔是缺失值的處理,并且大多數特征是經過了均值化處理的。

項目背景與數據初探

# 導入基礎的庫,其他的模型庫在需要時再導入 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings('ignore') # 設置顯示的寬度,避免有過長行不顯示的問題 pd.set_option('display.max_columns', 10000) pd.set_option('display.max_colwidth', 10000) pd.set_option('display.width', 10000) # 導入數據并查看基本數據情況 data = pd.read_csv('D:/數據分析/kaggle/信用卡欺詐/creditcard.csv') data.info() <class 'pandas.core.frame.DataFrame'> RangeIndex: 284807 entries, 0 to 284806 Data columns (total 31 columns):# Column Non-Null Count Dtype --- ------ -------------- ----- 0 Time 284807 non-null float641 V1 284807 non-null float642 V2 284807 non-null float643 V3 284807 non-null float644 V4 284807 non-null float645 V5 284807 non-null float646 V6 284807 non-null float647 V7 284807 non-null float648 V8 284807 non-null float649 V9 284807 non-null float6410 V10 284807 non-null float6411 V11 284807 non-null float6412 V12 284807 non-null float6413 V13 284807 non-null float6414 V14 284807 non-null float6415 V15 284807 non-null float6416 V16 284807 non-null float6417 V17 284807 non-null float6418 V18 284807 non-null float6419 V19 284807 non-null float6420 V20 284807 non-null float6421 V21 284807 non-null float6422 V22 284807 non-null float6423 V23 284807 non-null float6424 V24 284807 non-null float6425 V25 284807 non-null float6426 V26 284807 non-null float6427 V27 284807 non-null float6428 V28 284807 non-null float6429 Amount 284807 non-null float6430 Class 284807 non-null int64 dtypes: float64(30), int64(1) memory usage: 67.4 MB data.shape (284807, 31) data.describe() TimeV1V2V3V4V5V6V7V8V9V10V11V12V13V14V15V16V17V18V19V20V21V22V23V24V25V26V27V28AmountClasscountmeanstdmin25%50%75%max
284807.0000002.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+052.848070e+05284807.000000284807.000000
94813.8595753.919560e-155.688174e-16-8.769071e-152.782312e-15-1.552563e-152.010663e-15-1.694249e-15-1.927028e-16-3.137024e-151.768627e-159.170318e-16-1.810658e-151.693438e-151.479045e-153.482336e-151.392007e-15-7.528491e-164.328772e-169.049732e-165.085503e-161.537294e-167.959909e-165.367590e-164.458112e-151.453003e-151.699104e-15-3.660161e-16-1.206049e-1688.3496190.001727
47488.1459551.958696e+001.651309e+001.516255e+001.415869e+001.380247e+001.332271e+001.237094e+001.194353e+001.098632e+001.088850e+001.020713e+009.992014e-019.952742e-019.585956e-019.153160e-018.762529e-018.493371e-018.381762e-018.140405e-017.709250e-017.345240e-017.257016e-016.244603e-016.056471e-015.212781e-014.822270e-014.036325e-013.300833e-01250.1201090.041527
0.000000-5.640751e+01-7.271573e+01-4.832559e+01-5.683171e+00-1.137433e+02-2.616051e+01-4.355724e+01-7.321672e+01-1.343407e+01-2.458826e+01-4.797473e+00-1.868371e+01-5.791881e+00-1.921433e+01-4.498945e+00-1.412985e+01-2.516280e+01-9.498746e+00-7.213527e+00-5.449772e+01-3.483038e+01-1.093314e+01-4.480774e+01-2.836627e+00-1.029540e+01-2.604551e+00-2.256568e+01-1.543008e+010.0000000.000000
54201.500000-9.203734e-01-5.985499e-01-8.903648e-01-8.486401e-01-6.915971e-01-7.682956e-01-5.540759e-01-2.086297e-01-6.430976e-01-5.354257e-01-7.624942e-01-4.055715e-01-6.485393e-01-4.255740e-01-5.828843e-01-4.680368e-01-4.837483e-01-4.988498e-01-4.562989e-01-2.117214e-01-2.283949e-01-5.423504e-01-1.618463e-01-3.545861e-01-3.171451e-01-3.269839e-01-7.083953e-02-5.295979e-025.6000000.000000
84692.0000001.810880e-026.548556e-021.798463e-01-1.984653e-02-5.433583e-02-2.741871e-014.010308e-022.235804e-02-5.142873e-02-9.291738e-02-3.275735e-021.400326e-01-1.356806e-025.060132e-024.807155e-026.641332e-02-6.567575e-02-3.636312e-033.734823e-03-6.248109e-02-2.945017e-026.781943e-03-1.119293e-024.097606e-021.659350e-02-5.213911e-021.342146e-031.124383e-0222.0000000.000000
139320.5000001.315642e+008.037239e-011.027196e+007.433413e-016.119264e-013.985649e-015.704361e-013.273459e-015.971390e-014.539234e-017.395934e-016.182380e-016.625050e-014.931498e-016.488208e-015.232963e-013.996750e-015.008067e-014.589494e-011.330408e-011.863772e-015.285536e-011.476421e-014.395266e-013.507156e-012.409522e-019.104512e-027.827995e-0277.1650000.000000
172792.0000002.454930e+002.205773e+019.382558e+001.687534e+013.480167e+017.330163e+011.205895e+022.000721e+011.559499e+012.374514e+011.201891e+017.848392e+007.126883e+001.052677e+018.877742e+001.731511e+019.253526e+005.041069e+005.591971e+003.942090e+012.720284e+011.050309e+012.252841e+014.584549e+007.519589e+003.517346e+003.161220e+013.384781e+0125691.1600001.000000
data.head().append(data.tail()) TimeV1V2V3V4V5V6V7V8V9V10V11V12V13V14V15V16V17V18V19V20V21V22V23V24V25V26V27V28AmountClass01234284802284803284804284805284806
0.0-1.359807-0.0727812.5363471.378155-0.3383210.4623880.2395990.0986980.3637870.090794-0.551600-0.617801-0.991390-0.3111691.468177-0.4704010.2079710.0257910.4039930.251412-0.0183070.277838-0.1104740.0669280.128539-0.1891150.133558-0.021053149.620
0.01.1918570.2661510.1664800.4481540.060018-0.082361-0.0788030.085102-0.255425-0.1669741.6127271.0652350.489095-0.1437720.6355580.463917-0.114805-0.183361-0.145783-0.069083-0.225775-0.6386720.101288-0.3398460.1671700.125895-0.0089830.0147242.690
1.0-1.358354-1.3401631.7732090.379780-0.5031981.8004990.7914610.247676-1.5146540.2076430.6245010.0660840.717293-0.1659462.345865-2.8900831.109969-0.121359-2.2618570.5249800.2479980.7716790.909412-0.689281-0.327642-0.139097-0.055353-0.059752378.660
1.0-0.966272-0.1852261.792993-0.863291-0.0103091.2472030.2376090.377436-1.387024-0.054952-0.2264870.1782280.507757-0.287924-0.631418-1.059647-0.6840931.965775-1.232622-0.208038-0.1083000.005274-0.190321-1.1755750.647376-0.2219290.0627230.061458123.500
2.0-1.1582330.8777371.5487180.403034-0.4071930.0959210.592941-0.2705330.8177390.753074-0.8228430.5381961.345852-1.1196700.175121-0.451449-0.237033-0.0381950.8034870.408542-0.0094310.798278-0.1374580.141267-0.2060100.5022920.2194220.21515369.990
172786.0-11.88111810.071785-9.834783-2.066656-5.364473-2.606837-4.9182157.3053341.9144284.356170-1.5931052.711941-0.6892564.626942-0.9244591.1076411.9916910.510632-0.6829201.4758290.2134540.1118641.014480-0.5093481.4368070.2500340.9436510.8237310.770
172787.0-0.732789-0.0550802.035030-0.7385890.8682291.0584150.0243300.2948690.584800-0.975926-0.1501890.9158021.214756-0.6751431.164931-0.711757-0.025693-1.221179-1.5455560.0596160.2142050.9243840.012463-1.016226-0.606624-0.3952550.068472-0.05352724.790
172788.01.919565-0.301254-3.249640-0.5578282.6305153.031260-0.2968270.7084170.432454-0.4847820.4116140.063119-0.183699-0.5106021.3292840.1407160.3135020.395652-0.5772520.0013960.2320450.578229-0.0375010.6401340.265745-0.0873710.004455-0.02656167.880
172788.0-0.2404400.5304830.7025100.689799-0.3779610.623708-0.6861800.6791450.392087-0.399126-1.933849-0.962886-1.0420820.4496241.962563-0.6085770.5099281.1139812.8978490.1274340.2652450.800049-0.1632980.123205-0.5691590.5466680.1088210.10453310.000
172792.0-0.533413-0.1897330.703337-0.506271-0.012546-0.6496171.577006-0.4146500.486180-0.915427-1.040458-0.031513-0.188093-0.0843160.041333-0.302620-0.6603770.167430-0.2561170.3829480.2610570.6430780.3767770.008797-0.473649-0.818267-0.0024150.013649217.000
data.Class.value_counts() 0 284315 1 492 Name: Class, dtype: int64
  • 數據包含284807樣本,30個屬性特征和一個所屬類別,數據完整沒有缺失值,所以不需要缺失值的處理。非匿名特征包括時間和交易金額,以及所屬的類別,匿名特征28個從v1-v28,統計上的均值(基本上等于0)和方差(1左右)可以看出是已經進行了歸一化處理。(在Kaggle上的介紹說:匿名特征是經過了脫敏和PCA處理的,時間特征Time包含數據集中每個交易和第一個交易之間經過的秒數,應該是距離開始采集數據的時間,總共是兩天,172792正好是差不多48小時)
  • 正負樣本不均衡的問題,從描述性統計結果上的class列,均值為0.001727,說明極大多數樣本都是0,也可以通過data.value_counts()查看,正常交易284315項,而異常的只有492項,這種極不平衡的樣本處理將是特征工程的主要任務

探索性數據分析(EDA)

* 單一屬性分析

數據屬性都是數值型,所以不需要區分數值屬性和類別屬性,也不需要對類別屬性的重新編碼,下面分析單一屬性的特點,從預測類別開始

通過類別的分布圖以及峰度、偏度的計算,可以更直觀的看到樣本分布的不均衡

# 欺詐與非欺詐類別分布的直方圖 sns.countplot('Class', data=data, color='blue') plt.xlabel('values') plt.ylabel('Counts') plt.title('Class Distributions \n (0: No Fraud || 1: Fraud)') Text(0.5, 1.0, 'Class Distributions \n (0: No Fraud || 1: Fraud)')

print('Kurtosis:', data.Class.kurt()) print('Skewness:', data.Class.skew()) Kurtosis: 573.887842782971 Skewness: 23.99757931064749

下面分析兩個沒有經過標準化的屬性:Time和Amount

# 數值屬性時間與金額分布圖,金額用正態分布和對數分布兩種方式擬合 import scipy.stats as st fig, ax = plt.subplots(1, 3, figsize=(18, 4)) print(ax) sns.distplot(data.Amount, color='blue', ax=ax[0],kde = False,fit=st.norm) ax[0].set_title('Distribution of transaction amount_normal')sns.distplot(data.Amount,color='blue',ax=ax[1],fit=st.lognorm) ax[1].set_title('Distribution of transaction amount_lognorm')sns.distplot(data.Time, color='r', ax=ax[2]) ax[2].set_title('Distribution of transaction time')

print(data.Amount.value_counts()) 1.00 13688 1.98 6044 0.89 4872 9.99 4747 15.00 3280... 192.63 1 218.84 1 195.52 1 793.50 1 1080.06 1 Name: Amount, Length: 32767, dtype: int64 print('the ratio of Amount<5:', data.Amount[data.Amount < 5].value_counts( ).sum()/data.Amount.value_counts().sum()) print('the ratio of Amount<10:', data.Amount[data.Amount < 10].value_counts( ).sum()/data.Amount.value_counts().sum()) print('the ratio of Amount<20:', data.Amount[data.Amount < 20].value_counts( ).sum()/data.Amount.value_counts().sum()) print('the ratio of Amount<30:', data.Amount[data.Amount < 30].value_counts( ).sum()/data.Amount.value_counts().sum()) print('the ratio of Amount<50:', data.Amount[data.Amount < 50].value_counts( ).sum()/data.Amount.value_counts().sum()) print('the ratio of Amount<100:', data.Amount[data.Amount < 100].value_counts( ).sum()/data.Amount.value_counts().sum()) print('the ratio of Amount>5000:', data.Amount[data.Amount > 5000].value_counts( ).sum()/data.Amount.value_counts().sum()) the ratio of Amount<5: 0.2368726892246328 the ratio of Amount<10: 0.3416840175978821 the ratio of Amount<20: 0.481476929991187 the ratio of Amount<30: 0.562022703093674 the ratio of Amount<50: 0.6660791342909409 the ratio of Amount<100: 0.7985126770058321 the ratio of Amount>5000: 0.00019311323106524768

在金額屬性上,絕大多數金額都是小于50美元較小的,存在少量的較大數值如1080美元;時間上在15000s和100000s附近出現了兩次低峰,距離開始采樣數據的時間分別是4小時和27小時,猜測這時候是凌晨3、4點,這也符合現實,畢竟深夜購物的人還是少數。由于其他的匿名屬性都進行了均值化處理,并且金額的擬合效果正態分布優于取對數,下面也將金額Amount進行標準化處理,同樣的,時間轉化為小時之后再作均值化處理。

from sklearn.preprocessing import StandardScaler sc = StandardScaler() data['Amount'] = sc.fit_transform(data.Amount.values.reshape(-1, 1)) # reshape()函數的兩個參數,-1表示不知道多少行,1表示一列 data['Hour'] = data.Time.apply(lambda x: divmod(x, 3600)[0]) data['Hour'] = data.Hour.apply(lambda x: divmod(x, 24)[1]) # 時間進一步轉換成24小時制,因為考慮到交易密度的周期性分布 data['Hour'] = sc.fit_transform(data['Hour'].values.reshape(-1, 1)) data.drop(columns='Time', inplace=True) data.head().append(data.tail()) V1V2V3V4V5V6V7V8V9V10V11V12V13V14V15V16V17V18V19V20V21V22V23V24V25V26V27V28AmountClassHour01234284802284803284804284805284806
-1.359807-0.0727812.5363471.378155-0.3383210.4623880.2395990.0986980.3637870.090794-0.551600-0.617801-0.991390-0.3111691.468177-0.4704010.2079710.0257910.4039930.251412-0.0183070.277838-0.1104740.0669280.128539-0.1891150.133558-0.0210530.2449640-2.40693
1.1918570.2661510.1664800.4481540.060018-0.082361-0.0788030.085102-0.255425-0.1669741.6127271.0652350.489095-0.1437720.6355580.463917-0.114805-0.183361-0.145783-0.069083-0.225775-0.6386720.101288-0.3398460.1671700.125895-0.0089830.014724-0.3424750-2.40693
-1.358354-1.3401631.7732090.379780-0.5031981.8004990.7914610.247676-1.5146540.2076430.6245010.0660840.717293-0.1659462.345865-2.8900831.109969-0.121359-2.2618570.5249800.2479980.7716790.909412-0.689281-0.327642-0.139097-0.055353-0.0597521.1606860-2.40693
-0.966272-0.1852261.792993-0.863291-0.0103091.2472030.2376090.377436-1.387024-0.054952-0.2264870.1782280.507757-0.287924-0.631418-1.059647-0.6840931.965775-1.232622-0.208038-0.1083000.005274-0.190321-1.1755750.647376-0.2219290.0627230.0614580.1405340-2.40693
-1.1582330.8777371.5487180.403034-0.4071930.0959210.592941-0.2705330.8177390.753074-0.8228430.5381961.345852-1.1196700.175121-0.451449-0.237033-0.0381950.8034870.408542-0.0094310.798278-0.1374580.141267-0.2060100.5022920.2194220.215153-0.0734030-2.40693
-11.88111810.071785-9.834783-2.066656-5.364473-2.606837-4.9182157.3053341.9144284.356170-1.5931052.711941-0.6892564.626942-0.9244591.1076411.9916910.510632-0.6829201.4758290.2134540.1118641.014480-0.5093481.4368070.2500340.9436510.823731-0.35015101.53423
-0.732789-0.0550802.035030-0.7385890.8682291.0584150.0243300.2948690.584800-0.975926-0.1501890.9158021.214756-0.6751431.164931-0.711757-0.025693-1.221179-1.5455560.0596160.2142050.9243840.012463-1.016226-0.606624-0.3952550.068472-0.053527-0.25411701.53423
1.919565-0.301254-3.249640-0.5578282.6305153.031260-0.2968270.7084170.432454-0.4847820.4116140.063119-0.183699-0.5106021.3292840.1407160.3135020.395652-0.5772520.0013960.2320450.578229-0.0375010.6401340.265745-0.0873710.004455-0.026561-0.08183901.53423
-0.2404400.5304830.7025100.689799-0.3779610.623708-0.6861800.6791450.392087-0.399126-1.933849-0.962886-1.0420820.4496241.962563-0.6085770.5099281.1139812.8978490.1274340.2652450.800049-0.1632980.123205-0.5691590.5466680.1088210.104533-0.31324901.53423
-0.533413-0.1897330.703337-0.506271-0.012546-0.6496171.577006-0.4146500.486180-0.915427-1.040458-0.031513-0.188093-0.0843160.041333-0.302620-0.6603770.167430-0.2561170.3829480.2610570.6430780.3767770.008797-0.473649-0.818267-0.0024150.0136490.51435501.53423
# 將樣本順序打亂,因為Hour屬性是有順序的,為后期樣本訓練集測試集的劃分做準備 data = data.sample(frac=1) data.head().append(data.tail()) V1V2V3V4V5V6V7V8V9V10V11V12V13V14V15V16V17V18V19V20V21V22V23V24V25V26V27V28AmountClassHour1072161680473289279921178297224944144794565613711558951
1.324299-1.0855630.237279-1.479829-1.161581-0.372790-0.742945-0.049038-2.3765631.5162491.6315160.1370250.6279110.0493870.025037-0.5329860.575155-0.556925-0.065486-0.214061-0.526897-1.3424340.251389-0.065977-0.029430-0.6363250.0206830.022199-0.05513200.848811
-0.2168300.175845-0.1269170.1161603.3483834.2926720.2967030.6221670.3899990.133185-0.6514320.098311-0.612388-0.477757-1.049531-1.5588860.199438-0.7729571.2040000.094183-0.318508-0.357454-0.1127930.685842-0.469426-0.769896-0.187049-0.232898-0.3452330-0.864737
1.2502490.019063-1.326108-0.0390592.2323413.300602-0.3264350.757703-0.1563520.062703-0.1616490.029727-0.0184570.5309511.1075120.377201-0.9263630.295044-0.0067830.033750-0.009900-0.189322-0.1577341.0053260.838403-0.3155820.0114390.018031-0.2332870-2.406930
-4.8147084.736862-4.817819-1.103622-2.256585-2.425710-1.6570503.493293-0.2078190.013773-2.2603130.744399-0.9738003.250789-0.2825990.3134081.121537-0.022531-0.416665-0.1179940.3753610.5546910.3497640.0261270.2755420.1481780.1023200.185414-0.31996501.362876
2.100716-0.778343-0.596761-0.557506-0.5752070.293849-0.9582460.146132-0.1369210.7989090.4286480.9584040.715275-0.043584-0.140031-1.084006-0.6497641.591873-0.423356-0.580698-0.562834-1.0444070.4598200.203965-0.508869-0.6864750.053956-0.034934-0.3531890-0.693382
2.0533110.089735-1.6818360.4542120.298310-0.9535260.152003-0.2070710.587335-0.362047-0.589598-0.174712-0.621127-0.7035130.2719570.3186880.549365-0.2577860.016256-0.187421-0.361158-0.9842620.3541980.620709-0.2971380.166736-0.068299-0.029585-0.31728700.334747
1.9633770.175655-1.7915051.1803710.493289-1.1572600.678691-0.322212-0.2731200.5533500.9006650.380835-1.1977761.219675-0.368170-0.251083-0.5450040.080937-0.199778-0.2961840.1884540.525823-0.019335-0.0077000.374702-0.503352-0.043733-0.070953-0.2338870-2.406930
1.1802640.668819-0.2423821.2847480.029324-1.0395430.202761-0.102430-0.340626-0.5083671.9780500.556068-0.337921-1.0959690.3914290.7408690.7266371.040940-0.411526-0.103660-0.0044790.014954-0.1089920.3978770.628531-0.3569310.0306630.049046-0.3492310-0.179318
-2.0910271.2490320.841086-0.777488-0.176500-0.077257-0.118603-0.2567510.178740-0.0003050.9918560.698911-0.9019700.341906-0.643972-0.011763-0.069715-0.449297-0.255400-0.5172880.631502-0.4132650.293367-0.000012-0.3186880.224045-0.725597-0.392266-0.3492310-0.693382
1.1624470.2724580.6151651.058086-0.262004-0.359390-0.012728-0.0156200.066470-0.087054-0.0614590.4703500.2153490.2932571.308914-0.006260-0.233542-0.816695-0.644417-0.141656-0.243925-0.6937250.1683490.0312700.216868-0.6651920.0458230.031301-0.3052520-0.179318
# 下面查看匿名屬性的分布 # 匿名屬性的峰度與偏度 numerical_columns = data.columns.drop(['Class','Hour','Amount']) for num_col in numerical_columns:print('{:10}'.format(num_col), 'Skewness:', '{:8.2f}'.format(data[num_col].skew()), ' Kurtosis:', '{:8.2f}'.format(data[num_col].kurt())) V1 Skewness: -3.28 Kurtosis: 32.49 V2 Skewness: -4.62 Kurtosis: 95.77 V3 Skewness: -2.24 Kurtosis: 26.62 V4 Skewness: 0.68 Kurtosis: 2.64 V5 Skewness: -2.43 Kurtosis: 206.90 V6 Skewness: 1.83 Kurtosis: 42.64 V7 Skewness: 2.55 Kurtosis: 405.61 V8 Skewness: -8.52 Kurtosis: 220.59 V9 Skewness: 0.55 Kurtosis: 3.73 V10 Skewness: 1.19 Kurtosis: 31.99 V11 Skewness: 0.36 Kurtosis: 1.63 V12 Skewness: -2.28 Kurtosis: 20.24 V13 Skewness: 0.07 Kurtosis: 0.20 V14 Skewness: -2.00 Kurtosis: 23.88 V15 Skewness: -0.31 Kurtosis: 0.28 V16 Skewness: -1.10 Kurtosis: 10.42 V17 Skewness: -3.84 Kurtosis: 94.80 V18 Skewness: -0.26 Kurtosis: 2.58 V19 Skewness: 0.11 Kurtosis: 1.72 V20 Skewness: -2.04 Kurtosis: 271.02 V21 Skewness: 3.59 Kurtosis: 207.29 V22 Skewness: -0.21 Kurtosis: 2.83 V23 Skewness: -5.88 Kurtosis: 440.09 V24 Skewness: -0.55 Kurtosis: 0.62 V25 Skewness: -0.42 Kurtosis: 4.29 V26 Skewness: 0.58 Kurtosis: 0.92 V27 Skewness: -1.17 Kurtosis: 244.99 V28 Skewness: 11.19 Kurtosis: 933.40 f = pd.melt(data, value_vars=numerical_columns) g = sns.FacetGrid(f, col='variable', col_wrap=4, sharex=False, sharey=False) g = g.map(sns.distplot, 'value')

因為數據經過了標準化處理,所以匿名特征的偏度相對較小,峰度較大,分布上v_5, v_7, v_8, v_20, v_21, v_23, v_27,v_28的峰度值較高,說明這些特征的分布十分集中,其他的特征分布相對均勻。

* 分析兩個屬性之間的關系
# 相關性分析 plt.figure(figsize=(8, 6)) sns.heatmap(data.corr(), square=True,cmap='coolwarm_r', annot_kws={'size': 20}) plt.show() data.corr()

V1V2V3V4V5V6V7V8V9V10V11V12V13V14V15V16V17V18V19V20V21V22V23V24V25V26V27V28AmountClassHourV1V2V3V4V5V6V7V8V9V10V11V12V13V14V15V16V17V18V19V20V21V22V23V24V25V26V27V28AmountClassHour
1.000000e+001.717515e-16-9.049057e-16-2.483769e-163.029761e-161.242968e-164.904952e-17-2.809306e-175.255584e-175.521194e-172.590354e-161.898607e-16-3.778206e-174.132544e-16-1.522953e-163.007488e-16-3.106689e-171.645281e-161.045442e-169.852066e-17-1.808291e-167.990046e-171.056762e-16-5.113541e-17-2.165870e-16-1.408070e-161.664818e-162.419798e-16-0.227709-0.101347-0.005214
1.717515e-161.000000e+009.206734e-17-1.226183e-161.487342e-163.492970e-16-4.501183e-17-5.839820e-17-1.832049e-16-2.598347e-163.312314e-16-3.228806e-16-1.091369e-16-4.657267e-165.392819e-17-3.749559e-18-5.591430e-162.877862e-16-1.672445e-173.898167e-174.667231e-171.203109e-163.242403e-16-1.254911e-168.784216e-172.450901e-16-5.467509e-16-6.910935e-17-0.5314090.0912890.007802
-9.049057e-169.206734e-171.000000e+00-2.981464e-16-6.943096e-161.308147e-152.120327e-16-8.586741e-179.780262e-172.764966e-161.500352e-162.182812e-16-4.679364e-176.942636e-16-5.333200e-175.460118e-162.134100e-162.870116e-163.728807e-161.267443e-161.189711e-16-2.343257e-16-8.182206e-17-3.300147e-171.123060e-16-2.136494e-164.752587e-166.073110e-16-0.210880-0.192961-0.021569
-2.483769e-16-1.226183e-16-2.981464e-161.000000e+00-1.903391e-15-4.169652e-16-6.535390e-175.942856e-166.175719e-16-6.910284e-17-2.936726e-16-1.448546e-163.050372e-17-8.547776e-172.459280e-16-8.218577e-17-4.443050e-165.369916e-18-2.842719e-16-2.222520e-161.390687e-172.189964e-161.663593e-161.403733e-166.312530e-16-4.009636e-16-6.309346e-17-2.064064e-160.0987320.133447-0.035063
3.029761e-161.487342e-16-6.943096e-16-1.903391e-151.000000e+001.159613e-157.659742e-177.328495e-164.435269e-161.632311e-166.784587e-164.520778e-16-2.979964e-162.516209e-161.016075e-166.264287e-164.535815e-164.196874e-16-1.277261e-16-2.414281e-169.325965e-17-6.982655e-17-1.848644e-16-9.892370e-16-1.561416e-163.403172e-163.299056e-16-3.491468e-16-0.386356-0.094974-0.035134
1.242968e-163.492970e-161.308147e-15-4.169652e-161.159613e-151.000000e+00-2.949670e-16-3.474079e-16-1.008735e-161.322142e-168.380230e-162.570184e-16-1.251524e-163.531769e-16-6.825844e-17-1.823748e-161.161080e-166.313161e-176.136340e-17-1.318056e-16-4.925144e-17-9.729827e-17-3.176032e-17-1.125379e-155.563670e-16-2.627057e-16-4.040640e-164.612882e-170.215981-0.043643-0.018945
4.904952e-17-4.501183e-172.120327e-16-6.535390e-177.659742e-17-2.949670e-161.000000e+003.038794e-17-5.250969e-173.186953e-16-3.362622e-167.265464e-16-1.485108e-167.720708e-17-1.845909e-164.901078e-167.173458e-161.638629e-16-1.132423e-161.889527e-16-7.597231e-17-6.887963e-161.393022e-162.078026e-17-1.507689e-17-7.709408e-16-2.647380e-182.115388e-170.397311-0.187257-0.009729
-2.809306e-17-5.839820e-17-8.586741e-175.942856e-167.328495e-16-3.474079e-163.038794e-171.000000e+004.683000e-16-3.022868e-161.499830e-163.887009e-17-3.213252e-16-2.288651e-161.109628e-162.500367e-16-3.808536e-16-3.119192e-16-3.559019e-161.098800e-17-2.338214e-16-6.701600e-182.701514e-16-2.444390e-16-1.792313e-161.092765e-173.921512e-16-5.158971e-16-0.1030790.0198750.032106
5.255584e-17-1.832049e-169.780262e-176.175719e-164.435269e-16-1.008735e-16-5.250969e-174.683000e-161.000000e+00-4.733827e-163.289603e-16-1.339732e-159.374886e-169.287436e-16-8.883532e-16-5.409347e-167.071023e-161.471108e-161.293082e-16-3.112119e-162.755460e-16-2.171404e-16-1.011218e-16-2.940457e-162.137255e-16-1.039639e-16-1.499396e-167.982292e-16-0.044246-0.097733-0.189830
5.521194e-17-2.598347e-162.764966e-16-6.910284e-171.632311e-161.322142e-163.186953e-16-3.022868e-16-4.733827e-161.000000e+00-3.633385e-168.563304e-16-4.013607e-166.638602e-163.932439e-161.882434e-166.617837e-164.829483e-164.623218e-17-1.340974e-151.048675e-15-2.890990e-161.907376e-16-7.312196e-17-3.457860e-16-4.117783e-16-3.115507e-163.949646e-16-0.101502-0.2168830.024177
2.590354e-163.312314e-161.500352e-16-2.936726e-166.784587e-168.380230e-16-3.362622e-161.499830e-163.289603e-16-3.633385e-161.000000e+00-7.116039e-164.369928e-16-1.283496e-161.903820e-161.158881e-166.624541e-169.910529e-17-1.093636e-15-1.478641e-166.632474e-181.312323e-171.404725e-161.672342e-15-6.082687e-16-1.240097e-16-1.519253e-16-2.909057e-160.0001040.154876-0.135131
1.898607e-16-3.228806e-162.182812e-16-1.448546e-164.520778e-162.570184e-167.265464e-163.887009e-17-1.339732e-158.563304e-16-7.116039e-161.000000e+00-2.297323e-144.486162e-16-3.033543e-164.714076e-16-3.797286e-16-6.830564e-161.782434e-162.673446e-165.724276e-16-3.587155e-173.029886e-164.510178e-166.970336e-181.653468e-16-2.721798e-167.065902e-16-0.009542-0.2605930.352459
-3.778206e-17-1.091369e-16-4.679364e-173.050372e-17-2.979964e-16-1.251524e-16-1.485108e-16-3.213252e-169.374886e-16-4.013607e-164.369928e-16-2.297323e-141.000000e+001.415589e-15-1.185819e-164.849394e-168.705885e-172.432753e-16-6.331767e-17-3.200986e-171.428638e-16-4.602453e-17-7.174408e-16-6.376621e-16-1.142909e-16-1.478991e-16-5.300185e-161.043260e-150.005293-0.004570-0.187981
4.132544e-16-4.657267e-166.942636e-16-8.547776e-172.516209e-163.531769e-167.720708e-17-2.288651e-169.287436e-166.638602e-16-1.283496e-164.486162e-161.415589e-151.000000e+00-2.864454e-16-8.191302e-161.131442e-15-3.009169e-162.138702e-16-5.239826e-17-2.462983e-166.492362e-162.160339e-16-1.258007e-17-7.178656e-17-2.488490e-17-1.739150e-172.414117e-150.033751-0.302544-0.162918
-1.522953e-165.392819e-17-5.333200e-172.459280e-161.016075e-16-6.825844e-17-1.845909e-161.109628e-16-8.883532e-163.932439e-161.903820e-16-3.033543e-16-1.185819e-16-2.864454e-161.000000e+009.678376e-16-5.606434e-166.692616e-16-1.423455e-152.118638e-166.349939e-17-3.516820e-161.024768e-16-4.337014e-162.281677e-161.108681e-16-1.246909e-15-9.799748e-16-0.002986-0.0042230.112251
3.007488e-16-3.749559e-185.460118e-16-8.218577e-176.264287e-16-1.823748e-164.901078e-162.500367e-16-5.409347e-161.882434e-161.158881e-164.714076e-164.849394e-16-8.191302e-169.678376e-161.000000e+001.641102e-15-2.666175e-151.138371e-154.407936e-16-4.180114e-162.653008e-167.410993e-16-3.508969e-16-3.341605e-16-4.690618e-168.147869e-167.042089e-16-0.003910-0.1965390.005517
-3.106689e-17-5.591430e-162.134100e-16-4.443050e-164.535815e-161.161080e-167.173458e-16-3.808536e-167.071023e-166.617837e-166.624541e-16-3.797286e-168.705885e-171.131442e-15-5.606434e-161.641102e-151.000000e+00-5.251666e-153.694474e-16-8.921672e-16-1.086035e-15-3.486998e-164.072307e-16-1.897694e-167.587211e-172.084478e-166.669179e-16-5.419071e-170.007309-0.326481-0.064803
1.645281e-162.877862e-162.870116e-165.369916e-184.196874e-166.313161e-171.638629e-16-3.119192e-161.471108e-164.829483e-169.910529e-17-6.830564e-162.432753e-16-3.009169e-166.692616e-16-2.666175e-15-5.251666e-151.000000e+00-2.719935e-15-4.098224e-16-1.240266e-15-5.279657e-16-2.362311e-16-1.869482e-16-2.451121e-163.089442e-162.209663e-168.158517e-160.035650-0.111485-0.003518
1.045442e-16-1.672445e-173.728807e-16-2.842719e-16-1.277261e-166.136340e-17-1.132423e-16-3.559019e-161.293082e-164.623218e-17-1.093636e-151.782434e-16-6.331767e-172.138702e-16-1.423455e-151.138371e-153.694474e-16-2.719935e-151.000000e+002.693620e-166.052450e-16-1.036140e-155.861740e-16-9.630049e-178.161694e-165.479257e-16-1.243578e-16-1.291833e-15-0.0561510.0347830.021566
9.852066e-173.898167e-171.267443e-16-2.222520e-16-2.414281e-16-1.318056e-161.889527e-161.098800e-17-3.112119e-16-1.340974e-15-1.478641e-162.673446e-16-3.200986e-17-5.239826e-172.118638e-164.407936e-16-8.921672e-16-4.098224e-162.693620e-161.000000e+00-1.118296e-151.101689e-151.107203e-161.749671e-16-6.786605e-18-3.590893e-16-8.488785e-16-4.584320e-160.3394030.0200900.000978
-1.808291e-164.667231e-171.189711e-161.390687e-179.325965e-17-4.925144e-17-7.597231e-17-2.338214e-162.755460e-161.048675e-156.632474e-185.724276e-161.428638e-16-2.462983e-166.349939e-17-4.180114e-16-1.086035e-15-1.240266e-156.052450e-16-1.118296e-151.000000e+003.540128e-154.521934e-161.014531e-16-1.173906e-16-4.337929e-16-1.484206e-151.584856e-160.1059990.040413-0.011915
7.990046e-171.203109e-16-2.343257e-162.189964e-16-6.982655e-17-9.729827e-17-6.887963e-16-6.701600e-18-2.171404e-16-2.890990e-161.312323e-17-3.587155e-17-4.602453e-176.492362e-16-3.516820e-162.653008e-16-3.486998e-16-5.279657e-16-1.036140e-151.101689e-153.540128e-151.000000e+003.086083e-166.736130e-17-9.827185e-16-2.194486e-171.478149e-16-5.686304e-16-0.0648010.000805-0.016610
1.056762e-163.242403e-16-8.182206e-171.663593e-16-1.848644e-16-3.176032e-171.393022e-162.701514e-16-1.011218e-161.907376e-161.404725e-163.029886e-16-7.174408e-162.160339e-161.024768e-167.410993e-164.072307e-16-2.362311e-165.861740e-161.107203e-164.521934e-163.086083e-161.000000e+007.328447e-17-7.508801e-161.284451e-154.254579e-161.281294e-15-0.112633-0.0026850.006004
-5.113541e-17-1.254911e-16-3.300147e-171.403733e-16-9.892370e-16-1.125379e-152.078026e-17-2.444390e-16-2.940457e-16-7.312196e-171.672342e-154.510178e-16-6.376621e-16-1.258007e-17-4.337014e-16-3.508969e-16-1.897694e-16-1.869482e-16-9.630049e-171.749671e-161.014531e-166.736130e-177.328447e-171.000000e+001.242718e-151.863258e-16-2.894257e-16-2.844233e-160.005146-0.0072210.004328
-2.165870e-168.784216e-171.123060e-166.312530e-16-1.561416e-165.563670e-16-1.507689e-17-1.792313e-162.137255e-16-3.457860e-16-6.082687e-166.970336e-18-1.142909e-16-7.178656e-172.281677e-16-3.341605e-167.587211e-17-2.451121e-168.161694e-16-6.786605e-18-1.173906e-16-9.827185e-16-7.508801e-161.242718e-151.000000e+002.449277e-15-5.340203e-162.699748e-16-0.0478370.003308-0.003497
-1.408070e-162.450901e-16-2.136494e-16-4.009636e-163.403172e-16-2.627057e-16-7.709408e-161.092765e-17-1.039639e-16-4.117783e-16-1.240097e-161.653468e-16-1.478991e-16-2.488490e-171.108681e-16-4.690618e-162.084478e-163.089442e-165.479257e-16-3.590893e-16-4.337929e-16-2.194486e-171.284451e-151.863258e-162.449277e-151.000000e+00-2.939564e-16-2.558739e-16-0.0032080.0044550.001146
1.664818e-16-5.467509e-164.752587e-16-6.309346e-173.299056e-16-4.040640e-16-2.647380e-183.921512e-16-1.499396e-16-3.115507e-16-1.519253e-16-2.721798e-16-5.300185e-16-1.739150e-17-1.246909e-158.147869e-166.669179e-162.209663e-16-1.243578e-16-8.488785e-16-1.484206e-151.478149e-164.254579e-16-2.894257e-16-5.340203e-16-2.939564e-161.000000e+00-2.403217e-160.0288250.017580-0.008676
2.419798e-16-6.910935e-176.073110e-16-2.064064e-16-3.491468e-164.612882e-172.115388e-17-5.158971e-167.982292e-163.949646e-16-2.909057e-167.065902e-161.043260e-152.414117e-15-9.799748e-167.042089e-16-5.419071e-178.158517e-16-1.291833e-15-4.584320e-161.584856e-16-5.686304e-161.281294e-15-2.844233e-162.699748e-16-2.558739e-16-2.403217e-161.000000e+000.0102580.009536-0.007492
-2.277087e-01-5.314089e-01-2.108805e-019.873167e-02-3.863563e-012.159812e-013.973113e-01-1.030791e-01-4.424560e-02-1.015021e-011.039770e-04-9.541802e-035.293409e-033.375117e-02-2.985848e-03-3.909527e-037.309042e-033.565034e-02-5.615079e-023.394034e-011.059989e-01-6.480065e-02-1.126326e-015.146217e-03-4.783686e-02-3.208037e-032.882546e-021.025822e-021.0000000.005632-0.006667
-1.013473e-019.128865e-02-1.929608e-011.334475e-01-9.497430e-02-4.364316e-02-1.872566e-011.987512e-02-9.773269e-02-2.168829e-011.548756e-01-2.605929e-01-4.569779e-03-3.025437e-01-4.223402e-03-1.965389e-01-3.264811e-01-1.114853e-013.478301e-022.009032e-024.041338e-028.053175e-04-2.685156e-03-7.220907e-033.307706e-034.455398e-031.757973e-029.536041e-030.0056321.000000-0.017109
-5.214205e-037.802199e-03-2.156874e-02-3.506295e-02-3.513442e-02-1.894502e-02-9.729167e-033.210647e-02-1.898298e-012.417660e-02-1.351310e-013.524592e-01-1.879810e-01-1.629179e-011.122505e-015.517040e-03-6.480333e-02-3.518403e-032.156599e-029.780928e-04-1.191466e-02-1.660982e-026.004232e-034.328237e-03-3.497363e-031.146125e-03-8.676362e-03-7.492140e-03-0.006667-0.0171091.000000

從數值上看,數值變量之間沒有明顯的相關性,因為樣本的不均衡,數值變量與預測類別之間的相關性也不大,這并不是我們想看到的,因而我們考慮先進行正負樣本的均衡

但是在進行樣本均衡化處理之前,我們需要先對樣本進行訓練集和測試集的劃分,這是為了保證測試的公平性,我們需要在原始數據集上測試,畢竟不能用自己構造的數據訓練集測試自己構造的測試集
為了使得訓練集和測試集的正負樣本分布一致,采用StratifiedKFold來劃分

from sklearn.model_selection import StratifiedKFold X_original = data.drop(columns='Class') y_original = data['Class'] sss = StratifiedKFold(n_splits=5,random_state=None,shuffle=False) for train_index,test_index in sss.split(X_original,y_original):print('Train:',train_index,'test:',test_index)X_train,X_test = X_original.iloc[train_index],X_original.iloc[test_index]y_train,y_test = y_original.iloc[train_index],y_original.iloc[test_index]print(X_train.shape) print(X_test.shape) Train: [ 52587 52905 53232 ... 284804 284805 284806] test: [ 0 1 2 ... 56966 56967 56968] Train: [ 0 1 2 ... 284804 284805 284806] test: [ 52587 52905 53232 ... 113937 113938 113939] Train: [ 0 1 2 ... 284804 284805 284806] test: [104762 104905 105953 ... 170897 170898 170899] Train: [ 0 1 2 ... 284804 284805 284806] test: [162214 162834 162995 ... 227854 227855 227856] Train: [ 0 1 2 ... 227854 227855 227856] test: [222268 222591 222837 ... 284804 284805 284806] (227846, 30) (56961, 30) #查看訓練集和測試集的類別分布是否一致 print('Train:',[y_train.value_counts()/y_train.value_counts().sum()]) print('Test:',[y_test.value_counts()/y_test.value_counts().sum()]) Train: [0 0.998271 1 0.001729 Name: Class, dtype: float64] Test: [0 0.99828 1 0.00172 Name: Class, dtype: float64]

對于處理正負樣本極不均衡的情況,主要有欠采樣和過采樣兩種方案.

  • 欠采樣是從大樣本中隨機選擇與小樣本同樣數量的樣本,對于極不均衡的問題會出現欠擬合問題,因為樣本量太小。采用的方法是:
from imblearn.under_sampling import RandomUnderSamplerrus = RandomUnderSampler(random_state=1)X_undersampled,y_undersampled = rus.fit_resampled(X,y)
  • 過采樣是利用利用小樣本生成與大樣本相同數量的樣本,有兩種方法:隨機過采樣和SMOTE法過采樣
    • 隨機過采樣是從小樣本中隨機抽取一定的數量的舊樣本,組成一個與大樣本相同數量的新樣本,這種處理方法容易出現過擬合
    from imblearn.over_sampling import RandomOverSampler ros = RandomOverSampler(random_state = 1) X_oversampled,y_oversampled = ros.fit_resample(X,y)
    • SMOTE,即合成少數類過采樣技術,針對隨機過采樣容易出現過擬合問題的改進方案。根據樣本不同,分成數據多和數據少的兩類,從數據少的類中隨機選一個樣本,再找到小類樣本中離選定樣本點近的幾個樣本,取這幾個樣本與選定樣本連線上的點,作為新生成的樣本,重復步驟直到達到大樣本的樣本數。
    from imblearn.over_sampling import SMOTE smote = SMOTE(random_state = 1) X_smotesampled,y_smotesampled = smote.fit_resample(X,y)

可以利用Counter(y_smotesampled)查看兩種樣本的數量是否一致

下面分別用隨機下采樣和SMOTE與隨機下采樣的結合,這兩種方案來對樣本進行處理,并分析對比處理后樣本的分布情況

from imblearn.under_sampling import RandomUnderSampler from imblearn.over_sampling import RandomOverSampler from imblearn.over_sampling import SMOTE from collections import CounterX = X_train.copy() y = y_train.copy() print('Imblanced samples: ', Counter(y))rus = RandomUnderSampler(random_state=1) X_rus, y_rus = rus.fit_resample(X, y) print('Random under sample: ', Counter(y_rus)) ros = RandomOverSampler(random_state=1) X_ros, y_ros = ros.fit_resample(X, y) print('Random over sample: ', Counter(y_ros)) smote = SMOTE(random_state=1,sampling_strategy=0.5) X_smote, y_smote = smote.fit_resample(X, y) print('SMOTE: ', Counter(y_smote)) under = RandomUnderSampler(sampling_strategy=1) X_smote, y_smote = under.fit_resample(X_smote,y_smote) print('SMOTE: ', Counter(y_smote)) Imblanced samples: Counter({0: 227452, 1: 394}) Random under sample: Counter({0: 394, 1: 394}) Random over sample: Counter({0: 227452, 1: 227452}) SMOTE: Counter({0: 227452, 1: 113726}) SMOTE: Counter({0: 113726, 1: 113726})

根據結果,可以看出處理后的樣本數,欠采樣是正負樣本都變成了394,而過采樣是都變成了227452。下面分別分析不同平衡樣本的情況

隨機下采樣 Random under sample

data_rus = pd.concat([X_rus,y_rus],axis=1) # 單個數值特征分布情況 f = pd.melt(data_rus, value_vars=X_train.columns) g = sns.FacetGrid(f, col='variable', col_wrap=3, sharex=False, sharey=False) g = g.map(sns.distplot, 'value')

# 單個數值特征分布箱線圖 f = pd.melt(data_rus, value_vars=X_train.columns) g = sns.FacetGrid(f,col='variable', col_wrap=3, sharex=False, sharey=False,size=5) g = g.map(sns.boxplot, 'value', color='lightskyblue')

# 單個數值特征分布小提琴圖 f = pd.melt(data_rus, value_vars=X_train.columns) g = sns.FacetGrid(f, col='variable', col_wrap=3, sharex=False, sharey=False,size=5) g = g.map(sns.violinplot, 'value',color='lightskyblue')

通過分布圖可以看到大部分的數值分布較集中,但也存在一些異常值(箱型圖和小提琴圖看起來更直觀),異常值會帶偏模型,所以我們需要去除異常值,判斷異常值有兩種方法:正態分布和上下四分位數。正態分布是采用3σ3\sigma3σ原則,上下四分位數是利用分位數,超過一分位數或三分位數一定的范圍將被確定為異常值

def outlier_process(data,column):Q1 = data[column].quantile(q=0.25)Q3 = data[column].quantile(q=0.75)low_whisker = Q1-3*(Q3-Q1)high_whisker = Q3+3*(Q3-Q1)# 刪除異常值data_drop = data[(data[column]>=low_whisker) & (data[column]<=high_whisker)]#畫出刪除前和刪除后的對比圖fig,(ax1,ax2) = plt.subplots(1,2,figsize=(12,5))sns.boxplot(y=data[column],ax=ax1,color='lightskyblue')ax1.set_title('before deleting outlier'+' '+column)sns.boxplot(y=data_drop[column],ax=ax2,color='lightskyblue')ax2.set_title('after deleting outlier'+' '+column)return data_drop numerical_columns = data_rus.columns.drop('Class') for col_name in numerical_columns:data_rus = outlier_process(data_rus,col_name)






























因為有些屬性的分布較集中,沒有出現太大變化,比如Hour。

清理完臟數據,再探測變量之間的相關關系

#繪制采樣前和采樣后的熱力圖 fig,(ax1,ax2) = plt.subplots(2,1,figsize=(10,10)) sns.heatmap(data.corr(),cmap = 'coolwarm_r',ax=ax1,vmax=0.8) ax1.set_title('the relationship on imbalanced samples') sns.heatmap(data_rus.corr(),cmap = 'coolwarm_r',ax=ax2,vmax=0.8) ax2.set_title('the relationship on random under samples') Text(0.5, 1.0, 'the relationship on random under samples')

# 分析數值屬性與Class之間的相關性 data_rus.corr()['Class'].sort_values(ascending=False) Class 1.000000 V4 0.722609 V11 0.694975 V2 0.481190 V19 0.245209 V20 0.151424 V21 0.126220 Amount 0.100853 V26 0.090654 V27 0.074491 V8 0.059647 V28 0.052788 V25 0.040578 V22 0.016379 V23 -0.003117 V15 -0.009488 V13 -0.055253 V24 -0.070806 Hour -0.196789 V5 -0.383632 V6 -0.407577 V1 -0.423665 V18 -0.462499 V7 -0.468273 V17 -0.561113 V3 -0.561767 V9 -0.562542 V16 -0.592382 V10 -0.629362 V12 -0.691652 V14 -0.751142 Name: Class, dtype: float64

對比可以看到,處理后的數值屬性與分類類別之間的相關性明顯增加,根據排名,和預測值Class正相關值較大的有V4,V11,V2,V27,負相關值較大的有V_14,V_10,V_12,V_3,V7,V9,我們畫出這些特征與預測值之間的關系圖

# 正相關的屬性與Class分布圖 fig,(ax1,ax2,ax3) = plt.subplots(1,3,figsize=(24,6)) sns.violinplot(x='Class',y='V4',data=data_rus,palette=['lightsalmon','lightskyblue'],ax=ax1) ax1.set_title('V4 vs Class Positive Correlation')sns.violinplot(x='Class',y='V11',data=data_rus,palette=['lightsalmon','lightskyblue'],ax=ax2) ax2.set_title('V11 vs Class Positive Correlation')sns.violinplot(x='Class',y='V2',data=data_rus,palette=['lightsalmon','lightskyblue'],ax=ax3) ax3.set_title('V2 vs Class Positive Correlation') Text(0.5, 1.0, 'V2 vs Class Positive Correlation')

# 負相關的屬性與Class分布圖 fig,((ax1,ax2,ax3),(ax4,ax5,ax6)) = plt.subplots(2,3,figsize=(24,12)) sns.violinplot(x='Class',y='V14',data=data_rus,palette=['lightsalmon','lightskyblue'],ax=ax1) ax1.set_title('V14 vs Class Negative Correlation')sns.violinplot(x='Class',y='V10',data=data_rus,palette=['lightsalmon','lightskyblue'],ax=ax2) ax2.set_title('V10 vs Class Negative Correlation')sns.violinplot(x='Class',y='V12',data=data_rus,palette=['lightsalmon','lightskyblue'],ax=ax3) ax3.set_title('V12 vs Class Negative Correlation')sns.violinplot(x='Class',y='V3',data=data_rus,palette=['lightsalmon','lightskyblue'],ax=ax4) ax4.set_title('V3 vs Class Negative Correlation')sns.violinplot(x='Class',y='V7',data=data_rus,palette=['lightsalmon','lightskyblue'],ax=ax5) ax5.set_title('V7 vs Class Negative Correlation')sns.violinplot(x='Class',y='V9',data=data_rus,palette=['lightsalmon','lightskyblue'],ax=ax6) ax6.set_title('V9 vs Class Negative Correlation') Text(0.5, 1.0, 'V9 vs Class Negative Correlation')

#其他屬性與Class的分布圖 other_fea = list(data_rus.columns.drop(['V11','V4','V2','V17','V14','V12','V10','V7','V3','V9','Class'])) fig,ax = plt.subplots(5,4,figsize=(24,36)) for fea in other_fea:sns.violinplot(x='Class',y= fea,data=data_rus,palette=['lightsalmon','lightskyblue'],ax=ax[divmod(other_fea.index(fea),4)[0],divmod(other_fea.index(fea),4)[1]])ax[divmod(other_fea.index(fea),4)[0],divmod(other_fea.index(fea),4)[1]].set_title(fea)

從以上小提琴圖可以看出,不同的正負樣本在屬性值上取值分布確實存在不同,而其他的屬性在正負樣本上區別相對不大。

好奇金額和時間是否與Class的關系,金額上正常交易金額更少更集中一些,而欺詐交易金額相對較大且分布更散,而時間上正常交易時間跨度小于欺詐交易的時間跨度,所以是在睡覺的時候更可能產生欺詐交易

查看完特征和類別之間的關系,下面分析特征之間的關系,從熱力圖上可以看出,屬性之間是存在相關性的,下面具體看看是否存在多重共線性

sns.set() sns.pairplot(data[list(data_rus.columns)],kind='scatter',diag_kind = 'kde') plt.show()

從上圖可以看出,這些屬性之間不是完全相互獨立的,有些存在很強的線性相關性,我們利用方差膨脹系數(VIF)作進一步檢驗

from statsmodels.stats.outliers_influence import variance_inflation_factor vif = [variance_inflation_factor(data_rus.values, data_rus.columns.get_loc(i)) for i in data_rus.columns] vif [12.662373162589994,20.3132501576979,26.78027354608725,9.970255022795625,23.531563683157597,3.4386660732204946,67.84989394913013,5.76519495696649,7.129002458395831,23.226754020950764,11.753104213590975,29.49673779700361,1.3365891898690718,21.57973674600878,1.2669840488461022,27.61485162786757,31.081940593780782,14.088642210869459,2.502857511412321,4.96077803555917,5.169599871511768,3.1235143157354583,2.828445638986856,1.1937601054384332,1.628451339236206,1.1966413137632343,1.959903999050125,1.4573293665681395,6.314999796714301,2.0990707198901117,4.802392100187543]

一般認為VIF<10VIF<10VIF<10時,該變量與其余變量之間不存在多重共線性,當10<VIF<10010<VIF<10010<VIF<100時存在較強的多重共線性,當VIF>100VIF>100VIF>100時,則認為是存在嚴重的多重共線性。從以上數值來看,變量之間確實存在多重共線性,也就是存在信息冗余,下面需要進行特征提取或者特征選擇

特征提取和特征選擇都是降維的兩種方法,特征提取所提取的特征是原特征的映射,而特征選擇選出的是原特征的子集。主成分分析和線性判別分析是特征提取的兩種經典方法。

特征選擇:當數據處理完成后,需要選擇有意義的特征輸入機器學習的算法和模型進行訓練,主要從兩個方面來選擇考慮特征

  • 特征是否發散,如果一個特征不發散,例如方差接近0,也就是說樣本在這個特征上基本沒有差異,這個特征對于樣本的區分并沒有什么用

  • 特征與目標的相關性,與目標相關性高的特征,應當優先選擇。

    根據特征選擇的形式又可以將特征選擇分為3種:
    1、過濾法:按照發散性或者相關性對各個特征進行評分,設定閾值或帶選擇閾值的個數,選擇特征(方差選擇法、相關系數法、卡方檢驗、互信息法)
    2、包裝法:根據目標函數(通常是預測效果評分),每次選擇若干特征,或者排除若干特征(遞歸特征消除法)
    3、嵌入法:先使用某些機器學習的算法和模型進行訓練,得到各個特征的權值系數,根據系數從大到小選擇特征,類似于filter方法,但是通過訓練來確定特征的優劣(基于懲罰項的特征選擇法、基于樹模型的特征選擇法)

嶺回歸和Lasso是兩種對線性模型特征選擇的方法,都是加入正則化項防止過擬合,嶺回歸加入的是二階范數的正則化項,而Lasso加入的是一級范式,其中Lasso能夠將一些作用比較小的特征的參數訓練為0,從而獲得稀疏解,也就是在訓練模型時實現了降維的目的。
對于樹模型,有隨機森林分類器對特征的重要性進行排序,可以達到篩選的目的。
本文先采用兩種特征選擇的方法分別選擇出重要的特征,看看特征有什么差別

# 利用Lasso進行特征選擇 from sklearn.linear_model import LassoCV from sklearn.model_selection import cross_val_score #調用LassoCV函數,并進行交叉驗證 model_lasso = LassoCV(alphas=[0.1,0.01,0.005,1],random_state=1,cv=5).fit(X_rus,y_rus) #輸出看模型中最終選擇的特征 coef = pd.Series(model_lasso.coef_,index=X_rus.columns) print(coef[coef != 0].abs().sort_values(ascending = False)) V4 0.062065 V14 0.045851 Amount 0.040011 V26 0.038201 V13 0.031702 V7 0.028889 V22 0.028509 V18 0.028171 V6 0.019226 V1 0.018757 V21 0.016032 V10 0.014742 V28 0.012483 V8 0.011273 V20 0.010726 V9 0.010358 V24 0.010227 V17 0.007217 V2 0.006838 Hour 0.004757 V15 0.003393 V27 0.002588 V19 0.000275 dtype: float64 # 利用隨機森林進行特征重要性排序 from sklearn.ensemble import RandomForestClassifier rfc_fea_model = RandomForestClassifier(random_state=1) rfc_fea_model.fit(X_rus,y_rus) fea = X_rus.columns importance = rfc_fea_model.feature_importances_ a = pd.DataFrame() a['feature'] = fea a['importance'] = importance a = a.sort_values('importance',ascending = False) plt.figure(figsize=(20,10)) plt.bar(a['feature'],a['importance']) plt.title('the importance orders sorted by random forest') plt.show()

a.cumsum() featureimportance11916133101152618172028261914221275258042127232924
V120.134515
V12V100.268117
V12V10V170.388052
V12V10V17V140.503750
V12V10V17V14V40.615973
V12V10V17V14V4V110.687904
V12V10V17V14V4V11V20.731179
V12V10V17V14V4V11V2V160.774247
V12V10V17V14V4V11V2V16V30.813352
V12V10V17V14V4V11V2V16V3V70.846050
V12V10V17V14V4V11V2V16V3V7V190.860559
V12V10V17V14V4V11V2V16V3V7V19V180.873657
V12V10V17V14V4V11V2V16V3V7V19V18V210.886416
V12V10V17V14V4V11V2V16V3V7V19V18V21Amount0.896986
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV270.906369
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V200.915172
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V150.923700
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V230.931990
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V130.939298
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V80.946163
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V8V60.952952
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V8V6V260.959418
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V8V6V26V90.965869
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V8V6V26V9V10.971975
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V8V6V26V9V1V50.977297
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V8V6V26V9V1V5V220.982325
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V8V6V26V9V1V5V22V280.986990
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V8V6V26V9V1V5V22V28V240.991551
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V8V6V26V9V1V5V22V28V24Hour0.995913
V12V10V17V14V4V11V2V16V3V7V19V18V21AmountV27V20V15V23V13V8V6V26V9V1V5V22V28V24HourV251.000000

從以上結果來看,兩種方法的排序,特征重要性差別很大,為了更大程度的保留數據的信息,我們采用兩種結合的特征,包括[‘V14’,‘V12’,‘V10’,‘V17’,‘V4’,‘V11’,‘V3’,‘V2’,‘V7’,‘V16’,‘V18’,‘Amount’,‘V19’,‘V20’,‘V23’,‘V21’,‘V15’,‘V9’,‘V6’,‘V27’,‘V25’,‘V5’,‘V13’,‘V22’,‘Hour’,‘V28’,‘V1’,‘V8’,‘V26’],其中選擇的標準是隨機森林中重要性總和95%以上,如果其中有Lasso回歸沒有的,則加入,共選出29個特征(只有V24沒有被選擇)

# 使用選擇的特征采進行訓練和測試 from sklearn.metrics import accuracy_score from sklearn.metrics import confusion_matrix from sklearn.metrics import plot_confusion_matrix from sklearn.metrics import classification_report from sklearn.linear_model import LogisticRegression # 邏輯回歸 from sklearn.neighbors import KNeighborsClassifier # KNN from sklearn.naive_bayes import GaussianNB # 樸素貝葉斯 from sklearn.svm import SVC # 支持向量分類 from sklearn.tree import DecisionTreeClassifier # 決策樹 from sklearn.ensemble import RandomForestClassifier # 隨機森林 from sklearn.ensemble import AdaBoostClassifier # Adaboost from sklearn.ensemble import GradientBoostingClassifier # GBDT from xgboost import XGBClassifier # XGBoost from lightgbm import LGBMClassifier # lightGBM from sklearn.metrics import roc_curve # 繪制ROC曲線 Classifiers = {'LG': LogisticRegression(random_state=1),'KNN': KNeighborsClassifier(),'Bayes': GaussianNB(),'SVC': SVC(random_state=1,probability=True),'DecisionTree': DecisionTreeClassifier(random_state=1),'RandomForest': RandomForestClassifier(random_state=1),'Adaboost':AdaBoostClassifier(random_state=1),'GBDT': GradientBoostingClassifier(random_state=1),'XGboost': XGBClassifier(random_state=1),'LightGBM': LGBMClassifier(random_state=1)} def train_test(Classifiers, X_train, y_train, X_test, y_test):y_pred = pd.DataFrame()Accuracy_Score = pd.DataFrame() # score.model_name = Classifiers.keysfor model_name, model in Classifiers.items():model.fit(X_train, y_train)y_pred[model_name] = model.predict(X_test)y_pred_pra = model.predict_proba(X_test)Accuracy_Score[model_name] = pd.Series(model.score(X_test, y_test))# 計算召回率print(model_name, '\n', classification_report(y_test, y_pred[model_name])) # confu_mat = confusion_matrix(y_test,y_pred[model_name]) # plt.matshow(confu_mat,cmap = plt.cm.Blues) # plt.title(model_name) # plt.colorbar()# 畫出混淆矩陣fig, ax = plt.subplots(1, 1)plot_confusion_matrix(model, X_test, y_test, labels=[0, 1], cmap='Blues', ax=ax)ax.set_title(model_name)# 畫出roc曲線plt.figure()fig,(ax1,ax2) = plt.subplots(1,2,figsize=(10,4))fpr, tpr, thres = roc_curve(y_test, y_pred_pra[:, -1])ax1.plot(fpr, tpr)ax1.set_title(model_name+' ROC')ax1.set_xlabel('fpr')ax1.set_ylabel('tpr')# 畫出KS曲線ax2.plot(thres[1:],tpr[1:])ax2.plot(thres[1:],fpr[1:])ax2.plot(thres[1:],tpr[1:]-fpr[1:])ax2.set_xlabel('threshold')ax2.legend(['tpr','fpr','tpr-fpr'])plt.sca(ax2)plt.gca().invert_xaxis() # ax2.gca().invert_xaxis()ax2.set_title(model_name+' KS')return y_pred,Accuracy_Score # test_cols = ['V12', 'V14', 'V10', 'V17', 'V11', 'V4', 'V2', 'V16', 'V7', 'V3', # 'V18', 'Amount', 'V19', 'V21', 'V20', 'V8', 'V15', 'V6', 'V27', 'V26', 'V1','V9','V13','V22','Hour','V23','V28'] test_cols = X_rus.columns.drop('V24') Y_pred,Accuracy_score = train_test(Classifiers, X_rus[test_cols], y_rus, X_test[test_cols], y_test) Accuracy_score LGprecision recall f1-score support0 1.00 0.96 0.98 568631 0.04 0.94 0.07 98accuracy 0.96 56961macro avg 0.52 0.95 0.53 56961 weighted avg 1.00 0.96 0.98 56961KNNprecision recall f1-score support0 1.00 0.97 0.99 568631 0.06 0.93 0.11 98accuracy 0.97 56961macro avg 0.53 0.95 0.55 56961 weighted avg 1.00 0.97 0.99 56961Bayesprecision recall f1-score support0 1.00 0.96 0.98 568631 0.04 0.88 0.08 98accuracy 0.96 56961macro avg 0.52 0.92 0.53 56961 weighted avg 1.00 0.96 0.98 56961SVCprecision recall f1-score support0 1.00 0.98 0.99 568631 0.08 0.91 0.14 98accuracy 0.98 56961macro avg 0.54 0.94 0.57 56961 weighted avg 1.00 0.98 0.99 56961DecisionTreeprecision recall f1-score support0 1.00 0.88 0.93 568631 0.01 0.95 0.03 98accuracy 0.88 56961macro avg 0.51 0.91 0.48 56961 weighted avg 1.00 0.88 0.93 56961RandomForestprecision recall f1-score support0 1.00 0.97 0.98 568631 0.05 0.93 0.09 98accuracy 0.97 56961macro avg 0.52 0.95 0.54 56961 weighted avg 1.00 0.97 0.98 56961Adaboostprecision recall f1-score support0 1.00 0.95 0.98 568631 0.03 0.95 0.07 98accuracy 0.95 56961macro avg 0.52 0.95 0.52 56961 weighted avg 1.00 0.95 0.97 56961GBDTprecision recall f1-score support0 1.00 0.96 0.98 568631 0.04 0.92 0.07 98accuracy 0.96 56961macro avg 0.52 0.94 0.53 56961 weighted avg 1.00 0.96 0.98 56961[15:05:57] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.4.0/src/learner.cc:1095: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior. XGboostprecision recall f1-score support0 1.00 0.97 0.98 568631 0.04 0.93 0.09 98accuracy 0.97 56961macro avg 0.52 0.95 0.53 56961 weighted avg 1.00 0.97 0.98 56961LightGBMprecision recall f1-score support0 1.00 0.97 0.98 568631 0.05 0.94 0.10 98accuracy 0.97 56961macro avg 0.53 0.95 0.54 56961 weighted avg 1.00 0.97 0.98 56961 LGKNNBayesSVCDecisionTreeRandomForestAdaboostGBDTXGboostLightGBM0
0.9594460.9735610.9628870.9814790.8778990.9674510.9534070.9604820.9656780.969611

<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes>

# 集成學習 # 根據以上auc以及recall的結果,選擇LG,DT以及GBDT當作基模型 from sklearn.ensemble import VotingClassifier voting_clf = VotingClassifier(estimators=[ # ('LG', LogisticRegression(random_state=1)),('KNN', KNeighborsClassifier()), # ('Bayes',GaussianNB()),('SVC', SVC(random_state=1,probability=True)), # ('DecisionTree', DecisionTreeClassifier(random_state=1)), # ('RandomForest', RandomForestClassifier(random_state=1)), # ('Adaboost',AdaBoostClassifier(random_state=1)), # ('GBDT', GradientBoostingClassifier(random_state=1)), # ('XGboost', XGBClassifier(random_state=1)),('LightGBM', LGBMClassifier(random_state=1))]) voting_clf.fit(X_rus[test_cols], y_rus) y_final_pred = voting_clf.predict(X_test[test_cols]) print(classification_report(y_test, y_final_pred)) fig, ax = plt.subplots(1, 1) plot_confusion_matrix(voting_clf, X_test[test_cols], y_test, labels=[0, 1], cmap='Blues', ax=ax) precision recall f1-score support0 1.00 0.98 0.99 568631 0.08 0.94 0.14 98accuracy 0.98 56961macro avg 0.54 0.96 0.57 56961 weighted avg 1.00 0.98 0.99 56961<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x213686f0700>

通過以上結果,模型的精確度accuracy都挺高的,尤其是支持向量分類的達到了98.1479%,但對于不平衡樣本來說,更應該關注召回率,在SVC中,識別出欺詐交易的概率是91%,而對于非欺詐樣本的識別率是99%,分別有1046和9份樣本識別錯誤。

在進行模型調優之前,嘗試著用默認參數來構成模型集成,選擇出精確度高的3個模型,KNN,SVC,和Light GBM,得到的結果的精確度是98%,分別有6份和1114份樣本識別錯誤,在欺詐樣本的識別上有所提升,但是非欺詐樣本檢測成欺詐樣本數量增加了。

因為模型中使用的參數都是默認的,考慮利用網格搜索確定最佳參數,當然網格搜索也不一定能找到最好的參數

初步模型已經建立,但是模型的參數采用的是模型默認的,下面進行調參。調參的方法有三種:隨機搜索、網格搜索以及貝葉斯優化。而隨即搜索和網格搜索當超參數過多時,極其耗時,因為他們的搜索次數是所有參數的組合,而利用貝葉斯優化進行調參會考慮之前的參數信息,不斷更新先驗,且迭代次數少,速度快。

# 網格搜索找最佳參數 from sklearn.model_selection import GridSearchCV def reg_best(X_train, y_train):log_reg_parames = {'penalty': ['l1', 'l2'],'C': [0.001, 0.01, 0.05, 0.1, 1, 10]}grid_log_reg = GridSearchCV(LogisticRegression(), log_reg_parames)grid_log_reg.fit(X_train, y_train)log_reg_best = grid_log_reg.best_estimator_print(log_reg_best)return log_reg_bestdef KNN_best(X_train, y_train):KNN_parames = {'n_neighbors': [3, 5, 7, 9, 11, 15], 'algorithm': ['auto', 'ball_tree', 'kd_tree', 'brute']}grid_KNN = GridSearchCV(KNeighborsClassifier(), KNN_parames)grid_KNN.fit(X_train, y_train)KNN_best_ = grid_KNN.best_estimator_print(KNN_best_)return KNN_best_def SVC_best(X_train, y_train):SVC_parames = {'C': [0.5, 0.7, 0.9, 1], 'kernel': ['rbf', 'poly', 'sigmoid', 'linear'], 'probability': [True]}grid_SVC = GridSearchCV(SVC(), SVC_parames)grid_SVC.fit(X_train, y_train)SVC_best = grid_SVC.best_estimator_print(SVC_best)return SVC_bestdef DecisionTree_best(X_train, y_train):DT_parames = {"criterion": ["gini", "entropy"], "max_depth": list(range(2, 4, 1)),"min_samples_leaf": list(range(5, 7, 1))}grid_DT = GridSearchCV(DecisionTreeClassifier(), DT_parames)grid_DT.fit(X_train, y_train)DT_best = grid_DT.best_estimator_print(DT_best)return DT_bestdef RandomForest_best(X_train, y_train):RF_params = {'n_estimators': [10, 50, 100, 150, 200], 'criterion': ['gini', 'entropy'], "min_samples_leaf": list(range(5, 7, 1))}grid_RF = GridSearchCV(RandomForestClassifier(), RF_params)grid_RF.fit(X_train, y_train)RT_best = grid_RF.best_estimator_print(RT_best)return RT_bestdef Adaboost_best(X_train, y_train):Adaboost_params = {'n_estimators': [10, 50, 100, 150, 200], 'learning_rate': [0.01, 0.05, 0.1, 0.5, 1], 'algorithm': ['SAMME', 'SAMME.R']}grid_Adaboost = GridSearchCV(AdaBoostClassifier(), Adaboost_params)grid_Adaboost.fit(X_train, y_train)Adaboost_best_ = grid_Adaboost.best_estimator_print(Adaboost_best_)return Adaboost_best_def GBDT_best(X_train, y_train):GBDT_params = {'n_estimators': [10, 50, 100, 150], 'loss': ['deviance', 'exponential'], 'learning_rate': [0.01, 0.05, 0.1], 'criterion': ['friedman_mse', 'mse']}grid_GBDT = GridSearchCV(GradientBoostingClassifier(), GBDT_params)grid_GBDT.fit(X_train, y_train)GBDT_best_ = grid_GBDT.best_estimator_print(GBDT_best_)return GBDT_best_def XGboost_best(X_train, y_train):XGB_params = {'n_estimators': [10, 50, 100, 150, 200], 'max_depth': [5, 10, 15, 20], 'learning_rate': [0.01, 0.05, 0.1, 0.5, 1]}grid_XGB = GridSearchCV(XGBClassifier(), XGB_params)grid_XGB.fit(X_train, y_train)XGB_best_ = grid_XGB.best_estimator_print(XGB_best_)return XGB_best_def LGBM_best(X_train, y_train):LGBM_params = {'boosting_type': ['gbdt', 'dart', 'goss', 'rf'], 'num_leaves': [21, 31, 51], 'n_estimators': [10, 50, 100, 150, 200], 'max_depth': [5, 10, 15, 20], 'learning_rate': [0.01, 0.05, 0.1, 0.5, 1]}grid_LGBM = GridSearchCV(LGBMClassifier(), LGBM_params)grid_LGBM.fit(X_train, y_train)LGBM_best_ = grid_LGBM.best_estimator_print(LGBM_best_)return LGBM_best_ Classifiers = {'LG': reg_best(X_rus[test_cols], y_rus),'KNN': KNN_best(X_rus[test_cols], y_rus),'Bayes': GaussianNB(),'SVC': SVC_best(X_rus[test_cols], y_rus),'DecisionTree': DecisionTree_best(X_rus[test_cols], y_rus),'RandomForest': RandomForest_best(X_rus[test_cols], y_rus),'Adaboost':Adaboost_best(X_rus[test_cols], y_rus),'GBDT': GBDT_best(X_rus[test_cols], y_rus),'XGboost': XGboost_best(X_rus[test_cols], y_rus),'LightGBM': LGBM_best(X_rus[test_cols], y_rus)} LogisticRegression(C=0.05) KNeighborsClassifier(n_neighbors=3) SVC(C=0.7, probability=True) DecisionTreeClassifier(criterion='entropy', max_depth=2, min_samples_leaf=5) RandomForestClassifier(min_samples_leaf=5) AdaBoostClassifier(algorithm='SAMME', learning_rate=0.5, n_estimators=100) GradientBoostingClassifier(criterion='mse', loss='exponential') XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,importance_type='gain', interaction_constraints='',learning_rate=0.5, max_delta_step=0, max_depth=5,min_child_weight=1, missing=nan, monotone_constraints='()',n_estimators=10, n_jobs=8, num_parallel_tree=1, random_state=0,reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1,tree_method='exact', validate_parameters=1, verbosity=None) LGBMClassifier(boosting_type='dart', learning_rate=1, max_depth=5,n_estimators=150, num_leaves=21) # 利用優化后的參數再訓練測試 Y_pred,Accuracy_score = train_test(Classifiers, X_rus[test_cols], y_rus, X_test[test_cols], y_test) Accuracy_score LGprecision recall f1-score support0 1.00 0.97 0.99 568631 0.05 0.92 0.10 98accuracy 0.97 56961macro avg 0.53 0.95 0.54 56961 weighted avg 1.00 0.97 0.98 56961KNNprecision recall f1-score support0 1.00 0.96 0.98 568631 0.04 0.93 0.08 98accuracy 0.96 56961macro avg 0.52 0.95 0.53 56961 weighted avg 1.00 0.96 0.98 56961Bayesprecision recall f1-score support0 1.00 0.96 0.98 568631 0.04 0.88 0.08 98accuracy 0.96 56961macro avg 0.52 0.92 0.53 56961 weighted avg 1.00 0.96 0.98 56961SVCprecision recall f1-score support0 1.00 0.98 0.99 568631 0.09 0.91 0.16 98accuracy 0.98 56961macro avg 0.54 0.95 0.57 56961 weighted avg 1.00 0.98 0.99 56961DecisionTreeprecision recall f1-score support0 1.00 0.90 0.95 568631 0.02 0.95 0.03 98accuracy 0.90 56961macro avg 0.51 0.92 0.49 56961 weighted avg 1.00 0.90 0.94 56961RandomForestprecision recall f1-score support0 1.00 0.97 0.99 568631 0.06 0.93 0.11 98accuracy 0.97 56961macro avg 0.53 0.95 0.55 56961 weighted avg 1.00 0.97 0.99 56961Adaboostprecision recall f1-score support0 1.00 0.96 0.98 568631 0.04 0.94 0.08 98accuracy 0.96 56961macro avg 0.52 0.95 0.53 56961 weighted avg 1.00 0.96 0.98 56961GBDTprecision recall f1-score support0 1.00 0.97 0.98 568631 0.05 0.93 0.09 98accuracy 0.97 56961macro avg 0.52 0.95 0.53 56961 weighted avg 1.00 0.97 0.98 56961[15:36:45] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.4.0/src/learner.cc:1095: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior. XGboostprecision recall f1-score support0 1.00 0.96 0.98 568631 0.04 0.93 0.07 98accuracy 0.96 56961macro avg 0.52 0.94 0.53 56961 weighted avg 1.00 0.96 0.98 56961LightGBMprecision recall f1-score support0 1.00 0.97 0.98 568631 0.05 0.93 0.10 98accuracy 0.97 56961macro avg 0.53 0.95 0.54 56961 weighted avg 1.00 0.97 0.98 56961 LGKNNBayesSVCDecisionTreeRandomForestAdaboostGBDTXGboostLightGBM0
0.9725080.9637470.9628870.9831290.8970870.9744740.9621850.9661520.9600430.969769

<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes>

<Figure size 432x288 with 0 Axes> # 集成學習 # 根據以上auc以及recall的結果,選擇LG,DT以及GBDT當作基模型 from sklearn.ensemble import VotingClassifier voting_clf = VotingClassifier(estimators=[('LG', LogisticRegression(random_state=1,C=0.05)),('SVC', SVC(random_state=1,probability=True,C=0.7)),('RandomForest', RandomForestClassifier(random_state=1,min_samples_leaf=5)),]) voting_clf.fit(X_rus[test_cols], y_rus) y_final_pred=voting_clf.predict(X_test[test_cols]) print(classification_report(y_test, y_final_pred)) fig, ax=plt.subplots(1, 1) plot_confusion_matrix(voting_clf, X_test[test_cols], y_test, labels=[0, 1], cmap='Blues', ax=ax) precision recall f1-score support0 1.00 0.98 0.99 568631 0.07 0.92 0.14 98accuracy 0.98 56961macro avg 0.54 0.95 0.56 56961 weighted avg 1.00 0.98 0.99 56961<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x2135666d070>

從精確度上來看,大部分模型都有提升,也有一些模型的精確度是退化的。在召回率上沒有明顯提升,甚至有些退化比較明顯,這說明對于欺詐樣本的識別還是不夠明顯。因為采用的訓練樣本數遠小于測試樣本數,這也導致了測試效果不行。

SMOTE上采樣與隨機下采樣相結合

還是對訓練樣本進行分析再訓練模型

data_smote = pd.concat([X_smote,y_smote],axis=1) # 單個數值特征分布情況 f = pd.melt(data_smote, value_vars=X_train.columns) g = sns.FacetGrid(f, col='variable', col_wrap=3, sharex=False, sharey=False) g = g.map(sns.distplot, 'value')

# 單個數值特征分布箱線圖 f = pd.melt(data_smote, value_vars=X_train.columns) g = sns.FacetGrid(f,col='variable', col_wrap=3, sharex=False, sharey=False,size=5) g = g.map(sns.boxplot, 'value', color='lightskyblue')

# 單個數值特征分布小提琴圖 f = pd.melt(data_smote, value_vars=X_train.columns) g = sns.FacetGrid(f, col='variable', col_wrap=3, sharex=False, sharey=False,size=5) g = g.map(sns.violinplot, 'value',color='lightskyblue')

numerical_columns = data_smote.columns.drop('Class') for col_name in numerical_columns:data_smote = outlier_process(data_smote,col_name)print(data_smote.shape) (214362, 31) (213002, 31) (212497, 31) (212497, 31) (204320, 31) (202425, 31) (198165, 31) (189719, 31) (189492, 31) (189427, 31) (189020, 31) (189019, 31) (189019, 31) (189019, 31) (189016, 31) (188944, 31) (184836, 31) (184556, 31) (184552, 31) (180426, 31) (178559, 31) (178559, 31) (174526, 31) (174457, 31) (174354, 31) (174098, 31) (169488, 31) (166755, 31) (156423, 31) (156423, 31)





























#繪制采樣前和采樣后的熱力圖 fig,(ax1,ax2) = plt.subplots(2,1,figsize=(10,10)) sns.heatmap(data.corr(),cmap = 'coolwarm_r',ax=ax1,vmax=0.8) ax1.set_title('the relationship on imbalanced samples') sns.heatmap(data_smote.corr(),cmap = 'coolwarm_r',ax=ax2,vmax=0.8) ax2.set_title('the relationship on random under samples') Text(0.5, 1.0, 'the relationship on random under samples')

# 分析數值屬性與Class之間的相關性 data_smote.corr()['Class'].sort_values(ascending=False) Class 1.000000 V11 0.713013 V4 0.705057 V2 0.641477 V21 0.466069 V27 0.459954 V28 0.383395 V20 0.381292 V8 0.253905 V25 0.147601 V26 0.052486 V19 0.008546 Amount -0.001365 V15 -0.023988 V22 -0.028250 Hour -0.048206 V5 -0.098754 V13 -0.142258 V24 -0.154369 V23 -0.157138 V18 -0.170994 V1 -0.295297 V17 -0.445826 V6 -0.465282 V16 -0.500016 V7 -0.547495 V9 -0.567131 V3 -0.658294 V12 -0.713942 V10 -0.748285 V14 -0.790148 Name: Class, dtype: float64

根據排名,和預測值Class正相關值較大的有V4,V11,V2,負相關值較大的有V_14,V_10,V_12,V_3,V7,V9,我們畫出這些特征與預測值之間的關系圖

# 正相關的屬性與Class分布圖 fig,(ax1,ax2,ax3) = plt.subplots(1,3,figsize=(24,6)) sns.violinplot(x='Class',y='V4',data=data_smote,palette=['lightsalmon','lightskyblue'],ax=ax1) ax1.set_title('V11 vs Class Positive Correlation')sns.violinplot(x='Class',y='V11',data=data_smote,palette=['lightsalmon','lightskyblue'],ax=ax2) ax2.set_title('V4 vs Class Positive Correlation')sns.violinplot(x='Class',y='V2',data=data_smote,palette=['lightsalmon','lightskyblue'],ax=ax3) ax3.set_title('V2 vs Class Positive Correlation') Text(0.5, 1.0, 'V2 vs Class Positive Correlation')

# 正相關的屬性與Class分布圖 fig,((ax1,ax2,ax3),(ax4,ax5,ax6)) = plt.subplots(2,3,figsize=(24,14)) sns.violinplot(x='Class',y='V14',data=data_smote,palette=['lightsalmon','lightskyblue'],ax=ax1) ax1.set_title('V14 vs Class negative Correlation')sns.violinplot(x='Class',y='V10',data=data_smote,palette=['lightsalmon','lightskyblue'],ax=ax2) ax2.set_title('V4 vs Class negative Correlation')sns.violinplot(x='Class',y='V12',data=data_smote,palette=['lightsalmon','lightskyblue'],ax=ax3) ax3.set_title('V12 vs Class negative Correlation')sns.violinplot(x='Class',y='V3',data=data_smote,palette=['lightsalmon','lightskyblue'],ax=ax4) ax4.set_title('V3 vs Class negative Correlation')sns.violinplot(x='Class',y='V7',data=data_smote,palette=['lightsalmon','lightskyblue'],ax=ax5) ax5.set_title('V7 vs Class negative Correlation')sns.violinplot(x='Class',y='V9',data=data_smote,palette=['lightsalmon','lightskyblue'],ax=ax6) ax6.set_title('V9 vs Class negative Correlation') Text(0.5, 1.0, 'V9 vs Class negative Correlation')

vif = [variance_inflation_factor(data_smote.values, data_smote.columns.get_loc(i)) for i in data_smote.columns] vif [8.91488639686892,41.95138589208644,29.439659166987383,9.321076032190051,18.073107065112527,7.88968653431388,38.13243240821064,2.61807436913295,4.202219415722627,20.898417802753006,5.976908659263689,10.856930462897152,1.2514060420970867,20.23958581764367,1.176425772463202,6.444784613229281,6.980222815257359,2.7742773520511372,2.4906782119059176,4.348667463801223,3.409678717638936,1.9626453781659197,2.1167419900555884,1.1352046295467655,1.9935984979230046,1.1029041559046275,3.084861887885401,1.9565486505075638,13.535498930988794,1.7451075607624895,4.64505815138509]

相較于隨機下采樣來說,在多重共線性上相對有了改善

# 利用Lasso進行特征選擇 #調用LassoCV函數,并進行交叉驗證 model_lasso = LassoCV(alphas=[0.1,0.01,0.005,1],random_state=1,cv=5).fit(X_smote,y_smote) #輸出看模型中最終選擇的特征 coef = pd.Series(model_lasso.coef_,index=X_smote.columns) print(coef[coef != 0]) V1 -0.019851 V2 0.004587 V3 0.000523 V4 0.052236 V5 -0.000597 V6 -0.012474 V7 0.030960 V8 -0.012043 V9 0.007895 V10 -0.023509 V11 0.005633 V12 0.009648 V13 -0.036565 V14 -0.053919 V15 0.012297 V17 -0.009149 V18 0.030941 V20 0.010266 V21 0.013880 V22 0.019031 V23 -0.009253 V26 -0.068311 V27 -0.003680 V28 0.008911 dtype: float64 # 利用隨機森林進行特征重要性排序 from sklearn.ensemble import RandomForestClassifier rfc_fea_model = RandomForestClassifier(random_state=1) rfc_fea_model.fit(X_smote,y_smote) fea = X_smote.columns importance = rfc_fea_model.feature_importances_ a = pd.DataFrame() a['feature'] = fea a['importance'] = importance a = a.sort_values('importance',ascending = False) plt.figure(figsize=(20,10)) plt.bar(a['feature'],a['importance']) plt.title('the importance orders sorted by random forest') plt.show()

a.cumsum() featureimportance13119163101215617720280812182642919145252722212423
V140.140330
V14V120.274028
V14V12V100.392515
V14V12V10V170.501863
V14V12V10V17V40.592110
V14V12V10V17V4V110.680300
V14V12V10V17V4V11V20.728448
V14V12V10V17V4V11V2V30.770334
V14V12V10V17V4V11V2V3V160.808083
V14V12V10V17V4V11V2V3V16V70.842341
V14V12V10V17V4V11V2V3V16V7V180.857924
V14V12V10V17V4V11V2V3V16V7V18V80.869777
V14V12V10V17V4V11V2V3V16V7V18V8V210.880431
V14V12V10V17V4V11V2V3V16V7V18V8V21Amount0.890861
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV10.900571
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V90.909978
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V130.918623
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V190.926978
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V270.935072
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V50.942688
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V5Hour0.950275
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V5HourV200.957287
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V5HourV20V150.963873
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V5HourV20V15V60.970225
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V5HourV20V15V6V260.976519
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V5HourV20V15V6V26V280.982202
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V5HourV20V15V6V26V28V230.987770
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V5HourV20V15V6V26V28V23V220.992335
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V5HourV20V15V6V26V28V23V22V250.996295
V14V12V10V17V4V11V2V3V16V7V18V8V21AmountV1V9V13V19V27V5HourV20V15V6V26V28V23V22V25V241.000000

從以上結果來看,兩種方法的排序,特征重要性差別很大,為了更大程度的保留數據的信息,我們采用兩種結合的特征,其中選擇的標準是隨機森林中重要性總和95%以上,如果其中有Lasso回歸沒有的,則加入,共選出除去V24,V25之外的28個特征

# test_cols = ['V12', 'V14', 'V10', 'V17', 'V4', 'V11', 'V2', 'V7', 'V16', 'V3', 'V18', # 'V8', 'Amount', 'V19', 'V21', 'V1', 'V5', 'V13', 'V27','V6','V15','V26'] test_cols = X_smote.columns.drop(['V24','V25']) Classifiers = {'LG': LogisticRegression(random_state=1),'KNN': KNeighborsClassifier(),'Bayes': GaussianNB(),'SVC': SVC(random_state=1, probability=True),'DecisionTree': DecisionTreeClassifier(random_state=1),'RandomForest': RandomForestClassifier(random_state=1),'Adaboost': AdaBoostClassifier(random_state=1),'GBDT': GradientBoostingClassifier(random_state=1),'XGboost': XGBClassifier(random_state=1),'LightGBM': LGBMClassifier(random_state=1) } Y_pred, Accuracy_score = train_test(Classifiers, X_smote[test_cols], y_smote, X_test[test_cols], y_test) print(Accuracy_score) Y_pred.head() LGprecision recall f1-score support0 1.00 0.98 0.99 568631 0.06 0.86 0.12 98accuracy 0.98 56961macro avg 0.53 0.92 0.55 56961 weighted avg 1.00 0.98 0.99 56961KNNprecision recall f1-score support0 1.00 1.00 1.00 568631 0.29 0.83 0.42 98accuracy 1.00 56961macro avg 0.64 0.91 0.71 56961 weighted avg 1.00 1.00 1.00 56961Bayesprecision recall f1-score support0 1.00 0.98 0.99 568631 0.06 0.84 0.11 98accuracy 0.98 56961macro avg 0.53 0.91 0.55 56961 weighted avg 1.00 0.98 0.99 56961SVCprecision recall f1-score support0 1.00 0.99 0.99 568631 0.09 0.86 0.17 98accuracy 0.99 56961macro avg 0.55 0.92 0.58 56961 weighted avg 1.00 0.99 0.99 56961DecisionTreeprecision recall f1-score support0 1.00 1.00 1.00 568631 0.27 0.80 0.40 98accuracy 1.00 56961macro avg 0.63 0.90 0.70 56961 weighted avg 1.00 1.00 1.00 56961RandomForestprecision recall f1-score support0 1.00 1.00 1.00 568631 0.81 0.82 0.81 98accuracy 1.00 56961macro avg 0.90 0.91 0.91 56961 weighted avg 1.00 1.00 1.00 56961Adaboostprecision recall f1-score support0 1.00 0.98 0.99 568631 0.06 0.89 0.12 98accuracy 0.98 56961macro avg 0.53 0.93 0.55 56961 weighted avg 1.00 0.98 0.99 56961GBDTprecision recall f1-score support0 1.00 0.99 0.99 568631 0.13 0.85 0.22 98accuracy 0.99 56961macro avg 0.56 0.92 0.61 56961 weighted avg 1.00 0.99 0.99 56961[15:24:00] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.4.0/src/learner.cc:1095: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior. XGboostprecision recall f1-score support0 1.00 1.00 1.00 568631 0.69 0.84 0.76 98accuracy 1.00 56961macro avg 0.84 0.92 0.88 56961 weighted avg 1.00 1.00 1.00 56961LightGBMprecision recall f1-score support0 1.00 1.00 1.00 568631 0.54 0.83 0.66 98accuracy 1.00 56961macro avg 0.77 0.91 0.83 56961 weighted avg 1.00 1.00 1.00 56961LG KNN Bayes SVC DecisionTree RandomForest Adaboost GBDT XGboost LightGBM 0 0.977862 0.996138 0.976335 0.985113 0.995874 0.99935 0.977054 0.9898 0.99907 0.998508 LGKNNBayesSVCDecisionTreeRandomForestAdaboostGBDTXGboostLightGBM01234
1110011111
1110001101
1111111111
1111111111
1111111111










從精確度上可以看出,經過了SMOTE上采樣和隨機下采樣之后,精確度有了很好的提升,比如隨機森林RandomForest達到了99.94%的精確度,在樣本數量上分別是13個欺詐樣本的沒有識別,誤將18個非欺詐樣本識別為欺詐樣本,其他的算法如XGBoost,lightGBM,KNN等都達到了99%的準確率,下面使用準確率高的模型進行集成
因為樣本量較大,而參數調優也比較耗時,目前的效果也比較好,因而省略網格調優的過程,時間足夠的可以像前面一樣調優。

Classifiers = {'LG': reg_best(X_smote[test_cols], y_smote),'KNN': KNN_best(X_smote[test_cols], y_smote),'Bayes': GaussianNB(),'SVC': SVC_best(X_smote[test_cols], y_smote),'DecisionTree': DecisionTree_best(X_smote[test_cols], y_smote),'RandomForest': RandomForest_best(X_smote[test_cols], y_smote),'Adaboost':Adaboost_best(X_smote[test_cols], y_smote),'GBDT': GBDT_best(X_smote[test_cols], y_smote),'XGboost': XGboost_best(X_smote[test_cols], y_smote),'LightGBM': LGBM_best(X_smote[test_cols], y_smote)} LogisticRegression(C=1) KNeighborsClassifier(n_neighbors=3) SVC(C=1, probability=True) DecisionTreeClassifier(max_depth=3, min_samples_leaf=5) RandomForestClassifier(criterion='entropy', min_samples_leaf=5) AdaBoostClassifier(learning_rate=1, n_estimators=200) GradientBoostingClassifier(n_estimators=150) XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,importance_type='gain', interaction_constraints='',learning_rate=0.5, max_delta_step=0, max_depth=5,min_child_weight=1, missing=nan, monotone_constraints='()',n_estimators=200, n_jobs=8, num_parallel_tree=1, random_state=0,reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1,tree_method='exact', validate_parameters=1, verbosity=None) LGBMClassifier(learning_rate=0.5, max_depth=15, num_leaves=51) Y_pred,Accuracy_score = train_test(Classifiers, X_smote[test_cols], y_smote, X_test[test_cols], y_test) print(Accuracy_score) Y_pred.head().append(Y_pred.tail()) LGprecision recall f1-score support0 1.00 0.97 0.99 568631 0.06 0.91 0.11 98accuracy 0.97 56961macro avg 0.53 0.94 0.55 56961 weighted avg 1.00 0.97 0.99 56961KNNprecision recall f1-score support0 1.00 0.98 0.99 568631 0.09 0.92 0.17 98accuracy 0.98 56961macro avg 0.55 0.95 0.58 56961 weighted avg 1.00 0.98 0.99 56961Bayesprecision recall f1-score support0 1.00 0.98 0.99 568631 0.07 0.88 0.12 98accuracy 0.98 56961macro avg 0.53 0.93 0.56 56961 weighted avg 1.00 0.98 0.99 56961SVCprecision recall f1-score support0 1.00 0.98 0.99 568631 0.08 0.90 0.15 98accuracy 0.98 56961macro avg 0.54 0.94 0.57 56961 weighted avg 1.00 0.98 0.99 56961DecisionTreeprecision recall f1-score support0 1.00 0.96 0.98 568631 0.04 0.90 0.08 98accuracy 0.96 56961macro avg 0.52 0.93 0.53 56961 weighted avg 1.00 0.96 0.98 56961RandomForestprecision recall f1-score support0 1.00 1.00 1.00 568631 0.33 0.90 0.48 98accuracy 1.00 56961macro avg 0.66 0.95 0.74 56961 weighted avg 1.00 1.00 1.00 56961Adaboostprecision recall f1-score support0 1.00 0.98 0.99 568631 0.08 0.90 0.15 98accuracy 0.98 56961macro avg 0.54 0.94 0.57 56961 weighted avg 1.00 0.98 0.99 56961GBDTprecision recall f1-score support0 1.00 0.99 0.99 568631 0.11 0.89 0.19 98accuracy 0.99 56961macro avg 0.55 0.94 0.59 56961 weighted avg 1.00 0.99 0.99 56961[17:58:32] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.4.0/src/learner.cc:1095: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'binary:logistic' was changed from 'error' to 'logloss'. Explicitly set eval_metric if you'd like to restore the old behavior. XGboostprecision recall f1-score support0 1.00 1.00 1.00 568631 0.24 0.90 0.38 98accuracy 0.99 56961macro avg 0.62 0.95 0.69 56961 weighted avg 1.00 0.99 1.00 56961LightGBMprecision recall f1-score support0 1.00 1.00 1.00 568631 0.30 0.90 0.45 98accuracy 1.00 56961macro avg 0.65 0.95 0.72 56961 weighted avg 1.00 1.00 1.00 56961LG KNN Bayes SVC DecisionTree RandomForest Adaboost GBDT XGboost LightGBM 0 0.97393 0.984463 0.978477 0.982936 0.963273 0.996629 0.982093 0.987026 0.994944 0.996208 LGKNNBayesSVCDecisionTreeRandomForestAdaboostGBDTXGboostLightGBM012345695656957569585695956960
0000000000
0000000000
0000000000
0000000000
0010000000
0000000000
0000000000
0000000000
0010000000
0000000000
# 集成學習 # 根據以上auc以及recall的結果,選擇LG,DT以及GBDT當作基模型 from sklearn.ensemble import VotingClassifier voting_clf = VotingClassifier(estimators=[ # ('LG', LogisticRegression(random_state=1)),('KNN', KNeighborsClassifier(n_neighbors=3)), # ('Bayes',GaussianNB()), # ('SVC', SVC(random_state=1,probability=True)),('DecisionTree', DecisionTreeClassifier(random_state=1)),('RandomForest', RandomForestClassifier(random_state=1)), # ('Adaboost',AdaBoostClassifier(random_state=1)), # ('GBDT', GradientBoostingClassifier(random_state=1)),('XGboost', XGBClassifier(random_state=1)),('LightGBM', LGBMClassifier(random_state=1))]) voting_clf.fit(X_smote[test_cols], y_smote) y_final_pred = voting_clf.predict(X_test[test_cols]) print(classification_report(y_test, y_final_pred)) fig, ax = plt.subplots(1, 1) plot_confusion_matrix(voting_clf, X_test[test_cols], y_test, labels=[0, 1], cmap='Blues', ax=ax) precision recall f1-score support0 1.00 1.00 1.00 568631 0.71 0.83 0.76 98accuracy 1.00 56961macro avg 0.86 0.91 0.88 56961 weighted avg 1.00 1.00 1.00 56961<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x1fe3047f3a0>

最終,根據我們選擇的模型,能達到幾乎100%的準確率,欺詐樣本中有17個沒有識別出,而在非欺詐樣本中只有33個被識別為存在信用卡欺詐,與隨機下采樣在準確率上有了極大提升。在欺詐樣本的識別上還有提升空間!

總結

以上是生活随笔為你收集整理的信用卡欺诈检测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

少妇一晚三次一区二区三区 | 人妻少妇精品无码专区二区 | 俄罗斯老熟妇色xxxx | 成年美女黄网站色大免费全看 | 国产亚洲日韩欧美另类第八页 | 亚洲阿v天堂在线 | 亚洲日韩一区二区 | 男女性色大片免费网站 | 亚洲国产精品一区二区美利坚 | 欧美放荡的少妇 | 久久精品国产亚洲精品 | 欧美乱妇无乱码大黄a片 | 奇米影视888欧美在线观看 | 精品国产青草久久久久福利 | 好爽又高潮了毛片免费下载 | aⅴ亚洲 日韩 色 图网站 播放 | 日本护士xxxxhd少妇 | 日本饥渴人妻欲求不满 | 草草网站影院白丝内射 | 日韩精品无码免费一区二区三区 | 日韩av无码一区二区三区不卡 | 狠狠躁日日躁夜夜躁2020 | 性色av无码免费一区二区三区 | 呦交小u女精品视频 | 又色又爽又黄的美女裸体网站 | 熟女少妇在线视频播放 | 55夜色66夜色国产精品视频 | 欧洲精品码一区二区三区免费看 | 乌克兰少妇性做爰 | 久久综合狠狠综合久久综合88 | 中文字幕无线码 | 波多野结衣高清一区二区三区 | 黑人粗大猛烈进出高潮视频 | 国产亚av手机在线观看 | 国产午夜视频在线观看 | 永久免费观看美女裸体的网站 | 蜜桃无码一区二区三区 | 中文字幕无码免费久久9一区9 | 国产午夜无码精品免费看 | 天天爽夜夜爽夜夜爽 | 久久久www成人免费毛片 | 国产婷婷色一区二区三区在线 | 67194成是人免费无码 | 夜夜夜高潮夜夜爽夜夜爰爰 | 清纯唯美经典一区二区 | 在线精品国产一区二区三区 | 噜噜噜亚洲色成人网站 | 精品亚洲成av人在线观看 | 扒开双腿疯狂进出爽爽爽视频 | 1000部啪啪未满十八勿入下载 | 成人av无码一区二区三区 | 中文无码成人免费视频在线观看 | 暴力强奷在线播放无码 | 色综合久久久无码网中文 | 亚洲 a v无 码免 费 成 人 a v | 无码国产色欲xxxxx视频 | 日日天日日夜日日摸 | 国产又粗又硬又大爽黄老大爷视 | 中文字幕无码日韩欧毛 | 99久久久无码国产精品免费 | 国产av久久久久精东av | 蜜臀av无码人妻精品 | 成 人影片 免费观看 | 亚洲爆乳无码专区 | 欧洲熟妇色 欧美 | 成人动漫在线观看 | 亚洲综合伊人久久大杳蕉 | 成人性做爰aaa片免费看不忠 | 欧美高清在线精品一区 | 九九久久精品国产免费看小说 | 大肉大捧一进一出好爽视频 | 夜夜躁日日躁狠狠久久av | 少妇激情av一区二区 | 性色欲网站人妻丰满中文久久不卡 | 午夜精品久久久久久久 | 日本熟妇浓毛 | 日韩精品一区二区av在线 | 两性色午夜免费视频 | 久久国产精品_国产精品 | 精品国产一区二区三区av 性色 | 免费无码肉片在线观看 | 国产又爽又猛又粗的视频a片 | 中文字幕无码视频专区 | 久在线观看福利视频 | 亚洲熟女一区二区三区 | 欧美丰满老熟妇xxxxx性 | 日韩精品无码一区二区中文字幕 | 少妇无码吹潮 | 天天拍夜夜添久久精品大 | 欧美日本免费一区二区三区 | 无遮无挡爽爽免费视频 | 内射后入在线观看一区 | 国内综合精品午夜久久资源 | 国产精品久久久久久无码 | 国产麻豆精品一区二区三区v视界 | 四十如虎的丰满熟妇啪啪 | 亚洲成av人综合在线观看 | 久久国内精品自在自线 | 樱花草在线播放免费中文 | 精品国精品国产自在久国产87 | 骚片av蜜桃精品一区 | 成人免费视频在线观看 | 成人亚洲精品久久久久软件 | 精品无码av一区二区三区 | 玩弄中年熟妇正在播放 | 狠狠色丁香久久婷婷综合五月 | 少妇激情av一区二区 | 国精品人妻无码一区二区三区蜜柚 | 内射爽无广熟女亚洲 | 亚洲精品中文字幕乱码 | 99re在线播放 | 婷婷丁香六月激情综合啪 | 欧美人与物videos另类 | 成人无码精品一区二区三区 | 沈阳熟女露脸对白视频 | 亚洲精品国产品国语在线观看 | 97夜夜澡人人双人人人喊 | 国产一区二区不卡老阿姨 | 国产激情艳情在线看视频 | 99精品久久毛片a片 | 久久成人a毛片免费观看网站 | 激情亚洲一区国产精品 | 老熟女重囗味hdxx69 | 久久久久亚洲精品中文字幕 | 亚洲理论电影在线观看 | 巨爆乳无码视频在线观看 | 性欧美videos高清精品 | www国产亚洲精品久久网站 | 99riav国产精品视频 | 亚洲人成人无码网www国产 | 成人女人看片免费视频放人 | 国产午夜亚洲精品不卡下载 | 婷婷综合久久中文字幕蜜桃三电影 | 人妻无码αv中文字幕久久琪琪布 | 久久久久亚洲精品中文字幕 | 国产又爽又黄又刺激的视频 | 亚洲男人av香蕉爽爽爽爽 | 日本在线高清不卡免费播放 | 欧美激情内射喷水高潮 | 99国产欧美久久久精品 | 性啪啪chinese东北女人 | 丰满少妇熟乱xxxxx视频 | 欧美 丝袜 自拍 制服 另类 | 精品一区二区不卡无码av | 国产电影无码午夜在线播放 | 国产亚洲精品精品国产亚洲综合 | 成人无码视频在线观看网站 | 精品久久久久久亚洲精品 | 国产在线无码精品电影网 | 无码人妻出轨黑人中文字幕 | 一本色道婷婷久久欧美 | 久久精品女人天堂av免费观看 | 黑人大群体交免费视频 | 成人欧美一区二区三区黑人 | 无套内谢的新婚少妇国语播放 | 国产内射老熟女aaaa | 日韩少妇白浆无码系列 | 精品一区二区三区波多野结衣 | 无码一区二区三区在线 | 亚洲精品国产精品乱码不卡 | 色综合久久网 | 国模大胆一区二区三区 | 国内精品久久久久久中文字幕 | 狂野欧美性猛交免费视频 | 国产av人人夜夜澡人人爽麻豆 | 中文字幕乱码亚洲无线三区 | 玩弄少妇高潮ⅹxxxyw | 两性色午夜视频免费播放 | 精品国产一区av天美传媒 | 综合激情五月综合激情五月激情1 | 亚洲の无码国产の无码步美 | 免费无码的av片在线观看 | 日日橹狠狠爱欧美视频 | 久久aⅴ免费观看 | а√资源新版在线天堂 | 国产高潮视频在线观看 | 国产内射爽爽大片视频社区在线 | 人人爽人人澡人人人妻 | 亚洲国产欧美国产综合一区 | 国产亚洲tv在线观看 | 国产精品第一国产精品 | 精品久久久久久人妻无码中文字幕 | 天天摸天天透天天添 | 中文字幕无码视频专区 | 久久久亚洲欧洲日产国码αv | 亚洲成熟女人毛毛耸耸多 | 久激情内射婷内射蜜桃人妖 | 国产香蕉尹人视频在线 | 午夜精品久久久久久久 | 婷婷五月综合缴情在线视频 | 亚洲男人av香蕉爽爽爽爽 | 亚洲精品综合一区二区三区在线 | av无码久久久久不卡免费网站 | 一区二区三区乱码在线 | 欧洲 | 久久久久久a亚洲欧洲av冫 | 1000部啪啪未满十八勿入下载 | 久久精品中文字幕一区 | 人人澡人摸人人添 | 国精产品一品二品国精品69xx | 装睡被陌生人摸出水好爽 | 亚洲成av人片在线观看无码不卡 | 精品国偷自产在线视频 | 欧美人与物videos另类 | 熟女少妇人妻中文字幕 | 久久午夜夜伦鲁鲁片无码免费 | 妺妺窝人体色www在线小说 | 娇妻被黑人粗大高潮白浆 | 97夜夜澡人人爽人人喊中国片 | 免费国产成人高清在线观看网站 | 欧美 亚洲 国产 另类 | 强开小婷嫩苞又嫩又紧视频 | 久久99精品久久久久久动态图 | 成人精品视频一区二区 | 初尝人妻少妇中文字幕 | 欧美一区二区三区视频在线观看 | 欧美乱妇无乱码大黄a片 | 亚欧洲精品在线视频免费观看 | 国产人妻精品一区二区三区 | 香港三级日本三级妇三级 | 亚洲综合精品香蕉久久网 | 亚洲精品一区二区三区婷婷月 | 青青草原综合久久大伊人精品 | 性欧美熟妇videofreesex | 波多野结衣av一区二区全免费观看 | 最近免费中文字幕中文高清百度 | 高潮毛片无遮挡高清免费 | 色欲久久久天天天综合网精品 | 大肉大捧一进一出视频出来呀 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲无人区一区二区三区 | 国产农村妇女高潮大叫 | 免费人成网站视频在线观看 | 夜精品a片一区二区三区无码白浆 | 国内精品人妻无码久久久影院蜜桃 | 人人妻在人人 | 精品国精品国产自在久国产87 | 亚洲精品无码国产 | 欧美人与物videos另类 | 国产网红无码精品视频 | 国产成人精品无码播放 | 日韩在线不卡免费视频一区 | 中文字幕 亚洲精品 第1页 | 精品一区二区不卡无码av | 亚洲精品国产精品乱码不卡 | 无码人中文字幕 | 亚洲国产成人av在线观看 | 久久精品丝袜高跟鞋 | 成熟妇人a片免费看网站 | 亚洲成av人影院在线观看 | 一二三四在线观看免费视频 | 日韩av无码中文无码电影 | 亚洲精品成人av在线 | 在线看片无码永久免费视频 | 国产成人无码av在线影院 | 丰满少妇熟乱xxxxx视频 | 成年美女黄网站色大免费全看 | 成人欧美一区二区三区 | 丰满少妇人妻久久久久久 | 日本免费一区二区三区最新 | 人人妻人人藻人人爽欧美一区 | 国产精品无码一区二区桃花视频 | 欧美肥老太牲交大战 | 熟女俱乐部五十路六十路av | 亚洲午夜福利在线观看 | 国产精品沙发午睡系列 | 欧洲vodafone精品性 | 精品国产aⅴ无码一区二区 | 欧美激情一区二区三区成人 | 国产女主播喷水视频在线观看 | 国产av一区二区三区最新精品 | av无码不卡在线观看免费 | 日韩av无码中文无码电影 | 丰满妇女强制高潮18xxxx | 九九久久精品国产免费看小说 | 精品国产一区二区三区四区 | www一区二区www免费 | 未满小14洗澡无码视频网站 | 日产精品高潮呻吟av久久 | 女高中生第一次破苞av | 亚洲国产欧美日韩精品一区二区三区 | 亚洲熟女一区二区三区 | 少妇的肉体aa片免费 | 牲欲强的熟妇农村老妇女视频 | 成人性做爰aaa片免费看 | 天堂久久天堂av色综合 | 亚洲精品国产精品乱码不卡 | 又大又硬又爽免费视频 | 无码人妻精品一区二区三区不卡 | 亚洲日本一区二区三区在线 | 国产精品久免费的黄网站 | 国内精品人妻无码久久久影院 | 欧美乱妇无乱码大黄a片 | 国产精品视频免费播放 | 老熟妇乱子伦牲交视频 | 国产手机在线αⅴ片无码观看 | 国产精品久久久久久无码 | 久久精品99久久香蕉国产色戒 | 丰满人妻被黑人猛烈进入 | 伊人久久大香线蕉av一区二区 | 精品国产麻豆免费人成网站 | 国产亚洲精品久久久久久久久动漫 | 99久久99久久免费精品蜜桃 | 成在人线av无码免观看麻豆 | 久久久久99精品成人片 | 成人性做爰aaa片免费看 | 蜜桃av抽搐高潮一区二区 | 欧美日韩一区二区三区自拍 | 丰满人妻精品国产99aⅴ | 国产精品久久久av久久久 | 久久久久久久久蜜桃 | 国产乱码精品一品二品 | 国产午夜福利100集发布 | 亚洲人成影院在线观看 | 亚洲欧美色中文字幕在线 | 国产亚洲日韩欧美另类第八页 | 日韩 欧美 动漫 国产 制服 | 国产成人综合色在线观看网站 | 国精产品一品二品国精品69xx | 亚洲の无码国产の无码影院 | 亚洲s码欧洲m码国产av | 一本久道高清无码视频 | 国产人妻精品一区二区三区不卡 | 欧美人与动性行为视频 | 老熟妇乱子伦牲交视频 | 性欧美videos高清精品 | 日韩欧美成人免费观看 | 97se亚洲精品一区 | 亚洲va中文字幕无码久久不卡 | 狠狠cao日日穞夜夜穞av | 99re在线播放 | 老司机亚洲精品影院 | 99精品国产综合久久久久五月天 | 少妇久久久久久人妻无码 | 日本饥渴人妻欲求不满 | 国产成人精品无码播放 | 亚洲 日韩 欧美 成人 在线观看 | 少妇被粗大的猛进出69影院 | 国模大胆一区二区三区 | 特大黑人娇小亚洲女 | 国产午夜精品一区二区三区嫩草 | 丰满人妻一区二区三区免费视频 | 欧洲欧美人成视频在线 | 一二三四在线观看免费视频 | 男人和女人高潮免费网站 | 狂野欧美激情性xxxx | 亚洲综合无码一区二区三区 | 亚洲第一网站男人都懂 | 大地资源网第二页免费观看 | 又大又硬又爽免费视频 | 美女扒开屁股让男人桶 | 亚洲精品午夜国产va久久成人 | 国产九九九九九九九a片 | 国产精品久久久久久亚洲毛片 | 亚洲成色www久久网站 | av在线亚洲欧洲日产一区二区 | 亚洲精品鲁一鲁一区二区三区 | 日韩精品成人一区二区三区 | 狂野欧美性猛xxxx乱大交 | 国产亚洲精品久久久ai换 | 国产在线一区二区三区四区五区 | 18无码粉嫩小泬无套在线观看 | 精品国产精品久久一区免费式 | 熟妇女人妻丰满少妇中文字幕 | 国产精品久久久久久久影院 | 亚洲精品国产精品乱码不卡 | 亚洲精品综合一区二区三区在线 | 成人欧美一区二区三区黑人 | 午夜福利电影 | 水蜜桃色314在线观看 | 日韩精品久久久肉伦网站 | 日本一卡2卡3卡四卡精品网站 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 欧美黑人性暴力猛交喷水 | 亚洲精品综合五月久久小说 | 国产人妻人伦精品 | 亚洲毛片av日韩av无码 | 日韩av无码一区二区三区不卡 | 亚洲va欧美va天堂v国产综合 | 无码av中文字幕免费放 | 奇米影视7777久久精品人人爽 | 久久99精品久久久久久 | 俺去俺来也在线www色官网 | 久久久久久国产精品无码下载 | 麻豆成人精品国产免费 | 高潮毛片无遮挡高清免费 | 极品尤物被啪到呻吟喷水 | 亚拍精品一区二区三区探花 | 中文精品无码中文字幕无码专区 | 久久久久久久人妻无码中文字幕爆 | 男人扒开女人内裤强吻桶进去 | 成熟女人特级毛片www免费 | 久久综合激激的五月天 | 成人欧美一区二区三区黑人免费 | 色欲综合久久中文字幕网 | 欧美性猛交xxxx富婆 | 麻豆精品国产精华精华液好用吗 | 丰满少妇人妻久久久久久 | 亚洲s码欧洲m码国产av | 亚洲色欲久久久综合网东京热 | 男女猛烈xx00免费视频试看 | 内射后入在线观看一区 | 欧美三级a做爰在线观看 | 亚洲国产精品久久久天堂 | 国产精品99爱免费视频 | 色欲久久久天天天综合网精品 | 久久国内精品自在自线 | 久久综合香蕉国产蜜臀av | 麻豆国产人妻欲求不满 | 亚洲人成网站色7799 | 亚洲色在线无码国产精品不卡 | 亚洲码国产精品高潮在线 | 久久久久久久女国产乱让韩 | 日韩av无码中文无码电影 | 欧美zoozzooz性欧美 | 麻豆国产丝袜白领秘书在线观看 | 成人免费视频一区二区 | 波多野结衣高清一区二区三区 | 一本色道婷婷久久欧美 | 精品国产国产综合精品 | 亚洲日韩精品欧美一区二区 | 精品偷自拍另类在线观看 | 国产精品成人av在线观看 | 久久久精品欧美一区二区免费 | 日韩人妻无码一区二区三区久久99 | 熟妇激情内射com | 妺妺窝人体色www婷婷 | 亚洲熟妇色xxxxx亚洲 | 综合人妻久久一区二区精品 | 国产精品美女久久久网av | 亚洲欧美日韩国产精品一区二区 | 少妇人妻大乳在线视频 | 亚洲日韩一区二区三区 | 亚洲の无码国产の无码影院 | 初尝人妻少妇中文字幕 | 久久精品人人做人人综合 | 日本免费一区二区三区最新 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 蜜桃视频插满18在线观看 | 亚洲欧美精品伊人久久 | 久久亚洲中文字幕精品一区 | 婷婷色婷婷开心五月四房播播 | 无码毛片视频一区二区本码 | 丰满少妇高潮惨叫视频 | 欧洲vodafone精品性 | 亚洲色大成网站www | 丰满肥臀大屁股熟妇激情视频 | 国产午夜福利100集发布 | 国产综合久久久久鬼色 | 国产人妻精品午夜福利免费 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产又爽又猛又粗的视频a片 | 亚洲国产精品久久久久久 | 国产激情无码一区二区app | 色综合久久久久综合一本到桃花网 | 在线看片无码永久免费视频 | 亚洲精品久久久久中文第一幕 | 3d动漫精品啪啪一区二区中 | 东京无码熟妇人妻av在线网址 | 久久熟妇人妻午夜寂寞影院 | 无码免费一区二区三区 | 99久久久国产精品无码免费 | 无遮无挡爽爽免费视频 | 久久综合香蕉国产蜜臀av | 亚洲欧洲日本无在线码 | 人妻夜夜爽天天爽三区 | 一本大道久久东京热无码av | 国内揄拍国内精品人妻 | 中文字幕无线码免费人妻 | 国产成人综合美国十次 | 成人毛片一区二区 | 在线天堂新版最新版在线8 | 国产人妻久久精品二区三区老狼 | 无套内谢的新婚少妇国语播放 | 国产亚洲精品久久久久久久久动漫 | 人妻少妇精品视频专区 | 特大黑人娇小亚洲女 | 沈阳熟女露脸对白视频 | 激情内射日本一区二区三区 | 日本免费一区二区三区最新 | www国产亚洲精品久久久日本 | 狠狠cao日日穞夜夜穞av | 少妇无码一区二区二三区 | 精品厕所偷拍各类美女tp嘘嘘 | 欧美日韩在线亚洲综合国产人 | 亚洲精品中文字幕 | 中文字幕无码日韩欧毛 | 中文字幕无码日韩专区 | 欧美刺激性大交 | 55夜色66夜色国产精品视频 | 国产无套内射久久久国产 | 1000部夫妻午夜免费 | 久久久久久久人妻无码中文字幕爆 | 国产人妻精品午夜福利免费 | 国产办公室秘书无码精品99 | 色五月五月丁香亚洲综合网 | 久久精品国产大片免费观看 | 老司机亚洲精品影院无码 | 色综合久久久久综合一本到桃花网 | 久9re热视频这里只有精品 | 国产xxx69麻豆国语对白 | 夜夜高潮次次欢爽av女 | 中文字幕色婷婷在线视频 | 国产成人无码专区 | 国产精品丝袜黑色高跟鞋 | 亚洲一区二区三区四区 | 国产精品久久久久久亚洲毛片 | 久9re热视频这里只有精品 | 色 综合 欧美 亚洲 国产 | 久久久久se色偷偷亚洲精品av | 曰韩无码二三区中文字幕 | 精品一区二区三区无码免费视频 | 强奷人妻日本中文字幕 | 乱人伦人妻中文字幕无码久久网 | 国产午夜亚洲精品不卡下载 | 国产精品美女久久久网av | 三上悠亚人妻中文字幕在线 | 国产精品无套呻吟在线 | 一本久道久久综合狠狠爱 | 18禁止看的免费污网站 | 强伦人妻一区二区三区视频18 | 国产精品久久久久久亚洲影视内衣 | 日日摸天天摸爽爽狠狠97 | 国产在线一区二区三区四区五区 | 麻豆精产国品 | 日韩精品无码一区二区中文字幕 | 国内老熟妇对白xxxxhd | 日韩人妻系列无码专区 | 性欧美牲交xxxxx视频 | 波多野结衣一区二区三区av免费 | 久久国内精品自在自线 | 青春草在线视频免费观看 | 成 人影片 免费观看 | 天天摸天天碰天天添 | 久久精品人人做人人综合试看 | av无码电影一区二区三区 | 精品久久综合1区2区3区激情 | 国产成人无码一二三区视频 | 亲嘴扒胸摸屁股激烈网站 | 一本久道久久综合婷婷五月 | 日韩人妻无码一区二区三区久久99 | 一二三四在线观看免费视频 | 日欧一片内射va在线影院 | 无码国模国产在线观看 | 伊人久久大香线焦av综合影院 | 在线 国产 欧美 亚洲 天堂 | 国产人妻精品一区二区三区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产特级毛片aaaaaaa高清 | 国产精品鲁鲁鲁 | 国产一区二区三区四区五区加勒比 | 亚洲国产精华液网站w | 巨爆乳无码视频在线观看 | 欧美激情综合亚洲一二区 | 免费网站看v片在线18禁无码 | 丰满岳乱妇在线观看中字无码 | 国产精品18久久久久久麻辣 | 国产精品va在线观看无码 | 日日鲁鲁鲁夜夜爽爽狠狠 | 久久久久久国产精品无码下载 | 无码吃奶揉捏奶头高潮视频 | 国产成人精品无码播放 | 老熟妇仑乱视频一区二区 | 中文字幕无码乱人伦 | 四虎影视成人永久免费观看视频 | 蜜桃视频韩日免费播放 | 国产深夜福利视频在线 | 国产内射老熟女aaaa | 性欧美大战久久久久久久 | 久9re热视频这里只有精品 | 少妇久久久久久人妻无码 | 国产人妻精品一区二区三区不卡 | 国产成人无码专区 | 欧洲熟妇色 欧美 | 精品久久久久香蕉网 | 亚洲色成人中文字幕网站 | 粉嫩少妇内射浓精videos | 人人澡人摸人人添 | 亚洲精品综合一区二区三区在线 | 成人精品一区二区三区中文字幕 | 亚洲色欲久久久综合网东京热 | 国产人妻精品一区二区三区 | 影音先锋中文字幕无码 | 久久无码人妻影院 | 欧美35页视频在线观看 | 国产激情综合五月久久 | 欧美性猛交内射兽交老熟妇 | 麻豆成人精品国产免费 | 丰满少妇熟乱xxxxx视频 | 网友自拍区视频精品 | 亚洲欧美日韩综合久久久 | 任你躁国产自任一区二区三区 | 高清不卡一区二区三区 | 亚洲高清偷拍一区二区三区 | 乱人伦人妻中文字幕无码久久网 | 国产香蕉97碰碰久久人人 | 欧美刺激性大交 | 国产精品久久久久久无码 | 国内精品人妻无码久久久影院 | 女人和拘做爰正片视频 | 免费无码一区二区三区蜜桃大 | 日韩精品成人一区二区三区 | 国产精品美女久久久久av爽李琼 | 久久精品99久久香蕉国产色戒 | 国产舌乚八伦偷品w中 | 亚洲欧美中文字幕5发布 | 亚洲国产高清在线观看视频 | 欧美放荡的少妇 | 亚洲高清偷拍一区二区三区 | 真人与拘做受免费视频 | 中文字幕无码人妻少妇免费 | 亚洲最大成人网站 | 乱人伦人妻中文字幕无码 | 日本熟妇大屁股人妻 | 欧美日本日韩 | 中文字幕无码av激情不卡 | 亚洲国产午夜精品理论片 | 日本又色又爽又黄的a片18禁 | 国产女主播喷水视频在线观看 | 乱码av麻豆丝袜熟女系列 | 永久免费观看美女裸体的网站 | a片在线免费观看 | 少妇久久久久久人妻无码 | 国产综合在线观看 | 国产成人久久精品流白浆 | 久久久久久a亚洲欧洲av冫 | 色婷婷欧美在线播放内射 | 男女爱爱好爽视频免费看 | 中文字幕日韩精品一区二区三区 | 人妻有码中文字幕在线 | 婷婷丁香五月天综合东京热 | 亚洲s码欧洲m码国产av | 无码毛片视频一区二区本码 | 97夜夜澡人人爽人人喊中国片 | 午夜时刻免费入口 | 精品国产一区二区三区四区在线看 | 少妇被黑人到高潮喷出白浆 | 国产成人精品久久亚洲高清不卡 | 在线精品亚洲一区二区 | 国产美女精品一区二区三区 | 无码乱肉视频免费大全合集 | 国产精品美女久久久网av | 精品国产aⅴ无码一区二区 | 成 人 网 站国产免费观看 | 久久精品中文闷骚内射 | 最新国产乱人伦偷精品免费网站 | 国产亚洲精品久久久ai换 | 国内揄拍国内精品人妻 | 欧美亚洲日韩国产人成在线播放 | 久久99精品国产麻豆 | 久久这里只有精品视频9 | 欧美激情内射喷水高潮 | 丁香啪啪综合成人亚洲 | 九九久久精品国产免费看小说 | 色诱久久久久综合网ywww | 久久久无码中文字幕久... | 中文字幕乱妇无码av在线 | 国产精品久久久久久无码 | 俄罗斯老熟妇色xxxx | 免费无码一区二区三区蜜桃大 | 国产午夜亚洲精品不卡下载 | 午夜熟女插插xx免费视频 | 一个人看的视频www在线 | 荫蒂被男人添的好舒服爽免费视频 | 97人妻精品一区二区三区 | 丰满少妇高潮惨叫视频 | 久久综合给久久狠狠97色 | 久久久久久a亚洲欧洲av冫 | 亚洲精品一区二区三区在线 | av人摸人人人澡人人超碰下载 | 婷婷六月久久综合丁香 | 中文字幕人妻无码一夲道 | 国产成人无码av片在线观看不卡 | 亚洲人成无码网www | 国产午夜无码精品免费看 | 天堂а√在线地址中文在线 | 日韩精品乱码av一区二区 | 国产尤物精品视频 | 在线播放免费人成毛片乱码 | 欧美国产亚洲日韩在线二区 | 激情亚洲一区国产精品 | 日韩少妇内射免费播放 | 国产人妻人伦精品1国产丝袜 | 无码人妻黑人中文字幕 | 国产成人综合在线女婷五月99播放 | 日韩视频 中文字幕 视频一区 | 中文字幕色婷婷在线视频 | 亚洲热妇无码av在线播放 | 婷婷五月综合激情中文字幕 | 国产精品久久福利网站 | 在教室伦流澡到高潮hnp视频 | 女人被男人躁得好爽免费视频 | 精品无人区无码乱码毛片国产 | 无码国产激情在线观看 | 大地资源网第二页免费观看 | 国产精品毛多多水多 | 国产亚洲精品久久久闺蜜 | 动漫av一区二区在线观看 | 人人爽人人澡人人高潮 | 对白脏话肉麻粗话av | 亚洲国精产品一二二线 | 中文无码成人免费视频在线观看 | 国产成人精品三级麻豆 | 美女张开腿让人桶 | 无码帝国www无码专区色综合 | 国产美女极度色诱视频www | 亚洲成av人片天堂网无码】 | 中文久久乱码一区二区 | 中文字幕色婷婷在线视频 | 鲁大师影院在线观看 | 久精品国产欧美亚洲色aⅴ大片 | 又紧又大又爽精品一区二区 | 国产两女互慰高潮视频在线观看 | 国产精品美女久久久久av爽李琼 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产亚洲人成a在线v网站 | 国产午夜手机精彩视频 | 免费播放一区二区三区 | 特黄特色大片免费播放器图片 | 大乳丰满人妻中文字幕日本 | 7777奇米四色成人眼影 | 在线播放亚洲第一字幕 | 亚拍精品一区二区三区探花 | 亚洲午夜久久久影院 | aa片在线观看视频在线播放 | 巨爆乳无码视频在线观看 | 欧美激情一区二区三区成人 | 亚洲の无码国产の无码步美 | 老子影院午夜伦不卡 | 日韩视频 中文字幕 视频一区 | 久久亚洲中文字幕精品一区 | 国产农村乱对白刺激视频 | 免费乱码人妻系列无码专区 | 欧美日韩视频无码一区二区三 | 日本大香伊一区二区三区 | 久久久无码中文字幕久... | 欧美成人免费全部网站 | 男女超爽视频免费播放 | 青青久在线视频免费观看 | 国产熟妇高潮叫床视频播放 | 青青草原综合久久大伊人精品 | 亚洲精品国产精品乱码视色 | 国产一区二区三区四区五区加勒比 | 久久久久久久人妻无码中文字幕爆 | 色婷婷欧美在线播放内射 | 野外少妇愉情中文字幕 | 欧美猛少妇色xxxxx | 九九久久精品国产免费看小说 | 国产成人综合在线女婷五月99播放 | 国产成人无码av一区二区 | 国产成人一区二区三区别 | 午夜嘿嘿嘿影院 | 亚洲乱码国产乱码精品精 | 18黄暴禁片在线观看 | 久久亚洲a片com人成 | 国语精品一区二区三区 | 日日夜夜撸啊撸 | 在线成人www免费观看视频 | 亚洲色欲色欲天天天www | 亚洲色偷偷偷综合网 | 永久免费观看国产裸体美女 | 国内少妇偷人精品视频 | 人妻体内射精一区二区三四 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲自偷自拍另类第1页 | 婷婷六月久久综合丁香 | 内射欧美老妇wbb | 又黄又爽又色的视频 | 少妇的肉体aa片免费 | 成人综合网亚洲伊人 | 国产婷婷色一区二区三区在线 | 国产激情一区二区三区 | 性色欲情网站iwww九文堂 | 一本色道婷婷久久欧美 | 野狼第一精品社区 | 欧美激情一区二区三区成人 | 在教室伦流澡到高潮hnp视频 | 精品一二三区久久aaa片 | 中文亚洲成a人片在线观看 | 欧美黑人乱大交 | 亚洲欧美日韩国产精品一区二区 | 丰腴饱满的极品熟妇 | 国产国产精品人在线视 | 熟妇女人妻丰满少妇中文字幕 | aⅴ在线视频男人的天堂 | 日韩无套无码精品 | www国产亚洲精品久久久日本 | 中文字幕无码视频专区 | 又湿又紧又大又爽a视频国产 | 亚洲一区二区三区香蕉 | 亚洲日本va中文字幕 | 欧美丰满少妇xxxx性 | 国产香蕉尹人综合在线观看 | а√资源新版在线天堂 | 国产性生大片免费观看性 | 欧美丰满熟妇xxxx性ppx人交 | 国产偷抇久久精品a片69 | 老司机亚洲精品影院无码 | 色婷婷欧美在线播放内射 | 在线视频网站www色 | 国产精品无套呻吟在线 | 久久精品国产一区二区三区 | 人妻少妇被猛烈进入中文字幕 | 成人片黄网站色大片免费观看 | 国产性生大片免费观看性 | 精品国产国产综合精品 | 97久久国产亚洲精品超碰热 | 国产在线aaa片一区二区99 | 久久久久成人精品免费播放动漫 | 一个人看的www免费视频在线观看 | 久久久成人毛片无码 | 精品无码国产一区二区三区av | 亚洲中文字幕久久无码 | 色窝窝无码一区二区三区色欲 | 麻豆国产丝袜白领秘书在线观看 | 国产成人无码区免费内射一片色欲 | 精品人妻av区 | 日本熟妇乱子伦xxxx | 熟妇人妻中文av无码 | 精品成在人线av无码免费看 | 乱人伦人妻中文字幕无码久久网 | 色婷婷久久一区二区三区麻豆 | 少妇性荡欲午夜性开放视频剧场 | 日韩精品一区二区av在线 | 男人的天堂av网站 | 精品国产aⅴ无码一区二区 | 97久久国产亚洲精品超碰热 | 强奷人妻日本中文字幕 | 强奷人妻日本中文字幕 | 日韩人妻系列无码专区 | 亚洲色偷偷男人的天堂 | 午夜精品一区二区三区的区别 | 国产色xx群视频射精 | 欧美成人午夜精品久久久 | 牲欲强的熟妇农村老妇女 | 欧美熟妇另类久久久久久不卡 | 久久久中文久久久无码 | 在线观看国产一区二区三区 | 亚洲国产一区二区三区在线观看 | 女人被男人爽到呻吟的视频 | 黑人粗大猛烈进出高潮视频 | 中文字幕人妻无码一区二区三区 | 国产午夜无码视频在线观看 | 丝袜人妻一区二区三区 | 久久综合给合久久狠狠狠97色 | 成人影院yy111111在线观看 | 亚洲精品一区二区三区在线 | 国产av无码专区亚洲awww | 国产亚洲精品久久久久久国模美 | 亚洲精品久久久久avwww潮水 | 国产精品人妻一区二区三区四 | 精品午夜福利在线观看 | 国内精品久久久久久中文字幕 | 久久久久久亚洲精品a片成人 | 久久婷婷五月综合色国产香蕉 | 日日躁夜夜躁狠狠躁 | 精品日本一区二区三区在线观看 | 亚洲色无码一区二区三区 | аⅴ资源天堂资源库在线 | 国产精品.xx视频.xxtv | 国产欧美亚洲精品a | 99国产精品白浆在线观看免费 | 性欧美牲交xxxxx视频 | 亚洲爆乳精品无码一区二区三区 | 四十如虎的丰满熟妇啪啪 | 在线播放亚洲第一字幕 | 高清无码午夜福利视频 | 人人妻人人澡人人爽精品欧美 | 粗大的内捧猛烈进出视频 | 色五月丁香五月综合五月 | 久久zyz资源站无码中文动漫 | 国产午夜无码视频在线观看 | 天堂久久天堂av色综合 | 精品无人区无码乱码毛片国产 | 亚洲色www成人永久网址 | 亚洲综合在线一区二区三区 | 亚洲自偷精品视频自拍 | 一区二区传媒有限公司 | 国产精品鲁鲁鲁 | 老子影院午夜精品无码 | 日本又色又爽又黄的a片18禁 | 玩弄中年熟妇正在播放 | 十八禁真人啪啪免费网站 | 国产综合久久久久鬼色 | 欧美激情一区二区三区成人 | 性做久久久久久久久 | 亚洲色www成人永久网址 | 婷婷丁香六月激情综合啪 | 99国产欧美久久久精品 | 久久www免费人成人片 | 国产区女主播在线观看 | 欧美日韩亚洲国产精品 | 国产成人无码区免费内射一片色欲 | 激情综合激情五月俺也去 | 国产成人久久精品流白浆 | 国产精品高潮呻吟av久久4虎 | 精品国产aⅴ无码一区二区 | 精品欧美一区二区三区久久久 | 欧美人与动性行为视频 | 99久久精品无码一区二区毛片 | 亚洲国产欧美国产综合一区 | 国内精品九九久久久精品 | a片在线免费观看 | 夜夜夜高潮夜夜爽夜夜爰爰 | 成人av无码一区二区三区 | 亚洲日本va中文字幕 | 国产精品无码一区二区桃花视频 | 日韩欧美中文字幕公布 | 欧美日本精品一区二区三区 | 欧美人与动性行为视频 | 国产精品a成v人在线播放 | 国语自产偷拍精品视频偷 | 亚洲乱码日产精品bd | 欧美色就是色 | 高潮毛片无遮挡高清免费视频 | 久久精品国产日本波多野结衣 | 狠狠色丁香久久婷婷综合五月 | 国产情侣作爱视频免费观看 | 牲欲强的熟妇农村老妇女 | 亚洲娇小与黑人巨大交 | 天天躁日日躁狠狠躁免费麻豆 | 98国产精品综合一区二区三区 | 精品无码成人片一区二区98 | 一区二区传媒有限公司 | 亚洲欧洲无卡二区视頻 | 麻豆国产丝袜白领秘书在线观看 | 国产亚洲视频中文字幕97精品 | 在线观看国产一区二区三区 | 野狼第一精品社区 | 国产成人综合在线女婷五月99播放 | 熟女少妇人妻中文字幕 | 日韩成人一区二区三区在线观看 | 自拍偷自拍亚洲精品10p | 日本爽爽爽爽爽爽在线观看免 | √天堂资源地址中文在线 | 无码福利日韩神码福利片 | 国产精品久久久一区二区三区 | 亚洲七七久久桃花影院 | 99久久精品日本一区二区免费 | 午夜丰满少妇性开放视频 | 人人爽人人澡人人高潮 | 97精品人妻一区二区三区香蕉 | 亚洲精品一区二区三区四区五区 | 白嫩日本少妇做爰 | 中文亚洲成a人片在线观看 | 图片区 小说区 区 亚洲五月 | 人妻互换免费中文字幕 | 婷婷五月综合缴情在线视频 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲国产成人a精品不卡在线 | 野狼第一精品社区 | 亚洲 高清 成人 动漫 | 99麻豆久久久国产精品免费 | www成人国产高清内射 | 在线观看国产一区二区三区 | 99久久人妻精品免费二区 | 福利一区二区三区视频在线观看 | 夜夜影院未满十八勿进 | 黑人粗大猛烈进出高潮视频 | 亚洲一区二区三区国产精华液 | 精品欧美一区二区三区久久久 | 午夜精品一区二区三区的区别 | 国产9 9在线 | 中文 | 日韩精品一区二区av在线 | 疯狂三人交性欧美 | 久久久精品成人免费观看 | 亚洲国产欧美在线成人 | 奇米影视888欧美在线观看 | 男人扒开女人内裤强吻桶进去 | 国产精品永久免费视频 | 亚洲欧洲无卡二区视頻 | 国产精品无码久久av | 国产精品-区区久久久狼 | 狠狠综合久久久久综合网 | 给我免费的视频在线观看 | 国产精品久久精品三级 | 午夜精品久久久久久久久 | 麻花豆传媒剧国产免费mv在线 | 无码精品国产va在线观看dvd | 国产精品成人av在线观看 | 午夜精品一区二区三区在线观看 | 帮老师解开蕾丝奶罩吸乳网站 | 西西人体www44rt大胆高清 | 日韩人妻无码中文字幕视频 | 国产成人精品优优av | 亚洲一区av无码专区在线观看 | 亚洲乱码中文字幕在线 | 97夜夜澡人人爽人人喊中国片 | 18黄暴禁片在线观看 | 性欧美疯狂xxxxbbbb | 国产午夜手机精彩视频 | 中文字幕人妻无码一夲道 | 伊人久久大香线蕉av一区二区 | 精品人妻av区 | 日本又色又爽又黄的a片18禁 | 久久精品国产99精品亚洲 | 波多野结衣一区二区三区av免费 | 玩弄少妇高潮ⅹxxxyw | 成人无码精品1区2区3区免费看 | 99精品视频在线观看免费 | 中文无码成人免费视频在线观看 | 精品国产青草久久久久福利 | 日韩精品久久久肉伦网站 | 国产手机在线αⅴ片无码观看 | 国产无av码在线观看 | 国产色精品久久人妻 | 在线观看免费人成视频 | 国产亚洲精品久久久闺蜜 | 久久99热只有频精品8 | 国产人妻大战黑人第1集 | 午夜丰满少妇性开放视频 | 清纯唯美经典一区二区 | 无码精品人妻一区二区三区av | 亚洲精品综合一区二区三区在线 | 精品乱码久久久久久久 | 精品久久久久久人妻无码中文字幕 | 国产午夜无码视频在线观看 | 中文字幕乱码中文乱码51精品 | 亚洲一区二区三区香蕉 | 久久人人爽人人人人片 | 久久精品视频在线看15 | 亚洲色在线无码国产精品不卡 | 夜夜躁日日躁狠狠久久av | 亚洲精品中文字幕 | 日欧一片内射va在线影院 | 亚洲精品无码国产 | 久久久精品欧美一区二区免费 | 女高中生第一次破苞av | 牲欲强的熟妇农村老妇女 | 亚洲精品午夜无码电影网 | 国产内射爽爽大片视频社区在线 | 国内少妇偷人精品视频 | 欧美日韩一区二区综合 | 免费乱码人妻系列无码专区 | 国产午夜亚洲精品不卡下载 | 国产乱人偷精品人妻a片 | 亚洲中文字幕在线无码一区二区 | 国产区女主播在线观看 | 国产午夜无码精品免费看 | 最新国产麻豆aⅴ精品无码 | 永久免费观看美女裸体的网站 | 理论片87福利理论电影 | 日日碰狠狠丁香久燥 | 国产成人人人97超碰超爽8 | 强奷人妻日本中文字幕 | 久久久久久久人妻无码中文字幕爆 | 国产在线无码精品电影网 | 丝袜足控一区二区三区 | 亚洲日韩av一区二区三区中文 | 国产99久久精品一区二区 | 欧美亚洲日韩国产人成在线播放 | 高中生自慰www网站 | 人人爽人人爽人人片av亚洲 | 成人女人看片免费视频放人 | 无码国模国产在线观看 | av在线亚洲欧洲日产一区二区 | 亚洲一区二区三区含羞草 | 四虎国产精品免费久久 | 成人亚洲精品久久久久软件 | 久9re热视频这里只有精品 | 国产精品亚洲专区无码不卡 | 国产熟女一区二区三区四区五区 | 久久久久人妻一区精品色欧美 | 国内精品人妻无码久久久影院 | 久久99久久99精品中文字幕 | 日韩欧美中文字幕在线三区 | 亚洲日韩一区二区 | 国产av人人夜夜澡人人爽麻豆 | 成人亚洲精品久久久久软件 | 人妻与老人中文字幕 | 久久久成人毛片无码 | 国产色xx群视频射精 | 精品一区二区三区波多野结衣 | 成人精品一区二区三区中文字幕 | 日韩人妻系列无码专区 | 性生交大片免费看女人按摩摩 | 在线播放无码字幕亚洲 | 少妇无码一区二区二三区 | 小泽玛莉亚一区二区视频在线 | 国产乱子伦视频在线播放 | 亚洲中文字幕av在天堂 | 久久久中文字幕日本无吗 | 午夜无码人妻av大片色欲 | 天天躁夜夜躁狠狠是什么心态 | 在线欧美精品一区二区三区 | 亚洲精品综合五月久久小说 | 日本一卡2卡3卡四卡精品网站 | www国产精品内射老师 | 国产精品久久精品三级 | 蜜桃臀无码内射一区二区三区 | 亚洲色无码一区二区三区 | 欧美丰满少妇xxxx性 | 国产人妻大战黑人第1集 | 婷婷色婷婷开心五月四房播播 | 人人妻人人澡人人爽欧美一区九九 | 久久久久se色偷偷亚洲精品av | 欧美午夜特黄aaaaaa片 | 亚洲aⅴ无码成人网站国产app | 狂野欧美激情性xxxx | 亚洲精品久久久久久一区二区 | 性欧美熟妇videofreesex | 中文字幕乱码亚洲无线三区 | 国产偷抇久久精品a片69 | 狠狠躁日日躁夜夜躁2020 | 东京热一精品无码av | 最近的中文字幕在线看视频 | 国产精品成人av在线观看 | 中文字幕乱码人妻无码久久 | 国产成人无码av在线影院 | 欧美精品国产综合久久 | 任你躁在线精品免费 | 波多野结衣av一区二区全免费观看 | 亚洲理论电影在线观看 | 国产深夜福利视频在线 | а天堂中文在线官网 | 99精品国产综合久久久久五月天 | 久久久久av无码免费网 | 国产莉萝无码av在线播放 | 麻豆蜜桃av蜜臀av色欲av | 国产欧美熟妇另类久久久 | 午夜嘿嘿嘿影院 | 久久伊人色av天堂九九小黄鸭 | 久久久久久久女国产乱让韩 | 东北女人啪啪对白 | 台湾无码一区二区 | 九九热爱视频精品 | 欧美日韩久久久精品a片 | 在教室伦流澡到高潮hnp视频 | 日韩成人一区二区三区在线观看 | 国产九九九九九九九a片 | 精品国精品国产自在久国产87 | 一本久久a久久精品亚洲 | 四虎影视成人永久免费观看视频 | 国产肉丝袜在线观看 | 福利一区二区三区视频在线观看 | 青青青手机频在线观看 | 日产精品高潮呻吟av久久 | 亚洲成av人综合在线观看 | 国产极品视觉盛宴 | 美女张开腿让人桶 | 老熟女乱子伦 | aⅴ亚洲 日韩 色 图网站 播放 | 免费乱码人妻系列无码专区 | 少妇性俱乐部纵欲狂欢电影 | 亚洲日韩精品欧美一区二区 | 中文无码精品a∨在线观看不卡 | 国产成人无码av在线影院 | 久久无码专区国产精品s | 粗大的内捧猛烈进出视频 | 国产精品亚洲а∨无码播放麻豆 | 中文字幕人成乱码熟女app | 欧美猛少妇色xxxxx | 国产成人精品优优av | 中文字幕无码日韩欧毛 | 欧美激情内射喷水高潮 | 精品久久久无码人妻字幂 | 色一情一乱一伦一视频免费看 | 亚洲色无码一区二区三区 | 日本精品高清一区二区 | 国产午夜福利100集发布 | 精品国产一区二区三区四区 | 国产精品久久国产三级国 | 国产性生交xxxxx无码 | 国产艳妇av在线观看果冻传媒 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲综合无码久久精品综合 | 97精品国产97久久久久久免费 | 老子影院午夜伦不卡 | 亚洲综合伊人久久大杳蕉 | 无码福利日韩神码福利片 | 一本久久a久久精品vr综合 | 久久久久久九九精品久 | 亚洲精品一区二区三区四区五区 | 人妻少妇精品无码专区动漫 | 国产精品久免费的黄网站 | 中文无码伦av中文字幕 | 99麻豆久久久国产精品免费 | 欧美freesex黑人又粗又大 | 国产热a欧美热a在线视频 | 学生妹亚洲一区二区 | 永久免费精品精品永久-夜色 | 国产av无码专区亚洲awww | 图片小说视频一区二区 | 亚洲中文字幕无码一久久区 | 99久久精品日本一区二区免费 | 亚洲精品鲁一鲁一区二区三区 | 黑人玩弄人妻中文在线 | 在线观看免费人成视频 | 国产精品久久精品三级 | 国产精品久久久久久久影院 | 啦啦啦www在线观看免费视频 | 未满小14洗澡无码视频网站 | 中文字幕亚洲情99在线 | 熟妇人妻激情偷爽文 | 乱人伦人妻中文字幕无码 | 亚洲精品综合一区二区三区在线 | 一本久道久久综合婷婷五月 | 国产深夜福利视频在线 | 自拍偷自拍亚洲精品10p | 99视频精品全部免费免费观看 | 97色伦图片97综合影院 | 99国产欧美久久久精品 | 女人被男人爽到呻吟的视频 | 少妇太爽了在线观看 | 玩弄人妻少妇500系列视频 | 亚洲精品综合一区二区三区在线 | 日产精品99久久久久久 | 国产莉萝无码av在线播放 | 又紧又大又爽精品一区二区 | 任你躁国产自任一区二区三区 | 丰满少妇高潮惨叫视频 | 久久久久亚洲精品男人的天堂 | 久久www免费人成人片 | 性欧美videos高清精品 | 一本久久伊人热热精品中文字幕 | 国内精品人妻无码久久久影院蜜桃 | 国产一区二区三区日韩精品 | 久久精品人人做人人综合试看 | 中文字幕无码免费久久99 | 日日摸日日碰夜夜爽av | 午夜福利不卡在线视频 | 人妻少妇精品无码专区动漫 | 亚洲日韩av片在线观看 | 国产精品高潮呻吟av久久 | 妺妺窝人体色www在线小说 | 暴力强奷在线播放无码 | 曰本女人与公拘交酡免费视频 | 久久熟妇人妻午夜寂寞影院 | 中文字幕日韩精品一区二区三区 | av小次郎收藏 | 亚洲第一网站男人都懂 | 国产亚洲精品久久久久久久 | 少妇高潮喷潮久久久影院 | 国产成人一区二区三区别 | 人妻体内射精一区二区三四 | 亚洲欧美国产精品久久 | 亚洲欧美日韩综合久久久 | 亚洲人交乣女bbw | 内射后入在线观看一区 | 东京热男人av天堂 | 亚洲精品国偷拍自产在线麻豆 | 国产一区二区三区日韩精品 | 亚洲日韩av一区二区三区四区 | 亚洲中文字幕在线观看 | 欧美精品免费观看二区 | 久久久久久国产精品无码下载 | 久久国语露脸国产精品电影 | 久久精品视频在线看15 | 久久久无码中文字幕久... | 无码福利日韩神码福利片 | 精品国产成人一区二区三区 | 亚洲欧美国产精品久久 | 男女爱爱好爽视频免费看 | 中文字幕亚洲情99在线 | 丝袜人妻一区二区三区 | 狠狠色噜噜狠狠狠7777奇米 | 亚洲中文字幕无码中文字在线 | 久久久国产一区二区三区 | 国产精品沙发午睡系列 | 亚洲色偷偷男人的天堂 | 女人被爽到呻吟gif动态图视看 | 国产乡下妇女做爰 | 亚洲日本va中文字幕 | 国产精品亚洲综合色区韩国 | av人摸人人人澡人人超碰下载 | 一本久道久久综合狠狠爱 | 亚洲中文字幕无码一久久区 | 天堂久久天堂av色综合 | 日产精品99久久久久久 | 亚洲精品久久久久中文第一幕 | 男人扒开女人内裤强吻桶进去 | 亚洲精品久久久久久久久久久 | 精品水蜜桃久久久久久久 | 午夜精品久久久久久久久 | 亚洲国产精华液网站w | 久久久久亚洲精品男人的天堂 | 领导边摸边吃奶边做爽在线观看 | 天干天干啦夜天干天2017 | 亚洲国产精品久久人人爱 | 乱人伦人妻中文字幕无码 | 久久zyz资源站无码中文动漫 | 九九久久精品国产免费看小说 | 性欧美牲交在线视频 | 丰满肥臀大屁股熟妇激情视频 | 最近免费中文字幕中文高清百度 | 国产内射爽爽大片视频社区在线 | 日韩av无码中文无码电影 | 色窝窝无码一区二区三区色欲 | 亚洲人成网站色7799 | 亚洲精品久久久久久一区二区 | 图片区 小说区 区 亚洲五月 | 中文字幕 人妻熟女 | 久久 国产 尿 小便 嘘嘘 | 国产亚洲美女精品久久久2020 | 欧美精品无码一区二区三区 | 色 综合 欧美 亚洲 国产 | 亚洲色在线无码国产精品不卡 | 少妇性l交大片 | 国产熟妇高潮叫床视频播放 | 国产明星裸体无码xxxx视频 | 国产人妻精品一区二区三区 | 亚洲а∨天堂久久精品2021 | 精品无码国产一区二区三区av | 亚洲中文字幕无码一久久区 | 欧美刺激性大交 | 女人被男人躁得好爽免费视频 | 中国女人内谢69xxxxxa片 | 亚洲大尺度无码无码专区 | 精品久久久无码人妻字幂 | 国产av剧情md精品麻豆 | 亚洲国产精品毛片av不卡在线 | 天堂а√在线中文在线 | 4hu四虎永久在线观看 | 无码纯肉视频在线观看 | 亚洲欧美色中文字幕在线 | 久久久久亚洲精品男人的天堂 | 亚洲精品美女久久久久久久 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲熟女一区二区三区 | 一本久久a久久精品亚洲 | 亚洲成a人片在线观看无码 | 亚洲国产一区二区三区在线观看 | 无人区乱码一区二区三区 | 麻豆md0077饥渴少妇 | 国产福利视频一区二区 | 亚洲国产一区二区三区在线观看 | 亚洲精品欧美二区三区中文字幕 | 久久久久久久久蜜桃 | 色婷婷综合激情综在线播放 | 亚洲精品鲁一鲁一区二区三区 | 无码人妻少妇伦在线电影 | 日韩精品乱码av一区二区 | 色五月丁香五月综合五月 | 亚洲国产午夜精品理论片 | 国产午夜精品一区二区三区嫩草 | 国产特级毛片aaaaaa高潮流水 | 黄网在线观看免费网站 | 成人精品视频一区二区 | 亚洲人亚洲人成电影网站色 | 女人被男人躁得好爽免费视频 | 午夜性刺激在线视频免费 | 免费无码av一区二区 | 天天拍夜夜添久久精品大 | 大肉大捧一进一出视频出来呀 | 天堂久久天堂av色综合 | 无码人妻丰满熟妇区五十路百度 | 亚无码乱人伦一区二区 | 久久久久亚洲精品男人的天堂 | 水蜜桃亚洲一二三四在线 | 麻豆果冻传媒2021精品传媒一区下载 | 国产一区二区三区日韩精品 | 亚洲熟妇色xxxxx欧美老妇y | 国产色精品久久人妻 | 亚洲乱码日产精品bd | 内射白嫩少妇超碰 | 成人亚洲精品久久久久软件 | 亚洲 激情 小说 另类 欧美 | 免费国产成人高清在线观看网站 | 国产精品久久久久久久9999 | 成人无码精品一区二区三区 | 成人影院yy111111在线观看 | 精品无码成人片一区二区98 | 久久久中文久久久无码 | 精品国产一区二区三区四区在线看 | 国产成人无码区免费内射一片色欲 | 3d动漫精品啪啪一区二区中 | 久久精品中文字幕大胸 | 樱花草在线播放免费中文 | 无码国产乱人伦偷精品视频 | 红桃av一区二区三区在线无码av | 一个人免费观看的www视频 | 曰本女人与公拘交酡免费视频 | 欧美成人免费全部网站 | 国产亚洲视频中文字幕97精品 | 精品水蜜桃久久久久久久 | 成人av无码一区二区三区 | 人妻少妇精品无码专区动漫 | 久久精品国产99久久6动漫 | 波多野42部无码喷潮在线 | 国产精品理论片在线观看 | 2020久久香蕉国产线看观看 | 麻豆精品国产精华精华液好用吗 | 亚洲第一网站男人都懂 | 色综合久久网 | 久久久久se色偷偷亚洲精品av | 内射后入在线观看一区 | 国产一区二区不卡老阿姨 | 美女毛片一区二区三区四区 | 精品国产一区二区三区四区 | 99国产精品白浆在线观看免费 | 无码人妻精品一区二区三区下载 | 精品无人国产偷自产在线 | a在线观看免费网站大全 | 亚洲精品成a人在线观看 | 岛国片人妻三上悠亚 | 亚洲自偷自拍另类第1页 | 国产精品久久久午夜夜伦鲁鲁 | 狂野欧美性猛xxxx乱大交 | 四虎永久在线精品免费网址 | 无码av中文字幕免费放 | 亚洲国精产品一二二线 | 国产精品沙发午睡系列 | 亚洲欧洲日本综合aⅴ在线 | 亚洲综合在线一区二区三区 | 久久伊人色av天堂九九小黄鸭 | 成人无码视频免费播放 | 久久综合九色综合欧美狠狠 | 亚洲色在线无码国产精品不卡 | 爱做久久久久久 | 黑人玩弄人妻中文在线 | 免费视频欧美无人区码 | 青青草原综合久久大伊人精品 | 国产又爽又黄又刺激的视频 | 熟妇女人妻丰满少妇中文字幕 | 亚洲中文无码av永久不收费 | 亚洲人成影院在线无码按摩店 | 国产激情精品一区二区三区 | 99麻豆久久久国产精品免费 | 少妇厨房愉情理9仑片视频 | 久久99热只有频精品8 | 久久亚洲中文字幕精品一区 | 特级做a爰片毛片免费69 | 无套内射视频囯产 | 亚洲狠狠婷婷综合久久 | 强开小婷嫩苞又嫩又紧视频 | 中文字幕无码乱人伦 | 未满成年国产在线观看 | 久久久久久亚洲精品a片成人 | 欧美日韩一区二区三区自拍 | 午夜精品久久久内射近拍高清 | 国产成人精品一区二区在线小狼 | 久久久久久久人妻无码中文字幕爆 | 色婷婷香蕉在线一区二区 | 亚洲精品综合一区二区三区在线 | 亚洲综合精品香蕉久久网 | 久久精品国产一区二区三区肥胖 | 又大又硬又黄的免费视频 | 欧美乱妇无乱码大黄a片 | 麻豆人妻少妇精品无码专区 | 99国产欧美久久久精品 | 99久久99久久免费精品蜜桃 | 久久亚洲精品成人无码 | 国产在线精品一区二区三区直播 | 四虎4hu永久免费 | 国产精品va在线观看无码 | 久久午夜无码鲁丝片 | 国产精品第一区揄拍无码 | 欧美xxxx黑人又粗又长 | aa片在线观看视频在线播放 | 久在线观看福利视频 | 女人和拘做爰正片视频 | 亚洲狠狠婷婷综合久久 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久97精品久久久久久久不卡 | 熟妇女人妻丰满少妇中文字幕 | 中文字幕日韩精品一区二区三区 | 欧美丰满老熟妇xxxxx性 | 久久综合狠狠综合久久综合88 | 狠狠色噜噜狠狠狠狠7777米奇 | 色欲综合久久中文字幕网 | 四虎国产精品免费久久 | 永久免费观看美女裸体的网站 | 国产成人精品久久亚洲高清不卡 | 国产午夜亚洲精品不卡下载 | 日韩人妻系列无码专区 | 狠狠综合久久久久综合网 | 丰腴饱满的极品熟妇 | 无码中文字幕色专区 | 国产欧美熟妇另类久久久 | 色情久久久av熟女人妻网站 | 亚洲乱亚洲乱妇50p | 国产精品人人爽人人做我的可爱 | 日日鲁鲁鲁夜夜爽爽狠狠 | 色妞www精品免费视频 | 日韩精品久久久肉伦网站 | 日本一区二区三区免费高清 | 国产莉萝无码av在线播放 | 精品午夜福利在线观看 | 欧美日韩视频无码一区二区三 | 久久综合激激的五月天 | 亚洲狠狠婷婷综合久久 | 中文字幕+乱码+中文字幕一区 | 无码人妻出轨黑人中文字幕 | 久久国产自偷自偷免费一区调 | 国产精品18久久久久久麻辣 | 国产亚洲精品久久久久久大师 | 高潮毛片无遮挡高清免费 | 永久免费精品精品永久-夜色 | 狠狠综合久久久久综合网 | 在线观看欧美一区二区三区 | 亚洲日韩一区二区三区 | 久久久久亚洲精品男人的天堂 | 国产深夜福利视频在线 | 国产成人无码av片在线观看不卡 | 国产av久久久久精东av | 久久99久久99精品中文字幕 | 日韩人妻无码中文字幕视频 | 国精品人妻无码一区二区三区蜜柚 | 无码国产乱人伦偷精品视频 | 国产成人精品优优av | 久久aⅴ免费观看 | 黄网在线观看免费网站 | 亚洲gv猛男gv无码男同 | 欧美成人免费全部网站 | a片免费视频在线观看 | 久久久中文久久久无码 | 无码人妻久久一区二区三区不卡 | 亚洲aⅴ无码成人网站国产app | 亚洲精品中文字幕久久久久 | 女人高潮内射99精品 | 欧美xxxxx精品 | 亚洲成a人片在线观看无码3d | 麻豆精产国品 | 伊人久久大香线蕉亚洲 | 国产精品久久久午夜夜伦鲁鲁 | av无码久久久久不卡免费网站 | 天天燥日日燥 | 午夜精品久久久久久久久 | 亚洲成av人片在线观看无码不卡 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲精品www久久久 | 亚洲欧洲日本综合aⅴ在线 | 亚洲最大成人网站 | 无码国产色欲xxxxx视频 | 国产精品久久久午夜夜伦鲁鲁 | 欧美丰满少妇xxxx性 | √天堂资源地址中文在线 | 乌克兰少妇xxxx做受 | 亚洲欧美中文字幕5发布 | 色诱久久久久综合网ywww | √天堂中文官网8在线 | 亚洲经典千人经典日产 | 色婷婷av一区二区三区之红樱桃 | 欧美国产日产一区二区 | 帮老师解开蕾丝奶罩吸乳网站 | 国产熟妇另类久久久久 | 亚洲国产精品美女久久久久 | 妺妺窝人体色www在线小说 | 精品 日韩 国产 欧美 视频 | 骚片av蜜桃精品一区 | 中文字幕 人妻熟女 | 精品国产乱码久久久久乱码 | 国产色视频一区二区三区 | 一本久久a久久精品vr综合 | 小sao货水好多真紧h无码视频 | 性欧美videos高清精品 | 丰满肥臀大屁股熟妇激情视频 | 欧美国产日产一区二区 | 丁香花在线影院观看在线播放 | 少妇性俱乐部纵欲狂欢电影 | 在线观看欧美一区二区三区 | 亚洲精品国产a久久久久久 | 无码一区二区三区在线 | 人妻熟女一区 | 夜夜影院未满十八勿进 | 国语自产偷拍精品视频偷 | 少妇无套内谢久久久久 | 无码免费一区二区三区 | 无码吃奶揉捏奶头高潮视频 | 在线观看国产午夜福利片 | 在线观看国产午夜福利片 | 捆绑白丝粉色jk震动捧喷白浆 | 久久国产自偷自偷免费一区调 | 欧美日韩精品 | 荫蒂添的好舒服视频囗交 | 欧美肥老太牲交大战 | 久久精品人人做人人综合试看 | 国产麻豆精品一区二区三区v视界 | 中文毛片无遮挡高清免费 | 国产成人综合在线女婷五月99播放 | 精品国产一区二区三区四区在线看 | 国产在线一区二区三区四区五区 | 强奷人妻日本中文字幕 | 欧美人与牲动交xxxx | 麻豆国产人妻欲求不满 | 日本精品人妻无码77777 天堂一区人妻无码 | 97精品人妻一区二区三区香蕉 | 少妇无套内谢久久久久 | 久久综合色之久久综合 | 亚洲熟女一区二区三区 | 巨爆乳无码视频在线观看 | 欧美阿v高清资源不卡在线播放 | 欧美变态另类xxxx | 国产精品沙发午睡系列 | 久久久久99精品国产片 | 荡女精品导航 | 亚洲国产精品无码一区二区三区 | 伊在人天堂亚洲香蕉精品区 | 牲欲强的熟妇农村老妇女视频 | 亚洲精品国产品国语在线观看 | 4hu四虎永久在线观看 | 国产美女精品一区二区三区 | 国产精品久免费的黄网站 | 国产在线精品一区二区三区直播 | 无码任你躁久久久久久久 | 国产精品亚洲一区二区三区喷水 | 国产片av国语在线观看 | 乱人伦中文视频在线观看 | 大胆欧美熟妇xx | 国产情侣作爱视频免费观看 | 国产精品久久精品三级 | 小泽玛莉亚一区二区视频在线 | 捆绑白丝粉色jk震动捧喷白浆 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 亚洲国产精品无码久久久久高潮 | 亚洲日韩一区二区三区 | 在线看片无码永久免费视频 | 中文字幕人成乱码熟女app | 奇米影视7777久久精品 | 亚洲色欲色欲欲www在线 | 亚洲日本va午夜在线电影 | 内射欧美老妇wbb | 久久久久久a亚洲欧洲av冫 | 永久免费精品精品永久-夜色 | 午夜无码区在线观看 | 成年美女黄网站色大免费视频 | 国产极品美女高潮无套在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 爽爽影院免费观看 | 丰满人妻一区二区三区免费视频 | 国产精品无套呻吟在线 | 少妇性荡欲午夜性开放视频剧场 | 亚洲欧洲无卡二区视頻 | 国产偷自视频区视频 | 亚洲综合无码一区二区三区 | 欧美老妇与禽交 | 国产午夜亚洲精品不卡 | 熟妇人妻中文av无码 | 99久久精品午夜一区二区 | 男人的天堂av网站 | 国产成人综合在线女婷五月99播放 | 三级4级全黄60分钟 | 少妇无套内谢久久久久 | 国产精品亚洲lv粉色 | 日本成熟视频免费视频 | 国产成人亚洲综合无码 | 久久精品无码一区二区三区 | 美女张开腿让人桶 | 88国产精品欧美一区二区三区 | 风流少妇按摩来高潮 | 久久无码专区国产精品s | 精品国产一区二区三区四区 | 最近免费中文字幕中文高清百度 | 激情五月综合色婷婷一区二区 | 国产绳艺sm调教室论坛 | 一个人看的www免费视频在线观看 | 亚洲乱码日产精品bd | 精品亚洲成av人在线观看 | 亚洲成a人片在线观看无码 | 国产精品亚洲五月天高清 | 成在人线av无码免观看麻豆 | 一本久道久久综合狠狠爱 | 亚洲中文字幕在线观看 | 久久午夜无码鲁丝片秋霞 | 熟妇人妻激情偷爽文 | 日韩无码专区 | 亚洲综合色区中文字幕 | 亚洲小说图区综合在线 | 国产精品高潮呻吟av久久 | 亚洲无人区午夜福利码高清完整版 | 国产真人无遮挡作爱免费视频 | 国产午夜精品一区二区三区嫩草 | 国产av一区二区三区最新精品 | 国产色在线 | 国产 | 黑人巨大精品欧美黑寡妇 | 色综合久久网 | 精品国产av色一区二区深夜久久 | 少妇一晚三次一区二区三区 | 天天摸天天透天天添 | 欧美zoozzooz性欧美 | 曰本女人与公拘交酡免费视频 | 最新版天堂资源中文官网 | 久久精品女人天堂av免费观看 | 欧美性生交活xxxxxdddd | 欧美zoozzooz性欧美 | 日本大乳高潮视频在线观看 | 美女扒开屁股让男人桶 |