├── 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 | 
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 |
--------------------------------------------------------------------------------