{
"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",
" unidades | \n",
"
\n",
" \n",
" fecha | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 2017-01-02 | \n",
" 236 | \n",
"
\n",
" \n",
" 2017-01-03 | \n",
" 237 | \n",
"
\n",
" \n",
" 2017-01-04 | \n",
" 290 | \n",
"
\n",
" \n",
" 2017-01-05 | \n",
" 221 | \n",
"
\n",
" \n",
" 2017-01-07 | \n",
" 128 | \n",
"
\n",
" \n",
"
\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",
" unidades | \n",
" weekday | \n",
" month | \n",
"
\n",
" \n",
" fecha | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 2017-01-02 | \n",
" 236 | \n",
" 0 | \n",
" 1 | \n",
"
\n",
" \n",
" 2017-01-03 | \n",
" 237 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 2017-01-04 | \n",
" 290 | \n",
" 2 | \n",
" 1 | \n",
"
\n",
" \n",
" 2017-01-05 | \n",
" 221 | \n",
" 3 | \n",
" 1 | \n",
"
\n",
" \n",
" 2017-01-07 | \n",
" 128 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
"
\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",
" unidades | \n",
" weekday | \n",
" month | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 604.000000 | \n",
" 604.000000 | \n",
" 604.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 215.935430 | \n",
" 2.644040 | \n",
" 6.304636 | \n",
"
\n",
" \n",
" std | \n",
" 75.050304 | \n",
" 1.818674 | \n",
" 3.312359 | \n",
"
\n",
" \n",
" min | \n",
" 51.000000 | \n",
" 0.000000 | \n",
" 1.000000 | \n",
"
\n",
" \n",
" 25% | \n",
" 171.000000 | \n",
" 1.000000 | \n",
" 3.000000 | \n",
"
\n",
" \n",
" 50% | \n",
" 214.000000 | \n",
" 3.000000 | \n",
" 6.000000 | \n",
"
\n",
" \n",
" 75% | \n",
" 261.250000 | \n",
" 4.000000 | \n",
" 9.000000 | \n",
"
\n",
" \n",
" max | \n",
" 591.000000 | \n",
" 6.000000 | \n",
" 12.000000 | \n",
"
\n",
" \n",
"
\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",
" var1(t-7) | \n",
" var1(t-6) | \n",
" var1(t-5) | \n",
" var1(t-4) | \n",
" var1(t-3) | \n",
" var1(t-2) | \n",
" var1(t-1) | \n",
" var1(t) | \n",
" weekday | \n",
" month | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" -0.314815 | \n",
" -0.311111 | \n",
" -0.114815 | \n",
" -0.370370 | \n",
" -0.714815 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" 3.0 | \n",
" 1.0 | \n",
"
\n",
" \n",
" 1 | \n",
" -0.311111 | \n",
" -0.114815 | \n",
" -0.370370 | \n",
" -0.714815 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
" 4.0 | \n",
" 1.0 | \n",
"
\n",
" \n",
" 2 | \n",
" -0.114815 | \n",
" -0.370370 | \n",
" -0.714815 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
" -0.522222 | \n",
" 5.0 | \n",
" 1.0 | \n",
"
\n",
" \n",
" 3 | \n",
" -0.370370 | \n",
" -0.714815 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
" -0.522222 | \n",
" -0.644444 | \n",
" 0.0 | \n",
" 1.0 | \n",
"
\n",
" \n",
" 4 | \n",
" -0.714815 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
" -0.522222 | \n",
" -0.644444 | \n",
" -0.344444 | \n",
" 1.0 | \n",
" 1.0 | \n",
"
\n",
" \n",
"
\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",
" weekday | \n",
" month | \n",
" var1(t-7) | \n",
" var1(t-6) | \n",
" var1(t-5) | \n",
" var1(t-4) | \n",
" var1(t-3) | \n",
" var1(t-2) | \n",
" var1(t-1) | \n",
" var1(t) | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 3.0 | \n",
" 1.0 | \n",
" -0.314815 | \n",
" -0.311111 | \n",
" -0.114815 | \n",
" -0.370370 | \n",
" -0.714815 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
"
\n",
" \n",
" 1 | \n",
" 4.0 | \n",
" 1.0 | \n",
" -0.311111 | \n",
" -0.114815 | \n",
" -0.370370 | \n",
" -0.714815 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
"
\n",
" \n",
" 2 | \n",
" 5.0 | \n",
" 1.0 | \n",
" -0.114815 | \n",
" -0.370370 | \n",
" -0.714815 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
" -0.522222 | \n",
"
\n",
" \n",
" 3 | \n",
" 0.0 | \n",
" 1.0 | \n",
" -0.370370 | \n",
" -0.714815 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
" -0.522222 | \n",
" -0.644444 | \n",
"
\n",
" \n",
" 4 | \n",
" 1.0 | \n",
" 1.0 | \n",
" -0.714815 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
" -0.522222 | \n",
" -0.644444 | \n",
" -0.344444 | \n",
"
\n",
" \n",
" 5 | \n",
" 2.0 | \n",
" 1.0 | \n",
" -0.103704 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
" -0.522222 | \n",
" -0.644444 | \n",
" -0.344444 | \n",
" -0.303704 | \n",
"
\n",
" \n",
" 6 | \n",
" 3.0 | \n",
" 1.0 | \n",
" -0.225926 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
" -0.522222 | \n",
" -0.644444 | \n",
" -0.344444 | \n",
" -0.303704 | \n",
" -0.474074 | \n",
"
\n",
" \n",
" 7 | \n",
" 4.0 | \n",
" 1.0 | \n",
" -0.433333 | \n",
" -0.607407 | \n",
" -0.522222 | \n",
" -0.644444 | \n",
" -0.344444 | \n",
" -0.303704 | \n",
" -0.474074 | \n",
" -0.459259 | \n",
"
\n",
" \n",
" 8 | \n",
" 5.0 | \n",
" 1.0 | \n",
" -0.607407 | \n",
" -0.522222 | \n",
" -0.644444 | \n",
" -0.344444 | \n",
" -0.303704 | \n",
" -0.474074 | \n",
" -0.459259 | \n",
" -0.488889 | \n",
"
\n",
" \n",
" 9 | \n",
" 6.0 | \n",
" 1.0 | \n",
" -0.522222 | \n",
" -0.644444 | \n",
" -0.344444 | \n",
" -0.303704 | \n",
" -0.474074 | \n",
" -0.459259 | \n",
" -0.488889 | \n",
" -0.622222 | \n",
"
\n",
" \n",
" 10 | \n",
" 0.0 | \n",
" 1.0 | \n",
" -0.644444 | \n",
" -0.344444 | \n",
" -0.303704 | \n",
" -0.474074 | \n",
" -0.459259 | \n",
" -0.488889 | \n",
" -0.622222 | \n",
" -0.974074 | \n",
"
\n",
" \n",
" 11 | \n",
" 1.0 | \n",
" 1.0 | \n",
" -0.344444 | \n",
" -0.303704 | \n",
" -0.474074 | \n",
" -0.459259 | \n",
" -0.488889 | \n",
" -0.622222 | \n",
" -0.974074 | \n",
" -0.474074 | \n",
"
\n",
" \n",
" 12 | \n",
" 2.0 | \n",
" 1.0 | \n",
" -0.303704 | \n",
" -0.474074 | \n",
" -0.459259 | \n",
" -0.488889 | \n",
" -0.622222 | \n",
" -0.974074 | \n",
" -0.474074 | \n",
" -0.329630 | \n",
"
\n",
" \n",
" 13 | \n",
" 3.0 | \n",
" 1.0 | \n",
" -0.474074 | \n",
" -0.459259 | \n",
" -0.488889 | \n",
" -0.622222 | \n",
" -0.974074 | \n",
" -0.474074 | \n",
" -0.329630 | \n",
" -0.425926 | \n",
"
\n",
" \n",
" 14 | \n",
" 4.0 | \n",
" 1.0 | \n",
" -0.459259 | \n",
" -0.488889 | \n",
" -0.622222 | \n",
" -0.974074 | \n",
" -0.474074 | \n",
" -0.329630 | \n",
" -0.425926 | \n",
" -0.322222 | \n",
"
\n",
" \n",
" 15 | \n",
" 5.0 | \n",
" 1.0 | \n",
" -0.488889 | \n",
" -0.622222 | \n",
" -0.974074 | \n",
" -0.474074 | \n",
" -0.329630 | \n",
" -0.425926 | \n",
" -0.322222 | \n",
" -0.644444 | \n",
"
\n",
" \n",
" 16 | \n",
" 0.0 | \n",
" 1.0 | \n",
" -0.622222 | \n",
" -0.974074 | \n",
" -0.474074 | \n",
" -0.329630 | \n",
" -0.425926 | \n",
" -0.322222 | \n",
" -0.644444 | \n",
" -0.688889 | \n",
"
\n",
" \n",
" 17 | \n",
" 1.0 | \n",
" 1.0 | \n",
" -0.974074 | \n",
" -0.474074 | \n",
" -0.329630 | \n",
" -0.425926 | \n",
" -0.322222 | \n",
" -0.644444 | \n",
" -0.688889 | \n",
" -0.207407 | \n",
"
\n",
" \n",
" 18 | \n",
" 2.0 | \n",
" 2.0 | \n",
" -0.474074 | \n",
" -0.329630 | \n",
" -0.425926 | \n",
" -0.322222 | \n",
" -0.644444 | \n",
" -0.688889 | \n",
" -0.207407 | \n",
" -0.151852 | \n",
"
\n",
" \n",
" 19 | \n",
" 3.0 | \n",
" 2.0 | \n",
" -0.329630 | \n",
" -0.425926 | \n",
" -0.322222 | \n",
" -0.644444 | \n",
" -0.688889 | \n",
" -0.207407 | \n",
" -0.151852 | \n",
" -0.507407 | \n",
"
\n",
" \n",
" 20 | \n",
" 4.0 | \n",
" 2.0 | \n",
" -0.425926 | \n",
" -0.322222 | \n",
" -0.644444 | \n",
" -0.688889 | \n",
" -0.207407 | \n",
" -0.151852 | \n",
" -0.507407 | \n",
" -0.566667 | \n",
"
\n",
" \n",
" 21 | \n",
" 5.0 | \n",
" 2.0 | \n",
" -0.322222 | \n",
" -0.644444 | \n",
" -0.688889 | \n",
" -0.207407 | \n",
" -0.151852 | \n",
" -0.507407 | \n",
" -0.566667 | \n",
" -0.611111 | \n",
"
\n",
" \n",
" 22 | \n",
" 0.0 | \n",
" 2.0 | \n",
" -0.644444 | \n",
" -0.688889 | \n",
" -0.207407 | \n",
" -0.151852 | \n",
" -0.507407 | \n",
" -0.566667 | \n",
" -0.611111 | \n",
" -0.774074 | \n",
"
\n",
" \n",
" 23 | \n",
" 1.0 | \n",
" 2.0 | \n",
" -0.688889 | \n",
" -0.207407 | \n",
" -0.151852 | \n",
" -0.507407 | \n",
" -0.566667 | \n",
" -0.611111 | \n",
" -0.774074 | \n",
" -0.181481 | \n",
"
\n",
" \n",
" 24 | \n",
" 2.0 | \n",
" 2.0 | \n",
" -0.207407 | \n",
" -0.151852 | \n",
" -0.507407 | \n",
" -0.566667 | \n",
" -0.611111 | \n",
" -0.774074 | \n",
" -0.181481 | \n",
" -0.407407 | \n",
"
\n",
" \n",
" 25 | \n",
" 3.0 | \n",
" 2.0 | \n",
" -0.151852 | \n",
" -0.507407 | \n",
" -0.566667 | \n",
" -0.611111 | \n",
" -0.774074 | \n",
" -0.181481 | \n",
" -0.407407 | \n",
" -0.451852 | \n",
"
\n",
" \n",
" 26 | \n",
" 4.0 | \n",
" 2.0 | \n",
" -0.507407 | \n",
" -0.566667 | \n",
" -0.611111 | \n",
" -0.774074 | \n",
" -0.181481 | \n",
" -0.407407 | \n",
" -0.451852 | \n",
" -0.648148 | \n",
"
\n",
" \n",
" 27 | \n",
" 5.0 | \n",
" 2.0 | \n",
" -0.566667 | \n",
" -0.611111 | \n",
" -0.774074 | \n",
" -0.181481 | \n",
" -0.407407 | \n",
" -0.451852 | \n",
" -0.648148 | \n",
" -0.577778 | \n",
"
\n",
" \n",
" 28 | \n",
" 0.0 | \n",
" 2.0 | \n",
" -0.611111 | \n",
" -0.774074 | \n",
" -0.181481 | \n",
" -0.407407 | \n",
" -0.451852 | \n",
" -0.648148 | \n",
" -0.577778 | \n",
" -0.848148 | \n",
"
\n",
" \n",
" 29 | \n",
" 1.0 | \n",
" 2.0 | \n",
" -0.774074 | \n",
" -0.181481 | \n",
" -0.407407 | \n",
" -0.451852 | \n",
" -0.648148 | \n",
" -0.577778 | \n",
" -0.848148 | \n",
" -0.418519 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 566 | \n",
" 0.0 | \n",
" 10.0 | \n",
" -0.737037 | \n",
" -0.351852 | \n",
" -0.488889 | \n",
" -0.462963 | \n",
" -0.414815 | \n",
" -0.337037 | \n",
" -0.555556 | \n",
" -0.959259 | \n",
"
\n",
" \n",
" 567 | \n",
" 1.0 | \n",
" 10.0 | \n",
" -0.351852 | \n",
" -0.488889 | \n",
" -0.462963 | \n",
" -0.414815 | \n",
" -0.337037 | \n",
" -0.555556 | \n",
" -0.959259 | \n",
" -0.255556 | \n",
"
\n",
" \n",
" 568 | \n",
" 2.0 | \n",
" 10.0 | \n",
" -0.488889 | \n",
" -0.462963 | \n",
" -0.414815 | \n",
" -0.337037 | \n",
" -0.555556 | \n",
" -0.959259 | \n",
" -0.255556 | \n",
" -0.374074 | \n",
"
\n",
" \n",
" 569 | \n",
" 3.0 | \n",
" 11.0 | \n",
" -0.462963 | \n",
" -0.414815 | \n",
" -0.337037 | \n",
" -0.555556 | \n",
" -0.959259 | \n",
" -0.255556 | \n",
" -0.374074 | \n",
" -0.092593 | \n",
"
\n",
" \n",
" 570 | \n",
" 4.0 | \n",
" 11.0 | \n",
" -0.414815 | \n",
" -0.337037 | \n",
" -0.555556 | \n",
" -0.959259 | \n",
" -0.255556 | \n",
" -0.374074 | \n",
" -0.092593 | \n",
" -0.948148 | \n",
"
\n",
" \n",
" 571 | \n",
" 5.0 | \n",
" 11.0 | \n",
" -0.337037 | \n",
" -0.555556 | \n",
" -0.959259 | \n",
" -0.255556 | \n",
" -0.374074 | \n",
" -0.092593 | \n",
" -0.948148 | \n",
" -0.400000 | \n",
"
\n",
" \n",
" 572 | \n",
" 0.0 | \n",
" 11.0 | \n",
" -0.555556 | \n",
" -0.959259 | \n",
" -0.255556 | \n",
" -0.374074 | \n",
" -0.092593 | \n",
" -0.948148 | \n",
" -0.400000 | \n",
" -0.833333 | \n",
"
\n",
" \n",
" 573 | \n",
" 1.0 | \n",
" 11.0 | \n",
" -0.959259 | \n",
" -0.255556 | \n",
" -0.374074 | \n",
" -0.092593 | \n",
" -0.948148 | \n",
" -0.400000 | \n",
" -0.833333 | \n",
" -0.170370 | \n",
"
\n",
" \n",
" 574 | \n",
" 2.0 | \n",
" 11.0 | \n",
" -0.255556 | \n",
" -0.374074 | \n",
" -0.092593 | \n",
" -0.948148 | \n",
" -0.400000 | \n",
" -0.833333 | \n",
" -0.170370 | \n",
" -0.444444 | \n",
"
\n",
" \n",
" 575 | \n",
" 3.0 | \n",
" 11.0 | \n",
" -0.374074 | \n",
" -0.092593 | \n",
" -0.948148 | \n",
" -0.400000 | \n",
" -0.833333 | \n",
" -0.170370 | \n",
" -0.444444 | \n",
" -0.577778 | \n",
"
\n",
" \n",
" 576 | \n",
" 4.0 | \n",
" 11.0 | \n",
" -0.092593 | \n",
" -0.948148 | \n",
" -0.400000 | \n",
" -0.833333 | \n",
" -0.170370 | \n",
" -0.444444 | \n",
" -0.577778 | \n",
" -0.585185 | \n",
"
\n",
" \n",
" 577 | \n",
" 5.0 | \n",
" 11.0 | \n",
" -0.948148 | \n",
" -0.400000 | \n",
" -0.833333 | \n",
" -0.170370 | \n",
" -0.444444 | \n",
" -0.577778 | \n",
" -0.585185 | \n",
" -0.440741 | \n",
"
\n",
" \n",
" 578 | \n",
" 0.0 | \n",
" 11.0 | \n",
" -0.400000 | \n",
" -0.833333 | \n",
" -0.170370 | \n",
" -0.444444 | \n",
" -0.577778 | \n",
" -0.585185 | \n",
" -0.440741 | \n",
" -0.814815 | \n",
"
\n",
" \n",
" 579 | \n",
" 1.0 | \n",
" 11.0 | \n",
" -0.833333 | \n",
" -0.170370 | \n",
" -0.444444 | \n",
" -0.577778 | \n",
" -0.585185 | \n",
" -0.440741 | \n",
" -0.814815 | \n",
" -0.296296 | \n",
"
\n",
" \n",
" 580 | \n",
" 2.0 | \n",
" 11.0 | \n",
" -0.170370 | \n",
" -0.444444 | \n",
" -0.577778 | \n",
" -0.585185 | \n",
" -0.440741 | \n",
" -0.814815 | \n",
" -0.296296 | \n",
" -0.518519 | \n",
"
\n",
" \n",
" 581 | \n",
" 3.0 | \n",
" 11.0 | \n",
" -0.444444 | \n",
" -0.577778 | \n",
" -0.585185 | \n",
" -0.440741 | \n",
" -0.814815 | \n",
" -0.296296 | \n",
" -0.518519 | \n",
" -0.340741 | \n",
"
\n",
" \n",
" 582 | \n",
" 4.0 | \n",
" 11.0 | \n",
" -0.577778 | \n",
" -0.585185 | \n",
" -0.440741 | \n",
" -0.814815 | \n",
" -0.296296 | \n",
" -0.518519 | \n",
" -0.340741 | \n",
" -0.377778 | \n",
"
\n",
" \n",
" 583 | \n",
" 5.0 | \n",
" 11.0 | \n",
" -0.585185 | \n",
" -0.440741 | \n",
" -0.814815 | \n",
" -0.296296 | \n",
" -0.518519 | \n",
" -0.340741 | \n",
" -0.377778 | \n",
" -0.625926 | \n",
"
\n",
" \n",
" 584 | \n",
" 0.0 | \n",
" 11.0 | \n",
" -0.440741 | \n",
" -0.814815 | \n",
" -0.296296 | \n",
" -0.518519 | \n",
" -0.340741 | \n",
" -0.377778 | \n",
" -0.625926 | \n",
" -0.777778 | \n",
"
\n",
" \n",
" 585 | \n",
" 1.0 | \n",
" 11.0 | \n",
" -0.814815 | \n",
" -0.296296 | \n",
" -0.518519 | \n",
" -0.340741 | \n",
" -0.377778 | \n",
" -0.625926 | \n",
" -0.777778 | \n",
" -0.422222 | \n",
"
\n",
" \n",
" 586 | \n",
" 2.0 | \n",
" 11.0 | \n",
" -0.296296 | \n",
" -0.518519 | \n",
" -0.340741 | \n",
" -0.377778 | \n",
" -0.625926 | \n",
" -0.777778 | \n",
" -0.422222 | \n",
" -0.425926 | \n",
"
\n",
" \n",
" 587 | \n",
" 3.0 | \n",
" 11.0 | \n",
" -0.518519 | \n",
" -0.340741 | \n",
" -0.377778 | \n",
" -0.625926 | \n",
" -0.777778 | \n",
" -0.422222 | \n",
" -0.425926 | \n",
" -0.511111 | \n",
"
\n",
" \n",
" 588 | \n",
" 4.0 | \n",
" 11.0 | \n",
" -0.340741 | \n",
" -0.377778 | \n",
" -0.625926 | \n",
" -0.777778 | \n",
" -0.422222 | \n",
" -0.425926 | \n",
" -0.511111 | \n",
" -0.448148 | \n",
"
\n",
" \n",
" 589 | \n",
" 5.0 | \n",
" 11.0 | \n",
" -0.377778 | \n",
" -0.625926 | \n",
" -0.777778 | \n",
" -0.422222 | \n",
" -0.425926 | \n",
" -0.511111 | \n",
" -0.448148 | \n",
" -0.496296 | \n",
"
\n",
" \n",
" 590 | \n",
" 6.0 | \n",
" 11.0 | \n",
" -0.625926 | \n",
" -0.777778 | \n",
" -0.422222 | \n",
" -0.425926 | \n",
" -0.511111 | \n",
" -0.448148 | \n",
" -0.496296 | \n",
" -0.488889 | \n",
"
\n",
" \n",
" 591 | \n",
" 0.0 | \n",
" 11.0 | \n",
" -0.777778 | \n",
" -0.422222 | \n",
" -0.425926 | \n",
" -0.511111 | \n",
" -0.448148 | \n",
" -0.496296 | \n",
" -0.488889 | \n",
" -0.907407 | \n",
"
\n",
" \n",
" 592 | \n",
" 1.0 | \n",
" 11.0 | \n",
" -0.422222 | \n",
" -0.425926 | \n",
" -0.511111 | \n",
" -0.448148 | \n",
" -0.496296 | \n",
" -0.488889 | \n",
" -0.907407 | \n",
" -0.166667 | \n",
"
\n",
" \n",
" 593 | \n",
" 2.0 | \n",
" 11.0 | \n",
" -0.425926 | \n",
" -0.511111 | \n",
" -0.448148 | \n",
" -0.496296 | \n",
" -0.488889 | \n",
" -0.907407 | \n",
" -0.166667 | \n",
" -0.374074 | \n",
"
\n",
" \n",
" 594 | \n",
" 3.0 | \n",
" 11.0 | \n",
" -0.511111 | \n",
" -0.448148 | \n",
" -0.496296 | \n",
" -0.488889 | \n",
" -0.907407 | \n",
" -0.166667 | \n",
" -0.374074 | \n",
" -0.511111 | \n",
"
\n",
" \n",
" 595 | \n",
" 4.0 | \n",
" 11.0 | \n",
" -0.448148 | \n",
" -0.496296 | \n",
" -0.488889 | \n",
" -0.907407 | \n",
" -0.166667 | \n",
" -0.374074 | \n",
" -0.511111 | \n",
" -0.259259 | \n",
"
\n",
" \n",
"
\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",
" real | \n",
" prediccion | \n",
" diferencia | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 171.000000 | \n",
" 180.597778 | \n",
" -9.597778 | \n",
"
\n",
" \n",
" 1 | \n",
" 62.000004 | \n",
" 107.018166 | \n",
" -45.018162 | \n",
"
\n",
" \n",
" 2 | \n",
" 252.000000 | \n",
" 266.338470 | \n",
" -14.338470 | \n",
"
\n",
" \n",
" 3 | \n",
" 220.000000 | \n",
" 234.285080 | \n",
" -14.285080 | \n",
"
\n",
" \n",
" 4 | \n",
" 296.000000 | \n",
" 197.776123 | \n",
" 98.223877 | \n",
"
\n",
" \n",
" 5 | \n",
" 64.999992 | \n",
" 204.157654 | \n",
" -139.157654 | \n",
"
\n",
" \n",
" 6 | \n",
" 213.000000 | \n",
" 197.658493 | \n",
" 15.341507 | \n",
"
\n",
" \n",
" 7 | \n",
" 95.999992 | \n",
" 100.203423 | \n",
" -4.203430 | \n",
"
\n",
" \n",
" 8 | \n",
" 275.000000 | \n",
" 247.119278 | \n",
" 27.880722 | \n",
"
\n",
" \n",
" 9 | \n",
" 201.000000 | \n",
" 216.487488 | \n",
" -15.487488 | \n",
"
\n",
" \n",
" 10 | \n",
" 165.000000 | \n",
" 197.776123 | \n",
" -32.776123 | \n",
"
\n",
" \n",
" 11 | \n",
" 163.000000 | \n",
" 204.157654 | \n",
" -41.157654 | \n",
"
\n",
" \n",
"
\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",
" real | \n",
" prediccion | \n",
" diferencia | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 30.000000 | \n",
" 30.000000 | \n",
" 30.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 184.733337 | \n",
" 193.536270 | \n",
" -8.802909 | \n",
"
\n",
" \n",
" std | \n",
" 61.144787 | \n",
" 47.120979 | \n",
" 38.144459 | \n",
"
\n",
" \n",
" min | \n",
" 62.000004 | \n",
" 100.203423 | \n",
" -139.157654 | \n",
"
\n",
" \n",
" 25% | \n",
" 163.500000 | \n",
" 197.658493 | \n",
" -22.024433 | \n",
"
\n",
" \n",
" 50% | \n",
" 194.500000 | \n",
" 197.776123 | \n",
" -10.042633 | \n",
"
\n",
" \n",
" 75% | \n",
" 219.750000 | \n",
" 216.487488 | \n",
" 9.182810 | \n",
"
\n",
" \n",
" max | \n",
" 296.000000 | \n",
" 266.338470 | \n",
" 98.223877 | \n",
"
\n",
" \n",
"
\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",
" unidades | \n",
" weekday | \n",
" month | \n",
"
\n",
" \n",
" fecha | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" 2018-11-16 | \n",
" 152 | \n",
" 4 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-17 | \n",
" 111 | \n",
" 5 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-19 | \n",
" 207 | \n",
" 0 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-20 | \n",
" 206 | \n",
" 1 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-21 | \n",
" 183 | \n",
" 2 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-22 | \n",
" 200 | \n",
" 3 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-23 | \n",
" 187 | \n",
" 4 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-24 | \n",
" 189 | \n",
" 5 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-25 | \n",
" 76 | \n",
" 6 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-26 | \n",
" 276 | \n",
" 0 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-27 | \n",
" 220 | \n",
" 1 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-28 | \n",
" 183 | \n",
" 2 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-29 | \n",
" 251 | \n",
" 3 | \n",
" 11 | \n",
"
\n",
" \n",
" 2018-11-30 | \n",
" 189 | \n",
" 4 | \n",
" 11 | \n",
"
\n",
" \n",
"
\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",
" weekday | \n",
" month | \n",
" var1(t-7) | \n",
" var1(t-6) | \n",
" var1(t-5) | \n",
" var1(t-4) | \n",
" var1(t-3) | \n",
" var1(t-2) | \n",
" var1(t-1) | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 6.0 | \n",
" 11.0 | \n",
" -0.24 | \n",
" -0.65 | \n",
" 0.31 | \n",
" 0.30 | \n",
" 0.07 | \n",
" 0.24 | \n",
" 0.11 | \n",
"
\n",
" \n",
" 1 | \n",
" 0.0 | \n",
" 11.0 | \n",
" -0.65 | \n",
" 0.31 | \n",
" 0.30 | \n",
" 0.07 | \n",
" 0.24 | \n",
" 0.11 | \n",
" 0.13 | \n",
"
\n",
" \n",
" 2 | \n",
" 1.0 | \n",
" 11.0 | \n",
" 0.31 | \n",
" 0.30 | \n",
" 0.07 | \n",
" 0.24 | \n",
" 0.11 | \n",
" 0.13 | \n",
" -1.00 | \n",
"
\n",
" \n",
" 3 | \n",
" 2.0 | \n",
" 11.0 | \n",
" 0.30 | \n",
" 0.07 | \n",
" 0.24 | \n",
" 0.11 | \n",
" 0.13 | \n",
" -1.00 | \n",
" 1.00 | \n",
"
\n",
" \n",
" 4 | \n",
" 3.0 | \n",
" 11.0 | \n",
" 0.07 | \n",
" 0.24 | \n",
" 0.11 | \n",
" 0.13 | \n",
" -1.00 | \n",
" 1.00 | \n",
" 0.44 | \n",
"
\n",
" \n",
" 5 | \n",
" 4.0 | \n",
" 11.0 | \n",
" 0.24 | \n",
" 0.11 | \n",
" 0.13 | \n",
" -1.00 | \n",
" 1.00 | \n",
" 0.44 | \n",
" 0.07 | \n",
"
\n",
" \n",
"
\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",
" pronostico | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 132.725057 | \n",
"
\n",
" \n",
" 1 | \n",
" 143.071309 | \n",
"
\n",
" \n",
" 2 | \n",
" 129.761916 | \n",
"
\n",
" \n",
" 3 | \n",
" 99.815734 | \n",
"
\n",
" \n",
" 4 | \n",
" 163.210682 | \n",
"
\n",
" \n",
" 5 | \n",
" 150.880790 | \n",
"
\n",
" \n",
" 6 | \n",
" 143.121046 | \n",
"
\n",
" \n",
"
\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
}