└── .ipynb_checkpoints └── GOOGLE stock prediction-checkpoint.ipynb /.ipynb_checkpoints/GOOGLE stock prediction-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "collapsed": false 7 | }, 8 | "source": [ 9 | "# GOOGL stock 'Close' value prediction" 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": 29, 15 | "metadata": { 16 | "collapsed": false 17 | }, 18 | "outputs": [], 19 | "source": [ 20 | "import numpy as np\n", 21 | "import matplotlib.pyplot as plt\n", 22 | "import pandas as pd\n", 23 | "from pandas import datetime\n", 24 | "import math, time\n", 25 | "import itertools\n", 26 | "from sklearn import preprocessing\n", 27 | "import datetime\n", 28 | "from operator import itemgetter\n", 29 | "from sklearn.metrics import mean_squared_error\n", 30 | "from math import sqrt\n", 31 | "from keras.models import Sequential\n", 32 | "from keras.layers.core import Dense, Dropout, Activation\n", 33 | "from keras.layers.recurrent import LSTM" 34 | ] 35 | }, 36 | { 37 | "cell_type": "markdown", 38 | "metadata": {}, 39 | "source": [ 40 | "## Stock data function configured to drop all columns except 'Open','High' and 'Close'" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 30, 46 | "metadata": { 47 | "collapsed": false 48 | }, 49 | "outputs": [], 50 | "source": [ 51 | "def get_stock_data(stock_name, normalized=0):\n", 52 | " url=\"http://www.google.com/finance/historical?q=\"+stock_name+\"&startdate=Jul+12%2C+2013&enddate=Jul+11%2C+2017&num=30&ei=rCtlWZGSFN3KsQHwrqWQCw&output=csv\"\n", 53 | "# url=\"http://www.google.com/finance/historical?q=%s&ei=u-lHWfGPNNWIsgHHqIqICw&output=csv\" % stock_name \n", 54 | "\n", 55 | "\n", 56 | " col_names = ['Date','Open','High','Low','Close','Volume']\n", 57 | " stocks = pd.read_csv(url, header=0, names=col_names) \n", 58 | " df = pd.DataFrame(stocks)\n", 59 | " df.drop(df.columns[[0,3,5]], axis=1, inplace=True) \n", 60 | " return df" 61 | ] 62 | }, 63 | { 64 | "cell_type": "markdown", 65 | "metadata": {}, 66 | "source": [ 67 | "## Loading GOOGL stock data from yahoo.com" 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": 31, 73 | "metadata": { 74 | "collapsed": false, 75 | "scrolled": true 76 | }, 77 | "outputs": [ 78 | { 79 | "data": { 80 | "text/html": [ 81 | "
\n", 82 | "\n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | "
OpenHighClose
1001459.95460.46455.80
1002460.96463.89459.73
1003464.03464.45460.26
1004462.61464.46462.81
1005460.46461.96461.96
\n", 124 | "
" 125 | ], 126 | "text/plain": [ 127 | " Open High Close\n", 128 | "1001 459.95 460.46 455.80\n", 129 | "1002 460.96 463.89 459.73\n", 130 | "1003 464.03 464.45 460.26\n", 131 | "1004 462.61 464.46 462.81\n", 132 | "1005 460.46 461.96 461.96" 133 | ] 134 | }, 135 | "execution_count": 31, 136 | "metadata": {}, 137 | "output_type": "execute_result" 138 | } 139 | ], 140 | "source": [ 141 | "stock_name = 'GOOGL'\n", 142 | "df = get_stock_data(stock_name,0)\n", 143 | "df.tail()" 144 | ] 145 | }, 146 | { 147 | "cell_type": "markdown", 148 | "metadata": {}, 149 | "source": [ 150 | "## Saving the data to a file for a future use" 151 | ] 152 | }, 153 | { 154 | "cell_type": "code", 155 | "execution_count": 32, 156 | "metadata": { 157 | "collapsed": true 158 | }, 159 | "outputs": [], 160 | "source": [ 161 | "today = datetime.date.today()\n", 162 | "file_name = stock_name+'_stock_%s.csv' % today\n", 163 | "df.to_csv(file_name)" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": 33, 169 | "metadata": { 170 | "collapsed": false, 171 | "scrolled": true 172 | }, 173 | "outputs": [ 174 | { 175 | "data": { 176 | "text/html": [ 177 | "
\n", 178 | "\n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | "
OpenHighClose
00.941950.953130.95100
10.930980.944660.94081
20.925000.936140.92769
30.924200.936290.93226
40.933220.934240.91946
\n", 220 | "
" 221 | ], 222 | "text/plain": [ 223 | " Open High Close\n", 224 | "0 0.94195 0.95313 0.95100\n", 225 | "1 0.93098 0.94466 0.94081\n", 226 | "2 0.92500 0.93614 0.92769\n", 227 | "3 0.92420 0.93629 0.93226\n", 228 | "4 0.93322 0.93424 0.91946" 229 | ] 230 | }, 231 | "execution_count": 33, 232 | "metadata": {}, 233 | "output_type": "execute_result" 234 | } 235 | ], 236 | "source": [ 237 | "df['High'] = df['High'] / 1000\n", 238 | "df['Open'] = df['Open'] / 1000\n", 239 | "df['Close'] = df['Close'] / 1000\n", 240 | "df.head(5)" 241 | ] 242 | }, 243 | { 244 | "cell_type": "markdown", 245 | "metadata": {}, 246 | "source": [ 247 | "## Updated load_data function from lstm.py, configured to accept any amount of features.\n", 248 | "## It is set to calculate the last feature as a result." 249 | ] 250 | }, 251 | { 252 | "cell_type": "code", 253 | "execution_count": 34, 254 | "metadata": { 255 | "collapsed": false 256 | }, 257 | "outputs": [], 258 | "source": [ 259 | "def load_data(stock, seq_len):\n", 260 | " amount_of_features = len(stock.columns)\n", 261 | " data = stock.as_matrix() #pd.DataFrame(stock)\n", 262 | " sequence_length = seq_len + 1\n", 263 | " result = []\n", 264 | " for index in range(len(data) - sequence_length):\n", 265 | " result.append(data[index: index + sequence_length])\n", 266 | "\n", 267 | " result = np.array(result)\n", 268 | " row = round(0.9 * result.shape[0])\n", 269 | " train = result[:int(row), :]\n", 270 | " x_train = train[:, :-1]\n", 271 | " y_train = train[:, -1][:,-1]\n", 272 | " x_test = result[int(row):, :-1]\n", 273 | " y_test = result[int(row):, -1][:,-1]\n", 274 | "\n", 275 | " x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], amount_of_features))\n", 276 | " x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], amount_of_features)) \n", 277 | "\n", 278 | " return [x_train, y_train, x_test, y_test]\n" 279 | ] 280 | }, 281 | { 282 | "cell_type": "markdown", 283 | "metadata": {}, 284 | "source": [ 285 | "## Building model functions" 286 | ] 287 | }, 288 | { 289 | "cell_type": "code", 290 | "execution_count": 35, 291 | "metadata": { 292 | "collapsed": true 293 | }, 294 | "outputs": [], 295 | "source": [ 296 | "def build_model(layers):\n", 297 | " model = Sequential()\n", 298 | "\n", 299 | " model.add(LSTM(\n", 300 | " input_dim=layers[0],\n", 301 | " output_dim=layers[1],\n", 302 | " return_sequences=True))\n", 303 | " model.add(Dropout(0.2))\n", 304 | "\n", 305 | " model.add(LSTM(\n", 306 | " layers[2],\n", 307 | " return_sequences=False))\n", 308 | " model.add(Dropout(0.2))\n", 309 | "\n", 310 | " model.add(Dense(\n", 311 | " output_dim=layers[2]))\n", 312 | " model.add(Activation(\"linear\"))\n", 313 | "\n", 314 | " start = time.time()\n", 315 | " model.compile(loss=\"mse\", optimizer=\"rmsprop\",metrics=['accuracy'])\n", 316 | " print(\"Compilation Time : \", time.time() - start)\n", 317 | " return model\n", 318 | "\n", 319 | "def build_model2(layers):\n", 320 | " d = 0.2\n", 321 | " model = Sequential()\n", 322 | " model.add(LSTM(128, input_shape=(layers[1], layers[0]), return_sequences=True))\n", 323 | " model.add(Dropout(d))\n", 324 | " model.add(LSTM(64, input_shape=(layers[1], layers[0]), return_sequences=False))\n", 325 | " model.add(Dropout(d))\n", 326 | " model.add(Dense(16,init='uniform',activation='relu')) \n", 327 | " model.add(Dense(1,init='uniform',activation='relu'))\n", 328 | " model.compile(loss='mse',optimizer='adam',metrics=['accuracy'])\n", 329 | " return model" 330 | ] 331 | }, 332 | { 333 | "cell_type": "markdown", 334 | "metadata": {}, 335 | "source": [ 336 | "## Setting X and Y for training and testing" 337 | ] 338 | }, 339 | { 340 | "cell_type": "code", 341 | "execution_count": 36, 342 | "metadata": { 343 | "collapsed": false, 344 | "scrolled": true 345 | }, 346 | "outputs": [ 347 | { 348 | "name": "stdout", 349 | "output_type": "stream", 350 | "text": [ 351 | "X_train (900, 5, 3)\n", 352 | "y_train (900,)\n", 353 | "X_test (100, 5, 3)\n", 354 | "y_test (100,)\n" 355 | ] 356 | } 357 | ], 358 | "source": [ 359 | "window = 5\n", 360 | "X_train, y_train, X_test, y_test = load_data(df[::-1], window)\n", 361 | "print(\"X_train\", X_train.shape)\n", 362 | "print(\"y_train\", y_train.shape)\n", 363 | "print(\"X_test\", X_test.shape)\n", 364 | "print(\"y_test\", y_test.shape)" 365 | ] 366 | }, 367 | { 368 | "cell_type": "markdown", 369 | "metadata": {}, 370 | "source": [ 371 | "## Loading the model sequence structure" 372 | ] 373 | }, 374 | { 375 | "cell_type": "code", 376 | "execution_count": 37, 377 | "metadata": { 378 | "collapsed": false 379 | }, 380 | "outputs": [], 381 | "source": [ 382 | "# model = build_model([3,lag,1])\n", 383 | "model = build_model2([3,window,1])" 384 | ] 385 | }, 386 | { 387 | "cell_type": "markdown", 388 | "metadata": {}, 389 | "source": [ 390 | "## Executing the model & RMS/RMSE results" 391 | ] 392 | }, 393 | { 394 | "cell_type": "code", 395 | "execution_count": 38, 396 | "metadata": { 397 | "collapsed": false 398 | }, 399 | "outputs": [ 400 | { 401 | "data": { 402 | "text/plain": [ 403 | "" 404 | ] 405 | }, 406 | "execution_count": 38, 407 | "metadata": {}, 408 | "output_type": "execute_result" 409 | } 410 | ], 411 | "source": [ 412 | "model.fit(\n", 413 | " X_train,\n", 414 | " y_train,\n", 415 | " batch_size=512,\n", 416 | " nb_epoch=500,\n", 417 | " validation_split=0.1,\n", 418 | " verbose=0)" 419 | ] 420 | }, 421 | { 422 | "cell_type": "code", 423 | "execution_count": 39, 424 | "metadata": { 425 | "collapsed": false 426 | }, 427 | "outputs": [ 428 | { 429 | "name": "stdout", 430 | "output_type": "stream", 431 | "text": [ 432 | "Train Score: 0.00 MSE (0.02 RMSE)\n", 433 | "Test Score: 0.00 MSE (0.03 RMSE)\n" 434 | ] 435 | } 436 | ], 437 | "source": [ 438 | "trainScore = model.evaluate(X_train, y_train, verbose=0)\n", 439 | "print('Train Score: %.2f MSE (%.2f RMSE)' % (trainScore[0], math.sqrt(trainScore[0])))\n", 440 | "\n", 441 | "testScore = model.evaluate(X_test, y_test, verbose=0)\n", 442 | "print('Test Score: %.2f MSE (%.2f RMSE)' % (testScore[0], math.sqrt(testScore[0])))" 443 | ] 444 | }, 445 | { 446 | "cell_type": "code", 447 | "execution_count": 40, 448 | "metadata": { 449 | "collapsed": false 450 | }, 451 | "outputs": [], 452 | "source": [ 453 | "# print(X_test[-1])\n", 454 | "diff=[]\n", 455 | "ratio=[]\n", 456 | "p = model.predict(X_test)\n", 457 | "for u in range(len(y_test)):\n", 458 | " pr = p[u][0]\n", 459 | " ratio.append((y_test[u]/pr)-1)\n", 460 | " diff.append(abs(y_test[u]- pr))\n", 461 | " #print(u, y_test[u], pr, (y_test[u]/pr)-1, abs(y_test[u]- pr))" 462 | ] 463 | }, 464 | { 465 | "cell_type": "markdown", 466 | "metadata": {}, 467 | "source": [ 468 | "## Predictions vs Real results" 469 | ] 470 | }, 471 | { 472 | "cell_type": "code", 473 | "execution_count": 41, 474 | "metadata": { 475 | "collapsed": false 476 | }, 477 | "outputs": [ 478 | { 479 | "data": { 480 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAFkCAYAAAB8RXKEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xt8z+X7wPHX/XE+NTSHRIhiyGFDqOQsh5J+EiU5VHLM\nIZVCEZFvSHIqIrKpqJRjSEenjKVySEXOoiJsDtvu3x/Xxjbb7LN9zruej8cea+/P+32/7322vK/d\n93Vft7HWopRSSinlCg5vd0AppZRSgUMDC6WUUkq5jAYWSimllHIZDSyUUkop5TIaWCillFLKZTSw\nUEoppZTLaGChlFJKKZfRwEIppZRSLqOBhVJKKaVcRgMLpZRSSrmM04GFMeYuY8xnxpjDxph4Y8x9\nGbimkTEm0hhz3hjzqzHmsRSvP5bQVlzC53hjTLSzfVNKKaWUd2VmxKIAEAX0Aa650YgxphywDFgH\n1ACmALONMc1TnHoaKJnko2wm+qaUUkopL8rp7AXW2lXAKgBjjMnAJb2BP6y1zyZ8vccYcycwCFiT\nvGl7wtn+KKWUUsp3eCLHoh6wNsWx1UD9FMcKGmP2G2MOGGM+NcZU8UDflFJKKeVCTo9YZEJJ4HiK\nY8eB64wxeay1F4A9QA9gBxAEDAU2GGOqWGuPpNaoMeZ6oCWwHzjvpr4rpZRSgSgvUA5Yba3925UN\neyKwuCZr7SZgU+LXxpiNwC6gF/BSGpe1BBa6v3dKKaVUwHoECHdlg54ILI4BJVIcKwH8lzBacRVr\nbawxZjtQMZ129wO8//77hISEuKKfKgMGDRrE5MmTvd2NbEXfc8/T99zz9D33rF27dtGlSxdIeJa6\nkicCi41AqxTHWiQcT5UxxgHcBixPp93zACEhIYSGhma1jyqDgoKC9P32MH3PPU/fc8/T99xrXJ5K\nkJk6FgWMMTWMMTUTDt2c8HWZhNfHGWPeS3LJzIRzXjPGVDLG9AE6AJOStDnCGNPcGFPeGFMLmeK4\nCZid2W9MKaWUUp6XmRGL2sB6pIaFBSYmHH8PScAsCZRJPNlau98Y0waYDAwADgE9rbVJV4oUAd5O\nuPZfIBKob63dnYn+KaWUUspLMlPH4mvSGemw1nZP5dg3QFg61wwGBjvbF6WUUkr5Ft0rRDmlc+fO\n3u5CtqPvuefpe+55+p4HDmPtNaty+yRjTCgQGRkZqQk/SimllBO2bdtGWFgYQJi1dpsr2/aJOhbu\ncuDAAU6ePOntbig/FRwczE033eTtbiillF8J2MDiwIEDhISEEB2tm6SqzMmfPz+7du3S4EIppZwQ\nsIHFyZMniY6O1gJaKlMSi8ecPHlSAwullHJCwAYWibSAllJKKeU5uipEKaWUUi6jgYVSSimlXEYD\nC6WUUkq5jAYWSimllHIZDSxUppUrV44ePXpc/vrrr7/G4XDwzTffuOweDoeD0aNHu6w9pZRS7qWB\nhco0Y0yGjl3LypUrGTVqVJr3yEybSimlvCPgl5sqz7n77ruJiYkhd+7cTl23YsUKpk+fzksvvXTV\nazExMeTMqb+mSinlL3TEIpux1nLhwgW3te9sUAHSp/Taczj011QppfyF/ovtp15++WUcDgd79uyh\nY8eOBAUFERwczMCBA5MFDg6HgwEDBhAeHk61atXImzcvq1evBuSB/sYbb1CtWjXy5ctHyZIleeqp\npzh16tRV9xszZgxlypShQIECNG3alJ07d151Tlo5Fps3b6Z169YULVqUggULUqNGDaZOnQpA9+7d\nmT59+uW+OhwOcuTIkaz/KXMstm/fTqtWrQgKCqJQoUI0a9aMzZs3Jzvnvffew+FwsGHDBgYPHkzx\n4sUpWLAgDzzwAH///bczb7VSSikn6Bizn0rMO+jYsSPly5dn/PjxbNq0iTfffJNTp04xb968y+eu\nW7eODz/8kH79+hEcHEy5cuUAePLJJ5k/fz49evTg6aefZt++fUydOpWoqCi+//77yw/4ESNGMHbs\nWNq2bUurVq3Ytm0bLVq04NKlS2n2K9GaNWu49957KVWqFAMHDqRkyZLs2rWLZcuW0b9/f3r16sWR\nI0dYu3YtCxcuTHf0AmDnzp00bNiQoKAgnn/+eXLmzMmsWbNo1KgR33zzDXXq1El2fv/+/SlatCgv\nv/wy+/fvZ/LkyfTr14+IiAhn33KllFIZYa31yw8gFLCRkZE2NZGRkTa91/3dyy+/bI0xtn379smO\n9+3b1zocDvvTTz9Za601xticOXPa3bt3Jzvv22+/tcYYu2jRomTHv/jiC2uMsREREdZaa0+cOGHz\n5Mlj77vvvmTnvfjii9YYY7t373752FdffWUdDof9+uuvrbXWxsXF2fLly9ubb77Z/vfff2l+L/36\n9bMOhyPV14wxdtSoUZe/vv/++23evHnt/v37Lx87evSove6662yjRo0uH5s3b541xtiWLVsma2/w\n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\n3KNH7KR//yh7/sIL8PjjkYBccUVUsjruuIy/lsTl5cWIS9euMYohIlKJTCYWTe9Qxj1+pWbNioW3\n3nknxtKHDYuEon//eluRsinr0SMqkOfmprn+xyGHwKJFUaZy4cLYpk2Lz0H79rFK2c9+FpUvG6qj\njqrrHoiI7NV0Eouvvoqx88cei3UaOnSAwYPj4owBA7SSYwPQv39saTvoILjyytgg1vRYsSJGLWpr\nVToRkSai8ScWGzbERZiPPx7n0y++GCZOhLPPjgUXpOk58MC48lNERBLXeBOL3NxYXGnmzEggrrsu\nlss88si67pmIiEij1fgSi9zcmCo6Y0acX7/vPhg5Mo5SRUREJKMaT2KRlxdJxIwZUXti4sRIKNq2\nreueiYiINBkNP7HYtg1uvjmuoejYER58EEaNUkIhIiJSBxp+YnHeedCiBdxzTyQY9b2wkYiISCPW\n8BOLiy6KqokHH1zXPREREWnyqlK7sH4bM0ZJhYiISD3R8BMLERERqTeUWIiIiEhilFiIiIhIYpRY\niIiISGKUWIiIiEhilFiIiIhIYpRYiIiISGKUWIiIiEhilFiIiIhIYpRYiIiISGKUWIiIiEhilFiI\niIhIYpRYiIiISGKUWIiIiEhilFiIiIhIYpRYiIiISGKUWIiIiEhilFiIiIhIYpRYiIiISGKUWIiI\niEhilFiIiIhIYpRYiIiISGKUWIiIiEhilFiIiIhIYpRYiIiISGKUWIiIiEhilFiIiIhIYpRYSFqe\nffbZuu5Ck6OY1z7FvPYp5o1HtRILM7vRzD4ys6/N7K9mdlIl7S8zs+VmttPMPjOzaWZ2UKk2l5jZ\n6tQ+V5jZv1Snb5JZ+sdf+xTz2qeY1z7FvPFIO7Ews2HAfwB3A72BFcBrZnZIOe1PBWYAvwFOAC4G\nTgaeKNGmP/BfqTa9gJeBl8zshHT7JyIiInWnOiMWY4Cp7v47d38PuB7YBVxTTvtTgI/c/VF3X+fu\nC4GpRHJRZDTwv+4+yd3XuPtdwFLgpmr0T0REROpIWomFmbUA+gKvF93n7g78GehXztMWAd8tOrVh\nZl2AS4BXS7Tpl9pHSa9VsE8RERGphw5Is/0hQHNgU6n7NwHdy3qCuy80s8uB35tZ69TfnM2+oxGH\nlrPPQyvoS2uA1atXV7nzUnPbt29n6dKldd2NJkUxr32Kee1TzGtXid/O1knvO93EIm2p6ySmAPcA\n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\nzejuAAAAAElFTkSuQmCC\n", 481 | "text/plain": [ 482 | "" 483 | ] 484 | }, 485 | "metadata": {}, 486 | "output_type": "display_data" 487 | } 488 | ], 489 | "source": [ 490 | "import matplotlib.pyplot as plt2\n", 491 | "\n", 492 | "plt2.plot(p,color='red', label='prediction')\n", 493 | "plt2.plot(y_test,color='blue', label='y_test')\n", 494 | "plt2.legend(loc='upper left')\n", 495 | "plt2.show()" 496 | ] 497 | } 498 | ], 499 | "metadata": { 500 | "anaconda-cloud": {}, 501 | "kernelspec": { 502 | "display_name": "Python [conda root]", 503 | "language": "python", 504 | "name": "conda-root-py" 505 | }, 506 | "language_info": { 507 | "codemirror_mode": { 508 | "name": "ipython", 509 | "version": 3 510 | }, 511 | "file_extension": ".py", 512 | "mimetype": "text/x-python", 513 | "name": "python", 514 | "nbconvert_exporter": "python", 515 | "pygments_lexer": "ipython3", 516 | "version": "3.5.2" 517 | } 518 | }, 519 | "nbformat": 4, 520 | "nbformat_minor": 1 521 | } 522 | --------------------------------------------------------------------------------