成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

大數據 數據分析 后端
本數據集共收集了發生在一個月內的28010條數據,包含以下字段: ['訂單編號', '總金額', '買家實際支付金額', '收貨地址', '訂單創建時間', '訂單付款時間 ', '退款金額']。

數據集簡介

本數據集共收集了發生在一個月內的28010條數據,包含以下字段:

  • ['訂單編號', '總金額', '買家實際支付金額', '收貨地址', '訂單創建時間', '訂單付款時間 ', '退款金額']

7個字段說明:

  • 訂單編號:訂單編號;
  • 總金額:訂單總金額;
  • 買家實際支付金額:總金額 - 退款金額(在已付款的情況下)。金額為0(在未付款的情況下);
  • 收貨地址:各個省份;
  • 訂單創建時間:下單時間;
  • 訂單付款時間:付款時間;
  • 退款金額:付款后申請退款的金額。如無付過款,退款金額為0。

數據概覽: 

Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

相關庫、函數和數據的導入

  1. # 相關庫和函數的導入 
  2.  
  3. import numpy as np 
  4. from sklearn import metrics 
  5. import math 
  6. import copy 
  7. import pandas as pd           
  8. import scipy as sp導入常用的基本庫 
  9.  
  10. import datetime as date                                 # 導入datetime庫 
  11. import seaborn as sns                                   # 導入seaborn庫,用于數據可視化 
  12. from IPython.display import display                     # 載入數據查看時需要使用的函數 
  13. from sklearn.model_selection import train_test_split    # 導入數據集劃分時需要使用的函數 
  14. from sklearn.metrics import confusion_matrix            # 導入生成混淆矩陣的函數 
  15. from sklearn.preprocessing import LabelEncoder          # 導入分類變量編碼時需要使用的函數 
  16. from sklearn.metrics import classification_report       # 導入分類結果評價時要用到的函數 
  17.  
  18. from sklearn.discriminant_analysis import LinearDiscriminantAnalysis     # 導入LDA判別時需要使用的函數 
  19. from sklearn.naive_bayes import MultinomialNB           # 導入樸素貝葉斯時需要使用的額函數 
  20. from sklearn.neighbors import KNeighborsClassifier      # 導入KNN判別時需要使用的函數 
  21. from sklearn.tree import DecisionTreeClassifier         # 導入決策樹函數 
  22. from sklearn.neural_network import MLPClassifier        # 導入神經網絡函數 
  23. from sklearn import svm                                 # 導入支持向量機函數 
  24.  
  25. from sklearn.model_selection import GridSearchCV        # 導入模型優化方法中的網格搜索法需要用到的函數 
  26. from sklearn.cross_validation import KFold              # 導入模型評估時使用的函數 
  27.  
  28. # 數據導入 
  29.  
  30. dt = pd.read_csv('D:資料/數據分析/數據分析與數據挖掘/實戰演練/5(tmall_order_report)/tmall_order_report.csv',encoding='gbk',engine='python'

數據檢查與清洗

首先,查看一下數據集的變量類型:

  1. dt.dtypes                                               # 查看數據集有哪些變量  
Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

然后,將變量中右側的空格去除(以免影響后續調用變量),并進行重復值和缺失值檢查:

  1. dt.columns = dt.columns.str.rstrip()                    # 去除列名右側的空格 
  2. dt.duplicated().sum()                                   # 檢查數據是否有重復值,發現并沒有重復值 
  3. display(sum(dt.isnull().sum()))                         # 檢查數據集是否有缺失值  
Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

檢查出來有缺失值(約占數據總量的12-15%),考慮原數據中是否是因為“訂單付款時間”這一列存在缺失值而導致產生這樣的檢查結果:

  1. col = dt.columns.values.tolist()                        # 提取數據集中的所有列變量的名稱 
  2. col.remove('訂單付款時間')                               # 將訂單付款時間這一列去除 
  3. display(sum(dt[col].isnull().sum()))                    # 再次檢查是否有缺失值,發現并沒有缺失值,也就是缺失值均來自“訂單付款時間”這一列  
Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

結果表明,缺失值僅來自“訂單付款時間”這一列。接下來就是處理缺失值,處理的思路可以是先計算出各訂單付款時間和下單時間的平均值,然后用下單時間 + 平均值,作為缺失值的填補對象:

  1. c = np.array(['訂單創建時間','訂單付款時間'])             # 提取訂單創建時間、付款時間這兩列的列名 
  2. for i in c: 
  3.     dt[i] = pd.to_datetime(dt[i])                       # 將訂單創建時間、付款時間由object類型轉為datetime類型,方便運算 
  4. for i in range(0,dt.shape[0]): 
  5.     if (dt['訂單付款時間'].iloc[i] < dt['訂單創建時間'].iloc[i]) == True
  6.         dt['訂單付款時間'].iloc[i] = dt['訂單付款時間'].iloc[i] + date.timedelta(days=1)     # 將訂單付款時間 < 訂單創建時間的時間數據往后加1天(因為原數據中沒有考慮日期差異情況)  
  7. mu = np.mean(dt['訂單付款時間']-dt['訂單創建時間'])       # 計算時間差的均值,用于之后進行缺失值替換 
  8. for i in range(0,dt.shape[0]): 
  9.     if pd.isnull(dt['訂單付款時間'].iloc[i]) == True:    # 進行缺失值填補 
  10.         dt['訂單付款時間'].iloc[i] = dt['訂單創建時間'].iloc[i] + mu 

在填補完成之后,再次檢查缺失值和重復值的情況:

  1. display(sum(dt.isnull().sum()))                         # 再次檢查數據集是否有缺失值,發現已經處理完了,但是還要檢查是否增加正確 
  2. display(dt.duplicated().sum())                          # 再次檢查數據是否有重復值,發現并沒有重復值,發現也沒有重復值 
Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

結果顯示已經沒有缺失值和重復值了。

描述性分析

首先,對訂單總金額進行描述性分析:

  1. display(dt['總金額'].describe())                        # 查看訂單總金額的情況,發現最大的訂單價格達到了188320元,最小的則只有1元,平均訂單價為107元左右  
Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

從描述統計的結果中可以看到,最大的訂單價格達到了188320元,最小的只有1元,平均訂單價在107元左右,中位數為1元,說明應該是一個左偏分布,即大部分訂單的價格應該都不高。然后查看買家實際支付金額為0(支付未完成)的訂單比例:

  1. sum(dt['買家實際支付金額']==0) / dt.shape[0]             # 查看買家實際支付金額為0(也就是支付未完成)的訂單比例,占比約為32.3%  
Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

從結果中可以看到,大概有32.3%的買家未完成支付,這一比例還是比較高的。再看看訂單付款時間相比于訂單創建時間的延遲情況:

  1. display((dt['訂單付款時間']-dt['訂單創建時間']).describe())     # 查看訂單付款時間相比于訂單創建時間的延遲情況,發現最慢的支付延遲了接近1天,而大部分訂單在10分鐘內就完成了支付 

 Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

從中可以看到,最慢的支付延遲了接近1天,而大部分訂單在10分鐘內就完成了支付。最后,來對收貨地址情況進行描述性分析:

  1. siz = dt.groupby(dt['收貨地址']).size()                 # 對收貨地址進行分組統計 
  2. idx_sort = np.argsort(-siz)                            # 對分組統計的結果進行降序排序 
  3. display(siz[idx_sort].head())                          # 查看降序排序的結果的前5名,發現收貨地址選擇上海、廣東、江蘇、浙江、北京的最多 
  4. siz[idx_sort].tail()                                   # 查看降序排序的結果的最后5名,發現收貨地址選擇湖北、新疆、寧夏、青海和西藏的最少,其中湖北可能受疫情影響所致 
Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

從結果中可以看到,收貨地址選擇上海、廣東、江蘇、浙江、北京的最多,而選湖北、新疆、寧夏、青海和西藏的最少,其中湖北可能受疫情影響所致。

建模預處理

首先,進行特征構建,并生成用于建模的數據集,處理過程如下:

  1. d1 = (dt['訂單付款時間']-dt['訂單創建時間'])            # 輸出訂單付款和創建之間的時間差,作為一個新變量 
  2. d1 = (d1 / np.timedelta64(1, 's')).astype(int)        # 將時間差的格式進行轉換,轉換為按秒計數,并把格式變為int類型 
  3. le_train = LabelEncoder()                             # 使用從sklearn.preprocessing中import的LabelEncoder對分類數據進行編碼,以便于后續使用交叉驗證建模  
  4. le_train.fit(dt['收貨地址'].tolist())                  # 對模型進行訓練 
  5. d2 = le_train.transform(dt['收貨地址'].tolist())       # 轉化數據,作為第2個變量 
  6. d3 = np.zeros(dt.shape[0])                            # 構建一個全為0的數組 
  7. for i in range(0,dt.shape[0]): 
  8.     if (dt['總金額'].iloc[i]-dt['買家實際支付金額'].iloc[i]) == dt['退款金額'].iloc[i]: 
  9.         d3[i] = 1                                     # 生成一個新變量(類別變量),當買家有支付(無論退不退款)時為1,沒有支付時為0(無支付時上述等式不成立,實際支付金額和退款金額均為0),表明支付的情況 
  10. dt_use = np.vstack((d1,d2,d3)).T                      # 生成用于建模分析的數據集,np.vstack用于數組的垂直連接   

然后是對數據集進行劃分,形成訓練集和測試集,為之后的建模做準備:

  1. x_train,x_test, y_train, y_test = train_test_split(dt_use[:,0:2],dt_use[:,2:3],test_size=0.25, random_state=0)     # 使用從sklearn.model_selection中import的train_test_split函數進行訓練集、測試集的劃分 
  2. print('訓練集的自變量數據的維度',x_train.shape) 
  3. print('訓練集的因變量量數據的維度',x_test.shape) 
  4. print('測試集的自變量數據的維度',y_train.shape)           
  5. print('測試集的因變量數據的維度',y_test.shape)          # 查看數據集劃分后的維度情況  
Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

數據建模

首先,構建初始的模型,這里完成的是分類預測任務,選擇經典的幾個模型,分別是 SVM、LDA、樸素貝葉斯NB、KNN判別、決策樹Detree和神經網絡Network:

  1. models = {}                                           # 構建一個models集合 
  2. models['SVM'] = svm.SVC()                             # 支持向量機模型 
  3. models['LDA'] = LinearDiscriminantAnalysis()          # LDA判別模型 
  4. models['NB'] = MultinomialNB()                        # 樸素貝葉斯模型 
  5. models['KNN'] = KNeighborsClassifier()                # KNN判別模型 
  6. models['Detree'] = DecisionTreeClassifier()           # 決策樹模型 
  7. models['Network'] = MLPClassifier()                   # 神經網絡模型 

然后,對模型進行訓練和分析:

  1. target_names = ['有支付','沒有支付']                   # 生成類別的名稱 
  2. for key in models: 
  3.     models[key].fit(x_train,y_train)                  # 模型訓練 
  4.     display(confusion_matrix(y_test,models[key].predict(x_test)))                                               # 對y_test進行預測,輸出混淆矩陣 
  5.     print(classification_report(y_test,models[key].predict(x_test),target_names=target_names))                  # 對y_test進行預測,輸出預測的分類評價 
  6.     print('\n')    

SVM模型的混淆矩陣和準確率: 

Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

LDA模型的混淆矩陣和準確率: 

Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

樸素貝葉斯NB模型的混淆矩陣和準確率: 

Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

KNN判別模型的混淆矩陣和準確率: 

Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

決策樹Detree模型的混淆矩陣和準確率: 

Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

神經網絡Network模型的混淆矩陣和準確率: 

Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

從上述結果中可以看到,SVM和KNN的準確率較高。下面對樸素貝葉斯NB模型進行調參,看是否能改善其預測準確率:

  1. param_grid_nb = {'alpha':[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]}    # 設定貝葉斯模型中不同alpha值 
  2. model_nb_ty = MultinomialNB()                          # 設定貝葉斯的模型 
  3. kfold = KFold(10, 6)                                   # 采用10折交叉驗證,初始隨機起點為6 
  4. grid = GridSearchCV(estimator=model_nb_ty,  
  5.                     param_grid=param_grid_nb, scoring='neg_mean_squared_error', cv=kfold)         # 設置網格搜索的模型 
  6. grid_result = grid.fit(x_train, y_train)               # 利用構建好的模型對數據集進行訓練,搜索最優的k值 
  7. print('最優:%s 使用%s' % (grid_result.best_score_, grid_result.best_params_))                     # 輸出最優的參數情況 
  8. nb_model = MultinomialNB(alpha=0)                      # 根據模型調參的結果,重新設定樸素貝葉斯模型 
  9. nb_model.fit(x_train,y_train)                          # 模型訓練 
  10. display(confusion_matrix(y_test,nb_model.predict(x_test)))                                        # 對y_test進行預測,輸出混淆矩陣 
  11. print(classification_report(y_test,nb_model.predict(x_test),target_names=target_names))           # 對y_test進行預測,輸出預測的分類評價,發現并沒有什么改進  
Python數據分析難?手把手教你處理上萬條京東訂單數據(附源碼)

調參后的結果和調參前并沒有多少改善,說明NB模型在本次預測中受限于數據情況,而不是模型參數。

最后放上全過程的代碼,供大家學習使用:

  1. ### 數據分析前期準備工作 ### 
  2.  
  3. # 相關庫和函數的導入 
  4.  
  5. import numpy as np 
  6. from sklearn import metrics 
  7. import math 
  8. import copy 
  9. import pandas as pd           
  10. import scipy as sp 
  11. import matplotlib.pyplot as plt               # 導入常用的基本庫 
  12.  
  13. import datetime as date                                 # 導入datetime庫 
  14. import seaborn as sns                                   # 導入seaborn庫,用于數據可視化 
  15. from IPython.display import display                     # 載入數據查看時需要使用的函數 
  16. from sklearn.model_selection import train_test_split    # 導入數據集劃分時需要使用的函數 
  17. from sklearn.metrics import confusion_matrix            # 導入生成混淆矩陣的函數 
  18. from sklearn.preprocessing import LabelEncoder          # 導入分類變量編碼時需要使用的函數 
  19. from sklearn.metrics import classification_report       # 導入分類結果評價時要用到的函數   
  20.  
  21. from sklearn.discriminant_analysis import LinearDiscriminantAnalysis     # 導入LDA判別時需要使用的函數 
  22. from sklearn.naive_bayes import MultinomialNB           # 導入樸素貝葉斯時需要使用的額函數 
  23. from sklearn.neighbors import KNeighborsClassifier      # 導入KNN判別時需要使用的函數 
  24. from sklearn.tree import DecisionTreeClassifier         # 導入決策樹函數 
  25. from sklearn.neural_network import MLPClassifier        # 導入神經網絡函數 
  26. from sklearn import svm                                 # 導入支持向量機函數 
  27.  
  28. from sklearn.model_selection import GridSearchCV        # 導入模型優化方法中的網格搜索法需要用到的函數 
  29. from sklearn.cross_validation import KFold              # 導入模型評估時使用的函數 
  30.  
  31. # 全局設定 
  32.  
  33. plt.rcParams['font.sans-serif']=['SimHei']              # 設定中文字符的顯示設定 
  34.  
  35. # 數據導入 
  36.  
  37. dt = pd.read_csv('D:資料/數據分析/數據分析與數據挖掘/實戰演練/5(tmall_order_report)/tmall_order_report.csv',encoding='gbk',engine='python'
  38.  
  39.  
  40.  
  41. ### 數據整理與查看 ### 
  42.  
  43. # 數據檢查與清洗 
  44.  
  45. dt.dtypes                                               # 查看數據集有哪些變量 
  46.  
  47. dt.columns = dt.columns.str.rstrip()                    # 去除列名右側的空格 
  48.  
  49. dt.duplicated().sum()                                   # 檢查數據是否有重復值,發現并沒有重復值 
  50.  
  51. display(sum(dt.isnull().sum()))                         # 檢查數據集是否有缺失值 
  52.  
  53. col = dt.columns.values.tolist()                        # 提取數據集中的所有列變量的名稱 
  54.  
  55. col.remove('訂單付款時間')                               # 將訂單付款時間這一列去除 
  56.  
  57. display(sum(dt[col].isnull().sum()))                    # 再次檢查是否有缺失值,發現并沒有缺失值,也就是缺失值均來自“訂單付款時間”這一列 
  58.  
  59. c = np.array(['訂單創建時間','訂單付款時間'])             # 提取訂單創建時間、付款時間這兩列的列名 
  60.  
  61. for i in c: 
  62.     dt[i] = pd.to_datetime(dt[i])                       # 將訂單創建時間、付款時間由object類型轉為datetime類型,方便運算 
  63.  
  64. for i in range(0,dt.shape[0]): 
  65.     if (dt['訂單付款時間'].iloc[i] < dt['訂單創建時間'].iloc[i]) == True
  66.         dt['訂單付款時間'].iloc[i] = dt['訂單付款時間'].iloc[i] + date.timedelta(days=1)     # 將訂單付款時間 < 訂單創建時間的時間數據往后加1天(因為原數據中沒有考慮日期差異情況)  
  67.  
  68. mu = np.mean(dt['訂單付款時間']-dt['訂單創建時間'])       # 計算時間差的均值,用于之后進行缺失值替換 
  69.  
  70. for i in range(0,dt.shape[0]): 
  71.     if pd.isnull(dt['訂單付款時間'].iloc[i]) == True:    # 進行缺失值填補 
  72.         dt['訂單付款時間'].iloc[i] = dt['訂單創建時間'].iloc[i] + mu 
  73.  
  74. display(sum(dt.isnull().sum()))                         # 再次檢查數據集是否有缺失值,發現已經處理完了,但是還要檢查是否增加正確 
  75.  
  76. display(dt.duplicated().sum())                          # 再次檢查數據是否有重復值,發現并沒有重復值,發現也沒有重復值 
  77.  
  78. # 描述性分析 
  79.  
  80. display(dt['總金額'].describe())                        # 查看訂單總金額的情況,發現最大的訂單價格達到了188320元,最小的則只有1元,平均訂單價為107元左右 
  81.  
  82. sum(dt['買家實際支付金額']==0) / dt.shape[0]             # 查看買家實際支付金額為0(也就是支付未完成)的訂單比例,占比約為32.3% 
  83.  
  84. display((dt['訂單付款時間']-dt['訂單創建時間']).describe())     # 查看訂單付款時間相比于訂單創建時間的延遲情況,發現最慢的支付延遲了接近1天,而大部分訂單在10分鐘內就完成了支付 
  85.  
  86. siz = dt.groupby(dt['收貨地址']).size()                 # 對收貨地址進行分組統計 
  87. idx_sort = np.argsort(-siz)                            # 對分組統計的結果進行降序排序 
  88. display(siz[idx_sort].head())                          # 查看降序排序的結果的前5名,發現收貨地址選擇上海、廣東、江蘇、浙江、北京的最多 
  89. siz[idx_sort].tail()                                   # 查看降序排序的結果的最后5名,發現收貨地址選擇湖北、新疆、寧夏、青海和西藏的最少,其中湖北可能受疫情影響所致 
  90.  
  91.  
  92.  
  93. ### 建模預處理 ### 
  94.  
  95. # 特征構建 
  96.  
  97. d1 = (dt['訂單付款時間']-dt['訂單創建時間'])            # 輸出訂單付款和創建之間的時間差,作為一個新變量 
  98. d1 = (d1 / np.timedelta64(1, 's')).astype(int)        # 將時間差的格式進行轉換,轉換為按秒計數,并把格式變為int類型 
  99.  
  100. le_train = LabelEncoder()                             # 使用從sklearn.preprocessing中import的LabelEncoder對分類數據進行編碼,以便于后續使用交叉驗證建模  
  101. le_train.fit(dt['收貨地址'].tolist())                  # 對模型進行訓練 
  102. d2 = le_train.transform(dt['收貨地址'].tolist())       # 轉化數據,作為第2個變量 
  103.  
  104. d3 = np.zeros(dt.shape[0])                            # 構建一個全為0的數組 
  105.  
  106. for i in range(0,dt.shape[0]): 
  107.     if (dt['總金額'].iloc[i]-dt['買家實際支付金額'].iloc[i]) == dt['退款金額'].iloc[i]: 
  108.         d3[i] = 1                                     # 生成一個新變量(類別變量),當買家有支付(無論退不退款)時為1,沒有支付時為0(無支付時上述等式不成立,實際支付金額和退款金額均為0),表明支付的情況 
  109.  
  110. dt_use = np.vstack((d1,d2,d3)).T                      # 生成用于建模分析的數據集,np.vstack用于數組的垂直連接    
  111.  
  112. # 數據集劃分 
  113.  
  114. x_train,x_test, y_train, y_test = train_test_split(dt_use[:,0:2],dt_use[:,2:3],test_size=0.25, random_state=0)     # 使用從sklearn.model_selection中import的train_test_split函數進行訓練集、測試集的劃分 
  115.  
  116. print('訓練集的自變量數據的維度',x_train.shape) 
  117. print('訓練集的因變量量數據的維度',x_test.shape) 
  118. print('測試集的自變量數據的維度',y_train.shape)           
  119. print('測試集的因變量數據的維度',y_test.shape)          # 查看數據集劃分后的維度情況 
  120.  
  121.  
  122.  
  123. ### 數據建模 ### 
  124.  
  125. # 初始模型構建 
  126.  
  127. models = {}                                           # 構建一個models集合 
  128.  
  129. models['SVM'] = svm.SVC()                             # 支持向量機模型 
  130.  
  131. models['LDA'] = LinearDiscriminantAnalysis()          # LDA判別模型 
  132.  
  133. models['NB'] = MultinomialNB()                        # 樸素貝葉斯模型 
  134.  
  135. models['KNN'] = KNeighborsClassifier()                # KNN判別模型 
  136.  
  137. models['Detree'] = DecisionTreeClassifier()           # 決策樹模型 
  138.  
  139. models['Network'] = MLPClassifier()                   # 神經網絡模型 
  140.  
  141. # 模型訓練與分析 
  142.  
  143. target_names = ['有支付','沒有支付']                   # 生成類別的名稱 
  144.  
  145. for key in models: 
  146.     models[key].fit(x_train,y_train)                  # 模型訓練 
  147.     display(confusion_matrix(y_test,models[key].predict(x_test)))                                               # 對y_test進行預測,輸出混淆矩陣 
  148.     print(classification_report(y_test,models[key].predict(x_test),target_names=target_names))                  # 對y_test進行預測,輸出預測的分類評價 
  149.     print('\n'
  150.      
  151. # 模型調參(NB模型) 
  152.  
  153. param_grid_nb = {'alpha':[0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]}    # 設定貝葉斯模型中不同alpha值 
  154.  
  155. model_nb_ty = MultinomialNB()                          # 設定貝葉斯的模型 
  156.  
  157. kfold = KFold(10, 6)                                   # 采用10折交叉驗證,初始隨機起點為6 
  158.  
  159. grid = GridSearchCV(estimator=model_nb_ty,  
  160.                     param_grid=param_grid_nb, scoring='neg_mean_squared_error', cv=kfold)         # 設置網格搜索的模型 
  161.  
  162. grid_result = grid.fit(x_train, y_train)               # 利用構建好的模型對數據集進行訓練,搜索最優的k值 
  163.  
  164. print('最優:%s 使用%s' % (grid_result.best_score_, grid_result.best_params_))                     # 輸出最優的參數情況 
  165.  
  166. nb_model = MultinomialNB(alpha=0)                      # 根據模型調參的結果,重新設定樸素貝葉斯模型 
  167.  
  168. nb_model.fit(x_train,y_train)                          # 模型訓練 
  169.  
  170. display(confusion_matrix(y_test,nb_model.predict(x_test)))                                        # 對y_test進行預測,輸出混淆矩陣 
  171.  
  172. print(classification_report(y_test,nb_model.predict(x_test),target_names=target_names))           # 對y_test進行預測,輸出預測的分類評價,發現并沒有什么改進 

 

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2017-05-18 12:45:35

數據分析數據理解數據

2015-10-26 09:24:30

微信公眾號數據分析

2021-09-03 08:58:00

數據分析可視化

2021-09-30 18:27:38

數據倉庫ETL

2020-04-14 10:20:12

MySQL數據庫死鎖

2024-10-16 11:40:47

2020-11-27 07:38:43

MongoDB

2021-11-09 09:01:36

Python網絡爬蟲Python基礎

2021-09-18 14:26:49

Linux Linux 啟動流程Linux 系統

2011-04-21 10:32:44

MySQL雙機同步

2011-01-10 14:41:26

2025-05-07 00:31:30

2011-05-03 15:59:00

黑盒打印機

2021-05-10 06:48:11

Python騰訊招聘

2021-07-14 09:00:00

JavaFX開發應用

2021-03-29 23:03:04

數據集數據庫科學

2020-06-17 08:35:12

數據分析Python代碼

2020-10-12 08:19:43

Python爬蟲網頁數據

2011-02-22 13:46:27

微軟SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩三级在线观看 | 中文字幕第三页 | 精品国产乱码久久久久久闺蜜 | 欧美精品在欧美一区二区 | www.色.com | 国产a区| 精品久久久久久 | 在线观看国产视频 | 成人小视频在线观看 | 精品欧美一区二区久久久伦 | 日韩欧美不卡 | 在线视频一区二区 | 色婷婷精品久久二区二区蜜臂av | 亚洲第1页 | 91亚洲精品久久久电影 | 欧美一级免费看 | 中国黄色毛片视频 | 久久久久久国模大尺度人体 | 亚洲成人一级片 | 久久久久久亚洲精品不卡 | 精品久久久久久久久久久久久久久久久 | 精品国产免费人成在线观看 | 免费在线观看毛片 | 免费黄色的视频 | 欧美一级在线 | 欧美激情a∨在线视频播放 成人免费共享视频 | 中文字幕 国产 | 精精精精xxxx免费视频 | 在线播放第一页 | 福利成人 | 免费视频一区二区 | 国产一区二区在线播放视频 | 1级黄色大片| 在线国产中文字幕 | 亚洲精品电影在线观看 | 国产亚洲精品久久久久久豆腐 | 91在线观看免费 | 伊人免费网 | 精品无码久久久久久国产 | 中文字幕在线观看日韩 | 亚洲视频免费观看 |