From 248bd0d328d54b1a042c35763b3db42c2326a939 Mon Sep 17 00:00:00 2001 From: Rijul Dahiya Date: Fri, 15 Oct 2021 15:01:09 +0530 Subject: [PATCH 1/3] added ml model for bitcoin price prediction --- Projects/.DS_Store | Bin 0 -> 6148 bytes Projects/Bitcoin Price Prediction/README.md | 19 + .../bitcoinprediction.ipynb | 1814 +++++++++++++++++ .../credit-card-fraud-detection/.DS_Store | Bin 0 -> 6148 bytes 4 files changed, 1833 insertions(+) create mode 100644 Projects/.DS_Store create mode 100644 Projects/Bitcoin Price Prediction/README.md create mode 100644 Projects/Bitcoin Price Prediction/bitcoinprediction.ipynb create mode 100644 Projects/credit-card-fraud-detection/.DS_Store diff --git a/Projects/.DS_Store b/Projects/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b06530b005c79dd05eb19ee63770e40809524e9e GIT binary patch literal 6148 zcmeHKQAz_b5S`I}EQrw0ewAFIH;BvnFZ2SXt!SZZO40uuz#DiAPat?P-(;p`mo625 zL}Uh%H%VqDvkx}O5E0ie>lx9Qh$=Ke7G*$WdT{B&j7LB&F%oU)i2~ixejw0aoRZwH zsYc$I^so&VV!E41CJ~?rf3jO3`~~z!`7`jtt285YPmpVOA_h2f9)M0Oc871iI7`;u8#` zVOGQngw++Ou52X+t2^d{*+s*wsP4p8e6a0&C|qwH=y`8>I61KI*jMC`IC5a_)}00wf7Ov<9J2hm{{ X4YQ&|k@?~d^oKwp#5-r;7Z~^g=v6eG literal 0 HcmV?d00001 diff --git a/Projects/Bitcoin Price Prediction/README.md b/Projects/Bitcoin Price Prediction/README.md new file mode 100644 index 0000000..da22279 --- /dev/null +++ b/Projects/Bitcoin Price Prediction/README.md @@ -0,0 +1,19 @@ +# Predict bitcoin price + +* The data collected from the CSV files for select bitcoin exchanges for the time period of Jan 2012 to December March 2021, with minute to minute updates of OHLC (Open, High, Low, Close), Volume in BTC and indicated currency, and weighted bitcoin price. Timestamps are in Unix time. Timestamps without any trades or activity have their data fields filled with NaNs. If a timestamp is missing, or if there are jumps, this may be because the exchange (or its API) was down, the exchange (or its API) did not exist, or some other unforeseen technical error in data reporting or gathering. All effort has been made to deduplicate entries and verify the contents are correct and complete to the best of my ability, but obviously trust at your own risk. + + +* We created and trained a RNN model with one LSTM layer and one Dense Layer + + +* We find the root mean square error of our predicted values and consider this as the prediction metric + + +* We did the train test split using the train_test_split method which takes the input, output values as well as test_size + + +* The data is first imported from the dataset. We removed all the columns with missing values or the wrong timestamp. In addition to that, we also removed all the values before 2017 because the plot before 2017 is significantly different from the plot after 2017. + + +# Download the dataset +[Link to the dataset](http://google.com) diff --git a/Projects/Bitcoin Price Prediction/bitcoinprediction.ipynb b/Projects/Bitcoin Price Prediction/bitcoinprediction.ipynb new file mode 100644 index 0000000..073c320 --- /dev/null +++ b/Projects/Bitcoin Price Prediction/bitcoinprediction.ipynb @@ -0,0 +1,1814 @@ +{ + "nbformat": 4, + "nbformat_minor": 5, + "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.7.10" + }, + "papermill": { + "default_parameters": {}, + "duration": 191.168888, + "end_time": "2021-07-30T22:41:47.939370", + "environment_variables": {}, + "exception": null, + "input_path": "__notebook__.ipynb", + "output_path": "__notebook__.ipynb", + "parameters": {}, + "start_time": "2021-07-30T22:38:36.770482", + "version": "2.3.3" + }, + "colab": { + "name": "bitcoinprediction.ipynb", + "provenance": [] + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "da83e24f", + "papermill": { + "duration": 0.040701, + "end_time": "2021-07-30T22:38:46.185827", + "exception": false, + "start_time": "2021-07-30T22:38:46.145126", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## **1. Data Preprocessing and Data Cleaning**" + ], + "id": "da83e24f" + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:38:46.271474Z", + "iopub.status.busy": "2021-07-30T22:38:46.270290Z", + "iopub.status.idle": "2021-07-30T22:38:47.562012Z", + "shell.execute_reply": "2021-07-30T22:38:47.560647Z", + "shell.execute_reply.started": "2021-07-30T02:24:30.69371Z" + }, + "id": "b41c4938", + "papermill": { + "duration": 1.336202, + "end_time": "2021-07-30T22:38:47.562233", + "exception": false, + "start_time": "2021-07-30T22:38:46.226031", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "''' Importing all the libraries necessary for data preprocessing and cleaning '''\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.metrics import mean_squared_error\n", + "from math import sqrt\n", + "from pandas.plotting import autocorrelation_plot" + ], + "id": "b41c4938", + "execution_count": 287, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:38:47.663242Z", + "iopub.status.busy": "2021-07-30T22:38:47.662257Z", + "iopub.status.idle": "2021-07-30T22:38:55.832966Z", + "shell.execute_reply": "2021-07-30T22:38:55.831673Z", + "shell.execute_reply.started": "2021-07-30T02:29:51.43422Z" + }, + "id": "adcd9a2f", + "papermill": { + "duration": 8.223482, + "end_time": "2021-07-30T22:38:55.833199", + "exception": false, + "start_time": "2021-07-30T22:38:47.609717", + "status": "completed" + }, + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "outputId": "f2b51085-0ac2-4e4d-8c63-912b029af76b" + }, + "source": [ + "''' Read the dataset into a dataframe ''' \n", + "\n", + "df = pd.read_csv('bitcoin.csv')\n", + "df.head()" + ], + "id": "adcd9a2f", + "execution_count": 289, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
TimestampOpenHighLowCloseVolume_(BTC)Volume_(Currency)Weighted_Price
013253179204.394.394.394.390.4555812.04.39
11325317980NaNNaNNaNNaNNaNNaNNaN
21325318040NaNNaNNaNNaNNaNNaNNaN
31325318100NaNNaNNaNNaNNaNNaNNaN
41325318160NaNNaNNaNNaNNaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " Timestamp Open High ... Volume_(BTC) Volume_(Currency) Weighted_Price\n", + "0 1325317920 4.39 4.39 ... 0.455581 2.0 4.39\n", + "1 1325317980 NaN NaN ... NaN NaN NaN\n", + "2 1325318040 NaN NaN ... NaN NaN NaN\n", + "3 1325318100 NaN NaN ... NaN NaN NaN\n", + "4 1325318160 NaN NaN ... NaN NaN NaN\n", + "\n", + "[5 rows x 8 columns]" + ] + }, + "metadata": {}, + "execution_count": 289 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:38:55.928396Z", + "iopub.status.busy": "2021-07-30T22:38:55.927651Z", + "iopub.status.idle": "2021-07-30T22:38:56.375979Z", + "shell.execute_reply": "2021-07-30T22:38:56.374731Z", + "shell.execute_reply.started": "2021-07-30T02:30:01.918387Z" + }, + "id": "7edf3cf6", + "papermill": { + "duration": 0.499824, + "end_time": "2021-07-30T22:38:56.376184", + "exception": false, + "start_time": "2021-07-30T22:38:55.876360", + "status": "completed" + }, + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "outputId": "91da9d84-5dba-417f-b62e-5bd8d5d04a2a" + }, + "source": [ + "'''The data is first imported from the dataset. \n", + "We removed all the columns with missing values or the wrong timestamp. \n", + "In addition to that, we also removed all the values before 2017 \n", + "because the plot before 2017 is significantly different from the plot after 2017.'''\n", + "\n", + "\n", + "df.Timestamp = pd.to_datetime(df.Timestamp, unit='s') # Convert the timestmp into datetime64 format\n", + "df.index = df.Timestamp # Set the index to datetime\n", + "df = df.resample('D').mean() # Resample the data to the average daily value of each column. This removes high frequencies\n", + "df = df.dropna() # Remove/Drop all the missing values \n", + "\n", + "df.head()" + ], + "id": "7edf3cf6", + "execution_count": 290, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
OpenHighLowCloseVolume_(BTC)Volume_(Currency)Weighted_Price
Timestamp
2011-12-314.4650004.4825004.4650004.48250023.829470106.3300844.471603
2012-01-014.8066674.8066674.8066674.8066677.20066735.2597204.806667
2012-01-025.0000005.0000005.0000005.00000019.04800095.2400005.000000
2012-01-035.2525005.2525005.2525005.25250011.00466058.1006515.252500
2012-01-045.2000005.2233335.2000005.22333311.91480763.1195775.208159
\n", + "
" + ], + "text/plain": [ + " Open High ... Volume_(Currency) Weighted_Price\n", + "Timestamp ... \n", + "2011-12-31 4.465000 4.482500 ... 106.330084 4.471603\n", + "2012-01-01 4.806667 4.806667 ... 35.259720 4.806667\n", + "2012-01-02 5.000000 5.000000 ... 95.240000 5.000000\n", + "2012-01-03 5.252500 5.252500 ... 58.100651 5.252500\n", + "2012-01-04 5.200000 5.223333 ... 63.119577 5.208159\n", + "\n", + "[5 rows x 7 columns]" + ] + }, + "metadata": {}, + "execution_count": 290 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:38:56.492258Z", + "iopub.status.busy": "2021-07-30T22:38:56.491449Z", + "iopub.status.idle": "2021-07-30T22:38:56.495614Z", + "shell.execute_reply": "2021-07-30T22:38:56.496159Z", + "shell.execute_reply.started": "2021-07-30T02:30:05.819188Z" + }, + "id": "15e2234e", + "papermill": { + "duration": 0.062791, + "end_time": "2021-07-30T22:38:56.496377", + "exception": false, + "start_time": "2021-07-30T22:38:56.433586", + "status": "completed" + }, + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2f448dae-3484-4b7d-ae3c-3c423b11d0c3" + }, + "source": [ + "print(df.shape) # Print the shape of the new data" + ], + "id": "15e2234e", + "execution_count": 291, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(3376, 7)\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:38:56.585199Z", + "iopub.status.busy": "2021-07-30T22:38:56.584347Z", + "iopub.status.idle": "2021-07-30T22:38:56.901306Z", + "shell.execute_reply": "2021-07-30T22:38:56.900125Z", + "shell.execute_reply.started": "2021-07-30T02:30:11.621227Z" + }, + "id": "ec03e3d4", + "papermill": { + "duration": 0.363737, + "end_time": "2021-07-30T22:38:56.901472", + "exception": false, + "start_time": "2021-07-30T22:38:56.537735", + "status": "completed" + }, + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/", + "height": 383 + }, + "outputId": "c41e745a-cef7-4f08-acfd-8535ebb27cb8" + }, + "source": [ + "'''By plotting the graph we observe that the graph after 2017 is significantly\n", + " different from the graph before 2017 so we remove all the values before it '''\n", + "\n", + "\n", + "df.Weighted_Price.plot(title = \"Bitcoin Price\", figsize=(10,6)) # Plot the price vs year graph\n", + "plt.xlabel('Year')\n", + "plt.ylabel('US Dollars')\n", + "plt.show()" + ], + "id": "ec03e3d4", + "execution_count": 292, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:38:57.018807Z", + "iopub.status.busy": "2021-07-30T22:38:57.017428Z", + "iopub.status.idle": "2021-07-30T22:38:57.349281Z", + "shell.execute_reply": "2021-07-30T22:38:57.348680Z", + "shell.execute_reply.started": "2021-07-30T02:30:17.997536Z" + }, + "id": "70ce3c82", + "papermill": { + "duration": 0.405045, + "end_time": "2021-07-30T22:38:57.349453", + "exception": false, + "start_time": "2021-07-30T22:38:56.944408", + "status": "completed" + }, + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/", + "height": 283 + }, + "outputId": "0da2cb82-ec67-470d-d6ea-1f200d0270e4" + }, + "source": [ + "''' To check if there are a large number of gaps in the time series '''\n", + "\n", + "autocorrelation_plot(df) # To draw an autocorrelation plot\n", + "plt.show()" + ], + "id": "70ce3c82", + "execution_count": 293, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEKCAYAAAA8QgPpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deZwcdZ3/8dene+5MJpNzcgpBwikYYLgRJhwhgooHIi6ueG1clZX1WIVFBVlY44mr+BOisKCigQXUCJGbgMoZJCEEyEESTEJCrpkkc093f35/VM2k5+7pObp75v18POoxVd+q6vp8pnvm03V9y9wdERGRvopkOgAREclNKiAiIpIWFRAREUmLCoiIiKRFBURERNKiAiIiImnJaAExs1vNbLuZvdzNfDOzn5jZOjN7ycyOTZp3qZmtDYdLhy5qERGBzO+B3AbM62H+u4FZ4TAf+DmAmY0DrgZOBE4ArjazsYMaqYiItJPRAuLuTwK7e1jkAuBXHngGKDezKcC5wMPuvtvdq4GH6bkQiYjIAMvLdAC9mAZsSpreHLZ1196Jmc0n2HuhuLj4uBkzZgxOpEMkkUgQiWR6x7H/lEf2GA45wPDII1tzWLNmzU53n9ixPdsLSL+5+0JgIUBlZaUvW7YswxH1z9KlS6mqqsp0GP2mPLLHcMgBhkce2ZqDmb3RVXv2lbr2tgDJuwzTw7bu2kVEZIhkewFZDHw8vBrrJGCPu28FHgTmmtnY8OT53LBNRESGSEYPYZnZ74AqYIKZbSa4siofwN1vApYA5wHrgHrgk+G83Wb2X8Dz4Utd6+49nYwXEZEBltEC4u4f7WW+A1/oZt6twK2DEZeIiPQu2w9hiYhIllIBERGRtKiAiIhIWlRAREQkLSogIiKSFhUQERFJiwqIiIikZUQVkMaWeKZDEBEZNkZUAdld15zpEEREho0RVUA80wGIiAwjI6uAqIKIiAyYEVZAVEFERAbKyCogmQ5ARGQYGVkFRBVERGTAjLACogoiIjJQRlYByXQAIiLDyMgqIKogIiIDZkQVkLrmGDv2NWU6DBGRYSGjBcTM5pnZajNbZ2ZXdDH/BjNbHg5rzKwmaV48ad7iVLf58pY9AxW+iMiIlrFnoptZFPgZcA6wGXjezBa7+yuty7j7l5KW/zfgmKSXaHD32X3dbjRi6QctIiJtMrkHcgKwzt3Xu3szsAi4oIflPwr8rr8bXfT8P/r7EiIiQmYLyDRgU9L05rCtEzM7AJgJPJbUXGRmy8zsGTN7f6obXbJyWzqxiohIBxk7hNVHFwN3u3tyf+wHuPsWMzsIeMzMVrr76x1XNLP5wHyAgskHA/CHBx6jvCg3rx+ora1l6dKlmQ6j35RH9hgOOcDwyCPXcshkAdkCzEianh62deVi4AvJDe6+Jfy53syWEpwf6VRA3H0hsBCgcMosB7huWZxl3zizn+FnxtKlS6mqqsp0GP2mPLLHcMgBhkceuZZDJr+GPw/MMrOZZlZAUCQ6XU1lZocBY4Gnk9rGmllhOD4BOBV4peO63dlZq+eCiIj0V8b2QNw9ZmaXAQ8CUeBWd19lZtcCy9y9tZhcDCzy9v2QHA7cbGYJgiK4IPnqLRERGXwZPQfi7kuAJR3avtVh+pou1nsKOKqv25s8pqivq4iISDdy80xymiaWFpIfNd79jsmZDkVEJOeNqAIC0BJ3/vzyNrbuach0KCIiOW3EFZBW97+0NdMhiIjktBFbQKaMKc50CCIiOW3EFZDbPnk8AF/47d+5+YlOt42IiEiKRlwBOXxKWdv4d/78WgYjERHJbSOugBQXRDMdgojIsDDiCkhZUX6mQxARGRZGXAEBuOa9R2Q6BBGRnDciC0hjLNE2XtsUy2AkIiK5a0QWkERSt1rfe0An0kVE0jEiC8jHTz6wbVwPuBURSc+ILCClhXk8fWXwPJAZ40oyHI2ISG4akQUEYPyoQgAamuO9LCkiIl0ZsQWkIC9CftSob1EBERFJx4gtIADF+VH2NrRkOgwRkZw0ogvI3sYYdzz7D5qTLusVEZHUjOgC0mp3nZ6RLiLSVyO6gHzxrFkAfP/B1RmOREQk92S0gJjZPDNbbWbrzOyKLuZ/wsx2mNnycPhM0rxLzWxtOFyazvbfNWsCAPf8fXPaOYiIjFR5mdqwmUWBnwHnAJuB581ssbu/0mHRO939sg7rjgOuBioBB14I163uSwyHTBqddvwiIiNdJvdATgDWuft6d28GFgEXpLjuucDD7r47LBoPA/P6GsCYknwuPG46U8cU9XVVEZERL2N7IMA0YFPS9GbgxC6W+5CZnQ6sAb7k7pu6WXdaVxsxs/nAfICKigqWLl3abv6enU28uSfGI489Tl4k+zs2qa2t7ZRDLlIe2WM45ADDI49cyyGTBSQVfwJ+5+5NZvZZ4HbgzL68gLsvBBYCVFZWelVVVbv5v1z3LLCTF1um8B/nHjYgQQ+mpUuX0jGHXKQ8ssdwyAGGRx65lkMmD2FtAWYkTU8P29q4+y53bwonfwkcl+q6qfravEMBiOtWEBGRPslkAXkemGVmM82sALgYWJy8gJlNSZp8H/BqOP4gMNfMxprZWGBu2NZnR00bA8DKLTXprC4iMmJl7BCWu8fM7DKCf/xR4FZ3X2Vm1wLL3H0x8EUzex8QA3YDnwjX3W1m/0VQhACudffd6cRhFpz3+Nu6XWzcWceBE0b1Jy0RkREjo+dA3H0JsKRD27eSxq8Eruxm3VuBWwcyHj2dUEQkdSP6TvRWBXnBr6Eppp55RURSpQIC3HJpJQC1TSogIiKpUgEBJo0ObiS89NbnMhyJiEjuUAEBivL1axAR6Sv95wSmlRdnOgQRkZyjAgLkRSN85rSZlBREMx2KiEjOUAEJjSrMo745zmOvvZXpUEREcoIKSKj1HpBP3bYsw5GIiOQGFZDQ6YdMbBtvUcdYIiK9UgEJnZFUQB5+RYexRER6owKSpPVxIGvfqs1sICIiOUAFJMlv/+UkAG54ZA17GloyHI2ISHZTAUly2OT9z0j/0M+fymAkIiLZr9cCYmanmtnDZrbGzNab2QYzWz8UwQ210UX5bePrttdy2W//nsFoRESyWyp7ILcAPwJOA44HKsOfw040Ytz0sWPbpu97aauuyBIR6UYqBWSPu//Z3beHj5jd5e67Bj2yDDn3yMntDmVt29OYwWhERLJXKgXkcTP7vpmdbGbHtg6DHlmGmBm/+cyJbUXkXd97nJr65gxHNXL96OE1XHDjXzMdhoh0IZUCciLBYav/Bn4YDj8YzKAybUJpIVedf3jb9OxrH6axRc8KyYSfPLqWFZv3sODPr7FjX1OmwxGRJL0WEHef08Vw5kBs3MzmmdlqM1tnZld0Mf/LZvaKmb1kZo+a2QFJ8+JmtjwcFg9EPMlOefuEdtOHffMBDrzi/qz8J/aLJ9dz4BX3s7tueO0pJT9i+KYnXuf46x/JYDQi0lEqV2GNMbMfmdmycPihmY3p74bNLAr8DHg3cATwUTM7osNiLwKV7n40cDfwvaR5De4+Oxze1994OopGjL98bU6n9s/95gVueuJ1fvvsP9ra6ptj3LVsE2/sqhvoMHr1l7U7uH7JqwBUff9x3H3IYxhIjS1xWuIJVmyq4R1XP9hpvh47LJI98lJY5lbgZeCicPqfgf8FPtjPbZ8ArHP39QBmtgi4AHildQF3fzxp+WeAj/Vzm30yY1wJiy87lffd+Le2tmVvVLPsjWoA/vP3K5k+tpjN1Q1t8zcuOH/I4ntuw27++Zb9T1Hc2xjjlr9u4DPvOmjIYhhoh33zAY6aNoaVW/Z0OX9fY4zCUnW7L5INrLdvrGa23N1n99bW5w2bXQjMc/fPhNP/DJzo7pd1s/yNwDZ3vy6cjgHLgRiwwN3/0M1684H5ABUVFcctWrSoT3HGEs6NLzbx0s44iRS/3M8YHWHTvv2X/37jpCIOLh+Yf3q1tbWUlpYC8IkHut/jOXFylE8fVUhB1AZkuwMtOY9WDTHnc4/Ud1r28HERXt29//f546piyouy4x7YrvLINcMhBxgeeWRrDnPmzHnB3Ss7tqeyB9JgZqe5+18huLEQaOhlnQFlZh8jOJF/RlLzAe6+xcwOAh4zs5Xu/nrHdd19IbAQoLKy0quqqvq8/bPDMz4Ln3yd/17yWq/LJxcPgOueaeSiyul878J39nnbHf3+gcc6FY4PHTudhDu/f3FLW9uz2+KcW3kgnzptZr+3ORiWLl1K8nvR2BLnpO882mm5V649l5KCPB5atY35v34BgF9vKOKez50yVKH2qGMeuWg45ADDI49cyyGVr3GfA35mZhvN7A3gRuBfB2DbW4AZSdPTw7Z2zOxs4Crgfe7edgbb3beEP9cDS4FjBiCmHs0//e2s+NZcNnznPG7/1Ant5l1y4tt6XPeuZZtZ9WbXh2X64ktLO9fuH170Tj5f9fZO7dfe90qntmx12DcfoKa+ff9jGxecT0lB8B2n6tBJbe0vvFHNn1a8OaTxiUhnqVyFtdzd3wkcDRzl7se4+4oB2PbzwCwzm2lmBcDFQLurqczsGOBmguKxPal9rJkVhuMTgFNJOncymMaU5GNmnHHIRF7+9rmsue7dbFxwPtd/4Ciev+rsdsu+c0Z5u+mPLnyGvY3pddL4Zk0D33+w897Pde9/BwCzKkbzl6/N4fyjprSbn+33sOxrbOHbf1rVru2a9x7BiqvntmsryIvw0JdOb5v+9zuXD0l8ItK9bg9hmdnH3P03ZvblDu0AuPuP+rNhd4+Z2WXAg0AUuNXdV5nZtcAyd18MfB8oBf4v3O4/wiuuDgduNrMEQRFc4O5D/nW7tLD9r2/i6ELWXPdunlm/q+0BVW/WNHDKgseA4CT30dc8xBfPPJgvzz00pW3sa2zh18+8wfceWN2u/fsXHs3uumY+dlLblc3MGFfCzy45lh+2xLnlrxv4/oOrmX3tw7z4zXMYO6qgP6kOmivvXcl9L21tm37sK2dw0MSujwEfUjGahf98HPN//QLxhNMcS1CQlx3nQkRGop7OgYwKf47uYt6AXCvq7kuAJR3avpU0fnanlYL2p4CjBiKGgVaQF2n3dMOp5cW89l/zOOybD7S1/eSxdTTGEnz6tJlUlBX1+Hrf/MPL/GF5+8M1K66ey5ji/G7WgKL8KOceWcH3HwyKzvVLXuUHH+7/+ZeB5O4sWbm1XfF49dp5FBf0fLHB3CMnt43f8ewbfPLU7DzHIzISdPv1zd1vDkcfcfdvJw9A57Od0q2i/Ch/+MKp7doWPrmeD/6/zl3GN8Xi3PjYWk777mM8tGpbp+Lx4UPyeywerQ6eNJoTDhwHwN0vbM66O+kffiPG5+/Y39vxo185o9fi0erKdx8GwLf/lDvneESGo1T2/3+aYpv0YPaMcjYuOJ/n/vOstrYtNQ0ceMX9vLZtL4mEs2l3Pe//2VP84KE1bK5uaLvqCGDlNXPZuOB8zj8o9UNRv/2XE9uKyCf+97lelh4aH77pKQ684n5++9r+czN/vvxdvL2bw1Zd+ewZ+y8YWL9DT48UyZSezoGcDJwCTOxwHqSM4JyFpGFSWRF3/+vJfPmuFfxjd3DPw7wf/6XHdZZ/65x2zypJVV40wkXHz+C5jbt5Zv1untuwmxNmjksr7v763XP/4Mp7V3Zq/8MXTuXwKWV9fr0bPvJOvnTnCi66+WmWfeOcgQhRRPqopz2QAoIT2HkE50Fah73AhYMf2vBVeeA4Hv9qVY/LnHXYJA6tGM1jXzmD8pL0T4C/f/ZUjj9wLAAX3fw0zbGhf77Jys17uiwel581i9kdrlRL1QXvnAbAztrsvspMZDjrdg/E3Z8AnjCz29z9jSGMaUSIRoyNC85nzVv7+I//W8GKzcE9IgdPKuWmjx3HwZMG5m7UvGiEuz57Mh+75Vn+tm4Xc36wlF98vJIjpvb+rb8lnqCmvoWJowvZvq+RK+5ZyWOvbed7Hzqai46fQXMsQXM8wY59TSzfVM208hLueWEzpxw8nrxIhLXb9/HjR9Z2et2ffvQYIttXc/45h6SdVyRiFOZFaIoluPP5f/CR43u+D0dEBl4qd6LXm9n3gSOBtkuGBqpH3pHukIrR/PGy0wZ1G2bGzz92HEdf8xBbaho47yd/4byjJnPDR2ZTmNf10cjvLHmVm5/s+snFX7vnJb52z0vdbu/OZZu6bL//i6dRVpTPjHElLF26pu+JdHDN+47kyntX8vV7VqqAiGRAKifR7wBeA2YC3wY2EtwEKDmkrCifX396/93zS1Zu49BvPNDu6ix3569rd3LQlfd3WzzS9fhXqzhy6hhmjCsZsNf86An7i0b1MOvKXiQXpLIHMt7dbzGzy5MOa6mA5KB3zQrunr/5idf56WPrANrdn9KbqWOK+NWnT+TsHz3Rrv2giaOY/66DmFpeTMKdu5Zt4ryjpnDrXzdw6yeO79c5nN5cdd7hXL/kVW564nWuPO/w3lcQkQGTSgFp7Xtjq5mdD7wJZOZSHum30sI8vjL3UA6eVMrli7rvDuSd08dw7+dPJRpp63mgrReCjQvOpykW7/bwV2u/Ve85euoAR9/ZJSe9jevDw20qICJDK5UCcl34AKmvENz/UQZ8aVCjkkF3wexpbKlpaNdFSmlhHj/+yGzOPqKi0/KtxaNVd8VjqJUU5HHCgeN4buNuXnhjN8cdoO82IkOl1wLi7veFo3uAzo/ok5z1+aqD+XzVwZkOo9+u+8A7mHvDk3zo50+z8pq5ad0zIyJ919ONhD+lhz6v3P2LgxKRSB8dUjGaDx07nXv+vpmjrnlIRURkiPR0FdYy4IUeBpGs8YMPH902ftQ1D6Xdbb6IpK6nGwlvT542sxJ37/y8UZEsYGa8cu25HPGtBwE4+pqH+O2/nMgpb5+Q4chEhq9e7wMxs5PN7BWCe0Ews3ea2f8b9MhE+qikII9l39j/BIB/+sWzHHjF/bzwxu4MRiUyfKVyFdaPgXMJnxbo7ivM7PSeV8lOu3bt4rbbbmvXduSRR3L88cfT0tLCHXfc0Wmd2bNnM3v2bOrr67nrrrs6za+srOQd73gHe/bs4fe//32n+SeffDKHHnooO3fu5L777us0//TTT+eggw5i27ZtPPBA53syzjrrLGbMmMGmTZt49NFHqampYePGjW3z582bx+TJk1m/fj1PPvlkp/Xf8573MGHCBFavXs3TTz/daf4HPvABxowZw8svv8yyZcs6zb/ooosoKSlh+fLlLF/e+bLfSy65hPz8fJ5//nlWrVrVaf4nPvEJAJ566inWrNl/93lNTQ1btmzhkksuAeCJJ55gw4YN7dYtKSnhoosuAuCRRx5h8+bN7eaXlZXxwQ9+EIAHHniAbdu2AXDNYfDQ9lE8tTu4afFDPw/yPntiLSeNayAvvKBs8uTJzJs3D4B7772XvXv3tnv96dOnc/bZQUG66667qK9vvwM+c+b+Z5HccccdtLS0P2x2yCGHcMopwbPbO37uIHs+e7W1tV3G1/Gz11G2ffY6/m1099kDyM/PH5TPXqvx48fz3ve+F4A//elP7Nq1q9387j57rTmk8tk744wzgMx89lqZe8/PhjKzZ939RDN70d2PCdtWhI+5zSnTp0/3yy67rF3bqFGjGD16NO7OW2+91Wmd0tJSSktLSSQSbN++vdP80aNHM2rUKGKxGDt37uw0v6ysjJKSElpaWjp9iADKy8spKiqiubmZ3bs7f1MeO3YshYWFNDU1UV1dTSwWIy9vf90fN24cBQUFNDY2UlNT02n98ePHk5+fT319fad/kAATJkwgLy+Puro69u3b12n+pEmTiEQi1NbWUlvbuev0iooKzIx9+/ZRV1fXaf7kycEDoPbu3dvujyAWi5Gfn09FRXDJcE1NDY2Nje3WjUajTJwYPJyrurqapqamdvPz8vKYMCE4RLV7926am9vfjZ6fn8+G6DTu29b+mWjT8vZxQtFbzCiJM25ccNnvzp07icVi7ZYrLCxk7NigI8odO3YQj7d/pkpRUdCzT3l5OW+99RYd/5ZKSkooKwv6HOv4Dway57O3a9euTv+AoPNnr6Ns++x1/Nvo7rMHwSHPwf7sjR8/HqDL329BQUGXn73WHFL57JWXBx2RDsVn78orr3zB3Ss7LpdKAbkb+BFwI3AicDlQ6e4X97hiFpo5c6ZfffXVmQ6jX2pqato+OLlsqPPY1hjlnjfL2NHcfqf7iNGNfHjqPjrc5pKy4fB+DIccYHjkka05fPKTn0y7gEwA/gc4GzDgIeByd+/8laaPzGxe+NpR4JfuvqDD/ELgV8BxwC7gI+6+MZx3JfBpIA580d0f7G17lZWV3tWuci5ZunQpVVVVmQ6j3zKVRyLh3PviFr76fyva2iaXFVF16ETOOaKCOYdOIhJJvZoMh/djOOQAwyOPbM3BzLosID2eAzGzKPA/7n7JIAQUBX4GnANsBp43s8Xunvyc0k8D1e5+sJldDHwX+IiZHQFcTNBD8FTgETM7xN2z67mtknUiEePC46Zz4XHTqalv5j9/v5IlK7ex6PlNLHo+6EX4I5UzOOvwSZw2awIlBamcJhQZmXr863D3uJkdYGYF7j7Q3Z2eAKxz9/UAZrYIuABILiAXANeE43cDN1rQp8YFwCJ3bwI2mNm68PU6n6lLsnr16qys7n2Rrbu4fZVNeRxgEZpLJlEz/VQaR0/lzmWb9ndJn4gTbanDLYpHolgiTkn1WvIbqinat5n6resYWzYwz27JlGx6L/pjOOSRLTkkLErzqMk0jZ5CU+mUbpdL5evVeuBvZrYYaDtL6u4/6meM04DkB0dsJjjH0uUy7h4zsz3A+LD9mQ7rTutqI2Y2H5gPwYmtrk725ZJ4PJ7zOUAW5lG9m8Itr1EIJApG0TTzdOKlk/CCUhIFJUQadhGJt5AoLqd2/GGQFz4a5yjYV7eDaM1monU7yNv1OtF9b2GJ3LmRMeveizQ4ECss581pVcTKZ5C3ewPxMTPI3/YSsQmHEGmsIV42lUjdTvKqN5K3Yw3Rhs4XBmRaJt4LBxLF44iXTSU+ZhqxsQcQHzMNIkF5iNR3fxl8KgXk9XCIEDzSNqe4+0JgIegcSDbJ5TziCefFf1Tz/MZqHn1xLcVlh7N623S279t/pc7ksiLGlxZQWphHUX6UcaMKKC6IMrYkH3fIixh50QglBVEK86OU5EeZPKYomM6LMqG0gImjCzt1YpmKfY0tvLGrnkllhTTHEowuyic/asQSTjzujC7KIy+6/xawwXgvEglnV10z2/c1sn1fEzv2NrF1TyNv7WukoTlOUX6ERPh05aZYnF11zZgZxfkRppYXU1aUT2lhHnXNMfY1xqhrCq5S2tPQwu66ZvY2xnB3ttQ0MK28mK17Gqlr2F+0m0cHV2DFy6cDwe87nnDiZVNpmRL0WlBRVsghFaM5fdZEjj1gLMfMKO/T+a/B0Nf3IpFwmuMJWuIJWuJOSzxBc6zDdDxBSyyYbo7HqalvYVdtMzvrmthS3cALb1SzdU9wFVp+1Jg9vZzKA8Zy3AFjOeZtY4PP4U8/3uX2UzkHcshgnAMBtgAzkqanh21dLbPZzPKAMQQn01NZV2RQRCNG5YHjqDxwHIeziaqqYMd5c3U9KzbtYf2OWjbuqqe6vpnaxhjb9zWxbnsttU0xaptiGBBL9HzxCsDowjymjS2mvCTo12tMcT7xBOE/h+AfRV1znKaWOE2xBGbQHEuwq66ZeA+vnx81JpYWMrW8mPKSAmprGvnzzpcoLohS1xRjxrgSpowpYkJpIeNGFVBekk9ZUT4O1DfHyI9G2v6p1zS08NaeRjbuquONXfVsrq5nc3UDNQ0t3cZQVpRHQV6EaMRoaI6TH40wpiSf4vwozbEEf1m7k/rm/aczC/MiFBdEiSecSaODmCaXFbb9TgryIsyeUU5x/VucedJsaupbGF2UF7xucVCwj5xaFvx+4gmeXLOTN3bV8cqbe3lu427+sja4BHr8qAJOPXgCx76tnLLwdQuiERyoawrybYol2gbciSWCofXxzu5gFjz+oPX6pEjEiJoRjRgRM8yS30NvG2+JJ9i2o5Gb1jzdbTHY3xZMp/I56k5BNMKkskKOPWAsJx80ntkzyplVUdqnnrZTuQrrr8CZA30OJCwIa4CzCP75Pw/8k7uvSlrmC8BR7v6v4Un0D7r7RWZ2JPBbgvMeU4FHgVm9nUTXZbzZY6TnEQ//7JoTRsyhKRGhNhahIW64Q208wo6mPPaGbWA0xI2oOVEjHJyCiJNnTp4FhyIi5pTlJZhYGKcuFiE/4jQnjLhDS8Ioijq1sQj7YpHwtSM0xJwWj9KUMIqjTl08lQeVthfBGVsQpywvQXl+nNK8BKPzEpTmJSiNJhiVl6Aw4oyKekqXTCccGhNGYSTINxXpvBcJh72xCP+oz2dtXQHr6wr6lL8R/O5b35fkdsJpdwsOE3nwHjn7378oJL2nDokYBXnRtunk1+7xJykuZ1AcTTAq6hRGUnsvoPvLeDN2DiQ8p3EZ8CDBZby3uvsqM7sWWObui4FbgF+HJ8l3E1x5RbjcXQQn3GPAF1K5AqulpaXTTTWtN9R0d7NW6w018XicHTt2dJrf35u5xowZQ3Fxcbc3Erbe7NV6s1YsFmt301PrzVwNDQ3s2bOn0/r9vZlr4sSJRKPRbm/mar3Zq7cbCffs2UNDQ0NbeywWo6mpKStv5mqV6o2E0PXNXMXFxYwZMwbo+WauRCJB3c6tFAGtrzgOOCLdz14cqIe3d/XZa00hAmMmBp+9jr+bFjdqEwXkjxpDLFrEvqYY1XVNRIAICRwj3xKMG13C6MIo+bF6qNtFu6M/cRhfnvTZ272XFiD5E5TSZ89S/+x1/Nvo7rMH+28kjBhQt5tJjY1MisAppdDgecQjeYwZO564W/B309JIviWIkiBqTmFelIkTM3QjoUNRYc83EhYXFzOmrOvPXgvQMmoURf34v9cqo+dA3H0JsKRD27eSxhuBD3ez7vXA9X3ZXn5+ftuHqlW2dCfRl65Mkr9lZVt3Eh311JXJxIkTs7I7iVapdCfh7lRVVeV0Vyb33Xdfl19+eu/KZG5WffY6/m3kai2yuCAAAA9SSURBVFcm5eXlw6crk7YFzUoB3L3zV4EcoZPo2UN5ZI/hkAMMjzyyNYfubiRMpTfed5jZi8AqYJWZvRCegxARkREslbNFC4Evu/sB7n4AwbPRfzG4YYmISLZLpYCMcvfHWyfcfSkwatAiEhGRnJDSVVhm9k3g1+H0xwiuzBIRkREslT2QTwETgXuBe4AJYZuIiIxgve6BuHs18MUhiEVERHJIKldhPWxm5UnTY82s12dviIjI8JbKIawJ7t7WPWS4RzJp8EISEZFckEoBSZjZ21onzOwAgu5cRERkBEvlKqyrgL+a2RME3YO9i/D5GiIiMnKlchL9ATM7FjgpbPp3d+/ccY6IiIwoqT7w+RTg9KTpzj2ziYjIiJLKVVgLgMsJuk5/BbjczP57sAMTEZHslsoeyHnAbHdPAJjZ7cCLwH8OZmAiIpLdUn30VvJjvsYMRiAiIpJbUtkD+Q7wopk9TnAV1unAlYMalYiIZL1UrsL6nZktBY4Pm77u7p2fzykiIiNKKifRH3X3re6+OBy2mVnn51v2gZmNC7tIWRv+HNvFMrPN7GkzW2VmL5nZR5Lm3WZmG8xseTjM7k88IiLSd90WEDMrMrNxwISw/6tx4XAgMK2f270CeNTdZwGPhtMd1QMfd/cjgXnAj5P75AL+w91nh0PnByaLiMig6ukQ1meBfwemAn9Pat8L3NjP7V4AVIXjtwNLga8nL+Dua5LG3zSz7QTdytcgIiIZZ+49d2tlZv/m7j8d0I2a1bh7eThuQHXrdDfLn0BQaI5094SZ3QacDDQR7sG4e1M3684n7HqloqLiuEWLFg1kKkOutraW0tLSTIfRb8ojewyHHGB45JGtOcyZM+cFd6/s2J5KAfl4V+3u/qte1nsEmNzFrKuA25MLhplVu3un8yDhvCkEeyiXuvszSW3bgAKCZ7a/7u7X9pgIUFlZ6cuWLettsay2dOlSqqqqMh1GvymP7DEccoDhkUe25mBmXRaQVC7jPT5pvAg4i+CQVo8FxN3P7iGYt8xsirtvDYvB9m6WKwPuB65qLR7ha28NR5vM7H+Br6aQh4iIDKBULuP9t+Tp8ER2f48DLQYuBRaEP//YcQEzKwB+D/zK3e/uMK+1+BjwfuDlfsYjIiJ9lOqd6MnqgIP6ud0FwDlmthY4O5zGzCrN7JfhMhcR3LT4iS4u173DzFYCKwme0X5dP+MREZE+6nUPxMz+xP4HSEWBw4G7+rNRd99FcCisY/sy4DPh+G+A33Sz/pn92b6IiPRfKudAfpA0HiMoIh/pZlkRERkhUjkH8oSZHQP8E/BhYANwz2AHJiIi2a3bAmJmhwAfDYedwJ0El/3OGaLYREQki/W0B/Ia8BfgPe6+DsDMvjQkUYmISNbr6SqsDwJbgcfN7BdmdhZBd+4iIiLdFxB3/4O7XwwcBjxO0C/WJDP7uZnNHaoARUQkO/V6H4i717n7b939vcB0gsfZfr2X1UREZJjr042E7l7t7gvdvdM9HCIiMrKkcye6iIiICoiIiKRHBURERNKiAiIiImlRARERkbSogIiISFpUQEREJC0qICIikhYVEBERSYsKiIiIpCUjBcTMxpnZw2a2Nvw5tpvl4knPQ1+c1D7TzJ41s3VmdqeZFQxd9CIiApnbA7kCeNTdZwGPhtNdaXD32eHwvqT27wI3uPvBQDXw6cENV0REOspUAbkAuD0cvx14f6ormpkBZwJ3p7O+iIgMDHP3od+oWY27l4fjBlS3TndYLgYsB2LAAnf/g5lNAJ4J9z4wsxnAn939Hd1saz4wH6CiouK4RYsWDUpOQ6W2tpbS0tJMh9FvyiN7DIccYHjkka05zJkz5wV3r+zY3tMjbfvFzB4BJncx66rkCXd3M+uuih3g7lvM7CDgMTNbCezpSxzuvhBYCFBZWelVVVV9WT3rLF26lFzPAZRHNhkOOcDwyCPXchi0AuLuZ3c3z8zeMrMp7r7VzKYA27t5jS3hz/VmthQ4BrgHKDezPHePETzkasuAJyAiIj3K1DmQxcCl4filwB87LmBmY82sMByfAJwKvOLBMbfHgQt7Wl9ERAZXpgrIAuAcM1sLnB1OY2aVZvbLcJnDgWVmtoKgYCxw91fCeV8Hvmxm64DxwC1DGr2IiAzeIayeuPsuoNNjcd19GfCZcPwp4Khu1l8PnDCYMYqISM90J7qIiKRFBURERNKiAiIiImlRARERkbSogIiISFpUQEREJC0qICIikhYVEBERSYsKiIiIpEUFRERE0qICIiIiaVEBERGRtKiAiIhIWlRAREQkLSogIiKSFhUQERFJiwqIiIikRQVERETSkpECYmbjzOxhM1sb/hzbxTJzzGx50tBoZu8P591mZhuS5s0e+ixEREa2TO2BXAE86u6zgEfD6Xbc/XF3n+3us4EzgXrgoaRF/qN1vrsvH5KoRUSkTaYKyAXA7eH47cD7e1n+QuDP7l4/qFGJiEjKMlVAKtx9azi+DajoZfmLgd91aLvezF4ysxvMrHDAIxQRkR6Zuw/OC5s9AkzuYtZVwO3uXp60bLW7dzoPEs6bArwETHX3lqS2bUABsBB43d2v7Wb9+cB8gIqKiuMWLVqUflJZoLa2ltLS0kyH0W/KI3sMhxxgeOSRrTnMmTPnBXev7DTD3Yd8AFYDU8LxKcDqHpa9HFjYw/wq4L5Utnvcccd5rnv88cczHcKAUB7ZYzjk4D488sjWHIBl3sX/1EwdwloMXBqOXwr8sYdlP0qHw1fhHghmZgTnT14ehBhFRKQHmSogC4BzzGwtcHY4jZlVmtkvWxcyswOBGcATHda/w8xWAiuBCcB1QxCziIgkycvERt19F3BWF+3LgM8kTW8EpnWx3JmDGZ+IiPROd6KLiEhaVEBERCQtKiAiIpIWFRAREUmLCoiIiKRFBURERNKiAiIiImlRARERkbSogIiISFpUQEREJC0qICIikhYVEBERSYsKiIiIpEUFRERE0qICIiIiaVEBERGRtKiAiIhIWlRAREQkLSogIiKSlowUEDP7sJmtMrOEmVX2sNw8M1ttZuvM7Iqk9plm9mzYfqeZFQxN5CIi0ipTeyAvAx8EnuxuATOLAj8D3g0cAXzUzI4IZ38XuMHdDwaqgU8PbrgiItJRRgqIu7/q7qt7WewEYJ27r3f3ZmARcIGZGXAmcHe43O3A+wcvWhER6UpepgPowTRgU9L0ZuBEYDxQ4+6xpPZp3b2Imc0H5oeTtWbWW+HKdhOAnZkOYgAoj+wxHHKA4ZFHtuZwQFeNg1ZAzOwRYHIXs65y9z8O1nY7cveFwMKh2t5gM7Nl7t7teaNcoTyyx3DIAYZHHrmWw6AVEHc/u58vsQWYkTQ9PWzbBZSbWV64F9LaLiIiQyibL+N9HpgVXnFVAFwMLHZ3Bx4HLgyXuxQYsj0aEREJZOoy3g+Y2WbgZOB+M3swbJ9qZksAwr2Ly4AHgVeBu9x9VfgSXwe+bGbrCM6J3DLUOWTQcDkcpzyyx3DIAYZHHjmVgwVf6EVERPommw9hiYhIFlMBERGRtKiAZCEz22hmK81suZktC9vGmdnDZrY2/Dk2bDcz+0nYrctLZnZshmK+1cy2m9nLSW19jtnMLg2XX2tml2ZJHteY2Zbw/VhuZuclzbsyzGO1mZ2b1N5lNzxDlMMMM3vczF4Juwy6PGzPqfejhzxy7f0oMrPnzGxFmMe3w/Yuu2Qys8Jwel04/8De8ssYd9eQZQOwEZjQoe17wBXh+BXAd8Px84A/AwacBDyboZhPB44FXk43ZmAcsD78OTYcH5sFeVwDfLWLZY8AVgCFwEzgdSAaDq8DBwEF4TJHDGEOU4Bjw/HRwJow1px6P3rII9feDwNKw/F84Nnw93wXcHHYfhPwuXD888BN4fjFwJ095TeUfx8dB+2B5I4LCLptgfbdt1wA/MoDzxDcIzNlqINz9yeB3R2a+xrzucDD7r7b3auBh4F5gx/9ft3k0Z0LgEXu3uTuG4B1BF3wdNkNz6AE3AV33+rufw/H9xFcxTiNHHs/esijO9n6fri714aT+eHgdN8lU/L7dDdwlpkZ3eeXMSog2cmBh8zsBQu6YgGocPet4fg2oCIc76rLl57+yIZSX2PO5lwuCw/v3Np66IccyCM8/HEMwbfenH0/OuQBOfZ+mFnUzJYD2wkK8et03yVTW7zh/D0EtytkPI+OVECy02nufixBT8RfMLPTk2d6sD+bU9df52LMSX4OvB2YDWwFfpjZcFJjZqXAPcC/u/ve5Hm59H50kUfOvR/uHnf32QQ9Z5wAHJbhkAaECkgWcvct4c/twO8JPnBvtR6aCn9uDxfvrsuXbNDXmLMyF3d/K/wHkAB+wf7DBlmbh5nlE/zTvcPd7w2bc+796CqPXHw/Wrl7DUFPGicTdsnURUxt8YbzxxB04ZQ1ebRSAckyZjbKzEa3jgNzCZ6fspig2xZo333LYuDj4ZU0JwF7kg5TZFpfY34QmGtmY8PDEnPDtozqcE7pAwTvBwR5XBxeNTMTmAU8Rzfd8AxhvEbQO8Or7v6jpFk59X50l0cOvh8Tzaw8HC8GziE4n9Ndl0zJ79OFwGPhHmN3+WVOJs/ga+g8EFwpsiIcVhH0XgzBMdBHgbXAI8C4sN0IHrz1OrASqMxQ3L8jOJzQQnBs9tPpxAx8iuDk4Drgk1mSx6/DOF8i+COekrT8VWEeq4F3J7WfR3DV0Out7+EQ5nAaweGpl4Dl4XBerr0fPeSRa+/H0cCLYbwvA98K2w8iKADrgP8DCsP2onB6XTj/oN7yy9SgrkxERCQtOoQlIiJpUQEREZG0qICIiEhaVEBERCQtKiAiIpIWFRCRIWBmtb0vJZJbVEBERCQtKiAiGWJm7w2f9/CimT1iZhVh+0QLntexysx+aWZvmNmETMcr0pEKiEjm/BU4yd2PIehi/Gth+9UE3VccSdCd99syFJ9Ij/J6X0REBsl04M6wb6cCYEPYfhpBH0+4+wNmVp2h+ER6pD0Qkcz5KXCjux8FfJagDySRnKECIpI5Y9jfHXfy88b/BlwEYGZzCR4nK5J11JmiyBAwswTwZlLTjwh6Vb0BqAYeA4539yozm0TQK3AF8DTwHuBAd28a2qhFeqYCIpJlzKwQiLt7zMxOBn7uwdPsRLKKTqKLZJ+3AXeZWQRoBv4lw/GIdEl7ICIikhadRBcRkbSogIiISFpUQEREJC0qICIikhYVEBERScv/B1pMQZ2y3HHOAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:38:57.908810Z", + "iopub.status.busy": "2021-07-30T22:38:57.907696Z", + "iopub.status.idle": "2021-07-30T22:39:03.189443Z", + "shell.execute_reply": "2021-07-30T22:39:03.190246Z", + "shell.execute_reply.started": "2021-07-30T02:32:17.774244Z" + }, + "id": "a82ff355", + "papermill": { + "duration": 5.336756, + "end_time": "2021-07-30T22:39:03.190524", + "exception": false, + "start_time": "2021-07-30T22:38:57.853768", + "status": "completed" + }, + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "317d18fd-45f5-420d-9787-06a9a14e22c5" + }, + "source": [ + "''' Choosing only the data of the last 4 years and the other data doesn't follow the same pattern. \n", + "This data looks much more relevant for training a model '''\n", + "\n", + "df2 = df.loc['2017-03-01':'2021-03-01'] # Dropping all the values before 2017 March and all the values after 2021 March\n", + "df2 = df2.iloc[(-365*4):] # Checking if the same of the data is same as the other data\n", + "print(df2.shape) # Print the data " + ], + "id": "a82ff355", + "execution_count": 294, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(1460, 7)\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:39:03.299947Z", + "iopub.status.busy": "2021-07-30T22:39:03.298902Z", + "iopub.status.idle": "2021-07-30T22:39:03.847855Z", + "shell.execute_reply": "2021-07-30T22:39:03.847226Z", + "shell.execute_reply.started": "2021-07-30T02:32:35.190754Z" + }, + "id": "761d2b3c", + "papermill": { + "duration": 0.611387, + "end_time": "2021-07-30T22:39:03.848032", + "exception": false, + "start_time": "2021-07-30T22:39:03.236645", + "status": "completed" + }, + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/", + "height": 416 + }, + "outputId": "9ce9c826-f18e-4869-d253-1690488807ca" + }, + "source": [ + "''' Plotting the graph again '''\n", + "\n", + "df2.Weighted_Price.plot(title = \"Bitcoin Price\", figsize=(10,6)) \n", + "plt.ylabel('Price in $')\n", + "plt.xlabel('Dates')\n", + "plt.show()" + ], + "id": "761d2b3c", + "execution_count": 295, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "id": "xTgPcWibjjwp", + "outputId": "44a9e519-a54b-4ca3-fbb0-00903aae714c" + }, + "source": [ + "df2.head()" + ], + "id": "xTgPcWibjjwp", + "execution_count": 296, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
OpenHighLowCloseVolume_(BTC)Volume_(Currency)Weighted_Price
Timestamp
2017-03-031272.9311591273.4644901272.3685211272.9555026.5272298318.0349661272.937727
2017-03-041267.6660851268.1481491267.1942531267.7216104.7745736015.0452291267.697008
2017-03-051258.4828601259.0203051258.0532841258.4955722.2481562830.2573821258.652090
2017-03-061274.7752191275.1017691274.4833241274.8131974.1298815268.0009071274.807021
2017-03-071252.0301051252.6353141251.3524651252.01198612.58714115581.6634221251.992528
\n", + "
" + ], + "text/plain": [ + " Open High ... Volume_(Currency) Weighted_Price\n", + "Timestamp ... \n", + "2017-03-03 1272.931159 1273.464490 ... 8318.034966 1272.937727\n", + "2017-03-04 1267.666085 1268.148149 ... 6015.045229 1267.697008\n", + "2017-03-05 1258.482860 1259.020305 ... 2830.257382 1258.652090\n", + "2017-03-06 1274.775219 1275.101769 ... 5268.000907 1274.807021\n", + "2017-03-07 1252.030105 1252.635314 ... 15581.663422 1251.992528\n", + "\n", + "[5 rows x 7 columns]" + ] + }, + "metadata": {}, + "execution_count": 296 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ca61f043", + "papermill": { + "duration": 0.156978, + "end_time": "2021-07-30T22:41:17.542539", + "exception": false, + "start_time": "2021-07-30T22:41:17.385561", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## **4. RNN - LSTM IMPLEMENTATION**\n" + ], + "id": "ca61f043" + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:41:17.867052Z", + "iopub.status.busy": "2021-07-30T22:41:17.866274Z", + "iopub.status.idle": "2021-07-30T22:41:23.659240Z", + "shell.execute_reply": "2021-07-30T22:41:23.659786Z", + "shell.execute_reply.started": "2021-07-30T02:42:11.081596Z" + }, + "id": "a1c30b1e", + "papermill": { + "duration": 5.959392, + "end_time": "2021-07-30T22:41:23.659995", + "exception": false, + "start_time": "2021-07-30T22:41:17.700603", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "''' Importing all the libraries '''\n", + "\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "from tensorflow import keras\n", + "from tensorflow.keras.layers import Dense, LSTM, Dropout,Flatten\n", + "from tensorflow.keras import Sequential\n", + "from statsmodels.graphics.tsaplots import plot_acf\n", + "from sklearn.model_selection import train_test_split" + ], + "id": "a1c30b1e", + "execution_count": 297, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 238 + }, + "id": "Kqpf_lLNsRgt", + "outputId": "f6862911-3dee-4c44-ccfd-d66eebc13be0" + }, + "source": [ + "df2.head()" + ], + "id": "Kqpf_lLNsRgt", + "execution_count": 298, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
OpenHighLowCloseVolume_(BTC)Volume_(Currency)Weighted_Price
Timestamp
2017-03-031272.9311591273.4644901272.3685211272.9555026.5272298318.0349661272.937727
2017-03-041267.6660851268.1481491267.1942531267.7216104.7745736015.0452291267.697008
2017-03-051258.4828601259.0203051258.0532841258.4955722.2481562830.2573821258.652090
2017-03-061274.7752191275.1017691274.4833241274.8131974.1298815268.0009071274.807021
2017-03-071252.0301051252.6353141251.3524651252.01198612.58714115581.6634221251.992528
\n", + "
" + ], + "text/plain": [ + " Open High ... Volume_(Currency) Weighted_Price\n", + "Timestamp ... \n", + "2017-03-03 1272.931159 1273.464490 ... 8318.034966 1272.937727\n", + "2017-03-04 1267.666085 1268.148149 ... 6015.045229 1267.697008\n", + "2017-03-05 1258.482860 1259.020305 ... 2830.257382 1258.652090\n", + "2017-03-06 1274.775219 1275.101769 ... 5268.000907 1274.807021\n", + "2017-03-07 1252.030105 1252.635314 ... 15581.663422 1251.992528\n", + "\n", + "[5 rows x 7 columns]" + ] + }, + "metadata": {}, + "execution_count": 298 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "mHqzppXyNgwm" + }, + "source": [ + "''' Train Test Split using the train_test_split method which takes the input, output values as well as test_size'''\n", + "\n", + "X = df2.drop('Weighted_Price',axis=1)\n", + "y = df2['Weighted_Price']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.3,random_state=101) # Train test split\n", + "y_train = np.array(y_train) # Converting the training data into a numpy array\n", + "y_test = np.array(y_test) # Converting the training data into a numpy array\n", + "y_train = y_train.reshape(len(y_train), 1) # Reshaping our y train data to suitable shape\n", + "y_test = y_test.reshape(len(y_test), 1) # Reshaping our y test data to suitable shape\n" + ], + "id": "mHqzppXyNgwm", + "execution_count": 299, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "N1Dt86Bns1iJ" + }, + "source": [ + "# Scaling our data for inputting into our model\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "scaler_x = MinMaxScaler() \n", + "scaler_y = MinMaxScaler()\n", + "x_train= scaler_x.fit_transform(X_train) \n", + "x_test = scaler_x.transform(X_test) \n", + "y_train = scaler_y.fit_transform(y_train)\n", + "y_test = scaler_y.transform(y_test)\n", + "x_train = np.reshape(x_train, (len(x_train), 1, 6)) \n", + "x_test = np.reshape(x_test, (len(x_test), 1, 6)) " + ], + "id": "N1Dt86Bns1iJ", + "execution_count": 300, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:41:24.333402Z", + "iopub.status.busy": "2021-07-30T22:41:24.332640Z", + "iopub.status.idle": "2021-07-30T22:41:24.557780Z", + "shell.execute_reply": "2021-07-30T22:41:24.556967Z", + "shell.execute_reply.started": "2021-07-30T02:42:22.799947Z" + }, + "id": "76309d3d", + "papermill": { + "duration": 0.396773, + "end_time": "2021-07-30T22:41:24.557983", + "exception": false, + "start_time": "2021-07-30T22:41:24.161210", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "'''\n", + " Preparing the model\n", + "'''\n", + "model = Sequential()\n", + "model.add(LSTM(10,input_shape = (None,6), activation=\"relu\", return_sequences=True))\n", + "model.add(Dense(1))" + ], + "id": "76309d3d", + "execution_count": 302, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:41:24.892432Z", + "iopub.status.busy": "2021-07-30T22:41:24.891756Z", + "iopub.status.idle": "2021-07-30T22:41:24.910683Z", + "shell.execute_reply": "2021-07-30T22:41:24.910107Z", + "shell.execute_reply.started": "2021-07-30T02:42:25.356819Z" + }, + "id": "9b7c217a", + "papermill": { + "duration": 0.192283, + "end_time": "2021-07-30T22:41:24.910843", + "exception": false, + "start_time": "2021-07-30T22:41:24.718560", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "''' \n", + "Compile the model\n", + "'''\n", + "model.compile(loss=\"mean_squared_error\",optimizer=\"adam\")" + ], + "id": "9b7c217a", + "execution_count": 303, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:41:25.231106Z", + "iopub.status.busy": "2021-07-30T22:41:25.230096Z", + "iopub.status.idle": "2021-07-30T22:41:30.157195Z", + "shell.execute_reply": "2021-07-30T22:41:30.157698Z", + "shell.execute_reply.started": "2021-07-30T02:42:27.443638Z" + }, + "id": "4c006659", + "papermill": { + "duration": 5.089315, + "end_time": "2021-07-30T22:41:30.157924", + "exception": false, + "start_time": "2021-07-30T22:41:25.068609", + "status": "completed" + }, + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "906d306f-bb9f-47d7-cf1e-8cba725378a2" + }, + "source": [ + "#fit the model to the training data\n", + "model.fit(x_train,y_train,epochs=100,batch_size=32)" + ], + "id": "4c006659", + "execution_count": 304, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Epoch 1/100\n", + "32/32 [==============================] - 1s 2ms/step - loss: 0.0342\n", + "Epoch 2/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 0.0221\n", + "Epoch 3/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 0.0151\n", + "Epoch 4/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 0.0110\n", + "Epoch 5/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 0.0077\n", + "Epoch 6/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 0.0048\n", + "Epoch 7/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 0.0026\n", + "Epoch 8/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 0.0011\n", + "Epoch 9/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 4.0700e-04\n", + "Epoch 10/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.7368e-04\n", + "Epoch 11/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.1439e-04\n", + "Epoch 12/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 9.8881e-05\n", + "Epoch 13/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 9.2906e-05\n", + "Epoch 14/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 8.7936e-05\n", + "Epoch 15/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 8.3235e-05\n", + "Epoch 16/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 7.9388e-05\n", + "Epoch 17/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 7.5643e-05\n", + "Epoch 18/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 7.0312e-05\n", + "Epoch 19/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 6.6583e-05\n", + "Epoch 20/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 6.2420e-05\n", + "Epoch 21/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 5.9391e-05\n", + "Epoch 22/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 5.5594e-05\n", + "Epoch 23/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 5.2010e-05\n", + "Epoch 24/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.8837e-05\n", + "Epoch 25/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.6122e-05\n", + "Epoch 26/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.3220e-05\n", + "Epoch 27/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.0142e-05\n", + "Epoch 28/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 3.7533e-05\n", + "Epoch 29/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.4981e-05\n", + "Epoch 30/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.3165e-05\n", + "Epoch 31/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 3.1047e-05\n", + "Epoch 32/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 2.8785e-05\n", + "Epoch 33/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 2.6895e-05\n", + "Epoch 34/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 2.5381e-05\n", + "Epoch 35/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.3507e-05\n", + "Epoch 36/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.1883e-05\n", + "Epoch 37/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 2.0412e-05\n", + "Epoch 38/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.9229e-05\n", + "Epoch 39/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 1.8183e-05\n", + "Epoch 40/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.6571e-05\n", + "Epoch 41/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 1.5464e-05\n", + "Epoch 42/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.4757e-05\n", + "Epoch 43/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.3758e-05\n", + "Epoch 44/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.2694e-05\n", + "Epoch 45/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.2009e-05\n", + "Epoch 46/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.1466e-05\n", + "Epoch 47/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.0850e-05\n", + "Epoch 48/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 1.0028e-05\n", + "Epoch 49/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 9.4777e-06\n", + "Epoch 50/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 8.9630e-06\n", + "Epoch 51/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 8.4268e-06\n", + "Epoch 52/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 7.9639e-06\n", + "Epoch 53/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 7.7310e-06\n", + "Epoch 54/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 7.5055e-06\n", + "Epoch 55/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 6.8551e-06\n", + "Epoch 56/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 6.5962e-06\n", + "Epoch 57/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 6.1171e-06\n", + "Epoch 58/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 5.8088e-06\n", + "Epoch 59/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 5.4864e-06\n", + "Epoch 60/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 5.2857e-06\n", + "Epoch 61/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.9900e-06\n", + "Epoch 62/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.8124e-06\n", + "Epoch 63/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.6666e-06\n", + "Epoch 64/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.4655e-06\n", + "Epoch 65/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.4162e-06\n", + "Epoch 66/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.1571e-06\n", + "Epoch 67/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.1896e-06\n", + "Epoch 68/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 4.0264e-06\n", + "Epoch 69/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.8365e-06\n", + "Epoch 70/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.8190e-06\n", + "Epoch 71/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.6639e-06\n", + "Epoch 72/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.5402e-06\n", + "Epoch 73/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.3816e-06\n", + "Epoch 74/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.3590e-06\n", + "Epoch 75/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.2651e-06\n", + "Epoch 76/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.1779e-06\n", + "Epoch 77/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.1172e-06\n", + "Epoch 78/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.1391e-06\n", + "Epoch 79/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 3.0492e-06\n", + "Epoch 80/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.9543e-06\n", + "Epoch 81/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.8862e-06\n", + "Epoch 82/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.9121e-06\n", + "Epoch 83/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.8273e-06\n", + "Epoch 84/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.7417e-06\n", + "Epoch 85/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.7305e-06\n", + "Epoch 86/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 2.5726e-06\n", + "Epoch 87/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.7163e-06\n", + "Epoch 88/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.7035e-06\n", + "Epoch 89/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.4205e-06\n", + "Epoch 90/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.5831e-06\n", + "Epoch 91/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 2.3716e-06\n", + "Epoch 92/100\n", + "32/32 [==============================] - 0s 3ms/step - loss: 2.5442e-06\n", + "Epoch 93/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.4477e-06\n", + "Epoch 94/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.3252e-06\n", + "Epoch 95/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.2596e-06\n", + "Epoch 96/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.1132e-06\n", + "Epoch 97/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.0792e-06\n", + "Epoch 98/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.0192e-06\n", + "Epoch 99/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.0042e-06\n", + "Epoch 100/100\n", + "32/32 [==============================] - 0s 2ms/step - loss: 2.0556e-06\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 304 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:41:30.615336Z", + "iopub.status.busy": "2021-07-30T22:41:30.614352Z", + "iopub.status.idle": "2021-07-30T22:41:30.874687Z", + "shell.execute_reply": "2021-07-30T22:41:30.875277Z", + "shell.execute_reply.started": "2021-07-30T02:42:45.781293Z" + }, + "id": "c738c280", + "papermill": { + "duration": 0.509792, + "end_time": "2021-07-30T22:41:30.875471", + "exception": false, + "start_time": "2021-07-30T22:41:30.365679", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# assign test and predicted values + reshaping + converting back from scaler\n", + "test_values = x_test\n", + "predicted_price = model.predict(test_values)\n", + "predicted_price = np.reshape(predicted_price, (len(predicted_price), 1))\n", + "predicted_price = scaler.inverse_transform(predicted_price)\n", + "y_test = scaler.inverse_transform(y_test)" + ], + "id": "c738c280", + "execution_count": 305, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qpQvpJk3krxO", + "outputId": "bbd1d255-c7b4-45de-c0db-9275a7298abc" + }, + "source": [ + "print(predicted_price[100])\n", + "print(y_test[100])" + ], + "id": "qpQvpJk3krxO", + "execution_count": 306, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[3288.5652]\n", + "[3291.99521681]\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 455 + }, + "id": "tyfWWaqDmAkh", + "outputId": "6679fba6-60fe-49b0-ef1d-71c8304a1035" + }, + "source": [ + "X_test" + ], + "id": "tyfWWaqDmAkh", + "execution_count": 307, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolume_(BTC)Volume_(Currency)
Timestamp
2020-01-218645.4801958649.5715798642.0463568645.6048192.36070220386.559122
2018-02-2710552.61968010560.02806510545.09957610552.9219837.24320176608.742377
2020-09-0510268.43464110276.17594410259.91481710268.0254798.56723587342.317616
2017-08-113504.3503483506.6927363501.2266313504.2765888.47716729771.160096
2018-07-317915.2372237918.5630627911.1731187914.9780938.34661565469.866943
.....................
2017-11-077103.2508767108.3959117097.0764887102.8760998.09058857463.838377
2018-06-136443.2589796448.2527506436.5217716443.01772213.32673985268.602875
2018-12-133360.8305753362.4749753359.0629673360.8255718.52001428479.398644
2017-04-201220.9869761221.3772001220.5890481221.0583684.7783485841.845868
2018-05-317500.1435007503.7713337496.0966607500.1173685.09653338294.625397
\n", + "

438 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " Open High ... Volume_(BTC) Volume_(Currency)\n", + "Timestamp ... \n", + "2020-01-21 8645.480195 8649.571579 ... 2.360702 20386.559122\n", + "2018-02-27 10552.619680 10560.028065 ... 7.243201 76608.742377\n", + "2020-09-05 10268.434641 10276.175944 ... 8.567235 87342.317616\n", + "2017-08-11 3504.350348 3506.692736 ... 8.477167 29771.160096\n", + "2018-07-31 7915.237223 7918.563062 ... 8.346615 65469.866943\n", + "... ... ... ... ... ...\n", + "2017-11-07 7103.250876 7108.395911 ... 8.090588 57463.838377\n", + "2018-06-13 6443.258979 6448.252750 ... 13.326739 85268.602875\n", + "2018-12-13 3360.830575 3362.474975 ... 8.520014 28479.398644\n", + "2017-04-20 1220.986976 1221.377200 ... 4.778348 5841.845868\n", + "2018-05-31 7500.143500 7503.771333 ... 5.096533 38294.625397\n", + "\n", + "[438 rows x 6 columns]" + ] + }, + "metadata": {}, + "execution_count": 307 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:41:31.322537Z", + "iopub.status.busy": "2021-07-30T22:41:31.321490Z", + "iopub.status.idle": "2021-07-30T22:41:38.415501Z", + "shell.execute_reply": "2021-07-30T22:41:38.414810Z", + "shell.execute_reply.started": "2021-07-30T02:42:48.274209Z" + }, + "id": "a6263832", + "papermill": { + "duration": 7.325406, + "end_time": "2021-07-30T22:41:38.415679", + "exception": false, + "start_time": "2021-07-30T22:41:31.090273", + "status": "completed" + }, + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/", + "height": 663 + }, + "outputId": "c69f90d6-b311-4c31-a100-102047a40ef5" + }, + "source": [ + "X_test['predicted_price'] = predicted_price\n", + "X_test['actual_price'] = y_test\n", + "X_test" + ], + "id": "a6263832", + "execution_count": 309, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:1: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " \"\"\"Entry point for launching an IPython kernel.\n", + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:2: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " \n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolume_(BTC)Volume_(Currency)predicted_priceactual_price
Timestamp
2020-01-218645.4801958649.5715798642.0463568645.6048192.36070220386.5591223430.8830573438.456907
2018-02-2710552.61968010560.02806510545.09957610552.9219837.24320176608.7423774055.0988774058.763613
2020-09-0510268.43464110276.17594410259.91481710268.0254798.56723587342.3176163964.7976073966.197318
2017-08-113504.3503483506.6927363501.2266313504.2765888.47716729771.1600961762.6563721765.211271
2018-07-317915.2372237918.5630627911.1731187914.9780938.34661565469.8669433199.2089843200.445730
...........................
2017-11-077103.2508767108.3959117097.0764887102.8760998.09058857463.8383772934.5932622936.100408
2018-06-136443.2589796448.2527506436.5217716443.01772213.32673985268.6028752719.8903812721.261414
2018-12-133360.8305753362.4749753359.0629673360.8255718.52001428479.3986441715.9205321718.515443
2017-04-201220.9869761221.3772001220.5890481221.0583684.7783485841.8458681032.6083981022.280739
2018-05-317500.1435007503.7713337496.0966607500.1173685.09653338294.6253973062.3972173065.427317
\n", + "

438 rows × 8 columns

\n", + "
" + ], + "text/plain": [ + " Open High ... predicted_price actual_price\n", + "Timestamp ... \n", + "2020-01-21 8645.480195 8649.571579 ... 3430.883057 3438.456907\n", + "2018-02-27 10552.619680 10560.028065 ... 4055.098877 4058.763613\n", + "2020-09-05 10268.434641 10276.175944 ... 3964.797607 3966.197318\n", + "2017-08-11 3504.350348 3506.692736 ... 1762.656372 1765.211271\n", + "2018-07-31 7915.237223 7918.563062 ... 3199.208984 3200.445730\n", + "... ... ... ... ... ...\n", + "2017-11-07 7103.250876 7108.395911 ... 2934.593262 2936.100408\n", + "2018-06-13 6443.258979 6448.252750 ... 2719.890381 2721.261414\n", + "2018-12-13 3360.830575 3362.474975 ... 1715.920532 1718.515443\n", + "2017-04-20 1220.986976 1221.377200 ... 1032.608398 1022.280739\n", + "2018-05-31 7500.143500 7503.771333 ... 3062.397217 3065.427317\n", + "\n", + "[438 rows x 8 columns]" + ] + }, + "metadata": {}, + "execution_count": 309 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "execution": { + "iopub.execute_input": "2021-07-30T22:41:38.844142Z", + "iopub.status.busy": "2021-07-30T22:41:38.843319Z", + "iopub.status.idle": "2021-07-30T22:41:38.850059Z", + "shell.execute_reply": "2021-07-30T22:41:38.849134Z", + "shell.execute_reply.started": "2021-07-30T02:43:00.915897Z" + }, + "id": "20b6759b", + "papermill": { + "duration": 0.223116, + "end_time": "2021-07-30T22:41:38.850299", + "exception": false, + "start_time": "2021-07-30T22:41:38.627183", + "status": "completed" + }, + "tags": [], + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "18504de1-6a07-46e0-daf2-bbeac57db983" + }, + "source": [ + "'''\n", + "We find the root mean square error of our predicted values and consider this as the prediction metric\n", + "'''\n", + "rmse = np.sqrt(mean_squared_error(y_test, predicted_price))\n", + "print('Test RMSE: %.3f' % rmse)" + ], + "id": "20b6759b", + "execution_count": 196, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Test RMSE: 34.800\n" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/Projects/credit-card-fraud-detection/.DS_Store b/Projects/credit-card-fraud-detection/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Sat, 16 Oct 2021 21:50:54 +0530 Subject: [PATCH 2/3] removed .ds_store --- .DS_Store | Bin 0 -> 6148 bytes .../.DS_Store | Bin 6148 -> 6148 bytes Projects/.DS_Store | Bin 6148 -> 6148 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .DS_Store rename {Projects/credit-card-fraud-detection => .github}/.DS_Store (82%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..94dfc55c59ec67158bc44765704e796bddb78bb5 GIT binary patch literal 6148 zcmeHK%}N6?5T5ATrWLUV!5;VGO{706co3Fa58i|oJ*e1STiTVnDcxO**2=zyzL8Jh z>o}97qOF1_kv0R9Z!($5G9OLS0RUD@nq`0j0B}@7E04oBLhGbcvYXIf8v}H9E!cuK1Q35dzkaV9L~*I~#ugT>rA(IdJkPJ>FWrt9xUm-} zQO)b0)9l!bJHED0gy??Qo_`v&23Li(0};kv5Vrab0lFV-R6<8%s!(1XILHF6rWjyW-L2QKB>lEd6-RHajoLsZp}16`Ou<1v$I_suxQHqR*K9Hn9gV3%^q`nO N0+I$Z7zX~7fp>j$+3o-U literal 0 HcmV?d00001 diff --git a/Projects/credit-card-fraud-detection/.DS_Store b/.github/.DS_Store similarity index 82% rename from Projects/credit-card-fraud-detection/.DS_Store rename to .github/.DS_Store index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..53ecb2f53469f44356790cc8600fcafcab4130e0 100644 GIT binary patch delta 353 zcmZoMXfc=|#>B)qF;Q%yo}wrd0|Nsi1A_nqLmER4Lq0<}Lvd31#>C}}^&lBeAU~g> zh#?zUwzwcECqD@&dormYC$qT3z~DL~6Eh1d8#@OF7Y7$FS8Q-betB?7Vo7PSQ({px zh!>Dpl92>uhvetyz}bmOVVSAr@d6^w`FSOYnR%&2V9l8+^{GHLG2xkcDf#72`K5U& z#bASiGgCkk92}e+obdt@)zwC3209AHCZ@GI3e}cIK(>joS#2#Rhq$Vtt!F}RWmR=e zZQV?uYk`0f=uB^lm!>%<>cq31Em=^Cca~tY#_q2nVW-~0~mlC Z6TdT0<`+?91qGDCWJ3|@%>g1?m;p7AjHu~2NHo+1YW5HK<@2y9kle#WxdfcX^DW_AvK4xj>{$am(+{342+ UKzW7)kiy9(Jj$D6L{=~Z02rPQkN^Mx diff --git a/Projects/.DS_Store b/Projects/.DS_Store index b06530b005c79dd05eb19ee63770e40809524e9e..059654f464d43c2114dcc5bf36c6a5dc0909b45d 100644 GIT binary patch literal 6148 zcmeH~-)a*<6vofAsZJtdE`$b3VQzX?A^l^)3t?F+)Vso#_ClrI?XGqq?v&k)p~lF* zhQ3jsps(Y1W+tUg^r93*bPmjZ=ggclOMaQjWQa(F!*qkFOGFZlwbjAn7slh<=4`?B zEJ1~tLsL!#DcYxUF57o_0-nI%Mu7Kjk3#I*nojBF{>>3*ZZBt)BI6V}IdY0*RGlXS zouKwIIUnRz-S1zCg~is=gNIUfWan|`eRQTrQ61OADvZmw9PP*TS>pTytq0eBoE+xa z=(zjzl`iTyFS61U=V^wNcSm`V>QShNMOvA8B0C^uTegq8z43T+r@yYYwx3Vd)%e9G z{Ozrs$)qip*EU|hIr(()W&CyW?Yku}@Iz(niPNe4fOBUMpQExE=;9-4dEQlk)Kmcz zAOYPTbclG0@jpa*4P22LBR+{OLo3IJ_!%m$zD60FK;;Iy%d5ty*0P+Kb86+_r^ z^edMaIBl%jauV+HA>5mVyP*j4cFeC#I*Gule|iF*z-twF>P7jg9jftEL1GcN`mskK!JhF^nm8pn=oIDtci4kAT78 KAD+M;CGZpXeZWBg delta 170 zcmZoMXfc=|#>B`mu~2NHo+2a5#DLwbEDQ_`ypsi3q(pMk4TF>Oa|?h1FaVa2$jx_g zNy^Dj0*Z3X-XxcBpy#k7kPVYe!70g6kO47rvml2U%f<#>rp@de{2V|R00q7?Pv#e~ U6aZPp$iTn^rCBydh^%1-02zuUf&c&j From dbec7dd7968dc6df7942b8b15684ee3fa5a57fa6 Mon Sep 17 00:00:00 2001 From: Rijul Dahiya Date: Sat, 16 Oct 2021 21:58:12 +0530 Subject: [PATCH 3/3] Removed .ds_store --- .DS_Store | Bin 6148 -> 0 bytes .github/.DS_Store | Bin 6148 -> 0 bytes Projects/.DS_Store | Bin 6148 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store delete mode 100644 .github/.DS_Store delete mode 100644 Projects/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 94dfc55c59ec67158bc44765704e796bddb78bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}N6?5T5ATrWLUV!5;VGO{706co3Fa58i|oJ*e1STiTVnDcxO**2=zyzL8Jh z>o}97qOF1_kv0R9Z!($5G9OLS0RUD@nq`0j0B}@7E04oBLhGbcvYXIf8v}H9E!cuK1Q35dzkaV9L~*I~#ugT>rA(IdJkPJ>FWrt9xUm-} zQO)b0)9l!bJHED0gy??Qo_`v&23Li(0};kv5Vrab0lFV-R6<8%s!(1XILHF6rWjyW-L2QKB>lEd6-RHajoLsZp}16`Ou<1v$I_suxQHqR*K9Hn9gV3%^q`nO N0+I$Z7zX~7fp>j$+3o-U diff --git a/.github/.DS_Store b/.github/.DS_Store deleted file mode 100644 index 53ecb2f53469f44356790cc8600fcafcab4130e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK%}T>S5T317Hx;o5L65n3^HBc^9)wWq!J81#gNi1!+F;B|lNvNu@*4U^K7p^} z%cxXdnSt4Fc7Ar*Z^LdD07PrhSp%p8fJ7y%IM{q66ek^%iuDi*J;o)(pdg1d z%*V3X@gEtWy>oEK6!hU5KJ8z68^$Wc=xcZzM`_k*yot(Gb$Vu2%9^ar*UtQ&%Ka?J z25BqkpHS~0$a>xafy7_s1aaSc-5GCEdE{-}~OgTM{l8(w-YLIkNJ&tbz zQaaK(uP+zHdb6?WZftH1SKVTJ9qrAH=5Xl9rIodv{fnFXhvISg^lbPQ_$g{xusDJj zG`?Bto!?Jlm0V$TR5_|(WCoZ4W?(`Yu*aR8o6z;~vX}v8;P(vB`QV}wdKOEA`sl!h zejh1bB_u(c-V%haMbBbs5F;qUlp>l^VV@Ynl%wCZd7j16peYBTXU1{t%)-7>3*ZZBt)BI6V}IdY0*RGlXS zouKwIIUnRz-S1zCg~is=gNIUfWan|`eRQTrQ61OADvZmw9PP*TS>pTytq0eBoE+xa z=(zjzl`iTyFS61U=V^wNcSm`V>QShNMOvA8B0C^uTegq8z43T+r@yYYwx3Vd)%e9G z{Ozrs$)qip*EU|hIr(()W&CyW?Yku}@Iz(niPNe4fOBUMpQExE=;9-4dEQlk)Kmcz zAOYPTbclG0@jpa*4P22LBR+{OLo3IJ_!%m$zD60FK;;Iy%d5ty*0P+Kb86+_r^ z^edMaIBl%jauV+HA>5mVyP*j4cFeC#I*Gule|iF*z-twF>P7jg9jftEL1GcN`mskK!JhF^nm8pn=oIDtci4kAT78 KAD+M;CGZpXeZWBg