資料探勘之產品預測任務

知亦行發表於2019-05-25

一、實驗目的

1. 學會利用決策樹、KNN與Navie Bayes完成預測任務

二、實驗工具

1. Anaconda

2. sklearn

3. Pandas

三、實驗內容

產品預測任務

1.任務描述

本次比賽主要是一個對進出口交易記錄資料進行產品判別的任務。本次任務有 19046 條資料記錄,其中的 18279 條記錄是有類別屬性的,可作為分析時的訓練樣本,而任務目標是對 767 條測試資料(即驗證樣本)進行判別(本實驗採用其中的20個樣本)。

1) 資料描述

已分類的訓練樣本提供在比賽題目下 Excel 附件中的 cck_train 表中,訓練樣本的詳情如下,其中,表格中的每條記錄包含 7 個欄位。
image.png
未分類的驗證樣本提供在比賽題目下 Excel 附件中的 cck_test 表中。驗證樣本的資訊如下,表格中的每條記錄包含 5 個已知屬性欄位,其中表中屬性內容與 cck_表 略有不同,具體屬性欄位的含義請參考下節描述。
image.png

2) 屬性描述

本次任務提供的樣本資料包含 7 個基礎屬性欄位,其中有 2 個連續型數值類屬性欄位為:Quality and Price,5 個離散型數值類屬性欄位為:Enterprise(560)、Destination(144)、Origin(131)、Custom(20)、Product(364)。各欄位具體含義如下:
Quality:表示每條交易記錄中交易產品的數量,可忽略單位。
Price:表示每條交易記錄中交易產品的平均價格,單位為元。
Enterprise(560):表示每條交易記錄中交易產品的供應商編碼。
Destination(144):表示每條交易記錄中交易產品的買方國家編碼。
Origin(131): 表示每條交易記錄中交易產品的原產地編碼。
Custom(20): 表示每條交易記錄中交易產品通關海關編碼。
Product(364): 表示每條交易記錄中交易產品的名稱類別。
在驗證樣本中的欄位 Product1 ,Product2 ,Product3 為參賽者進行分類預測後概率由大到小排名
前 3 名的產品類別,欄位編碼同 Product 欄位。

3) 樣本描述

不論是在訓練樣本還是驗證樣本中,我們可以看到,一條交易記錄資料包括 Enterprise(560)、
Destination(144)、Origin(131)、Custom(20)、Product(364)5 個基本屬性欄位,括
號內為每個屬性下包含的所有特徵值個數,而這些屬性將是我們學習訓練樣本得到分類模型的關
鍵,根據一條交易記錄的每個屬性的特徵值的出現情況,利用模型對驗證樣本的交易產品類別進
行分類預測。

2. 結果評價

在整個驗證樣本預測結果中,參賽者在第 i 條記錄的產品類別預測值與實際類別完全一致時可得
10 分,即預測結果欄位 Product1 為實際產品類別。產品類別預測值與實際類別不一致時,其中
如果預測結果 Product2 為實際產品類別的,參賽者在該條驗證樣本可得 2 分;如果預測結果
Product3 為實際產品類別的,該條驗證樣本可得 1 分,對整個 767 條驗證樣本預測結果加總得
到一個總分 S:(本實驗採用期中的20個樣本)。
取 F=S/P*100%
(其中 P 為所有驗證樣本類別預測結果均與實際結果相一致的總成績,即 P=7670)為每位參與者的模型評價得分,各位參與者模型得分由高到低依次排列。

四、實驗要求

1. 寫出摘要,即簡要闡述任務的完成情況。

在處理資料時遇到了些麻煩,使用LabelEncoder對字元型資料進行了編碼轉換得以解決。通過對DataFrame的操作,最終實現了資料的處理,並將預測的產品類別儲存在了excel表格中。

2. 給出任務完成方案。可以用框圖等方式。

使用sklearn的KNeighborsClassifier()函式進行knn預測。

3. 給出具體的任務實現步驟。

1.匯入excel中的資料

image.png

2.將資料劃分為X_train 和結果Product:y_train

image.png
image.png
image.png

4.宣告knn訓練模型

image.png
結果卻出現了型別轉換錯誤:image.png
解決方案:LabelEncoder 用 0 到 n_classes-1 之間的值對標籤進行編碼
image.png
使用程式碼:

for col in X_test.columns.values: if X_test [ col ] .dtypes=='object': le.fit(X_test[col]) X_test[col]=le.transform(X_test[col])

報錯:image.png
經測試,Enterprise被識別成float,但事實上資料中夾雜著ABPE等字元
於是進行了型別轉換處理image.png
編碼後的資料效果如下圖:
image.png
最終得出預測結果:
image.png
匯入給定的測試樣本,並對前20個資料進行預測判斷Product
image.png

knn.predict得到預測結果

image.png

4. 給出任務完成結果,結果寫到實驗報告系統中,用表格的形式。

image.png
image.png

相關文章