├── Forecast.ipynb ├── README.md ├── data.csv ├── final.png └── requirements.txt /README.md: -------------------------------------------------------------------------------- 1 | # Demand Forecasting using Machine Learning 2 | 3 | 4 | Demand forecasting is the process of making estimations about future customer demand over a defined period, using historical data and other information. 5 | 6 | Usually organisations follow tranditional forecasting techniques/algorithms such as Auto Arima, Auto Arima, Sarima, Simple moving average and many more. 7 | 8 | ## Table of Contents 9 | 10 | - [Goal](#goal) 11 | - [Workflow](#workflow) 12 | - [Required Packages](#require) 13 | 14 | 15 | ## Goal 16 | 17 | Due to the recent boost in AI world, companies have started researching the possibility of using machine learning in place of tranditional approach. 18 | 19 | Tuning traditional algorithms takes a significant amount of effords and domain expertise as well. 20 | 21 | In this repo, we are trying to figure out a way of predict the same using machine learning algorithms. 22 | 23 | 24 | ## Data 25 | 26 | The dataset comprised of units sold on a daily basis along with details regarding the sales, eg. SKU(product id), Store, price etc. 27 | 28 | *record_ID, week, store_id, sku_id, total_price, base_price, is_featured_sku, is_display_sku, units_sold* 29 | 30 | 31 | ## Workflow 32 | 33 | - Handling missing values 34 | - Feature selection based on my previous experience in Supply chain domain 35 | - Converting dataset into time series format to apply supervised learning approach. 36 | - Regression Modeling 37 | - Random Forest 38 | - XGBoost 39 | - SVM (future scope) 40 | - Hyperparameter Tuning 41 | 42 | ## Result 43 | ![train](https://github.com/shreyas-jk/Demand-Forecasting-Using-ML/blob/main/final.png?raw=true) 44 | 45 | 46 | 47 | ## Required Packages 48 | 49 | - numpy 50 | - pandas 51 | - sklearn 52 | - easypreprocessing 53 | - seaborn 54 | - matplotlib 55 | - xgboost 56 | 57 | -------------------------------------------------------------------------------- /final.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/trydoff/Product-Demand-Forecasting-Using-ML/c57db75901822479b0935be79dec13a7cb458af6/final.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | argon2-cffi==21.1.0 2 | async-generator==1.10 3 | attrs==21.2.0 4 | backcall @ file:///home/ktietz/src/ci/backcall_1611930011877/work 5 | bleach==4.1.0 6 | certifi==2021.5.30 7 | cffi==1.14.6 8 | colorama @ file:///tmp/build/80754af9/colorama_1607707115595/work 9 | cycler==0.10.0 10 | decorator @ file:///tmp/build/80754af9/decorator_1621259047763/work 11 | defusedxml==0.7.1 12 | easypreprocessing==1.0.3 13 | entrypoints==0.3 14 | imbalanced-learn==0.8.0 15 | importlib-metadata==4.8.1 16 | ipykernel @ file:///C:/ci/ipykernel_1596206775157/work/dist/ipykernel-5.3.4-py3-none-any.whl 17 | ipython @ file:///C:/ci/ipython_1593446240034/work 18 | ipython-genutils @ file:///tmp/build/80754af9/ipython_genutils_1606773439826/work 19 | ipywidgets==7.6.4 20 | jedi==0.17.0 21 | Jinja2==3.0.1 22 | joblib==1.0.1 23 | jsonschema==3.2.0 24 | jupyter==1.0.0 25 | jupyter-client @ file:///tmp/build/80754af9/jupyter_client_1616770841739/work 26 | jupyter-console==6.4.0 27 | jupyter-core @ file:///C:/ci/jupyter_core_1612213536848/work 28 | jupyterlab-pygments==0.1.2 29 | jupyterlab-widgets==1.0.1 30 | kiwisolver==1.3.1 31 | kneed==0.7.0 32 | MarkupSafe==2.0.1 33 | matplotlib==3.3.4 34 | mistune==0.8.4 35 | nbclient==0.5.4 36 | nbconvert==6.0.7 37 | nbformat==5.1.3 38 | nest-asyncio==1.5.1 39 | notebook==6.4.3 40 | numpy==1.19.5 41 | opencv-python==4.5.3.56 42 | packaging==21.0 43 | pandas==1.1.5 44 | pandocfilters==1.4.3 45 | parso @ file:///tmp/build/80754af9/parso_1617223946239/work 46 | pickleshare @ file:///tmp/build/80754af9/pickleshare_1606932040724/work 47 | Pillow==8.3.2 48 | plotly==5.3.1 49 | prometheus-client==0.11.0 50 | prompt-toolkit @ file:///tmp/build/80754af9/prompt-toolkit_1616415428029/work 51 | pycparser==2.20 52 | Pygments @ file:///tmp/build/80754af9/pygments_1629234116488/work 53 | pyparsing==2.4.7 54 | pyrsistent==0.18.0 55 | python-dateutil @ file:///tmp/build/80754af9/python-dateutil_1626374649649/work 56 | pytz==2021.1 57 | pywin32==228 58 | pywinpty==1.1.4 59 | pyzmq @ file:///C:/ci/pyzmq_1628276569449/work 60 | qtconsole==5.1.1 61 | QtPy==1.11.0 62 | scikit-learn==0.24.2 63 | scipy==1.5.4 64 | seaborn==0.11.2 65 | Send2Trash==1.8.0 66 | six @ file:///tmp/build/80754af9/six_1623709665295/work 67 | sklearn==0.0 68 | tenacity==8.0.1 69 | terminado==0.11.1 70 | testpath==0.5.0 71 | threadpoolctl==2.2.0 72 | tornado @ file:///C:/ci/tornado_1606942379977/work 73 | traitlets==4.3.3 74 | typing-extensions==3.10.0.2 75 | wcwidth @ file:///tmp/build/80754af9/wcwidth_1593447189090/work 76 | webencodings==0.5.1 77 | widgetsnbextension==3.5.1 78 | wincertstore==0.2 79 | xgboost==1.4.2 80 | zipp==3.5.0 81 | --------------------------------------------------------------------------------