{ "cells": [ { "cell_type": "markdown", "id": "84f606c3", "metadata": { "papermill": { "duration": 0.02202, "end_time": "2022-04-09T15:09:50.061684", "exception": false, "start_time": "2022-04-09T15:09:50.039664", "status": "completed" }, "tags": [] }, "source": [ "**This notebook is an exercise in the [Time Series](https://www.kaggle.com/learn/time-series) course. You can reference the tutorial at [this link](https://www.kaggle.com/ryanholbrook/forecasting-with-machine-learning).**\n", "\n", "---\n" ] }, { "cell_type": "markdown", "id": "4ed62b0d", "metadata": { "papermill": { "duration": 0.019003, "end_time": "2022-04-09T15:09:50.104021", "exception": false, "start_time": "2022-04-09T15:09:50.085018", "status": "completed" }, "tags": [] }, "source": [ "# Introduction #\n", "\n", "Run this cell to set everything up!" ] }, { "cell_type": "code", "execution_count": 1, "id": "40840d51", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:09:50.152493Z", "iopub.status.busy": "2022-04-09T15:09:50.151497Z", "iopub.status.idle": "2022-04-09T15:09:59.032759Z", "shell.execute_reply": "2022-04-09T15:09:59.031696Z", "shell.execute_reply.started": "2022-04-09T14:50:39.427311Z" }, "papermill": { "duration": 8.906244, "end_time": "2022-04-09T15:09:59.032948", "exception": false, "start_time": "2022-04-09T15:09:50.126704", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "# Setup feedback system\n", "from learntools.core import binder\n", "binder.bind(globals())\n", "from learntools.time_series.ex6 import *\n", "\n", "# Setup notebook\n", "from pathlib import Path\n", "import ipywidgets as widgets\n", "from learntools.time_series.style import * # plot style settings\n", "from learntools.time_series.utils import (create_multistep_example,\n", " load_multistep_data,\n", " make_lags,\n", " make_multistep_target,\n", " plot_multistep)\n", "\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn.multioutput import RegressorChain\n", "from sklearn.preprocessing import LabelEncoder\n", "from xgboost import XGBRegressor\n", "\n", "\n", "comp_dir = Path('../input/store-sales-time-series-forecasting')\n", "\n", "store_sales = pd.read_csv(\n", " comp_dir / 'train.csv',\n", " usecols=['store_nbr', 'family', 'date', 'sales', 'onpromotion'],\n", " dtype={\n", " 'store_nbr': 'category',\n", " 'family': 'category',\n", " 'sales': 'float32',\n", " 'onpromotion': 'uint32',\n", " },\n", " parse_dates=['date'],\n", " infer_datetime_format=True,\n", ")\n", "store_sales['date'] = store_sales.date.dt.to_period('D')\n", "store_sales = store_sales.set_index(['store_nbr', 'family', 'date']).sort_index()\n", "\n", "family_sales = (\n", " store_sales\n", " .groupby(['family', 'date'])\n", " .mean()\n", " .unstack('family')\n", " .loc['2017']\n", ")\n", "\n", "test = pd.read_csv(\n", " comp_dir / 'test.csv',\n", " dtype={\n", " 'store_nbr': 'category',\n", " 'family': 'category',\n", " 'onpromotion': 'uint32',\n", " },\n", " parse_dates=['date'],\n", " infer_datetime_format=True,\n", ")\n", "test['date'] = test.date.dt.to_period('D')\n", "test = test.set_index(['store_nbr', 'family', 'date']).sort_index()" ] }, { "cell_type": "markdown", "id": "d5897473", "metadata": { "papermill": { "duration": 0.015559, "end_time": "2022-04-09T15:09:59.065502", "exception": false, "start_time": "2022-04-09T15:09:59.049943", "status": "completed" }, "tags": [] }, "source": [ "-------------------------------------------------------------------------------\n", "\n", "Consider the following three forecasting tasks:\n", "\n", "a. 3-step forecast using 4 lag features with a 2-step lead time
\n", "b. 1-step forecast using 3 lag features with a 1-step lead time
\n", "c. 3-step forecast using 4 lag features with a 1-step lead time
\n", "\n", "Run the next cell to see three datasets, each representing one of the tasks above." ] }, { "cell_type": "code", "execution_count": 2, "id": "bf4efa28", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:09:59.101871Z", "iopub.status.busy": "2022-04-09T15:09:59.100901Z", "iopub.status.idle": "2022-04-09T15:09:59.290638Z", "shell.execute_reply": "2022-04-09T15:09:59.291080Z", "shell.execute_reply.started": "2022-04-09T14:51:59.076377Z" }, "papermill": { "duration": 0.209416, "end_time": "2022-04-09T15:09:59.291304", "exception": false, "start_time": "2022-04-09T15:09:59.081888", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "90e9d43a37c0494e9c88aa137474a202", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Tab(children=(Output(), Output(), Output()), _titles={'0': 'Dataset 1', '1': 'Dataset 2', '2': 'Dataset 3'})" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "datasets = load_multistep_data()\n", "\n", "data_tabs = widgets.Tab([widgets.Output() for _ in enumerate(datasets)])\n", "for i, df in enumerate(datasets):\n", " data_tabs.set_title(i, f'Dataset {i+1}')\n", " with data_tabs.children[i]:\n", " display(df)\n", "\n", "display(data_tabs)" ] }, { "cell_type": "markdown", "id": "0cc273ae", "metadata": { "papermill": { "duration": 0.01627, "end_time": "2022-04-09T15:09:59.328907", "exception": false, "start_time": "2022-04-09T15:09:59.312637", "status": "completed" }, "tags": [] }, "source": [ "# 1) Match description to dataset\n", "\n", "Can you match each task to the appropriate dataset?" ] }, { "cell_type": "code", "execution_count": 3, "id": "ee48c674", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:09:59.368750Z", "iopub.status.busy": "2022-04-09T15:09:59.367878Z", "iopub.status.idle": "2022-04-09T15:09:59.373143Z", "shell.execute_reply": "2022-04-09T15:09:59.373705Z", "shell.execute_reply.started": "2022-04-09T14:54:05.558032Z" }, "papermill": { "duration": 0.028318, "end_time": "2022-04-09T15:09:59.373868", "exception": false, "start_time": "2022-04-09T15:09:59.345550", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "application/javascript": [ "parent.postMessage({\"jupyterEvent\": \"custom.exercise_interaction\", \"data\": {\"outcomeType\": 1, \"valueTowardsCompletion\": 0.25, \"interactionType\": 1, \"questionType\": 1, \"questionId\": \"1_Q1\", \"learnToolsVersion\": \"0.3.4\", \"failureMessage\": \"\", \"exceptionClass\": \"\", \"trace\": \"\"}}, \"*\")" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "Correct" ], "text/plain": [ "Correct" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# YOUR CODE HERE: Match the task to the dataset. Answer 1, 2, or 3.\n", "task_a = 2\n", "task_b = 1\n", "task_c = 3\n", "\n", "# Check your answer\n", "q_1.check()" ] }, { "cell_type": "code", "execution_count": 4, "id": "948da13e", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:09:59.411990Z", "iopub.status.busy": "2022-04-09T15:09:59.411055Z", "iopub.status.idle": "2022-04-09T15:09:59.414109Z", "shell.execute_reply": "2022-04-09T15:09:59.414574Z", "shell.execute_reply.started": "2022-04-09T14:54:08.792158Z" }, "papermill": { "duration": 0.023616, "end_time": "2022-04-09T15:09:59.414736", "exception": false, "start_time": "2022-04-09T15:09:59.391120", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "# Lines below will give you a hint or solution code\n", "#q_1.hint()\n", "#q_1.solution()" ] }, { "cell_type": "markdown", "id": "e1852db9", "metadata": { "papermill": { "duration": 0.016983, "end_time": "2022-04-09T15:09:59.448940", "exception": false, "start_time": "2022-04-09T15:09:59.431957", "status": "completed" }, "tags": [] }, "source": [ "-------------------------------------------------------------------------------\n", "\n", "Look at the time indexes of the training and test sets. From this information, can you identify the forecasting task for *Store Sales*?" ] }, { "cell_type": "code", "execution_count": 5, "id": "c176f2c2", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:09:59.488559Z", "iopub.status.busy": "2022-04-09T15:09:59.487618Z", "iopub.status.idle": "2022-04-09T15:09:59.507119Z", "shell.execute_reply": "2022-04-09T15:09:59.507835Z", "shell.execute_reply.started": "2022-04-09T14:54:24.168049Z" }, "papermill": { "duration": 0.0419, "end_time": "2022-04-09T15:09:59.508062", "exception": false, "start_time": "2022-04-09T15:09:59.466162", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training Data \n", "-------------\n", " sales onpromotion\n", "store_nbr family date \n", "1 AUTOMOTIVE 2013-01-01 0.000000 0\n", " 2013-01-02 2.000000 0\n", " 2013-01-03 3.000000 0\n", " 2013-01-04 3.000000 0\n", " 2013-01-05 5.000000 0\n", "... ... ...\n", "9 SEAFOOD 2017-08-11 23.830999 0\n", " 2017-08-12 16.859001 4\n", " 2017-08-13 20.000000 0\n", " 2017-08-14 17.000000 0\n", " 2017-08-15 16.000000 0\n", "\n", "[3000888 rows x 2 columns]\n", "\n", "\n", "Test Data \n", "---------\n", " id onpromotion\n", "store_nbr family date \n", "1 AUTOMOTIVE 2017-08-16 3000888 0\n", " 2017-08-17 3002670 0\n", " 2017-08-18 3004452 0\n", " 2017-08-19 3006234 0\n", " 2017-08-20 3008016 0\n", "... ... ...\n", "9 SEAFOOD 2017-08-27 3022271 0\n", " 2017-08-28 3024053 0\n", " 2017-08-29 3025835 0\n", " 2017-08-30 3027617 0\n", " 2017-08-31 3029399 0\n", "\n", "[28512 rows x 2 columns]\n" ] } ], "source": [ "print(\"Training Data\", \"\\n\" + \"-\" * 13 + \"\\n\", store_sales)\n", "print(\"\\n\")\n", "print(\"Test Data\", \"\\n\" + \"-\" * 9 + \"\\n\", test)" ] }, { "cell_type": "markdown", "id": "0da33ecf", "metadata": { "papermill": { "duration": 0.017552, "end_time": "2022-04-09T15:09:59.545458", "exception": false, "start_time": "2022-04-09T15:09:59.527906", "status": "completed" }, "tags": [] }, "source": [ "# 2) Identify the forecasting task for *Store Sales* competition\n", "\n", "Try to identify the *forecast origin* and the *forecast horizon*. How many steps are within the forecast horizon? What is the lead time for the forecast?\n", "\n", "Run this cell after you've thought about your answer." ] }, { "cell_type": "code", "execution_count": 6, "id": "548ea4e4", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:09:59.585734Z", "iopub.status.busy": "2022-04-09T15:09:59.584808Z", "iopub.status.idle": "2022-04-09T15:09:59.591828Z", "shell.execute_reply": "2022-04-09T15:09:59.592359Z", "shell.execute_reply.started": "2022-04-09T14:57:07.161620Z" }, "papermill": { "duration": 0.029264, "end_time": "2022-04-09T15:09:59.592528", "exception": false, "start_time": "2022-04-09T15:09:59.563264", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "application/javascript": [ "parent.postMessage({\"jupyterEvent\": \"custom.exercise_interaction\", \"data\": {\"outcomeType\": 1, \"valueTowardsCompletion\": 0.25, \"interactionType\": 1, \"questionType\": 4, \"questionId\": \"2_Q2\", \"learnToolsVersion\": \"0.3.4\", \"failureMessage\": \"\", \"exceptionClass\": \"\", \"trace\": \"\"}}, \"*\")" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "Correct: \n", "\n", "The training set ends on `2017-08-15`, which gives us the forecast origin. The test set comprises the dates `2017-08-16` to `2017-08-31`, and this gives us the forecast horizon. There is one step between the origin and horizon, so we have a lead time of one day.\n", "\n", "Put another way, we need a 16-step forecast with a 1-step lead time. We can use lags starting with lag 1, and we make the entire 16-step forecast using features from `2017-08-15`.\n" ], "text/plain": [ "Correct: \n", "\n", "The training set ends on `2017-08-15`, which gives us the forecast origin. The test set comprises the dates `2017-08-16` to `2017-08-31`, and this gives us the forecast horizon. There is one step between the origin and horizon, so we have a lead time of one day.\n", "\n", "Put another way, we need a 16-step forecast with a 1-step lead time. We can use lags starting with lag 1, and we make the entire 16-step forecast using features from `2017-08-15`." ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# View the solution (Run this cell to receive credit!)\n", "q_2.check()" ] }, { "cell_type": "markdown", "id": "478eae7c", "metadata": { "papermill": { "duration": 0.018818, "end_time": "2022-04-09T15:09:59.630825", "exception": false, "start_time": "2022-04-09T15:09:59.612007", "status": "completed" }, "tags": [] }, "source": [ "-------------------------------------------------------------------------------\n", "\n", "In the tutorial we saw how to create a multistep dataset for a single time series. Fortunately, we can use exactly the same procedure for datasets of multiple series.\n", "\n", "# 3) Create multistep dataset for *Store Sales*\n", "\n", "Create targets suitable for the *Store Sales* forecasting task. Use 4 days of lag features. Drop any missing values from both targets and features." ] }, { "cell_type": "code", "execution_count": 7, "id": "0db8dfa3", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:09:59.672738Z", "iopub.status.busy": "2022-04-09T15:09:59.671810Z", "iopub.status.idle": "2022-04-09T15:09:59.694895Z", "shell.execute_reply": "2022-04-09T15:09:59.695460Z", "shell.execute_reply.started": "2022-04-09T15:02:09.226919Z" }, "papermill": { "duration": 0.045826, "end_time": "2022-04-09T15:09:59.695623", "exception": false, "start_time": "2022-04-09T15:09:59.649797", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "application/javascript": [ "parent.postMessage({\"jupyterEvent\": \"custom.exercise_interaction\", \"data\": {\"outcomeType\": 1, \"valueTowardsCompletion\": 0.25, \"interactionType\": 1, \"questionType\": 1, \"questionId\": \"3_Q3\", \"learnToolsVersion\": \"0.3.4\", \"failureMessage\": \"\", \"exceptionClass\": \"\", \"trace\": \"\"}}, \"*\")" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "Correct" ], "text/plain": [ "Correct" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# YOUR CODE HERE\n", "y = family_sales.loc[:, 'sales']\n", "\n", "# YOUR CODE HERE: Make 4 lag features\n", "X = make_lags(y, lags=4).dropna()\n", "\n", "# YOUR CODE HERE: Make multistep target\n", "y = make_multistep_target(y, steps=16).dropna()\n", "\n", "y, X = y.align(X, join='inner', axis=0)\n", "\n", "# Check your answer\n", "q_3.check()" ] }, { "cell_type": "code", "execution_count": 8, "id": "c4c74a14", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:09:59.738863Z", "iopub.status.busy": "2022-04-09T15:09:59.737924Z", "iopub.status.idle": "2022-04-09T15:09:59.741503Z", "shell.execute_reply": "2022-04-09T15:09:59.742053Z", "shell.execute_reply.started": "2022-04-09T15:02:14.969974Z" }, "papermill": { "duration": 0.026862, "end_time": "2022-04-09T15:09:59.742235", "exception": false, "start_time": "2022-04-09T15:09:59.715373", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "# Lines below will give you a hint or solution code\n", "#q_3.hint()\n", "#q_3.solution()" ] }, { "cell_type": "markdown", "id": "4adf1e52", "metadata": { "papermill": { "duration": 0.019919, "end_time": "2022-04-09T15:09:59.782304", "exception": false, "start_time": "2022-04-09T15:09:59.762385", "status": "completed" }, "tags": [] }, "source": [ "-------------------------------------------------------------------------------\n", "\n", "In the tutorial, we saw how to forecast with the MultiOutput and Direct strategies on the *Flu Trends* series. Now, you'll apply the DirRec strategy to the multiple time series of *Store Sales*.\n", "\n", "Make sure you've successfully completed the previous exercise and then run this cell to prepare the data for XGBoost." ] }, { "cell_type": "code", "execution_count": 9, "id": "6597c87d", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:09:59.826119Z", "iopub.status.busy": "2022-04-09T15:09:59.825192Z", "iopub.status.idle": "2022-04-09T15:09:59.868011Z", "shell.execute_reply": "2022-04-09T15:09:59.868536Z", "shell.execute_reply.started": "2022-04-09T15:03:23.074546Z" }, "papermill": { "duration": 0.06644, "end_time": "2022-04-09T15:09:59.868710", "exception": false, "start_time": "2022-04-09T15:09:59.802270", "status": "completed" }, "tags": [] }, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
y_step_1y_step_2y_step_3y_step_4y_step_5y_step_6y_step_7y_step_8y_step_9y_step_10y_step_11y_step_12y_step_13y_step_14y_step_15y_step_16
datefamily
2017-01-05AUTOMOTIVE6.3333336.01851810.2592599.3888895.9444454.7777786.3148155.3888895.2407418.50000010.2592596.4074075.6851855.7037044.7777785.148148
BABY CARE0.3518520.2777780.2592590.2407410.4444440.2407410.2777780.2962960.2962960.3888890.4259260.3148150.1666670.2222220.1296300.166667
BEAUTY5.9259266.51851810.03703711.6111115.6481486.5000005.2777784.3703704.7037047.7777789.0370375.6481485.3518524.7407413.9814824.592593
BEVERAGES3258.7963873507.2778324848.5185555503.6479493448.2036133171.7407233046.8703612693.7221683226.0371094667.2963875580.6113283700.3703613409.7963873263.4628912676.5739753003.555664
BOOKS0.4074070.5370370.4814810.7222220.5000000.5185190.4814810.3888890.4444440.5740740.5555560.3888890.5000000.4074070.2777780.351852
......................................................
2017-07-31POULTRY364.955658403.601349377.313965316.436096533.497070416.454010464.596558344.051727313.780884305.270203278.819855468.857361354.342773379.801208344.398285325.679810
PREPARED FOODS84.69864787.83680088.73596277.17299791.886757100.384964102.24814686.62744177.34413184.79653978.79144396.28692684.69381791.50942286.06250085.954132
PRODUCE2257.1406252609.1801763122.8957521792.2209472079.3195802418.9702152675.1057132111.1335452168.5354002663.0761721670.2648932198.8544922070.1547852331.9223632134.3999022316.832764
SCHOOL AND OFFICE SUPPLIES30.11111149.33333257.48148051.90740663.22222185.203705100.27777964.40741059.75925853.74074242.96296365.24073867.48148368.85185252.33333246.851852
SEAFOOD20.48833320.34685120.80103717.11629725.55396324.20951823.51285218.41985118.48113118.18142513.28446323.56696319.03759220.70457517.97555517.966240
\n", "

6864 rows × 16 columns

\n", "
" ], "text/plain": [ " y_step_1 y_step_2 y_step_3 \\\n", "date family \n", "2017-01-05 AUTOMOTIVE 6.333333 6.018518 10.259259 \n", " BABY CARE 0.351852 0.277778 0.259259 \n", " BEAUTY 5.925926 6.518518 10.037037 \n", " BEVERAGES 3258.796387 3507.277832 4848.518555 \n", " BOOKS 0.407407 0.537037 0.481481 \n", "... ... ... ... \n", "2017-07-31 POULTRY 364.955658 403.601349 377.313965 \n", " PREPARED FOODS 84.698647 87.836800 88.735962 \n", " PRODUCE 2257.140625 2609.180176 3122.895752 \n", " SCHOOL AND OFFICE SUPPLIES 30.111111 49.333332 57.481480 \n", " SEAFOOD 20.488333 20.346851 20.801037 \n", "\n", " y_step_4 y_step_5 y_step_6 \\\n", "date family \n", "2017-01-05 AUTOMOTIVE 9.388889 5.944445 4.777778 \n", " BABY CARE 0.240741 0.444444 0.240741 \n", " BEAUTY 11.611111 5.648148 6.500000 \n", " BEVERAGES 5503.647949 3448.203613 3171.740723 \n", " BOOKS 0.722222 0.500000 0.518519 \n", "... ... ... ... \n", "2017-07-31 POULTRY 316.436096 533.497070 416.454010 \n", " PREPARED FOODS 77.172997 91.886757 100.384964 \n", " PRODUCE 1792.220947 2079.319580 2418.970215 \n", " SCHOOL AND OFFICE SUPPLIES 51.907406 63.222221 85.203705 \n", " SEAFOOD 17.116297 25.553963 24.209518 \n", "\n", " y_step_7 y_step_8 y_step_9 \\\n", "date family \n", "2017-01-05 AUTOMOTIVE 6.314815 5.388889 5.240741 \n", " BABY CARE 0.277778 0.296296 0.296296 \n", " BEAUTY 5.277778 4.370370 4.703704 \n", " BEVERAGES 3046.870361 2693.722168 3226.037109 \n", " BOOKS 0.481481 0.388889 0.444444 \n", "... ... ... ... \n", "2017-07-31 POULTRY 464.596558 344.051727 313.780884 \n", " PREPARED FOODS 102.248146 86.627441 77.344131 \n", " PRODUCE 2675.105713 2111.133545 2168.535400 \n", " SCHOOL AND OFFICE SUPPLIES 100.277779 64.407410 59.759258 \n", " SEAFOOD 23.512852 18.419851 18.481131 \n", "\n", " y_step_10 y_step_11 y_step_12 \\\n", "date family \n", "2017-01-05 AUTOMOTIVE 8.500000 10.259259 6.407407 \n", " BABY CARE 0.388889 0.425926 0.314815 \n", " BEAUTY 7.777778 9.037037 5.648148 \n", " BEVERAGES 4667.296387 5580.611328 3700.370361 \n", " BOOKS 0.574074 0.555556 0.388889 \n", "... ... ... ... \n", "2017-07-31 POULTRY 305.270203 278.819855 468.857361 \n", " PREPARED FOODS 84.796539 78.791443 96.286926 \n", " PRODUCE 2663.076172 1670.264893 2198.854492 \n", " SCHOOL AND OFFICE SUPPLIES 53.740742 42.962963 65.240738 \n", " SEAFOOD 18.181425 13.284463 23.566963 \n", "\n", " y_step_13 y_step_14 y_step_15 \\\n", "date family \n", "2017-01-05 AUTOMOTIVE 5.685185 5.703704 4.777778 \n", " BABY CARE 0.166667 0.222222 0.129630 \n", " BEAUTY 5.351852 4.740741 3.981482 \n", " BEVERAGES 3409.796387 3263.462891 2676.573975 \n", " BOOKS 0.500000 0.407407 0.277778 \n", "... ... ... ... \n", "2017-07-31 POULTRY 354.342773 379.801208 344.398285 \n", " PREPARED FOODS 84.693817 91.509422 86.062500 \n", " PRODUCE 2070.154785 2331.922363 2134.399902 \n", " SCHOOL AND OFFICE SUPPLIES 67.481483 68.851852 52.333332 \n", " SEAFOOD 19.037592 20.704575 17.975555 \n", "\n", " y_step_16 \n", "date family \n", "2017-01-05 AUTOMOTIVE 5.148148 \n", " BABY CARE 0.166667 \n", " BEAUTY 4.592593 \n", " BEVERAGES 3003.555664 \n", " BOOKS 0.351852 \n", "... ... \n", "2017-07-31 POULTRY 325.679810 \n", " PREPARED FOODS 85.954132 \n", " PRODUCE 2316.832764 \n", " SCHOOL AND OFFICE SUPPLIES 46.851852 \n", " SEAFOOD 17.966240 \n", "\n", "[6864 rows x 16 columns]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "le = LabelEncoder()\n", "X = (X\n", " .stack('family') # wide to long\n", " .reset_index('family') # convert index to column\n", " .assign(family=lambda x: le.fit_transform(x.family)) # label encode\n", ")\n", "y = y.stack('family') # wide to long\n", "\n", "display(y)" ] }, { "cell_type": "markdown", "id": "f623dd55", "metadata": { "papermill": { "duration": 0.020677, "end_time": "2022-04-09T15:09:59.910531", "exception": false, "start_time": "2022-04-09T15:09:59.889854", "status": "completed" }, "tags": [] }, "source": [ "# 4) Forecast with the DirRec strategy\n", "\n", "Instatiate a model that applies the DirRec strategy to XGBoost." ] }, { "cell_type": "code", "execution_count": 10, "id": "d2402911", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:09:59.955729Z", "iopub.status.busy": "2022-04-09T15:09:59.954810Z", "iopub.status.idle": "2022-04-09T15:09:59.962161Z", "shell.execute_reply": "2022-04-09T15:09:59.962687Z", "shell.execute_reply.started": "2022-04-09T15:04:24.504903Z" }, "papermill": { "duration": 0.031479, "end_time": "2022-04-09T15:09:59.962856", "exception": false, "start_time": "2022-04-09T15:09:59.931377", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "application/javascript": [ "parent.postMessage({\"jupyterEvent\": \"custom.exercise_interaction\", \"data\": {\"outcomeType\": 1, \"valueTowardsCompletion\": 0.25, \"interactionType\": 1, \"questionType\": 2, \"questionId\": \"4_Q4\", \"learnToolsVersion\": \"0.3.4\", \"failureMessage\": \"\", \"exceptionClass\": \"\", \"trace\": \"\"}}, \"*\")" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "Correct" ], "text/plain": [ "Correct" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.multioutput import RegressorChain\n", "\n", "# YOUR CODE HERE\n", "model = RegressorChain(XGBRegressor())\n", "\n", "# Check your answer\n", "q_4.check()" ] }, { "cell_type": "code", "execution_count": 11, "id": "10a28696", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:10:00.010589Z", "iopub.status.busy": "2022-04-09T15:10:00.009615Z", "iopub.status.idle": "2022-04-09T15:10:00.012673Z", "shell.execute_reply": "2022-04-09T15:10:00.013163Z", "shell.execute_reply.started": "2022-04-09T15:04:40.694042Z" }, "papermill": { "duration": 0.029139, "end_time": "2022-04-09T15:10:00.013342", "exception": false, "start_time": "2022-04-09T15:09:59.984203", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "# Lines below will give you a hint or solution code\n", "#q_4.hint()\n", "#q_4.solution()" ] }, { "cell_type": "markdown", "id": "702c4ad2", "metadata": { "papermill": { "duration": 0.024563, "end_time": "2022-04-09T15:10:00.059690", "exception": false, "start_time": "2022-04-09T15:10:00.035127", "status": "completed" }, "tags": [] }, "source": [ "Run this cell if you'd like to train this model." ] }, { "cell_type": "code", "execution_count": 12, "id": "3e999b79", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:10:00.106576Z", "iopub.status.busy": "2022-04-09T15:10:00.105610Z", "iopub.status.idle": "2022-04-09T15:10:21.248823Z", "shell.execute_reply": "2022-04-09T15:10:21.249353Z", "shell.execute_reply.started": "2022-04-09T15:04:45.124738Z" }, "papermill": { "duration": 21.168206, "end_time": "2022-04-09T15:10:21.249526", "exception": false, "start_time": "2022-04-09T15:10:00.081320", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "model.fit(X, y)\n", "\n", "y_pred = pd.DataFrame(\n", " model.predict(X),\n", " index=y.index,\n", " columns=y.columns,\n", ").clip(0.0)" ] }, { "cell_type": "markdown", "id": "735189e4", "metadata": { "papermill": { "duration": 0.021494, "end_time": "2022-04-09T15:10:21.292719", "exception": false, "start_time": "2022-04-09T15:10:21.271225", "status": "completed" }, "tags": [] }, "source": [ "And use this code to see a sample of the 16-step predictions this model makes on the training data." ] }, { "cell_type": "code", "execution_count": 13, "id": "e94392b1", "metadata": { "execution": { "iopub.execute_input": "2022-04-09T15:10:21.339519Z", "iopub.status.busy": "2022-04-09T15:10:21.338916Z", "iopub.status.idle": "2022-04-09T15:10:21.746041Z", "shell.execute_reply": "2022-04-09T15:10:21.746541Z", "shell.execute_reply.started": "2022-04-09T15:06:37.042938Z" }, "lines_to_next_cell": 2, "papermill": { "duration": 0.432281, "end_time": "2022-04-09T15:10:21.746712", "exception": false, "start_time": "2022-04-09T15:10:21.314431", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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U1FRgV/+8pf45JNPIl0Uom7xGqVridPpRGxsLCRJwm9+8xvk5ORg8eLFkS7WsNKvHgiia8XWrVvx+uuvY/Xq1QweaEht3LgRH374IZ5//vlIF4WoW7xG6Vrz97//HVu2bIHH48G4ceOwYMGCSBdp2BmUHggiIiIiIro2samViIiIiIhC1ucAoq6uDo8++ihKSkowa9YsvP/++wA60mgtWbIExcXFWLJkCex2OwDgzJkzWLBgAQoLC/HnP/85eJyzZ8/ivvvuC/534403Yv369QNzVkRERERENCj6PITJbDajoaEBBQUFaGlpwfz58/H2229j8+bNMBgMWLZsGd577z3Y7XY8++yzsFgsuHDhAnbv3o24uDg8/vjjXY7p8/kwZcoU/O1vf0NGRsaAnRwREREREQ2sPvdAJCcno6CgAACg1WqRl5cHk8mE3bt3Y+7cuQCAuXPnYteuXQCAxMREFBUVQS7veb72/v37kZWVxeCBiIiIiCjK9WsORG1tLU6cOIEJEybAYrEgOTkZAJCUlASLxRLycUpLSzF79uz+FIWIiIiIiIZA2AGE0+nE8uXL8fzzz0Or1XbaJggCBEEI6Tjt7e348ssvMXPmzHCLQkREREREQySsAMLj8WD58uWYM2cOiouLAXQMVTKbzQA65kkkJCSEdKx9+/ahoKAARqMxnKIQEREREdEQ6nMAIUkSXnjhBeTl5WHJkiXBz6dPn46tW7cC6FiUa8aMGSEdr7S0FLNmzeprMYiIiIiIKAL6nIXp0KFDeOSRR3D99dcHV+x95plnUFRUhBUrVqCurg7p6el44403YDAY0NDQgPnz56OlpQWiKEKj0aCsrAxarRYulwvTpk3Drl27oNPpBuUEiYiIiIho4HAlaiIiIiIiChlXoiYiIiIiopAxgCAiIiIiopAxgCAiIiIiopAxgCAiIiIiopAxgCAiIiIiopAxgCAioi5Wr16N/Px8vPLKK5EuChERRRkGEERE1C+1tbXIz89Hfn5+pItCRERDgAEEERERERGFjAEEERHh0KFDmDNnDiZOnIjnnnsObrc7uK2iogIPPvggbrnlFhQUFODHP/4xXnzxRbS3t6O2thYzZswI7hvoiaitrYXX68XatWtxzz33YOLEiSgpKcHHH38cidMjIqIBxACCiGiEczgcePLJJ1FZWYkJEybAarXis88+C263Wq1QKBQoLi7G/PnzIYoiPvroI6xfvx5arRbz5s0L7rto0SIsWrQIWq0Wb775Jv7whz9AkiTMnj0bbrcba9aswZYtWyJxmkRENEAYQBARjXB79uyBw+HAqFGjsH79eqxduxbjxo0Lbr/99tuxYsUKZGdnQ61WIzc3FwBw4MABGAwGPPXUU8F9X3jhBbzwwgvQ6/X4y1/+AgCYNGkS1Go1xowZAwDYuHHjEJ4dERENNHmkC0BERJFlMpkAAKNGjYIgCACAnJwc/PDDDwCAd999F6+99lqX7zU1NfV4TKvVCpfLBQDYvHlzp23V1dUDUm4iIooM9kAQEY1wKSkpADoq9pIkAQDOnTsX3F5WVgYAWLFiBY4fP45Vq1YBQHBfmUwW3Nfv9wMA4uPjodFoAADbtm3DyZMncfLkSVRUVGDTpk2De0JERDSo2ANBRDTC/eQnP4FOp0N1dTUWL14MpVKJ48ePB7cbjUYAwKefforz589j165dnb6fmJgIhUIBj8eDlStXIj09Hc8++ywefvhh/OlPf8Ljjz+OadOmweVy4ejRo7j11lvx6quvDuk5EhHRwGEPBBHRCKfX6/HOO+9gzJgxOHr0KLRaLYqLi4Pbf/GLX6CgoAA1NTU4f/48Fi9e3On7SqUSq1atQkJCAsrKyrBhwwYAHT0Wq1atgl6vx/bt23HgwAHk5ubinnvuGcrTIyKiASZIgT5oIiIiIiKiq2APBBERERERhYwBBBERERERhYwBBBERERERhYwBBBERERERhYwBBBERERERhYwBBBERERERhYwBBBERERERhYwBBBERERERhez/AygIcftJIMK/AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "FAMILY = 'BEAUTY'\n", "START = '2017-04-01'\n", "EVERY = 16\n", "\n", "y_pred_ = y_pred.xs(FAMILY, level='family', axis=0).loc[START:]\n", "y_ = family_sales.loc[START:, 'sales'].loc[:, FAMILY]\n", "\n", "fig, ax = plt.subplots(1, 1, figsize=(11, 4))\n", "ax = y_.plot(**plot_params, ax=ax, alpha=0.5)\n", "ax = plot_multistep(y_pred_, ax=ax, every=EVERY)\n", "_ = ax.legend([FAMILY, FAMILY + ' Forecast'])" ] }, { "cell_type": "markdown", "id": "7856336a", "metadata": { "papermill": { "duration": 0.023635, "end_time": "2022-04-09T15:10:21.794289", "exception": false, "start_time": "2022-04-09T15:10:21.770654", "status": "completed" }, "tags": [] }, "source": [ "# Next Steps #\n", "\n", "Congratulations! You've completed Kaggle's *Time Series* course. If you haven't already, join our companion competition: [Store Sales - Time Series Forecasting](https://www.kaggle.com/c/29781) and apply the skills you've learned.\n", "\n", "For inspiration, check out Kaggle's previous forecasting competitions. Studying winning competition solutions is a great way to upgrade your skills.\n", "\n", "- [**Corporación Favorita**](https://www.kaggle.com/c/favorita-grocery-sales-forecasting): the competition *Store Sales* is derived from.\n", "- [**Rossmann Store Sales**](https://www.kaggle.com/c/rossmann-store-sales)\n", "- [**Wikipedia Web Traffic**](https://www.kaggle.com/c/web-traffic-time-series-forecasting/)\n", "- [**Walmart Store Sales**](https://www.kaggle.com/c/walmart-recruiting-store-sales-forecasting)\n", "- [**Walmart Sales in Stormy Weather**](https://www.kaggle.com/c/walmart-recruiting-sales-in-stormy-weather)\n", "- [**M5 Forecasting - Accuracy**](https://www.kaggle.com/c/m5-forecasting-accuracy)\n", "\n", "# References #\n", "\n", "Here are some great resources you might like to consult for more on time series and forecasting. They all played a part in shaping this course:\n", "\n", "- *Learnings from Kaggle's forecasting competitions*, an article by Casper Solheim Bojer and Jens Peder Meldgaard.\n", "- *Forecasting: Principles and Practice*, a book by Rob J Hyndmann and George Athanasopoulos.\n", "- *Practical Time Series Forecasting with R*, a book by Galit Shmueli and Kenneth C. Lichtendahl Jr.\n", "- *Time Series Analysis and Its Applications*, a book by Robert H. Shumway and David S. Stoffer.\n", "- *Machine learning strategies for time series forecasting*, an article by Gianluca Bontempi, Souhaib Ben Taieb, and Yann-Aël Le Borgne.\n", "- *On the use of cross-validation for time series predictor evaluation*, an article by Christoph Bergmeir and José M. Benítez.\n" ] }, { "cell_type": "markdown", "id": "19ba80b9", "metadata": { "papermill": { "duration": 0.024581, "end_time": "2022-04-09T15:10:21.842741", "exception": false, "start_time": "2022-04-09T15:10:21.818160", "status": "completed" }, "tags": [] }, "source": [ "---\n", "\n", "\n", "\n", "\n", "*Have questions or comments? Visit the [course discussion forum](https://www.kaggle.com/learn/time-series/discussion) to chat with other learners.*" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.12" }, "papermill": { "default_parameters": {}, "duration": 41.029171, "end_time": "2022-04-09T15:10:22.577042", "environment_variables": {}, "exception": null, "input_path": "__notebook__.ipynb", "output_path": "__notebook__.ipynb", "parameters": {}, "start_time": "2022-04-09T15:09:41.547871", "version": "2.3.3" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "11d8abc957f3434fba880f0a7af4e8a8": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_d4ebb753872045f98313eba0e4d5e66e", "msg_id": "", "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 TargetsFeatures
 y_step_1y_lag_1y_lag_2y_lag_3
Year    
20100nannannan
201110nannan
2012210nan
20133210
20144321
20155432
20166543
20177654
20188765
20199876
\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "1d3a6b2b2017419fb892816c8ff7a103": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_a554cb626f78485f9f53e635c3c449c1", "msg_id": "", "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 TargetsFeatures
 y_step_3y_step_2y_step_1y_lag_2y_lag_3y_lag_4y_lag_5
Year       
2010210nannannannan
2011321nannannannan
20124320nannannan
201354310nannan
2014654210nan
20157653210
20168764321
20179875432
2018nan986543
2019nannan97654
\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "4acdc247763147ef84cc75210af974bf": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "90e9d43a37c0494e9c88aa137474a202": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "TabModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "TabModel", "_titles": { "0": "Dataset 1", "1": "Dataset 2", "2": "Dataset 3" }, "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "TabView", "box_style": "", "children": [ "IPY_MODEL_11d8abc957f3434fba880f0a7af4e8a8", "IPY_MODEL_1d3a6b2b2017419fb892816c8ff7a103", "IPY_MODEL_ae130b90c3094a7890d098cef72b53ef" ], "layout": "IPY_MODEL_f12121e56ba54279b37c9d550deafc8b", "selected_index": 0 } }, "a554cb626f78485f9f53e635c3c449c1": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ae130b90c3094a7890d098cef72b53ef": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/output", "_model_module_version": "1.0.0", "_model_name": "OutputModel", "_view_count": null, "_view_module": "@jupyter-widgets/output", "_view_module_version": "1.0.0", "_view_name": "OutputView", "layout": "IPY_MODEL_4acdc247763147ef84cc75210af974bf", "msg_id": "", "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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 TargetsFeatures
 y_step_3y_step_2y_step_1y_lag_1y_lag_2y_lag_3y_lag_4
Year       
2010210nannannannan
20113210nannannan
201243210nannan
2013543210nan
20146543210
20157654321
20168765432
20179876543
2018nan987654
2019nannan98765
\n", "text/plain": "" }, "metadata": {}, "output_type": "display_data" } ] } }, "d4ebb753872045f98313eba0e4d5e66e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f12121e56ba54279b37c9d550deafc8b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }