1. 程式人生 > >決策樹實戰-根據物資目錄預測物資數量

決策樹實戰-根據物資目錄預測物資數量

擬合 .sh ear .com 9.png 代碼實現 amp 代碼 lib

代碼實現:

 1 # -*- coding: utf-8 -*-
 2 """
 3 Created on Thu Aug 30 08:48:18 2018
 4 
 5 @author: zhen
 6 """
 7 
 8 import numpy as np
 9 from sklearn.tree import DecisionTreeRegressor
10 import pandas as pd
11 import matplotlib.pyplot as plt
12 
13 file_path = C:/Users/zhen/Desktop/jupyter_python/物資數據.csv
14
#讀取物資類采購目錄sheet頁 15 pfzwkytz = pd.read_csv(file_path, engine=python, encoding=utf-8) 16 dic = dict() 17 # 對數據進行預處理,決策樹需要使用數值型數據,因此把字符型數據轉成對應的數值,相同字符對應的數值相同 18 def strlist_to_intlist(coll): 19 flt_list = [] 20 loc = 0 21 for col in coll: 22 if not dic.__contains__(col): 23 dic[col] = loc
24 flt_list.append(loc) 25 loc = loc + 1 26 else: 27 flt_list.append(dic.get(col)) 28 return flt_list 29 30 31 # 抽樣獲取測試數據和訓練數據 32 train_data = pfzwkytz.sample(frac=0.8) 33 test_data = pfzwkytz.append(train_data).drop_duplicates(keep=False) 34 35
train_x = np.array(strlist_to_intlist(train_data[四級分類])).reshape(-1, 1).astype(int) 36 train_y = np.array(train_data[批復數量]).reshape(-1, 1).astype(int) 37 38 decision_tree_regressor = DecisionTreeRegressor(max_depth=10) 39 decision_tree_regressor.fit(train_x, train_y) 40 41 # 創建測試數據 42 test_x = np.array(strlist_to_intlist(test_data[四級分類])).reshape(-1, 1).astype(int) 43 test_y = np.array(test_data[批復數量]).reshape(-1, 1).astype(int) 44 45 y_hat = decision_tree_regressor.predict(test_x) 46 47 plt.plot(test_x, test_y, "y^", label="actual") 48 plt.plot(test_x, y_hat, "b.", label="predict") 49 50 plt.legend(loc="upper right") 51 plt.grid() 52 plt.show()

基於決策樹回歸:

技術分享圖片

技術分享圖片

基於決策樹分類:

技術分享圖片

技術分享圖片

總結:可知在使用同一數據源抽樣訓練模型中,使用回歸進行擬合比使用分類效果更好!

決策樹實戰-根據物資目錄預測物資數量