diff --git a/pycaret/internal/PycaretExperiment.py b/pycaret/internal/PycaretExperiment.py index 9df8d46b4..fdf5c9a20 100644 --- a/pycaret/internal/PycaretExperiment.py +++ b/pycaret/internal/PycaretExperiment.py @@ -21,7 +21,7 @@ get_columns_to_stratify_by, get_model_name, ) -from pycaret.internal.utils import SeasonalParameter +from pycaret.internal.utils import SeasonalParameter, id_or_display_name import pycaret.internal.patches.sklearn import pycaret.internal.patches.yellowbrick from pycaret.internal.logging import get_logger, create_logger @@ -5136,8 +5136,11 @@ def compare_models( display.display_monitor() display.display_master_display() + input_ml_usecase = self._ml_usecase + target_ml_usecase = MLUsecase.TIME_SERIES + greater_is_worse_columns = { - v.display_name + id_or_display_name(v, input_ml_usecase, target_ml_usecase) for k, v in self._all_metrics.items() if not v.greater_is_better } @@ -5151,7 +5154,7 @@ def compare_models( if not (isinstance(sort, str) and (sort == "TT" or sort == "TT (Sec)")): sort_ascending = not sort.greater_is_better - sort = sort.display_name + sort = id_or_display_name(sort, input_ml_usecase, target_ml_usecase) else: sort_ascending = True sort = "TT (Sec)" @@ -5171,13 +5174,19 @@ def compare_models( model_library = include else: if turbo: - model_library = self._all_models model_library = [k for k, v in self._all_models.items() if v.is_turbo] else: model_library = list(self._all_models.keys()) if exclude: model_library = [x for x in model_library if x not in exclude] + if self._ml_usecase == MLUsecase.TIME_SERIES: + if 'ensemble_forecaster' in model_library: + warnings.warn( + 'Unsupported estimator `ensemble_forecaster` for method `compare_models()`, removing from model_library' + ) + model_library.remove('ensemble_forecaster') + display.move_progress() # create URI (before loop) @@ -16213,7 +16222,7 @@ def compare_models( fold: Optional[Union[int, Any]] = None, round: int = 4, cross_validation: bool = True, - sort: str = "R2", + sort: str = "smape", n_select: int = 1, budget_time: Optional[float] = None, turbo: bool = True, @@ -16234,10 +16243,12 @@ def compare_models( Example -------- >>> from pycaret.datasets import get_data - >>> boston = get_data('boston') - >>> from pycaret.regression import * - >>> exp_name = setup(data = boston, target = 'medv') - >>> best_model = compare_models() + >>> from pycaret.internal.PycaretExperiment import TimeSeriesExperiment + >>> airline = get_data('airline', verbose=False) + >>> fh, fold = np.arange(1,13), 3 + >>> exp = TimeSeriesExperiment() + >>> exp.setup(data=airline, fh=fh, fold=fold) + >>> master_display_exp = exp.compare_models(fold=fold, sort='mape') include: list of str or scikit-learn compatible object, default = None @@ -16268,7 +16279,7 @@ def compare_models( is ignored when cross_validation is set to False. - sort: str, default = 'R2' + sort: str, default = 'smape' The sort order of the score grid. It also accepts custom metrics that are added through the ``add_metric`` function. @@ -16436,6 +16447,43 @@ def create_model( **kwargs, ) + + def _create_model_without_cv( + self, model, data_X, data_y, fit_kwargs, predict, system, display + ): + with estimator_pipeline(self._internal_pipeline, model) as pipeline_with_model: + + self.logger.info("Support for Exogenous variables not yet supported. Switching X, y order") + data_X, data_y = data_y, data_X + + fit_kwargs = get_pipeline_fit_kwargs(pipeline_with_model, fit_kwargs) + self.logger.info("Cross validation set to False") + + self.logger.info("Fitting Model") + model_fit_start = time.time() + with io.capture_output(): + pipeline_with_model.fit(data_X, data_y, **fit_kwargs) + model_fit_end = time.time() + + model_fit_time = np.array(model_fit_end - model_fit_start).round(2) + + display.move_progress() + + if predict: + self.predict_model(pipeline_with_model, verbose=False) + model_results = self.pull(pop=True).drop("Model", axis=1) + + self.display_container.append(model_results) + + display.display( + model_results, clear=system, override=False if not system else None, + ) + + self.logger.info(f"display_container: {len(self.display_container)}") + + return model, model_fit_time + + def _create_model_with_cv( self, model, diff --git a/pycaret/internal/utils.py b/pycaret/internal/utils.py index 6d28d5e73..2ea78bb20 100644 --- a/pycaret/internal/utils.py +++ b/pycaret/internal/utils.py @@ -30,7 +30,21 @@ class SeasonalParameter(IntEnum): A = 1 #year Y = 1 #year - + +def id_or_display_name(metric, input_ml_usecase, target_ml_usecase): + """ + Get id or display_name attribute from metric. In time series experiment + the pull() method retrieves the metrics idto name the columns of the results + """ + + if input_ml_usecase == target_ml_usecase: + output = metric.id + else: + output = metric.display_name + + return output + + def get_config(variable: str, globals_d: dict): """ diff --git a/pycaret/time_series.py b/pycaret/time_series.py index 0d02eb8de..e3913713d 100644 --- a/pycaret/time_series.py +++ b/pycaret/time_series.py @@ -257,7 +257,7 @@ def compare_models( fold: Optional[Union[int, Any]] = None, round: int = 4, cross_validation: bool = True, - sort: str = "R2", + sort: str = "smape", n_select: int = 1, budget_time: Optional[float] = None, turbo: bool = True, @@ -278,10 +278,12 @@ def compare_models( Example -------- >>> from pycaret.datasets import get_data - >>> boston = get_data('boston') - >>> from pycaret.regression import * - >>> exp_name = setup(data = boston, target = 'medv') - >>> best_model = compare_models() + >>> from pycaret.internal.PycaretExperiment import TimeSeriesExperiment + >>> airline = get_data('airline', verbose=False) + >>> fh, fold = np.arange(1,13), 3 + >>> exp = TimeSeriesExperiment() + >>> exp.setup(data=airline, fh=fh, fold=fold) + >>> master_display_exp = exp.compare_models(fold=fold, sort='mape') include: list of str or scikit-learn compatible object, default = None @@ -312,7 +314,7 @@ def compare_models( is ignored when cross_validation is set to False. - sort: str, default = 'R2' + sort: str, default = 'smape' The sort order of the score grid. It also accepts custom metrics that are added through the ``add_metric`` function. diff --git a/requirements-ts.txt b/requirements-ts.txt index 50b06d6ed..045474921 100644 --- a/requirements-ts.txt +++ b/requirements-ts.txt @@ -1,2 +1,2 @@ sktime==0.5.3 -pmdarima>=1.8.0 +pmdarima==1.8.0 diff --git a/test_time_series.ipynb b/test_time_series.ipynb index 71a427f71..b5c1bcd0b 100644 --- a/test_time_series.ipynb +++ b/test_time_series.ipynb @@ -22,26 +22,27 @@ "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ "(
,\n", - " )" + " )" ] }, + "execution_count": 2, "metadata": {}, - "execution_count": 2 + "output_type": "execute_result" }, { - "output_type": "display_data", "data": { - "text/plain": "
", - "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-04-17T10:50:11.935248\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.3.4, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", - "image/png": "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4juk33wNz68B8Y+//djOGJMNXAgs9nDc3vr7u66UrIeMMTn9OQEB+taPvwb+ANT1cFz9TQ2dvr4XH3alPP7MS0pcT+/Fnh5T/Nfnv6fAlcAzrg/RXenvaWj52487gAmuNOR42gIgb59RffkcJIHhrR/HA9YY85YrJfhHru36nOqiYNY3Xwe+Y4xZCWQATa7tvwT+ZK091nFna+1m4HfA28CbwBqgNVSNFY+89eFBYIS1djptoz5PmQDMw3L9g78S+JMxZhlQg14DgdCnfnT9w34aWGCt3eXnY94HjAGmuR7nD/06AwE/+9EYMw0YY619MSytFU/68l68xlp7InC663JdgB5T+qY//xevpO1vqr/09zTw/OpHa20F8G3gGdpG1vegzyeRwFs/xgNzgWtcPy81xszr74PF0ufU6JzoG2LW2i20DfO7U2u+4rrpFOBrxpj/AbIBpzGmwVp7r7X2QeBB133+C9hvjBkOvOK6799oy1vv+C3IMKAkyKdzXPLWh9baRqDR9ftKY8xO2r4FK6FzOuowoMSfPrTWLqXtAxvGmC+4jiv90Id+XOG66/20pVX92XXfONrmewG8TNsHrG797TreIfdGY8w/gFeDcGrHlT704yygyBizh7b/W/nGmPdpC4b0NzUM+vJetNa631M1xpingJONMU/i+3vR2/9i6YO+/j01xkwF4q21K13X9fc0jPr4XnwF199OY8ytQKs//SiB18Pft/3Ah9bactdtr9M23/YJ9Dm1TTAn5EbrhS6T5oF8108HbTnpX/dwn1/SoahBh/uMALYA2R7uEw/sAkbx+aTsyV322YOKlQStD4E8Pp9IP5q2N/gA1/WuE+vP96cPOzxmEm2preeE+3mJtkuA+vE/gecBRy+P5bG/gcEd9vkBsDDcz0u0XQLRj96O1eU2/U2N0D509U2ua3sCbYUTv+Xlsby9F3v9X6xL8Pqww/1+C/yql8fS39MI7scO98mhLXtwvD/92OH291EBqGD3Yw5t9T46FpX9ii/949on5j+nhr0BkXahLW3mINBM27chNwN3ANtcl98CxsP9fknnYPYjYJPrReOxSpxrv/Ndx90J3N1h++2ux28BDgAPhPu5iZaLP31I22T3ja4/5quACzscp4i2+c87gXs99Xsvffh7YDOwFfh+uJ+XaLsEoh9p+wbSuvphjetyi5fH89jfwOPAetqqCb5Mhw9juoSmH7scbyQ9VzzW39QI7EMgjbZRn3Wu2/+C64O2h8fz9l7s9X+xLsHrww7H2gVM7OXx9Pc0gvvRdZxNrsuVfejHS12P3wgcAt4K93MTTRd/+tG1/7WuvtwA/E9v/ePh8WL6c6r7RSkiIiIiIiISNVQASkRERERERKKOglkRERERERGJOgpmRUREREREJOoomBUREREREZGoo2BWREREREREoo6CWREREREREYk6CmZFREREREQk6vx/1Uf8ItNZLMIAAAAASUVORK5CYII=\n" + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7MAAAD4CAYAAAA+abFdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3zb5bn//9ctD3nHdryy4+zEgYQMyDBlBEopI4xCKS2r0Pa0tGl7VttHf+f0jPJte0Z7Dm3hlEMb0kKBQIEApXBICoWEANmTbMcZjuMdOx7y0P37w5KxY9mWbEmWlPfz8dBDlvTRR9dHI9Gl+7qv21hrEREREREREYkmjuEOQERERERERCRQSmZFREREREQk6iiZFRERERERkaijZFZERERERESijpJZERERERERiTrxwx3AUOTk5NiJEycOdxgiIiIiIiISAlu2bKmy1ub6ui2qk9mJEyeyefPm4Q5DREREREREQsAYU9rXbSozFhERERERkaijZFZERERERESijpJZERERERERiTpKZkVERERERCTqKJkVERERERGRqBPV3YxFRERERESindttqWh04Wp344x3kJfqxOEwwx1WxFMyKyIiIiIiMkzcbsvu8nqWr9xEaW0zE7KSWXPfQmYXZCihHYDKjEVERERERIZJRaOrK5EFKK1tZvnKTVQ0uoY5ssinZFZERERERGSYuNrdXYmsV2ltM6529zBFFD2UzIqIiIiIiAwTZ7yDCVnJPa6bkJWMM16p2kD0DImIiIiIiAyTvFQnL923sCuhnZCVzOO3z2F/xdlhjizyqQGUiIiIiIjIMHE4DBlJ8fz0xiKm5aaSmZzAP/xpH09vL+PdB5cwNjNZXY77oGRWRERERERkGG09cYbbfruFzd+6lDEjkvn3G4pobuugvqWDxQ+vV5fjPoS0zNgYk2mMed4Ys88Y85ExZrExJtsY86Yx5qDnPKvb9t8zxhwyxuw3xlwTythEREREREQiwe7yBoyBGXlpAIxMTeQn18/i/tXb1eW4H6GeM/vfwOvW2hnAHOAj4LvAOmvtVGCd5zLGmFnAHUAR8CngEWNMXIjjExERERERGVZ7yhuYPDKVlMSPC2ctqMvxAEKWzBpjMoBPAL8GsNa2WmvrgOXAKs9mq4CbPH8vB56x1rqstSXAIeDiUMUnIiIiIiISCXaXNzC7IL3HdepyPLBQPhOTgEpgpTFmmzHmcWNMKpBvrT0F4DnP82w/Bjje7f4nPNeJiIiIiIjEJFd7BwerGik6J5nNS3Wy5pwux2vuW0heqnM4woxIoWwAFQ/MA75hrf3AGPPfeEqK++BrFrPttZExXwa+DDB+/PhgxCkiIiIiIjIs9lc00uG2vUZmHQ7D7IIMXrhnAfWuDiaPTGF0RpKaP3UTypHZE8AJa+0HnsvP05ncnjbGjALwnFd0235ct/uPBcrO3am19jFr7QJr7YLc3NyQBS8iIiIiIhJqu8vrASjKT+91m8NhKKt3ccWj71Fa26xE9hwhS2atteXAcWPMdM9Vy4C9wMvAPZ7r7gHWeP5+GbjDGOM0xhQCU4EPQxWfiIiIiIjIcNtd3kC8wzAtN83n7dM9HY4PVJ4NZ1hRIdTrzH4DeMoYkwgcAe6jM4FebYy5HzgG3AZgrd1jjFlNZ8LbDjxore0IcXwiIiIiIiLDZk95A9Nz00jso7HTxKxkEuIM+ysbwxxZ5AtpMmut3Q4s8HHTsj62fwh4KJQxiYiIiIiIRIo9pxtYOC6zz9vj4xxMGZmqkVkf1NdZRERERERkGDS62jlS3cQsH/Nlu5uWm8r+CiWz51IyKyIiIiIiMgz2nu5MUM/tZHyuablpHKpupL3DHY6wooaSWRERERERkWHg7WQ8UDI7PS+Ntg7L0drmcIQVNZTMioiIiIiIDIM9pxtIincwaWRqv9tN93Q6VqlxT0pmRUREREREhsGe8gZm5acTN8D6sdPzOpPdA1VKZrtTMisiIiIiIjIMdpc3UDRAiTFATqqT7JQE9ldoeZ7ulMyKiIiIiIiEWV1zGyfPtPiVzEJnqbGW5+lJyayIiIiIiEQEt9tS3tBCaW0T5Q0tuN12uEMKmT3lDcDAzZ+8puWmsl/JbA9KZkVEREREZNi53Zbd5fUsfng9hQ+tY/HD69ldXh+zCa2/nYy9puWmcareRX1LWyjDiipKZkVEREREZNhVNLpYvnITpZ7lZ0prm1m+chMVja5hjiw0dpc3kO6MZ1xmsl/bT8/r7Gh8oFLzZr2UzIqIiIiIyLBrau3oSmS9SmubcbW7hymi0Nrjaf5kTP+djL26ludRqXGX+OEOQEREREREzi9ut6Wi0YWr3Y0z3sHRmiaqGluZkJXcI6GdkJWMMz42x992lzewfHaB39tPyUnBYTQy211svjNERERERCQi+Zob29jawftHa/jDPQuYkNVZdjshK5k19y0kL9U5zBEHX0WDi6rGVr/nywI44+OYmJ2ijsbdBDQya4xxAGnW2voQxSMiIiIiIjHM19zYB1bvYMPXl1KQnsSzd82npc3N1NxU8tOcOBz+leFGk90BdjL2mp6bxv4KJbNeA47MGmN+b4zJMMakAnuB/caYvwt9aCIiIiIiEmtc7W6fc2Pb3BaHw7CnvIHLH32PxtaOmExk4eNOxkX5gSWzU3NTOVDZGLMdngPlT5nxLM9I7E3Aa8B44K6QRiUiIiIiIjHJGe/oKiX26j43doana+++GB6B3F3ewMiUBPLTAyuhnp6bRlNbByfrW0IUWXTxJ5lNMMYk0JnMrrHWtgH6KUBERERERAKWl+rkhXsX9jk3dnoMJ7Nut6W8oYUvXjyeZ+6ajw0wq+rqaByDz81g+DNn9n+Ao8AO4B1jzARAc2ZFRERERCRgDoehoaWNn95YRFFBOhlJ8eSlfjw3NjslkdzUxJhbgsbb+Mo7X9ibxM8uyPC7nHp6XirQuTzPVdNyQxluVOh3ZNbT8Om0tXaMtfbT1loLHAOuCEt0IiIiIiISc946XM1nfruZMRlJFKQn9UrmZuTFXqMjX42vlq/cREWjy+99jM5IIs0Zp+V5PPpNZq21buDr51xnrbXtIY1KRERERERi1raTZ5iRm0aq03eh6PS8tJgrM+6r8ZWr3e33PowxTMtJ0/I8Hv7MmX3TGPO3xphxxphs7ynkkYmIiIiISEzaeuIM88aO6PP26blpVDW2Ut3YGsaoQmugxlf+mpabGnOj1oPlzzP3ReBB4B1gi+e0OZRBiYiIiIhIbKpocHHiTAsXjek7mfV2NI6lebN5qU7W3Nd34yt/TctNo7Sumea2jlCEGVUGbABlrS0MRyAiIiIiIhL7tp48A8A8P5LZfRVnWTIxNopCHQ7D1JxUfra8iIlZKRRkOHs0vvLX9Lw0rIVDVY1cMCojRNFGhwFHZo0xKcaY/88Y85jn8lRjzPWhD01ERERERGKNN5ntb2R2YnYKiXGOmCun3XT8DLc8sZnjdc0+G1/5Y3qup6NxjD03g+FPmfFKoBVY4rl8AvhhyCISEREREZGYte3EGabkpDIiOaHPbeI8o5ixVGYM8G5JNQBLCwc/2jwtN/ZKsAfLn2R2srX234A2AGttMxD4TwgiIiIiInLe23ryTL8lxl7T82Kv0dGGkhqK8tPJTkkc9D7SnPGMGZHEQS3P41cy22qMSQYsgDFmMuD/YkgiIiIiIiJAbVMrJTVN/ZYYe03PS+NwdRNtHf4vXRPJOtyW90prKZ409DnA03PTNDKLHw2ggB8ArwPjjDFPAUuBe0MZlIiIiIiIxJ5tJ+sB+l2Wx2tGXhrtbsvh6kZm5KWHOrSQ23WqnvqWdoqHUGLsdfW0HGblp1Na24Qz3jGoRlKxwJ9uxm8aY7YCi+gsL/6mtbYq5JGJiIiIiMQ4t9tS0ejC1e4+L5KSj5s/DdyFd7p3bmhFbCSz60tqACgeYndmt9ty2eQcPvfkFkprm7uW+JldkBHT7x1f/OlmPA+YAJwCyoDxxpjJxhh/RnVFRERERMQHt9uyu7yexQ+vp/ChdSx+eD27y+txu+1whxYy206eYXxmMjl+rK3qTWb3xci82fUlNYzLTGJCdsqQ9lPR6OpKZAFKa5tZvnITFY3n30xQf+bMPgK8DzwG/C+wEXgGOGCM+WR/dzTGHDXG7DLGbDfGbPZcl22MedMYc9BzntVt++8ZYw4ZY/YbY64Z9FGJiIiIiES4ikYXy1duOq+Ski0n6vwqMQYYkZzAqAxnTDSBstayvqSG4sKRQ96Xq93d9Z7xKq1txtUeG3OLA+FPMnsUuMhau8BaOx+4CNgNXAX8mx/3v8JaO9dau8Bz+bvAOmvtVGCd5zLGmFnAHUAR8CngEWNMXCAHIyIiIiISLepb2s+rpKS+pY0DlY1+NX/yipVGRyU1TZTVtwRlvqwz3sGErOQe103ISsYZ709qF1v8OeIZ1to93gvW2r10JrdHBvmYy4FVnr9XATd1u/4Za63LWlsCHAIuHuRjiIiIiIhErL8crmJfxdnzKinZUeZp/hRIMpuXxr6Ks1gb3aXXXfNlg5DM5qU6WXPfwq73jnfObJ4fpduxxp95r/uNMY/SWVoM8Fk6S4ydeNae7YcF/s8YY4FfWWsfA/KttacArLWnjDF5nm3H0FnO7HXCc10PxpgvA18GGD9+vB/hi4iIiIgMr+6NnppaO/jH1/cxKiOJF+5dyC1PbOrRyCdWkxJv8yd/y4yhs6NxbXMblWdbyUuP3ufl3ZIaMpMTKMofeiMrh8MwuyCDd762hCM1zaQmxp2XzZ/Av2T2XuBrwLfo7Ga8HvhbOhPZKwa471JrbZknYX3TGLOvn219Pfu9foLxJMSPASxYsCC6f6IRERERkZjnbfTknR87ISuZJ+6YywUF6WQmJ/Lk5+dhrWVKTmpMdzPeduIMozKcjMpI8vs+XR2NK89GdTK7oaSGpROzgvbaOhyGcVkpfO6prTS1drD1ry8Lyn6jzYA1DNbaZmvtf1prb7bW3mSt/Q9rbZO11m2t7beA3Vpb5jmvAF6ks2z4tDFmFIDnvMKz+QlgXLe7j6Wze7KIiIiISNTy1ejp3me20+q2OByGDSU1fOKX75EcHxeziSx0jswGUmIMnSOzEN0djSvPuthXcZalQSgxPtdNs0exvayekuqmoO87GvizNM9ST9fhA8aYI96TH/dLNcake/8GPkln46iXgXs8m90DrPH8/TJwhzHGaYwpBKYCHwZ+SCIiIiIikWOg7rPTclMBOFjVGPbYwqWptZ29pxsCav4EMD4zmaR4R1QnsxuOds6XvTQInYzPdfPsAgBe2nMq6PuOBv7MLv818FOgGFjY7TSQfGC9MWYHnUnpH621rwM/Bq42xhwErvZcxtNkajWwF3gdeNBa2xHY4YiIiIiIRJaBus9Oy+kcfTwQA117+7LrVANuG9h8Wegsp52WmxbVz836khqc8Q4WjAvs2P0xOSeVC0al89Ku8qDvOxr4M2f2jLX2T4Hu2NPteI6P66uBZX3c5yHgoUAfS0REREQkUuWlOnnmC/O548ktPhs9TRqZgjFwoDJ2R2a3nPA0fwpwZBY6S423nKgLdkhhs/5IDRePy8QZH5pVR2+aPYofrj1ARYMrqucVD4Y/I7NvGWP+3Riz2Bgzz3sKeWQiIiIiIjHA4TA8t72MR269gJLvL2PjiuIe3WeTEuKYkJnMoRguM9568gwjUxIYl5k88MbnmJ6XRklNE6726CvabHS1s/XkmZDMl/W6eXYB1sLLe8+/0Vl/RmYv8Zwv6HadBa4MfjgiIiIiIrGlrcPNYx+W0tjewbUz8n1uE+2ltH3xLkl0/8XjuHPeGKwFE2CPq+m5qbgtHKpqoqhg6EvbhIvbbTlxpoU3v7KY/LRE3J6GX8E2Z3QGE7OSeWlXOQ9cMiHo+49kAyaz1tqBlt8REREREZE+fHisjrOuDq6eltvnNlNyUnlyay3WWkyg2V6E8rUk0Zr7Fga8JurHHY0boiaZDdax+8MYw00XjOKRDUepb2kjIykhqPuPZP50M843xvzaGPMnz+VZxpj7Qx+aiIiIiMQat9tS3tBCaW0T5Q0tuN12uEMKubUHKzEGrpjcdzfbabmp1Le0U3G2NYyRhZavJYmWr9xERaMroP1My42+5XmCdez+unl2Aa0dbv60r2LgjWOIP3NmnwDeAEZ7Lh8AvhWqgEREREQk+vlKWr2jVYsfXk/hQ+tY/PB6dpfXx3xCu+5gFQvGZpKVktjnNt6E7WBV9CRsAxloSSJ/pTnjGTsiKaoaZAXr2P21ZGI2uamJvLT7/Jo3608ym2OtXQ24Aay17UD0zb4WERERkbDwlbTuKq/nZH1zWEerIkFDSzvvl9aybGpOv9t515qNpoRtIAMtSeQvt9vyxOcu4qtLJkbFaH55fQuHq5uCcuz+inMYbpxdwGsfVURlo6zB8ufZbDTGjKSz6RPGmEXAmZBGJSIiIiJRy1eJ5U0rN3HW1RHW0apI8M6Ratrdlqum9j1fFmB8ZjIJcSamktm8VCcv3bewK6k7d0kif3h/GLn/2e0s+fn6iBzN716FsL/iLF98dhv//MY+nr1r/pCOPVD3LBjLE3fMpaT6/Cnh96eb8V8DLwOTjTEbgFzgMyGNSkRERESiVl8llt6Ruu63hXK0KhKsPVhJUryDJROz+t0uPs7B5JGpHIqhMmOHw9DS1sFPbyxiZl4amSkJ5KU6A2qA1Nfc040riilITwpV6H7z1ejpiTvmMmZEMpOyU9i4ohhXuxtnvCPgYw80jnRnPHf9flvIG05FkgH/5bDWbgUuA5YAXwGKrLU7Qx2YiIiIiESnvspL05PiWDPEkbpos+5gFZdOyiYpIW7AbaflpsbUyCzAsztO8bkntzIuM5mC9KSAE6twzz0NlK9k+95ntpPmjMPhMBSkJzEhK2VQxx5oHDedZyX84F8349uAZGvtHuAm4FljzLyQRyYiIiIiUSkv1cmqOy7qlbSOTHYyuyCDZ++az9tfXcKGry+N6ZGj8voWdpc3sGyAEmOvKTmpHKpqjKny0Nf3VXDZ5GxSnf4UhPYWrHm3oRIpyXakxBFu/rwL/sFa22CMKQauAVYBj4Y2LBERERGJVsfrmvnOH/fy/N0LKPn+MjauKO5KWh0OQ+XZVi5/9D0OVDbGbCILsO5QFQBXDdD8yWtabhot7W5OnGkeeOMocLSmiX0VZ7l2Rv6g95GX6ozo0fxISbYjJY5w8+fovO2wrgMetdauAfruKy4iIiIi57Vnd5TxwbE6slMSfZZYLpmYhTHwbknNMEYZeusOVJGdksDc0SP82n5aTmx1NPaueXrtjLxB78PhMMwuyGDjimJ2/s1l/PTGIrJSEiLmR5C8VCe/u7N3FUK4k+1IT/pDxZ/x/pPGmF8BVwE/McY48S8JFhEREZHz0DPbTnLJ+EwKR6b4vD0rJZHZBelsiOFk1lrL2oOVLJuS43fiNbXb8jxXTfOvNDmSvb6vgsLslK5lhwbLO/e0rrmNW1dt5lefuZAvLZoQpCiHprG1g++/9hG///w8Ro9ICnmjp750T/qP1jTT2Noe0yX8Xv4kpbcDbwCfstbWAdnA34U0KhERERGJSvsqGtheVs8dF43pd7viwpG8V1pDe0dszuk7UNnIiTMtLAsgKR2dkURKQhwHYqCjcUtbB+sOVvGpGXkYE5yEanpuGmNGJLHuYFVQ9hcML+4+xbsltQBhafTUH2/S//S2kyz/zSbcNnbmXvfFn2R2FPBHa+1BY8zlwG3AhyGNSkRERESi0jPbyjAGbrtwdL/bFRdmc9bVwc5T9WGKLLzWHqwE/J8vC2CMYVpuKodioMz43ZIamto6hlRifC5jDFdNzWHdwcqIaZL1+60nKcxOYdGE/pdeCqeF4zJpauvgo4ro/1FkIP4ks38AOowxU4BfA4XA70MalYiIiIhEHWstz24/yeWTRjJ6RP9rgBYXZgOwPkZLjdcdrKIwO4VJIwMrsZ2ak8qBquhPZv+0rwJnvIMrJo8M6n6XTc2luqmNHRHwI8jpBhdrD1byuYvGBG30ORguHp8JwIfH6oY5ktDzJ5l1W2vbgVuA/7LWfpvO0VoRERERkS7by+rZX9nIZwcoMQYYl5nMhKzkmEtm3W7LqfoWvv2JSfzuzosCHkGcmptGSU0TbVFefv36vgoumzRy0Evy9GWZZ6R77YHKoO53MJ7dfhK3hTv9eL+H05SRqYxIimfTcSWzAG3GmM8BdwOveq5LCF1IIiIiIhKNntl2kniH4dYL/Bv3KC7MZn1JDTZG5va53Zbd5fUs+fl6LnvkPT7/1FZ2l9cHlNBOy02lw20pqWkKYaShVVLduSTPp4JYYuw1KiOJovz0iJg3+/utJ5k7OoNZBenDHUoPDodh4bhMNh2v7Xc7t9tS3tBCaW0T5Q0tEVO6HQh/ktn7gMXAQ9baEmNMIfBkaMMSERERkWjidlue3V7GNdNzGZnq3yqOxYXZlDe4OFwdvYlbdxWNLpav3ERpbec6saW1zSxfuYmKRpff+5gaA8vzBGNJnv4sm5bDuyXVtLR1DLxxiByqauTD43XcOW/ssMXQn4XjM9l5qoHmPp4j7w8vix9eT+FD61j88PqAf3iJBAMms9bavdbaFdbapz2XS6y1Pw59aCIiIiISLTaW1nKsrpnPzvW/5LK4sHM+ZayUGrva3V2JrFdpbTOudv9LhqflpgFwoDJ6m/cEa0mevlw1NZfmNjcbS/sfeQyl3289iTFwx9z+G50Nl4XjMulwW7afPOPz9mD88BIJBkxmjTFTjTHPG2P2GmOOeE/hCE5EREREosMz20+SFO9geVGB3/eZmZdGdkpCzCSzzngHE7KSe1w3ISsZZ7w/xZCdRqYmkp2SELUjsy1tHfz5UBXXBnFJnnNdNmkkcQ7T1TE63Ky1/H7bCS6bNJKxmckD32EYXDyus7vyh33Mmw3GDy+RwJ9P1krgUaAduAL4LfC7UAYlIiIiItHB2/Dos3NH8/qXFpGaGOf3fR0Ow9KJ2awvqQ5hhOGTl+rkhXsXdiW0E7KSWXPfQvJSnQHtZ1puGoeisKOx220prW3mjw9cwoNLJ4asZDU9KZ5F4zNZd2B45s1uPXmGA5WN3Dkvsho/dTd6RBJjRiSxqY+Oxs64of/wEgn8aS+WbK1dZ4wx1tpS4J+MMe8CPwhxbCIiIiISwbzz7rzlit7kbXZBBg6Hf6NyxYXZvLL3NBUNLvLSA0v6Io3DYahvaeOnNxZRVJBORlI8ealOv58Lr6k5qbx1aPgbHAUiGO+FQCybmssP1x6gtqmVrBT/5mj74nZbKhpduNrdOOMd/b5e3m0dxvDivQu5fFL2oB83HDqbQPlOZssbXDx++xweWL2jx+sV6A8vw82f1LvFGOMADhpjvm6MuRkIzWxuEREREYkawZh317Xe7NHYKDVee7CK23+3hbEjkihITxpUIjc1N5UTZ1poam0PQYShEe45mFdNy8Ft4e3Dgx/VD6QJUvdt5//sHb61Zjeldc0R3TBp4bhMDlY1UtPU2uu2//3gGP/yf/tZ//WllHx/GRtXFIfsh4dQ8ieZ/RaQAqwA5gN3AfeEMigRERGRaBMLy1wEKhjz7uaPzSQp3hEz82Y3H6+jKD+dlMTBr686LaezCdShqujp8hzuOZiXjM8izRnH2iEs0RNIAh6NDZMWjssEOt+T3bV1uHluRxmjRyQzZkQyE7JSBv3Dy3Dzp5vxJmvtWaAeWGGtvcVa+37oQxMRERGJDrGyzEWggtHwKDHewSXjs1h/JPrnzVpr2Xy8jgWeJGKwpuZ6l+eJno7GCQ4T1jmYCXEOLps0knVDaAIVSAIejQ2TvO/Dc0uN/29/JVWNrdx5UeTO+fWXP92MFxhjdgE7gV3GmB3GmPmhD01EREQkOkTjqE0w5KU6ee7uBUNueFQ8KZttZfWcdUVPWa0vR2uaqW5qY+G4EUPaT9das1HUBOrF3eU8fvucIb8XAnHnRWP40adncri6cVDVEGea2/1OwIPxw024ZSYnMD03tVcy+/S2k2SnJHDN9OifOepP/cNvgK9Za98FMMYU09nh+MJQBiYiIiISLfoatfGWHvvTXCYaORyGHafO8NMbi5g7ZgTJCYM7xk/PyGPemBGcPNPMiOSEqH2evEnDUEdmUxLieOWLF1OQ4aS8oWXYng9/myPtPlXPt9fs4R+unsrGFcVheb+73ZbpeWncumqzXw2nuh9LYpyD3205wYu7TvHbz13E3U9v69rHH+5Z4DMBz05OYOUdc7nvme1R1TBp4bhM1h6swlqLMYazrnZe2l3OF+aPJTGCE3F/+ZPMNngTWQBr7XpjTEMIYxIRERGJKt5Rm+4J7fKifMrqXdz2W/++bEerF3eWc7S2id1/d8Wg7u92W5IT4vjrl/dE/fO06XgdiXEOLijIGPQ+vCXrX39x17A+H/52J3a7LV97YRcjkuL56pKJ5IQpuatodHUlsvBxNcTGFcUUpCcNeCyP3z6H5HgHi8dnsXFFMc2tHewqb+CpLSeYN7b3jxErNx3niU3Hee2BS0hJjIuaH6cWjs/iya0nOXmmhbGZyazZU05TWwefj+BlhQLhTzr+oTHmV8aYy40xlxljHgHeNsbMM8bMG+jOxpg4Y8w2Y8yrnsvZxpg3jTEHPedZ3bb9njHmkDFmvzHmmsEfloiIiEj4JMc5+PU5JZb/fsOsrkQWYrP02FrL+8dqWTRh8EuUVDS6uPmJ2CjR3ny8jrmjM4Y04hUpJev+xrFy03HWl9Twb9fPClsiC4HNYfV1LA+s3sFtc0cTH++gID2JwpGpHKhs5GfvlvDG/ooe929qbedf3jxAvMMwIy8tqhomXeypEvjQUzXw9NaTjMtMYunEyF5WyF/+jMzO9Zyfu67sEsACVw5w/28CHwHen6i+C6yz1v7YGPNdz+XvGGNmAXcARcBoYK0xZpq1tsOPGEVERESGzVPbyvjdluOs/cpi4uMMznhHVDaMCVTnsh9tLJow+LLaWHmeOtyWLSfruHv+uCHtJ1Kej77iOOvqwJ3aWbLb1NpBXnoiX1k0nnsXDu24A+WrGqKvOaz+PqffKJ7Ir2FcF+oAACAASURBVDYe5a/X7GHH3+QQH9e5r5+vP8qpehfP3jUfYyI/ge1uzugM4h2GTcfruLQwmzcOVPI3l02OikTcH/50M76in1O/iawxZixwHfB4t6uXA6s8f68Cbup2/TPWWpe1tgQ4BFwc6AGJiIiIhNsTm47R0u5m0siUrlGbaGwYE6iNR2sBWDyEkdlYeZ72V5zlrKujazmUwYqU56OvOE7UNfPh8ToWP7yeKT/6Myte3M2XFk3Ahrlxd16qkzX3LfSr4ZS/z6kzPo7/uKGIjyrO8j8bSwGobWrlJ28d4rqZeRQXjgzR0YROUkIcc0ZnsOlYHat3lNHhtjFTYgz+lRkPxX8Bfw90/9kj31p7CsBz7m2jNQY43m27E57rejDGfNkYs9kYs7mycvCtuEVERESCYWdZPZtPnOHeheN6jNr4+rL9UhQ0jAnExtJaRiTFMzMvbdD7CCQpiWTe5k9DTWYj5fnIS3Xy4r0943jh3oUkJ8TxuSe39CjZvXXV5rCXQTschtkFGWxcUcyH37yUn988m5l5aT5HHPNSnTx/j39dt28syufKKTm8sqecE3XNlNY28+vb5/CfNxSF/JhCZcG4TDafqOOprSeZXZDOBaMGP6c70gx+NecBGGOuByqstVuMMZf7cxcf1/X6jcda+xjwGMCCBQtie/E2ERERiXgrNx0jIc70Gu3o/mW7pqmN/RVnu66PFe+X1nLJ+KwhHVP35+loTTONre1R2fxp84k60pxxTB9CYg89n4+KhlYOVzeSlxb+RkMOh6G2uZWf3lhEUUE6GUnx5KU6OX6mOSLKoL0xFqQn8d7RWj6zajNvfmURy6bm+tzu3SPV/Gx5EXNG99912xjDI7dcwPEzzVz6yw09ml+53Tbq3pcA187I5ZPTcslOSSTNGRe1x+FLKEdmlwI3GmOOAs8AVxpjngROG2NGAXjOvTOsTwDdi+3HAmUhjE9ERERkSFrb3Ty19STLiwp8Nr/xftkele7k9t9t4dntsfPVpqGlnd3l9SyakDXwxgPwPk9r9pRz7f9+QFNb9LVM2Xy8jvljMokLQpLgfT6c8Q5uXbWZ1TuG533z2keV3PnUViZkJXc1PIqUMujurp2RR2piHM/tOOXzdrfb8h9vH+GJTccpzB64eVNGcjwPrN4x7E24gsHttowdkcxfv7yHKx59j8+s2szu8vqA1+SNVAO+64wxKcaYfzDG/K/n8lTPqGu/rLXfs9aOtdZOpLOx05+ttV8AXgbu8Wx2D7DG8/fLwB3GGKcxphCYCnwY8BGJiIiIhMmrH52mqrF1wOY3WSmJXFqYzat7T4cpstD78HgtbktQklmvK6fk0O62vHukOmj7DIfWdjfby+qHvL7suabnpXHBqHSe3+k7SQu1DUdrWDB2BM74uK7rIqUMurvkhDiun5XPi7tO0eEjSXu3pJqy+hbumOvfXNFIacIVDH0tYRSNibkv/vyEshJwAYs9l08APxzCY/4YuNoYcxC42nMZa+0eYDWwF3gdeFCdjEVERCSSPfHhcUZnJPHJab1LG8913cx8dpc3cLSmKQyRhd7G0s7mT5eMD14Ct3RiFolxDv58KLqS2d3l9bja3SwYNyLo+/7MhaPZcLSGsjMtQd93f5rbOthyoo6l5zQ96l4GXfL9ZWxcURwRZeG3XjCKysZW3vHxQ8jT28pISYjjhln5fu0rEkefByuWEnNf/HlFJltr/w1oA7DWNuN7fmufrLVvW2uv9/xdba1dZq2d6jmv6bbdQ9baydba6dbaPwXyGCIiIiLhVHamhdf2nebuBWO7lvDozw1FnV+kY2V09oPSWmbmpZGVkhi0faYkxrNkYhZ/PhRdTT6D1fzJl89cOApr4YVd4R2d3XSsjrYOy9KJvUfevWXQkbTe6qdn5pGSEMdz55Rkt3W4+cPOMm4syifV6V+7oEgcfR6sWErMffHnKFqNMcl4mjEZYybTOVIrIiIict763ZYTuC1+r685LTeNabmpMZHMWmt5v7SWRT4SnaG6cmoO28vqqW5sDfq+Q2XT8TOMTEmgMDsl6PuemZ9OUX46z+8M77zZDUc7x5uWTBz8skvhlJIYz3Uz83hxd3mPUuO1Byqpbmrjjov8X44mUkefByOWEnNf/Elmf0Bn2e84Y8xTwDo6l9sREREROe+43Zby+hYunZTNm19ZxJSRqX7f9/pZ+bx9uJqGlvYQRhh6B6saqW5qY3EQ58t6XTklB2vhrUNVQd93qGw+XseCcZk9lmYKplsvHMW7JTWU14ev1HhDSQ0z89IYmRq8kfdQu/XC0ZxucLG+5ONS42e3l5GZnMA10weeCtBdJI4+D0YsJea+DJjMWmvfBG4B7gWeBhZYa98ObVgiIiIikcfttuwur2fxz9dT/IsNPLB6R0CdQW+YlU9rh5v/O1Ax8MYRbOPRzvmyi8YHP5ldOC6TNGcc66IkmW1qbWfP6YagN3/q7rY5oz2lxuUhe4zu3G7Le6W1LCmMjlFZr0/PzCM5wdHVMKu5rYMXd5dz8wUFPZpYnW9iJTH3xd9i6SSgFqgHZhljPhG6kEREREQiU0Wji+UrNw26M+jSidlkJSdEfanxxtJaMpLimZWfHvR9J8Q5uGzSSP58MDqS2e1l9XS4bUjmy3oVFaQzMy+NP4Sp1Hjv6QbqmtsojpISY680ZzzXzsjjhV2ncLstr310mgZXu99djCX6+LM0z0+ADcD3gb/znP42xHGJiIiIRJyhdgaNj3Nw7Yw8/vhRhc8lRKLF+6W1XDI+M2QjPFdOzeFgVSPH65oH3niYhbL5U3e3XjiKvxyppqIh9K1rvPNll0bZyCx0dn8+Ve9iw9Eant1eRl5aIldMHjnwHSUq+TMyexMw3Vp7nbX2Bs/pxlAHJiIiIpHN7baUN7RQWttEeUOL36W20SwYnUGvn5VPVWMrHxyrDXZ4YdHQ0s7u8noWTQhdonPllByAsI/OBvqedrst88eM4J0Hl2IMIf0M3DZnNO4wdTV+72gt+elOJo8MfkOrULtuZj6XFmbhMIavFxfy4r0LcYRoLrMMP3/+5T0CJIQ6EBEREYkeXXNHH15P4UPrWPzw+oDmjkarvFQnz3xh/pA6g35qRh7xDsMrUVpqvOl4HW5LSJo/eV1QkEFOaiJ/DuO82UDf097t73p6G5/45YaQfwZmF6QzLTeVPwwxmfUnYV9fUsPSiVkha2gVSqmJcfzw2pl84fdbufyR97jzqa3nxb9N5yt/ktkmYLsx5lfGmIe9p1AHJiIiIpFrqHNHo5XDYfjDzjIeueWCQXcGzUxO4NLCbF7dE53J7MbSzhLUS8aHrqzW4TBcOSWHdQersDY8SUig7+lwfwaMMXzr0kIeXDKRI9WNg6qG8CdhLzvTQklNU1SWGEPn63L309vOu3+bzlf+rBz8suckIiIiAgx97mi0au9w89gHxzjjaufamfmD3s/9l4wjOSGew1WNpDrjyEt1DkuHUbfbUtHowtXuxhnv6DcO77afnJbL/LGZjEgKbeHelVNzWL2jjP2VZ5mRF/xGU+cK9D3d3NoR1s+A2225eHwWt67aTGltc1dVQCA/pvSVgG9cUUxBehLQbb5slDV/8jpf/206Xw2YzFprV4UjEBEREYke3rmj3b80Bjp3NBptPnGG+pZ2rpoa2JqV3bndlpl5GdyyatOgk5Jg8I7SeZOb/uIIZNtgWeaZN7vuYFVYktlA3tM1Ta0crGoM62egotHVlciC70R0IP4kehuO1pCc4OCiMSOCF3wYna//Np2v+nxVjTGrPee7jDE7zz2FL0QRERGJNGkJ8Tx++5wec0d/89m5tLR1DHNkobX2YCXGwBVTBt8dtaLR1ZXIwvCVQQZSJjscZeWTRqYwPjOZt8I0bzYv1cnzdy/o8Z5+/PY5vLy7vEepc21TK5/81fv865sHeO6c7QOdPx2IYIw4OuMGbmC2oaSGS8ZnkRAXnclfXqqTNfctDNvrIsOrv5HZb3rOrw9HICIiIhI93jhQwX+8fZg3vrwIZ7wDa+Gvnt9BamIc/3XTBbitHbBsNRqtO1DFRaNHkDOEL8aRUgbZVxx1zW3kpiRS2dTaWX4c5+BMS3vYYzbGcP8l45g7egSltU0hfz85HIY/H6riv5bPZs7oDJzxDh7/oJQfvHGAs63t3HnRWJrb3RyqPEtygoPvLZvKvDEj2Lii2K8y7aEKxojjlhN1PH77HB5YvaNrhP2JO+aSntCZEpx1tbO9rJ7vXjkl6PGHi8NhmF2QEbbXRYZXn8mstfaU57w0fOGIiIhINHhlz2kOVDYyKTuFeM8Izk+un0V1Yyuf+OWGYS2fDZVGVzvvldbwrUsnDWk/kVIG2Vccp+pbqDjbyj2eJjoTspJ5/UuLwh6z2225Znoen/3dlrC8nzrclp++c4RLC7NZPnsBAN9fNo3UxDjmjB7B4p+v74rjubsXMG/MCBwO43eJ71B5RxzPLfX2d8TxdIOLu5/ezmcuKGDjN4pxdbhpbnPzxWe2MXpEEqvvWsAHx2rpcNuonS/rFc7XRYZXf2XGDcaY+m7n9d0vhzNIERERiRwdbssfPzrNdTPzuhJZgPx0J/d7Rnwg9rqIvltSQ1uH5appg58vC5FTBpmX6uSZu3ouM/TSfQvJS0vqSmSh83X87h/38sK94Y25otHVlch64wjl++kvh6s53eDi9jmju65zOAx3XjS2ayTTG8dtv90c9vd19xHHTd+6lIdvns3MvDS/E/tvvrSbxtYOvn35ZAoykpiQlcKMvDRumzuaF3aV8/gHpYxISuCtry7hglHpWspGokJ/I7Ohn2kvIiIiUWdjaQ3VTW1cP6ugx/WRUj4bKmsPVuKMd1A8xCVLuiclJ+taONXQwqy89LCPXjschld2l/OLmy9g9qj0rnLM42eae72Oa/ac5pe3XBDW0s1gvZ/87di8ekcZqYlxfHpmXs84OiLnfe0dcVx/pIbbf7eFt7+6hE9MHnj+9prd5azeUca/fmp6r2Za37p0Emdd7UzOSeW23w6+U7LIcOi3NsQY4zDG7A5XMCIiIhL5Xt5zmoQ4wzXTe45QestWu4ulLqLrDlaxZEIWyQlxQ96XNyk5VN3Ijb/ZxAfH64IQYWA63Jb/eb+U53eWMSErhYL0JBwO0+fr6I25+7ahFOj7ye22lDe0UFrb1LUGqz/rqkLnkksv7DrFDbPySUnsOdYTie/ra6bnkRjn4JW9fa9V7H0+SmqaiHcY7rxoDH9/Re+5sMYYHrhkQq/R51iqqpDY1e+n0FrrBnYYY8aHKR4RERGJcK/uPc3lk0cyIrnnOqO+ymdfuDc2uohWNLjYUVbPsiGWGJ/rU9PziHeYfpOSUNl28gw1TW29yqYjqQza3zh8Ja27yus5XN3oVxfmtw5XU9XYym3dSowHE0e4pCfFc/nkkbyyt9zn7d2fj8n/bx1ff3EX375sEnHG9w8QrRE0+iwSiAHXmQVGAXuMMR8Cjd4rrbU3hiwqERERiUgHKs+yr+IsX10ysddt3ctnG10d7DxVzwelNVG7XmV3f/YsD3PV1Jyg7ndEcgKfmDSSV/eW8+PrZgZ13wN580AlQK81cyOlG2z3OEprmqltbqMo33c5tq+lg25auYnXHrjEryTt2e1lpDnjuHZGzxLjc+OIpO64NxTl840Xd7O/4izT89J63Obr+fjMqs19rkkbKU3JRALlzzv0n+lcnudfgP/sdhIREZHzzCt7OkcQb5iV7/N2bynq5JxUVm0+zg/eOBATa8+uPVjFiKR45o/NDPq+r5+Vz97TZzlS3TjwxkG09kAlc0ZnkJ/ee4Qx3CXFffHGsfXkGT79+AfsKm/wuV1f82uTEgYuEW7rcPPirlMsLyogqY8S8kh5PrrzfgZf3tN7dDbQ+caROPos4o8Bk1lr7V98ncIRnIiIiESWV/ee5sJRGUzMThlw2weXFlLZ2MrqHWVhiCx0rLWsPVDJlVNyiAtBEuNNSsJZatzoamfD0dpeo7KR6rY5o4h3GJ7aetLn7X3Na01zxvVK0p66c16PJG3tgUpqm9t6dDGOBuOzUpgzOoNXfbxvAp3n2330ueT7y9i4oljNnyQq9Lc0z3rPuZbmEREREaobW1l/tIbr+xiVPddVU3OYkZfGL9aXYG30LvNxuLqJY3XNLAtR4jc5J5WZeWk+k5JQeedINa0dbq6eFtyy6VDJSXXyqel5PLP9pM8lY/JSnTx550W9RhZHJjt7JGlPf2E+f/PKHt46XNV13+d2nGJEUjyfnB4diX13N8zKZ8PRGqrOmQOc6Yxn5WfnBjTSGomjzyID6W9pnmLPuZboEREREf60r4IOt+XGIv+SWWMMDy6dyDde3M0Hx+pYNCErxBGGxlrv3NIQJn7Xz8rnZ+8c4UxzW6/GWqHw5sEqnPEOLp008LIukeJz88bw6keneedINZdP6flaHK1t4u9f3cszX5hPQYaz17xW7zzRvDQndc1t3P/sDnb+7WU44x28uPsUN80uwBk/9C7V4XZjUQE/XHuQ1z6q4O4F47quf3jDUV7cdYo3vrQIZ4IjYub5igSb37O6jTF5xpjx3lMogxIREZHI8+re0xSkO1kQwLzRu+ePI90Zzy83lIQwstDwLm0yf1wmr95/MZP9KK0erBuK8ml3W97YXxmyx+hu7YFKLi3MDsoyQ+Fy46x8UhPjeGpb71Ljf3vrMFtO1DMuM7nfkcXkhDieuOMiTpxp5ufrSzhS3cRL913M318xxeeIb6SbN2YEozKcXXPZobOC4kfrDpKTmsi0vDSNtEpMGzCZNcbcaIw5CJQAfwGOAn8KcVwiIiISIdxuy6n6Fh5cOpHn71kQ0H3Tk+K5d+E4Vu8oo7y+JUQR+s/XWqR9bedd2uSS/36XB1/YxZ7TDSFLeBaNzyI7JYE/fjT0UuOBjvFUfQu7yxt6LckT6VKd8dw8u4A/7DyFq/3jpmInzzTzxKbj3LtwHKNH9O7Ue65LJmTx3zfNZtGELD79+Adc8eh7fPrxD3yuPxvpHA7D9bPyeeNARddz8q9rD9Dgaucn180a5uhEQs+fkdl/BRYBB6y1hcAyYENIoxIREZGI4E3qlvx8PZc98h6ff2prwF/6H1w6kbYOy2PvHwthpAPztRap91jOTQArzvZe2sTX+qTBEh/n4NMz8njto9N0DCGh6u8YvbxL8lwdZckswOcuGkNdcxt/2lfRdd1//uUIHdbynSum+L2fWy4YxQOrd4Tt9Q2lG2cVcNbVwduHqzlc1cij7x3lixePZ1aBZgpK7PMnmW2z1lYDDmOMw1r7FjA3xHGJiIhIBPC1XmWgX/qn5aaxongi88dmcLSm/xHRUOrrWE6caWLXOQlgvas9oKVNguH6WQVUN7WxsbRm0Pvw5/Vae6CS3NRE5ozKGHLM4Xb1tFxyUxN52tPVuKrRxWMbS7nzojEUjvS/DLy1I7ClayLZlVNzuLQwiwxnPLXNbTx39wJ+eO304Q5LJCz6bADVTZ0xJg14B3jKGFMBtIc2LBEREYkEga5X6YvbbfnC/HHc9tvNlNY2d3VWDffSH30dS0u75aZzEsBDVY1MyErusX1/S5sEwzXTc4l3GF7Zc5riwsE1Zmp0dfT7ellrWXuwiqum5UblHMr4OAe3zx3Nrz84Rn1LG//1TgnN7R1890r/R2Xh46Vrwvn6hoozzsEPr53JnU9t7fH5yklRwyeJff58YpcDTcC3gdeBw8ANoQxKREREIkOg61X6UtHo6kpkYfhKOvs6FoehVwL4r28e4IV7Fwa0tMlQjUhO4CuLxnPFlJwB5/RCz7mxZWdaePz9o+wub+j39dpd3kB5g4urpkbHkjy+3HnRGOaMzuBIdRPXTM/lrb9awvTctID2kZfq7LX+bKhf31CpaHRx99Pbhv3zJTIcBhyZtdY2ev50A6tCG46IiEjkcrstFY0uXO3u82api7xUJ099fh6fP2fUJ5Av/cEY3Q2G3JREVt4xl/ue2d7jWNIS43uN0pU3uBib6WTjiuKwvd7eEew7ntwy4Ai2d26st6R4QlYyj98+h4OVZ3nh3oXc8sTH1//ms3OpbWqlID2J/9sfvfNlvS4el8mPPj2Tm7sdY6Aj/Q6H6Vp/Nto/z5Hy+RIZDv6UGQ+KMSaJztJkp+dxnrfW/sAYkw08C0ykszPy7dbaWs99vgfcD3QAK6y1b4QqPhERkUD4Sh6Go1Q23IyBf3/rECs/O5fCkSmD+tIfKSWdm06c4Xt//Ig1913MiOT4rmMBWHPfwl6v7cjk8CY3FY2urkQWPh5h27iiuGud1O7bnjs39oHVO9i4opi81I+TcGvh22t2U+9q539uvZBLJ2Xz2gOXMDpj4K6/kaqyqZX7nt3u1/PUH4fDBLR9pIqUz5fIcAhZMgu4gCuttWeNMQnAemPMn4BbgHXW2h8bY74LfBf4jjFmFnAHUASMBtYaY6ZZazv6egAREZFw6auxTqBfoKPN5uNnWLPnNMtnj+LyKYMrTfWWdHZPFl8ahpLOVZuPs/NUPROzk8lISuhxWySM0gUywtbftucmaY/ceiH7K8/yycfej4kfYjQS2ZOvz1e0lkyLBKrPZNYYs85au8wY8xNr7XcC3bG11gJnPRcTPCdL5xzcyz3XrwLeBr7juf4Za60LKDHGHAIuBjYG+tgiIiLBdr5+gX5uZxnxDsPyovxB76N7SWddcxsfnT5LVaMrrIlUS1sHz24v45YLRvVKZL0xDvePEoGMsAWyrTF0lVZD9P8Qo5HInmKpZFokUP196kcZYy4DbjTGXGSMmdf95M/OjTFxxpjtQAXwprX2AyDfWnsKwHOe59l8DHC8291PeK47d59fNsZsNsZsrqys9CcMERGRIeureVC8w/RYn3Q4lpwJFWstf9h5iqum5pCVkjikfXmTxak5aax4aTf/+faRIEXpn1f2nqauuY27F4wL6+MGIpCmRDnJnfN//dk21n6IiaXmTcHi/XxNyEqhID1JiaycN/orM/5HOkuAxwI/Pec2C1w50M49JcJzjTGZwIvGmNn9bO7rU9frG4G19jHgMYAFCxbEzjcGERGJaK62Dh6/fQ4PrN7RVcr37F3zOFzdxD2eTqLRXr55rq0nz1BS08T3r5oatH3GOQz3LRzHQ+sOcqy2ifFZ/q8NOhSrNh1nzIgkrhxkqXQ4dB9hO93g4kh1E1nJCT7fS38+XMUP3tjPy1+8mIyk+H5H42JtJFMjkSLi1ee/Ytba56211wL/Zq294pzTgInsOfuqo7Oc+FPAaWPMKADPeYVnsxNA959LxwJlgTyOiIhIqDy68Rj/+Po+/vK1JZR8fxkbVxQzKiOpK5GF2FsS47kdp4h3GG6aXRDU/X7x4vEArNx0fIAtg6O8voU3DlTyhfljiYvwhMc7wpab6uSzv9vCf71b4nO7X6w/SklNE9NyUwccjYvFkUyNRIoI+LHOrLX2X40xNxpj/sNzut6fHRtjcj0jshhjkoGrgH3Ay8A9ns3uAdZ4/n4ZuMMY4zTGFAJTgQ8DOxwREZHga+tws2rzcXLTnIzPSun6Au22vdcnjebyze46S4zLuHJKDtlDLDE+18TsFK6emstvPjxGRxDKsruvt+qr1PuprSfpcFvuWTB2yI8VLqNHJHHrhaNYuek4ja72HrcdqW7kj/tO86VFE3DGxw24r+4jmd4fYmKlekBEzm8DJrPGmB8B3wT2ek7f9Fw3kFHAW8aYncAmOufMvgr8GLjaGHMQuNpzGWvtHmC15zFeBx5UJ2MREYkEf/zoNKcbXNzvGVH06msebbSWb3a3vayew9VNfGbOqJDs//5LxnO8roU3Dwyt/4V3yaTFD6+n8KF1LH54PbvL67sSWmstv91ynEvGZzIjLz0YoYfN15cWUtfcxpNbT/S4/pH3juIwhr9aPMHvfWkkU0RikT//214HXG2t/Y219jd0lgpfN9CdrLU7rbUXWWsvtNbOttb+i+f6amvtMmvtVM95Tbf7PGStnWytnW6t/dNgD0pERCSYfv3BMUZlOLl2Rl6P632Vb/7hngVRXb7p9dyOMuJCUGLsdWNRPjmpifz6g2ND2k9fSyZ5S723l9Wz61RDRDd+6suSiVnMHZ3BL9YfpXORCGh0tfObD49zy+wCxoxIHmAPIiKxzd91ZjMBb9I5IkSxiIiIRJwTdc38aV8F37lyCvFxPX8D7l6+2dzWwa5TDfxx72nmjc0cpmiDw1rL8ztPccXkkeSEKDF3xsdx1/yx/Hx9CRUNLvLSB34ct9tS0ejC1e4mMc7B/oqzpCTG+Sz19pYeA7x470Ium5QdkuMIJWMMXy8u5IHVO3j7cDVXTMnhqW0nqWtu4+vFhcMdnojIsPNnZPZHwDZjzBPGmFXAFuD/hTYsERGRyLBy03Hcll4lxl7e8s3C7FT+b38lD607xOmG6G4AtfNUPYeqGvnMnNEhfZwHLhnP/LEjOHGmecCljc4tJ17y8/V0WEtTa0evUu/lRfmU1btY/PB65v/sHb61ZjfH6pqjctmkz100hpEpCfxyQwnWWn65oYQ5ozMoLoy+5FxEJNj8aQD1NLAIeMFzWmytfSbUgYmISGQaqNlOLHG7Lb/58BjLpuYwaWTqgNuvuLSQ1g43/7PxaMhjC6Xnd57CYeCmotCUGHtNz03jJ9fN4tZVm33Od+3OVznxA6t3MKsgrVep97/fMIvbfrs5JrpMJyfE8U+fnM4X5o3lo9Nn+adPTuefPjkNYzTnVUTErzJja+0pOrsNi4jIecw7OuZNKmJtXdVzrTtURWltMz/69Ey/tp+Wm8Z1M/N49L2jfPfKKX51mh0u3Ut2vet0AlScdXHtjDyumJxDTmpwuxifq6LRxT3P9F7aaOOKYgrSk3ps62p3+ywnbm5z91pztK9to7HLtNttWVKYzS1PfPyZe+m+hbjdNiY/cyIigYj+dosi24F89AAAIABJREFUIhI2AzXbiTW//uAY2SkJATVB+ualk6g428oz2yJjqXRfI+m+OgAfrDrLzlP1LP75eop/sYH7V2/vc5Q0WAJJOvvrHH1up95Y6jJd0ejqSmSh8/m5KYY/cyIigYi+f9VFRCQszk2CSmsaOVHXEjMjXv1xuy3H65r52pKJvHr/xSTG+f/f5bKpORTlp/Pf7x7p6kA7XHwlrZuO17HzVH2vHyUOVzdx8xPh/aEikKQzJzmRlZ+d26OceM19C312jvbVZbqvbSNdLI0yi4gEW79lxsYYB7DTWjs7TPGIiEgE8FVO/Pjtc4DOxKD7l+toHfHqy1BLqY0xfPMThXz5uZ28c6SayybnhCFq33yNpN/x5BZee+CSXglSamJ82JMmb9J57nPtK+lcf7SG7732Ea/cfzHpzviu0mhfr0n3LtPdy6ijsSzXm/DH8mdORGSw+v2X0FrrBnYYY3y3cBQRkZjUZ7Od/PReI14v3hudI159CUYp9efnjeXqqTmAGdZGWX2N6qUkxvUaEW1sbQ97aW73pPO9bxTz6K0XUJSf7jPp/N3WE+w9fZZJ2Sld5cT9Jafnlh5HYyILsTXKLCISbP40gBoF7DHGfAg0eq+01t4YsqhERGRY9ZUEtXZ83GznrKudXaca2HmqnrljYmcJ8mCUdTrjHPzTNdO586mtw9ooq69RvZRER68R0SkjU3jpvoXc5McoaTB5k87X91XyxWe389ZXF/cazW5u6+APO09x6wWjSEn0q3dlzIilUWYRkWDz53+Efw55FCIiElGccX2XNnqTD9LhS6t3crS2ic/PG0tcjHy57u/Y/VXR6OpKZKH/Lr2h1Nbu5vHb5/DA6h09EtSRyU5GJjt7JUjAsCVNt88ZxbfX7Oax94/1SmZf2XOa+pZ2Pj9/TFhiiTRdnzkREenBn3Vm/wIcBRI8f28CtoY4LhERGUYbS2t5/PY5A5Y2fr14IqW1zby69/RwhBkSeysa/Dr2/kRK057/fOcIP3hjH3/52hJKvr+MjSuKu0aHfZXhDmdpbkpiPHctGMcfdp6i6pyS7ie3nGDMiCQuH8b5xyIiEnkGHJk1xnwJ+DKQDUwGxgD/AywLbWgiIjIcDlSe5a7fb+O+hWPZ+I1iXB19j9ItLypgXGYSv9hQwvIAlq+JVG635W9e3suUkSm8941iWvs59v5EQtOe+pY2Vn54nOVF+YzPSgnb4w7FVxZN4BfrS3hi0wn+9vLJAFSedfH6/gq+/YlJMTP6LyIiweHP/6oPAkuBegBr7UEgL5RBiYjI8GjrcHPX77eRlODgu8umUpDR/yhdfJyDv1o8kXUHq/jodMMwRBxcr+w9zY6yeq6fVcCoAY69P76a9oS7UdZvPjxOg6udb35iUtgec6iKCtJZOjGL/32/tGtZo2e2l9Huttw1f+wwRyciIpHGn2TWZa1t9V4wxsQDw7twnohIGJ273upwdKUNNe8x7ilv4LtXTuHZu+YxZkTywHcEHrhkPM54B7/YcDS0QYaYtZZ/eXM/k0em8Pl5Q5ub2b1pz8HvXsnPbiziL0eqgla2O9B7ssNt+fn6EooLs5k/NjMojxkuX148gYNVjbx9uBroLDGeOzqD2aMyhjky+f/bu+84Kat7j+Of3xa2wIIrvUgRQQSUtsQQUVQ05VrRiGhUQIwp5mpuyrUlN8lNvNcSEkM03uu1gQ2xazTRxI5ioVdpUgSBpW9jZ9u5f+zsOrvzzO7M7tTd7/v1mhfDM888c549s8/Ob36/c46ISLIJJ5h9x8xuAXLM7GzgaeDl2DZLRCQ51K05OmHOQgbd9gYT5ixk9e6iNhXQBp7j2D++y09eWkP3jllhn2P3TllMG92HeYs/5/CRyhi3Nnb+unYPy3YWccvkIWSkt74cuG786eBuHXlu1S5uefVTCovDX94nlHDeky+v3c2WA2XccOqgVr9evH37pD7k52Ry/4fbWF9YwiefH+I7Y5WVFRGRYOH8tb4J2AusAr4HvAr8IpaNEhFJFtFYczTZReMcfzRxECN75fHZgbKUzGDXZmU3MOjoXK6IQTnrrWcNxVdVw+/f2dzqY4XTX396dwsD8nO4YETqjWPOyUzn1rOO49LRfSitqOK56QVcWdA+ZzEWEZGmNTsBlHOuxszmAh9RW1683tUNZBERaeOSZVbaptTUOApLfUFLrDTeFqrEtcRX1epzHNOnC3ecM5yLHvkkoeuqgvfPI1Qb6vY9VFbJLZOHkGaQGYWsbGPH9+jEtNF9+cv7W/n56YPp3qnlY2fLKqqb7K9lOw/zzmf7uevc4VHJMMdbTY3j9MHduHju4gbvpW65WltVREQaavavnJmdA2wG5gD3AJvM7FuxbpiISKIdOlLJZ/vL6ifxqRPvWWmb4lVyunFfCavCLI1etvMwnxaWtPocC0t9TJ+/LOEZ7EjKwgP3HX7X2/zkpTUMPDo3ZhnlW88awpGqama/81mLj7FhbwnrQ/SXc7XjaGuc44WZ47nm5P6tbXJCFJb66gNZaJvVECIiEh3hfFKZDZzhnDvdOTcJOAP4Y2ybJSISf4GT6mzZX8p3Fyznl39fx/wrxjWYlfaFCNccjSWvktPN+8u4MEQZauA5btxbws9fXsMDH27n2enj28S6qpGUTHvte2EMg6YTeuZx6ag+fLTtADsOHQmrHLtxf/3rc6v403uf8cz0ggb99fRV49h28AgT5ixk/N3vccMLq9l2sCylSr3rJMt7SUREkl+zZcZAoXNuU8D/PwMKY9QeEZGEqMvS1QU3A/JzeOjS0eTnZHJS79pZafeVVrBxbymV1TVJU+7o9cG/Y4cMz2DgQFkFOw+X8+2A8s2Hp43m+G4d6ZmXzaLrJ4ZVmuslGdZVhdCBULU/KKw7v+65HTh0pDLuQdNvvzmMrQfLOPXe95stx/Z6Tz48bTSDj86lb5ecBv1VU+M45Z73g4L4RddPpFdedszOJxaS5b0kIiLJL+RfBjO7yMwuAtaY2atmNsPMplM7k/EncWuhiEgceGXprn5qOb06Z305K23Xjnz/mZX85+sbE9zaL2WlpwWVnJZWVHmWoYLVB7JQe44z5y/H0qz+HKO5ruoLcV5XFb4MhAJdMKInu4p8DUqPF249wI5D5XEvIe+Ylc41C1a0OHM8c/5yMjPSgvqrssa1mWym13sp0koBERFpH5r6i32e/5YN7AEmAadTO7NxfsxbJiISR+WVzZc25mSm88NTBvLXdXtYt6c43k30tL+0ggemjmrwwf+4rrm84BEM5GamxyzgCVxX9dMbz+AP54/g/a0H4p7B7tExi0emjW5w7r8/bwSXzGsYxM+Yv5z+/pLxeAZNkZTQRrKvVxCfqtnMwPfSllsns+j6iQmZSExERJJfyDJj59zMeDZERCSeAme8dQ4+P3QkrNLGH35tIHe8uYk/vvsZ918yKt7NDnLfom2s2nWYhT86haoa12A248Zlw4WlvpiWb9ZlC3vlwe/+sYGnV+7iW8N6MqhrblSOH47PDx3hplfW8ez0Arp27EBWRlrIoDArI43junZsVXl1pCIpoY1k37psZmBJcipnM+veSyIiIk0JZzbjQWb2BzN7zsxeqrvFo3EiIrHQeMbbM+77gOzMtKBJdbyCge6dsriyoB+PLtnBnuLEzq7qq6pm/vKd9O2SQ98uOQ1KhL3KhuNZvvlf/3IC6Wbc+MraqB+7KS+s2c1H2w+Rl5VRf+5NZS1bW14dqUj6YNO+0qCse6h9lc0UEZH2yJpbMtbMVgAPAquA+tom59w7sW1a8woKCtzixYsT3QwRSTG7i8uZMGdhUMbr4x9PpLqGZrN06wtLOOHOt/jl2UP5zTeOj2fTG3h25RdcMm8Jr15zMt8c1iOs50SyBmtr/efrG/j16+t5+wdf47TBXWPyGo2d8ZcP2Fdawaqfn16/zWsipUStgVvXnsJSH3tLKti0r5SenbL42qCjG+xTWV3DSb9/m5G98pgz5UQqquOTORYREUk2ZrbEOVfg9Vg4sxmXO+fmRLlNIiIJE6rstKyihgH5zZfEHt+jE+cN78l9H2zlxjMGk9shnEtp9M1bvIPenbM4e2j3sJ8Tz/LNn51+LEt2HKS8qpptB8tiHoztLfHx3pb93Dx5SIPtgVnLeJUTN6WuD47O6cDFcxeTmWYs/+kkMtO/LJb6ywdbWb+3lDvPHU7vziq3FRER8RLOQKk/mdmvzGyCmY2tu8W8ZSIiMRKNyXJ+Omkwg7vmsnFfaVjrhUZbYbGPv31ayBVj+5GepJm67Ix0bj1rKN97ZmX9LMKrdxfF7Of08to91DiYMrJX0GPxLicOR4eMNO46dzjrCkv430Xb6rfvL63gN69v4Oyh3Th3eM8EtlBERCS5hfPJ7UTgu8DtwGz/7fexbJSISCw5R9hjEUM5ZWA+t59zAhc+/ElcArXGnli2k6oax/SCY+Lyei1RWOrj0keXhLUMTTS8sGo3A/JzGNO3S0yOHwvnj+jJmcd149evr+dAWQUAv3ptPUXllcw+bwRmiQ+6RUREklU4tXFTgGOdcxWxboyISDzc+/5W3ti4l7d/8DUwWlR2uresghnzlwcFaouunxiXMt55iz+noF8XhvfKi/lrtVQkS8s0JZxxvsXlVfxj416+N2FASgWAZsYfzh/B959ZwYa9JXTr2IGzhnajf34OI3t3TnTzREREklo4wewK4CigMJIDm9kxwDygF7UTR93vnPuTmR0NPAUMBLYCU51zB/3PuRmYBVQD1zvnXovkNUVEmlNeWc3/fbiNCQPzGXB0y5eMiVag1hIrvyhi+RdFzLlwZMxfqzUiWVqmTuPAtVtOB9YWFjc7edPf1xfiq6rxLDFOdiN75XHXeSO47LGl9ef4/Izx1NS4pCiHFhERSVbhlBn3BD41s9ciXJqnCvipc+4E4KvAdWY2HLgJeMM5NwR4w/9//I9NA0YA3wT+YmbpkZ+SiISrpsaxu7g8aMxnqO1twYIVX7C3tIIfnTKoVceJxrjblpq7+HMy043LxvSN+Wu1htcyNPOvGBeynLvxkkkT5ixk66Gy+kAWQpcqv7B6N906dmDioPjMmhxNhaU+rnhiaYNznPJI7MqxRURE2opwMrO/asmBnXO7gF3++8Vmtg7oC1wAnO7fbS7wNnCjf/t855wP2GJmm4CvAIta8voi0jSv5UqenzGeAUdls+1QOVMeSY5lTKLJOcc9C7cwrEcnJg/p1qpj1QVqgT+/udPGcFRW62c2DlVWW1Pj2FPiY8qJvTh/RC/yczJb/Vqx1HgW4Y17S/nvNzby9PQC0gh+LxWW+oIC1z3FFc1mwCuqanhl3R4uPql30k6G1ZREZvlFRERSWbOfuqKxnqyZDQTGAB8BPf2BLs65XWZWtzhiX+DDgKft8G9rfKxrgWsB+vfv39qmibRbXoHDlEc+4ZVZJ9cHsnXb4zkWNBwtXSv1o+2HWLzjMH+eMrLV4yobB2qlvmpmLVjO0O6deGTa6LCPH25Z7fAeeWGV2yabwKWA1uwu5qW1e3h86U5mjA+euMorqCss8XmWKlcHVAu8uWkfReVVTBnZO0ZnEVstKccWERGRMMqMzazYzIr8t3IzqzazonBfwMw6Ac8CP3bONfU8r09jQbWNzrn7nXMFzrmC7t3DX1tRRBoKlQ3qkGFJnSXyKkUNdxbhe9/fQl5WBleNi84MwIHLvQzvlce3hvVkw94Slu08HFaJtte5bDnoXVa7YX9pWOW2yexbw3owuk9nbn9zY4NgtM6Rypqg0u15iz/nuRkNS5UfunQ01z+/is/2lwLw/OpddMpK56xWZtsTxascO9LZtUVERNqjcDKzDabKNLMLqS3/bZaZZVIbyD7unHvOv3mPmfX2Z2V78+XEUjuAwE+Y/YAvwnkdEYmcQchskNf2DunJkSXyyiiHkzneXVTOghVf8P0JA8nLbn0psJdbJx/HmUO6cvHcxWFlT73OpbDEu6w2My25v2QIh5lx8+QhXProEp5duYupo/vUP7a3xMdPXlrNI9NG188SPSA/h99843iG98irz4BnZaRR4qvmw+2H+PnLa/jjBSO5clw/rhjbL2neo5FqnOVvyezaIiIi7VHEf/mdcy8AZza3n9XW2D0IrHPO/SHgoZeA6f7704EXA7ZPM7MsMxsEDAE+jrR9ItK86hrH7W9u5EGPtVZ7d8oOyhI9MHUUs9/aTHllVcInhjp8pKpFQd39H26nstpx3SkDY9a2vWUVXPnEsrCzp+WVoctqAw3IzyE7M3ETTkXTRSf25vjuHfnvNzfiXO37xznHNQtW8ObG/fTOy2bR9RPZcutkFl0/kZG9OpORkVafAe+Vl81x3Try1g8mcN0pg5j0lw847d4PuOrJZXFd5zfaArP8vfKyFciKiIiEodn0hJldFPDfNKAAj/JfD6cAVwKrzGy5f9stwO3AAjObBWwHLgFwzq0xswXAWmpnQr7OOVcd7omISPhmv7OZ/1m0nW8O6+GZDWqcJfpgywHe33aATz4/zFVPLkvYmM3Hl+6gY4d0z8xxZog21E2adOaQrpx67ASO69oxZu2LdCKfPcXB40HrymovajQBV92XDI3HzKZaKWp6mnHTmUOY+dRyXl1XyDnDe3L/h9t4ee0eZp8/nKE9OoV1nO6dsjj/oeQe2y0iIiKxFU6t3XkB96uoXRv2guae5JxbiPc4WIDJIZ5zG3BbGG0SkRZauuMQv/z7p1x8Ym/OG97Lc6KiwEl7AC46qQ/Hdu0Y94mhAidH2ldSwT0LtzCmb2eenzG+wWzLD0wdxf8u2sbVX+kPRn1gDgTN2BzLADzkRD4e5a/vbznAz15ew2OXj61fliVUWW2oLxlStRT18rF9eWH1LrIy0ti0r5Reedn86JQB3DDx2LCPoRmARUREJJwxszPj0RAR8dbSmXu9jrO7uJzyqhqemz6erw3Ij2hG3/zczLgGD15LBz16+RgK+nWhQ3p6g6BuT5GPSYO7cfp9H9Tv+8R3xpKeZlz66JK4BeBey/U8MHUU/9y4lysCJp0q9VUx86nlVFXXMKq3d4Dq1b5Q21NNutVmZ6c9tqT+5/TcjPERHUMzAIuIiEjIYNbM/qOJ5znn3G9j0B4RCeAV0LUksxjqOF1yMsM+TryDB6/Jka58Ypk/EM0ICuoubJQ1vvzxpfztuyfHNQAPyp6mp3H3e5uZ/c4W+nXJ4fTjamfbvflvn7JpXylvfn8CnbIz6BSjCamSVWGprz6Qhdo+ueiRyL5k8PriIBXLrkVERKTlmvoEVeqxrSMwC+gKKJgVibGWzNzbOJN7dE4mG/d5L/fS2uDhhSgFD43b3CUrgz1FvrAD0VAlpzmZ3uNrY5m9a5w9vWXyUF5cvYc739rIsV1zOVJZwxmDuzLwqOz64La9iUaJcFsquxYREZGWCRnMOudm1903szzgBmAmMB+YHep5IsksVMlutEp5oy3SD/1eGdiHLh1NTmZ6VIOHQ0cqWbenhHc372dUny6Rn1gzbX740tFU1biwA9FQWePcDmkJz951zs7kr7NOZtvBMib95YMGXwTU1LikeJ/FW7Sy/G2l7FpERERapslPDmZ2tJn9DlhJbeA71jl3o3OusKnniSSjuqBpwpyFDLrtDSbMWciq3UX4KqtY1Wh7sizxUfehP9CA/ByKy6s89/fK5F791HJ65nWIyrIudcHDsB55/H19IT9+aQ0fbD0Q0THqxu7WLe9TWBLc5plPLee4brlBSwSFCkTrssaN9+2ak1UfgAcu9RLvALJjVjqzFqxocI4XNrFkT1sXqr9UIiwiIiKRsLp1/oIeMLsLuAi4H7jXOVcSz4aFo6CgwC1evDjRzZAUsbu4nAlzFgZlg16ZdTLnPPhR0PZkWOKjoqqaD7YeZOZTy+szenMvG8NNf13Lf3z9eEb37dygNHfDvlLG/OHdoOPs+OVZ7CutiOqsvsXlVYya/TYZ6Wks+7fT6JjV/LhPryzsa9d+lWF3vBW075ZbJ3NMl5ywM+bJml0H2HawjEG3vRG0fcutkxmQn5uAFiVeMveXiIiIJA8zW+KcK/B6rKlPnz8FfMAvgFsDZj01aieA6hzVVorEWKiS3cx0S9olPh76+HPmLv6cV685mdwO6WRlpJGXmcGoPp3JTLf64Ly50txYjC/My87gwUtHc8ur61i5u4g+nbObPa5X5njTvtKQJaeRlJEmc8mpZt4Nlsz9JSIiIqkh5Ccp51yacy7HOZfnnOsccMtTICupqMbhWWqbneldyotrWA4b77Ljsooq/vMfG8hMT2NYj04MyM+lV142HbMz+MXZQ7mmUdnqzKeWM7iJ0ty64KHuONHIgk06tiuzzx/B5Y8tDatE2+sLhd/+YwPPzWjbJacqqxURERGJvva1HoS0WxVVNfzmtU956NLRXB1QsvvizPH07pQdNEnQ01eNY9vBI0yfvzxqZbmRmrNwC7uLfSy4alzQerBVNc4zm5xm8Z3htbDUx3ceXxr2LMmlFdVBGcrdxT76HZXVpmel1cy7IiIiItGnYFbahV+/vp55S3Zy1fhjPAOKxoFGdbVj4r3vt2opm9Y4WFbBnW9t5twTejJxUNegx5sqW41n+WYksy1vO1DGDc+v5pFpo5nR6EuCrjltP7BTWa2IiIhIdCmYlTbv3c37ueOtTVz9lf6ceVx3z30aBxrbDpYlZBxt3aQ4u4t8PDh1FCN65nnu57XmayLKVkMF1RmNAtPK6houf3wpq3cXM+joXGUoRURERKTVFMy2cam2rmq01J3fkcoaSiqquGhkL+6+YETYz0/EhD1eM/2+GGIt0mQpW/UKqh+YOoo73tjIXeePICsjHYBf/n09i7YdZP4V4+jfTmfvFREREZHoCrk0TyrQ0jxNCxUcDe+Rx9rC4qgu05JMvM77mekFjOnTJezz8zrGY5ePZcKA/Kj8jLy+TCgs9XkuHZQMSwQ1pfG5LN5+iPMf/oR/P+NYbjh1MIePVLKusIT1hSXcNHlIopsrIiIiIimkqaV5FMy2YaHWVX392q/y9fs/TLmgKVyhzjvS8wsM0nYV+fi3F1fz5yknUnDMUa1qn1egvODKcWSmpzH2j8FrxKbiWqRPLttBj05Z9TMuD8jP4YWZ4zmxjXxhIiIiIiLx0VQw234XOWwHfJXek/M4/7+NtyfDuqpQG+y1ZkmcSCYlakrgUjYn9OjE1oNH+NfnV0XUHq9z8VprdeqjS+pLmwOl6lqkZxzXLWjpoAsf/oTCUl+CWyYiIiIibUXqfUqWsJT4qthyoMwzOMoJsa5qVnri3w51WcsJcxaGtW6pl1gEhV1yMrnz3BP4aPshHln8eVjP8TqXJTsPs6fI5xlsd8nOaDNrkUbrCwURERERkVASH71IVARmALcfLOO651Zy69/WMf+KcUHBUd26qoHbH5g6iieX7mDHoSMtzohGg1fW8gJ/Ri/cjO2+Eh8PTB0V9aDwirH9OGVgPje/so6DZRUtOpep8xbTIUSwHTip05ZbJ7Po+okpO465LWWZRURERCQ5aTbjJNDamYW9xmA+OHUUWRlpjD/mqLDWVV27u4iT+nbhVP/aqomaFCpURm9viY/tB49w6aNLmmxfVXUN0+cvp09eNgt/dApVNS5qM/2aGX+eciI/fHYln+4toU/n7CaPHepc6jKwXsvqtJW1SJNl6SARERERabsUzCZYqBmHR/bqDBBWkOuVAZy1YAWLrp8YMjjy2h44aVJdRjTek0IdPlLluSROZloa5z8anLFt3L573t/Ksp1F3HzlEPp2yQk6fmud1Lszvz9vBJc/trTZoD/U8j7JsqxOLLWHcxQRERGRxFLNX4KFKqvdf8QX9tjRaIxPTIYxjg99vJ3vPbOCeZeNCSoRzslMb7Z9Ow4d4T9e+5R/GdaDi0/qHZM2Fpb6+M4TSz3LoBvrntuBuR7nEpiBHZCfS6+87DYZ5LWHcxQRERGRxFFmNsFCBZGHyqo8g1yvTGmJzzubGcn4xFBZxIwYByB1Jdb7SyvIz8nkK8ccxfh+XYIyeoWlPs/27S2poHdeFgeOVLKr2Mejl41lXL8umMWm3ZEE/S+u3cNdb23i+Rnjyc/NVHZSRERERCSKlJlNMF9VjedEOTUu9PI5gRMhrfziMH94Z3PIDGC46sY4Np4U6vY3NlIRo+xs4Gy/J/7+HX7y0hquPrk/HTLSgzJ6Xu177PIx3PfBFhZtO8iEOQs5+U/v8eMXV3OgrCJmk1eFO7GRr6qan7+8lhJfNSN75Sk7KSIiIiISZcrMJtCr6/Zwx5sbeXjaaGbOX95gDGaX7AzPTOTh8koOllUy5ZEvx9jOu2wM4/oEZzMjCZy8xjgu+fwQ936wje4dO3DthIH4qqM79nFPSXCJ9YUhss+hxmDm53TgnAc/ittYX6+JjR6cOoqS8irI+3K/u9/dwpYDZbx27VfJSIIlj0RERERE2hoFs3FWV1Z7oKySiuoaBh6dy0m98oKCNCAoaHrs8rEUFlfw3adXNAjernpyWVSCt8aTQp0zvBf3X3ISg47OZcKfF4Y1y3G4MzNvPVDG7mLv9VZDjdP1mrSqY1bzY2mjqXFQbcAPnl3Jpn1lfHzDqXTJyWR3UTn/9cZGzj2hJ2cP7R6TdoiIiIiItHcKZuOopsaxancRFwYEqM/PGM9ROR08Az6vTORnB0rjGryde0LP+kC27rVCZT7DnZm51FfNDS+s5l9PHRSzsb6xXM+0cVB98+QhnHnfIm775wZ+MmkwO4vKmXvZaEb36RyzNoiIiIiItHeqf4yRwHGtu4vLKSmvahDIQm1gOOUR75lwwXs22E5ZGWGN2YwWX3X4Ex6Fmpl59Z4iFu84VD8z8zkPfsQvzh7C+GO6BI2DjcZY33ivZzpxUFfmXjaabwzrwYQ/L2T83e/xby+uoai8KmZjd0VERERE2jtlZmPAK0P54NS4fyW2AAAKKklEQVRR5HbIaHVW1WvMZiyDt0gyn+WV3oFvdkY6FzzUMMidMX85i66f2Oq1SJNlPdMzBncLO4MtIiIiIiKtp2A2BrwylLMWrOCtH3yt1SWx8Q7evILnB6aOYvnOIr457Msgrai8ks37S0Mu7xMqiPcaBxupaByjtSLJYIuIiIiISOupzDgGQq1F2iHdolIS61V+HCuBwfOWWyfz/o9O4dkVX3Dugx/x+vpCdheXs2V/KR9tO8hTy3bw1JXjgs4vNzM9rqXRiRDukj0iIiIiIhIdMcvMmtlDwLlAoXNupH/b0cBTwEBgKzDVOXfQ/9jNwCygGrjeOfdarNoWa6FKc5OlJDZSjTOfd503AgekpxkT5nw5y/GCqwoY0zv4/CB4ZuZ4j2uNtXiXf4uIiIiItHfmXGwmqDGz04ASYF5AMHsncMA5d7uZ3QTkO+duNLPhwJPAV4A+wD+Boc656qZeo6CgwC1evDgm7W+Npmb1TfbANVw7Dx9h4j3vBwXsocaIhrtkTyprD+coIiIiIhJPZrbEOVfg9VjMMrPOuXfNbGCjzRcAp/vvzwXeBm70b5/vnPMBW8xsE7WB7aJYtS+WUjUDG4mqGtfqNWLbmvZwjiIiIiIiySLeE0D1dM7tAnDO7TKzHv7tfYEPA/bb4d8WxMyuBa4F6N+/fwyb2jptPbBJxPquIiIiIiIidZIl8vBKWXrWPzvn7nfOFTjnCrp37x7jZkkoybC+q4iIiIiItF/xzszuMbPe/qxsb6DQv30HcEzAfv2AL+LcNolAeyilFhERERGR5BXvzOxLwHT//enAiwHbp5lZlpkNAoYAH8e5bRKheC4RJCIiIiIiEiiWS/M8Se1kT93MbAfwK+B2YIGZzQK2A5cAOOfWmNkCYC1QBVzX3EzGIiIiIiIi0n7Fcjbjy0I8NDnE/rcBt8WqPSIiIiIiItJ2JMsEUCIiIiIiIiJhUzArIiIiIiIiKUfBrIiIiIiIiKQcc85zOdeUYGZ7gW2JbkczugH7Et0IaRX1Ydugfkx96sO2Qf2Y+tSHbYP6sW1oD/04wDnX3euBlA5mU4GZLXbOFSS6HdJy6sO2Qf2Y+tSHbYP6MfWpD9sG9WPb0N77UWXGIiIiIiIiknIUzIqIiIiIiEjKUTAbe/cnugHSaurDtkH9mPrUh22D+jH1qQ/bBvVj29Cu+1FjZkVERERERCTlKDMrIiIiIiIiKUfBrIiIiIiIiKQcBbONmNlDZlZoZqsDto0ys0VmtsrMXjazzo2e09/MSszsZwHbLjWzlWa2xszubOL1xvmPu8nM5piZ+befZmZLzazKzL4di3NtyyLpRzMbaGZHzGy5//Y/Ac/x7B+P1wvVjwPM7A3/e+FtM+sX63NvK6LRh2aWa2avmNmn/t/F25t4vVB9OMPM9gYc+5pYn3tbEq3fxYDnvhR4LI/HdU2NsiheT982s/UBj/UI8Xq6nsZAlK6peQHblpvZPjO7O8Tr6ZoaZVH8XdRn1ASKpB/9j53kf2yN//Fs/3Z9RgVwzukWcANOA8YCqwO2fQJM8t+/Gvhto+c8CzwN/Mz//67AdqC7//9zgckhXu9jYAJgwN+Ab/m3DwROAuYB3070zyXVbpH0o/9nvTrEcTz7J4J+fBqY7r9/JvBoon82qXKLRh8CucAZ/vsdgPda0IczgHsS/fNI1Vu0fhf9j18EPNHMPrqmJmkfAm8DBWG8nq6nSdyPjY65BDgtwn7UNTWBfYg+oyb8FmE/ZgArgVEB/ZfeVP9E0I9t4pqqzGwjzrl3gQONNh8PvOu//w/g4roHzOxC4DNgTcD+xwIbnHN7/f//Z+BzAp7bG+jsnFvkat9J84AL/e3Y6pxbCdS0+qTaoUj70UtT/RPBfsOBN/z33wIuaMHptEvR6EPnXJlz7i3//QpgKRD0zWO4fS2Ri0Y/AphZJ+AnwO+a2EfX1BiIVh+GQ9fT2Il2P5rZEKAHtV8SNn5M19QYiFIf6jNqgkXYj18HVjrnVvifu985V63PqF9SMBue1cD5/vuXAMcAmFlH4EbgN4323wQM85d4ZFD7pjnG47h9gR0B/9/h3yax4dmPfoPMbJmZvWNmp/q3hds/Te23gi8vSFOAPDPr2vJTaPci7cN6ZnYUcB5fXrgDNdfXF/vLcJ4xM6/fZYlMS/rxt8BsoKyJ4+qaGj8t/V182F/y+MsQJXG6nsZXi6+pwGXAU/4PyI3pmho/kfahPqMmp1D9OBRwZvaav7T73/3b9RnVT8FseK4GrjOzJUAeUOHf/hvgj865ksCdnXMHgR8AT1H7jeVWoMrjuF5/yLVWUuyE6sddQH/n3BhqMz9P+McqhNs/Te33M2CSmS0DJgE78X4vSHgi7UMA/H+wnwTmOOc+8zhuU334MjDQOXcStd9gz43KmbRvEfWjmY0GjnPOPd/McXVNjZ+W/C5+xzl3InCq/3alx3F1PY2vFl1T/aZRe131omtq/ETUh/qMmrRC9WMGMBH4jv/fKWY2GX1GrZeR6AakAufcp9Sm+TGzocA5/odOBr5ttYPnjwJqzKzcOXePc+5lai/YmNm1QLWZpVM7vgTgJeA+GpY89gO+iPX5tFeh+tE55wN8/vtLzGwztd+E7cCjfyLpR+fcF9SO86srk7zYOXc4FufXHrSgDxf7n3o/sNE5d7f/uZH04f6A7f8H3BH1E2tnWtCP44FxZraV2r9bPczsbWAyuqYmREt+F51zO/3bi83sCeArZvY4up4mTEuvqWY2Cshwzi3x/1/X1ARp4e+iPqMmmSZijR3AO865ff7HXqV2vO1j6DMqoGA2LGbWwzlXaGZpwC+A/wFwzp0asM+vgRLn3D2NnpMP/BCY6pyrBkY3OnaxmX0V+Ai4CvhzPM6pPQrVj2bWHTjgH4NwLDAE+Mw5d8CrfyLpRzPr5j92DXAz8FBcTraNirQP/Y/9DugC1M+YGWEf9nbO7fLvdj6wLoan2C604HdxMbV/kDGzgcBfnXOn+w+na2oCRNqH/uqIo5xz+8wsEzgX+Keup4nVkmuq32UEZGV1TU2cFv5d1GfUJBOqH4HXgH83s1xqs7WTqK0K3aXPqH4uCWahSqYbtRfnXUAltd+GzAJuADb4b7cD5vG8X+OfzTjgOGv9t2lNvF4BtXXym4F76o5NbSZiB1AK7AfWJPpnk0q3SPqR2vECa6gdO7AUOK+5/omgH78NbPS/5gNAVqJ/Nqlyi0YfUvsNpKP2w9Jy/+2aCPvwvwOO/RYwLNE/m1S6Ret3MeB4A2l6NmNdU5OwD4GO1GYLVvof/xP+GTkj6ENdTxPcjwHH+qy5a6Guqcnbh+gzasr0o3//K/x9uRq4s7n+iaAf28Q1te5kRERERERERFKGJoASERERERGRlKNgVkRERERERFKOglkRERERERFJOQpmRUREREREJOUomBUREREREZGUo2BWREREREREUo6CWREREREREUk5/w/22IBOt78liwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] }, "metadata": { "needs_background": "light" - } + }, + "output_type": "display_data" } ], "source": [ @@ -65,8 +66,90 @@ "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
NameReferenceTurbo
ID
naiveNaivesktime.forecasting.naive.NaiveForecasterTrue
poly_trendPolyTrendsktime.forecasting.trend.PolynomialTrendForeca...True
arimaARIMAsktime.forecasting.arima.ARIMATrue
exp_smoothExponentialSmoothingsktime.forecasting.exp_smoothing.ExponentialSm...True
auto_etsAutoETSsktime.forecasting.ets.AutoETSTrue
thetaThetasktime.forecasting.theta.ThetaForecasterTrue
rf_dtsRandomForestDTSpycaret.containers.models.time_series.RandomFo...True
ensemble_forecasterEnsembleForecasterpycaret.internal.ensemble._EnsembleForecasterW...True
\n", + "
" + ], "text/plain": [ " Name \\\n", "ID \n", @@ -89,11 +172,11 @@ "theta sktime.forecasting.theta.ThetaForecaster True \n", "rf_dts pycaret.containers.models.time_series.RandomFo... True \n", "ensemble_forecaster pycaret.internal.ensemble._EnsembleForecasterW... True " - ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
NameReferenceTurbo
ID
naiveNaivesktime.forecasting.naive.NaiveForecasterTrue
poly_trendPolyTrendsktime.forecasting.trend.PolynomialTrendForeca...True
arimaARIMAsktime.forecasting.arima.ARIMATrue
exp_smoothExponentialSmoothingsktime.forecasting.exp_smoothing.ExponentialSm...True
auto_etsAutoETSsktime.forecasting.ets.AutoETSTrue
thetaThetasktime.forecasting.theta.ThetaForecasterTrue
rf_dtsRandomForestDTSpycaret.containers.models.time_series.RandomFo...True
ensemble_forecasterEnsembleForecasterpycaret.internal.ensemble._EnsembleForecasterW...True
\n
" + ] }, + "execution_count": 4, "metadata": {}, - "execution_count": 4 + "output_type": "execute_result" } ], "source": [ @@ -115,12 +198,55 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.25440.217286.467210986.2059
10.19690.170572.36239262.3183
20.29780.2508115.155618344.7882
Mean0.24970.212891.328412864.4375
SD0.04130.032917.80533938.5810
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.25440.217286.467210986.2059
10.19690.170572.36239262.3184
20.29780.2508115.155618344.7882
Mean0.24970.212891.328412864.4375
SD0.04130.032917.80533938.5809
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -135,7 +261,6 @@ "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ "1960-01 399.517880\n", @@ -153,8 +278,9 @@ "Freq: M, dtype: float64" ] }, + "execution_count": 6, "metadata": {}, - "execution_count": 6 + "output_type": "execute_result" } ], "source": [ @@ -175,12 +301,55 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.25440.217286.467210986.2059
10.19310.167571.17429049.5816
20.29620.2496114.629218211.8564
Mean0.24790.211490.756912749.2146
SD0.04240.033817.99793942.7545
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.25440.217286.467210986.2059
10.19310.167571.17429049.5815
20.29620.2496114.629218211.8563
Mean0.24790.211490.756912749.2146
SD0.04240.033817.99793942.7545
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -195,7 +364,6 @@ "metadata": {}, "outputs": [ { - "output_type": "execute_result", "data": { "text/plain": [ "1960-01 399.517880\n", @@ -213,8 +381,9 @@ "Freq: M, dtype: float64" ] }, + "execution_count": 8, "metadata": {}, - "execution_count": 8 + "output_type": "execute_result" } ], "source": [ @@ -234,28 +403,83 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "IntProgress(value=0, description='Processing: ', max=3)", "application/vnd.jupyter.widget-view+json": { + "model_id": "fa408e805a8d4bcd9b364b99b192338a", "version_major": 2, - "version_minor": 0, - "model_id": "7d05872e1878458e944e8e3c710383c0" - } + "version_minor": 0 + }, + "text/plain": [ + "IntProgress(value=0, description='Processing: ', max=3)" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "display_data", "data": { - "text/plain": " \n \nInitiated . . . . . . . . . . . . . . . . . . 10:53:09\nStatus . . . . . . . . . . . . . . . . . . Finalizing Model\nEstimator . . . . . . . . . . . . . . . . . . EnsembleForecaster", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Initiated. . . . . . . . . . . . . . . . . .10:53:09
Status. . . . . . . . . . . . . . . . . .Finalizing Model
Estimator. . . . . . . . . . . . . . . . . .EnsembleForecaster
\n
" + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Initiated. . . . . . . . . . . . . . . . . .13:50:44
Status. . . . . . . . . . . . . . . . . .Compiling Final Models
Estimator. . . . . . . . . . . . . . . . . .PolyTrend
\n", + "
" + ], + "text/plain": [ + " \n", + " \n", + "Initiated . . . . . . . . . . . . . . . . . . 13:50:44\n", + "Status . . . . . . . . . . . . . . . . . . Compiling Final Models\n", + "Estimator . . . . . . . . . . . . . . . . . . PolyTrend" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "Not Enough Data Points, set a lower number of folds or fh\n" ] @@ -284,22 +508,93 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Description Value
0session_id42
1Original Data(144, 1)
2Missing ValuesFalse
3Transformed Train Set(132,)
4Transformed Test Set(12,)
5Fold GeneratorExpandingWindowSplitter
6Fold Number3
7CPU Jobs-1
8Use GPUFalse
9Log ExperimentFalse
10Experiment Nameno_logging
11USI26fb
12Imputation Typesimple
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Description Value
0session_id42
1Original Data(144, 1)
2Missing ValuesFalse
3Transformed Train Set(132,)
4Transformed Test Set(12,)
5Fold GeneratorExpandingWindowSplitter
6Fold Number3
7CPU Jobs-1
8Use GPUFalse
9Log ExperimentFalse
10Experiment Nameno_logging
11USI34cf
12Imputation Typesimple
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "execute_result", "data": { "text/plain": [ - "" + "" ] }, + "execution_count": 10, "metadata": {}, - "execution_count": 10 + "output_type": "execute_result" } ], "source": [ @@ -320,15 +615,57 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.17660.154963.41676967.9167
10.13510.120552.33335842.1667
20.22590.195491.333312811.6667
Mean0.17920.156969.02788540.5833
SD0.03710.030616.40863054.8806
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.17660.154963.41676967.9167
10.13510.120552.33335842.1667
20.22590.195491.333312811.6667
Mean0.17920.156969.02788540.5833
SD0.03710.030616.40863054.8806
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "execute_result", "data": { "text/plain": [ "1960-01 405.0\n", @@ -346,8 +683,9 @@ "Freq: M, dtype: float64" ] }, + "execution_count": 11, "metadata": {}, - "execution_count": 11 + "output_type": "execute_result" } ], "source": [ @@ -361,18 +699,62 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.11380.107640.16671720.1667
10.03220.031412.5833289.4167
20.11760.110647.33332426.0000
Mean0.08790.083233.36111478.5278
SD0.03940.036714.9806888.8341
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.11380.107640.16671720.1667
10.03220.031412.5833289.4167
20.11760.110647.33332426.0000
Mean0.08790.083233.36111478.5278
SD0.03940.036714.9806888.8341
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "NaiveForecaster(sp=1, strategy='last', window_length=None)\nNaiveForecaster(sp=12, strategy='last', window_length=None)\n" + "NaiveForecaster(sp=1, strategy='last', window_length=None)\n", + "NaiveForecaster(sp=12, strategy='last', window_length=None)\n" ] } ], @@ -389,18 +771,62 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.11380.107640.16671720.1667
10.03220.031412.5833289.4167
20.11760.110647.33332426.0000
Mean0.08790.083233.36111478.5278
SD0.03940.036714.9806888.8341
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.11380.107640.16671720.1667
10.03220.031412.5833289.4167
20.11760.110647.33332426.0000
Mean0.08790.083233.36111478.5278
SD0.03940.036714.9806888.8341
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "NaiveForecaster(sp=1, strategy='last', window_length=None)\nNaiveForecaster(sp=12, strategy='last', window_length=None)\n" + "NaiveForecaster(sp=1, strategy='last', window_length=None)\n", + "NaiveForecaster(sp=12, strategy='last', window_length=None)\n" ] } ], @@ -424,15 +850,57 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.12260.114045.81483789.0261
10.12780.127549.99293759.3858
20.11440.109650.08254545.5664
Mean0.12160.117048.63014031.3261
SD0.00550.00761.9910363.8241
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.12260.114045.81483789.0261
10.12780.127549.99293759.3858
20.11440.109650.08254545.5664
Mean0.12160.117048.63014031.3261
SD0.00550.00761.9910363.8241
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "execute_result", "data": { "text/plain": [ "1960-01 432.979412\n", @@ -450,8 +918,9 @@ "Freq: M, dtype: float64" ] }, + "execution_count": 14, "metadata": {}, - "execution_count": 14 + "output_type": "execute_result" } ], "source": [ @@ -465,18 +934,62 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.12260.114045.81483789.0261
10.12780.127549.99293759.3858
20.11440.109650.08254545.5664
Mean0.12160.117048.63014031.3261
SD0.00550.00761.9910363.8241
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.12260.114045.81483789.0261
10.12780.127549.99293759.3858
20.11440.109650.08254545.5664
Mean0.12160.117048.63014031.3261
SD0.00550.00761.9910363.8241
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "PolynomialTrendForecaster(degree=1, regressor=None, with_intercept=True)\nPolynomialTrendForecaster(degree=1, regressor=None, with_intercept=True)\n" + "PolynomialTrendForecaster(degree=1, regressor=None, with_intercept=True)\n", + "PolynomialTrendForecaster(degree=1, regressor=None, with_intercept=True)\n" ] } ], @@ -493,18 +1006,62 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.12150.123245.64073009.1181
10.16510.179265.02465126.1853
20.11460.111050.15744417.8619
Mean0.13370.137853.60764184.3884
SD0.02230.02978.2810879.9150
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.12150.123245.64073009.1181
10.16510.179265.02465126.1853
20.11460.111050.15744417.8619
Mean0.13370.137853.60764184.3884
SD0.02230.02978.2810879.9150
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "PolynomialTrendForecaster(degree=1, regressor=None, with_intercept=True)\nPolynomialTrendForecaster(degree=3, regressor=None, with_intercept=True)\n" + "PolynomialTrendForecaster(degree=1, regressor=None, with_intercept=True)\n", + "PolynomialTrendForecaster(degree=3, regressor=None, with_intercept=True)\n" ] } ], @@ -516,11 +1073,11 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "## ARIMA" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "code", @@ -528,15 +1085,57 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.25440.217286.467210986.2059
10.19310.167571.17429049.5816
20.29620.2496114.629218211.8564
Mean0.24790.211490.756912749.2146
SD0.04240.033817.99793942.7545
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.25440.217286.467210986.2059
10.19310.167571.17429049.5815
20.29620.2496114.629218211.8563
Mean0.24790.211490.756912749.2146
SD0.04240.033817.99793942.7545
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "execute_result", "data": { "text/plain": [ "1960-01 399.517880\n", @@ -554,8 +1153,9 @@ "Freq: M, dtype: float64" ] }, + "execution_count": 17, "metadata": {}, - "execution_count": 17 + "output_type": "execute_result" } ], "source": [ @@ -569,18 +1169,68 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.27670.240191.60049823.6666
10.17970.162365.57635777.5063
20.31550.2685118.695716425.1666
Mean0.25730.223791.957510675.4465
SD0.05710.044921.68744388.4177
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.27670.240191.60049823.6668
10.17970.162365.57465777.2750
20.31550.2685118.696416425.3251
Mean0.25730.223691.957110675.4223
SD0.05710.044921.68834388.5729
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "ARIMA(maxiter=50, method='lbfgs', order=(1, 0, 0), out_of_sample_size=0,\n scoring='mse', scoring_args=None, seasonal_order=(0, 0, 0, 0),\n start_params=None, suppress_warnings=False, trend=None,\n with_intercept=True)\nARIMA(maxiter=50, method='lbfgs', order=(0, 0, 1), out_of_sample_size=0,\n scoring='mse', scoring_args=None, seasonal_order=(0, 0, 1, 12),\n start_params=None, suppress_warnings=False, trend=None,\n with_intercept=True)\n" + "ARIMA(maxiter=50, method='lbfgs', order=(1, 0, 0), out_of_sample_size=0,\n", + " scoring='mse', scoring_args=None, seasonal_order=(0, 0, 0, 0),\n", + " start_params=None, suppress_warnings=False, trend=None,\n", + " with_intercept=True)\n", + "ARIMA(maxiter=50, method='lbfgs', order=(0, 0, 1), out_of_sample_size=0,\n", + " scoring='mse', scoring_args=None, seasonal_order=(0, 0, 1, 12),\n", + " start_params=None, suppress_warnings=False, trend=None,\n", + " with_intercept=True)\n" ] } ], @@ -597,18 +1247,68 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.03390.033113.2626277.8525
10.05130.053019.1686455.3259
20.05060.049121.1925551.0621
Mean0.04530.045117.8746428.0802
SD0.00800.00863.3642113.1890
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.03390.033113.2626277.8525
10.05130.053019.1686455.3259
20.05060.049121.1925551.0621
Mean0.04530.045117.8746428.0802
SD0.00800.00863.3642113.1890
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "ARIMA(maxiter=50, method='lbfgs', order=(1, 0, 0), out_of_sample_size=0,\n scoring='mse', scoring_args=None, seasonal_order=(0, 0, 0, 0),\n start_params=None, suppress_warnings=False, trend=None,\n with_intercept=True)\nARIMA(maxiter=50, method='lbfgs', order=(0, 0, 0), out_of_sample_size=0,\n scoring='mse', scoring_args=None, seasonal_order=(1, 1, 0, 12),\n start_params=None, suppress_warnings=False, trend=None,\n with_intercept=True)\n" + "ARIMA(maxiter=50, method='lbfgs', order=(1, 0, 0), out_of_sample_size=0,\n", + " scoring='mse', scoring_args=None, seasonal_order=(0, 0, 0, 0),\n", + " start_params=None, suppress_warnings=False, trend=None,\n", + " with_intercept=True)\n", + "ARIMA(maxiter=50, method='lbfgs', order=(0, 0, 0), out_of_sample_size=0,\n", + " scoring='mse', scoring_args=None, seasonal_order=(1, 1, 0, 12),\n", + " start_params=None, suppress_warnings=False, trend=None,\n", + " with_intercept=True)\n" ] } ], @@ -632,15 +1332,57 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.17660.154963.41676967.9167
10.13510.120552.33335842.1667
20.22630.195791.467112836.1198
Mean0.17930.157069.07248548.7344
SD0.03730.030716.46923066.2771
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.17660.154963.41676967.9167
10.13510.120552.33335842.1667
20.22630.195791.467112836.1198
Mean0.17930.157069.07248548.7344
SD0.03730.030716.46923066.2771
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "execute_result", "data": { "text/plain": [ "1960-01 404.786132\n", @@ -658,8 +1400,9 @@ "Freq: M, dtype: float64" ] }, + "execution_count": 20, "metadata": {}, - "execution_count": 20 + "output_type": "execute_result" } ], "source": [ @@ -673,18 +1416,68 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.02730.027210.5620182.1899
10.07040.073826.2572903.9130
20.02650.026111.2644179.8604
Mean0.04140.042416.0279421.9878
SD0.02050.02227.2389340.7739
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.02730.027210.5620182.1899
10.07040.073826.2573903.9160
20.02650.026111.2644179.8603
Mean0.04140.042416.0279421.9887
SD0.02050.02227.2390340.7754
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "ExponentialSmoothing(damped_trend=False, initial_level=None,\n initial_seasonal=None, initial_trend=None,\n initialization_method='estimated', seasonal=None, sp=None,\n trend=None, use_boxcox=None)\nExponentialSmoothing(damped_trend=False, initial_level=None,\n initial_seasonal=None, initial_trend=None,\n initialization_method='estimated', seasonal='add', sp=12,\n trend='add', use_boxcox=True)\n" + "ExponentialSmoothing(damped_trend=False, initial_level=None,\n", + " initial_seasonal=None, initial_trend=None,\n", + " initialization_method='estimated', seasonal=None, sp=None,\n", + " trend=None, use_boxcox=None)\n", + "ExponentialSmoothing(damped_trend=False, initial_level=None,\n", + " initial_seasonal=None, initial_trend=None,\n", + " initialization_method='estimated', seasonal='add', sp=12,\n", + " trend='add', use_boxcox=True)\n" ] } ], @@ -701,18 +1494,68 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.02730.027210.5620182.1899
10.07040.073826.2572903.9130
20.02650.026111.2644179.8604
Mean0.04140.042416.0279421.9878
SD0.02050.02227.2389340.7739
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.02730.027210.5620182.1899
10.07040.073826.2573903.9160
20.02650.026111.2644179.8603
Mean0.04140.042416.0279421.9887
SD0.02050.02227.2390340.7754
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "ExponentialSmoothing(damped_trend=False, initial_level=None,\n initial_seasonal=None, initial_trend=None,\n initialization_method='estimated', seasonal=None, sp=None,\n trend=None, use_boxcox=None)\nExponentialSmoothing(damped_trend=False, initial_level=None,\n initial_seasonal=None, initial_trend=None,\n initialization_method='estimated', seasonal='additive',\n sp=None, trend='additive', use_boxcox=True)\n" + "ExponentialSmoothing(damped_trend=False, initial_level=None,\n", + " initial_seasonal=None, initial_trend=None,\n", + " initialization_method='estimated', seasonal=None, sp=None,\n", + " trend=None, use_boxcox=None)\n", + "ExponentialSmoothing(damped_trend=False, initial_level=None,\n", + " initial_seasonal=None, initial_trend=None,\n", + " initialization_method='estimated', seasonal='additive',\n", + " sp=None, trend='additive', use_boxcox=True)\n" ] } ], @@ -736,15 +1579,57 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.15820.140657.57995883.9192
10.12440.113148.63525040.6939
20.19950.173882.104911072.6778
Mean0.16070.142562.77337332.4303
SD0.03070.024814.14882667.0640
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.15820.140657.57995883.9192
10.12440.113148.63525040.6939
20.19950.173882.104911072.6778
Mean0.16070.142562.77337332.4303
SD0.03070.024814.14882667.0640
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "execute_result", "data": { "text/plain": [ "1960-01 407.356288\n", @@ -762,8 +1647,9 @@ "Freq: M, dtype: float64" ] }, + "execution_count": 23, "metadata": {}, - "execution_count": 23 + "output_type": "execute_result" } ], "source": [ @@ -777,18 +1663,62 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.05920.057022.3655776.5129
10.03780.037815.0918398.2215
20.08840.083237.82952153.9634
Mean0.06180.059325.09561109.5659
SD0.02070.01869.4813754.4759
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.05920.057022.3655776.5132
10.03780.037815.0918398.2215
20.08840.083237.82952153.9634
Mean0.06180.059325.09561109.5660
SD0.02070.01869.4813754.4758
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "ThetaForecaster(deseasonalize=True, initial_level=None, sp=1)\nThetaForecaster(deseasonalize=True, initial_level=None, sp=24)\n" + "ThetaForecaster(deseasonalize=True, initial_level=None, sp=1)\n", + "ThetaForecaster(deseasonalize=True, initial_level=None, sp=24)\n" ] } ], @@ -805,18 +1735,62 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.05920.057022.3655776.5129
10.03780.037815.0918398.2215
20.08840.083237.82952153.9634
Mean0.06180.059325.09561109.5659
SD0.02070.01869.4813754.4759
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.05920.057022.3655776.5132
10.03780.037815.0918398.2215
20.08840.083237.82952153.9634
Mean0.06180.059325.09561109.5660
SD0.02070.01869.4813754.4758
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "ThetaForecaster(deseasonalize=True, initial_level=None, sp=1)\nThetaForecaster(deseasonalize=True, initial_level=None, sp=24)\n" + "ThetaForecaster(deseasonalize=True, initial_level=None, sp=1)\n", + "ThetaForecaster(deseasonalize=True, initial_level=None, sp=24)\n" ] } ], @@ -840,15 +1814,57 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.17660.154963.41906968.3536
10.13510.120552.33545842.4456
20.22590.195491.336012812.1598
Mean0.17920.156969.03018540.9863
SD0.03710.030616.40893054.9533
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.17660.154963.41906968.3536
10.13510.120552.33545842.4456
20.22590.195491.336012812.1598
Mean0.17920.156969.03018540.9863
SD0.03710.030616.40893054.9533
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "execute_result", "data": { "text/plain": [ "1960-01 404.9957\n", @@ -866,8 +1882,9 @@ "Freq: M, dtype: float64" ] }, + "execution_count": 26, "metadata": {}, - "execution_count": 26 + "output_type": "execute_result" } ], "source": [ @@ -881,18 +1898,74 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.03760.036614.5582352.4071
10.04470.045816.8005373.5136
20.05120.049520.8908549.0481
Mean0.04450.044017.4165424.9896
SD0.00550.00542.621788.1448
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.03760.036614.5615352.4886
10.04460.045816.7827372.8826
20.05120.049520.8904549.0250
Mean0.04450.044017.4115424.7988
SD0.00550.00542.621888.2349
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "AutoETS(additive_only=False, allow_multiplicative_trend=False, auto=False,\n bounds=None, callback=None, damped_trend=False, dates=None, disp=False,\n error='add', freq=None, full_output=True, information_criterion='aic',\n initial_level=None, initial_seasonal=None, initial_trend=None,\n initialization_method='estimated', maxiter=1000, missing='none',\n n_jobs=None, restrict=True, return_params=False, seasonal=None, sp=1,\n start_params=None, trend=None)\nAutoETS(additive_only=False, allow_multiplicative_trend=False, auto=False,\n bounds=None, callback=None, damped_trend=False, dates=None, disp=False,\n error='add', freq=None, full_output=True, information_criterion='aic',\n initial_level=None, initial_seasonal=None, initial_trend=None,\n initialization_method='estimated', maxiter=1000, missing='none',\n n_jobs=None, restrict=True, return_params=False, seasonal='mul', sp=12,\n start_params=None, trend='add')\n" + "AutoETS(additive_only=False, allow_multiplicative_trend=False, auto=False,\n", + " bounds=None, callback=None, damped_trend=False, dates=None, disp=False,\n", + " error='add', freq=None, full_output=True, information_criterion='aic',\n", + " initial_level=None, initial_seasonal=None, initial_trend=None,\n", + " initialization_method='estimated', maxiter=1000, missing='none',\n", + " n_jobs=None, restrict=True, return_params=False, seasonal=None, sp=1,\n", + " start_params=None, trend=None)\n", + "AutoETS(additive_only=False, allow_multiplicative_trend=False, auto=False,\n", + " bounds=None, callback=None, damped_trend=False, dates=None, disp=False,\n", + " error='add', freq=None, full_output=True, information_criterion='aic',\n", + " initial_level=None, initial_seasonal=None, initial_trend=None,\n", + " initialization_method='estimated', maxiter=1000, missing='none',\n", + " n_jobs=None, restrict=True, return_params=False, seasonal='mul', sp=12,\n", + " start_params=None, trend='add')\n" ] } ], @@ -909,18 +1982,74 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.03760.036614.5582352.4071
10.04470.045816.8005373.5136
20.05120.049520.8908549.0481
Mean0.04450.044017.4165424.9896
SD0.00550.00542.621788.1448
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.03760.036614.5615352.4886
10.04460.045816.7827372.8826
20.05120.049520.8904549.0250
Mean0.04450.044017.4115424.7988
SD0.00550.00542.621888.2349
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "AutoETS(additive_only=False, allow_multiplicative_trend=False, auto=False,\n bounds=None, callback=None, damped_trend=False, dates=None, disp=False,\n error='add', freq=None, full_output=True, information_criterion='aic',\n initial_level=None, initial_seasonal=None, initial_trend=None,\n initialization_method='estimated', maxiter=1000, missing='none',\n n_jobs=None, restrict=True, return_params=False, seasonal=None, sp=1,\n start_params=None, trend=None)\nAutoETS(additive_only=False, allow_multiplicative_trend=False, auto=False,\n bounds=None, callback=None, damped_trend=False, dates=None, disp=False,\n error='add', freq=None, full_output=True, information_criterion='aic',\n initial_level=None, initial_seasonal=None, initial_trend=None,\n initialization_method='estimated', maxiter=1000, missing='none',\n n_jobs=None, restrict=True, return_params=False, seasonal='mul', sp=12,\n start_params=None, trend='add')\n" + "AutoETS(additive_only=False, allow_multiplicative_trend=False, auto=False,\n", + " bounds=None, callback=None, damped_trend=False, dates=None, disp=False,\n", + " error='add', freq=None, full_output=True, information_criterion='aic',\n", + " initial_level=None, initial_seasonal=None, initial_trend=None,\n", + " initialization_method='estimated', maxiter=1000, missing='none',\n", + " n_jobs=None, restrict=True, return_params=False, seasonal=None, sp=1,\n", + " start_params=None, trend=None)\n", + "AutoETS(additive_only=False, allow_multiplicative_trend=False, auto=False,\n", + " bounds=None, callback=None, damped_trend=False, dates=None, disp=False,\n", + " error='add', freq=None, full_output=True, information_criterion='aic',\n", + " initial_level=None, initial_seasonal=None, initial_trend=None,\n", + " initialization_method='estimated', maxiter=1000, missing='none',\n", + " n_jobs=None, restrict=True, return_params=False, seasonal='mul', sp=12,\n", + " start_params=None, trend='add')\n" ] } ], @@ -944,15 +2073,57 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.08420.078832.27221922.0432
10.07140.070328.47321387.7209
20.05310.051224.16421209.6651
Mean0.06960.066828.30321506.4764
SD0.01280.01163.3123302.7075
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.08360.078032.20032045.6715
10.07010.069427.82171179.8993
20.06470.061329.52761811.2837
Mean0.07280.069629.84991678.9515
SD0.00790.00681.8020365.6266
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "execute_result", "data": { "text/plain": [ "1960-01 402.724633\n", @@ -970,8 +2141,9 @@ "Freq: M, dtype: float64" ] }, + "execution_count": 29, "metadata": {}, - "execution_count": 29 + "output_type": "execute_result" } ], "source": [ @@ -985,18 +2157,62 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.07100.067127.60021413.7530
10.06320.061125.71381386.0933
20.04400.042320.40621031.4319
Mean0.05940.056824.57341277.0927
SD0.01130.01053.0456174.0751
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.07200.067628.09651602.5270
10.05670.057022.1763783.4473
20.03700.035817.2058762.0319
Mean0.05530.053522.49291049.3354
SD0.01430.01324.4517391.2632
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "RandomForestDTS(degree=1, model='additive', sp=1, window_length=10)\nRandomForestDTS(degree=1, model='additive', sp=12, window_length=10)\n" + "RandomForestDTS(degree=1, model='additive', sp=1, window_length=10)\n", + "RandomForestDTS(degree=1, model='additive', sp=12, window_length=10)\n" ] } ], @@ -1013,18 +2229,62 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.06750.063826.34661340.3292
10.06440.062326.13751412.2819
20.04220.040619.5914959.3516
Mean0.05800.055624.02521237.3209
SD0.01130.01063.1363198.7368
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.07060.066627.51141448.7132
10.06440.062226.20561439.5357
20.04240.040919.6544936.0682
Mean0.05910.056624.45711274.7724
SD0.01210.01123.4376239.5293
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "RandomForestDTS(degree=1, model='additive', sp=1, window_length=10)\nRandomForestDTS(degree=1, model='additive', sp=12, window_length=10)\n" + "RandomForestDTS(degree=1, model='additive', sp=1, window_length=10)\n", + "RandomForestDTS(degree=1, model='additive', sp=12, window_length=10)\n" ] } ], @@ -1036,13 +2296,13 @@ ] }, { + "cell_type": "markdown", + "metadata": {}, "source": [ "## Tune Models\n", "\n", "Shown above" - ], - "cell_type": "markdown", - "metadata": {} + ] }, { "cell_type": "markdown", @@ -1057,12 +2317,55 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.17660.154963.41676967.9167
10.13510.120552.33335842.1667
20.22590.195491.333312811.6667
Mean0.17920.156969.02788540.5833
SD0.03710.030616.40863054.8806
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.17660.154963.41676967.9167
10.13510.120552.33335842.1667
20.22590.195491.333312811.6667
Mean0.17920.156969.02788540.5833
SD0.03710.030616.40863054.8806
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -1076,12 +2379,55 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.21330.184874.56458799.7367
10.15990.140460.63377259.3401
20.26040.2225102.981315344.8781
Mean0.21120.182679.393210467.9849
SD0.04110.033617.62233505.3550
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.21330.184874.56458799.7367
10.15990.140460.63377259.3400
20.26040.2225102.981315344.8780
Mean0.21120.182679.393210467.9849
SD0.04110.033617.62233505.3550
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -1094,12 +2440,55 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.21330.184874.56458799.7367
10.15990.140460.63377259.3401
20.26040.2225102.981315344.8781
Mean0.21120.182679.393210467.9849
SD0.04110.033617.62233505.3550
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.21330.184874.56458799.7367
10.15990.140460.63377259.3400
20.26040.2225102.981315344.8780
Mean0.21120.182679.393210467.9849
SD0.04110.033617.62233505.3550
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -1112,18 +2501,306 @@ "metadata": {}, "outputs": [ { - "output_type": "display_data", "data": { - "text/plain": "", - "text/html": "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
smape mape mae rmse
00.22360.193077.60659340.7390
10.16660.145662.81807694.2862
20.26970.2296106.046516066.9864
Mean0.22000.189482.157011034.0039
SD0.04220.034417.93893621.7755
" + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
smape mape mae rmse
00.22360.193077.60659340.7390
10.16660.145662.81807694.2862
20.26970.2296106.046516066.9863
Mean0.22000.189482.157011034.0038
SD0.04220.034417.93893621.7755
" + ], + "text/plain": [ + "" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" } ], "source": [ "voting_blender = exp.blend_models([arima_model, naive_model], method='voting', weights=[1.2, 0.7])" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Compare Models" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Model smape mape mae rmse TT (Sec)
rf_dtsRandomForestDTS0.07440.072329.75461533.33010.1467
poly_trendPolyTrend0.12350.120249.35943970.87190.0133
thetaTheta0.16000.141962.53207287.70150.0133
naiveNaive0.17920.156969.02788540.58330.0100
auto_etsAutoETS0.17920.156969.03018540.98630.0167
exp_smoothExponentialSmoothing0.17940.157169.10888553.66660.0167
arimaARIMA0.24970.212891.328412864.43750.0433
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "[RandomForestDTS(degree=1, model='additive', sp=1, window_length=10),\n", + " PolynomialTrendForecaster(degree=1, regressor=None, with_intercept=True)]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exp.setup(data=y, fh=fh, fold=fold, fold_strategy='slidingwindow')\n", + "\n", + "best_models = exp.compare_models(fold=fold, sort='rmse', n_select=2)\n", + "best_models" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Model smape mape mae rmse TT (Sec)
rf_dtsRandomForestDTS0.06520.062926.52381287.96840.1600
poly_trendPolyTrend0.12160.117048.63014031.32610.0100
thetaTheta0.16070.142562.77337332.43030.0100
naiveNaive0.17920.156969.02788540.58330.0067
auto_etsAutoETS0.17920.156969.03018540.98630.0100
exp_smoothExponentialSmoothing0.17930.157069.07248548.73440.0100
arimaARIMA0.24790.211490.756912749.21460.0367
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "[RandomForestDTS(degree=1, model='additive', sp=1, window_length=10),\n", + " PolynomialTrendForecaster(degree=1, regressor=None, with_intercept=True)]" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exp.setup(data=y, fh=fh, fold=fold, fold_strategy='expandingwindow')\n", + "\n", + "best_models = exp.compare_models(fold=fold, sort='rmse', n_select=2)\n", + "best_models" + ] + }, { "cell_type": "code", "execution_count": null, @@ -1134,8 +2811,9 @@ ], "metadata": { "kernelspec": { - "name": "python379jvsc74a57bd02e79732785b968a887869d670772af3eb35a449ef73721b650f9c2f4a3fd4bbe", - "display_name": "Python 3.7.9 64-bit ('pycaret_dev': conda)" + "display_name": "Python 3", + "language": "python", + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -1147,9 +2825,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.9" + "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +}