From a74b9c970289437429551cc7e440ba4d8a2d1743 Mon Sep 17 00:00:00 2001 From: jbagnatoMacPro Date: Wed, 13 Mar 2019 15:26:17 +0100 Subject: [PATCH] Notebooks de Series Temporales parte 2, embeddings y multivariate --- Series_Temporales_Embeddings.ipynb | 2893 ++++++++++++++++++++++++++ Series_Temporales_Multivariate.ipynb | 2383 +++++++++++++++++++++ 2 files changed, 5276 insertions(+) create mode 100644 Series_Temporales_Embeddings.ipynb create mode 100644 Series_Temporales_Multivariate.ipynb diff --git a/Series_Temporales_Embeddings.ipynb b/Series_Temporales_Embeddings.ipynb new file mode 100644 index 000000000..2183331fc --- /dev/null +++ b/Series_Temporales_Embeddings.ipynb @@ -0,0 +1,2893 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Predicción de Series Temporales NN - Embeddings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El artículo completo con la explicación detallada en el blog: http://www.aprendemachinelearning.com/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Usaremos Keras y Tensorflow" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Importamos las Librerías que vamos a utilizar" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:23:54.895365Z", + "start_time": "2019-03-12T20:23:54.833837Z" + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pylab as plt\n", + "%matplotlib inline\n", + "plt.rcParams['figure.figsize'] = (16, 9)\n", + "plt.style.use('fast')\n", + "\n", + "from keras.models import Sequential\n", + "from keras.layers import Dense,Activation,Flatten\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "\n", + "from keras.layers import Input, Embedding, Dense, Flatten, Dropout, concatenate, LSTM\n", + "from keras.layers import BatchNormalization, SpatialDropout1D\n", + "from keras.callbacks import Callback\n", + "from keras.models import Model\n", + "from keras.optimizers import Adam" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cargamos nuestro Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:23:54.935515Z", + "start_time": "2019-03-12T20:23:54.898897Z" + } + }, + "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", + "
unidades
fecha
2017-01-02236
2017-01-03237
2017-01-04290
2017-01-05221
2017-01-07128
\n", + "
" + ], + "text/plain": [ + " unidades\n", + "fecha \n", + "2017-01-02 236\n", + "2017-01-03 237\n", + "2017-01-04 290\n", + "2017-01-05 221\n", + "2017-01-07 128" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('time_series.csv', parse_dates=[0], header=None,index_col=0, names=['fecha','unidades'])\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:23:54.958514Z", + "start_time": "2019-03-12T20:23:54.938655Z" + } + }, + "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", + "
unidadesweekdaymonth
fecha
2017-01-0223601
2017-01-0323711
2017-01-0429021
2017-01-0522131
2017-01-0712851
\n", + "
" + ], + "text/plain": [ + " unidades weekday month\n", + "fecha \n", + "2017-01-02 236 0 1\n", + "2017-01-03 237 1 1\n", + "2017-01-04 290 2 1\n", + "2017-01-05 221 3 1\n", + "2017-01-07 128 5 1" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['weekday']=[x.weekday() for x in df.index]\n", + "df['month']=[x.month for x in df.index]\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:23:54.989274Z", + "start_time": "2019-03-12T20:23:54.961638Z" + } + }, + "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", + "
unidadesweekdaymonth
count604.000000604.000000604.000000
mean215.9354302.6440406.304636
std75.0503041.8186743.312359
min51.0000000.0000001.000000
25%171.0000001.0000003.000000
50%214.0000003.0000006.000000
75%261.2500004.0000009.000000
max591.0000006.00000012.000000
\n", + "
" + ], + "text/plain": [ + " unidades weekday month\n", + "count 604.000000 604.000000 604.000000\n", + "mean 215.935430 2.644040 6.304636\n", + "std 75.050304 1.818674 3.312359\n", + "min 51.000000 0.000000 1.000000\n", + "25% 171.000000 1.000000 3.000000\n", + "50% 214.000000 3.000000 6.000000\n", + "75% 261.250000 4.000000 9.000000\n", + "max 591.000000 6.000000 12.000000" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Preprocesado de los datos" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:23:55.001607Z", + "start_time": "2019-03-12T20:23:54.992766Z" + } + }, + "outputs": [], + "source": [ + "PASOS=7\n", + "# convert series to supervised learning\n", + "def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):\n", + " n_vars = 1 if type(data) is list else data.shape[1]\n", + " df = pd.DataFrame(data)\n", + " cols, names = list(), list()\n", + " # input sequence (t-n, ... t-1)\n", + " for i in range(n_in, 0, -1):\n", + " cols.append(df.shift(i))\n", + " names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]\n", + " # forecast sequence (t, t+1, ... t+n)\n", + " for i in range(0, n_out):\n", + " cols.append(df.shift(-i))\n", + " if i == 0:\n", + " names += [('var%d(t)' % (j+1)) for j in range(n_vars)]\n", + " else:\n", + " names += [('var%d(t+%d)' % (j+1, i)) for j in range(n_vars)]\n", + " # put it all together\n", + " agg = pd.concat(cols, axis=1)\n", + " agg.columns = names\n", + " # drop rows with NaN values\n", + " if dropnan:\n", + " agg.dropna(inplace=True)\n", + " return agg" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:25:26.868065Z", + "start_time": "2019-03-12T20:23:55.004644Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jbagnato/anaconda3/envs/python36/lib/python3.6/site-packages/pandas/core/indexing.py:194: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " self._setitem_with_indexer(indexer, value)\n" + ] + }, + { + "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", + "
var1(t-7)var1(t-6)var1(t-5)var1(t-4)var1(t-3)var1(t-2)var1(t-1)var1(t)weekdaymonth
0-0.314815-0.311111-0.114815-0.370370-0.714815-0.103704-0.225926-0.4333333.01.0
1-0.311111-0.114815-0.370370-0.714815-0.103704-0.225926-0.433333-0.6074074.01.0
2-0.114815-0.370370-0.714815-0.103704-0.225926-0.433333-0.607407-0.5222225.01.0
3-0.370370-0.714815-0.103704-0.225926-0.433333-0.607407-0.522222-0.6444440.01.0
4-0.714815-0.103704-0.225926-0.433333-0.607407-0.522222-0.644444-0.3444441.01.0
\n", + "
" + ], + "text/plain": [ + " var1(t-7) var1(t-6) var1(t-5) var1(t-4) var1(t-3) var1(t-2) \\\n", + "0 -0.314815 -0.311111 -0.114815 -0.370370 -0.714815 -0.103704 \n", + "1 -0.311111 -0.114815 -0.370370 -0.714815 -0.103704 -0.225926 \n", + "2 -0.114815 -0.370370 -0.714815 -0.103704 -0.225926 -0.433333 \n", + "3 -0.370370 -0.714815 -0.103704 -0.225926 -0.433333 -0.607407 \n", + "4 -0.714815 -0.103704 -0.225926 -0.433333 -0.607407 -0.522222 \n", + "\n", + " var1(t-1) var1(t) weekday month \n", + "0 -0.225926 -0.433333 3.0 1.0 \n", + "1 -0.433333 -0.607407 4.0 1.0 \n", + "2 -0.607407 -0.522222 5.0 1.0 \n", + "3 -0.522222 -0.644444 0.0 1.0 \n", + "4 -0.644444 -0.344444 1.0 1.0 " + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load dataset\n", + "values = df['unidades'].values\n", + "\n", + "# ensure all data is float\n", + "values = values.astype('float32')\n", + "# normalize features\n", + "scaler = MinMaxScaler(feature_range=(-1, 1))\n", + "\n", + "values=values.reshape(-1, 1) # esto lo hacemos porque tenemos 1 sola dimension\n", + "\n", + "scaled = scaler.fit_transform(values)\n", + "\n", + "reframed = series_to_supervised(scaled, PASOS, 1)\n", + "reframed.reset_index(inplace=True, drop=True)\n", + "\n", + "contador=0\n", + "reframed['weekday']=df['weekday']\n", + "reframed['month']=df['month']\n", + "\n", + "for i in range(reframed.index[0],reframed.index[-1]):\n", + " reframed['weekday'].loc[contador]=df['weekday'][i+8]\n", + " reframed['month'].loc[contador]=df['month'][i+8]\n", + " contador=contador+1\n", + "reframed.head()\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:25:27.015326Z", + "start_time": "2019-03-12T20:25:26.871874Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jbagnato/anaconda3/envs/python36/lib/python3.6/site-packages/ipykernel_launcher.py:2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " \n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
weekdaymonthvar1(t-7)var1(t-6)var1(t-5)var1(t-4)var1(t-3)var1(t-2)var1(t-1)var1(t)
03.01.0-0.314815-0.311111-0.114815-0.370370-0.714815-0.103704-0.225926-0.433333
14.01.0-0.311111-0.114815-0.370370-0.714815-0.103704-0.225926-0.433333-0.607407
25.01.0-0.114815-0.370370-0.714815-0.103704-0.225926-0.433333-0.607407-0.522222
30.01.0-0.370370-0.714815-0.103704-0.225926-0.433333-0.607407-0.522222-0.644444
41.01.0-0.714815-0.103704-0.225926-0.433333-0.607407-0.522222-0.644444-0.344444
52.01.0-0.103704-0.225926-0.433333-0.607407-0.522222-0.644444-0.344444-0.303704
63.01.0-0.225926-0.433333-0.607407-0.522222-0.644444-0.344444-0.303704-0.474074
74.01.0-0.433333-0.607407-0.522222-0.644444-0.344444-0.303704-0.474074-0.459259
85.01.0-0.607407-0.522222-0.644444-0.344444-0.303704-0.474074-0.459259-0.488889
96.01.0-0.522222-0.644444-0.344444-0.303704-0.474074-0.459259-0.488889-0.622222
100.01.0-0.644444-0.344444-0.303704-0.474074-0.459259-0.488889-0.622222-0.974074
111.01.0-0.344444-0.303704-0.474074-0.459259-0.488889-0.622222-0.974074-0.474074
122.01.0-0.303704-0.474074-0.459259-0.488889-0.622222-0.974074-0.474074-0.329630
133.01.0-0.474074-0.459259-0.488889-0.622222-0.974074-0.474074-0.329630-0.425926
144.01.0-0.459259-0.488889-0.622222-0.974074-0.474074-0.329630-0.425926-0.322222
155.01.0-0.488889-0.622222-0.974074-0.474074-0.329630-0.425926-0.322222-0.644444
160.01.0-0.622222-0.974074-0.474074-0.329630-0.425926-0.322222-0.644444-0.688889
171.01.0-0.974074-0.474074-0.329630-0.425926-0.322222-0.644444-0.688889-0.207407
182.02.0-0.474074-0.329630-0.425926-0.322222-0.644444-0.688889-0.207407-0.151852
193.02.0-0.329630-0.425926-0.322222-0.644444-0.688889-0.207407-0.151852-0.507407
204.02.0-0.425926-0.322222-0.644444-0.688889-0.207407-0.151852-0.507407-0.566667
215.02.0-0.322222-0.644444-0.688889-0.207407-0.151852-0.507407-0.566667-0.611111
220.02.0-0.644444-0.688889-0.207407-0.151852-0.507407-0.566667-0.611111-0.774074
231.02.0-0.688889-0.207407-0.151852-0.507407-0.566667-0.611111-0.774074-0.181481
242.02.0-0.207407-0.151852-0.507407-0.566667-0.611111-0.774074-0.181481-0.407407
253.02.0-0.151852-0.507407-0.566667-0.611111-0.774074-0.181481-0.407407-0.451852
264.02.0-0.507407-0.566667-0.611111-0.774074-0.181481-0.407407-0.451852-0.648148
275.02.0-0.566667-0.611111-0.774074-0.181481-0.407407-0.451852-0.648148-0.577778
280.02.0-0.611111-0.774074-0.181481-0.407407-0.451852-0.648148-0.577778-0.848148
291.02.0-0.774074-0.181481-0.407407-0.451852-0.648148-0.577778-0.848148-0.418519
.................................
5660.010.0-0.737037-0.351852-0.488889-0.462963-0.414815-0.337037-0.555556-0.959259
5671.010.0-0.351852-0.488889-0.462963-0.414815-0.337037-0.555556-0.959259-0.255556
5682.010.0-0.488889-0.462963-0.414815-0.337037-0.555556-0.959259-0.255556-0.374074
5693.011.0-0.462963-0.414815-0.337037-0.555556-0.959259-0.255556-0.374074-0.092593
5704.011.0-0.414815-0.337037-0.555556-0.959259-0.255556-0.374074-0.092593-0.948148
5715.011.0-0.337037-0.555556-0.959259-0.255556-0.374074-0.092593-0.948148-0.400000
5720.011.0-0.555556-0.959259-0.255556-0.374074-0.092593-0.948148-0.400000-0.833333
5731.011.0-0.959259-0.255556-0.374074-0.092593-0.948148-0.400000-0.833333-0.170370
5742.011.0-0.255556-0.374074-0.092593-0.948148-0.400000-0.833333-0.170370-0.444444
5753.011.0-0.374074-0.092593-0.948148-0.400000-0.833333-0.170370-0.444444-0.577778
5764.011.0-0.092593-0.948148-0.400000-0.833333-0.170370-0.444444-0.577778-0.585185
5775.011.0-0.948148-0.400000-0.833333-0.170370-0.444444-0.577778-0.585185-0.440741
5780.011.0-0.400000-0.833333-0.170370-0.444444-0.577778-0.585185-0.440741-0.814815
5791.011.0-0.833333-0.170370-0.444444-0.577778-0.585185-0.440741-0.814815-0.296296
5802.011.0-0.170370-0.444444-0.577778-0.585185-0.440741-0.814815-0.296296-0.518519
5813.011.0-0.444444-0.577778-0.585185-0.440741-0.814815-0.296296-0.518519-0.340741
5824.011.0-0.577778-0.585185-0.440741-0.814815-0.296296-0.518519-0.340741-0.377778
5835.011.0-0.585185-0.440741-0.814815-0.296296-0.518519-0.340741-0.377778-0.625926
5840.011.0-0.440741-0.814815-0.296296-0.518519-0.340741-0.377778-0.625926-0.777778
5851.011.0-0.814815-0.296296-0.518519-0.340741-0.377778-0.625926-0.777778-0.422222
5862.011.0-0.296296-0.518519-0.340741-0.377778-0.625926-0.777778-0.422222-0.425926
5873.011.0-0.518519-0.340741-0.377778-0.625926-0.777778-0.422222-0.425926-0.511111
5884.011.0-0.340741-0.377778-0.625926-0.777778-0.422222-0.425926-0.511111-0.448148
5895.011.0-0.377778-0.625926-0.777778-0.422222-0.425926-0.511111-0.448148-0.496296
5906.011.0-0.625926-0.777778-0.422222-0.425926-0.511111-0.448148-0.496296-0.488889
5910.011.0-0.777778-0.422222-0.425926-0.511111-0.448148-0.496296-0.488889-0.907407
5921.011.0-0.422222-0.425926-0.511111-0.448148-0.496296-0.488889-0.907407-0.166667
5932.011.0-0.425926-0.511111-0.448148-0.496296-0.488889-0.907407-0.166667-0.374074
5943.011.0-0.511111-0.448148-0.496296-0.488889-0.907407-0.166667-0.374074-0.511111
5954.011.0-0.448148-0.496296-0.488889-0.907407-0.166667-0.374074-0.511111-0.259259
\n", + "

596 rows × 10 columns

\n", + "
" + ], + "text/plain": [ + " weekday month var1(t-7) var1(t-6) var1(t-5) var1(t-4) var1(t-3) \\\n", + "0 3.0 1.0 -0.314815 -0.311111 -0.114815 -0.370370 -0.714815 \n", + "1 4.0 1.0 -0.311111 -0.114815 -0.370370 -0.714815 -0.103704 \n", + "2 5.0 1.0 -0.114815 -0.370370 -0.714815 -0.103704 -0.225926 \n", + "3 0.0 1.0 -0.370370 -0.714815 -0.103704 -0.225926 -0.433333 \n", + "4 1.0 1.0 -0.714815 -0.103704 -0.225926 -0.433333 -0.607407 \n", + "5 2.0 1.0 -0.103704 -0.225926 -0.433333 -0.607407 -0.522222 \n", + "6 3.0 1.0 -0.225926 -0.433333 -0.607407 -0.522222 -0.644444 \n", + "7 4.0 1.0 -0.433333 -0.607407 -0.522222 -0.644444 -0.344444 \n", + "8 5.0 1.0 -0.607407 -0.522222 -0.644444 -0.344444 -0.303704 \n", + "9 6.0 1.0 -0.522222 -0.644444 -0.344444 -0.303704 -0.474074 \n", + "10 0.0 1.0 -0.644444 -0.344444 -0.303704 -0.474074 -0.459259 \n", + "11 1.0 1.0 -0.344444 -0.303704 -0.474074 -0.459259 -0.488889 \n", + "12 2.0 1.0 -0.303704 -0.474074 -0.459259 -0.488889 -0.622222 \n", + "13 3.0 1.0 -0.474074 -0.459259 -0.488889 -0.622222 -0.974074 \n", + "14 4.0 1.0 -0.459259 -0.488889 -0.622222 -0.974074 -0.474074 \n", + "15 5.0 1.0 -0.488889 -0.622222 -0.974074 -0.474074 -0.329630 \n", + "16 0.0 1.0 -0.622222 -0.974074 -0.474074 -0.329630 -0.425926 \n", + "17 1.0 1.0 -0.974074 -0.474074 -0.329630 -0.425926 -0.322222 \n", + "18 2.0 2.0 -0.474074 -0.329630 -0.425926 -0.322222 -0.644444 \n", + "19 3.0 2.0 -0.329630 -0.425926 -0.322222 -0.644444 -0.688889 \n", + "20 4.0 2.0 -0.425926 -0.322222 -0.644444 -0.688889 -0.207407 \n", + "21 5.0 2.0 -0.322222 -0.644444 -0.688889 -0.207407 -0.151852 \n", + "22 0.0 2.0 -0.644444 -0.688889 -0.207407 -0.151852 -0.507407 \n", + "23 1.0 2.0 -0.688889 -0.207407 -0.151852 -0.507407 -0.566667 \n", + "24 2.0 2.0 -0.207407 -0.151852 -0.507407 -0.566667 -0.611111 \n", + "25 3.0 2.0 -0.151852 -0.507407 -0.566667 -0.611111 -0.774074 \n", + "26 4.0 2.0 -0.507407 -0.566667 -0.611111 -0.774074 -0.181481 \n", + "27 5.0 2.0 -0.566667 -0.611111 -0.774074 -0.181481 -0.407407 \n", + "28 0.0 2.0 -0.611111 -0.774074 -0.181481 -0.407407 -0.451852 \n", + "29 1.0 2.0 -0.774074 -0.181481 -0.407407 -0.451852 -0.648148 \n", + ".. ... ... ... ... ... ... ... \n", + "566 0.0 10.0 -0.737037 -0.351852 -0.488889 -0.462963 -0.414815 \n", + "567 1.0 10.0 -0.351852 -0.488889 -0.462963 -0.414815 -0.337037 \n", + "568 2.0 10.0 -0.488889 -0.462963 -0.414815 -0.337037 -0.555556 \n", + "569 3.0 11.0 -0.462963 -0.414815 -0.337037 -0.555556 -0.959259 \n", + "570 4.0 11.0 -0.414815 -0.337037 -0.555556 -0.959259 -0.255556 \n", + "571 5.0 11.0 -0.337037 -0.555556 -0.959259 -0.255556 -0.374074 \n", + "572 0.0 11.0 -0.555556 -0.959259 -0.255556 -0.374074 -0.092593 \n", + "573 1.0 11.0 -0.959259 -0.255556 -0.374074 -0.092593 -0.948148 \n", + "574 2.0 11.0 -0.255556 -0.374074 -0.092593 -0.948148 -0.400000 \n", + "575 3.0 11.0 -0.374074 -0.092593 -0.948148 -0.400000 -0.833333 \n", + "576 4.0 11.0 -0.092593 -0.948148 -0.400000 -0.833333 -0.170370 \n", + "577 5.0 11.0 -0.948148 -0.400000 -0.833333 -0.170370 -0.444444 \n", + "578 0.0 11.0 -0.400000 -0.833333 -0.170370 -0.444444 -0.577778 \n", + "579 1.0 11.0 -0.833333 -0.170370 -0.444444 -0.577778 -0.585185 \n", + "580 2.0 11.0 -0.170370 -0.444444 -0.577778 -0.585185 -0.440741 \n", + "581 3.0 11.0 -0.444444 -0.577778 -0.585185 -0.440741 -0.814815 \n", + "582 4.0 11.0 -0.577778 -0.585185 -0.440741 -0.814815 -0.296296 \n", + "583 5.0 11.0 -0.585185 -0.440741 -0.814815 -0.296296 -0.518519 \n", + "584 0.0 11.0 -0.440741 -0.814815 -0.296296 -0.518519 -0.340741 \n", + "585 1.0 11.0 -0.814815 -0.296296 -0.518519 -0.340741 -0.377778 \n", + "586 2.0 11.0 -0.296296 -0.518519 -0.340741 -0.377778 -0.625926 \n", + "587 3.0 11.0 -0.518519 -0.340741 -0.377778 -0.625926 -0.777778 \n", + "588 4.0 11.0 -0.340741 -0.377778 -0.625926 -0.777778 -0.422222 \n", + "589 5.0 11.0 -0.377778 -0.625926 -0.777778 -0.422222 -0.425926 \n", + "590 6.0 11.0 -0.625926 -0.777778 -0.422222 -0.425926 -0.511111 \n", + "591 0.0 11.0 -0.777778 -0.422222 -0.425926 -0.511111 -0.448148 \n", + "592 1.0 11.0 -0.422222 -0.425926 -0.511111 -0.448148 -0.496296 \n", + "593 2.0 11.0 -0.425926 -0.511111 -0.448148 -0.496296 -0.488889 \n", + "594 3.0 11.0 -0.511111 -0.448148 -0.496296 -0.488889 -0.907407 \n", + "595 4.0 11.0 -0.448148 -0.496296 -0.488889 -0.907407 -0.166667 \n", + "\n", + " var1(t-2) var1(t-1) var1(t) \n", + "0 -0.103704 -0.225926 -0.433333 \n", + "1 -0.225926 -0.433333 -0.607407 \n", + "2 -0.433333 -0.607407 -0.522222 \n", + "3 -0.607407 -0.522222 -0.644444 \n", + "4 -0.522222 -0.644444 -0.344444 \n", + "5 -0.644444 -0.344444 -0.303704 \n", + "6 -0.344444 -0.303704 -0.474074 \n", + "7 -0.303704 -0.474074 -0.459259 \n", + "8 -0.474074 -0.459259 -0.488889 \n", + "9 -0.459259 -0.488889 -0.622222 \n", + "10 -0.488889 -0.622222 -0.974074 \n", + "11 -0.622222 -0.974074 -0.474074 \n", + "12 -0.974074 -0.474074 -0.329630 \n", + "13 -0.474074 -0.329630 -0.425926 \n", + "14 -0.329630 -0.425926 -0.322222 \n", + "15 -0.425926 -0.322222 -0.644444 \n", + "16 -0.322222 -0.644444 -0.688889 \n", + "17 -0.644444 -0.688889 -0.207407 \n", + "18 -0.688889 -0.207407 -0.151852 \n", + "19 -0.207407 -0.151852 -0.507407 \n", + "20 -0.151852 -0.507407 -0.566667 \n", + "21 -0.507407 -0.566667 -0.611111 \n", + "22 -0.566667 -0.611111 -0.774074 \n", + "23 -0.611111 -0.774074 -0.181481 \n", + "24 -0.774074 -0.181481 -0.407407 \n", + "25 -0.181481 -0.407407 -0.451852 \n", + "26 -0.407407 -0.451852 -0.648148 \n", + "27 -0.451852 -0.648148 -0.577778 \n", + "28 -0.648148 -0.577778 -0.848148 \n", + "29 -0.577778 -0.848148 -0.418519 \n", + ".. ... ... ... \n", + "566 -0.337037 -0.555556 -0.959259 \n", + "567 -0.555556 -0.959259 -0.255556 \n", + "568 -0.959259 -0.255556 -0.374074 \n", + "569 -0.255556 -0.374074 -0.092593 \n", + "570 -0.374074 -0.092593 -0.948148 \n", + "571 -0.092593 -0.948148 -0.400000 \n", + "572 -0.948148 -0.400000 -0.833333 \n", + "573 -0.400000 -0.833333 -0.170370 \n", + "574 -0.833333 -0.170370 -0.444444 \n", + "575 -0.170370 -0.444444 -0.577778 \n", + "576 -0.444444 -0.577778 -0.585185 \n", + "577 -0.577778 -0.585185 -0.440741 \n", + "578 -0.585185 -0.440741 -0.814815 \n", + "579 -0.440741 -0.814815 -0.296296 \n", + "580 -0.814815 -0.296296 -0.518519 \n", + "581 -0.296296 -0.518519 -0.340741 \n", + "582 -0.518519 -0.340741 -0.377778 \n", + "583 -0.340741 -0.377778 -0.625926 \n", + "584 -0.377778 -0.625926 -0.777778 \n", + "585 -0.625926 -0.777778 -0.422222 \n", + "586 -0.777778 -0.422222 -0.425926 \n", + "587 -0.422222 -0.425926 -0.511111 \n", + "588 -0.425926 -0.511111 -0.448148 \n", + "589 -0.511111 -0.448148 -0.496296 \n", + "590 -0.448148 -0.496296 -0.488889 \n", + "591 -0.496296 -0.488889 -0.907407 \n", + "592 -0.488889 -0.907407 -0.166667 \n", + "593 -0.907407 -0.166667 -0.374074 \n", + "594 -0.166667 -0.374074 -0.511111 \n", + "595 -0.374074 -0.511111 -0.259259 \n", + "\n", + "[596 rows x 10 columns]" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "reordenado=reframed[ ['weekday','month','var1(t-7)','var1(t-6)','var1(t-5)','var1(t-4)','var1(t-3)','var1(t-2)','var1(t-1)','var1(t)'] ]\n", + "reordenado.dropna(inplace=True)\n", + "reordenado" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dividimos en set de Entrenamiento y Validación" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:25:27.031663Z", + "start_time": "2019-03-12T20:25:27.018541Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(595, 9) (595,) (30, 9) (30,)\n" + ] + } + ], + "source": [ + "training_data = reordenado.drop('var1(t)',axis=1)#.values\n", + "target_data=reordenado['var1(t)']\n", + "#training_data.head()\n", + "valid_data = training_data[595-30:595]\n", + "valid_target=target_data[595-30:595]\n", + "\n", + "training_data = training_data[0:595]\n", + "target_data=target_data[0:595]\n", + "print(training_data.shape,target_data.shape,valid_data.shape,valid_target.shape)\n", + "#training_data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "ExecuteTime": { + "end_time": "2019-02-22T21:40:14.487519Z", + "start_time": "2019-02-22T21:40:14.474395Z" + } + }, + "source": [ + "# Creamos el Modelo de Red Neuronal" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utilizaremos una Red Feedforward con Embeddings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tenemos como entradas 9 columnas (2 embeddings y 7 pasos)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:25:27.044712Z", + "start_time": "2019-03-12T20:25:27.035482Z" + } + }, + "outputs": [], + "source": [ + "def crear_modeloEmbeddings():\n", + " emb_dias = 2 #tamanio profundidad de embeddings\n", + " emb_meses = 4\n", + "\n", + " in_dias = Input(shape=[1], name = 'dias')\n", + " emb_dias = Embedding(7+1, emb_dias)(in_dias)\n", + " in_meses = Input(shape=[1], name = 'meses')\n", + " emb_meses = Embedding(12+1, emb_meses)(in_meses)\n", + "\n", + " in_cli = Input(shape=[PASOS], name = 'cli')\n", + "\n", + " fe = concatenate([(emb_dias), (emb_meses)])\n", + "\n", + " x = Flatten()(fe)\n", + " x = Dense(PASOS,activation='tanh')(x)\n", + " outp = Dense(1,activation='tanh')(x)\n", + " model = Model(inputs=[in_dias,in_meses,in_cli], outputs=outp)\n", + "\n", + " model.compile(loss='mean_absolute_error', \n", + " optimizer='adam',\n", + " metrics=['MSE'])\n", + "\n", + " model.summary()\n", + " return model\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Entrenamos nuestra máquina" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:25:29.689312Z", + "start_time": "2019-03-12T20:25:27.048164Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "__________________________________________________________________________________________________\n", + "Layer (type) Output Shape Param # Connected to \n", + "==================================================================================================\n", + "dias (InputLayer) (None, 1) 0 \n", + "__________________________________________________________________________________________________\n", + "meses (InputLayer) (None, 1) 0 \n", + "__________________________________________________________________________________________________\n", + "embedding_11 (Embedding) (None, 1, 2) 16 dias[0][0] \n", + "__________________________________________________________________________________________________\n", + "embedding_12 (Embedding) (None, 1, 4) 52 meses[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_6 (Concatenate) (None, 1, 6) 0 embedding_11[0][0] \n", + " embedding_12[0][0] \n", + "__________________________________________________________________________________________________\n", + "flatten_6 (Flatten) (None, 6) 0 concatenate_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_11 (Dense) (None, 7) 49 flatten_6[0][0] \n", + "__________________________________________________________________________________________________\n", + "dense_12 (Dense) (None, 1) 8 dense_11[0][0] \n", + "==================================================================================================\n", + "Total params: 125\n", + "Trainable params: 125\n", + "Non-trainable params: 0\n", + "__________________________________________________________________________________________________\n", + "Train on 595 samples, validate on 30 samples\n", + "Epoch 1/40\n", + "595/595 [==============================] - 1s 914us/step - loss: 0.3602 - mean_squared_error: 0.1793 - val_loss: 0.3692 - val_mean_squared_error: 0.1797\n", + "Epoch 2/40\n", + "595/595 [==============================] - 0s 68us/step - loss: 0.2670 - mean_squared_error: 0.1106 - val_loss: 0.2592 - val_mean_squared_error: 0.1010\n", + "Epoch 3/40\n", + "595/595 [==============================] - 0s 68us/step - loss: 0.2053 - mean_squared_error: 0.0705 - val_loss: 0.1838 - val_mean_squared_error: 0.0595\n", + "Epoch 4/40\n", + "595/595 [==============================] - 0s 68us/step - loss: 0.1800 - mean_squared_error: 0.0545 - val_loss: 0.1545 - val_mean_squared_error: 0.0451\n", + "Epoch 5/40\n", + "595/595 [==============================] - 0s 71us/step - loss: 0.1649 - mean_squared_error: 0.0462 - val_loss: 0.1440 - val_mean_squared_error: 0.0400\n", + "Epoch 6/40\n", + "595/595 [==============================] - 0s 68us/step - loss: 0.1512 - mean_squared_error: 0.0393 - val_loss: 0.1324 - val_mean_squared_error: 0.0340\n", + "Epoch 7/40\n", + "595/595 [==============================] - 0s 69us/step - loss: 0.1405 - mean_squared_error: 0.0341 - val_loss: 0.1243 - val_mean_squared_error: 0.0301\n", + "Epoch 8/40\n", + "595/595 [==============================] - 0s 68us/step - loss: 0.1301 - mean_squared_error: 0.0295 - val_loss: 0.1146 - val_mean_squared_error: 0.0258\n", + "Epoch 9/40\n", + "595/595 [==============================] - 0s 69us/step - loss: 0.1225 - mean_squared_error: 0.0268 - val_loss: 0.1068 - val_mean_squared_error: 0.0226\n", + "Epoch 10/40\n", + "595/595 [==============================] - 0s 65us/step - loss: 0.1163 - mean_squared_error: 0.0248 - val_loss: 0.1024 - val_mean_squared_error: 0.0215\n", + "Epoch 11/40\n", + "595/595 [==============================] - 0s 71us/step - loss: 0.1120 - mean_squared_error: 0.0234 - val_loss: 0.0986 - val_mean_squared_error: 0.0209\n", + "Epoch 12/40\n", + "595/595 [==============================] - 0s 68us/step - loss: 0.1099 - mean_squared_error: 0.0228 - val_loss: 0.0964 - val_mean_squared_error: 0.0200\n", + "Epoch 13/40\n", + "595/595 [==============================] - 0s 69us/step - loss: 0.1087 - mean_squared_error: 0.0226 - val_loss: 0.0960 - val_mean_squared_error: 0.0201\n", + "Epoch 14/40\n", + "595/595 [==============================] - 0s 68us/step - loss: 0.1080 - mean_squared_error: 0.0224 - val_loss: 0.0945 - val_mean_squared_error: 0.0199\n", + "Epoch 15/40\n", + "595/595 [==============================] - 0s 69us/step - loss: 0.1082 - mean_squared_error: 0.0226 - val_loss: 0.0944 - val_mean_squared_error: 0.0200\n", + "Epoch 16/40\n", + "595/595 [==============================] - 0s 67us/step - loss: 0.1079 - mean_squared_error: 0.0225 - val_loss: 0.0952 - val_mean_squared_error: 0.0199\n", + "Epoch 17/40\n", + "595/595 [==============================] - 0s 65us/step - loss: 0.1077 - mean_squared_error: 0.0223 - val_loss: 0.0938 - val_mean_squared_error: 0.0197\n", + "Epoch 18/40\n", + "595/595 [==============================] - 0s 61us/step - loss: 0.1078 - mean_squared_error: 0.0223 - val_loss: 0.0960 - val_mean_squared_error: 0.0201\n", + "Epoch 19/40\n", + "595/595 [==============================] - 0s 65us/step - loss: 0.1076 - mean_squared_error: 0.0224 - val_loss: 0.0956 - val_mean_squared_error: 0.0200\n", + "Epoch 20/40\n", + "595/595 [==============================] - 0s 61us/step - loss: 0.1079 - mean_squared_error: 0.0226 - val_loss: 0.0958 - val_mean_squared_error: 0.0201\n", + "Epoch 21/40\n", + "595/595 [==============================] - 0s 69us/step - loss: 0.1077 - mean_squared_error: 0.0223 - val_loss: 0.0938 - val_mean_squared_error: 0.0197\n", + "Epoch 22/40\n", + "595/595 [==============================] - 0s 70us/step - loss: 0.1080 - mean_squared_error: 0.0225 - val_loss: 0.0953 - val_mean_squared_error: 0.0197\n", + "Epoch 23/40\n", + "595/595 [==============================] - 0s 63us/step - loss: 0.1079 - mean_squared_error: 0.0224 - val_loss: 0.0934 - val_mean_squared_error: 0.0194\n", + "Epoch 24/40\n", + "595/595 [==============================] - 0s 72us/step - loss: 0.1078 - mean_squared_error: 0.0224 - val_loss: 0.0942 - val_mean_squared_error: 0.0193\n", + "Epoch 25/40\n", + "595/595 [==============================] - 0s 59us/step - loss: 0.1078 - mean_squared_error: 0.0223 - val_loss: 0.0964 - val_mean_squared_error: 0.0199\n", + "Epoch 26/40\n", + "595/595 [==============================] - 0s 60us/step - loss: 0.1080 - mean_squared_error: 0.0226 - val_loss: 0.0942 - val_mean_squared_error: 0.0196\n", + "Epoch 27/40\n", + "595/595 [==============================] - 0s 67us/step - loss: 0.1081 - mean_squared_error: 0.0224 - val_loss: 0.0956 - val_mean_squared_error: 0.0201\n", + "Epoch 28/40\n", + "595/595 [==============================] - 0s 62us/step - loss: 0.1076 - mean_squared_error: 0.0224 - val_loss: 0.0938 - val_mean_squared_error: 0.0197\n", + "Epoch 29/40\n", + "595/595 [==============================] - 0s 89us/step - loss: 0.1076 - mean_squared_error: 0.0223 - val_loss: 0.0945 - val_mean_squared_error: 0.0199\n", + "Epoch 30/40\n", + "595/595 [==============================] - 0s 118us/step - loss: 0.1077 - mean_squared_error: 0.0223 - val_loss: 0.0948 - val_mean_squared_error: 0.0197\n", + "Epoch 31/40\n", + "595/595 [==============================] - 0s 72us/step - loss: 0.1079 - mean_squared_error: 0.0226 - val_loss: 0.0938 - val_mean_squared_error: 0.0195\n", + "Epoch 32/40\n", + "595/595 [==============================] - 0s 70us/step - loss: 0.1080 - mean_squared_error: 0.0225 - val_loss: 0.0950 - val_mean_squared_error: 0.0197\n", + "Epoch 33/40\n", + "595/595 [==============================] - 0s 60us/step - loss: 0.1077 - mean_squared_error: 0.0224 - val_loss: 0.0922 - val_mean_squared_error: 0.0194\n", + "Epoch 34/40\n", + "595/595 [==============================] - 0s 62us/step - loss: 0.1078 - mean_squared_error: 0.0224 - val_loss: 0.0942 - val_mean_squared_error: 0.0197\n", + "Epoch 35/40\n", + "595/595 [==============================] - 0s 62us/step - loss: 0.1076 - mean_squared_error: 0.0225 - val_loss: 0.0949 - val_mean_squared_error: 0.0198\n", + "Epoch 36/40\n", + "595/595 [==============================] - 0s 64us/step - loss: 0.1078 - mean_squared_error: 0.0225 - val_loss: 0.0947 - val_mean_squared_error: 0.0199\n", + "Epoch 37/40\n", + "595/595 [==============================] - 0s 61us/step - loss: 0.1077 - mean_squared_error: 0.0225 - val_loss: 0.0960 - val_mean_squared_error: 0.0201\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 38/40\n", + "595/595 [==============================] - 0s 59us/step - loss: 0.1076 - mean_squared_error: 0.0224 - val_loss: 0.0964 - val_mean_squared_error: 0.0201\n", + "Epoch 39/40\n", + "595/595 [==============================] - 0s 61us/step - loss: 0.1078 - mean_squared_error: 0.0225 - val_loss: 0.0953 - val_mean_squared_error: 0.0199\n", + "Epoch 40/40\n", + "595/595 [==============================] - 0s 64us/step - loss: 0.1080 - mean_squared_error: 0.0224 - val_loss: 0.0964 - val_mean_squared_error: 0.0204\n" + ] + } + ], + "source": [ + "EPOCHS=40\n", + "\n", + "model = crear_modeloEmbeddings()\n", + "\n", + "continuas=training_data[['var1(t-7)','var1(t-6)','var1(t-5)','var1(t-4)','var1(t-3)','var1(t-2)','var1(t-1)']]\n", + "valid_continuas=valid_data[['var1(t-7)','var1(t-6)','var1(t-5)','var1(t-4)','var1(t-3)','var1(t-2)','var1(t-1)']]\n", + "\n", + "history=model.fit([training_data['weekday'],training_data['month'],continuas], target_data, epochs=EPOCHS\n", + " ,validation_data=([valid_data['weekday'],valid_data['month'],valid_continuas],valid_target))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizamos Resultados" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-13T09:00:15.750110Z", + "start_time": "2019-03-13T09:00:15.588054Z" + }, + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "30\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results=model.predict([valid_data['weekday'],valid_data['month'],valid_continuas])\n", + "print( len(results) )\n", + "plt.scatter(range(len(valid_target)),valid_target,c='g')\n", + "plt.scatter(range(len(results)),results,c='r')\n", + "plt.title('validate')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-13T09:05:05.980561Z", + "start_time": "2019-03-13T09:05:05.826587Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(history.history['loss'])\n", + "plt.title('loss')\n", + "plt.plot(history.history['val_loss'])\n", + "plt.title('validate loss')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-13T09:23:40.803818Z", + "start_time": "2019-03-13T09:23:40.606541Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.title('Accuracy')\n", + "plt.plot(history.history['mean_squared_error'])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:25:30.639616Z", + "start_time": "2019-03-12T20:25:30.616182Z" + }, + "scrolled": false + }, + "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", + "
realpredicciondiferencia
0171.000000180.597778-9.597778
162.000004107.018166-45.018162
2252.000000266.338470-14.338470
3220.000000234.285080-14.285080
4296.000000197.77612398.223877
564.999992204.157654-139.157654
6213.000000197.65849315.341507
795.999992100.203423-4.203430
8275.000000247.11927827.880722
9201.000000216.487488-15.487488
10165.000000197.776123-32.776123
11163.000000204.157654-41.157654
\n", + "
" + ], + "text/plain": [ + " real prediccion diferencia\n", + "0 171.000000 180.597778 -9.597778\n", + "1 62.000004 107.018166 -45.018162\n", + "2 252.000000 266.338470 -14.338470\n", + "3 220.000000 234.285080 -14.285080\n", + "4 296.000000 197.776123 98.223877\n", + "5 64.999992 204.157654 -139.157654\n", + "6 213.000000 197.658493 15.341507\n", + "7 95.999992 100.203423 -4.203430\n", + "8 275.000000 247.119278 27.880722\n", + "9 201.000000 216.487488 -15.487488\n", + "10 165.000000 197.776123 -32.776123\n", + "11 163.000000 204.157654 -41.157654" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "compara = pd.DataFrame(np.array([valid_target, [x[0] for x in results]])).transpose()\n", + "compara.columns = ['real', 'prediccion']\n", + "\n", + "inverted = scaler.inverse_transform(compara.values)\n", + "\n", + "compara2 = pd.DataFrame(inverted)\n", + "compara2.columns = ['real', 'prediccion']\n", + "compara2['diferencia'] = compara2['real'] - compara2['prediccion']\n", + "compara2.head(12)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:25:30.673105Z", + "start_time": "2019-03-12T20:25:30.643616Z" + } + }, + "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", + "
realpredicciondiferencia
count30.00000030.00000030.000000
mean184.733337193.536270-8.802909
std61.14478747.12097938.144459
min62.000004100.203423-139.157654
25%163.500000197.658493-22.024433
50%194.500000197.776123-10.042633
75%219.750000216.4874889.182810
max296.000000266.33847098.223877
\n", + "
" + ], + "text/plain": [ + " real prediccion diferencia\n", + "count 30.000000 30.000000 30.000000\n", + "mean 184.733337 193.536270 -8.802909\n", + "std 61.144787 47.120979 38.144459\n", + "min 62.000004 100.203423 -139.157654\n", + "25% 163.500000 197.658493 -22.024433\n", + "50% 194.500000 197.776123 -10.042633\n", + "75% 219.750000 216.487488 9.182810\n", + "max 296.000000 266.338470 98.223877" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "compara2.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-13T10:23:30.358519Z", + "start_time": "2019-03-13T10:23:30.139097Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "compara2['real'].plot()\n", + "compara2['prediccion'].plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Pronóstico" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A partir de la última semana de noviembre 2018, intentaremos predecir la primer semana de diciembre." + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:25:31.018883Z", + "start_time": "2019-03-12T20:25:31.002601Z" + } + }, + "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", + "
unidadesweekdaymonth
fecha
2018-11-16152411
2018-11-17111511
2018-11-19207011
2018-11-20206111
2018-11-21183211
2018-11-22200311
2018-11-23187411
2018-11-24189511
2018-11-2576611
2018-11-26276011
2018-11-27220111
2018-11-28183211
2018-11-29251311
2018-11-30189411
\n", + "
" + ], + "text/plain": [ + " unidades weekday month\n", + "fecha \n", + "2018-11-16 152 4 11\n", + "2018-11-17 111 5 11\n", + "2018-11-19 207 0 11\n", + "2018-11-20 206 1 11\n", + "2018-11-21 183 2 11\n", + "2018-11-22 200 3 11\n", + "2018-11-23 187 4 11\n", + "2018-11-24 189 5 11\n", + "2018-11-25 76 6 11\n", + "2018-11-26 276 0 11\n", + "2018-11-27 220 1 11\n", + "2018-11-28 183 2 11\n", + "2018-11-29 251 3 11\n", + "2018-11-30 189 4 11" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ultimosDias = df['2018-11-16':'2018-11-30']\n", + "ultimosDias" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparamos los datos para Test" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:32:39.030995Z", + "start_time": "2019-03-12T20:32:37.903652Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jbagnato/anaconda3/envs/python36/lib/python3.6/site-packages/pandas/core/indexing.py:194: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " self._setitem_with_indexer(indexer, value)\n", + "/Users/jbagnato/anaconda3/envs/python36/lib/python3.6/site-packages/ipykernel_launcher.py:27: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n" + ] + }, + { + "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", + "
weekdaymonthvar1(t-7)var1(t-6)var1(t-5)var1(t-4)var1(t-3)var1(t-2)var1(t-1)
06.011.0-0.24-0.650.310.300.070.240.11
10.011.0-0.650.310.300.070.240.110.13
21.011.00.310.300.070.240.110.13-1.00
32.011.00.300.070.240.110.13-1.001.00
43.011.00.070.240.110.13-1.001.000.44
54.011.00.240.110.13-1.001.000.440.07
\n", + "
" + ], + "text/plain": [ + " weekday month var1(t-7) var1(t-6) var1(t-5) var1(t-4) var1(t-3) \\\n", + "0 6.0 11.0 -0.24 -0.65 0.31 0.30 0.07 \n", + "1 0.0 11.0 -0.65 0.31 0.30 0.07 0.24 \n", + "2 1.0 11.0 0.31 0.30 0.07 0.24 0.11 \n", + "3 2.0 11.0 0.30 0.07 0.24 0.11 0.13 \n", + "4 3.0 11.0 0.07 0.24 0.11 0.13 -1.00 \n", + "5 4.0 11.0 0.24 0.11 0.13 -1.00 1.00 \n", + "\n", + " var1(t-2) var1(t-1) \n", + "0 0.24 0.11 \n", + "1 0.11 0.13 \n", + "2 0.13 -1.00 \n", + "3 -1.00 1.00 \n", + "4 1.00 0.44 \n", + "5 0.44 0.07 " + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load dataset\n", + "values = ultimosDias['unidades'].values\n", + "\n", + "# ensure all data is float\n", + "values = values.astype('float32')\n", + "# normalize features\n", + "#scaler = MinMaxScaler(feature_range=(-1, 1))\n", + "\n", + "values=values.reshape(-1, 1) # esto lo hacemos porque tenemos 1 sola dimension\n", + "\n", + "scaled = scaler.fit_transform(values)\n", + "\n", + "reframed = series_to_supervised(scaled, PASOS, 1)\n", + "reframed.reset_index(inplace=True, drop=True)\n", + "\n", + "contador=0\n", + "reframed['weekday']=ultimosDias['weekday']\n", + "reframed['month']=ultimosDias['month']\n", + "\n", + "for i in range(reframed.index[0],reframed.index[-1]):\n", + " reframed['weekday'].loc[contador]=ultimosDias['weekday'][i+8]\n", + " reframed['month'].loc[contador]=ultimosDias['month'][i+8]\n", + " contador=contador+1\n", + "reframed.head()\n", + "\n", + "reordenado=reframed[ ['weekday','month','var1(t-7)','var1(t-6)','var1(t-5)','var1(t-4)','var1(t-3)','var1(t-2)','var1(t-1)'] ]\n", + "reordenado.dropna(inplace=True)\n", + "reordenado" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:50:16.150881Z", + "start_time": "2019-03-12T20:50:16.142644Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 1, 9)\n", + "[[[ 4. 11. 0.24000001 0.11000001 0.13\n", + " -1. 1. 0.44000006 0.06999993]]]\n" + ] + }, + { + "data": { + "text/plain": [ + "4.0" + ] + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "values = reordenado.values\n", + "x_test = values[5:, :]\n", + "x_test = x_test.reshape((x_test.shape[0], 1, x_test.shape[1]))\n", + "print(x_test.shape)\n", + "print(x_test)\n", + "ultDiaSemana = reordenado.weekday[len(reordenado.index)-1]\n", + "ultDiaSemana" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:50:16.766799Z", + "start_time": "2019-03-12T20:50:16.761801Z" + } + }, + "outputs": [], + "source": [ + "def agregarNuevoValor(x_test,nuevoValor,ultDiaSemana):\n", + " for i in range(x_test.shape[2]-3):\n", + " x_test[0][0][i+2] = x_test[0][0][i+3]\n", + " ultDiaSemana=ultDiaSemana+1\n", + " if ultDiaSemana>6:\n", + " ultDiaSemana=0\n", + " x_test[0][0][0]=ultDiaSemana\n", + " x_test[0][0][1]=12\n", + " x_test[0][0][x_test.shape[2]-1]=nuevoValor\n", + " return x_test,ultDiaSemana" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pronóstico para la \"próxima semana\"" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:50:18.133323Z", + "start_time": "2019-03-12T20:50:18.106631Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pred 0 [[[ 4. 11. 0.24000001 0.11000001 0.13\n", + " -1. 1. 0.44000006 0.06999993]]]\n", + "pred 1 [[[ 5. 12. 0.11000001 0.13 -1.\n", + " 1. 0.44000006 0.06999993 -0.43274945]]]\n", + "pred 2 [[[ 6. 12. 0.13 -1. 1.\n", + " 0.44000006 0.06999993 -0.43274945 -0.32928693]]]\n", + "pred 3 [[[ 0. 12. -1. 1. 0.44000006\n", + " 0.06999993 -0.43274945 -0.32928693 -0.46238086]]]\n", + "pred 4 [[[ 1. 12. 1. 0.44000006 0.06999993\n", + " -0.43274945 -0.32928693 -0.46238086 -0.76184267]]]\n", + "pred 5 [[[ 2. 12. 0.44000006 0.06999993 -0.43274945\n", + " -0.32928693 -0.46238086 -0.76184267 -0.12789321]]]\n", + "pred 6 [[[ 3. 12. 0.06999993 -0.43274945 -0.32928693\n", + " -0.46238086 -0.76184267 -0.12789321 -0.25119212]]]\n" + ] + } + ], + "source": [ + "results=[]\n", + "for i in range(7):\n", + " dia=np.array([x_test[0][0][0]])\n", + " mes=np.array([x_test[0][0][1]])\n", + " valores=np.array([x_test[0][0][2:9]])\n", + " parcial=model.predict([dia, mes, valores])\n", + " results.append(parcial[0])\n", + " print('pred',i,x_test)\n", + " x_test,ultDiaSemana=agregarNuevoValor(x_test,parcial[0],ultDiaSemana)\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Re-Convertimos los resultados" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:50:23.091142Z", + "start_time": "2019-03-12T20:50:23.081630Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[array([-0.43274945], dtype=float32), array([-0.32928693], dtype=float32), array([-0.46238086], dtype=float32), array([-0.76184267], dtype=float32), array([-0.12789321], dtype=float32), array([-0.25119212], dtype=float32), array([-0.32878956], dtype=float32)]\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[132.72505699],\n", + " [143.07130895],\n", + " [129.76191632],\n", + " [ 99.81573447],\n", + " [163.21068175],\n", + " [150.88079015],\n", + " [143.12104605]])" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "adimen = [x for x in results] \n", + "print(adimen)\n", + "inverted = scaler.inverse_transform(adimen)\n", + "inverted" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizamos el pronóstico" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:50:25.529378Z", + "start_time": "2019-03-12T20:50:25.237569Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "prediccion1SemanaDiciembre = pd.DataFrame(inverted)\n", + "prediccion1SemanaDiciembre.columns = ['pronostico']\n", + "prediccion1SemanaDiciembre.plot()\n", + "prediccion1SemanaDiciembre.to_csv('pronostico_embeddings.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-12T20:50:29.464602Z", + "start_time": "2019-03-12T20:50:29.455509Z" + } + }, + "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", + "
pronostico
0132.725057
1143.071309
2129.761916
399.815734
4163.210682
5150.880790
6143.121046
\n", + "
" + ], + "text/plain": [ + " pronostico\n", + "0 132.725057\n", + "1 143.071309\n", + "2 129.761916\n", + "3 99.815734\n", + "4 163.210682\n", + "5 150.880790\n", + "6 143.121046" + ] + }, + "execution_count": 98, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "prediccion1SemanaDiciembre" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El artículo completo en www.aprendemachinelearning.com" + ] + } + ], + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Series_Temporales_Multivariate.ipynb b/Series_Temporales_Multivariate.ipynb new file mode 100644 index 000000000..8997565bc --- /dev/null +++ b/Series_Temporales_Multivariate.ipynb @@ -0,0 +1,2383 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Predicción de Series Temporales NN - Multivariate" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El artículo completo con la explicación detallada en el blog: http://www.aprendemachinelearning.com/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Usaremos Keras y Tensorflow" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Importamos las Librerías que vamos a utilizar" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:38:08.477422Z", + "start_time": "2019-03-09T11:38:08.469434Z" + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pylab as plt\n", + "%matplotlib inline\n", + "plt.rcParams['figure.figsize'] = (16, 9)\n", + "plt.style.use('fast')\n", + "\n", + "from keras.models import Sequential\n", + "from keras.layers import Dense,Activation,Flatten\n", + "from sklearn.preprocessing import MinMaxScaler" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cargamos nuestro Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:38:08.498936Z", + "start_time": "2019-03-09T11:38:08.481129Z" + } + }, + "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", + "
unidades
fecha
2017-01-02236
2017-01-03237
2017-01-04290
2017-01-05221
2017-01-07128
\n", + "
" + ], + "text/plain": [ + " unidades\n", + "fecha \n", + "2017-01-02 236\n", + "2017-01-03 237\n", + "2017-01-04 290\n", + "2017-01-05 221\n", + "2017-01-07 128" + ] + }, + "execution_count": 162, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv('time_series.csv', parse_dates=[0], header=None,index_col=0, names=['fecha','unidades'])\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cargamos Datos Categóricos: Día y Mes" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:38:08.520760Z", + "start_time": "2019-03-09T11:38:08.503032Z" + } + }, + "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", + "
unidadesweekdaymonth
fecha
2017-01-0223601
2017-01-0323711
2017-01-0429021
2017-01-0522131
2017-01-0712851
\n", + "
" + ], + "text/plain": [ + " unidades weekday month\n", + "fecha \n", + "2017-01-02 236 0 1\n", + "2017-01-03 237 1 1\n", + "2017-01-04 290 2 1\n", + "2017-01-05 221 3 1\n", + "2017-01-07 128 5 1" + ] + }, + "execution_count": 163, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df['weekday']=[x.weekday() for x in df.index]\n", + "df['month']=[x.month for x in df.index]\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:38:08.545066Z", + "start_time": "2019-03-09T11:38:08.523852Z" + } + }, + "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", + "
unidadesweekdaymonth
count604.000000604.000000604.000000
mean215.9354302.6440406.304636
std75.0503041.8186743.312359
min51.0000000.0000001.000000
25%171.0000001.0000003.000000
50%214.0000003.0000006.000000
75%261.2500004.0000009.000000
max591.0000006.00000012.000000
\n", + "
" + ], + "text/plain": [ + " unidades weekday month\n", + "count 604.000000 604.000000 604.000000\n", + "mean 215.935430 2.644040 6.304636\n", + "std 75.050304 1.818674 3.312359\n", + "min 51.000000 0.000000 1.000000\n", + "25% 171.000000 1.000000 3.000000\n", + "50% 214.000000 3.000000 6.000000\n", + "75% 261.250000 4.000000 9.000000\n", + "max 591.000000 6.000000 12.000000" + ] + }, + "execution_count": 164, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Preprocesado de los datos" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "# convert series to supervised learning\n", + "def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):\n", + " n_vars = 1 if type(data) is list else data.shape[1]\n", + " df = pd.DataFrame(data)\n", + " cols, names = list(), list()\n", + " # input sequence (t-n, ... t-1)\n", + " for i in range(n_in, 0, -1):\n", + " cols.append(df.shift(i))\n", + " names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]\n", + " # forecast sequence (t, t+1, ... t+n)\n", + " for i in range(0, n_out):\n", + " cols.append(df.shift(-i))\n", + " if i == 0:\n", + " names += [('var%d(t)' % (j+1)) for j in range(n_vars)]\n", + " else:\n", + " names += [('var%d(t+%d)' % (j+1, i)) for j in range(n_vars)]\n", + " # put it all together\n", + " agg = pd.concat(cols, axis=1)\n", + " agg.columns = names\n", + " # drop rows with NaN values\n", + " if dropnan:\n", + " agg.dropna(inplace=True)\n", + " return agg\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:38:08.595658Z", + "start_time": "2019-03-09T11:38:08.548198Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 0. 1. -0.31481487]\n", + " [ 1. 1. -0.31111115]\n", + " [ 2. 1. -0.11481488]\n", + " ...\n", + " [ 2. 11. -0.51111114]\n", + " [ 3. 11. -0.25925928]\n", + " [ 4. 11. -0.48888892]]\n" + ] + }, + { + "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", + "
var1(t-7)var2(t-7)var3(t-7)var1(t-6)var2(t-6)var3(t-6)var1(t-5)var2(t-5)var3(t-5)var1(t-4)...var3(t-3)var1(t-2)var2(t-2)var3(t-2)var1(t-1)var2(t-1)var3(t-1)var1(t)var2(t)var3(t)
fecha
2017-01-110.01.0-0.3148151.01.0-0.3111112.01.0-0.1148153.0...-0.7148150.01.0-0.1037041.01.0-0.22592621-0.433333
2017-01-121.01.0-0.3111112.01.0-0.1148153.01.0-0.3703705.0...-0.1037041.01.0-0.2259262.01.0-0.43333331-0.607407
2017-01-132.01.0-0.1148153.01.0-0.3703705.01.0-0.7148150.0...-0.2259262.01.0-0.4333333.01.0-0.60740741-0.522222
2017-01-143.01.0-0.3703705.01.0-0.7148150.01.0-0.1037041.0...-0.4333333.01.0-0.6074074.01.0-0.52222251-0.644444
2017-01-165.01.0-0.7148150.01.0-0.1037041.01.0-0.2259262.0...-0.6074074.01.0-0.5222225.01.0-0.64444401-0.344444
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " var1(t-7) var2(t-7) var3(t-7) var1(t-6) var2(t-6) var3(t-6) \\\n", + "fecha \n", + "2017-01-11 0.0 1.0 -0.314815 1.0 1.0 -0.311111 \n", + "2017-01-12 1.0 1.0 -0.311111 2.0 1.0 -0.114815 \n", + "2017-01-13 2.0 1.0 -0.114815 3.0 1.0 -0.370370 \n", + "2017-01-14 3.0 1.0 -0.370370 5.0 1.0 -0.714815 \n", + "2017-01-16 5.0 1.0 -0.714815 0.0 1.0 -0.103704 \n", + "\n", + " var1(t-5) var2(t-5) var3(t-5) var1(t-4) ... var3(t-3) \\\n", + "fecha ... \n", + "2017-01-11 2.0 1.0 -0.114815 3.0 ... -0.714815 \n", + "2017-01-12 3.0 1.0 -0.370370 5.0 ... -0.103704 \n", + "2017-01-13 5.0 1.0 -0.714815 0.0 ... -0.225926 \n", + "2017-01-14 0.0 1.0 -0.103704 1.0 ... -0.433333 \n", + "2017-01-16 1.0 1.0 -0.225926 2.0 ... -0.607407 \n", + "\n", + " var1(t-2) var2(t-2) var3(t-2) var1(t-1) var2(t-1) var3(t-1) \\\n", + "fecha \n", + "2017-01-11 0.0 1.0 -0.103704 1.0 1.0 -0.225926 \n", + "2017-01-12 1.0 1.0 -0.225926 2.0 1.0 -0.433333 \n", + "2017-01-13 2.0 1.0 -0.433333 3.0 1.0 -0.607407 \n", + "2017-01-14 3.0 1.0 -0.607407 4.0 1.0 -0.522222 \n", + "2017-01-16 4.0 1.0 -0.522222 5.0 1.0 -0.644444 \n", + "\n", + " var1(t) var2(t) var3(t) \n", + "fecha \n", + "2017-01-11 2 1 -0.433333 \n", + "2017-01-12 3 1 -0.607407 \n", + "2017-01-13 4 1 -0.522222 \n", + "2017-01-14 5 1 -0.644444 \n", + "2017-01-16 0 1 -0.344444 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "PASOS=7\n", + "\n", + "# load dataset\n", + "values = df['unidades'].values\n", + "\n", + "# ensure all data is float\n", + "values = values.astype('float32')\n", + "# normalize features\n", + "scaler = MinMaxScaler(feature_range=(-1, 1))\n", + "values=values.reshape(-1, 1) # esto lo hacemos porque tenemos 1 sola dimension\n", + "scaled = scaler.fit_transform(values)\n", + "\n", + "df['scaled'] = scaled\n", + "scaledMerge=df.drop('unidades',axis=1)\n", + "#print(scaledMerge.values)\n", + "\n", + "# frame as supervised learning\n", + "reframed = series_to_supervised(scaledMerge, PASOS, 1)\n", + "reframed.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dividimos en set de Entrenamiento y Validación" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:38:08.638397Z", + "start_time": "2019-03-09T11:38:08.598139Z" + }, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(597, 22)\n" + ] + }, + { + "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", + "
var1(t-7)var2(t-7)var3(t-7)var1(t-6)var2(t-6)var3(t-6)var1(t-5)var2(t-5)var3(t-5)var1(t-4)...var1(t-3)var2(t-3)var3(t-3)var1(t-2)var2(t-2)var3(t-2)var1(t-1)var2(t-1)var3(t-1)var3(t)
fecha
2017-01-110.01.0-0.3148151.01.0-0.3111112.01.0-0.1148153.0...5.01.0-0.7148150.01.0-0.1037041.01.0-0.225926-0.433333
2017-01-121.01.0-0.3111112.01.0-0.1148153.01.0-0.3703705.0...0.01.0-0.1037041.01.0-0.2259262.01.0-0.433333-0.607407
2017-01-132.01.0-0.1148153.01.0-0.3703705.01.0-0.7148150.0...1.01.0-0.2259262.01.0-0.4333333.01.0-0.607407-0.522222
2017-01-143.01.0-0.3703705.01.0-0.7148150.01.0-0.1037041.0...2.01.0-0.4333333.01.0-0.6074074.01.0-0.522222-0.644444
2017-01-165.01.0-0.7148150.01.0-0.1037041.01.0-0.2259262.0...3.01.0-0.6074074.01.0-0.5222225.01.0-0.644444-0.344444
\n", + "

5 rows × 22 columns

\n", + "
" + ], + "text/plain": [ + " var1(t-7) var2(t-7) var3(t-7) var1(t-6) var2(t-6) var3(t-6) \\\n", + "fecha \n", + "2017-01-11 0.0 1.0 -0.314815 1.0 1.0 -0.311111 \n", + "2017-01-12 1.0 1.0 -0.311111 2.0 1.0 -0.114815 \n", + "2017-01-13 2.0 1.0 -0.114815 3.0 1.0 -0.370370 \n", + "2017-01-14 3.0 1.0 -0.370370 5.0 1.0 -0.714815 \n", + "2017-01-16 5.0 1.0 -0.714815 0.0 1.0 -0.103704 \n", + "\n", + " var1(t-5) var2(t-5) var3(t-5) var1(t-4) ... var1(t-3) \\\n", + "fecha ... \n", + "2017-01-11 2.0 1.0 -0.114815 3.0 ... 5.0 \n", + "2017-01-12 3.0 1.0 -0.370370 5.0 ... 0.0 \n", + "2017-01-13 5.0 1.0 -0.714815 0.0 ... 1.0 \n", + "2017-01-14 0.0 1.0 -0.103704 1.0 ... 2.0 \n", + "2017-01-16 1.0 1.0 -0.225926 2.0 ... 3.0 \n", + "\n", + " var2(t-3) var3(t-3) var1(t-2) var2(t-2) var3(t-2) var1(t-1) \\\n", + "fecha \n", + "2017-01-11 1.0 -0.714815 0.0 1.0 -0.103704 1.0 \n", + "2017-01-12 1.0 -0.103704 1.0 1.0 -0.225926 2.0 \n", + "2017-01-13 1.0 -0.225926 2.0 1.0 -0.433333 3.0 \n", + "2017-01-14 1.0 -0.433333 3.0 1.0 -0.607407 4.0 \n", + "2017-01-16 1.0 -0.607407 4.0 1.0 -0.522222 5.0 \n", + "\n", + " var2(t-1) var3(t-1) var3(t) \n", + "fecha \n", + "2017-01-11 1.0 -0.225926 -0.433333 \n", + "2017-01-12 1.0 -0.433333 -0.607407 \n", + "2017-01-13 1.0 -0.607407 -0.522222 \n", + "2017-01-14 1.0 -0.522222 -0.644444 \n", + "2017-01-16 1.0 -0.644444 -0.344444 \n", + "\n", + "[5 rows x 22 columns]" + ] + }, + "execution_count": 166, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "newReframed=reframed.drop(['var1(t)','var2(t)'],axis=1)\n", + "print(newReframed.shape)\n", + "newReframed.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:38:08.654131Z", + "start_time": "2019-03-09T11:38:08.641865Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(567, 1, 21) (567,) (30, 1, 21) (30,)\n" + ] + } + ], + "source": [ + "# split into train and test sets\n", + "values = newReframed.values\n", + "n_train_days = 315+289 - (30+PASOS)\n", + "train = values[:n_train_days, :]\n", + "test = values[n_train_days:, :]\n", + "# split into input and outputs\n", + "x_train, y_train = train[:, :-1], train[:, -1]\n", + "x_val, y_val = test[:, :-1], test[:, -1]\n", + "# reshape input to be 3D [samples, timesteps, features]\n", + "x_train = x_train.reshape((x_train.shape[0], 1, x_train.shape[1]))\n", + "x_val = x_val.reshape((x_val.shape[0], 1, x_val.shape[1]))\n", + "print(x_train.shape, y_train.shape, x_val.shape, y_val.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "ExecuteTime": { + "end_time": "2019-02-22T21:40:14.487519Z", + "start_time": "2019-02-22T21:40:14.474395Z" + } + }, + "source": [ + "# Creamos el Modelo de Red Neuronal" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Utilizaremos una Red Feedforward" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Como entradas son 21 columnas (7 pasos por 3 variables)" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:38:08.664641Z", + "start_time": "2019-03-09T11:38:08.657037Z" + } + }, + "outputs": [], + "source": [ + "def crear_modeloFF():\n", + " model = Sequential() \n", + " model.add(Dense(PASOS, input_shape=(1,PASOS*3),activation='tanh'))\n", + " model.add(Flatten())\n", + " model.add(Dense(1, activation='tanh'))\n", + " model.compile(loss='mean_absolute_error',optimizer='Adam',metrics=[\"mse\"])\n", + " model.summary()\n", + " return model\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Entrenamos nuestra máquina" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:38:14.490273Z", + "start_time": "2019-03-09T11:38:08.667759Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "dense_9 (Dense) (None, 1, 7) 154 \n", + "_________________________________________________________________\n", + "flatten_5 (Flatten) (None, 7) 0 \n", + "_________________________________________________________________\n", + "dense_10 (Dense) (None, 1) 8 \n", + "=================================================================\n", + "Total params: 162\n", + "Trainable params: 162\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n", + "Train on 567 samples, validate on 30 samples\n", + "Epoch 1/40\n", + "567/567 [==============================] - 0s 769us/step - loss: 0.9168 - mean_squared_error: 1.0901 - val_loss: 0.2777 - val_mean_squared_error: 0.1117\n", + "Epoch 2/40\n", + "567/567 [==============================] - 0s 232us/step - loss: 0.3147 - mean_squared_error: 0.1677 - val_loss: 0.2270 - val_mean_squared_error: 0.0790\n", + "Epoch 3/40\n", + "567/567 [==============================] - 0s 229us/step - loss: 0.2561 - mean_squared_error: 0.1173 - val_loss: 0.2822 - val_mean_squared_error: 0.1181\n", + "Epoch 4/40\n", + "567/567 [==============================] - 0s 222us/step - loss: 0.2370 - mean_squared_error: 0.0952 - val_loss: 0.2239 - val_mean_squared_error: 0.0770\n", + "Epoch 5/40\n", + "567/567 [==============================] - 0s 212us/step - loss: 0.2175 - mean_squared_error: 0.0842 - val_loss: 0.1679 - val_mean_squared_error: 0.0480\n", + "Epoch 6/40\n", + "567/567 [==============================] - 0s 214us/step - loss: 0.2056 - mean_squared_error: 0.0778 - val_loss: 0.1868 - val_mean_squared_error: 0.0543\n", + "Epoch 7/40\n", + "567/567 [==============================] - 0s 218us/step - loss: 0.1965 - mean_squared_error: 0.0724 - val_loss: 0.1976 - val_mean_squared_error: 0.0596\n", + "Epoch 8/40\n", + "567/567 [==============================] - 0s 226us/step - loss: 0.1883 - mean_squared_error: 0.0699 - val_loss: 0.1467 - val_mean_squared_error: 0.0378\n", + "Epoch 9/40\n", + "567/567 [==============================] - 0s 213us/step - loss: 0.1789 - mean_squared_error: 0.0662 - val_loss: 0.1635 - val_mean_squared_error: 0.0477\n", + "Epoch 10/40\n", + "567/567 [==============================] - 0s 222us/step - loss: 0.1719 - mean_squared_error: 0.0648 - val_loss: 0.1554 - val_mean_squared_error: 0.0388\n", + "Epoch 11/40\n", + "567/567 [==============================] - 0s 217us/step - loss: 0.1697 - mean_squared_error: 0.0620 - val_loss: 0.1667 - val_mean_squared_error: 0.0464\n", + "Epoch 12/40\n", + "567/567 [==============================] - 0s 210us/step - loss: 0.1661 - mean_squared_error: 0.0607 - val_loss: 0.1357 - val_mean_squared_error: 0.0354\n", + "Epoch 13/40\n", + "567/567 [==============================] - 0s 217us/step - loss: 0.1635 - mean_squared_error: 0.0601 - val_loss: 0.1529 - val_mean_squared_error: 0.0405\n", + "Epoch 14/40\n", + "567/567 [==============================] - 0s 212us/step - loss: 0.1641 - mean_squared_error: 0.0605 - val_loss: 0.1435 - val_mean_squared_error: 0.0399\n", + "Epoch 15/40\n", + "567/567 [==============================] - 0s 213us/step - loss: 0.1607 - mean_squared_error: 0.0591 - val_loss: 0.1301 - val_mean_squared_error: 0.0325\n", + "Epoch 16/40\n", + "567/567 [==============================] - 0s 216us/step - loss: 0.1607 - mean_squared_error: 0.0594 - val_loss: 0.1343 - val_mean_squared_error: 0.0362\n", + "Epoch 17/40\n", + "567/567 [==============================] - 0s 212us/step - loss: 0.1598 - mean_squared_error: 0.0586 - val_loss: 0.1448 - val_mean_squared_error: 0.0381\n", + "Epoch 18/40\n", + "567/567 [==============================] - 0s 212us/step - loss: 0.1597 - mean_squared_error: 0.0588 - val_loss: 0.1447 - val_mean_squared_error: 0.0391\n", + "Epoch 19/40\n", + "567/567 [==============================] - 0s 219us/step - loss: 0.1590 - mean_squared_error: 0.0580 - val_loss: 0.1495 - val_mean_squared_error: 0.0435\n", + "Epoch 20/40\n", + "567/567 [==============================] - 0s 215us/step - loss: 0.1597 - mean_squared_error: 0.0582 - val_loss: 0.1427 - val_mean_squared_error: 0.0383\n", + "Epoch 21/40\n", + "567/567 [==============================] - 0s 218us/step - loss: 0.1577 - mean_squared_error: 0.0583 - val_loss: 0.1425 - val_mean_squared_error: 0.0350\n", + "Epoch 22/40\n", + "567/567 [==============================] - 0s 213us/step - loss: 0.1576 - mean_squared_error: 0.0566 - val_loss: 0.1379 - val_mean_squared_error: 0.0376\n", + "Epoch 23/40\n", + "567/567 [==============================] - 0s 258us/step - loss: 0.1572 - mean_squared_error: 0.0567 - val_loss: 0.1393 - val_mean_squared_error: 0.0373\n", + "Epoch 24/40\n", + "567/567 [==============================] - 0s 275us/step - loss: 0.1553 - mean_squared_error: 0.0555 - val_loss: 0.1354 - val_mean_squared_error: 0.0349\n", + "Epoch 25/40\n", + "567/567 [==============================] - 0s 206us/step - loss: 0.1552 - mean_squared_error: 0.0568 - val_loss: 0.1534 - val_mean_squared_error: 0.0429\n", + "Epoch 26/40\n", + "567/567 [==============================] - 0s 201us/step - loss: 0.1544 - mean_squared_error: 0.0545 - val_loss: 0.1471 - val_mean_squared_error: 0.0386\n", + "Epoch 27/40\n", + "567/567 [==============================] - 0s 228us/step - loss: 0.1534 - mean_squared_error: 0.0539 - val_loss: 0.1517 - val_mean_squared_error: 0.0437\n", + "Epoch 28/40\n", + "567/567 [==============================] - 0s 213us/step - loss: 0.1530 - mean_squared_error: 0.0543 - val_loss: 0.1388 - val_mean_squared_error: 0.0365\n", + "Epoch 29/40\n", + "567/567 [==============================] - 0s 227us/step - loss: 0.1532 - mean_squared_error: 0.0534 - val_loss: 0.1430 - val_mean_squared_error: 0.0388\n", + "Epoch 30/40\n", + "567/567 [==============================] - 0s 239us/step - loss: 0.1515 - mean_squared_error: 0.0530 - val_loss: 0.1303 - val_mean_squared_error: 0.0314\n", + "Epoch 31/40\n", + "567/567 [==============================] - 0s 204us/step - loss: 0.1533 - mean_squared_error: 0.0544 - val_loss: 0.1339 - val_mean_squared_error: 0.0336\n", + "Epoch 32/40\n", + "567/567 [==============================] - 0s 202us/step - loss: 0.1521 - mean_squared_error: 0.0527 - val_loss: 0.1428 - val_mean_squared_error: 0.0366\n", + "Epoch 33/40\n", + "567/567 [==============================] - 0s 209us/step - loss: 0.1517 - mean_squared_error: 0.0531 - val_loss: 0.1403 - val_mean_squared_error: 0.0369\n", + "Epoch 34/40\n", + "567/567 [==============================] - 0s 235us/step - loss: 0.1505 - mean_squared_error: 0.0521 - val_loss: 0.1491 - val_mean_squared_error: 0.0394\n", + "Epoch 35/40\n", + "567/567 [==============================] - 0s 218us/step - loss: 0.1508 - mean_squared_error: 0.0524 - val_loss: 0.1441 - val_mean_squared_error: 0.0385\n", + "Epoch 36/40\n", + "567/567 [==============================] - 0s 204us/step - loss: 0.1536 - mean_squared_error: 0.0537 - val_loss: 0.1363 - val_mean_squared_error: 0.0330\n", + "Epoch 37/40\n", + "567/567 [==============================] - 0s 296us/step - loss: 0.1531 - mean_squared_error: 0.0534 - val_loss: 0.1528 - val_mean_squared_error: 0.0424\n", + "Epoch 38/40\n", + "567/567 [==============================] - 0s 277us/step - loss: 0.1507 - mean_squared_error: 0.0522 - val_loss: 0.1380 - val_mean_squared_error: 0.0348\n", + "Epoch 39/40\n", + "567/567 [==============================] - 0s 318us/step - loss: 0.1503 - mean_squared_error: 0.0532 - val_loss: 0.1398 - val_mean_squared_error: 0.0355\n", + "Epoch 40/40\n", + "567/567 [==============================] - 0s 282us/step - loss: 0.1508 - mean_squared_error: 0.0518 - val_loss: 0.1411 - val_mean_squared_error: 0.0389\n" + ] + } + ], + "source": [ + "EPOCHS=40\n", + "\n", + "model = crear_modeloFF()\n", + "\n", + "history=model.fit(x_train,y_train,epochs=EPOCHS,validation_data=(x_val,y_val),batch_size=PASOS)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizamos Resultados" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-13T09:02:13.051879Z", + "start_time": "2019-03-13T09:02:12.899589Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "30\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results=model.predict(x_val)\n", + "print( len(results) )\n", + "plt.scatter(range(len(y_val)),y_val,c='g')\n", + "plt.scatter(range(len(results)),results,c='r')\n", + "plt.title('validate')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-13T09:03:00.871175Z", + "start_time": "2019-03-13T09:03:00.722063Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.ylim(0.12, 0.35)\n", + "plt.plot(history.history['loss'])\n", + "plt.title('loss')\n", + "plt.plot(history.history['val_loss'])\n", + "plt.title('validate loss')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-13T09:24:59.182822Z", + "start_time": "2019-03-13T09:24:59.020613Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.ylim(0.01, 0.18)\n", + "plt.title('Accuracy')\n", + "plt.plot(history.history['mean_squared_error'])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:38:24.552306Z", + "start_time": "2019-03-09T11:38:24.534522Z" + }, + "scrolled": false + }, + "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", + "
realpredicciondiferencia
0252.000006292.846415-40.846410
1220.000002271.207719-51.207718
2296.000009250.84132345.158686
364.999995233.249007-168.249012
4212.999999233.514626-20.514627
595.999996150.834429-54.834433
6274.999986239.21792235.782064
7201.000000198.9541122.045887
8165.000001199.531724-34.531722
9162.999996189.600053-26.600057
\n", + "
" + ], + "text/plain": [ + " real prediccion diferencia\n", + "0 252.000006 292.846415 -40.846410\n", + "1 220.000002 271.207719 -51.207718\n", + "2 296.000009 250.841323 45.158686\n", + "3 64.999995 233.249007 -168.249012\n", + "4 212.999999 233.514626 -20.514627\n", + "5 95.999996 150.834429 -54.834433\n", + "6 274.999986 239.217922 35.782064\n", + "7 201.000000 198.954112 2.045887\n", + "8 165.000001 199.531724 -34.531722\n", + "9 162.999996 189.600053 -26.600057" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "compara = pd.DataFrame(np.array([y_val, [x[0] for x in results]])).transpose()\n", + "compara.columns = ['real', 'prediccion']\n", + "\n", + "inverted = scaler.inverse_transform(compara.values)\n", + "\n", + "compara2 = pd.DataFrame(inverted)\n", + "compara2.columns = ['real', 'prediccion']\n", + "compara2['diferencia'] = compara2['real'] - compara2['prediccion']\n", + "compara2.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:39:51.158993Z", + "start_time": "2019-03-09T11:39:51.138301Z" + } + }, + "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", + "
realpredicciondiferencia
count30.00000030.00000030.000000
mean191.633332214.917230-23.283898
std57.58081735.81210448.738560
min64.999995150.834429-168.249012
25%169.000000194.593611-44.651899
50%200.499998209.075410-24.525737
75%220.000002237.0600201.978475
max296.000009292.84641545.158686
\n", + "
" + ], + "text/plain": [ + " real prediccion diferencia\n", + "count 30.000000 30.000000 30.000000\n", + "mean 191.633332 214.917230 -23.283898\n", + "std 57.580817 35.812104 48.738560\n", + "min 64.999995 150.834429 -168.249012\n", + "25% 169.000000 194.593611 -44.651899\n", + "50% 200.499998 209.075410 -24.525737\n", + "75% 220.000002 237.060020 1.978475\n", + "max 296.000009 292.846415 45.158686" + ] + }, + "execution_count": 174, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "compara2.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-13T10:23:25.749428Z", + "start_time": "2019-03-13T10:23:25.504790Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 192, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "compara2['real'].plot()\n", + "compara2['prediccion'].plot()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Pronóstico" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A partir de la última semana de noviembre 2018, intentaremos predecir la primer semana de diciembre." + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:34:22.278202Z", + "start_time": "2019-03-09T11:34:22.246618Z" + } + }, + "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", + "
unidadesweekdaymonthscaled
fecha
2018-11-16152411-0.625926
2018-11-17111511-0.777778
2018-11-19207011-0.422222
2018-11-20206111-0.425926
2018-11-21183211-0.511111
2018-11-22200311-0.448148
2018-11-23187411-0.496296
2018-11-24189511-0.488889
2018-11-2576611-0.907407
2018-11-26276011-0.166667
2018-11-27220111-0.374074
2018-11-28183211-0.511111
2018-11-29251311-0.259259
2018-11-30189411-0.488889
\n", + "
" + ], + "text/plain": [ + " unidades weekday month scaled\n", + "fecha \n", + "2018-11-16 152 4 11 -0.625926\n", + "2018-11-17 111 5 11 -0.777778\n", + "2018-11-19 207 0 11 -0.422222\n", + "2018-11-20 206 1 11 -0.425926\n", + "2018-11-21 183 2 11 -0.511111\n", + "2018-11-22 200 3 11 -0.448148\n", + "2018-11-23 187 4 11 -0.496296\n", + "2018-11-24 189 5 11 -0.488889\n", + "2018-11-25 76 6 11 -0.907407\n", + "2018-11-26 276 0 11 -0.166667\n", + "2018-11-27 220 1 11 -0.374074\n", + "2018-11-28 183 2 11 -0.511111\n", + "2018-11-29 251 3 11 -0.259259\n", + "2018-11-30 189 4 11 -0.488889" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ultimosDias = df['2018-11-16':'2018-11-30']\n", + "ultimosDias" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Preparamos los datos para Test" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:34:22.353579Z", + "start_time": "2019-03-09T11:34:22.281772Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 4. 11. -0.62592596]\n", + " [ 5. 11. -0.77777779]\n", + " [ 0. 11. -0.42222226]\n", + " [ 1. 11. -0.42592597]\n", + " [ 2. 11. -0.51111114]\n", + " [ 3. 11. -0.44814819]\n", + " [ 4. 11. -0.49629635]\n", + " [ 5. 11. -0.48888892]\n", + " [ 6. 11. -0.9074074 ]\n", + " [ 0. 11. -0.16666675]\n", + " [ 1. 11. -0.3740741 ]\n", + " [ 2. 11. -0.51111114]\n", + " [ 3. 11. -0.25925928]\n", + " [ 4. 11. -0.48888892]]\n" + ] + }, + { + "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", + "
var1(t-7)var2(t-7)var3(t-7)var1(t-6)var2(t-6)var3(t-6)var1(t-5)var2(t-5)var3(t-5)var1(t-4)...var3(t-4)var1(t-3)var2(t-3)var3(t-3)var1(t-2)var2(t-2)var3(t-2)var1(t-1)var2(t-1)var3(t-1)
fecha
2018-11-244.011.0-0.6259265.011.0-0.7777780.011.0-0.4222221.0...-0.4259262.011.0-0.5111113.011.0-0.4481484.011.0-0.496296
2018-11-255.011.0-0.7777780.011.0-0.4222221.011.0-0.4259262.0...-0.5111113.011.0-0.4481484.011.0-0.4962965.011.0-0.488889
2018-11-260.011.0-0.4222221.011.0-0.4259262.011.0-0.5111113.0...-0.4481484.011.0-0.4962965.011.0-0.4888896.011.0-0.907407
2018-11-271.011.0-0.4259262.011.0-0.5111113.011.0-0.4481484.0...-0.4962965.011.0-0.4888896.011.0-0.9074070.011.0-0.166667
2018-11-282.011.0-0.5111113.011.0-0.4481484.011.0-0.4962965.0...-0.4888896.011.0-0.9074070.011.0-0.1666671.011.0-0.374074
2018-11-293.011.0-0.4481484.011.0-0.4962965.011.0-0.4888896.0...-0.9074070.011.0-0.1666671.011.0-0.3740742.011.0-0.511111
2018-11-304.011.0-0.4962965.011.0-0.4888896.011.0-0.9074070.0...-0.1666671.011.0-0.3740742.011.0-0.5111113.011.0-0.259259
\n", + "

7 rows × 21 columns

\n", + "
" + ], + "text/plain": [ + " var1(t-7) var2(t-7) var3(t-7) var1(t-6) var2(t-6) var3(t-6) \\\n", + "fecha \n", + "2018-11-24 4.0 11.0 -0.625926 5.0 11.0 -0.777778 \n", + "2018-11-25 5.0 11.0 -0.777778 0.0 11.0 -0.422222 \n", + "2018-11-26 0.0 11.0 -0.422222 1.0 11.0 -0.425926 \n", + "2018-11-27 1.0 11.0 -0.425926 2.0 11.0 -0.511111 \n", + "2018-11-28 2.0 11.0 -0.511111 3.0 11.0 -0.448148 \n", + "2018-11-29 3.0 11.0 -0.448148 4.0 11.0 -0.496296 \n", + "2018-11-30 4.0 11.0 -0.496296 5.0 11.0 -0.488889 \n", + "\n", + " var1(t-5) var2(t-5) var3(t-5) var1(t-4) ... var3(t-4) \\\n", + "fecha ... \n", + "2018-11-24 0.0 11.0 -0.422222 1.0 ... -0.425926 \n", + "2018-11-25 1.0 11.0 -0.425926 2.0 ... -0.511111 \n", + "2018-11-26 2.0 11.0 -0.511111 3.0 ... -0.448148 \n", + "2018-11-27 3.0 11.0 -0.448148 4.0 ... -0.496296 \n", + "2018-11-28 4.0 11.0 -0.496296 5.0 ... -0.488889 \n", + "2018-11-29 5.0 11.0 -0.488889 6.0 ... -0.907407 \n", + "2018-11-30 6.0 11.0 -0.907407 0.0 ... -0.166667 \n", + "\n", + " var1(t-3) var2(t-3) var3(t-3) var1(t-2) var2(t-2) var3(t-2) \\\n", + "fecha \n", + "2018-11-24 2.0 11.0 -0.511111 3.0 11.0 -0.448148 \n", + "2018-11-25 3.0 11.0 -0.448148 4.0 11.0 -0.496296 \n", + "2018-11-26 4.0 11.0 -0.496296 5.0 11.0 -0.488889 \n", + "2018-11-27 5.0 11.0 -0.488889 6.0 11.0 -0.907407 \n", + "2018-11-28 6.0 11.0 -0.907407 0.0 11.0 -0.166667 \n", + "2018-11-29 0.0 11.0 -0.166667 1.0 11.0 -0.374074 \n", + "2018-11-30 1.0 11.0 -0.374074 2.0 11.0 -0.511111 \n", + "\n", + " var1(t-1) var2(t-1) var3(t-1) \n", + "fecha \n", + "2018-11-24 4.0 11.0 -0.496296 \n", + "2018-11-25 5.0 11.0 -0.488889 \n", + "2018-11-26 6.0 11.0 -0.907407 \n", + "2018-11-27 0.0 11.0 -0.166667 \n", + "2018-11-28 1.0 11.0 -0.374074 \n", + "2018-11-29 2.0 11.0 -0.511111 \n", + "2018-11-30 3.0 11.0 -0.259259 \n", + "\n", + "[7 rows x 21 columns]" + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "scaledMerge=ultimosDias.drop('unidades',axis=1)\n", + "print(scaledMerge.values)\n", + "\n", + "# frame as supervised learning\n", + "reframed = series_to_supervised(scaledMerge, PASOS, 1)\n", + "newReframed=reframed.drop(['var1(t)','var2(t)','var3(t)'],axis=1)\n", + "newReframed.head(7)" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:34:22.381464Z", + "start_time": "2019-03-09T11:34:22.372980Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 1, 21)\n", + "[[[ 4. 11. -0.49629635 5. 11.\n", + " -0.48888892 6. 11. -0.9074074 0.\n", + " 11. -0.16666675 1. 11. -0.3740741\n", + " 2. 11. -0.51111114 3. 11.\n", + " -0.25925928]]]\n" + ] + } + ], + "source": [ + "values = newReframed.values\n", + "x_test = values[6:, :]\n", + "x_test = x_test.reshape((x_test.shape[0], 1, x_test.shape[1]))\n", + "print(x_test.shape)\n", + "print(x_test)\n", + "ultDiaSemana = newReframed.index[len(newReframed.index)-1].weekday()" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:34:22.391817Z", + "start_time": "2019-03-09T11:34:22.386537Z" + } + }, + "outputs": [], + "source": [ + "def agregarNuevoValor(x_test,nuevoValor,ultDiaSemana):\n", + " for i in range(x_test.shape[2]-3):\n", + " x_test[0][0][i] = x_test[0][0][i+3]\n", + " ultDiaSemana=ultDiaSemana+1\n", + " if ultDiaSemana>6:\n", + " ultDiaSemana=0\n", + " x_test[0][0][x_test.shape[2]-3]=ultDiaSemana\n", + " x_test[0][0][x_test.shape[2]-2]=12\n", + " x_test[0][0][x_test.shape[2]-1]=nuevoValor\n", + " return x_test,ultDiaSemana" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Pronóstico para la \"próxima semana\"" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:34:22.417662Z", + "start_time": "2019-03-09T11:34:22.395033Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pred 0 [[[ 4. 11. -0.49629635 5. 11.\n", + " -0.48888892 6. 11. -0.9074074 0.\n", + " 11. -0.16666675 1. 11. -0.3740741\n", + " 2. 11. -0.51111114 3. 11.\n", + " -0.25925928]]]\n", + "pred 1 [[[ 5. 11. -0.48888892 6. 11.\n", + " -0.9074074 0. 11. -0.16666675 1.\n", + " 11. -0.3740741 2. 11. -0.51111114\n", + " 3. 11. -0.25925928 5. 12.\n", + " -0.30600056]]]\n", + "pred 2 [[[ 6. 11. -0.9074074 0. 11.\n", + " -0.16666675 1. 11. -0.3740741 2.\n", + " 11. -0.51111114 3. 11. -0.25925928\n", + " 5. 12. -0.30600056 6. 12.\n", + " -0.60506994]]]\n", + "pred 3 [[[ 0. 11. -0.16666675 1. 11.\n", + " -0.3740741 2. 11. -0.51111114 3.\n", + " 11. -0.25925928 5. 12. -0.30600056\n", + " 6. 12. -0.60506994 0. 12.\n", + " -0.16298515]]]\n", + "pred 4 [[[ 1. 11. -0.3740741 2. 11.\n", + " -0.51111114 3. 11. -0.25925928 5.\n", + " 12. -0.30600056 6. 12. -0.60506994\n", + " 0. 12. -0.16298515 1. 12.\n", + " -0.31580934]]]\n", + "pred 5 [[[ 2. 11. -0.51111114 3. 11.\n", + " -0.25925928 5. 12. -0.30600056 6.\n", + " 12. -0.60506994 0. 12. -0.16298515\n", + " 1. 12. -0.31580934 2. 12.\n", + " -0.35640854]]]\n", + "pred 6 [[[ 3. 11. -0.25925928 5. 12.\n", + " -0.30600056 6. 12. -0.60506994 0.\n", + " 12. -0.16298515 1. 12. -0.31580934\n", + " 2. 12. -0.35640854 3. 12.\n", + " -0.22789632]]]\n" + ] + } + ], + "source": [ + "results=[]\n", + "for i in range(7):\n", + " parcial=model.predict(x_test)\n", + " results.append(parcial[0])\n", + " print('pred',i,x_test)\n", + " x_test,ultDiaSemana=agregarNuevoValor(x_test,parcial[0],ultDiaSemana)\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Re-Convertimos los resultados" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:34:22.438967Z", + "start_time": "2019-03-09T11:34:22.422731Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[array([-0.30600056], dtype=float32), array([-0.60506994], dtype=float32), array([-0.16298515], dtype=float32), array([-0.31580934], dtype=float32), array([-0.35640854], dtype=float32), array([-0.22789632], dtype=float32), array([-0.21720925], dtype=float32)]\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[238.37985788],\n", + " [157.63112526],\n", + " [276.99402048],\n", + " [235.73148757],\n", + " [224.76970415],\n", + " [259.46800378],\n", + " [262.35351222]])" + ] + }, + "execution_count": 156, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "adimen = [x for x in results] \n", + "print(adimen)\n", + "inverted = scaler.inverse_transform(adimen)\n", + "inverted" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizamos el pronóstico" + ] + }, + { + "cell_type": "code", + "execution_count": 157, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:34:22.823595Z", + "start_time": "2019-03-09T11:34:22.442351Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "prediccion1SemanaDiciembre = pd.DataFrame(inverted)\n", + "prediccion1SemanaDiciembre.columns = ['pronostico']\n", + "prediccion1SemanaDiciembre.plot()\n", + "prediccion1SemanaDiciembre.to_csv('pronostico_multivariate.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": { + "ExecuteTime": { + "end_time": "2019-03-09T11:34:22.846576Z", + "start_time": "2019-03-09T11:34:22.828234Z" + } + }, + "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", + "
pronostico
0238.379858
1157.631125
2276.994020
3235.731488
4224.769704
5259.468004
6262.353512
\n", + "
" + ], + "text/plain": [ + " pronostico\n", + "0 238.379858\n", + "1 157.631125\n", + "2 276.994020\n", + "3 235.731488\n", + "4 224.769704\n", + "5 259.468004\n", + "6 262.353512" + ] + }, + "execution_count": 158, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "prediccion1SemanaDiciembre" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "El artículo completo en www.aprendemachinelearning.com" + ] + } + ], + "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.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}