diff --git "a/Untitled.ipynb" "b/Untitled.ipynb"
deleted file mode 100644--- "a/Untitled.ipynb"
+++ /dev/null
@@ -1,1369 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 26,
- "id": "702c8313-4ccd-4478-a648-1087978f8af5",
- "metadata": {},
- "outputs": [],
- "source": [
- "import pickle\n",
- "import pandas as pd\n",
- "import matplotlib.pyplot as plt"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "id": "06393522-6a98-46d1-98ec-adc8a889be25",
- "metadata": {},
- "outputs": [],
- "source": [
- "df = pd.read_pickle('data/test_data.pkl')\n",
- "df = df.loc[(df[\"Branch\"] == \"15\") & (df[\"Group\"].isin([\"6\",\"7\",\"4\",\"1\"]))]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "id": "c67e2a79-d310-4832-a8e5-f16fecb6b9be",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " sales | \n",
- " DayInYear | \n",
- " time_idx | \n",
- " Wahl | \n",
- " Baustelle | \n",
- " MontagLangesWE | \n",
- " FreitagLangesWE | \n",
- " nosale | \n",
- " holiday | \n",
- " AufSommerzeit | \n",
- " ... | \n",
- " Branch | \n",
- " Weekday | \n",
- " Date | \n",
- " MTXWTH_Day_precip | \n",
- " MTXWTH_Temp_max | \n",
- " MTXWTH_Temp_min | \n",
- " Start | \n",
- " End | \n",
- " ShiftLength | \n",
- " weight | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 270300 | \n",
- " 1600.9030 | \n",
- " 177 | \n",
- " 2369 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0 | \n",
- " none | \n",
- " 0.0 | \n",
- " ... | \n",
- " 15 | \n",
- " 6 | \n",
- " 2022-06-26 | \n",
- " 0.0 | \n",
- " 28.52 | \n",
- " 17.47 | \n",
- " 7.0 | \n",
- " 10.983333 | \n",
- " 240.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 270301 | \n",
- " 1811.1958 | \n",
- " 178 | \n",
- " 2370 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0 | \n",
- " none | \n",
- " 0.0 | \n",
- " ... | \n",
- " 15 | \n",
- " 0 | \n",
- " 2022-06-27 | \n",
- " 0.0 | \n",
- " 25.75 | \n",
- " 16.70 | \n",
- " 6.0 | \n",
- " 13.983333 | \n",
- " 480.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 270302 | \n",
- " 1784.2916 | \n",
- " 179 | \n",
- " 2371 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0 | \n",
- " none | \n",
- " 0.0 | \n",
- " ... | \n",
- " 15 | \n",
- " 1 | \n",
- " 2022-06-28 | \n",
- " 0.0 | \n",
- " 23.57 | \n",
- " 14.17 | \n",
- " 6.0 | \n",
- " 13.983333 | \n",
- " 480.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 270303 | \n",
- " 1757.3488 | \n",
- " 180 | \n",
- " 2372 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0 | \n",
- " none | \n",
- " 0.0 | \n",
- " ... | \n",
- " 15 | \n",
- " 2 | \n",
- " 2022-06-29 | \n",
- " 0.0 | \n",
- " 26.81 | \n",
- " 13.09 | \n",
- " 6.0 | \n",
- " 13.983333 | \n",
- " 480.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 270304 | \n",
- " 1741.0982 | \n",
- " 181 | \n",
- " 2373 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0 | \n",
- " none | \n",
- " 0.0 | \n",
- " ... | \n",
- " 15 | \n",
- " 3 | \n",
- " 2022-06-30 | \n",
- " 0.0 | \n",
- " 27.26 | \n",
- " 15.00 | \n",
- " 6.0 | \n",
- " 13.983333 | \n",
- " 480.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " 287065 | \n",
- " 1643.1700 | \n",
- " 173 | \n",
- " 2730 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0 | \n",
- " none | \n",
- " 0.0 | \n",
- " ... | \n",
- " 15 | \n",
- " 3 | \n",
- " 2023-06-22 | \n",
- " 0.0 | \n",
- " 26.93 | \n",
- " 13.06 | \n",
- " 6.0 | \n",
- " 16.983333 | \n",
- " 660.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 287066 | \n",
- " 1597.3518 | \n",
- " 174 | \n",
- " 2731 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0 | \n",
- " none | \n",
- " 0.0 | \n",
- " ... | \n",
- " 15 | \n",
- " 4 | \n",
- " 2023-06-23 | \n",
- " 1.0 | \n",
- " 23.99 | \n",
- " 15.98 | \n",
- " 6.0 | \n",
- " 16.983333 | \n",
- " 660.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 287067 | \n",
- " 1683.6228 | \n",
- " 175 | \n",
- " 2732 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0 | \n",
- " none | \n",
- " 0.0 | \n",
- " ... | \n",
- " 15 | \n",
- " 5 | \n",
- " 2023-06-24 | \n",
- " 0.0 | \n",
- " 25.99 | \n",
- " 12.04 | \n",
- " 6.0 | \n",
- " 15.983333 | \n",
- " 600.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 287068 | \n",
- " 1785.2180 | \n",
- " 176 | \n",
- " 2733 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0 | \n",
- " none | \n",
- " 0.0 | \n",
- " ... | \n",
- " 15 | \n",
- " 6 | \n",
- " 2023-06-25 | \n",
- " 0.0 | \n",
- " 28.99 | \n",
- " 15.02 | \n",
- " 7.0 | \n",
- " 15.983333 | \n",
- " 540.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 287069 | \n",
- " 1589.9020 | \n",
- " 177 | \n",
- " 2734 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0.0 | \n",
- " 0 | \n",
- " none | \n",
- " 0.0 | \n",
- " ... | \n",
- " 15 | \n",
- " 0 | \n",
- " 2023-06-26 | \n",
- " 0.0 | \n",
- " 27.96 | \n",
- " 17.01 | \n",
- " 6.0 | \n",
- " 16.983333 | \n",
- " 660.0 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- "
\n",
- "
1464 rows × 22 columns
\n",
- "
"
- ],
- "text/plain": [
- " sales DayInYear time_idx Wahl Baustelle MontagLangesWE \\\n",
- "270300 1600.9030 177 2369 0.0 0.0 0.0 \n",
- "270301 1811.1958 178 2370 0.0 0.0 0.0 \n",
- "270302 1784.2916 179 2371 0.0 0.0 0.0 \n",
- "270303 1757.3488 180 2372 0.0 0.0 0.0 \n",
- "270304 1741.0982 181 2373 0.0 0.0 0.0 \n",
- "... ... ... ... ... ... ... \n",
- "287065 1643.1700 173 2730 0.0 0.0 0.0 \n",
- "287066 1597.3518 174 2731 0.0 0.0 0.0 \n",
- "287067 1683.6228 175 2732 0.0 0.0 0.0 \n",
- "287068 1785.2180 176 2733 0.0 0.0 0.0 \n",
- "287069 1589.9020 177 2734 0.0 0.0 0.0 \n",
- "\n",
- " FreitagLangesWE nosale holiday AufSommerzeit ... Branch Weekday \\\n",
- "270300 0.0 0 none 0.0 ... 15 6 \n",
- "270301 0.0 0 none 0.0 ... 15 0 \n",
- "270302 0.0 0 none 0.0 ... 15 1 \n",
- "270303 0.0 0 none 0.0 ... 15 2 \n",
- "270304 0.0 0 none 0.0 ... 15 3 \n",
- "... ... ... ... ... ... ... ... \n",
- "287065 0.0 0 none 0.0 ... 15 3 \n",
- "287066 0.0 0 none 0.0 ... 15 4 \n",
- "287067 0.0 0 none 0.0 ... 15 5 \n",
- "287068 0.0 0 none 0.0 ... 15 6 \n",
- "287069 0.0 0 none 0.0 ... 15 0 \n",
- "\n",
- " Date MTXWTH_Day_precip MTXWTH_Temp_max MTXWTH_Temp_min Start \\\n",
- "270300 2022-06-26 0.0 28.52 17.47 7.0 \n",
- "270301 2022-06-27 0.0 25.75 16.70 6.0 \n",
- "270302 2022-06-28 0.0 23.57 14.17 6.0 \n",
- "270303 2022-06-29 0.0 26.81 13.09 6.0 \n",
- "270304 2022-06-30 0.0 27.26 15.00 6.0 \n",
- "... ... ... ... ... ... \n",
- "287065 2023-06-22 0.0 26.93 13.06 6.0 \n",
- "287066 2023-06-23 1.0 23.99 15.98 6.0 \n",
- "287067 2023-06-24 0.0 25.99 12.04 6.0 \n",
- "287068 2023-06-25 0.0 28.99 15.02 7.0 \n",
- "287069 2023-06-26 0.0 27.96 17.01 6.0 \n",
- "\n",
- " End ShiftLength weight \n",
- "270300 10.983333 240.0 1 \n",
- "270301 13.983333 480.0 1 \n",
- "270302 13.983333 480.0 1 \n",
- "270303 13.983333 480.0 1 \n",
- "270304 13.983333 480.0 1 \n",
- "... ... ... ... \n",
- "287065 16.983333 660.0 1 \n",
- "287066 16.983333 660.0 1 \n",
- "287067 15.983333 600.0 1 \n",
- "287068 15.983333 540.0 1 \n",
- "287069 16.983333 660.0 1 \n",
- "\n",
- "[1464 rows x 22 columns]"
- ]
- },
- "execution_count": 17,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "id": "20cb91bd-f9e7-4a96-9da0-58ccd678c2ca",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "270300 1600.9030\n",
- "270301 1811.1958\n",
- "270302 1784.2916\n",
- "270303 1757.3488\n",
- "270304 1741.0982\n",
- " ... \n",
- "270661 1885.6552\n",
- "270662 1974.7440\n",
- "270663 1738.3962\n",
- "270664 1741.8702\n",
- "270665 1973.2386\n",
- "Name: sales, Length: 366, dtype: float64"
- ]
- },
- "execution_count": 18,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df.loc[df['Group'] == '1', \"sales\"]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 19,
- "id": "8923a52d-c601-45a5-af1f-ef245d0ed7be",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "278502 1585.0384\n",
- "278503 0.0000\n",
- "278504 0.0000\n",
- "278505 1582.0276\n",
- "278506 1521.5414\n",
- " ... \n",
- "278863 1672.7762\n",
- "278864 1598.2010\n",
- "278865 1683.6228\n",
- "278866 1660.6944\n",
- "278867 0.0000\n",
- "Name: sales, Length: 366, dtype: float64"
- ]
- },
- "execution_count": 19,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df.loc[df['Group'] == '4', \"sales\"]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 20,
- "id": "41cf50d2-7144-49de-9e6e-f155b0b74a1f",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "283970 1580.6766\n",
- "283971 2168.6318\n",
- "283972 2034.7284\n",
- "283973 2147.1702\n",
- "283974 2364.6812\n",
- " ... \n",
- "284331 2212.5200\n",
- "284332 2160.4100\n",
- "284333 2113.0478\n",
- "284334 2016.5864\n",
- "284335 2106.6402\n",
- "Name: sales, Length: 366, dtype: float64"
- ]
- },
- "execution_count": 20,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df.loc[df['Group'] == '6', \"sales\"]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "id": "6e4ed391-9044-41c8-8334-28d59b104c74",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "Timestamp('2022-06-26 00:00:00')"
- ]
- },
- "execution_count": 22,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df['Date'].min()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "id": "37af6fed-9b27-4d7e-a7e6-1f787ebecd5c",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "0.0"
- ]
- },
- "execution_count": 23,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df['sales'].min()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "id": "4081b0fd-db08-492c-bf31-a9727b3cbcc2",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "2498.546"
- ]
- },
- "execution_count": 24,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df['sales'].max()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "id": "2971c877-6a2f-4410-9070-9de7b04c8026",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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3oPD4cCBAwdqbfeyyy7D0KFD8e233yItLQ3vvfceiouLMXfuXJ9p+uKLL5wZyrFjx3D69Gm88MILAIBbbrkFt9xyi89tEBEBzB8iKX/45ptvMGjQIKSkpOC2226rNQ9Ep06d3Do2U4gK1nBFFLnuvvtu0aBBA3H69GnVdYYMGSLq168vjh8/7hwebvr06YrrLl++XLRr107Uq1fPbag4z+HhhJCGZZs+fbpo06aNiImJEQ6HQ9xxxx1i8+bNznU8h4cTQojy8nIxYcIEcemll4qYmBjRpEkT0alTJzFjxgxx/vx5Tce9bNkyceeddwqHwyHq1asnkpKSxM033yymT58uSkpK3NYFIIYPH664ne+//150795dxMfHi4YNG4ouXbqIjRs31lpv8+bNokOHDiImJkY0b95cvPrqq6rDw/Xs2VOsWrVKXHnllSI2Nla0adNGLF68WNNxyUPRKS2TJ0/WtA0iIiGYP0RS/iBvT21RGtaVQo9NCI3PpYgoLGVnZ+Pyyy/HihUrgp0UIiIKIcwfiH0EiIiIiIgsiIEAEREREZEFMRAgIiIiIrIg9hEgIiIiIrIgPhEgIiIiIrIgBgJERERERBYUsROKVVdX48iRI0hISNA1DTkRUTgQQqC8vBwZGRmIimKdjh7MH4go0mnNIyI2EDhy5AiysrKCnQwiooA6ePAgMjMzg52MsML8gYiswlceEbGBQEJCAgDpBNjt9iCnhojIXGVlZcjKynLe60g75g9EFOm05hERGwjIj3vtdjtv9EQUsdi0RT/mD0RkFb7yCDYsJSIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiC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ICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCdAcCX3zxBe6++25kZGTAZrPh448/dntfCIFJkyahadOmiIuLQ9euXbF79263dU6ePIkHHngAdrsdSUlJGDp0KE6dOuW2zo8//oicnBw0aNAAWVlZePnll/UfHRER1RnmD0RE4UV3IHD69GlcddVVeOONNxTff/nll/Haa6/hrbfewtdff41GjRqhe/fuOHfunHOdBx54ADt27MDq1auxYsUKfPHFFxg2bJjz/bKyMnTr1g0tWrTA5s2bMX36dEyZMgXvvPOOgUMkIqK6wPyBiCjMCD8AEMuWLXP+XV1dLdLT08X06dOdr5WUlIjY2FixYMECIYQQP/30kwAgvv32W+c6//nPf4TNZhOHDx8WQggxZ84c0bhxY1FRUeFc55lnnhGtW7fWnLbS0lIBQJSWlho9PCKikBXq9zjmD0REwaP1PmdqH4F9+/ahqKgIXbt2db6WmJiIDh06oKCgAABQUFCApKQkXH/99c51unbtiqioKHz99dfOdW655RbExMQ41+nevTt27dqFX3/9VXHfFRUVKCsrc1uIiCg0MH8gIgo9pgYCRUVFAIC0tDS319PS0pzvFRUVITU11e39evXqITk52W0dpW247sPTtGnTkJiY6FyysrL8PyAiIjIF8wciotATMaMGTZgwAaWlpc7l4MGDwU4SERGFAOYPRETKTA0E0tPTAQDFxcVurxcXFzvfS09Px9GjR93er6ysxMmTJ93WUdqG6z48xcbGwm63uy1ERBQamD8QEYUeUwOBli1bIj09HWvXrnW+VlZWhq+//hodO3YEAHTs2BElJSXYvHmzc51169ahuroaHTp0cK7zxRdf4MKFC851Vq9ejdatW6Nx48ZmJpmIiOoA8wciotCjOxA4deoUtm7diq1btwKQOoBt3boVBw4cgM1mw+jRo/HCCy/gk08+wbZt2zBo0CBkZGSgd+/eAIC2bduiR48eePTRR/HNN9/gq6++wogRI3DfffchIyMDAHD//fcjJiYGQ4cOxY4dO/DRRx9h9uzZGDt2rGkHTkRE5mL+QEQUZvQOR7R+/XoBoNYyePBgIYQ0RNxzzz0n0tLSRGxsrLjtttvErl273LZx4sQJMXDgQBEfHy/sdrt4+OGHRXl5uds6P/zwg7j55ptFbGysaNasmXjxxRd1pZPDwxFRJAvFexzzByKi0KD1PmcTQohgBCCBVlZWhsTERJSWlrI9KBFFHN7jjOO5I6JIp/U+FzGjBhERERERkXYMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBTEQICIiIiKyIAYCREREREQWxECAiIiIiMiCGAgQEREREVkQAwEiIiIiIgtiIEBEREREZEEMBIiIiIiILIiBABERERGRBZkeCEyZMgU2m81tadOmjfP9c+fOYfjw4UhJSUF8fDz69u2L4uJit20cOHAAPXv2RMOGDZGamopx48ahsrLS7KQSEVEdYv5ARBRa6gVio+3bt8eaNWtqdlKvZjdjxozBv//9byxevBiJiYkYMWIE+vTpg6+++goAUFVVhZ49eyI9PR0bN25EYWEhBg0ahPr16+Ovf/1rIJJLRER1hPkDEVEIESabPHmyuOqqqxTfKykpEfXr1xeLFy92vrZz504BQBQUFAghhPj0009FVFSUKCoqcq7z5ptvCrvdLioqKjSno7S0VAAQpaWlxg6EiCiEheM9jvkDEVHd0HqfC0gfgd27dyMjIwOXXHIJHnjgARw4cAAAsHnzZly4cAFdu3Z1rtumTRs0b94cBQUFAICCggJcccUVSEtLc67TvXt3lJWVYceOHar7rKioQFlZmdtCREShhfkDEVHoMD0Q6NChA+bNm4eVK1fizTffxL59+5CTk4Py8nIUFRUhJiYGSUlJbp9JS0tDUVERAKCoqMjtJi+/L7+nZtq0aUhMTHQuWVlZ5h4YERH5hfkDEVFoMb2PwB133OH8/yuvvBIdOnRAixYtsGjRIsTFxZm9O6cJEyZg7Nixzr/Lysp4syciCiHMH4iIQkvAhw9NSkrCZZddhj179iA9PR3nz59HSUmJ2zrFxcVIT08HAKSnp9caJUL+W15HSWxsLOx2u9tCREShi/kDEVFwBTwQOHXqFPbu3YumTZviuuuuQ/369bF27Vrn+7t27cKBAwfQsWNHAEDHjh2xbds2HD161LnO6tWrYbfb0a5du0Anl4iI6gjzByKi4DK9adDTTz+Nu+++Gy1atMCRI0cwefJkREdHY+DAgUhMTMTQoUMxduxYJCcnw263Y+TIkejYsSNuuukmAEC3bt3Qrl07PPTQQ3j55ZdRVFSEiRMnYvjw4YiNjTU7uUREVEeYPxARhRbTA4FDhw5h4MCBOHHiBBwOB26++WZs2rQJDocDADBz5kxERUWhb9++qKioQPfu3TFnzhzn56Ojo7FixQo8/vjj6NixIxo1aoTBgwfj+eefNzupRERUh5g/EBGFFpsQQgQ7EYFQVlaGxMRElJaWsj0oEUUc3uOM47kjokin9T4X8D4CREREREQUehgIEBERERFZEAMBIiIiIiILYiBARERERGRBDASIiIiIiCyIgQARERERkQUxECAiIiIisiAGAkREREREFsRAgIiIiIjIghgIEBERERFZEAMBIiIiIiILYiBARERERGRBDASIiIiIiCyIgQARERERkQUxECAiIiIisiAGAkREREREFsRAgIiIiIjIghgIEBERERFZEAMBIiIiIiILYiBARERERGRBDASIiIiIiCyIgQARERERkQUxECAiIiIisiAGAkREREREFsRAgIiIiIjIghgIEBERERFZEAMBIiIiIiILYiBARERERGRBDASIiIiIiCyIgQARERERkQUxECAiIiIisiAGAkREREREFsRAgIiIiIjIghgIEBERERFZEAMBIiIiIiILqhfsBHjzxhtvYPr06Sgq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J9cd8wjmESGRR/g507tfunfvLubOnSu2b98utm7dKu68807RvHlzcerUKec6jz32mMjKyhJr164V3333nbjppptEp06dnO//4x//EE8++aTIz88Xe/fuFR988IGIi4sTr7/+unOdUaNGiZdeekl888034pdffhETJkwQ9evXF99//73X9L344osiMTFRfPzxx+KHH34Q99xzj2jZsqU4e/asEEKIiooKUVhY6LY88sgjIi4uTrz33nthe1yHDx8WjRs3Fo899pj4+eefxU033SQuvfRScfvtt4fk8fzzn/8UU6dOFe+++64AILZs2VJrnZkzZ4pp06aJadOmCQDijTfeCPj38/3334v58+eL7du3i3379okPPvhANGzYULz99tt+fT9CCDFp0iTx6quvihYtWoi4uLiwPpZXX31VFBQUiP3794sOHTqIVq1aiauuuipsj6dFixbi+eefd7svuKaftIvEPCIzM1M0adJEbNu2LSyPyQr5w2233VYn1x3zCOYRoZBHBDUQ8HT06FEBQHz++edCCCFKSkpE/fr1xeLFi53r7Ny5UwAQBQUFqtt54oknRJcuXbzuq127dmLq1Kmq71dXV4v09HQxffp052slJSUiNjZWLFiwQPEz58+fFw6HQzz//PNhfVxvv/22SE1NFVVVVc51fvzxRwFA7N69O6SOx9W+fftUb/Sy9evXCwDi119/db5Wl8dz7733igcffFD1fb3X3dy5c0ViYmJEHIts+fLlwmazifPnz4fl8bRo0ULMnDnT677ImFC695iVR4TbMVktfxAivO+rzCNC73hCLY8IqT4CpaWlAIDk5GQAwObNm3HhwgV07drVuU6bNm3QvHlzFBQUeN2OvA0l1dXVKC8v97rOvn37UFRU5LbvxMREdOjQQXXfn3zyCU6cOFFrZstwO66KigrExMQgKqrm8oiLiwMgPS4LpeMxQ10dz5YtW7Bx40bceuutqusYue4i6VhOnjyJ3Nxc5yPtcD2eF198ESkpKbjmmmswffp0VFZWqm6XtAule49ZeUS4HZPV8gc5LUD43Yci8ViYR5gvZCYUq66uxujRo/Hb3/4Wl19+OQCgqKgIMTExSEpKcls3LS0NRUVFitvZuHEjPvroI/z73/9W3deMGTNw6tQp9O/fX3Udefues1R62/c//vEPdO/eHZmZmWF9XL/73e8wduxYTJ8+HaNGjcLp06fx7LPPAgAOHz4cUsfjr7r4fjIzM3Hs2DFUVlZiypQpeOSRR1TTY+S6i4RjeeaZZ/C3v/0NZ86cwU033YQVK1aE7fE8+eSTuPbaa5GcnIyNGzdiwoQJKCwsxKuvvqq6bfItHO+lnjzziHA8JivlD0B431cj6ViYRwROyDwRGD58OLZv346FCxca3sb27dvRq1cvTJ48Gd26dVNcZ/78+Zg6dSoWLVqE1NRUAEBubi7i4+Ody4YNG3Tv+9ChQ1i1ahWGDh3q9no4Hlf79u3x/vvv45VXXkHDhg2Rnp6Oli1bIi0tDf/617/C7ni8qYvvZ8OGDfjuu+/w1ltvYdasWViwYAEA848nnI9l3Lhx2LJlCz777DNER0dj0KBBeOKJJ8LyeMaOHYvOnTvjyiuvxGOPPYZXXnkFr7/+OioqKgwfB4XnvdSVUh4RjsdkpfwBCO/7qqdwPhbmEQEU7LZJQggxfPhwkZmZKf773/+6vb527VrF9nrNmzcXr776qttrO3bsEKmpqeJPf/qT6n4WLFgg4uLixIoVK9xeLysrE7t373YuZ86cEXv37lVsT3jLLbeIJ598sta2n3/+eeFwOMT58+cj6riKiopEeXm5OHXqlAAgUlJSQup4XOltA1pX34+r//u//xOXXXaZ6vHo/X7k9p+RcCyygwcPCgAiNTU1Io5n+/btAoD4+eefNaWDaouEe6lnHhEJxxTJ+YMQdfcduWIewTyirgU1EKiurhbDhw8XGRkZ4pdffqn1vtzpY8mSJc7Xfv7551qdPrZv3y5SU1PFuHHjVPc1f/580aBBA/Hxxx9rTlt6erqYMWOG87XS0lLFTizV1dWiZcuW4qmnnoqo43L9zO9+9zths9nEd999F1LH40rPjf6RRx6pk+/H09SpU0WLFi1U39f7/bz33nsiJiYmIo5F/sygQYMEAPHBBx+E/fEIIcSHH34ooqKixMmTJzWnhSSRci91zSMi5ZhcPxNp+cPJkyfr7DvyxDyCeURdC2og8Pjjj4vExESRn5/vNoySayT/2GOPiebNm4t169aJ7777TnTs2FF07NjR+f62bduEw+EQDz74oNs2jh496lwnNzdX1KtXT7zxxhtu65SUlHhN34svviiSkpLE8uXLxY8//ih69epVaxgoIYRYs2aNACB27twZMcf1+uuvi82bN4tdu3aJnJwcAUCMHDkyJI/nxIkTYsuWLeLf//63ACAWLlwotmzZIgoLC53rFBYWii1btjiHkIuPjxfvvvuu+OmnnwJ2PH/729/EJ598In755Rfxyy+/iL///e8iISFB/PnPf/b7+/nf//4ntmzZIm644QYBQLz77rti9erVYs+ePWF1LJs2bRKvv/662LJli9i/f7+45557RHR0tMjIyBD79+8Pu+9m48aNYubMmWLr1q1i79694sMPPxQOh0MMGjTI63ZJWSTcS4VwzyMi4ZgiPX/o3bu3iI+PF5988klAj4l5BPOIUMgjghoIAFBc5s6d61zn7Nmz4oknnhCNGzcWDRs2FPfee6/bD3jy5MmK23CN2m699VbFdQYPHuw1fdXV1eK5554TaWlpIjY2Vtx2221i165dtdYbOHCg2xi1kXBcDz30kEhOThYxMTEhfzxz585V/NzkyZN97j+Qx/Paa6+J9u3bi4YNGwq73S6uueYaMWfOHLdh94x+P4MHD46IY/nxxx9Fly5dRHJysoiNjQ3749m8ebPo0KGDSExMFA0aNBBt27YVf/3rX8W5c+e8bpeUhfq9x0geEQnHZMX8IZzuQ0IwjwjV4wnFPMImhBAgIiIiIiJLCZlRg4iIiIiIqO4wECAiIiIisiAGAkREREREFsRAgIiIiIjIghgIEBERERFZEAMBIiIiIiILYiBARERERGRBDASIiIiIiCyIgQARERERkQUxECAiIiIisiAGAkREREREFsRAgIiIiIjIghgIEBERERFZEAMBIiIiIiILYiBARERERGRBDASIiIiIiCyIgQARERERkQUxEKCwNWTIEGRnZ+v+XHZ2NoYMGWJ6eoiIKHQwjyDyjYEABdycOXNgs9nQoUMH3Z89cuQIpkyZgq1bt5qfMJP961//wt133420tDTExMQgOTkZt9xyC1555RWUlZUFO3mGjRkzBtdeey2Sk5PRsGFDtG3bFlOmTMGpU6eCnTQiigDMI8I7j3C1d+9eNGjQADabDd99912wk0Ma1At2Aijy5ebmIjs7G9988w327NmDSy+9VPNnjxw5gqlTpyI7OxtXX32123vvvvsuqqurTU6tftXV1Rg6dCjmzZuHK664Ak888QSysrJQXl6OgoICTJw4EZ9++inWrl0b7KQa8u233yInJwcPP/wwGjRogC1btuDFF1/E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fPTRR5g9e7bbo10iIgotzB+IiMKM0Gn9+vUC0hzUbsvgwYPFmTNnRLdu3YTD4RD169cXLVq0EI8++qgoKipy28aJEyfEwIEDRXx8vLDb7eLhhx8W5eXlbuv88MMP4uabbxaxsbGiWbNm4sUXX9SVztLSUgFAlJaW6j1EIqKQF4r3OOYPREShQet9ziaEEEoBQrgrKytDYmIiSktL2R6UiCIO73HG8dwRUaTTep8LeB8BIiIiIiIKPQwEiIiIiIgsiIEAEREREZEFMRAgIiIiIrIgBgJERERERBbEQICIiIiIyIIYCBARERERWRADASIiIiIiC2IgQERERERkQQwEiIiIiIgsiIEAEREREZEFMRAgIiIiIrIgBgJERERERBbEQICIiIiIyIIYCBARERERWRADASIiIiIiC2IgQERERERkQQwEiIiIiIgsiIEAEREREZEFMRAgIiIiIrIgBgJERERERBbEQICIiIiIyIIYCBARERERWRADASIiIiIiC2IgQERERERkQQwEiIiIiIgsiIEAEREREZEFMRAgIiIiIrIgBgJERERERBbEQICIiIiIyIIYCBARERERWRADASIiIiIiC2IgQERERERkQQwEiIiIiIgsiIEAEREREZEF6Q4EvvjiC9x9993IyMiAzWbDxx9/7Pa+EAKTJk1C06ZNERcXh65du2L37t1u65w8eRIPPPAA7HY7kpKSMHToUJw6dcptnR9//BE5OTlo0KABsrKy8PLLL+s/OiIiqjPMH4iIwovuQOD06dO46qqr8MYbbyi+//LLL+O1117DW2+9ha+//hqNGjVC9+7dce7cOec6DzzwAHbs2IHVq1djxYoV+OKLLzBs2DDn+2VlZejWrRtatGiBzZs3Y/r06ZgyZQreeecdA4dIRER1gfkDEVGYEX4AIJYtW+b8u7q6WqSnp4vp06c7XyspKRGxsbFiwYIFQgghfvrpJwFAfPvtt851/vOf/wibzSYOHz4shBBizpw5onHjxqKiosK5zjPPPCNat26tOW2lpaUCgCgtLTV6eEREISvU73HMH4iIgkfrfc7UPgL79u1DUVERunbt6nwtMTERHTp0QEFBAQCgoKAASUlJuP76653rdO3aFVFRUfj666+d69xyyy2IiYlxrtO9e3fs2rULv/76q5lJJiKiOsD8gYgo9NQzc2NFRUUAgLS0NLfX09LSnO8VFRUhNTXVPRH16iE5OdltnZYtW9bahvxe48aNa+27oqICFRUVzr/Lysr8PBoiIjIL8wciotATMaMGTZs2DYmJic4lKysr2EkiIqIQwPyBiEiZqYFAeno6AKC4uNjt9eLiYud76enpOHr0qNv7lZWVOHnypNs6Sttw3YenCRMmoLS01LkcPHjQ/wMiIiJTMH8gIgo9pgYCLVu2RHp6OtauXet8raysDF9//TU6duwIAOjYsSNKSkqwefNm5zrr1q1DdXU1OnTo4Fzniy++wIULF5zrrF69Gq1bt1Z87AsAsbGxsNvtbgsREYUG5g9ERKFHdyBw6tQpbN26FVu3bgUgdQDbunUrDhw4AJvNhtGjR+OFF17AJ598gm3btmHQoEHIyMhA7969AQBt27ZFjx498Oijj+Kbb77BV199hREjRuC+++5DRkYGAOD+++9HTEwMhg4dih07duCjjz7C7NmzMXbsWNMOnIiIzMX8gYgozOgdjmj9+vUCQK1l8ODBQghpiLjnnntOpKWlidjYWHHbbbeJXbt2uW3jxIkTYuDAgSI+Pl7Y7Xbx8MMPi/Lycrd1fvjhB3HzzTeL2NhY0axZM/Hiiy/qSieHhyOiSBaK9zjmD0REoUHrfc4mhBDBCEACraysDImJiSgtLeVjYCKKOLzHGcdzR0SRTut9LmJGDSIiIiIiIu0YCBARERERWRADASIiIiIiC2IgQERERERkQQwEiIiIiIgsiIEAEREREZEFMRAgIiIiIrIgBgJERERERBbEQICIiIiIyIIYCBARERERWRADASIiIiIiC2IgQERERERkQQwEiIiIiIgsiIEAEREREZEFMRAgIiIiIrIgBgJERERERBbEQICIiIiIyIIYCBARERERWRADASIiIiIiC2IgQERERERkQQwEiIiIiIgsiIEAEREREZEFMRAgIiIiIrIgBgJERERERBbEQICIiIiIyIIYCBARERERWRADASIiIiIiC2IgQERERERkQQwEiIiIiIgsiIEAEREREZEFMRAgIiIiIrIgBgJERERERBbEQICIiIiIyIIYCBARERERWRADASIiIiIiCzI9EJgyZQpsNpvb0qZNG+f7586dw/Dhw5GSkoL4+Hj07dsXxcXFbts4cOAAevbsiYYNGyI1NRXjxo1DZWWl2UklIqI6xPyBiCi01AvERtu3b481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",
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "fig, axs = plt.subplots(2, 2, figsize=(8, 6))\n",
- "\n",
- "# Plot scatter plots for each group\n",
- "axs[0, 0].scatter(df.loc[df['Group'] == '4', 'Date'], df.loc[df['Group'] == '4', 'sales'], color='red', marker='o')\n",
- "axs[0, 0].set_title('Article Group 1')\n",
- "\n",
- "axs[0, 1].scatter(df.loc[df['Group'] == '7', 'Date'], df.loc[df['Group'] == '7', 'sales'], color='blue', marker='o')\n",
- "axs[0, 1].set_title('Article Group 2')\n",
- "\n",
- "axs[1, 0].scatter(df.loc[df['Group'] == '1', 'Date'], df.loc[df['Group'] == '1', 'sales'], color='green', marker='o')\n",
- "axs[1, 0].set_title('Article Group 3')\n",
- "\n",
- "axs[1, 1].scatter(df.loc[df['Group'] == '6', 'Date'], df.loc[df['Group'] == '6', 'sales'], color='yellow', marker='o')\n",
- "axs[1, 1].set_title('Article Group 4')\n",
- "\n",
- "# Adjust spacing between subplots\n",
- "plt.tight_layout()\n",
- "\n",
- "for ax in axs.flat:\n",
- " ax.set_xlim(df['Date'].min(), df['Date'].max())\n",
- " ax.set_ylim(df['sales'].min(), df['sales'].max())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "id": "c0dfb883-aa55-45b1-81ea-12afc089d5fd",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
- " from .autonotebook import tqdm as notebook_tqdm\n",
- "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torchvision/io/image.py:11: UserWarning: Failed to load image Python extension: dlopen(/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torchvision/image.so, 0x0006): Library not loaded: @rpath/libpng16.16.dylib\n",
- " Referenced from: <5F6B6919-410D-397C-98F2-12C5934F9DBE> /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/torchvision/image.so\n",
- " Reason: tried: '/Users/malfet/miniforge3/envs/py_39_torch-1.10.2/lib/libpng16.16.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/malfet/miniforge3/envs/py_39_torch-1.10.2/lib/libpng16.16.dylib' (no such file), '/Users/malfet/miniforge3/envs/py_39_torch-1.10.2/lib/libpng16.16.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/malfet/miniforge3/envs/py_39_torch-1.10.2/lib/libpng16.16.dylib' (no such file), '/Users/malfet/miniforge3/envs/py_39_torch-1.10.2/lib/libpng16.16.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/malfet/miniforge3/envs/py_39_torch-1.10.2/lib/libpng16.16.dylib' (no such file), '/Users/malfet/miniforge3/envs/py_39_torch-1.10.2/lib/libpng16.16.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/malfet/miniforge3/envs/py_39_torch-1.10.2/lib/libpng16.16.dylib' (no such file), '/usr/lib/libpng16.16.dylib' (no such file, not in dyld cache)\n",
- " warn(f\"Failed to load image Python extension: {e}\")\n"
- ]
- }
- ],
- "source": [
- "## Imports\n",
- "import pickle\n",
- "import warnings\n",
- "#import streamlit as st\n",
- "from pathlib import Path\n",
- "\n",
- "import numpy as np\n",
- "import pandas as pd\n",
- "import matplotlib.pyplot as plt\n",
- "import datetime\n",
- "\n",
- "import torch\n",
- "from torch.distributions import Normal\n",
- "from pytorch_forecasting import (\n",
- " TimeSeriesDataSet,\n",
- " TemporalFusionTransformer,\n",
- ")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "id": "720b4e43-5b2c-489f-9b61-779d618b5f45",
- "metadata": {},
- "outputs": [],
- "source": [
- "def raw_preds_to_df(raw,quantiles = None):\n",
- " \"\"\"\n",
- " raw is output of model.predict with return_index=True\n",
- " quantiles can be provided like [0.1,0.5,0.9] to get interpretable quantiles\n",
- " in the output, time_idx is the first prediction time index (one step after knowledge cutoff)\n",
- " pred_idx the index of the predicted date i.e. time_idx + h - 1\n",
- " \"\"\"\n",
- " index = raw[2]\n",
- " preds = raw[0].prediction\n",
- " dec_len = preds.shape[1]\n",
- " n_quantiles = preds.shape[-1]\n",
- " preds_df = pd.DataFrame(index.values.repeat(dec_len * n_quantiles, axis=0),columns=index.columns)\n",
- " preds_df = preds_df.assign(h=np.tile(np.repeat(np.arange(1,1+dec_len),n_quantiles),len(preds_df)//(dec_len*n_quantiles)))\n",
- " preds_df = preds_df.assign(q=np.tile(np.arange(n_quantiles),len(preds_df)//n_quantiles))\n",
- " preds_df = preds_df.assign(pred=preds.flatten().numpy())\n",
- " if quantiles is not None:\n",
- " preds_df['q'] = preds_df['q'].map({i:q for i,q in enumerate(quantiles)})\n",
- "\n",
- " preds_df['pred_idx'] = preds_df['time_idx'] + preds_df['h'] - 1\n",
- " return preds_df"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "id": "7a0abc6e-5310-4e86-b622-a27c757a05f4",
- "metadata": {},
- "outputs": [],
- "source": [
- "def prepare_dataset(parameters, df, rain = \"Default\", temperature = 0.0, datepicker = datetime.date(2022, 10, 24), mapping = {\n",
- " \"Yes\" : 1,\n",
- " \"No\" : 0\n",
- "}):\n",
- " if rain != \"Default\":\n",
- " df[\"MTXWTH_Day_precip\"] = rain_mapping[rain]\n",
- " \n",
- " df[\"MTXWTH_Temp_min\"] = df[\"MTXWTH_Temp_min\"] + temperature\n",
- " df[\"MTXWTH_Temp_max\"] = df[\"MTXWTH_Temp_max\"] + temperature\n",
- "\n",
- " lowerbound = datepicker - datetime.timedelta(days = 35) \n",
- " upperbound = datepicker + datetime.timedelta(days = 30) \n",
- "\n",
- " df = df.loc[(df[\"Date\"].dt.date>lowerbound) & (df[\"Date\"].dt.date<=upperbound)]\n",
- " print(df)\n",
- " df = TimeSeriesDataSet.from_parameters(parameters, df)\n",
- " return df.to_dataloader(train=False, batch_size=256,num_workers = 0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "id": "62785ac5-d144-486a-aa15-790e8624fcf0",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " sales DayInYear time_idx Wahl Baustelle MontagLangesWE \\\n",
- "270386 1920.2408 263 2455 0.0 0.0 0.0 \n",
- "270387 1814.0908 264 2456 0.0 0.0 0.0 \n",
- "270388 1749.4744 265 2457 0.0 0.0 0.0 \n",
- "270389 1878.0510 266 2458 0.0 0.0 0.0 \n",
- "270390 1853.9646 267 2459 0.0 0.0 0.0 \n",
- "... ... ... ... ... ... ... \n",
- "286850 1693.3114 323 2515 0.0 0.0 0.0 \n",
- "286851 1898.4318 324 2516 0.0 0.0 0.0 \n",
- "286852 1581.6030 325 2517 0.0 0.0 0.0 \n",
- "286853 1569.0580 326 2518 0.0 0.0 0.0 \n",
- "286854 0.0000 327 2519 nan nan nan \n",
- "\n",
- " FreitagLangesWE nosale holiday AufSommerzeit ... \\\n",
- "270386 0.0 0 none 0.0 ... \n",
- "270387 0.0 0 none 0.0 ... \n",
- "270388 0.0 0 none 0.0 ... \n",
- "270389 0.0 0 none 0.0 ... \n",
- "270390 0.0 0 none 0.0 ... \n",
- "... ... ... ... ... ... \n",
- "286850 0.0 0 none 0.0 ... \n",
- "286851 0.0 0 NotCondensed_Totensonntag 0.0 ... \n",
- "286852 0.0 0 none 0.0 ... \n",
- "286853 0.0 0 none 0.0 ... \n",
- "286854 nan 1 none 0.0 ... \n",
- "\n",
- " Branch Weekday Date MTXWTH_Day_precip MTXWTH_Temp_max \\\n",
- "270386 15 1 2022-09-20 0.0 16.95 \n",
- "270387 15 2 2022-09-21 0.0 17.99 \n",
- "270388 15 3 2022-09-22 0.0 17.96 \n",
- "270389 15 4 2022-09-23 0.0 17.75 \n",
- "270390 15 5 2022-09-24 0.0 14.59 \n",
- "... ... ... ... ... ... \n",
- "286850 15 5 2022-11-19 0.0 4.47 \n",
- "286851 15 6 2022-11-20 1.0 2.53 \n",
- "286852 15 0 2022-11-21 0.0 1.44 \n",
- "286853 15 1 2022-11-22 0.0 1.99 \n",
- "286854 15 2 2022-11-23 0.0 4.82 \n",
- "\n",
- " MTXWTH_Temp_min Start End ShiftLength weight \n",
- "270386 7.05 6.0 13.983333 480.0 1 \n",
- "270387 6.05 6.0 13.983333 480.0 1 \n",
- "270388 10.03 6.0 13.983333 480.0 1 \n",
- "270389 8.39 6.0 13.983333 480.0 1 \n",
- "270390 11.31 6.0 11.983333 360.0 1 \n",
- "... ... ... ... ... ... \n",
- "286850 -4.95 6.0 11.983333 360.0 1 \n",
- "286851 -2.96 7.0 10.983333 240.0 1 \n",
- "286852 -3.72 6.0 13.983333 480.0 1 \n",
- "286853 -2.58 6.0 13.983333 480.0 1 \n",
- "286854 2.40 7.0 17.983333 660.0 0 \n",
- "\n",
- "[260 rows x 22 columns]\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/sklearn/base.py:329: UserWarning: Trying to unpickle estimator StandardScaler from version 1.2.2 when using version 1.1.3. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to:\n",
- "https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations\n",
- " warnings.warn(\n"
- ]
- }
- ],
- "source": [
- "with open('data/parameters.pkl', 'rb') as f:\n",
- " parameters = pickle.load(f)\n",
- "df = pd.read_pickle('data/test_data.pkl')\n",
- "df = df.loc[(df[\"Branch\"] == \"15\") & (df[\"Group\"].isin([\"6\",\"7\",\"4\",\"1\"]))]\n",
- "_dataloader = prepare_dataset(parameters, df.copy())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "id": "fda01d15-fd6a-4b87-abfd-7d9011af53e4",
- "metadata": {},
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pytorch_lightning/utilities/parsing.py:262: UserWarning: Attribute 'loss' is an instance of `nn.Module` and is already saved during checkpointing. It is recommended to ignore them using `self.save_hyperparameters(ignore=['loss'])`.\n",
- " rank_zero_warn(\n",
- "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pytorch_lightning/utilities/parsing.py:262: UserWarning: Attribute 'logging_metrics' is an instance of `nn.Module` and is already saved during checkpointing. It is recommended to ignore them using `self.save_hyperparameters(ignore=['logging_metrics'])`.\n",
- " rank_zero_warn(\n"
- ]
- }
- ],
- "source": [
- "_model = TemporalFusionTransformer.load_from_checkpoint('model/tft_check.ckpt', map_location=torch.device('cpu'))\n",
- "out = _model.predict(_dataloader, mode=\"raw\", return_x=True, return_index=True)\n",
- "preds = raw_preds_to_df(out, quantiles = None)\n",
- "\n",
- "#preds = preds[[\"pred_idx\", \"Group\", \"pred\"]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "id": "bdcabe69-bc3b-46c7-a17f-138ec756c1c2",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " time_idx | \n",
- " Group | \n",
- " Branch | \n",
- " h | \n",
- " q | \n",
- " pred | \n",
- " pred_idx | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " 2490 | \n",
- " 1 | \n",
- " 15 | \n",
- " 1 | \n",
- " 0 | \n",
- " 1826.949707 | \n",
- " 2490 | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " 2490 | \n",
- " 1 | \n",
- " 15 | \n",
- " 2 | \n",
- " 0 | \n",
- " 1856.215088 | \n",
- " 2491 | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " 2490 | \n",
- " 1 | \n",
- " 15 | \n",
- " 3 | \n",
- " 0 | \n",
- " 1871.929688 | \n",
- " 2492 | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " 2490 | \n",
- " 1 | \n",
- " 15 | \n",
- " 4 | \n",
- " 0 | \n",
- " 1866.095825 | \n",
- " 2493 | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " 2490 | \n",
- " 1 | \n",
- " 15 | \n",
- " 5 | \n",
- " 0 | \n",
- " 1787.610840 | \n",
- " 2494 | \n",
- "
\n",
- " \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " 115 | \n",
- " 2490 | \n",
- " 7 | \n",
- " 15 | \n",
- " 26 | \n",
- " 0 | \n",
- " 1655.261475 | \n",
- " 2515 | \n",
- "
\n",
- " \n",
- " 116 | \n",
- " 2490 | \n",
- " 7 | \n",
- " 15 | \n",
- " 27 | \n",
- " 0 | \n",
- " 1794.728027 | \n",
- " 2516 | \n",
- "
\n",
- " \n",
- " 117 | \n",
- " 2490 | \n",
- " 7 | \n",
- " 15 | \n",
- " 28 | \n",
- " 0 | \n",
- " 1600.507812 | \n",
- " 2517 | \n",
- "
\n",
- " \n",
- " 118 | \n",
- " 2490 | \n",
- " 7 | \n",
- " 15 | \n",
- " 29 | \n",
- " 0 | \n",
- " 1595.128540 | \n",
- " 2518 | \n",
- "
\n",
- " \n",
- " 119 | \n",
- " 2490 | \n",
- " 7 | \n",
- " 15 | \n",
- " 30 | \n",
- " 0 | \n",
- " 1557.557007 | \n",
- " 2519 | \n",
- "
\n",
- " \n",
- "
\n",
- "
120 rows × 7 columns
\n",
- "
"
- ],
- "text/plain": [
- " time_idx Group Branch h q pred pred_idx\n",
- "0 2490 1 15 1 0 1826.949707 2490\n",
- "1 2490 1 15 2 0 1856.215088 2491\n",
- "2 2490 1 15 3 0 1871.929688 2492\n",
- "3 2490 1 15 4 0 1866.095825 2493\n",
- "4 2490 1 15 5 0 1787.610840 2494\n",
- ".. ... ... ... .. .. ... ...\n",
- "115 2490 7 15 26 0 1655.261475 2515\n",
- "116 2490 7 15 27 0 1794.728027 2516\n",
- "117 2490 7 15 28 0 1600.507812 2517\n",
- "118 2490 7 15 29 0 1595.128540 2518\n",
- "119 2490 7 15 30 0 1557.557007 2519\n",
- "\n",
- "[120 rows x 7 columns]"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "preds"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "id": "ab7c16c2-6fcc-40bd-a866-1fecd122dfc1",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " time_idx | \n",
- " sales | \n",
- " Group | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 270300 | \n",
- " 2369 | \n",
- " 1600.9030 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 270301 | \n",
- " 2370 | \n",
- " 1811.1958 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 270302 | \n",
- " 2371 | \n",
- " 1784.2916 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 270303 | \n",
- " 2372 | \n",
- " 1757.3488 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " 270304 | \n",
- " 2373 | \n",
- " 1741.0982 | \n",
- " 1 | \n",
- "
\n",
- " \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " 287065 | \n",
- " 2730 | \n",
- " 1643.1700 | \n",
- " 7 | \n",
- "
\n",
- " \n",
- " 287066 | \n",
- " 2731 | \n",
- " 1597.3518 | \n",
- " 7 | \n",
- "
\n",
- " \n",
- " 287067 | \n",
- " 2732 | \n",
- " 1683.6228 | \n",
- " 7 | \n",
- "
\n",
- " \n",
- " 287068 | \n",
- " 2733 | \n",
- " 1785.2180 | \n",
- " 7 | \n",
- "
\n",
- " \n",
- " 287069 | \n",
- " 2734 | \n",
- " 1589.9020 | \n",
- " 7 | \n",
- "
\n",
- " \n",
- "
\n",
- "
1464 rows × 3 columns
\n",
- "
"
- ],
- "text/plain": [
- " time_idx sales Group\n",
- "270300 2369 1600.9030 1\n",
- "270301 2370 1811.1958 1\n",
- "270302 2371 1784.2916 1\n",
- "270303 2372 1757.3488 1\n",
- "270304 2373 1741.0982 1\n",
- "... ... ... ...\n",
- "287065 2730 1643.1700 7\n",
- "287066 2731 1597.3518 7\n",
- "287067 2732 1683.6228 7\n",
- "287068 2733 1785.2180 7\n",
- "287069 2734 1589.9020 7\n",
- "\n",
- "[1464 rows x 3 columns]"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df[[\"time_idx\",\"sales\", \"Group\"]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 16,
- "id": "b5812d1f-f42d-4031-b9b7-32fac2bbe425",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " sales DayInYear time_idx Wahl Baustelle MontagLangesWE \\\n",
- "0 1600.9030 177 2369 0.0 0.0 0.0 \n",
- "1 1811.1958 178 2370 0.0 0.0 0.0 \n",
- "2 1784.2916 179 2371 0.0 0.0 0.0 \n",
- "3 1757.3488 180 2372 0.0 0.0 0.0 \n",
- "4 1741.0982 181 2373 0.0 0.0 0.0 \n",
- "... ... ... ... ... ... ... \n",
- "1459 1643.1700 173 2730 0.0 0.0 0.0 \n",
- "1460 1597.3518 174 2731 0.0 0.0 0.0 \n",
- "1461 1683.6228 175 2732 0.0 0.0 0.0 \n",
- "1462 1785.2180 176 2733 0.0 0.0 0.0 \n",
- "1463 1589.9020 177 2734 0.0 0.0 0.0 \n",
- "\n",
- " FreitagLangesWE nosale holiday AufSommerzeit ... Date \\\n",
- "0 0.0 0 none 0.0 ... 2022-06-26 \n",
- "1 0.0 0 none 0.0 ... 2022-06-27 \n",
- "2 0.0 0 none 0.0 ... 2022-06-28 \n",
- "3 0.0 0 none 0.0 ... 2022-06-29 \n",
- "4 0.0 0 none 0.0 ... 2022-06-30 \n",
- "... ... ... ... ... ... ... \n",
- "1459 0.0 0 none 0.0 ... 2023-06-22 \n",
- "1460 0.0 0 none 0.0 ... 2023-06-23 \n",
- "1461 0.0 0 none 0.0 ... 2023-06-24 \n",
- "1462 0.0 0 none 0.0 ... 2023-06-25 \n",
- "1463 0.0 0 none 0.0 ... 2023-06-26 \n",
- "\n",
- " MTXWTH_Day_precip MTXWTH_Temp_max MTXWTH_Temp_min Start End \\\n",
- "0 0.0 28.52 17.47 7.0 10.983333 \n",
- "1 0.0 25.75 16.70 6.0 13.983333 \n",
- "2 0.0 23.57 14.17 6.0 13.983333 \n",
- "3 0.0 26.81 13.09 6.0 13.983333 \n",
- "4 0.0 27.26 15.00 6.0 13.983333 \n",
- "... ... ... ... ... ... \n",
- "1459 0.0 26.93 13.06 6.0 16.983333 \n",
- "1460 1.0 23.99 15.98 6.0 16.983333 \n",
- "1461 0.0 25.99 12.04 6.0 15.983333 \n",
- "1462 0.0 28.99 15.02 7.0 15.983333 \n",
- "1463 0.0 27.96 17.01 6.0 16.983333 \n",
- "\n",
- " ShiftLength weight pred_idx pred \n",
- "0 240.0 1 NaN NaN \n",
- "1 480.0 1 NaN NaN \n",
- "2 480.0 1 NaN NaN \n",
- "3 480.0 1 NaN NaN \n",
- "4 480.0 1 NaN NaN \n",
- "... ... ... ... ... \n",
- "1459 660.0 1 NaN NaN \n",
- "1460 660.0 1 NaN NaN \n",
- "1461 600.0 1 NaN NaN \n",
- "1462 540.0 1 NaN NaN \n",
- "1463 660.0 1 NaN NaN \n",
- "\n",
- "[1344 rows x 24 columns]\n"
- ]
- }
- ],
- "source": [
- "new = pd.merge(df, preds, left_on=[\"time_idx\", \"Group\"], right_on=[\"pred_idx\", \"Group\"], how = \"left\")\n",
- "print(new[new[\"pred\"].isna()])"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "id": "f4577535-4d1c-4500-96df-7df83c61011e",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0 1826.949707\n",
- "1 1856.215088\n",
- "2 1871.929688\n",
- "3 1866.095825\n",
- "4 1787.610840\n",
- "5 1659.851440\n",
- "6 1749.331543\n",
- "7 1878.842407\n",
- "8 1868.011841\n",
- "9 1886.265625\n",
- "10 1882.206055\n",
- "11 1794.047852\n",
- "12 1664.293335\n",
- "13 1855.808838\n",
- "14 1866.882690\n",
- "15 1880.703613\n",
- "16 1893.997437\n",
- "17 1886.795654\n",
- "18 1808.130371\n",
- "19 1699.440552\n",
- "20 1854.313721\n",
- "21 1858.726685\n",
- "22 1814.451782\n",
- "23 1863.013184\n",
- "24 1884.281982\n",
- "25 1781.215820\n",
- "26 1679.599243\n",
- "27 1804.118652\n",
- "28 1800.697144\n",
- "29 1794.221802\n",
- "Name: 1, dtype: float32\n",
- "30 1528.776611\n",
- "31 1543.648682\n",
- "32 1544.217407\n",
- "33 1533.632935\n",
- "34 1547.297485\n",
- "35 1568.251465\n",
- "36 1432.989502\n",
- "37 1559.411621\n",
- "38 1555.778076\n",
- "39 1562.257935\n",
- "40 1563.604248\n",
- "41 1542.455200\n",
- "42 1595.332031\n",
- "43 1542.713867\n",
- "44 1494.202271\n",
- "45 1556.931152\n",
- "46 1561.306152\n",
- "47 1575.157959\n",
- "48 1546.359741\n",
- "49 1665.563232\n",
- "50 1547.409302\n",
- "51 1537.488281\n",
- "52 1533.096191\n",
- "53 1506.796509\n",
- "54 1532.159912\n",
- "55 1509.309326\n",
- "56 1635.444092\n",
- "57 1473.974487\n",
- "58 1466.395752\n",
- "59 1451.778198\n",
- "Name: 4, dtype: float32\n",
- "60 2009.041016\n",
- "61 2052.925537\n",
- "62 2075.127686\n",
- "63 2073.555420\n",
- "64 1894.730835\n",
- "65 1712.648071\n",
- "66 2012.644165\n",
- "67 2078.718262\n",
- "68 2063.913574\n",
- "69 2102.091309\n",
- "70 2095.394043\n",
- "71 1910.086914\n",
- "72 1771.222168\n",
- "73 2049.833252\n",
- "74 2064.734375\n",
- "75 2089.499023\n",
- "76 2110.970947\n",
- "77 2104.520020\n",
- "78 1933.123291\n",
- "79 1808.569946\n",
- "80 2050.945801\n",
- "81 2056.272217\n",
- "82 2002.636841\n",
- "83 2061.285889\n",
- "84 2097.291260\n",
- "85 1900.992188\n",
- "86 1744.634521\n",
- "87 1993.816650\n",
- "88 1990.942261\n",
- "89 2046.452393\n",
- "Name: 6, dtype: float32\n",
- "90 1626.679443\n",
- "91 1618.315674\n",
- "92 1620.280151\n",
- "93 1627.040161\n",
- "94 1673.808228\n",
- "95 1787.030273\n",
- "96 1562.161865\n",
- "97 1642.268433\n",
- "98 1618.766113\n",
- "99 1619.909424\n",
- "100 1619.908691\n",
- "101 1666.063477\n",
- "102 1777.630371\n",
- "103 1620.351807\n",
- "104 1619.798706\n",
- "105 1613.335693\n",
- "106 1611.184326\n",
- "107 1621.388306\n",
- "108 1673.271851\n",
- "109 1810.889648\n",
- "110 1619.840698\n",
- "111 1615.521118\n",
- "112 1616.226562\n",
- "113 1593.204102\n",
- "114 1606.631958\n",
- "115 1655.261475\n",
- "116 1794.728027\n",
- "117 1600.507812\n",
- "118 1595.128540\n",
- "119 1557.557007\n",
- "Name: 7, dtype: float32\n"
- ]
- }
- ],
- "source": [
- "datepicker = datetime.date(2022, 10, 24)\n",
- "def add_dates(group):\n",
- " #group[\"date_imputed\"] = [datepicker + datetime.timedelta(days=x) for x in range(30)]\n",
- " print(group)\n",
- " return group\n",
- "\n",
- "preds[\"date_imputed\"] = preds.groupby(\"Group\").pred.transform(add_dates)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "a8af2ca0-b8bb-4e08-8963-d463a7122033",
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "TFT_HF",
- "language": "python",
- "name": "tft_hf"
- },
- "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.9.12"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}