{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true, "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "from pandas import datetime\n", "import math, time\n", "import itertools\n", "from sklearn import preprocessing\n", "import datetime\n", "from operator import itemgetter\n", "from sklearn.metrics import mean_squared_error\n", "from math import sqrt\n", "from keras.models import Sequential\n", "from keras.layers.core import Dense, Dropout, Activation\n", "from keras.layers.recurrent import LSTM" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "* Get the stock data from Yahoo finance as a CSV for any company. \n", "\n", "* Drop all other columns (Volume, Year, Month and Day) and retain Open, High and Close - since I'm just predicting the close value for a day" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "def get_stock_data(stock_name, normalized=0):\n", " url = 'http://chart.finance.yahoo.com/table.csv?s=%s&a=11&b=15&c=2011&d=29&e=10&f=2016&g=d&ignore=.csv' % stock_name\n", "\n", " col_names = ['Date','Open','High','Low','Close','Volume','Adj Close']\n", " stocks = pd.read_csv(url, header=0, names=col_names) \n", " df = pd.DataFrame(stocks)\n", " date_split = df['Date'].str.split('-').str\n", " df['Year'], df['Month'], df['Day'] = date_split\n", " df[\"Volume\"] = df[\"Volume\"] / 10000\n", " #df.drop(df.columns[[0,3,5,6, 7,8,9]], axis=1, inplace=True) \n", " return df" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "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", "
DateOpenHighLowCloseVolumeAdj CloseYearMonthDay
02017-03-24842.000000844.000000829.099976835.140015209.26835.14001520170324
12017-03-23841.390015841.690002833.000000839.650024328.52839.65002420170323
22017-03-22849.479980855.349976847.000000849.799988135.80849.79998820170322
32017-03-21870.059998873.469971847.690002850.140015251.52850.14001520170321
42017-03-20869.479980870.340027864.669983867.909973150.14867.90997320170320
\n", "
" ], "text/plain": [ " Date Open High Low Close Volume \\\n", "0 2017-03-24 842.000000 844.000000 829.099976 835.140015 209.26 \n", "1 2017-03-23 841.390015 841.690002 833.000000 839.650024 328.52 \n", "2 2017-03-22 849.479980 855.349976 847.000000 849.799988 135.80 \n", "3 2017-03-21 870.059998 873.469971 847.690002 850.140015 251.52 \n", "4 2017-03-20 869.479980 870.340027 864.669983 867.909973 150.14 \n", "\n", " Adj Close Year Month Day \n", "0 835.140015 2017 03 24 \n", "1 839.650024 2017 03 23 \n", "2 849.799988 2017 03 22 \n", "3 850.140015 2017 03 21 \n", "4 867.909973 2017 03 20 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stock_name = 'GOOGL'\n", "df = get_stock_data(stock_name,0)\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "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", "
OpenHighClose
0842.000000844.000000835.140015
1841.390015841.690002839.650024
2849.479980855.349976849.799988
3870.059998873.469971850.140015
4869.479980870.340027867.909973
\n", "
" ], "text/plain": [ " Open High Close\n", "0 842.000000 844.000000 835.140015\n", "1 841.390015 841.690002 839.650024\n", "2 849.479980 855.349976 849.799988\n", "3 870.059998 873.469971 850.140015\n", "4 869.479980 870.340027 867.909973" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.drop(df.columns[[0,3,5,6, 7,8,9]], axis=1, inplace=True)\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "* Let me save the data to a CSV file so that I can refer later (if needed :) ) " ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "today = datetime.date.today()\n", "filename = stock_name+'_stock_%s.csv' % today\n", "df.to_csv(filename)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Normalizing" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "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", "
OpenHighClose
08.42008.44008.3514
18.41398.41698.3965
28.49488.55358.4980
38.70068.73478.5014
48.69488.70348.6791
\n", "
" ], "text/plain": [ " Open High Close\n", "0 8.4200 8.4400 8.3514\n", "1 8.4139 8.4169 8.3965\n", "2 8.4948 8.5535 8.4980\n", "3 8.7006 8.7347 8.5014\n", "4 8.6948 8.7034 8.6791" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Open'] = df['Open']/100\n", "df['High'] = df['High']/100\n", "df['Close'] = df['Close']/100\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "#Load the data\n", "def load_data(stock, seq_len):\n", " amount_of_features = len(stock.columns)\n", " data = stock.as_matrix() #pd.DataFrame(stock)\n", " sequence_length = seq_len + 1\n", " result = []\n", " for index in range(len(data) - sequence_length):\n", " result.append(data[index: index + sequence_length])\n", "\n", " result = np.array(result)\n", " row = round(0.9 * result.shape[0])\n", " train = result[:int(row), :]\n", " x_train = train[:, :-1]\n", " y_train = train[:, -1][:,-1]\n", " x_test = result[int(row):, :-1]\n", " y_test = result[int(row):, -1][:,-1]\n", "\n", " x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], amount_of_features))\n", " x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], amount_of_features)) \n", "\n", " return [x_train, y_train, x_test, y_test]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "#Build the model\n", "def build_model(layers):\n", " model = Sequential()\n", "\n", " model.add(LSTM(\n", " input_dim=layers[0],\n", " output_dim=layers[1],\n", " return_sequences=True))\n", " model.add(Dropout(0.2))\n", "\n", " model.add(LSTM(\n", " layers[2],\n", " return_sequences=False))\n", " model.add(Dropout(0.2))\n", "\n", " model.add(Dense(\n", " output_dim=layers[2]))\n", " model.add(Activation(\"linear\"))\n", "\n", " start = time.time()\n", " model.compile(loss=\"mse\", optimizer=\"rmsprop\",metrics=['accuracy'])\n", " print(\"Compilation Time : \", time.time() - start)\n", " return model\n", "\n", "def build_model2(layers):\n", " d = 0.2\n", " model = Sequential()\n", " model.add(LSTM(128, input_shape=(layers[1], layers[0]), return_sequences=True))\n", " model.add(Dropout(d))\n", " model.add(LSTM(64, input_shape=(layers[1], layers[0]), return_sequences=False))\n", " model.add(Dropout(d))\n", " model.add(Dense(16,init='uniform',activation='relu')) \n", " model.add(Dense(1,init='uniform',activation='linear'))\n", " model.compile(loss='mse',optimizer='adam',metrics=['accuracy'])\n", " return model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Divide as Training and Test set" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "X_train (1173, 22, 3)\n", "y_train (1173,)\n", "X_test (130, 22, 3)\n", "y_test (130,)\n" ] } ], "source": [ "window = 22\n", "X_train, y_train, X_test, y_test = load_data(df[::-1], window)\n", "print(\"X_train\", X_train.shape)\n", "print(\"y_train\", y_train.shape)\n", "print(\"X_test\", X_test.shape)\n", "print(\"y_test\", y_test.shape)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.5/dist-packages/ipykernel/__main__.py:32: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(16, activation=\"relu\", kernel_initializer=\"uniform\")`\n", "/usr/local/lib/python3.5/dist-packages/ipykernel/__main__.py:33: UserWarning: Update your `Dense` call to the Keras 2 API: `Dense(1, activation=\"linear\", kernel_initializer=\"uniform\")`\n" ] } ], "source": [ "# model = build_model([3,lag,1])\n", "model = build_model2([3,window,1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Execute the trained model" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "model.fit(\n", " X_train,\n", " y_train,\n", " batch_size=512,\n", " nb_epoch=500,\n", " validation_split=0.1,\n", " verbose=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Train on 1055 samples, validate on 118 samples\n", "\n", "Epoch 1/500\n", "1055/1055 [==============================] - 6s - loss: 54.5698 - acc: 0.0000e+00 - val_loss: 56.6067 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 2/500\n", "1055/1055 [==============================] - 4s - loss: 54.2361 - acc: 0.0000e+00 - val_loss: 56.1267 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 3/500\n", "1055/1055 [==============================] - 3s - loss: 53.7573 - acc: 0.0000e+00 - val_loss: 55.5052 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 4/500\n", "1055/1055 [==============================] - 3s - loss: 53.1317 - acc: 0.0000e+00 - val_loss: 54.6624 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 5/500\n", "1055/1055 [==============================] - 3s - loss: 52.2918 - acc: 0.0000e+00 - val_loss: 53.5170 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 6/500\n", "1055/1055 [==============================] - 3s - loss: 51.1431 - acc: 0.0000e+00 - val_loss: 52.0444 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 7/500\n", "1055/1055 [==============================] - 3s - loss: 49.7124 - acc: 0.0000e+00 - val_loss: 50.2901 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 8/500\n", "1055/1055 [==============================] - 3s - loss: 48.0304 - acc: 0.0000e+00 - val_loss: 48.4176 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 9/500\n", "1055/1055 [==============================] - 3s - loss: 46.2073 - acc: 0.0000e+00 - val_loss: 46.4271 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 10/500\n", "1055/1055 [==============================] - 3s - loss: 44.2880 - acc: 0.0000e+00 - val_loss: 44.3134 - val_acc: 0.0000e+00\b\b\n", "\n", "Epoch 490/500\n", "1055/1055 [==============================] - 6s - loss: 3.3352 - acc: 0.0000e+00 - val_loss: 0.2747 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 491/500\n", "1055/1055 [==============================] - 6s - loss: 3.3220 - acc: 0.0000e+00 - val_loss: 0.3347 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 492/500\n", "1055/1055 [==============================] - 6s - loss: 3.3430 - acc: 0.0000e+00 - val_loss: 0.3876 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 493/500\n", "1055/1055 [==============================] - 6s - loss: 3.3882 - acc: 0.0000e+00 - val_loss: 0.3919 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 494/500\n", "1055/1055 [==============================] - 6s - loss: 3.3117 - acc: 0.0000e+00 - val_loss: 0.3515 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 495/500\n", "1055/1055 [==============================] - 7s - loss: 3.4429 - acc: 0.0000e+00 - val_loss: 0.3073 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 496/500\n", "1055/1055 [==============================] - 7s - loss: 3.3748 - acc: 0.0000e+00 - val_loss: 0.2877 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 497/500\n", "1055/1055 [==============================] - 6s - loss: 3.3394 - acc: 0.0000e+00 - val_loss: 0.2870 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 498/500\n", "1055/1055 [==============================] - 6s - loss: 3.3265 - acc: 0.0000e+00 - val_loss: 0.2725 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 499/500\n", "1055/1055 [==============================] - 6s - loss: 3.3056 - acc: 0.0000e+00 - val_loss: 0.2654 - val_acc: 0.0000e+00\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\n", "Epoch 500/500\n", "1055/1055 [==============================] - 6s - loss: 3.3673 - acc: 0.0000e+00 - val_loss: 0.2697 - val_acc: 0.0000e+00\b\b" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train Score: 2.87 MSE (1.69 RMSE)\n", "Test Score: 1.11 MSE (1.05 RMSE)\n" ] } ], "source": [ "trainScore = model.evaluate(X_train, y_train, verbose=0)\n", "print('Train Score: %.2f MSE (%.2f RMSE)' % (trainScore[0], math.sqrt(trainScore[0])))\n", "\n", "testScore = model.evaluate(X_test, y_test, verbose=0)\n", "print('Test Score: %.2f MSE (%.2f RMSE)' % (testScore[0], math.sqrt(testScore[0])))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Predictions vs Real results" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import matplotlib.pyplot as plt2\n", "\n", "plt2.plot(p,color='red', label='prediction')\n", "plt2.plot(y_test,color='blue', label='y_test')\n", "plt2.legend(loc='upper left')\n", "plt2.show()" ] } ], "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.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }