第五届工业互联网大数据:配件需求29th方案与代码
生活随笔
收集整理的這篇文章主要介紹了
第五届工业互联网大数据:配件需求29th方案与代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
背景
大數據可能過時了,所以這個延續5年的比賽也換了名字,但我還是習慣叫工業大數據。之前文章介紹過,我做了風力預測賽道但排不進排行榜。這里介紹一下隊友在配件預測賽道的方案,方案很簡單,不到50行代碼,取得決賽29th的成績。其實,我也做了一點,入手了一個LGB模型,但是效果一直沒有超過全0,尷尬的放棄了。
任務是預測未來三個月的配件需求,評價指標類似MAPE,所以準確預測小目標才是關鍵。
代碼地址:https://github.com/hongyingyue/Data-science-demos
方案
##第1個月
第1個月使用VAR模型。由于零件中有很多的銷量非常稀疏,增加一個后處理,將48個月均銷量小于1的零件銷量直接調整為0。
import pandas as pd import numpy as npfrom statsmodels.tsa.vector_ar.var_model import VAR from sklearn.linear_model import LinearRegression from statsmodels.tsa.deterministic import DeterministicProcess# VAR v_model = VAR(ts_df) v_model_fit = v_model.fit(3) lag_order = v_model_fit.k_ar# forecast for the 1st month y_fore1 = v_model_fit.forecast(ts_df.values[-lag_order:], 1) y_fore1[y_fore1 < 0] = 0第2/3個月
第2-3月使用線性回歸模型,這里的特征是超出我預料的。只使用了月份還有月份的平方作為特征,直接用線性模型預測結果。
# LR model y = ts_df.copy()# Create trend features dp = DeterministicProcess(index=y.index, # dates from the training dataconstant=True, # the interceptorder=2, # quadratic trenddrop=True, # drop terms to avoid collinearity ) X = dp.in_sample() # features for the training data X_fore = dp.out_of_sample(steps=3)X['mon']=X.index.month X_fore.set_index([pd.to_datetime(['2020-7-1','2020-8-1','2020-9-1'])],inplace=True) X_fore['mon']=X_fore.index.month# Fit trend model model = LinearRegression(fit_intercept=False) model.fit(X, y)y_fore_l = pd.DataFrame(model.predict(X_fore),index=X_fore.index,columns=y.columns, ) y_fore_l[y_fore_l<0] = 0以上就是吊打我方案的全部代碼了,非常簡單高效。數據量比較小,評價指標不是很合理,就要根據數據和指標多做些針對性的調整了,希望下一屆能取的好成績。
我是YueTan,謝謝關注。
總結
以上是生活随笔為你收集整理的第五届工业互联网大数据:配件需求29th方案与代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 代码 点到线段的最短距离
- 下一篇: Jsp和Servlet有什么区别?