├── A Deep Learning Approach to Predicting Cryptocurrency Prices.ipynb └── README.md /A Deep Learning Approach to Predicting Cryptocurrency Prices.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | " # A Deep Learning Approach to Predicting Cryptocurrency Prices (Ethereum, Bitcoin, etc.)\n", 8 | " \n", 9 | "##### We will Implement a recurrent neural network to predict bitcoin prices\n", 10 | "\n", 11 | "![alt text](https://dashee87.github.io/images/bitcoin_ether_training_test.png \"Logo Title Text 1\")\n", 12 | " " 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 1, 18 | "metadata": {}, 19 | "outputs": [ 20 | { 21 | "name": "stderr", 22 | "output_type": "stream", 23 | "text": [ 24 | "Using TensorFlow backend.\n" 25 | ] 26 | } 27 | ], 28 | "source": [ 29 | "## Keras for deep learning\n", 30 | "from keras.layers.core import Dense, Activation, Dropout\n", 31 | "from keras.layers.recurrent import LSTM\n", 32 | "from keras.layers import Bidirectional\n", 33 | "from keras.models import Sequential\n", 34 | "\n", 35 | "## Scikit learn for mapping metrics\n", 36 | "from sklearn.metrics import mean_squared_error\n", 37 | "\n", 38 | "#for logging\n", 39 | "import time\n", 40 | "\n", 41 | "##matrix math\n", 42 | "import numpy as np\n", 43 | "import math\n", 44 | "\n", 45 | "##plotting\n", 46 | "import matplotlib.pyplot as plt\n", 47 | "\n", 48 | "##data processing\n", 49 | "import pandas as pd" 50 | ] 51 | }, 52 | { 53 | "cell_type": "markdown", 54 | "metadata": {}, 55 | "source": [ 56 | "![alt text](http://2.bp.blogspot.com/-wuinSTn-X4A/UwHmmceDQqI/AAAAAAAAJFo/5EjPg-LpAJc/s1600/Sivakumar_Vellingiri_Normal_Forms_Poster.Jpeg \"Logo Title Text 1\")\n", 57 | "\n", 58 | "# Step 1 - Data Processing\n", 59 | "\n", 60 | "- The data is inputed as a .csv file.\n", 61 | "- Lets time-series transform data from (num days x num features) to (num days- window size x num days per sample x num features) where window size is 50\n", 62 | "- Normalization via dividing each value in the window by the first value of the window and then subtracting one.i.e [4,3,2] into [0, -0.25, -0.5]. .\n", 63 | "- The unnormalized bases are kept to compare the model's predictions of prices with the true prices. \n", 64 | "- The first 90% of the data is used in training the model, and the last 10% will be used to test the model. \n", 65 | "- A list of the prices before each day Y_test is drawn from will be compiled in order to generate statistics about the model's predictions\n", 66 | "\n", 67 | "======================================================================================================================\n", 68 | "\n", 69 | "The columns of data and their definitions are as follows: \n", 70 | "- Annual Hash Growth: Growth in the total network computations over the past 365 days\n", 71 | "- Block Height: The total number of blocks in the blockchain\n", 72 | "- Block Interval: Average amount of time between blocks\n", 73 | "- Block Size: The storage size of each block (i.e. megabytes)\n", 74 | "- BlockChain Size: The storage size of the blockchain (i.e. gigabytes)\n", 75 | "- Daily Blocks: Number of blocks found each day\n", 76 | "- Chain Value Density: The value of bitcoin's blockchain, in terms of dollars per megabyte\n", 77 | "- Daily Transactions: The number of transactions included in the blockchain per day\n", 78 | "- Difficulty: The minimum proof-of-work threshold required for a bitcoin miner to mine a block\n", 79 | "- Fee Percentage: Average fee paid as a percentage of transaction volume\n", 80 | "- Fee Rate: Average fee paid per transaction\n", 81 | "- Two-Week Hash Growth: Growth in the total network computations over the past 14 days\n", 82 | "- Hash Rate: The number of block solutions computed per second by all miners\n", 83 | "- Market Capitalization: The market value of all bitcoin in circulation\n", 84 | "- Metcalfe's Law - TX: A variant of Metcalfe's Law in which price is divided by n log n number of daily transactions\n", 85 | "- Metcalfe's Law - UTXO: A variant of Metcalfe's Law in which price is divided by n log n number of unspent transaction outputs\n", 86 | "- Miner Revenue Value: The amount of dollars earned by the mining network\n", 87 | "- Miner Revenue: The amount of bitcoin earned by the mining network, in the form of block rewards and transaction fees\n", 88 | "- Money Supply: The amount of bitcoin in circulation\n", 89 | "- Output Value: The dollar value of all outputs sent over the network\n", 90 | "- Output Volume: The amount of Bitcoin sent over the network\n", 91 | "- Bitcoin Price: The amount of dollars a single bitcoin is worth\n", 92 | "- Quarterly Hash Growth: Growth in the total network computations in the past 90 days\n", 93 | "- Total Transactions: The running total number of transactions processed by the Bitcoin network\n", 94 | "- Transaction Amount: The average amount of bitcoin moved per transaction\n", 95 | "- Fees Value: The dollar value of mining fees\n", 96 | "- Transaction Fees: The amount of bitcoin paid to miners in fees\n", 97 | "- Transaction Size: The average data size of a transaction\n", 98 | "- Transaction Value: The average dollar value moved in each transaction\n", 99 | "- Transactions per Block: The number of transactions in each block\n", 100 | "- Average UTXO Amount: The average amount of bitcoin contained in each unspent transaction output\n", 101 | "- UTXO Growth: The net number of unspent transaction outputs created\n", 102 | "- UTXO Set Size: The total number of unspent transaction outputs\n", 103 | "- Average UTXO Value: The average dollar value of each uspent transaction output\n", 104 | "- Velocity - Daily: The proportion of the money supply transacted each day\n", 105 | "- Velocity - Quarterly: The proportion of the money supply transacted each day, computed on a rolling-quarter basis\n", 106 | "- Velocity of Money: How many times the money supply changes hands in a given year" 107 | ] 108 | }, 109 | { 110 | "cell_type": "code", 111 | "execution_count": 2, 112 | "metadata": { 113 | "collapsed": true 114 | }, 115 | "outputs": [], 116 | "source": [ 117 | "def load_data(filename, sequence_length):\n", 118 | " \"\"\"\n", 119 | " Loads the bitcoin data\n", 120 | " \n", 121 | " Arguments:\n", 122 | " filename -- A string that represents where the .csv file can be located\n", 123 | " sequence_length -- An integer of how many days should be looked at in a row\n", 124 | " \n", 125 | " Returns:\n", 126 | " X_train -- A tensor of shape (2400, 49, 35) that will be inputed into the model to train it\n", 127 | " Y_train -- A tensor of shape (2400,) that will be inputed into the model to train it\n", 128 | " X_test -- A tensor of shape (267, 49, 35) that will be used to test the model's proficiency\n", 129 | " Y_test -- A tensor of shape (267,) that will be used to check the model's predictions\n", 130 | " Y_daybefore -- A tensor of shape (267,) that represents the price of bitcoin the day before each Y_test value\n", 131 | " unnormalized_bases -- A tensor of shape (267,) that will be used to get the true prices from the normalized ones\n", 132 | " window_size -- An integer that represents how many days of X values the model can look at at once\n", 133 | " \"\"\"\n", 134 | " #Read the data file\n", 135 | " raw_data = pd.read_csv(filename, dtype = float).values\n", 136 | " \n", 137 | " #Change all zeros to the number before the zero occurs\n", 138 | " for x in range(0, raw_data.shape[0]):\n", 139 | " for y in range(0, raw_data.shape[1]):\n", 140 | " if(raw_data[x][y] == 0):\n", 141 | " raw_data[x][y] = raw_data[x-1][y]\n", 142 | " \n", 143 | " #Convert the file to a list\n", 144 | " data = raw_data.tolist()\n", 145 | " \n", 146 | " #Convert the data to a 3D array (a x b x c) \n", 147 | " #Where a is the number of days, b is the window size, and c is the number of features in the data file\n", 148 | " result = []\n", 149 | " for index in range(len(data) - sequence_length):\n", 150 | " result.append(data[index: index + sequence_length])\n", 151 | " \n", 152 | " #Normalizing data by going through each window\n", 153 | " #Every value in the window is divided by the first value in the window, and then 1 is subtracted\n", 154 | " d0 = np.array(result)\n", 155 | " dr = np.zeros_like(d0)\n", 156 | " dr[:,1:,:] = d0[:,1:,:] / d0[:,0:1,:] - 1\n", 157 | " \n", 158 | " #Keeping the unnormalized prices for Y_test\n", 159 | " #Useful when graphing bitcoin price over time later\n", 160 | " start = 2400\n", 161 | " end = int(dr.shape[0] + 1)\n", 162 | " unnormalized_bases = d0[start:end,0:1,20]\n", 163 | " \n", 164 | " #Splitting data set into training (First 90% of data points) and testing data (last 10% of data points)\n", 165 | " split_line = round(0.9 * dr.shape[0])\n", 166 | " training_data = dr[:int(split_line), :]\n", 167 | " \n", 168 | " #Shuffle the data\n", 169 | " np.random.shuffle(training_data)\n", 170 | " \n", 171 | " #Training Data\n", 172 | " X_train = training_data[:, :-1]\n", 173 | " Y_train = training_data[:, -1]\n", 174 | " Y_train = Y_train[:, 20]\n", 175 | " \n", 176 | " #Testing data\n", 177 | " X_test = dr[int(split_line):, :-1]\n", 178 | " Y_test = dr[int(split_line):, 49, :]\n", 179 | " Y_test = Y_test[:, 20]\n", 180 | "\n", 181 | " #Get the day before Y_test's price\n", 182 | " Y_daybefore = dr[int(split_line):, 48, :]\n", 183 | " Y_daybefore = Y_daybefore[:, 20]\n", 184 | " \n", 185 | " #Get window size and sequence length\n", 186 | " sequence_length = sequence_length\n", 187 | " window_size = sequence_length - 1 #because the last value is reserved as the y value\n", 188 | " \n", 189 | " return X_train, Y_train, X_test, Y_test, Y_daybefore, unnormalized_bases, window_size" 190 | ] 191 | }, 192 | { 193 | "cell_type": "markdown", 194 | "metadata": {}, 195 | "source": [ 196 | "# Step 2 - Building the Model\n", 197 | "\n", 198 | "- We'll use a 3layer RNN with 20% dropout at each layer to reduce overfitting to the training data. \n", 199 | "- This model will have 515,579 trainable parameters throughout all of its layers. \n", 200 | "- The model uses the AdamOptimizer as its optimization function.\n", 201 | "- The loss function used in this model is mean squared error. \n", 202 | "- A linear activation function is used in this model to determine the output of each neuron in the model. The linear activation function is simply defined as f(x) = x.\n", 203 | "- The model will use Keras's Sequential model with Bidirectional LSTM layers." 204 | ] 205 | }, 206 | { 207 | "cell_type": "markdown", 208 | "metadata": {}, 209 | "source": [ 210 | "![alt text](http://d3kbpzbmcynnmx.cloudfront.net/wp-content/uploads/2015/09/rnn.jpg \"Logo Title Text 1\")\n", 211 | "![alt text](https://docs.microsoft.com/en-us/azure/machine-learning/preview/media/scenario-tdsp-biomedical-recognition/lstm-cell.png \"Logo Title Text 1\")\n", 212 | "![alt text](http://d3kbpzbmcynnmx.cloudfront.net/wp-content/uploads/2015/09/bidirectional-rnn.png \"Logo Title Text 1\")\n", 213 | "![alt text](https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2017/05/Comparison-of-Adam-to-Other-Optimization-Algorithms-Training-a-Multilayer-Perceptron.png \"Logo Title Text 1\")\n", 214 | "\n", 215 | "\n", 216 | "Bidirectional RNNs are based on the idea that the output at time t may not only depend on the previous elements in the sequence, but also future elements. For example, to predict a missing word in a sequence you want to look at both the left and the right context. Bidirectional RNNs are quite simple. They are just two RNNs stacked on top of each other. The output is then computed based on the hidden state of both RNNs." 217 | ] 218 | }, 219 | { 220 | "cell_type": "code", 221 | "execution_count": 3, 222 | "metadata": {}, 223 | "outputs": [], 224 | "source": [ 225 | "def initialize_model(window_size, dropout_value, activation_function, loss_function, optimizer):\n", 226 | " \"\"\"\n", 227 | " Initializes and creates the model to be used\n", 228 | " \n", 229 | " Arguments:\n", 230 | " window_size -- An integer that represents how many days of X_values the model can look at at once\n", 231 | " dropout_value -- A decimal representing how much dropout should be incorporated at each level, in this case 0.2\n", 232 | " activation_function -- A string to define the activation_function, in this case it is linear\n", 233 | " loss_function -- A string to define the loss function to be used, in the case it is mean squared error\n", 234 | " optimizer -- A string to define the optimizer to be used, in the case it is adam\n", 235 | " \n", 236 | " Returns:\n", 237 | " model -- A 3 layer RNN with 100*dropout_value dropout in each layer that uses activation_function as its activation\n", 238 | " function, loss_function as its loss function, and optimizer as its optimizer\n", 239 | " \"\"\"\n", 240 | " #Create a Sequential model using Keras\n", 241 | " model = Sequential()\n", 242 | "\n", 243 | " #First recurrent layer with dropout\n", 244 | " model.add(Bidirectional(LSTM(window_size, return_sequences=True), input_shape=(window_size, X_train.shape[-1]),))\n", 245 | " model.add(Dropout(dropout_value))\n", 246 | "\n", 247 | " #Second recurrent layer with dropout\n", 248 | " model.add(Bidirectional(LSTM((window_size*2), return_sequences=True)))\n", 249 | " model.add(Dropout(dropout_value))\n", 250 | "\n", 251 | " #Third recurrent layer\n", 252 | " model.add(Bidirectional(LSTM(window_size, return_sequences=False)))\n", 253 | "\n", 254 | " #Output layer (returns the predicted value)\n", 255 | " model.add(Dense(units=1))\n", 256 | " \n", 257 | " #Set activation function\n", 258 | " model.add(Activation(activation_function))\n", 259 | "\n", 260 | " #Set loss function and optimizer\n", 261 | " model.compile(loss=loss_function, optimizer=optimizer)\n", 262 | " \n", 263 | " return model" 264 | ] 265 | }, 266 | { 267 | "cell_type": "markdown", 268 | "metadata": {}, 269 | "source": [ 270 | "# Step 3 - Training the Model\n", 271 | "\n", 272 | "- The model will be fitted to the training dat with a batch_size of 1024. \n", 273 | "- Additionally, 100 epochs will be performed to give the model time to adjust its weights and biases to fit the training data.\n", 274 | "- 5% of the training data will be used as the validation set. \n", 275 | "- The model will train by minimizing the loss (mean squared error) of its training data. -- - The validation set is useful when attempting to identify signs of overfitting. \n", 276 | "- If the validation loss begins to consistently and rapidly increase, the model has overfitted to the training data, and changes should be made to the model. \n" 277 | ] 278 | }, 279 | { 280 | "cell_type": "code", 281 | "execution_count": 15, 282 | "metadata": { 283 | "scrolled": true 284 | }, 285 | "outputs": [], 286 | "source": [ 287 | "def fit_model(model, X_train, Y_train, batch_num, num_epoch, val_split):\n", 288 | " \"\"\"\n", 289 | " Fits the model to the training data\n", 290 | " \n", 291 | " Arguments:\n", 292 | " model -- The previously initalized 3 layer Recurrent Neural Network\n", 293 | " X_train -- A tensor of shape (2400, 49, 35) that represents the x values of the training data\n", 294 | " Y_train -- A tensor of shape (2400,) that represents the y values of the training data\n", 295 | " batch_num -- An integer representing the batch size to be used, in this case 1024\n", 296 | " num_epoch -- An integer defining the number of epochs to be run, in this case 100\n", 297 | " val_split -- A decimal representing the proportion of training data to be used as validation data\n", 298 | " \n", 299 | " Returns:\n", 300 | " model -- The 3 layer Recurrent Neural Network that has been fitted to the training data\n", 301 | " training_time -- An integer representing the amount of time (in seconds) that the model was training\n", 302 | " \"\"\"\n", 303 | " #Record the time the model starts training\n", 304 | " start = time.time()\n", 305 | "\n", 306 | " #Train the model on X_train and Y_train\n", 307 | " model.fit(X_train, Y_train, batch_size= batch_num, nb_epoch=num_epoch, validation_split= val_split)\n", 308 | "\n", 309 | " #Get the time it took to train the model (in seconds)\n", 310 | " training_time = int(math.floor(time.time() - start))\n", 311 | " return model, training_time" 312 | ] 313 | }, 314 | { 315 | "cell_type": "markdown", 316 | "metadata": {}, 317 | "source": [ 318 | "# Step 4 - Testing the Model\n", 319 | "\n", 320 | "- The models given x values of testing data & will predict normalized prices (y_predict)\n", 321 | "- Then, both the predicted values and the real values will be unnormalized and stored in separate arrays. \n", 322 | "- The values are unnormalized by looping through the predicted and true values. \n", 323 | "- 1 is added to each value, and then the result is multiplied by a corresponding number in the unnormalized_bases array. \n", 324 | "- In other words, the unnormalization processs is the exact reverse of the normalization process\n", 325 | "- Finally, a plot is created of the unnormalized real values and the unnormalized predicted values. " 326 | ] 327 | }, 328 | { 329 | "cell_type": "code", 330 | "execution_count": 5, 331 | "metadata": { 332 | "scrolled": true 333 | }, 334 | "outputs": [], 335 | "source": [ 336 | "def test_model(model, X_test, Y_test, unnormalized_bases):\n", 337 | " \"\"\"\n", 338 | " Test the model on the testing data\n", 339 | " \n", 340 | " Arguments:\n", 341 | " model -- The previously fitted 3 layer Recurrent Neural Network\n", 342 | " X_test -- A tensor of shape (267, 49, 35) that represents the x values of the testing data\n", 343 | " Y_test -- A tensor of shape (267,) that represents the y values of the testing data\n", 344 | " unnormalized_bases -- A tensor of shape (267,) that can be used to get unnormalized data points\n", 345 | " \n", 346 | " Returns:\n", 347 | " y_predict -- A tensor of shape (267,) that represnts the normalized values that the model predicts based on X_test\n", 348 | " real_y_test -- A tensor of shape (267,) that represents the actual prices of bitcoin throughout the testing period\n", 349 | " real_y_predict -- A tensor of shape (267,) that represents the model's predicted prices of bitcoin\n", 350 | " fig -- A branch of the graph of the real predicted prices of bitcoin versus the real prices of bitcoin\n", 351 | " \"\"\"\n", 352 | " #Test the model on X_Test\n", 353 | " y_predict = model.predict(X_test)\n", 354 | "\n", 355 | " #Create empty 2D arrays to store unnormalized values\n", 356 | " real_y_test = np.zeros_like(Y_test)\n", 357 | " real_y_predict = np.zeros_like(y_predict)\n", 358 | "\n", 359 | " #Fill the 2D arrays with the real value and the predicted value by reversing the normalization process\n", 360 | " for i in range(Y_test.shape[0]):\n", 361 | " y = Y_test[i]\n", 362 | " predict = y_predict[i]\n", 363 | " real_y_test[i] = (y+1)*unnormalized_bases[i]\n", 364 | " real_y_predict[i] = (predict+1)*unnormalized_bases[i]\n", 365 | "\n", 366 | " #Plot of the predicted prices versus the real prices\n", 367 | " fig = plt.figure(figsize=(10,5))\n", 368 | " ax = fig.add_subplot(111)\n", 369 | " ax.set_title(\"Bitcoin Price Over Time\")\n", 370 | " plt.plot(real_y_predict, color = 'green', label = 'Predicted Price')\n", 371 | " plt.plot(real_y_test, color = 'red', label = 'Real Price')\n", 372 | " ax.set_ylabel(\"Price (USD)\")\n", 373 | " ax.set_xlabel(\"Time (Days)\")\n", 374 | " ax.legend()\n", 375 | " \n", 376 | " return y_predict, real_y_test, real_y_predict, fig" 377 | ] 378 | }, 379 | { 380 | "cell_type": "markdown", 381 | "metadata": {}, 382 | "source": [ 383 | "# Step 5 - Evaluating Change in Price\n", 384 | "\n", 385 | "- Lets plot the model's predicted change in price each day against the real change in price daily\n", 386 | "- The percent increases of the predicted values and the real values are calculated by subtracting the value from the day before from the predicted/real value then dividing the result by 1+the value from the day before. \n", 387 | "- The predicted change in price is stored in delta_predict, while the real change in price is stored in delta_real.\n", 388 | "- These two tensors are then graphed together to visualize the difference between predicted and real change in price for bitcoin throughout the testing period. \n", 389 | "- The plot will represent the percent change in bitcoin price each day. " 390 | ] 391 | }, 392 | { 393 | "cell_type": "code", 394 | "execution_count": 6, 395 | "metadata": {}, 396 | "outputs": [], 397 | "source": [ 398 | "def price_change(Y_daybefore, Y_test, y_predict):\n", 399 | " \"\"\"\n", 400 | " Calculate the percent change between each value and the day before\n", 401 | " \n", 402 | " Arguments:\n", 403 | " Y_daybefore -- A tensor of shape (267,) that represents the prices of each day before each price in Y_test\n", 404 | " Y_test -- A tensor of shape (267,) that represents the normalized y values of the testing data\n", 405 | " y_predict -- A tensor of shape (267,) that represents the normalized y values of the model's predictions\n", 406 | " \n", 407 | " Returns:\n", 408 | " Y_daybefore -- A tensor of shape (267, 1) that represents the prices of each day before each price in Y_test\n", 409 | " Y_test -- A tensor of shape (267, 1) that represents the normalized y values of the testing data\n", 410 | " delta_predict -- A tensor of shape (267, 1) that represents the difference between predicted and day before values\n", 411 | " delta_real -- A tensor of shape (267, 1) that represents the difference between real and day before values\n", 412 | " fig -- A plot representing percent change in bitcoin price per day,\n", 413 | " \"\"\"\n", 414 | " #Reshaping Y_daybefore and Y_test\n", 415 | " Y_daybefore = np.reshape(Y_daybefore, (-1, 1))\n", 416 | " Y_test = np.reshape(Y_test, (-1, 1))\n", 417 | "\n", 418 | " #The difference between each predicted value and the value from the day before\n", 419 | " delta_predict = (y_predict - Y_daybefore) / (1+Y_daybefore)\n", 420 | "\n", 421 | " #The difference between each true value and the value from the day before\n", 422 | " delta_real = (Y_test - Y_daybefore) / (1+Y_daybefore)\n", 423 | "\n", 424 | " #Plotting the predicted percent change versus the real percent change\n", 425 | " fig = plt.figure(figsize=(10, 6))\n", 426 | " ax = fig.add_subplot(111)\n", 427 | " ax.set_title(\"Percent Change in Bitcoin Price Per Day\")\n", 428 | " plt.plot(delta_predict, color='green', label = 'Predicted Percent Change')\n", 429 | " plt.plot(delta_real, color='red', label = 'Real Percent Change')\n", 430 | " plt.ylabel(\"Percent Change\")\n", 431 | " plt.xlabel(\"Time (Days)\")\n", 432 | " ax.legend()\n", 433 | " plt.show()\n", 434 | " \n", 435 | " return Y_daybefore, Y_test, delta_predict, delta_real, fig" 436 | ] 437 | }, 438 | { 439 | "cell_type": "markdown", 440 | "metadata": {}, 441 | "source": [ 442 | "# Step 6 - Process the Percent Change in Price\n", 443 | "\n", 444 | "- The percent change in price will be processsed such that an increase in price is represented by a 1, and a decrease/no change is represented by a 0. These binary values will be stored in arrays delta_predict_1_0 and delta_real_1_0. \n", 445 | "\n", 446 | "- This will be done by looping through the values of the real and predicted percent change arrays. If a value is greater than 0, a 1 is stored in a new array. Otherwise, a 0 is stored in the new array.\n", 447 | "\n", 448 | "- This process is very useful to understand how well the model did, and can be used to gather statistics about the model's performance." 449 | ] 450 | }, 451 | { 452 | "cell_type": "code", 453 | "execution_count": 7, 454 | "metadata": { 455 | "scrolled": true 456 | }, 457 | "outputs": [], 458 | "source": [ 459 | "def binary_price(delta_predict, delta_real):\n", 460 | " \"\"\"\n", 461 | " Converts percent change to a binary 1 or 0, where 1 is an increase and 0 is a decrease/no change\n", 462 | " \n", 463 | " Arguments:\n", 464 | " delta_predict -- A tensor of shape (267, 1) that represents the predicted percent change in price\n", 465 | " delta_real -- A tensor of shape (267, 1) that represents the real percent change in price\n", 466 | " \n", 467 | " Returns:\n", 468 | " delta_predict_1_0 -- A tensor of shape (267, 1) that represents the binary version of delta_predict\n", 469 | " delta_real_1_0 -- A tensor of shape (267, 1) that represents the binary version of delta_real\n", 470 | " \"\"\"\n", 471 | " #Empty arrays where a 1 represents an increase in price and a 0 represents a decrease in price\n", 472 | " delta_predict_1_0 = np.empty(delta_predict.shape)\n", 473 | " delta_real_1_0 = np.empty(delta_real.shape)\n", 474 | "\n", 475 | " #If the change in price is greater than zero, store it as a 1\n", 476 | " #If the change in price is less than zero, store it as a 0\n", 477 | " for i in range(delta_predict.shape[0]):\n", 478 | " if delta_predict[i][0] > 0:\n", 479 | " delta_predict_1_0[i][0] = 1\n", 480 | " else:\n", 481 | " delta_predict_1_0[i][0] = 0\n", 482 | " for i in range(delta_real.shape[0]):\n", 483 | " if delta_real[i][0] > 0:\n", 484 | " delta_real_1_0[i][0] = 1\n", 485 | " else:\n", 486 | " delta_real_1_0[i][0] = 0 \n", 487 | "\n", 488 | " return delta_predict_1_0, delta_real_1_0" 489 | ] 490 | }, 491 | { 492 | "cell_type": "markdown", 493 | "metadata": {}, 494 | "source": [ 495 | "# 7 - Comparing Predictions and Real Data\n", 496 | "\n", 497 | "The binary categories computed in the previous cell is now used to compare predicted and real data. It will be used to find the number of:\n", 498 | "- True positives\n", 499 | "- False positives\n", 500 | "- True negatives\n", 501 | "- False negatives\n", 502 | "These can then be used to further calculate statistics of the model's performance. \n", 503 | "\n", 504 | "This will be done by looping through both binary arrays at once and getting the corresponding values. If the real value is a 1 and the predicted value is a 1, that index will be counted as a true positive. If the real value is a 1 and the predicted value is a 0, that index will be counted as a false negative. If the real value is a 0 and the predicted value is a 0, that index will be counted as a true negative. If the real value is a 0 and the predicted value is a 1, that index will be counted as a false positive." 505 | ] 506 | }, 507 | { 508 | "cell_type": "code", 509 | "execution_count": 8, 510 | "metadata": { 511 | "collapsed": true 512 | }, 513 | "outputs": [], 514 | "source": [ 515 | "def find_positives_negatives(delta_predict_1_0, delta_real_1_0):\n", 516 | " \"\"\"\n", 517 | " Finding the number of false positives, false negatives, true positives, true negatives\n", 518 | " \n", 519 | " Arguments: \n", 520 | " delta_predict_1_0 -- A tensor of shape (267, 1) that represents the binary version of delta_predict\n", 521 | " delta_real_1_0 -- A tensor of shape (267, 1) that represents the binary version of delta_real\n", 522 | " \n", 523 | " Returns:\n", 524 | " true_pos -- An integer that represents the number of true positives achieved by the model\n", 525 | " false_pos -- An integer that represents the number of false positives achieved by the model\n", 526 | " true_neg -- An integer that represents the number of true negatives achieved by the model\n", 527 | " false_neg -- An integer that represents the number of false negatives achieved by the model\n", 528 | " \"\"\"\n", 529 | " #Finding the number of false positive/negatives and true positives/negatives\n", 530 | " true_pos = 0\n", 531 | " false_pos = 0\n", 532 | " true_neg = 0\n", 533 | " false_neg = 0\n", 534 | " for i in range(delta_real_1_0.shape[0]):\n", 535 | " real = delta_real_1_0[i][0]\n", 536 | " predicted = delta_predict_1_0[i][0]\n", 537 | " if real == 1:\n", 538 | " if predicted == 1:\n", 539 | " true_pos += 1\n", 540 | " else:\n", 541 | " false_neg += 1\n", 542 | " elif real == 0:\n", 543 | " if predicted == 0:\n", 544 | " true_neg += 1\n", 545 | " else:\n", 546 | " false_pos += 1\n", 547 | " return true_pos, false_pos, true_neg, false_neg" 548 | ] 549 | }, 550 | { 551 | "cell_type": "markdown", 552 | "metadata": {}, 553 | "source": [ 554 | "# 8 - Calculating Statistics\n", 555 | "\n", 556 | "![alt text](https://www.researchgate.net/profile/Alexandros_Karatzoglou/publication/221515860/figure/fig1/AS:339586132791298@1457975051470/Figure-1-Mean-Squared-Error-formula-used-to-evaluate-the-user-model.ppm \"Logo Title Text 1\")\n", 557 | "\n", 558 | "![alt text](https://image.slidesharecdn.com/qconrio-machinelearningforeveryone-150826200704-lva1-app6892/95/qcon-rio-machine-learning-for-everyone-51-638.jpg?cb=1440698161 \"Logo Title Text 1\")\n", 559 | "\n", 560 | "\n", 561 | "Putting everything together and getting statistics about the model. Statistics being calculated include:\n", 562 | "- Precision: How often the model gets a true positive compared to how often it returns a positive\n", 563 | "- Recall: How often the model gets a true positive compared to how often it should have gotten a positive\n", 564 | "- F1 Score: The weighted average of recall and precision\n", 565 | "- Mean Squared Error: The average of the squares of the differences between predicted and real values" 566 | ] 567 | }, 568 | { 569 | "cell_type": "code", 570 | "execution_count": 22, 571 | "metadata": { 572 | "collapsed": true 573 | }, 574 | "outputs": [], 575 | "source": [ 576 | "def calculate_statistics(true_pos, false_pos, true_neg, false_neg, y_predict, Y_test):\n", 577 | " \"\"\"\n", 578 | " Calculate various statistics to assess performance\n", 579 | " \n", 580 | " Arguments:\n", 581 | " true_pos -- An integer that represents the number of true positives achieved by the model\n", 582 | " false_pos -- An integer that represents the number of false positives achieved by the model\n", 583 | " true_neg -- An integer that represents the number of true negatives achieved by the model\n", 584 | " false_neg -- An integer that represents the number of false negatives achieved by the model\n", 585 | " Y_test -- A tensor of shape (267, 1) that represents the normalized y values of the testing data\n", 586 | " y_predict -- A tensor of shape (267, 1) that represents the normalized y values of the model's predictions\n", 587 | " \n", 588 | " Returns:\n", 589 | " precision -- How often the model gets a true positive compared to how often it returns a positive\n", 590 | " recall -- How often the model gets a true positive compared to how often is hould have gotten a positive\n", 591 | " F1 -- The weighted average of recall and precision\n", 592 | " Mean Squared Error -- The average of the squares of the differences between predicted and real values\n", 593 | " \"\"\"\n", 594 | " precision = float(true_pos) / (true_pos + false_pos)\n", 595 | " recall = float(true_pos) / (true_pos + false_neg)\n", 596 | " F1 = float(2 * precision * recall) / (precision + recall)\n", 597 | " #Get Mean Squared Error\n", 598 | " MSE = mean_squared_error(y_predict.flatten(), Y_test.flatten())\n", 599 | "\n", 600 | " return precision, recall, F1, MSE" 601 | ] 602 | }, 603 | { 604 | "cell_type": "markdown", 605 | "metadata": {}, 606 | "source": [ 607 | "# 9 - Putting It All Together\n", 608 | "\n", 609 | "Applying all the methods defined above and analyzing results." 610 | ] 611 | }, 612 | { 613 | "cell_type": "markdown", 614 | "metadata": {}, 615 | "source": [ 616 | "## Loading the Data" 617 | ] 618 | }, 619 | { 620 | "cell_type": "code", 621 | "execution_count": 10, 622 | "metadata": {}, 623 | "outputs": [ 624 | { 625 | "name": "stdout", 626 | "output_type": "stream", 627 | "text": [ 628 | "(2400, 49, 35)\n", 629 | "(2400,)\n", 630 | "(267, 49, 35)\n", 631 | "(267,)\n", 632 | "(267,)\n", 633 | "(267, 1)\n", 634 | "49\n" 635 | ] 636 | } 637 | ], 638 | "source": [ 639 | "X_train, Y_train, X_test, Y_test, Y_daybefore, unnormalized_bases, window_size = load_data(\"Bitcoin Data.csv\", 50)\n", 640 | "print X_train.shape\n", 641 | "print Y_train.shape\n", 642 | "print X_test.shape\n", 643 | "print Y_test.shape\n", 644 | "print Y_daybefore.shape\n", 645 | "print unnormalized_bases.shape\n", 646 | "print window_size" 647 | ] 648 | }, 649 | { 650 | "cell_type": "markdown", 651 | "metadata": {}, 652 | "source": [ 653 | "## Initializing the Model" 654 | ] 655 | }, 656 | { 657 | "cell_type": "code", 658 | "execution_count": 31, 659 | "metadata": {}, 660 | "outputs": [ 661 | { 662 | "name": "stdout", 663 | "output_type": "stream", 664 | "text": [ 665 | "_________________________________________________________________\n", 666 | "Layer (type) Output Shape Param # \n", 667 | "=================================================================\n", 668 | "bidirectional_7 (Bidirection (None, 49, 98) 33320 \n", 669 | "_________________________________________________________________\n", 670 | "dropout_5 (Dropout) (None, 49, 98) 0 \n", 671 | "_________________________________________________________________\n", 672 | "bidirectional_8 (Bidirection (None, 49, 196) 154448 \n", 673 | "_________________________________________________________________\n", 674 | "dropout_6 (Dropout) (None, 49, 196) 0 \n", 675 | "_________________________________________________________________\n", 676 | "bidirectional_9 (Bidirection (None, 98) 96432 \n", 677 | "_________________________________________________________________\n", 678 | "dense_3 (Dense) (None, 1) 99 \n", 679 | "_________________________________________________________________\n", 680 | "activation_3 (Activation) (None, 1) 0 \n", 681 | "=================================================================\n", 682 | "Total params: 284,299\n", 683 | "Trainable params: 284,299\n", 684 | "Non-trainable params: 0\n", 685 | "_________________________________________________________________\n", 686 | "None\n" 687 | ] 688 | } 689 | ], 690 | "source": [ 691 | "model = initialize_model(window_size, 0.2, 'linear', 'mse', 'adam')\n", 692 | "print model.summary()" 693 | ] 694 | }, 695 | { 696 | "cell_type": "markdown", 697 | "metadata": {}, 698 | "source": [ 699 | "## Training the Model" 700 | ] 701 | }, 702 | { 703 | "cell_type": "code", 704 | "execution_count": 32, 705 | "metadata": { 706 | "scrolled": true 707 | }, 708 | "outputs": [ 709 | { 710 | "name": "stdout", 711 | "output_type": "stream", 712 | "text": [ 713 | "Train on 2280 samples, validate on 120 samples\n", 714 | "Epoch 1/100\n", 715 | "2280/2280 [==============================] - 41s 18ms/step - loss: 2.8276 - val_loss: 1.6963\n", 716 | "Epoch 2/100\n", 717 | "2280/2280 [==============================] - 24s 11ms/step - loss: 2.0012 - val_loss: 1.2404\n", 718 | "Epoch 3/100\n", 719 | "2280/2280 [==============================] - 25s 11ms/step - loss: 1.6599 - val_loss: 0.8890\n", 720 | "Epoch 4/100\n", 721 | "2280/2280 [==============================] - 27s 12ms/step - loss: 1.3073 - val_loss: 0.7351\n", 722 | "Epoch 5/100\n", 723 | "2280/2280 [==============================] - 27s 12ms/step - loss: 1.1354 - val_loss: 0.4832\n", 724 | "Epoch 6/100\n", 725 | "2280/2280 [==============================] - 27s 12ms/step - loss: 0.9404 - val_loss: 0.3170\n", 726 | "Epoch 7/100\n", 727 | "2280/2280 [==============================] - 27s 12ms/step - loss: 0.7788 - val_loss: 0.3004\n", 728 | "Epoch 8/100\n", 729 | "2280/2280 [==============================] - 26s 11ms/step - loss: 0.6307 - val_loss: 0.2247\n", 730 | "Epoch 9/100\n", 731 | "2280/2280 [==============================] - 26s 11ms/step - loss: 0.4850 - val_loss: 0.1572\n", 732 | "Epoch 10/100\n", 733 | "2280/2280 [==============================] - 27s 12ms/step - loss: 0.3859 - val_loss: 0.1180\n", 734 | "Epoch 11/100\n", 735 | "2280/2280 [==============================] - 27s 12ms/step - loss: 0.3302 - val_loss: 0.1003\n", 736 | "Epoch 12/100\n", 737 | "2280/2280 [==============================] - 25s 11ms/step - loss: 0.2766 - val_loss: 0.0989\n", 738 | "Epoch 13/100\n", 739 | "2280/2280 [==============================] - 26s 11ms/step - loss: 0.2604 - val_loss: 0.1093\n", 740 | "Epoch 14/100\n", 741 | "2280/2280 [==============================] - 26s 11ms/step - loss: 0.2498 - val_loss: 0.1053\n", 742 | "Epoch 15/100\n", 743 | "2280/2280 [==============================] - 26s 11ms/step - loss: 0.2403 - val_loss: 0.0847\n", 744 | "Epoch 16/100\n", 745 | "2280/2280 [==============================] - 25s 11ms/step - loss: 0.1958 - val_loss: 0.1353\n", 746 | "Epoch 17/100\n", 747 | "2280/2280 [==============================] - 27s 12ms/step - loss: 0.2008 - val_loss: 0.0728\n", 748 | "Epoch 18/100\n", 749 | "2280/2280 [==============================] - 25s 11ms/step - loss: 0.1793 - val_loss: 0.0692\n", 750 | "Epoch 19/100\n", 751 | "2280/2280 [==============================] - 26s 12ms/step - loss: 0.1587 - val_loss: 0.1072\n", 752 | "Epoch 20/100\n", 753 | "2280/2280 [==============================] - 27s 12ms/step - loss: 0.1448 - val_loss: 0.0724\n", 754 | "Epoch 21/100\n", 755 | "2280/2280 [==============================] - 26s 12ms/step - loss: 0.1385 - val_loss: 0.0628\n", 756 | "Epoch 22/100\n", 757 | "2280/2280 [==============================] - 26s 11ms/step - loss: 0.1217 - val_loss: 0.0892\n", 758 | "Epoch 23/100\n", 759 | "2280/2280 [==============================] - 23s 10ms/step - loss: 0.1251 - val_loss: 0.0704\n", 760 | "Epoch 24/100\n", 761 | "2280/2280 [==============================] - 28s 12ms/step - loss: 0.1085 - val_loss: 0.0576\n", 762 | "Epoch 25/100\n", 763 | "2280/2280 [==============================] - 24s 11ms/step - loss: 0.1055 - val_loss: 0.0587\n", 764 | "Epoch 26/100\n", 765 | "2280/2280 [==============================] - 24s 10ms/step - loss: 0.1055 - val_loss: 0.0602\n", 766 | "Epoch 27/100\n", 767 | "2280/2280 [==============================] - 22s 10ms/step - loss: 0.0962 - val_loss: 0.0539\n", 768 | "Epoch 28/100\n", 769 | "2280/2280 [==============================] - 25s 11ms/step - loss: 0.0974 - val_loss: 0.0521\n", 770 | "Epoch 29/100\n", 771 | "2280/2280 [==============================] - 28s 12ms/step - loss: 0.0939 - val_loss: 0.0337\n", 772 | "Epoch 30/100\n", 773 | "2280/2280 [==============================] - 25s 11ms/step - loss: 0.0867 - val_loss: 0.0363\n", 774 | "Epoch 31/100\n", 775 | "2280/2280 [==============================] - 29s 13ms/step - loss: 0.0825 - val_loss: 0.0431\n", 776 | "Epoch 32/100\n", 777 | "2280/2280 [==============================] - 24s 11ms/step - loss: 0.0800 - val_loss: 0.0448\n", 778 | "Epoch 33/100\n", 779 | "2280/2280 [==============================] - 24s 10ms/step - loss: 0.0779 - val_loss: 0.0388\n", 780 | "Epoch 34/100\n", 781 | "2280/2280 [==============================] - 25s 11ms/step - loss: 0.0735 - val_loss: 0.0436\n", 782 | "Epoch 35/100\n", 783 | "2280/2280 [==============================] - 25s 11ms/step - loss: 0.0743 - val_loss: 0.0303\n", 784 | "Epoch 36/100\n", 785 | "2280/2280 [==============================] - 27s 12ms/step - loss: 0.0710 - val_loss: 0.0296\n", 786 | "Epoch 37/100\n", 787 | "2280/2280 [==============================] - 27s 12ms/step - loss: 0.0660 - val_loss: 0.0465\n", 788 | "Epoch 38/100\n", 789 | "2280/2280 [==============================] - 21s 9ms/step - loss: 0.0686 - val_loss: 0.0416\n", 790 | "Epoch 39/100\n", 791 | "2280/2280 [==============================] - 22s 10ms/step - loss: 0.0681 - val_loss: 0.0379\n", 792 | "Epoch 40/100\n", 793 | "2280/2280 [==============================] - 21s 9ms/step - loss: 0.0690 - val_loss: 0.0524\n", 794 | "Epoch 41/100\n", 795 | "2280/2280 [==============================] - 20s 9ms/step - loss: 0.0640 - val_loss: 0.0561\n", 796 | "Epoch 42/100\n", 797 | "2280/2280 [==============================] - 21s 9ms/step - loss: 0.0609 - val_loss: 0.0575\n", 798 | "Epoch 43/100\n", 799 | "2280/2280 [==============================] - 21s 9ms/step - loss: 0.0591 - val_loss: 0.0431\n", 800 | "Epoch 44/100\n", 801 | "2280/2280 [==============================] - 21s 9ms/step - loss: 0.0571 - val_loss: 0.0461\n", 802 | "Epoch 45/100\n", 803 | "2280/2280 [==============================] - 20s 9ms/step - loss: 0.0551 - val_loss: 0.0450\n", 804 | "Epoch 46/100\n", 805 | "2280/2280 [==============================] - 19s 8ms/step - loss: 0.0582 - val_loss: 0.0448\n", 806 | "Epoch 47/100\n", 807 | "2280/2280 [==============================] - 18s 8ms/step - loss: 0.0544 - val_loss: 0.0779\n", 808 | "Epoch 48/100\n", 809 | "2280/2280 [==============================] - 18s 8ms/step - loss: 0.0562 - val_loss: 0.0708\n", 810 | "Epoch 49/100\n", 811 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0557 - val_loss: 0.0703\n", 812 | "Epoch 50/100\n", 813 | "2280/2280 [==============================] - 15s 6ms/step - loss: 0.0503 - val_loss: 0.0586\n", 814 | "Epoch 51/100\n", 815 | "2280/2280 [==============================] - 15s 7ms/step - loss: 0.0502 - val_loss: 0.0556\n", 816 | "Epoch 52/100\n", 817 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0498 - val_loss: 0.0509\n", 818 | "Epoch 53/100\n", 819 | "2280/2280 [==============================] - 23s 10ms/step - loss: 0.0476 - val_loss: 0.0551\n", 820 | "Epoch 54/100\n", 821 | "2280/2280 [==============================] - 21s 9ms/step - loss: 0.0469 - val_loss: 0.0658\n", 822 | "Epoch 55/100\n", 823 | "2280/2280 [==============================] - 19s 8ms/step - loss: 0.0471 - val_loss: 0.0690\n", 824 | "Epoch 56/100\n", 825 | "2280/2280 [==============================] - 19s 8ms/step - loss: 0.0431 - val_loss: 0.0529\n", 826 | "Epoch 57/100\n", 827 | "2280/2280 [==============================] - 18s 8ms/step - loss: 0.0432 - val_loss: 0.0511\n", 828 | "Epoch 58/100\n", 829 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0455 - val_loss: 0.0473\n", 830 | "Epoch 59/100\n", 831 | "2280/2280 [==============================] - 18s 8ms/step - loss: 0.0402 - val_loss: 0.0533\n", 832 | "Epoch 60/100\n", 833 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0424 - val_loss: 0.0656\n", 834 | "Epoch 61/100\n", 835 | "2280/2280 [==============================] - 18s 8ms/step - loss: 0.0400 - val_loss: 0.0551\n", 836 | "Epoch 62/100\n", 837 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0441 - val_loss: 0.0562\n", 838 | "Epoch 63/100\n", 839 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0426 - val_loss: 0.0422\n", 840 | "Epoch 64/100\n", 841 | "2280/2280 [==============================] - 17s 8ms/step - loss: 0.0395 - val_loss: 0.0451\n", 842 | "Epoch 65/100\n", 843 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0390 - val_loss: 0.0337\n", 844 | "Epoch 66/100\n", 845 | "2280/2280 [==============================] - 18s 8ms/step - loss: 0.0374 - val_loss: 0.0317\n", 846 | "Epoch 67/100\n", 847 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0355 - val_loss: 0.0411\n", 848 | "Epoch 68/100\n", 849 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0374 - val_loss: 0.0465\n", 850 | "Epoch 69/100\n", 851 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0355 - val_loss: 0.0430\n", 852 | "Epoch 70/100\n", 853 | "2280/2280 [==============================] - 19s 8ms/step - loss: 0.0340 - val_loss: 0.0449\n", 854 | "Epoch 71/100\n", 855 | "2280/2280 [==============================] - 19s 8ms/step - loss: 0.0335 - val_loss: 0.0456\n", 856 | "Epoch 72/100\n", 857 | "2280/2280 [==============================] - 17s 8ms/step - loss: 0.0346 - val_loss: 0.0467\n", 858 | "Epoch 73/100\n", 859 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0315 - val_loss: 0.0404\n", 860 | "Epoch 74/100\n", 861 | "2280/2280 [==============================] - 17s 8ms/step - loss: 0.0303 - val_loss: 0.0368\n", 862 | "Epoch 75/100\n", 863 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0309 - val_loss: 0.0476\n", 864 | "Epoch 76/100\n", 865 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0297 - val_loss: 0.0603\n", 866 | "Epoch 77/100\n", 867 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0304 - val_loss: 0.0597\n", 868 | "Epoch 78/100\n", 869 | "2280/2280 [==============================] - 23s 10ms/step - loss: 0.0294 - val_loss: 0.0554\n", 870 | "Epoch 79/100\n", 871 | "2280/2280 [==============================] - 18s 8ms/step - loss: 0.0276 - val_loss: 0.0523\n", 872 | "Epoch 80/100\n", 873 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0283 - val_loss: 0.0485\n", 874 | "Epoch 81/100\n", 875 | "2280/2280 [==============================] - 17s 8ms/step - loss: 0.0265 - val_loss: 0.0537\n", 876 | "Epoch 82/100\n", 877 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0302 - val_loss: 0.0494\n", 878 | "Epoch 83/100\n", 879 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0268 - val_loss: 0.0540\n", 880 | "Epoch 84/100\n", 881 | "2280/2280 [==============================] - 17s 8ms/step - loss: 0.0305 - val_loss: 0.0585\n", 882 | "Epoch 85/100\n", 883 | "2280/2280 [==============================] - 17s 8ms/step - loss: 0.0323 - val_loss: 0.0436\n", 884 | "Epoch 86/100\n", 885 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0308 - val_loss: 0.0405\n", 886 | "Epoch 87/100\n", 887 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0272 - val_loss: 0.0410\n", 888 | "Epoch 88/100\n", 889 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0261 - val_loss: 0.0362\n", 890 | "Epoch 89/100\n", 891 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0265 - val_loss: 0.0387\n", 892 | "Epoch 90/100\n", 893 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0266 - val_loss: 0.0465\n", 894 | "Epoch 91/100\n", 895 | "2280/2280 [==============================] - 17s 8ms/step - loss: 0.0252 - val_loss: 0.0455\n", 896 | "Epoch 92/100\n", 897 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0235 - val_loss: 0.0438\n", 898 | "Epoch 93/100\n", 899 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0237 - val_loss: 0.0471\n", 900 | "Epoch 94/100\n", 901 | "2280/2280 [==============================] - 17s 8ms/step - loss: 0.0259 - val_loss: 0.0487\n", 902 | "Epoch 95/100\n", 903 | "2280/2280 [==============================] - 16s 7ms/step - loss: 0.0311 - val_loss: 0.0455\n", 904 | "Epoch 96/100\n", 905 | "2280/2280 [==============================] - 17s 8ms/step - loss: 0.0289 - val_loss: 0.0405\n", 906 | "Epoch 97/100\n", 907 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0269 - val_loss: 0.0474\n", 908 | "Epoch 98/100\n", 909 | "2280/2280 [==============================] - 18s 8ms/step - loss: 0.0267 - val_loss: 0.0496\n", 910 | "Epoch 99/100\n", 911 | "2280/2280 [==============================] - 17s 8ms/step - loss: 0.0244 - val_loss: 0.0459\n", 912 | "Epoch 100/100\n", 913 | "2280/2280 [==============================] - 17s 7ms/step - loss: 0.0237 - val_loss: 0.0422\n", 914 | "Training time 2099 seconds\n" 915 | ] 916 | } 917 | ], 918 | "source": [ 919 | "model, training_time = fit_model(model, X_train, Y_train, 1024, 100, .05)\n", 920 | "\n", 921 | "#Print the training time\n", 922 | "print \"Training time\", training_time, \"seconds\"" 923 | ] 924 | }, 925 | { 926 | "cell_type": "markdown", 927 | "metadata": {}, 928 | "source": [ 929 | "## Testing the Model" 930 | ] 931 | }, 932 | { 933 | "cell_type": "code", 934 | "execution_count": 33, 935 | "metadata": {}, 936 | "outputs": [ 937 | { 938 | "data": { 939 | "image/png": "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\nAABJRU5ErkJggg==\n", 940 | "text/plain": [ 941 | "" 942 | ] 943 | }, 944 | "metadata": {}, 945 | "output_type": "display_data" 946 | } 947 | ], 948 | "source": [ 949 | "y_predict, real_y_test, real_y_predict, fig1 = test_model(model, X_test, Y_test, unnormalized_bases)\n", 950 | "\n", 951 | "#Show the plot\n", 952 | "plt.show(fig1)" 953 | ] 954 | }, 955 | { 956 | "cell_type": "markdown", 957 | "metadata": {}, 958 | "source": [ 959 | "## Plotting Percent Change" 960 | ] 961 | }, 962 | { 963 | "cell_type": "code", 964 | "execution_count": 34, 965 | "metadata": {}, 966 | "outputs": [ 967 | { 968 | "data": { 969 | "image/png": "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\nQAAAAABJRU5ErkJggg==\n", 970 | "text/plain": [ 971 | "" 972 | ] 973 | }, 974 | "metadata": {}, 975 | "output_type": "display_data" 976 | } 977 | ], 978 | "source": [ 979 | "Y_daybefore, Y_test, delta_predict, delta_real, fig2 = price_change(Y_daybefore, Y_test, y_predict)\n", 980 | "\n", 981 | "#Show the plot\n", 982 | "plt.show(fig2)" 983 | ] 984 | }, 985 | { 986 | "cell_type": "markdown", 987 | "metadata": {}, 988 | "source": [ 989 | "## Getting Binary Version of Percent Change" 990 | ] 991 | }, 992 | { 993 | "cell_type": "code", 994 | "execution_count": 35, 995 | "metadata": {}, 996 | "outputs": [ 997 | { 998 | "name": "stdout", 999 | "output_type": "stream", 1000 | "text": [ 1001 | "(267, 1)\n", 1002 | "(267, 1)\n" 1003 | ] 1004 | } 1005 | ], 1006 | "source": [ 1007 | "delta_predict_1_0, delta_real_1_0 = binary_price(delta_predict, delta_real)\n", 1008 | "\n", 1009 | "print delta_predict_1_0.shape\n", 1010 | "print delta_real_1_0.shape" 1011 | ] 1012 | }, 1013 | { 1014 | "cell_type": "markdown", 1015 | "metadata": {}, 1016 | "source": [ 1017 | "## Comparing Predictions and True Data" 1018 | ] 1019 | }, 1020 | { 1021 | "cell_type": "code", 1022 | "execution_count": 36, 1023 | "metadata": {}, 1024 | "outputs": [ 1025 | { 1026 | "name": "stdout", 1027 | "output_type": "stream", 1028 | "text": [ 1029 | "True positives: 93\n", 1030 | "False positives: 57\n", 1031 | "True negatives: 42\n", 1032 | "False negatives: 75\n" 1033 | ] 1034 | } 1035 | ], 1036 | "source": [ 1037 | "true_pos, false_pos, true_neg, false_neg = find_positives_negatives(delta_predict_1_0, delta_real_1_0)\n", 1038 | "print \"True positives:\", true_pos\n", 1039 | "print \"False positives:\", false_pos\n", 1040 | "print \"True negatives:\", true_neg\n", 1041 | "print \"False negatives:\", false_neg" 1042 | ] 1043 | }, 1044 | { 1045 | "cell_type": "markdown", 1046 | "metadata": {}, 1047 | "source": [ 1048 | "## Getting the Statistics" 1049 | ] 1050 | }, 1051 | { 1052 | "cell_type": "code", 1053 | "execution_count": 42, 1054 | "metadata": { 1055 | "scrolled": false 1056 | }, 1057 | "outputs": [ 1058 | { 1059 | "name": "stdout", 1060 | "output_type": "stream", 1061 | "text": [ 1062 | "Precision: 0.62\n", 1063 | "Recall: 0.553571428571\n", 1064 | "F1 score: 0.584905660377\n", 1065 | "Mean Squared Error: 0.0430756924477\n", 1066 | "0.584905660377\n" 1067 | ] 1068 | } 1069 | ], 1070 | "source": [ 1071 | "precision, recall, F1, MSE = calculate_statistics(true_pos, false_pos, true_neg, false_neg, y_predict, Y_test)\n", 1072 | "print \"Precision:\", precision\n", 1073 | "print \"Recall:\", recall\n", 1074 | "print \"F1 score:\", F1\n", 1075 | "print \"Mean Squared Error:\", MSE" 1076 | ] 1077 | } 1078 | ], 1079 | "metadata": { 1080 | "kernelspec": { 1081 | "display_name": "Python 3", 1082 | "language": "python", 1083 | "name": "python3" 1084 | }, 1085 | "language_info": { 1086 | "codemirror_mode": { 1087 | "name": "ipython", 1088 | "version": 3 1089 | }, 1090 | "file_extension": ".py", 1091 | "mimetype": "text/x-python", 1092 | "name": "python", 1093 | "nbconvert_exporter": "python", 1094 | "pygments_lexer": "ipython3", 1095 | "version": "3.6.3" 1096 | } 1097 | }, 1098 | "nbformat": 4, 1099 | "nbformat_minor": 2 1100 | } 1101 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ethereum_future 2 | This is the Code for "Ethereum Future Prices" by Siraj Raval on Youtube 3 | 4 | 5 | This is the code for [this](https://youtu.be/G5Mx7yYdEhE) video on Youtube by Siraj Raval on predicting cryptocurrency prices. 6 | 7 | 8 | Download [juypter](http://jupyter.org/) and run it via 'jupyter notebook' in terminal 9 | 10 | --------------------------------------------------------------------------------