machine_learning.forecasting.run
================================

.. py:module:: machine_learning.forecasting.run

.. autoapi-nested-parse::

   this is code for forecasting
   but I modified it and used it for safety checker of data
   for ex: you have an online shop and for some reason some data are
   missing (the amount of data that u expected are not supposed to be)
           then we can use it
   *ps : 1. ofc we can use normal statistic method but in this case
            the data is quite absurd and only a little^^
         2. ofc u can use this and modified it for forecasting purpose
            for the next 3 months sales or something,
            u can just adjust it for ur own purpose



Attributes
----------

.. autoapisummary::

   machine_learning.forecasting.run.data_input_df


Functions
---------

.. autoapisummary::

   machine_learning.forecasting.run.data_safety_checker
   machine_learning.forecasting.run.interquartile_range_checker
   machine_learning.forecasting.run.linear_regression_prediction
   machine_learning.forecasting.run.sarimax_predictor
   machine_learning.forecasting.run.support_vector_regressor


Module Contents
---------------

.. py:function:: data_safety_checker(list_vote: list, actual_result: float) -> bool

   Used to review all the votes (list result prediction)
   and compare it to the actual result.
   input : list of predictions
   output : print whether it's safe or not
   >>> data_safety_checker([2, 3, 4], 5.0)
   False


.. py:function:: interquartile_range_checker(train_user: list) -> float

   Optional method: interquatile range
   input : list of total user in float
   output : low limit of input in float
   this method can be used to check whether some data is outlier or not
   >>> interquartile_range_checker([1,2,3,4,5,6,7,8,9,10])
   2.8


.. py:function:: linear_regression_prediction(train_dt: list, train_usr: list, train_mtch: list, test_dt: list, test_mtch: list) -> float

   First method: linear regression
   input : training data (date, total_user, total_event) in list of float
   output : list of total user prediction in float
   >>> n = linear_regression_prediction([2,3,4,5], [5,3,4,6], [3,1,2,4], [2,1], [2,2])
   >>> bool(abs(n - 5.0) < 1e-6)  # Checking precision because of floating point errors
   True


.. py:function:: sarimax_predictor(train_user: list, train_match: list, test_match: list) -> float

   second method: Sarimax
   sarimax is a statistic method which using previous input
   and learn its pattern to predict future data
   input : training data (total_user, with exog data = total_event) in list of float
   output : list of total user prediction in float
   >>> sarimax_predictor([4,2,6,8], [3,1,2,4], [2])
   6.6666671111109626


.. py:function:: support_vector_regressor(x_train: list, x_test: list, train_user: list) -> float

   Third method: Support vector regressor
   svr is quite the same with svm(support vector machine)
   it uses the same principles as the SVM for classification,
   with only a few minor differences and the only different is that
   it suits better for regression purpose
   input : training data (date, total_user, total_event) in list of float
   where x = list of set (date and total event)
   output : list of total user prediction in float
   >>> support_vector_regressor([[5,2],[1,5],[6,2]], [[3,2]], [2,1,4])
   1.634932078116079


.. py:data:: data_input_df
   :value: None