參考資料:
我們會延用之前文章用CNN+RNN來預測銷售量的訓練資料並用XGboost model來預測銷售量
使用XGboost來預測
其他設定都與之前文章用CNN+RNN來預測銷售量相同,但需要加入xgboost.XGBRegressor
from xgboost import XGBRegressor
#將training Features轉為2D array shape=(樣本數,# of 特徵值)
trainX_2D=trainX.reshape(trainX.shape[0],trainX.shape[1]*trainX.shape[2])
xgbc = XGBRegressor()
xgbc.fit(trainX_2D,trainY)
# #test Features轉為2D array shape=(樣本數,# of 特徵值)
testX_2D=testX.reshape(testX.shape[0],testX.shape[1]*testX.shape[2])
#預測結果
xgbc_predicY=xgbc.predict(testX_2D)
#轉換scale
xgbc_predicY_origins=scaler.inverse_transform(np.array(xgbc_predicY).reshape(-1, 1))
#畫出預測結果與真實銷售量
plt.plot(test_date[:],xgbc_predicY_origins[:],label='prediction');
plt.plot(test_date[:],answer[:],label='real')
#畫出30天預測結果
plt.plot(test_date[:30],xgbc_predicY_origins[:30],label='prediction');
plt.plot(test_date[:30],answer[:30],label='real')
plt.legend()
plt.show()
#取得XGboost model的accuracy
xgbc.score(testX_2D,testY)
0.49455476732371634
在沒有設定任何XGboost的hyper parameter的狀態下我們可以得到~50%的精確度.
回顧之前CNN+RNN model的預測精確度
model.evaluate(testX,testY) #return loss value & metrics values
[0.013807674573565071, 0.10221999477256428] #紅色數值為精確度