From e9e8f5ca460fd1a91fbf95d648046c9fac434562 Mon Sep 17 00:00:00 2001
From: Ayushi Sha <124066968+AYUSHI-SHA@users.noreply.github.com>
Date: Fri, 4 Oct 2024 23:24:49 +0530
Subject: [PATCH 01/76] Update Stock_Price_Prediction
To optimize the workflow and improve efficiency, made changes that remove redundant code.
---
Stock_Price_Prediction.ipynb | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/Stock_Price_Prediction.ipynb b/Stock_Price_Prediction.ipynb
index 0745eff..7c3ad61 100644
--- a/Stock_Price_Prediction.ipynb
+++ b/Stock_Price_Prediction.ipynb
@@ -1003,7 +1003,7 @@
"id": "GxtMzlg-gR2P"
},
"source": [
- "## 2. SVR"
+ "## 2. Support Vector Regression"
]
},
{
@@ -1070,7 +1070,7 @@
"id": "hcIfVMWdgcKt"
},
"source": [
- "## 3. Random Forest"
+ "## 3. Random Forest Regressor"
]
},
{
@@ -1769,6 +1769,13 @@
"plt.tight_layout()\n",
"plt.show()"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {
From 27b663033838a9e212f4e34de009ae33e9111863 Mon Sep 17 00:00:00 2001
From: Ayushi Sha <124066968+AYUSHI-SHA@users.noreply.github.com>
Date: Sun, 6 Oct 2024 14:14:56 +0530
Subject: [PATCH 02/76] Stock_Price_Prediction Updated
---
.../Stock_Price_Prediction(Updated).ipynb | 5236 +++++++++++++++++
Python File/Stock_Price_Prediction.ipynb | 2708 ---------
Stock_Price_Prediction.ipynb | 1805 ------
3 files changed, 5236 insertions(+), 4513 deletions(-)
create mode 100644 Python File/Stock_Price_Prediction(Updated).ipynb
delete mode 100644 Python File/Stock_Price_Prediction.ipynb
delete mode 100644 Stock_Price_Prediction.ipynb
diff --git a/Python File/Stock_Price_Prediction(Updated).ipynb b/Python File/Stock_Price_Prediction(Updated).ipynb
new file mode 100644
index 0000000..77a2cd6
--- /dev/null
+++ b/Python File/Stock_Price_Prediction(Updated).ipynb
@@ -0,0 +1,5236 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "id": "8tzEK_mSvRoh"
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.impute import SimpleImputer\n",
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn.svm import SVR\n",
+ "from sklearn.tree import DecisionTreeRegressor\n",
+ "from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor, GradientBoostingRegressor\n",
+ "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error\n",
+ "from sklearn.neighbors import KNeighborsRegressor\n",
+ "from tensorflow.keras.models import Sequential\n",
+ "from tensorflow.keras.layers import Dense,LSTM"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "NbBSc2jLvZWx",
+ "outputId": "457e0a63-90a0-4e1c-b846-95e4e50c31dc"
+ },
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.google.colaboratory.intrinsic+json": {
+ "summary": "{\n \"name\": \"df\",\n \"rows\": 7074,\n \"fields\": [\n {\n \"column\": \"Date\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 7074,\n \"samples\": [\n \"11-08-2016\",\n \"30-10-2007\",\n \"17-01-2017\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Open\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 154.7732294451065,\n \"min\": 13.478195,\n \"max\": 703.650024,\n \"num_unique_values\": 4758,\n \"samples\": [\n 174.399994,\n 31.0324,\n 187.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"High\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 156.34507839355788,\n \"min\": 13.935802,\n \"max\": 728.349976,\n \"num_unique_values\": 5403,\n \"samples\": [\n 473.0,\n 495.450012,\n 78.321663\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Low\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 152.98051601861624,\n \"min\": 13.214009,\n \"max\": 694.200012,\n \"num_unique_values\": 5488,\n \"samples\": [\n 60.2957,\n 22.677523,\n 16.983376\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 154.63054905628158,\n \"min\": 13.346102,\n \"max\": 725.25,\n \"num_unique_values\": 5975,\n \"samples\": [\n 633.599976,\n 241.100006,\n 107.834999\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Adj Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 152.90324918554683,\n \"min\": 9.53141,\n \"max\": 725.25,\n \"num_unique_values\": 6575,\n \"samples\": [\n 12.345289,\n 223.836212,\n 16.758821\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Volume\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 34627439.399630256,\n \"min\": 0.0,\n \"max\": 446948261.0,\n \"num_unique_values\": 6948,\n \"samples\": [\n 29959130.0,\n 1648453.0,\n 14077470.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
+ "type": "dataframe",
+ "variable_name": "df"
+ },
+ "text/html": [
+ "\n",
+ "
\n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Date \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Adj Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 01-01-1996 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 12.409931 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 02-01-1996 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 12.014931 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 03-01-1996 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 11.694577 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 04-01-1996 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 11.654142 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 05-01-1996 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 11.588827 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ],
+ "text/plain": [
+ " Date Open High Low Close Adj Close \\\n",
+ "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
+ "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
+ "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
+ "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
+ "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
+ "\n",
+ " Volume \n",
+ "0 43733533.0 \n",
+ "1 56167280.0 \n",
+ "2 68296318.0 \n",
+ "3 86073880.0 \n",
+ "4 76613039.0 "
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Load the dataset\n",
+ "df = pd.read_csv('/content/SBIN.csv')\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "id": "2QdTvORzwEJw"
+ },
+ "outputs": [],
+ "source": [
+ "# Drop the 'Date' and 'Adj Close' columns\n",
+ "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "xMfr71b2w3eX",
+ "outputId": "a6990b82-ef82-454f-c0ba-fc0c21cc91ca"
+ },
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.google.colaboratory.intrinsic+json": {
+ "summary": "{\n \"name\": \"df\",\n \"rows\": 7074,\n \"fields\": [\n {\n \"column\": \"Open\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 154.7732294451065,\n \"min\": 13.478195,\n \"max\": 703.650024,\n \"num_unique_values\": 4758,\n \"samples\": [\n 174.399994,\n 31.0324,\n 187.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"High\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 156.34507839355788,\n \"min\": 13.935802,\n \"max\": 728.349976,\n \"num_unique_values\": 5403,\n \"samples\": [\n 473.0,\n 495.450012,\n 78.321663\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Low\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 152.98051601861624,\n \"min\": 13.214009,\n \"max\": 694.200012,\n \"num_unique_values\": 5488,\n \"samples\": [\n 60.2957,\n 22.677523,\n 16.983376\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Close\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 154.63054905628158,\n \"min\": 13.346102,\n \"max\": 725.25,\n \"num_unique_values\": 5975,\n \"samples\": [\n 633.599976,\n 241.100006,\n 107.834999\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"Volume\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 34627439.399630256,\n \"min\": 0.0,\n \"max\": 446948261.0,\n \"num_unique_values\": 6948,\n \"samples\": [\n 29959130.0,\n 1648453.0,\n 14077470.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}",
+ "type": "dataframe",
+ "variable_name": "df"
+ },
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ],
+ "text/plain": [
+ " Open High Low Close Volume\n",
+ "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
+ "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
+ "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
+ "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
+ "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "id": "idXVoeEFw55L"
+ },
+ "outputs": [],
+ "source": [
+ "# Handle missing values\n",
+ "imputer = SimpleImputer(strategy='mean')\n",
+ "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "id": "dUw_auE7w8JA"
+ },
+ "outputs": [],
+ "source": [
+ "# Select features and target variable\n",
+ "X = df[['Open', 'High', 'Low', 'Volume']]\n",
+ "y = df['Close']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {
+ "id": "FD2542-uxMhN"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "id": "IfBxpcjIw-h7"
+ },
+ "outputs": [],
+ "source": [
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "BUsngQNexIjX",
+ "outputId": "6b739018-4a7d-48d9-a3ec-591a5cd0784e"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(5659, 4)"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "GAb1kDEZxQD6",
+ "outputId": "4babae88-adba-49ad-9d56-514bd7abde50"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(1415, 4)"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {
+ "id": "SrzPIdvxxSWL"
+ },
+ "outputs": [],
+ "source": [
+ "# Function to evaluate and print RMSE, MAE, and MAPE\n",
+ "def evaluate_model(model, X_test, y_test):\n",
+ " predictions = model.predict(X_test)\n",
+ " rmse = np.sqrt(mean_squared_error(y_test, predictions))\n",
+ " mae = mean_absolute_error(y_test, predictions)\n",
+ " mape = mean_absolute_percentage_error(y_test, predictions)\n",
+ "\n",
+ " print(f\"RMSE: {rmse}\")\n",
+ " print(f\"MAE: {mae}\")\n",
+ " print(f\"MAPE: {mape}\\n\")\n",
+ "\n",
+ " return rmse, mae, mape\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {
+ "id": "1V0eOGD_xVCq"
+ },
+ "outputs": [],
+ "source": [
+ "\n",
+ "metrics = {\n",
+ " \"Model\": [],\n",
+ " \"RMSE\": [],\n",
+ " \"MAE\": [],\n",
+ " \"MAPE\": []\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "4gNvcwrH55rP"
+ },
+ "source": [
+ "# **1. Linear Regression**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {
+ "id": "uTbRFCB4xXHU"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a linear regression model\n",
+ "model1 = LinearRegression()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 241
+ },
+ "id": "UKaUaJ6sxaYG",
+ "outputId": "a28ae8d2-9430-4a1b-e9ba-475edfb7c788"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Close \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 5286 \n",
+ " 257.350006 \n",
+ " \n",
+ " \n",
+ " 3408 \n",
+ " 129.464996 \n",
+ " \n",
+ " \n",
+ " 5477 \n",
+ " 279.350006 \n",
+ " \n",
+ " \n",
+ " 6906 \n",
+ " 588.500000 \n",
+ " \n",
+ " \n",
+ " 530 \n",
+ " 21.644367 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
dtype: float64 "
+ ],
+ "text/plain": [
+ "5286 257.350006\n",
+ "3408 129.464996\n",
+ "5477 279.350006\n",
+ "6906 588.500000\n",
+ "530 21.644367\n",
+ "Name: Close, dtype: float64"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_train.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 80
+ },
+ "id": "6iJA5FrBxdEs",
+ "outputId": "6667305e-dd8d-445e-df54-c470c5b1e5ae"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "LinearRegression()"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model1.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "k-T73PFExiZD",
+ "outputId": "c794cf2c-c031-42c5-83ec-9432a9082d0f"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 1.6881364643681482\n",
+ "MAE: 0.9433353485344729\n",
+ "MAPE: 0.006085435990853812\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model1, X_test, y_test)\n",
+ "metrics[\"Model\"].append(\"Linear Regressor\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "qEVWWYIS592D"
+ },
+ "source": [
+ "# 2. Support Vector Regression"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {
+ "id": "LeUTf8Vhxj_k"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an SVR model\n",
+ "model2 = SVR()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 80
+ },
+ "id": "ud3Yhe5Vzvyh",
+ "outputId": "08f14bf4-3c1f-4973-c72a-52e2c264e759"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "SVR()"
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model2.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "eiqL4fTuzxWH",
+ "outputId": "4a88e15a-0922-4c3c-906b-3d5d6efee119"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 147.71103599153602\n",
+ "MAE: 110.99419106508152\n",
+ "MAPE: 1.9715076513294716\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model2, X_test, y_test)\n",
+ "metrics[\"Model\"].append(\"SVR\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "PlDcozy-6OGR"
+ },
+ "source": [
+ "# 3. Random Forest Regressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {
+ "id": "iaN8nOOO6cBg"
+ },
+ "outputs": [],
+ "source": [
+ "model3 = RandomForestRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 80
+ },
+ "id": "wZ7x_Yp06fI_",
+ "outputId": "8f64c153-17f2-4939-9344-58db634aee31"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "RandomForestRegressor()"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model3.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "IwK7IZ3E6g_n",
+ "outputId": "1fa15097-6587-4b81-a0f0-e65ac6c6ba8f"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 224.91534614035237\n",
+ "MAE: 162.96706374804316\n",
+ "MAPE: 0.7504263376635859\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.10/dist-packages/sklearn/base.py:493: UserWarning: X does not have valid feature names, but RandomForestRegressor was fitted with feature names\n",
+ " warnings.warn(\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model3, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Random Forest\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "ijTIDEEa6izO"
+ },
+ "source": [
+ "# 4. Gradient Boosting Models"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "id": "EO6OFflr6nJo"
+ },
+ "outputs": [],
+ "source": [
+ "model4 = GradientBoostingRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 80
+ },
+ "id": "vrwnbrEi6o1X",
+ "outputId": "dbf1c6ff-ffcc-4b47-fbf6-8ba7f64a5f16"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "GradientBoostingRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "GradientBoostingRegressor()"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model4.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "-pTBa0fD6qqx",
+ "outputId": "16225599-0077-447e-a1f5-3e2aa2f7ba8f"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 224.41069433522418\n",
+ "MAE: 162.27122816197573\n",
+ "MAPE: 0.7378541693598378\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.10/dist-packages/sklearn/base.py:493: UserWarning: X does not have valid feature names, but GradientBoostingRegressor was fitted with feature names\n",
+ " warnings.warn(\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model4, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"GBM\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "eGcU-e6C6sJI"
+ },
+ "source": [
+ "# 5. Extreme Graident Boosting"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "id": "0GQmPNFd6uxx"
+ },
+ "outputs": [],
+ "source": [
+ "import xgboost as xgb\n",
+ "# Create an XGBoost model\n",
+ "model5 = xgb.XGBRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 253
+ },
+ "id": "kfo1ZNft6xTp",
+ "outputId": "edfefbbd-744d-4c08-80bb-7ca2ffb3f765"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressoriFitted XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
+ ],
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model5.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7QwLt9iS6zSj",
+ "outputId": "bfc728a1-e169-44ea-8a4e-4b18e29f8c0e"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 224.66436370022384\n",
+ "MAE: 162.62070643817412\n",
+ "MAPE: 0.7441437311249671\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model5, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"XGBoost\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "sUD1VQBF605K"
+ },
+ "source": [
+ "# 6. AdaBoost Regressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "id": "0foTLiQp63Y9"
+ },
+ "outputs": [],
+ "source": [
+ "model6 = AdaBoostRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 80
+ },
+ "id": "bkzSWYA365MO",
+ "outputId": "c1f2bc96-a89c-4c83-873b-0836fa97c154"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "AdaBoostRegressor()"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model6.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "ZKxqdmp166pF",
+ "outputId": "b027a6a7-45e7-49e3-f93c-ed787d86e83f"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 211.5202666508501\n",
+ "MAE: 150.08505165249466\n",
+ "MAPE: 0.710014475295362\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.10/dist-packages/sklearn/base.py:493: UserWarning: X does not have valid feature names, but AdaBoostRegressor was fitted with feature names\n",
+ " warnings.warn(\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model6, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"AdaBoost Regressor\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "mtfkPIRi67xo"
+ },
+ "source": [
+ "# 7. Decision Tree"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "id": "E6EyzrH36_Fq"
+ },
+ "outputs": [],
+ "source": [
+ "model7 = DecisionTreeRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 80
+ },
+ "id": "DTp5VIYx7AWt",
+ "outputId": "8c71c048-7309-4aa2-ede9-517e62deaee3"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "DecisionTreeRegressor()"
+ ]
+ },
+ "execution_count": 33,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model7.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "3YC-pSgv7Dh4",
+ "outputId": "cd1a1793-3a36-4028-919f-90d79f0c1b46"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 224.85857555038172\n",
+ "MAE: 162.88870413804315\n",
+ "MAPE: 0.7490024715971244\n",
+ "\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.10/dist-packages/sklearn/base.py:493: UserWarning: X does not have valid feature names, but DecisionTreeRegressor was fitted with feature names\n",
+ " warnings.warn(\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model7, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Decision Tree\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "WfJAZHnP7E_2"
+ },
+ "source": [
+ "# 8. KNeighbors Regressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "id": "smujnWTRzzDL"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a KNN model\n",
+ "model8 = KNeighborsRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 80
+ },
+ "id": "zeokqhKd0Aj8",
+ "outputId": "018dff42-47da-4f2f-8bf9-16938de97723"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "KNeighborsRegressor()"
+ ]
+ },
+ "execution_count": 36,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model8.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "X2uNfESC0CA8",
+ "outputId": "6c449192-697f-4bb9-9a8e-bc9aed955532"
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.10/dist-packages/sklearn/base.py:493: UserWarning: X does not have valid feature names, but KNeighborsRegressor was fitted with feature names\n",
+ " warnings.warn(\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 224.35603706259303\n",
+ "MAE: 162.1962430618594\n",
+ "MAPE: 0.7365233640314862\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model8, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"KNN\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "X3yNCskZ7KMV"
+ },
+ "source": [
+ "# 9. Artificial Neural Networks"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "syd9MRhf0Df1",
+ "outputId": "1c546101-530f-4e5c-af43-79fd68b68347"
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.10/dist-packages/keras/src/layers/core/dense.py:87: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
+ " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Create an ANN model\n",
+ "model9 = Sequential()\n",
+ "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
+ "model9.add(Dense(16, activation='relu'))\n",
+ "model9.add(Dense(1, activation='linear'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {
+ "id": "pdlxN-Dp0IZr"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model9.compile(loss='mean_squared_error', optimizer='adam')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "qcryLURL0KIH",
+ "outputId": "54e02177-ee86-46bf-cfef-496cb59b8577"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "Xu6Cwjey0MaP",
+ "outputId": "92beea16-08fa-45d1-c817-88b1b1e3c688"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step\n",
+ "RMSE: 2.767324426981657\n",
+ "MAE: 1.7200117039677931\n",
+ "MAPE: 0.010909365212209457\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model9, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"ANN\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Yet4TgKq7OZl"
+ },
+ "source": [
+ "# 10. Long Short Term Memory"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {
+ "id": "keiZDN4w7UH0"
+ },
+ "outputs": [],
+ "source": [
+ "n_features = X_train_scaled.shape[1]\n",
+ "n_steps = 10\n",
+ "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
+ "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
+ "\n",
+ "# Reshape the input data\n",
+ "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
+ "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "nRRTkQTD7Vjd",
+ "outputId": "8c0e1de9-8382-482f-dc46-d6148e3f535e"
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.10/dist-packages/keras/src/layers/rnn/rnn.py:204: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n",
+ " super().__init__(**kwargs)\n"
+ ]
+ }
+ ],
+ "source": [
+ "model10 = Sequential()\n",
+ "model10.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
+ "model10.add(Dense(1))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "id": "3UJtO3wC7WWe"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model10.compile(loss='mean_squared_error', optimizer='adam')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "ld9dofMD7YNO",
+ "outputId": "2b3021f3-d88f-431c-a059-a9b6e065a29b"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 54,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "model10.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "lOTdB8Bj7aXM",
+ "outputId": "c844bad9-4c1e-447f-dad9-7b86f57dee9b"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\u001b[1m44/44\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 10ms/step\n",
+ "RMSE: 15.048059609987224\n",
+ "MAE: 12.060430640867935\n",
+ "MAPE: 0.21836694109231441\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model10, X_test_reshaped, y_test[n_steps-1:])\n",
+ "\n",
+ "# Store metrics\n",
+ "metrics[\"Model\"].append(\"LSTM\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 506
+ },
+ "id": "O8DHEHgI0wNg",
+ "outputId": "5cd999c9-0cca-4d23-da28-8655ce099354"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Create a DataFrame for metrics\n",
+ "metrics_df = pd.DataFrame(metrics)\n",
+ "\n",
+ "plt.figure(figsize=(20, 5))\n",
+ "\n",
+ "# RMSE Plot\n",
+ "plt.subplot(1, 3, 1)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['RMSE'], color='lightblue')\n",
+ "plt.ylabel('RMSE')\n",
+ "plt.xlabel('Model')\n",
+ "plt.xticks(rotation=45,ha='right')\n",
+ "plt.title('RMSE for Different Models')\n",
+ "\n",
+ "plt.tight_layout()\n",
+ "plt.show()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 506
+ },
+ "id": "mwniKbys0xJ0",
+ "outputId": "ff2fe79a-78c2-4e13-efef-75e89882656b"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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586d++R2Y2JiEB4ervNDREREROql6tA6ceJEmJiYoEePHh9dHxgYiEyZMuksMzExgZ2dHQIDAz+53fHjx8PGxkb5cXZ2TtG6iYiIiChlqTa0Xrx4Eb///juWL18OjUaTotv28/NDWFiY8hMQEJCi2yciIiKilKXa0Hry5EkEBwcja9asMDExgYmJCR4/fow+ffoge/bsAABHR0cEBwfrPC8+Ph4hISFwdHT85LbNzMxgbW2t80NERERE6qXXC7H+SatWrVC1alWdZV5eXmjVqhXatWsHAPDw8EBoaCguXryIkiVLAgCOHDmCxMREuLm5ffeaiYiIiOjb0GtojYiIwN9//608fvjwIa5cuQI7OztkzZoV9vb2Ou1NTU3h6OiIvHnzAgDy58+PGjVqoFOnTpg/fz7i4uLQrVs3NG3alDMHEBEREaUieh0ecOHCBRQvXhzFixcHAPTu3RvFixfHsGHDPnsba9asQb58+VClShXUqlUL5cqVw8KFC79VyURERESkB3rtafX09ISIfHb7R48efbDMzs4Oa9euTcGqiIiIiEhtVHshFhERERGRFkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpnl5D64kTJ+Dt7Q0nJydoNBps27ZNWRcXF4cBAwagcOHCSJcuHZycnNC6dWs8f/5cZxshISFo0aIFrK2tYWtriw4dOiAiIuI77wkRERERfUt6Da2RkZEoWrQo5syZ88G6qKgoXLp0CUOHDsWlS5ewZcsW3L17F3Xr1tVp16JFC9y8eRMHDx7Erl27cOLECfj6+n6vXSAiIiKi78BEn/94zZo1UbNmzY+us7GxwcGDB3WWzZ49G6VLl8aTJ0+QNWtW3L59G/v27cP58+dRqlQpAMCsWbNQq1YtTJkyBU5OTt98H4iIiIjo2zOoMa1hYWHQaDSwtbUFAJw5cwa2trZKYAWAqlWrwsjICOfOnfvkdmJiYhAeHq7z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Wlu3bv1d73g1a9YsDB06FF26dEFwcDCcnJzQuXNnDBs2TGnTv39/REZGwtfXF6GhoShXrhz27dvHOVqJiIiIUpEvvrnA92RlZYUZM2ZgxowZn2yj0WgwatQojBo16vsVRkRERETfVcoPRCUiIiIiSmEMrURERESkegytRERERKR6DK1EREREpHoMrURERESkegytRERERKR6DK1EREREpHoMrURERESkegytRERERKR6DK1EREREpHoMrURERESkegytRERERKR6DK1EREREpHoMrURERESkegytRERERKR6DK1EREREpHoMrURERESkegytRERERKR6DK1EREREpHoMrURERESkegytRERERKR6DK1EREREpHoMrURERESkegytRERERKR6DK1EREREpHqqD63Pnj1Dy5YtYW9vDwsLCxQuXBgXLlxQ1osIhg0bhp9++gkWFhaoWrUq7t+/r8eKiYiIiCilqTq0vnnzBmXLloWpqSn27t2LW7duYerUqUifPr3SZtKkSZg5cybmz5+Pc+fOIV26dPDy8kJ0dLQeKyciIiKilGSi7wL+ycSJE+Hs7Ixly5Ypy1xcXJT/FxHMmDEDQ4YMQb169QAAK1euhIODA7Zt24amTZt+95qJiIiIKOWpuqd1x44dKFWqFBo1aoRMmTKhePHiWLRokbL+4cOHCAwMRNWqVZVlNjY2cHNzw5kzZz653ZiYGISHh+v8EBEREZF6qTq0PnjwAPPmzUPu3Lmxf/9+/Prrr+jRowdWrFgBAAgMDAQAODg46DzPwcFBWfcx48ePh42NjfLj7Oz87XaCiIiIiP4zVYfWxMRElChRAuPGjUPx4sXh6+uLTp06Yf78+f9pu35+fggLC1N+AgICUqhiIiIiIvoWVB1af/rpJxQoUEBnWf78+fHkyRMAgKOjIwAgKChIp01QUJCy7mPMzMxgbW2t80NERERE6qXq0Fq2bFncvXtXZ9m9e/eQLVs2AEkXZTk6OuLw4cPK+vDwcJw7dw4eHh7ftVYiIiIi+nZUPXtAr169UKZMGYwbNw6NGzfGX3/9hYULF2LhwoUAAI1Gg549e2LMmDHInTs3XFxcMHToUDg5OaF+/fr6LZ6IiIiIUoyqQ6urqyu2bt0KPz8/jBo1Ci4uLpgxYwZatGihtOnfvz8iIyPh6+uL0NBQlCtXDvv27YO5ubkeKyciIiKilKTq0AoAderUQZ06dT65XqPRYNSoURg1atR3rIqIiIiIvidVj2klIiIiIgIYWomIiIjIADC0EhEREZHqMbQSERERkeoxtBIRERGR6jG0EhEREZHqMbQSERERkeoxtBIRERGR6jG0EhEREZHqMbQSERERkeoxtBIRERGR6jG0EhEREZHqMbQSERERkeoxtBIRERGR6jG0EhEREZHqMbQSERERkeoxtBIRERGR6jG0EhEREZHqMbQSERERkeoxtBIRERGR6jG0EhEREZHqMbQSERERkeoxtBIRERGR6jG0EhEREZHqMbQSERERkeoZVGidMGECNBoNevbsqSyLjo5G165dYW9vD0tLS/j4+CAoKEh/RRIRERFRijOY0Hr+/HksWLAARYoU0Vneq1cv7Ny5Exs3bsTx48fx/PlzNGzYUE9VEhEREdG3YBChNSIiAi1atMCiRYuQPn16ZXlYWBiWLFmCadOmoXLlyihZsiSWLVuG06dP4+zZs3qsmIiIiIhSkkGE1q5du6J27dqoWrWqzvKLFy8iLi5OZ3m+fPmQNWtWnDlz5pPbi4mJQXh4uM4PEREREamXib4L+Dfr16/HpUuXcP78+Q/WBQYGIk2aNLC1tdVZ7uDggMDAwE9uc/z48Rg5cmRKl0pERERE34iqe1oDAgLw22+/Yc2aNTA3N0+x7fr5+SEsLEz5CQgISLFtExEREVHKU3VovXjxIoKDg1GiRAmYmJjAxMQEx48fx8yZM2FiYgIHBwfExsYiNDRU53lBQUFwdHT85HbNzMxgbW2t80NERERE6qXq4QFVqlTB9evXdZa1a9cO+fLlw4ABA+Ds7AxTU1McPnwYPj4+AIC7d+/iyZMn8PDw0EfJRERERPQNqDq0WllZoVChQjrL0qVLB3t7e2V5hw4d0Lt3b9jZ2cHa2hrdu3eHh4cH3N3d9VEyEREREX0Dqg6tn2P69OkwMjKCj48PYmJi4OXlhblz5+q7LCIiIiJKQQYXWo8dO6bz2NzcHHPmzMGcOXP0UxARERERfXOqvhCLiIiIiAhgaCUiIiIiA8DQSkRERESqx9BKRERERKrH0EpEREREqsfQSkRERESqx9BKRERERKrH0EpEREREqsfQSkRERESqx9BKRERERKrH0EpEREREqsfQSkRERESqx9BKRERERKrH0EpEREREqsfQSkRERESqx9BKRERERKrH0EpEREREqsfQSkRERESqx9BKRERERKrH0EpEREREqsfQSkRERESqx9BKRERERKrH0EpEREREqsfQSkRERESqx9BKRERERKrH0EpEREREqqf60Dp+/Hi4urrCysoKmTJlQv369XH37l2dNtHR0ejatSvs7e1haWkJHx8fBAUF6aliIiIiIkppqg+tx48fR9euXXH27FkcPHgQcXFxqF69OiIjI5U2vXr1ws6dO7Fx40YcP34cz58/R8OGDfVYNRERERGlJBN9F/Bv9u3bp/N4+fLlyJQpEy5evIgKFSogLCwMS5Yswdq1a1G5cmUAwLJly5A/f36cPXsW7u7uH2wzJiYGMTExyuPw8PBvuxNERERE9J+ovqf1fWFhYQAAOzs7AMDFixcRFxeHqlWrKm3y5cuHrFmz4syZMx/dxvjx42FjY6P8ODs7f/vCiYiIiOirGVRoTUxMRM+ePVG2bFkUKlQIABAYGIg0adLA1tZWp62DgwMCAwM/uh0/Pz+EhYUpPwEBAd+6dCIiIiL6D1Q/PCC5rl274saNGzh16tR/2o6ZmRnMzMxSqCoiIiIi+tYMpqe1W7du2LVrF44ePYosWbIoyx0dHREbG4vQ0FCd9kFBQXB0dPzOVRIRERHRt6D60Coi6NatG7Zu3YojR47AxcVFZ33JkiVhamqKw4cPK8vu3r2LJ0+ewMPD43uXS0RERETfgOqHB3Tt2hVr167F9u3bYWVlpYxTtbGxgYWFBWxsbNChQwf07t0bdnZ2sLa2Rvfu3eHh4fHRmQOIiIiIyPCoPrTOmzcPAODp6amzfNmyZWjbti0AYPr06TAyMoKPjw9iYmLg5eWFuXPnfudKiYiIiOhbUX1oFZF/bWNubo45c+Zgzpw536EiIiIiIvreVD+mlYiIiIiIoZWIiIiIVI+hlYiIiIhUj6GViIiIiFSPoZWIiIiIVI+hlYiIiIhUj6GViIiIiFRP9fO0EhERERmq39/8ru8Svspv6X/TdwkfYE8rEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERERqR5DKxERERGpHkMrEREREakeQysRERER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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# MAE Plot\n",
+ "plt.figure(figsize=(20, 5))\n",
+ "plt.subplot(1, 3, 2)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['MAE'], color='lightgreen') # Changed to plt.bar()\n",
+ "plt.ylabel('MAE') # Set y-label to MAE\n",
+ "plt.xlabel('Model') # Set x-label to Model\n",
+ "plt.xticks(rotation=45,ha='right') # Rotate x-axis labels for better readability\n",
+ "plt.title('MAE for Different Models')\n",
+ "\n",
+ "plt.tight_layout()\n",
+ "plt.show()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 506
+ },
+ "id": "vxK0_IkL1zaU",
+ "outputId": "69c4c24b-f6d5-4a4c-f85a-baa8455475e5"
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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R0eYm5sjV65caNq0KW7duvWPz9u0aROKFy8OExMTlClTBnv27NF5XEQwevRo5M6dG6ampnB1dcXt27fTqxtERERE9BXoNbgePXoUffr0wenTp3Hw4EHEx8fDzc0N0dHRH3zOyZMn0a5dO3z//fe4dOkSmjZtiqZNm+LatWtKm2nTpmHu3Lnw9fXFmTNnkDVrVri7u+Pt27dfo1tERERElA40IiL6LkLr2bNnyJUrF44ePYpatWq9t02bNm0QHR2NXbt2KduqVq2K8uXLw9fXFyICOzs7DBw4EIMGDQIAREREwMbGBitWrEDbtm3/sY7IyEhYWloiIiKCy2ERERERpbNPzV4Zao5rREQEACB79uwfbHPq1Cm4urrqbHN3d8epU6cAAPfu3UNoaKhOG0tLSzg5OSlt3hUbG4vIyEidGxERERFlLBkmuCYlJaF///6oXr06Spcu/cF2oaGhsLGx0dlmY2OD0NBQ5XHttg+1edfkyZNhaWmp3Hi5VyIiIqKMJ8ME1z59+uDatWvw8/P76j/bx8cHERERyu3Ro0dfvQYiIiIi+rgMccnXvn37YteuXTh27Bjy5s370ba2trYICwvT2RYWFgZbW1vlce223Llz67QpX778e/dpbGwMY2Pjf9EDIiIiIkpveh1xFRH07dsX27Ztw+HDh1GgQIF/fI6zszP8/f11th08eBDOzs4AgAIFCsDW1lanTWRkJM6cOaO0ISIiIiL10euIa58+fbBu3Trs2LED5ubmyhxUS0tLmJqaAgA6d+6MPHnyYPLkyQCAn3/+GbVr18bMmTPh4eEBPz8/nD9/HosXLwYAaDQa9O/fHxMmTECRIkVQoEABjBo1CnZ2dmjatKle+klA/LiB+i4hzYzGzNR3CURERJSCXoPrwoULAQAuLi4623///Xd07doVAPDw4UMYGPxvYLhatWpYt24dRo4cieHDh6NIkSLYvn27zgldQ4YMQXR0NHr27Inw8HDUqFED+/btg4mJSbr3iYiIiIjSR4ZaxzWj4DquXx5HXImIiOhDVLmOKxERERHRhzC4EhEREZEqMLgSERERkSowuBIRERGRKjC4EhEREZEqMLgSERERkSowuBIRERGRKjC4EhEREZEqMLgSERERkSowuBIRERGRKjC4EhEREZEqMLgSERERkSowuBIRERGRKjC4EhEREZEqMLgSERERkSowuBIRERGRKjC4EhEREZEqMLgSERERkSowuBIRERGRKjC4EhEREZEqMLgSERERkSowuBIRERGRKjC4EhEREZEqMLgSERERkSowuBIRERGRKjC4EhEREZEqMLgSERERkSroNbgeO3YMnp6esLOzg0ajwfbt2z/avmvXrtBoNKlupUqVUtqMHTs21ePFixdP554QERERUXrTa3CNjo5GuXLlMH/+/E9q/+uvvyIkJES5PXr0CNmzZ0erVq102pUqVUqn3YkTJ9KjfCIiIiL6ijLp84c3aNAADRo0+OT2lpaWsLS0VO5v374dr169Qrdu3XTaZcqUCba2tp+839jYWMTGxir3IyMjP/m5RERERPR1qHqO67Jly+Dq6or8+fPrbL99+zbs7OxQsGBBdOjQAQ8fPvzofiZPnqyEYktLS9jb26dn2URERET0GVQbXJ88eYK9e/eiR48eOtudnJywYsUK7Nu3DwsXLsS9e/dQs2ZNvH79+oP78vHxQUREhHJ79OhRepdPRERERGmk16kC/8bKlSthZWWFpk2b6mxPOfWgbNmycHJyQv78+bFx40Z8//33792XsbExjI2N07NcIiIiIvqXVDniKiJYvnw5OnXqhMyZM3+0rZWVFYoWLYo7d+58peqIiIiIKD2oMrgePXoUd+7c+eAIakpRUVEICgpC7ty5v0JlRERERJRe9Bpco6KiEBgYiMDAQADAvXv3EBgYqJxM5ePjg86dO6d63rJly+Dk5ITSpUunemzQoEE4evQo7t+/j5MnT6JZs2YwNDREu3bt0rUvRERERJS+9DrH9fz586hTp45y39vbGwDQpUsXrFixAiEhIalWBIiIiMCWLVvw66+/vnefwcHBaNeuHV68eAFra2vUqFEDp0+fhrW1dfp1hIiIiIjSnV6Dq4uLC0Tkg4+vWLEi1TZLS0vExMR88Dl+fn5fojQiIiIiymBUOceViIiIiP57GFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBX0GlyPHTsGT09P2NnZQaPRYPv27R9tHxAQAI1Gk+oWGhqq027+/PlwcHCAiYkJnJyccPbs2XTsBRERERF9DXoNrtHR0ShXrhzmz5+fpufdunULISEhyi1XrlzKYxs2bIC3tzfGjBmDixcvoly5cnB3d8fTp0+/dPlERERE9BVl0ucPb9CgARo0aJDm5+XKlQtWVlbvfWzWrFnw8vJCt27dAAC+vr7YvXs3li9fjmHDhv2bcomIiIhIj1Q5x7V8+fLInTs36tWrhz///FPZHhcXhwsXLsDV1VXZZmBgAFdXV5w6deqD+4uNjUVkZKTOjYiIiIgyFlUF19y5c8PX1xdbtmzBli1bYG9vDxcXF1y8eBEA8Pz5cyQmJsLGxkbneTY2NqnmwaY0efJkWFpaKjd7e/t07QcRERERpZ1epwqkVbFixVCsWDHlfrVq1RAUFITZs2dj9erVn71fHx8feHt7K/cjIyMZXomIiIgyGFUF1/epUqUKTpw4AQDImTMnDA0NERYWptMmLCwMtra2H9yHsbExjI2N07VOIiIiIvp3VDVV4H0CAwORO3duAEDmzJlRqVIl+Pv7K48nJSXB398fzs7O+iqRiIiIiL4AvY64RkVF4c6dO8r9e/fuITAwENmzZ0e+fPng4+ODx48fY9WqVQCAOXPmoECBAihVqhTevn2LpUuX4vDhwzhw4ICyD29vb3Tp0gWVK1dGlSpVMGfOHERHRyurDBARERGROuk1uJ4/fx516tRR7mvnmXbp0gUrVqxASEgIHj58qDweFxeHgQMH4vHjx8iSJQvKli2LQ4cO6eyjTZs2ePbsGUaPHo3Q0FCUL18e+/btS3XCFhERERGpi0ZERN9FZDSRkZGwtLREREQELCws9F3ONyF+3EB9l5BmRmNm6rsEIiKi/4RPzV6qn+NKRERERP8NDK5EREREpAoMrkRERESkCgyuRERERKQKDK5EREREpAoMrkRERESkCgyuRERERKQKDK5EREREpAoMrkRERESkCgyuRERERKQKDK5EREREpAoMrkRERESkCgyuRERERKQKDK5EREREpAoMrkRERESkCgyuRERERKQKDK5EREREpAoMrkRERESkCgyuRERERKQKDK5EREREpAoMrkRERESkCgyuRERERKQKDK5EREREpAoMrkRERESkCgyuRERERKQKDK5EREREpAoMrkRERESkCnoNrseOHYOnpyfs7Oyg0Wiwffv2j7bfunUr6tWrB2tra1hYWMDZ2Rn79+/XaTN27FhoNBqdW/HixdOxF0RERET0Neg1uEZHR6NcuXKYP3/+J7U/duwY6tWrhz179uDChQuoU6cOPD09cenSJZ12pUqVQkhIiHI7ceJEepRPRERERF9RJn3+8AYNGqBBgwaf3H7OnDk69ydNmoQdO3bgjz/+QIUKFZTtmTJlgq2t7SfvNzY2FrGxscr9yMjIT34uEREREX0dqp7jmpSUhNevXyN79uw622/fvg07OzsULFgQHTp0wMOHDz+6n8mTJ8PS0lK52dvbp2fZRERERPQZVB1cZ8yYgaioKLRu3VrZ5uTkhBUrVmDfvn1YuHAh7t27h5o1a+L169cf3I+Pjw8iIiKU26NHj75G+URERESUBnqdKvBvrFu3DuPGjcOOHTuQK1cuZXvKqQdly5aFk5MT8ufPj40bN+L7779/776MjY1hbGyc7jUTERER0edTZXD18/NDjx49sGnTJri6un60rZWVFYoWLYo7d+58peqIiIiIKD2obqrA+vXr0a1bN6xfvx4eHh7/2D4qKgpBQUHInTv3V6iOiIiIiNKLXkdco6KidEZC7927h8DAQGTPnh358uWDj48PHj9+jFWrVgFInh7QpUsX/Prrr3ByckJoaCgAwNTUFJaWlgCAQYMGwdPTE/nz58eTJ08wZswYGBoaol27dl+/g0RERET0xeh1xPX8+fOoUKGCspSVt7c3KlSogNGjRwMAQkJCdFYEWLx4MRISEtCnTx/kzp1buf38889Km+DgYLRr1w7FihVD69atkSNHDpw+fRrW1tZft3NERERE9EVpRET0XURGExkZCUtLS0RERMDCwkLf5XwT4scN1HcJaWY0Zqa+SyAiIvpP+NTspbo5rkRERET038TgSkRERESqwOBKRERERKrA4EpEREREqsDgSkRERESqwOBKRERERKrA4EpEREREqsDgSkRERESqwOBKRERERKrA4EpEREREqpCm4Nq7d29ERUUp99evX4/o6Gjlfnh4OBo2bPjlqiMiIiIi+n9pCq6LFi1CTEyMcv+HH35AWFiYcj82Nhb79+//ctUREREREf2/NAVXEfnofSIiIiKi9MI5rkRERESkCgyuRERERKQKmdL6hNGjRyNLliwAgLi4OEycOBGWlpYAoDP/lYiIiIjoS0pTcK1VqxZu3bql3K9WrRru3r2bqg0RERER0ZeWpuAaEBCQTmUQEREREX1cmqcKREZG4syZM4iLi0OVKlVgbW2dHnUREREREelIU3ANDAxEw4YNERoaCgAwNzfHxo0b4e7uni7FERERERFppWlVgaFDh6JAgQL4888/ceHCBdStWxd9+/ZNr9qIiIiIiBRpGnG9cOECDhw4gIoVKwIAli9fjuzZsyMyMhIWFhbpUiAREREREZDGEdeXL18ib968yn0rKytkzZoVL168+OKFERERERGllOaTs/766y9ljiuQfNnXGzdu4PXr18q2smXLfpnqiIiIiIj+X5qDa926dSEiOtsaNWoEjUYDEYFGo0FiYuIXK5CIiIiICEhjcL1371561UFERERE9FFpmuOaP3/+f7ylnDLwT44dOwZPT0/Y2dlBo9Fg+/bt//icgIAAVKxYEcbGxihcuDBWrFiRqs38+fPh4OAAExMTODk54ezZs2noJRERERFlRGkKrh/y+vVrLF68GFWqVEG5cuU++XnR0dEoV64c5s+f/0nt7927Bw8PD9SpUweBgYHo378/evTogf379yttNmzYAG9vb4wZMwYXL15EuXLl4O7ujqdPn6a5X0RERESUcWjk3QmraXDs2DEsW7YMW7ZsgZ2dHZo3b44WLVrA0dEx7YVoNNi2bRuaNm36wTZDhw7F7t27ce3aNWVb27ZtER4ejn379gEAnJyc4OjoiHnz5gEAkpKSYG9vj59++gnDhg37pFoiIyNhaWmJiIgILvP1hcSPG6jvEtLMaMxMfZdARET0n/Cp2SvNJ2eFhoZixYoVWLZsGSIjI9G6dWvExsZi+/btKFmy5L8q+p+cOnUKrq6uOtvc3d3Rv39/AEBcXBwuXLgAHx8f5XEDAwO4urri1KlTH9xvbGwsYmNjlfuRkZFftnAiIiIi+tfSNFXA09MTxYoVw5UrVzBnzhw8efIEv/32W3rVlkpoaChsbGx0ttnY2CAyMhJv3rzB8+fPkZiY+N42KZfwetfkyZNhaWmp3Ozt7dOlfiIiIiL6fGkKrnv37sX333+PcePGwcPDA4aGhulV11fl4+ODiIgI5fbo0SN9l0RERERE70hTcD1x4gRev36NSpUqwcnJCfPmzcPz58/Tq7ZUbG1tERYWprMtLCwMFhYWMDU1Rc6cOWFoaPjeNra2th/cr7GxMSwsLHRuRERERJSxpCm4Vq1aFUuWLEFISAh++OEH+Pn5wc7ODklJSTh48GCalsL6HM7OzvD399fZdvDgQTg7OwMAMmfOjEqVKum0SUpKgr+/v9KGiIiIiNTps5bDypo1K7p3744TJ07g6tWrGDhwIKZMmYJcuXKhcePGn7yfqKgoBAYGIjAwEEDycleBgYF4+PAhgOSv8Dt37qy0//HHH3H37l0MGTIEN2/exIIFC7Bx40YMGDBAaePt7Y0lS5Zg5cqVuHHjBnr16oXo6Gh069btc7pKRERERBnEv17HtVixYpg2bRqCg4Ph5+cHjUbzyc89f/48KlSogAoVKgBIDp0VKlTA6NGjAQAhISFKiAWAAgUKYPfu3Th48CDKlSuHmTNnYunSpXB3d1fatGnTBjNmzMDo0aNRvnx5BAYGYt++falO2CIiIiIidUnTOq7du3f/pHbLly//7IIyAq7j+uVxHVciIiL6kHRZx3XFihXInz8/KlSogA/l3bSMuBIRERERfao0BddevXph/fr1uHfvHrp164aOHTsie/bs6VUbEREREZEiTXNc58+fj5CQEAwZMgR//PEH7O3t0bp1a+zfv/+DI7BERERERF9Cmk/OMjY2Rrt27XDw4EH89ddfKFWqFHr37g0HBwdERUWlR41ERERERP9uVQEDAwNoNBqICBITE79UTUREREREqaQ5uMbGxmL9+vWoV68eihYtiqtXr2LevHl4+PAhzMzM0qNGIiIiIqK0nZzVu3dv+Pn5wd7eHt27d8f69euRM2fO9KqNiIiIiEiRpuDq6+uLfPnyoWDBgjh69CiOHj363nZbt279IsUREREREWmlKbh27tyZ67QSERERkV6k+QIERERERET68K9WFSAiIiIi+loYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFRhciYiIiEgVGFyJiIiISBUYXImIiIhIFTJEcJ0/fz4cHBxgYmICJycnnD179oNtXVxcoNFoUt08PDyUNl27dk31eP369b9GV4iI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Y2FoaIgrV65g5cqVCA8Ph52dHdzc3DB+/HgYGxt/1b4RERERAUD8uIH6LiHNjMbM1HcJqeg9uAJA37590bdv3/c+FhAQoHP//v37H92Xqakp9u/f/4UqIyIiIqKMQu9TBYiIiIiIPgWDKxERERGpAoMrEREREakCgysRERERqQKDKxERERGpAoMrEREREakCgysRERERqQKDKxERERGpAoMrEREREakCgysRERERqQKDKxERERGpAoMrEREREakCgysRERERqQKDKxERERGpAoMrEREREakCgysRERERqQKDKxERERGpAoMrEREREakCgysRERERqQKDKxERERGpAoMrEREREakCgysRERERqQKDKxERERGpAoMrEREREakCgysRERERqQKDKxERERGpAoMrEREREalChgiu8+fPh4ODA0xMTODk5ISzZ89+tP2mTZtQvHhxmJiYoEyZMtizZ4/O4yKC0aNHI3fu3DA1NYWrqytu376dnl0gIiIionSm9+C6YcMGeHt7Y8yYMbh48SLKlSsHd3d3PH369L3tT548iXbt2uH777/HpUuX0LRpUzRt2hTXrl1T2kybNg1z586Fr68vzpw5g6xZs8Ld3R1v3779Wt0iIiIioi8sk74LmDVrFry8vNCtWzcAgK+vL3bv3o3ly5dj2LBhqdr/+uuvqF+/PgYPHgwAGD9+PA4ePIh58+bB19cXIoI5c+Zg5MiRaNKkCQBg1apVsLGxwfbt29G2bdtU+4yNjUVsbKxyPyIiAgAQGRn5xfv7IfGTh3+1n/WlGPlM+uS28W9j/7lRBmOUhtef/ct40tI/4NvvI/uX8fB3VBffBzOetP6O/hvazCUiH28oehQbGyuGhoaybds2ne2dO3eWxo0bv/c59vb2Mnv2bJ1to0ePlrJly4qISFBQkACQS5cu6bSpVauW9OvX7737HDNmjADgjTfeeOONN954402Pt0ePHn00O+p1xPX58+dITEyEjY2NznYbGxvcvHnzvc8JDQ19b/vQ0FDlce22D7V5l4+PD7y9vZX7SUlJePnyJXLkyAGNRpO2TmUgkZGRsLe3x6NHj2BhYaHvcr64b71/wLffR/ZP3b71/gHffh/ZP/X7VvooInj9+jXs7Ow+2k7vUwUyAmNjYxgbG+tss7Ky0k8x6cDCwkLVv8z/5FvvH/Dt95H9U7dvvX/A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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# MAPE Plot\n",
+ "plt.figure(figsize=(20, 5))\n",
+ "plt.subplot(1, 3, 3)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['MAPE'], color='salmon')\n",
+ "plt.ylabel('MAPE')\n",
+ "plt.xlabel('Model')\n",
+ "plt.xticks(rotation=45,ha='right')\n",
+ "plt.title('MAPE for Different Models')\n",
+ "\n",
+ "plt.tight_layout()\n",
+ "plt.show()\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3",
+ "name": "python3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
diff --git a/Python File/Stock_Price_Prediction.ipynb b/Python File/Stock_Price_Prediction.ipynb
deleted file mode 100644
index c82b075..0000000
--- a/Python File/Stock_Price_Prediction.ipynb
+++ /dev/null
@@ -1,2708 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "id": "qCDSjVhXLr_Z"
- },
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "import numpy as np\n",
- "from sklearn.model_selection import train_test_split\n",
- "from sklearn.linear_model import LinearRegression\n",
- "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, accuracy_score, precision_score, confusion_matrix, recall_score, f1_score"
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "from google.colab import drive\n",
- "drive.mount('/content/drive')\n",
- "df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "SOQbXSiB-g5G",
- "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e"
- },
- "execution_count": 22,
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
- ]
- }
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "Sc4id6VxL8BS",
- "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " Date Open High Low Close Adj Close \\\n",
- "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
- "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
- "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
- "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
- "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
- "\n",
- " Volume \n",
- "0 43733533.0 \n",
- "1 56167280.0 \n",
- "2 68296318.0 \n",
- "3 86073880.0 \n",
- "4 76613039.0 "
- ],
- "text/html": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Date \n",
- " Open \n",
- " High \n",
- " Low \n",
- " Close \n",
- " Adj Close \n",
- " Volume \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 01-01-1996 \n",
- " 18.691147 \n",
- " 18.978922 \n",
- " 18.540184 \n",
- " 18.823240 \n",
- " 12.409931 \n",
- " 43733533.0 \n",
- " \n",
- " \n",
- " 1 \n",
- " 02-01-1996 \n",
- " 18.894005 \n",
- " 18.964767 \n",
- " 17.738192 \n",
- " 18.224106 \n",
- " 12.014931 \n",
- " 56167280.0 \n",
- " \n",
- " \n",
- " 2 \n",
- " 03-01-1996 \n",
- " 18.327892 \n",
- " 18.568489 \n",
- " 17.643839 \n",
- " 17.738192 \n",
- " 11.694577 \n",
- " 68296318.0 \n",
- " \n",
- " \n",
- " 3 \n",
- " 04-01-1996 \n",
- " 17.502312 \n",
- " 17.832542 \n",
- " 17.223972 \n",
- " 17.676863 \n",
- " 11.654142 \n",
- " 86073880.0 \n",
- " \n",
- " \n",
- " 4 \n",
- " 05-01-1996 \n",
- " 17.738192 \n",
- " 17.785366 \n",
- " 17.459852 \n",
- " 17.577793 \n",
- " 11.588827 \n",
- " 76613039.0 \n",
- " \n",
- " \n",
- "
\n",
- "
\n",
- "
\n",
- "
\n"
- ]
- },
- "metadata": {},
- "execution_count": 23
- }
- ],
- "source": [
- "# Load the dataset\n",
- "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
- "df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "id": "7LaYGXsfN-8y"
- },
- "outputs": [],
- "source": [
- "# Drop the 'Date' and 'Adj Close' columns\n",
- "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "pqbTBdnBOKJc",
- "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " Open High Low Close Volume\n",
- "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
- "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
- "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
- "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
- "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
- ],
- "text/html": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Open \n",
- " High \n",
- " Low \n",
- " Close \n",
- " Volume \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 18.691147 \n",
- " 18.978922 \n",
- " 18.540184 \n",
- " 18.823240 \n",
- " 43733533.0 \n",
- " \n",
- " \n",
- " 1 \n",
- " 18.894005 \n",
- " 18.964767 \n",
- " 17.738192 \n",
- " 18.224106 \n",
- " 56167280.0 \n",
- " \n",
- " \n",
- " 2 \n",
- " 18.327892 \n",
- " 18.568489 \n",
- " 17.643839 \n",
- " 17.738192 \n",
- " 68296318.0 \n",
- " \n",
- " \n",
- " 3 \n",
- " 17.502312 \n",
- " 17.832542 \n",
- " 17.223972 \n",
- " 17.676863 \n",
- " 86073880.0 \n",
- " \n",
- " \n",
- " 4 \n",
- " 17.738192 \n",
- " 17.785366 \n",
- " 17.459852 \n",
- " 17.577793 \n",
- " 76613039.0 \n",
- " \n",
- " \n",
- "
\n",
- "
\n",
- "
\n",
- "
\n"
- ]
- },
- "metadata": {},
- "execution_count": 25
- }
- ],
- "source": [
- "df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "id": "dydEPoNeM6eN"
- },
- "outputs": [],
- "source": [
- "# Handle missing values\n",
- "from sklearn.impute import SimpleImputer\n",
- "imputer = SimpleImputer(strategy='mean')\n",
- "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "id": "OQ3cGqgTMBwt"
- },
- "outputs": [],
- "source": [
- "# Select features and target variable\n",
- "X = df[['Open', 'High', 'Low', 'Volume']]\n",
- "y = df['Close']"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {
- "id": "9Oz-bwJOMEWD"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "id": "ugapDyXODtn3"
- },
- "outputs": [],
- "source": [
- "# Scale the features using Min-Max scaling\n",
- "from sklearn.preprocessing import MinMaxScaler\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "997ZEgibCZIO",
- "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "(5659, 4)"
- ]
- },
- "metadata": {},
- "execution_count": 29
- }
- ],
- "source": [
- "X_train.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "bmtt76RuCeyG",
- "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "(1415, 4)"
- ]
- },
- "metadata": {},
- "execution_count": 30
- }
- ],
- "source": [
- "X_test.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "CeJkUJ92Ciqd",
- "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "(5659,)"
- ]
- },
- "metadata": {},
- "execution_count": 31
- }
- ],
- "source": [
- "y_train.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "7HGC7VuTCjWc",
- "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "(1415,)"
- ]
- },
- "metadata": {},
- "execution_count": 32
- }
- ],
- "source": [
- "y_test.shape"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "c6Ek8jRlO2_I"
- },
- "source": [
- "## 1. LINEAR REGRESSION"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {
- "id": "RdZ1SpzdMHAJ"
- },
- "outputs": [],
- "source": [
- "# Create a linear regression model\n",
- "model1 = LinearRegression()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "mPM035IzMY04",
- "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "5286 257.350006\n",
- "3408 129.464996\n",
- "5477 279.350006\n",
- "6906 588.500000\n",
- "530 21.644367\n",
- "Name: Close, dtype: float64"
- ]
- },
- "metadata": {},
- "execution_count": 34
- }
- ],
- "source": [
- "y_train.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "qBhQ9HbYMI3d",
- "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "LinearRegression()"
- ],
- "text/html": [
- "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 35
- }
- ],
- "source": [
- "# Train the model\n",
- "model1.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "id": "X269co2kMS4z"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred1 = model1.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "metadata": {
- "id": "QK8GvDYPOd0Y"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse1 = np.sqrt(mean_squared_error(y_test, pred1))\n",
- "mae1 = mean_absolute_error(y_test, pred1)\n",
- "mape1 = mean_absolute_percentage_error(y_test, pred1)\n",
- "accuracy1 = accuracy_score(y_test > pred1, y_test > pred1.round())\n",
- "precision1 = precision_score(y_test > pred1, y_test > pred1.round())\n",
- "confusion1 = confusion_matrix(y_test > pred1, y_test > pred1.round())\n",
- "recall1 = recall_score(y_test > pred1, y_test > pred1.round())\n",
- "f11 = f1_score(y_test > pred1, y_test > pred1.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "dEi49xtEOtne",
- "outputId": "0000b074-3187-41de-fbac-4ae75cbda6bd"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 1.6881364643681482\n",
- "MAE: 0.9433353485344729\n",
- "MAPE: 0.006085435990853812\n",
- "Accuracy: 0.8296819787985866\n",
- "Precision: 0.8623595505617978\n",
- "Confusion Matrix:\n",
- " [[560 98]\n",
- " [143 614]]\n",
- "Recall: 0.8110964332892999\n",
- "F1 Score: 0.8359428182437032\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse1)\n",
- "print(\"MAE:\", mae1)\n",
- "print(\"MAPE:\", mape1)\n",
- "print(\"Accuracy:\", accuracy1)\n",
- "print(\"Precision:\", precision1)\n",
- "print(\"Confusion Matrix:\\n\", confusion1)\n",
- "print(\"Recall:\", recall1)\n",
- "print(\"F1 Score:\", f11)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "GxtMzlg-gR2P"
- },
- "source": [
- "## 2. SVR"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "metadata": {
- "id": "o7K9r7EXWRjQ"
- },
- "outputs": [],
- "source": [
- "from sklearn.svm import SVR"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {
- "id": "0xQewd7QWTtq"
- },
- "outputs": [],
- "source": [
- "# Create an SVR model\n",
- "model2 = SVR()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "metadata": {
- "id": "DuNes3s6U2IV"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "22SaCsQmfhgP",
- "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "SVR()"
- ],
- "text/html": [
- "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 42
- }
- ],
- "source": [
- "# Train the model\n",
- "model2.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {
- "id": "OQ1nL4oYfkAC"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred2 = model2.predict(X_test)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 44,
- "metadata": {
- "id": "nRYTwydsfpjb"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse2 = np.sqrt(mean_squared_error(y_test, pred2))\n",
- "mae2 = mean_absolute_error(y_test, pred2)\n",
- "mape2 = mean_absolute_percentage_error(y_test, pred2)\n",
- "accuracy2 = accuracy_score(y_test > pred2, y_test > pred2.round())\n",
- "precision2 = precision_score(y_test > pred2, y_test > pred2.round())\n",
- "confusion2 = confusion_matrix(y_test > pred2, y_test > pred2.round())\n",
- "recall2 = recall_score(y_test > pred2, y_test > pred2.round())\n",
- "f12 = f1_score(y_test > pred2, y_test > pred2.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 45,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "656J5oz5fzq6",
- "outputId": "ce67d2d8-0bc8-4e6d-d6b5-6b78e7e1c59b"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 147.71103599153602\n",
- "MAE: 110.99419106508152\n",
- "MAPE: 1.9715076513294716\n",
- "Accuracy: 0.9992932862190813\n",
- "Precision: 1.0\n",
- "Confusion Matrix:\n",
- " [[727 0]\n",
- " [ 1 687]]\n",
- "Recall: 0.998546511627907\n",
- "F1 Score: 0.9992727272727273\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse2)\n",
- "print(\"MAE:\", mae2)\n",
- "print(\"MAPE:\", mape2)\n",
- "print(\"Accuracy:\", accuracy2)\n",
- "print(\"Precision:\", precision2)\n",
- "print(\"Confusion Matrix:\\n\", confusion2)\n",
- "print(\"Recall:\", recall2)\n",
- "print(\"F1 Score:\", f12)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "hcIfVMWdgcKt"
- },
- "source": [
- "## 3. Random Forest"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {
- "id": "f7raXT_hf2ij"
- },
- "outputs": [],
- "source": [
- "from sklearn.ensemble import RandomForestRegressor\n",
- "# Create a Random Forest model\n",
- "model3 = RandomForestRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {
- "id": "TadNM7MEU7fh"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "fF002Yepgk55",
- "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "RandomForestRegressor()"
- ],
- "text/html": [
- "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 48
- }
- ],
- "source": [
- "# Train the model\n",
- "model3.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {
- "id": "8nRU_pzEgnCt"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred3 = model3.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 50,
- "metadata": {
- "id": "4aKEXGVUgsry"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse3 = np.sqrt(mean_squared_error(y_test, pred3))\n",
- "mae3 = mean_absolute_error(y_test, pred3)\n",
- "mape3 = mean_absolute_percentage_error(y_test, pred3)\n",
- "accuracy3 = accuracy_score(y_test > pred3, y_test > pred3.round())\n",
- "precision3 = precision_score(y_test > pred3, y_test > pred3.round())\n",
- "confusion3 = confusion_matrix(y_test > pred3, y_test > pred3.round())\n",
- "recall3 = recall_score(y_test > pred3, y_test > pred3.round())\n",
- "f13 = f1_score(y_test > pred3, y_test > pred3.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "8pPzsCY1g305",
- "outputId": "72c4ea56-2610-41c6-f286-4c8289d3f0ac"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 2.189635498596314\n",
- "MAE: 1.250413817712252\n",
- "MAPE: 0.007984509559881612\n",
- "Accuracy: 0.8551236749116607\n",
- "Precision: 0.8558823529411764\n",
- "Confusion Matrix:\n",
- " [[628 98]\n",
- " [107 582]]\n",
- "Recall: 0.8447024673439768\n",
- "F1 Score: 0.8502556610664718\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse3)\n",
- "print(\"MAE:\", mae3)\n",
- "print(\"MAPE:\", mape3)\n",
- "print(\"Accuracy:\", accuracy3)\n",
- "print(\"Precision:\", precision3)\n",
- "print(\"Confusion Matrix:\\n\", confusion3)\n",
- "print(\"Recall:\", recall3)\n",
- "print(\"F1 Score:\", f13)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "mZsLwLivhLGH"
- },
- "source": [
- "## 4. Gradient Boosting Models (GBM)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "metadata": {
- "id": "TI8idoxOg6jF"
- },
- "outputs": [],
- "source": [
- "import xgboost as xgb\n",
- "# Create an XGBoost model\n",
- "model4 = xgb.XGBRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "metadata": {
- "id": "7r9xJDtOVBEA"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 248
- },
- "id": "2gpbDxshhexj",
- "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...)"
- ],
- "text/html": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) "
- ]
- },
- "metadata": {},
- "execution_count": 54
- }
- ],
- "source": [
- "# Train the model\n",
- "model4.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "id": "Jj9DXdUPhh9V"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred4 = model4.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 56,
- "metadata": {
- "id": "TdH60Sllhn5O"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse4 = np.sqrt(mean_squared_error(y_test, pred4))\n",
- "mae4 = mean_absolute_error(y_test, pred4)\n",
- "mape4 = mean_absolute_percentage_error(y_test, pred4)\n",
- "accuracy4 = accuracy_score(y_test > pred4, y_test > pred4.round())\n",
- "precision4 = precision_score(y_test > pred4, y_test > pred4.round())\n",
- "confusion4 = confusion_matrix(y_test > pred4, y_test > pred4.round())\n",
- "recall4 = recall_score(y_test > pred4, y_test > pred4.round())\n",
- "f14 = f1_score(y_test > pred4, y_test > pred4.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 57,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "qpnLeFyZhwB3",
- "outputId": "4dcac062-ec60-4b2c-ab4b-dcda1b0f2341"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 2.733930065274145\n",
- "MAE: 1.502457380471909\n",
- "MAPE: 0.010026410639661481\n",
- "Accuracy: 0.8840989399293286\n",
- "Precision: 0.8948106591865358\n",
- "Confusion Matrix:\n",
- " [[613 75]\n",
- " [ 89 638]]\n",
- "Recall: 0.8775790921595599\n",
- "F1 Score: 0.8861111111111112\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse4)\n",
- "print(\"MAE:\", mae4)\n",
- "print(\"MAPE:\", mape4)\n",
- "print(\"Accuracy:\", accuracy4)\n",
- "print(\"Precision:\", precision4)\n",
- "print(\"Confusion Matrix:\\n\", confusion4)\n",
- "print(\"Recall:\", recall4)\n",
- "print(\"F1 Score:\", f14)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "d8nSGoyuh9dx"
- },
- "source": [
- "## 5. Extreme Gradient Boosting (XGBoost)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 58,
- "metadata": {
- "id": "DyhhdlZAhx94"
- },
- "outputs": [],
- "source": [
- "import xgboost as xgb\n",
- "# Create an XGBoost model\n",
- "model5 = xgb.XGBRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 59,
- "metadata": {
- "id": "Z_AD0lVOVHwB"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 248
- },
- "id": "RAIwxIp5iH9Z",
- "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...)"
- ],
- "text/html": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) "
- ]
- },
- "metadata": {},
- "execution_count": 60
- }
- ],
- "source": [
- "# Train the model\n",
- "model5.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 61,
- "metadata": {
- "id": "XmJds5fYiKT3"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred5 = model5.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 62,
- "metadata": {
- "id": "lZ1A0-L8iNCM"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse5 = np.sqrt(mean_squared_error(y_test, pred5))\n",
- "mae5 = mean_absolute_error(y_test, pred5)\n",
- "mape5 = mean_absolute_percentage_error(y_test, pred5)\n",
- "accuracy5 = accuracy_score(y_test > pred5, y_test > pred5.round())\n",
- "precision5 = precision_score(y_test > pred5, y_test > pred5.round())\n",
- "confusion5 = confusion_matrix(y_test > pred5, y_test > pred5.round())\n",
- "recall5 = recall_score(y_test > pred5, y_test > pred5.round())\n",
- "f15 = f1_score(y_test > pred5, y_test > pred5.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "7IkE-RAmiWNo",
- "outputId": "cf4c1d84-412b-4a18-f70c-65ce637772ea"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 2.733930065274145\n",
- "MAE: 1.502457380471909\n",
- "MAPE: 0.010026410639661481\n",
- "Accuracy: 0.8840989399293286\n",
- "Precision: 0.8948106591865358\n",
- "Confusion Matrix:\n",
- " [[613 75]\n",
- " [ 89 638]]\n",
- "Recall: 0.8775790921595599\n",
- "F1 Score: 0.8861111111111112\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse5)\n",
- "print(\"MAE:\", mae5)\n",
- "print(\"MAPE:\", mape5)\n",
- "print(\"Accuracy:\", accuracy5)\n",
- "print(\"Precision:\", precision5)\n",
- "print(\"Confusion Matrix:\\n\", confusion5)\n",
- "print(\"Recall:\", recall5)\n",
- "print(\"F1 Score:\", f15)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "A_J776rtiovq"
- },
- "source": [
- "## 6. AdaBoostRegressor"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "id": "HNq66cXRiYPJ"
- },
- "outputs": [],
- "source": [
- "from sklearn.ensemble import AdaBoostRegressor\n",
- "# Create an AdaBoost model\n",
- "model6 = AdaBoostRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 65,
- "metadata": {
- "id": "qPHH6rG0VW4V"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 66,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "P0oB5wjQivBr",
- "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "AdaBoostRegressor()"
- ],
- "text/html": [
- "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 66
- }
- ],
- "source": [
- "# Train the model\n",
- "model6.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "metadata": {
- "id": "Bf1m5ukOi2VM"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred6 = model6.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 68,
- "metadata": {
- "id": "oFWSqC4ai6gd"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse6 = np.sqrt(mean_squared_error(y_test, pred6))\n",
- "mae6 = mean_absolute_error(y_test, pred6)\n",
- "mape6 = mean_absolute_percentage_error(y_test, pred6)\n",
- "accuracy6 = accuracy_score(y_test > pred6, y_test > pred6.round())\n",
- "precision6 = precision_score(y_test > pred6, y_test > pred6.round())\n",
- "confusion6 = confusion_matrix(y_test > pred6, y_test > pred6.round())\n",
- "recall6 = recall_score(y_test > pred6, y_test > pred6.round())\n",
- "f16 = f1_score(y_test > pred6, y_test > pred6.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 69,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "BsajWJGBjC80",
- "outputId": "1af1194f-9a33-40af-8578-c99832509c1b"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 9.283285018137352\n",
- "MAE: 7.574989783595977\n",
- "MAPE: 0.16829256716397573\n",
- "Accuracy: 0.9901060070671378\n",
- "Precision: 0.9900990099009901\n",
- "Confusion Matrix:\n",
- " [[901 5]\n",
- " [ 9 500]]\n",
- "Recall: 0.9823182711198428\n",
- "F1 Score: 0.9861932938856016\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse6)\n",
- "print(\"MAE:\", mae6)\n",
- "print(\"MAPE:\", mape6)\n",
- "print(\"Accuracy:\", accuracy6)\n",
- "print(\"Precision:\", precision6)\n",
- "print(\"Confusion Matrix:\\n\", confusion6)\n",
- "print(\"Recall:\", recall6)\n",
- "print(\"F1 Score:\", f16)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "Q9DzOt3CkWFX"
- },
- "source": [
- "## 7. Decision Tree"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 70,
- "metadata": {
- "id": "23DZ2biSjF9a"
- },
- "outputs": [],
- "source": [
- "from sklearn.tree import DecisionTreeRegressor\n",
- "# Create a Decision Tree model\n",
- "model7 = DecisionTreeRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 71,
- "metadata": {
- "id": "Ajo2RAVAVb7H"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 72,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "6mQEQf-ykc9F",
- "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "DecisionTreeRegressor()"
- ],
- "text/html": [
- "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 72
- }
- ],
- "source": [
- "# Train the model\n",
- "model7.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 73,
- "metadata": {
- "id": "BFJ9q_tvkgRC"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred7 = model7.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 74,
- "metadata": {
- "id": "9IxfYZbYkjv1"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse7 = np.sqrt(mean_squared_error(y_test, pred7))\n",
- "mae7 = mean_absolute_error(y_test, pred7)\n",
- "mape7 = mean_absolute_percentage_error(y_test, pred7)\n",
- "accuracy7 = accuracy_score(y_test > pred7, y_test > pred7.round())\n",
- "precision7 = precision_score(y_test > pred7, y_test > pred7.round())\n",
- "confusion7 = confusion_matrix(y_test > pred7, y_test > pred7.round())\n",
- "recall7 = recall_score(y_test > pred7, y_test > pred7.round())\n",
- "f17 = f1_score(y_test > pred7, y_test > pred7.round())\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "AnZXMYb8kooV",
- "outputId": "273fa9ed-d6f2-4c4d-fb0e-a643f5ef5732"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 3.193539964582351\n",
- "MAE: 1.6240937361593886\n",
- "MAPE: 0.010136361140005275\n",
- "Accuracy: 0.8579505300353357\n",
- "Precision: 0.8700410396716827\n",
- "Confusion Matrix:\n",
- " [[578 95]\n",
- " [106 636]]\n",
- "Recall: 0.8571428571428571\n",
- "F1 Score: 0.8635437881873728\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse7)\n",
- "print(\"MAE:\", mae7)\n",
- "print(\"MAPE:\", mape7)\n",
- "print(\"Accuracy:\", accuracy7)\n",
- "print(\"Precision:\", precision7)\n",
- "print(\"Confusion Matrix:\\n\", confusion7)\n",
- "print(\"Recall:\", recall7)\n",
- "print(\"F1 Score:\", f17)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "LH-B-Xd6k5UD"
- },
- "source": [
- "## 8. KNeighborsRegressor(KNN)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 76,
- "metadata": {
- "id": "JVDSed7yktFY"
- },
- "outputs": [],
- "source": [
- "from sklearn.neighbors import KNeighborsRegressor\n",
- "# Create a KNN model\n",
- "model8 = KNeighborsRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 77,
- "metadata": {
- "id": "XJHb5SxrVgVp"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 78,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "9fn64o-ZlBka",
- "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "KNeighborsRegressor()"
- ],
- "text/html": [
- "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 78
- }
- ],
- "source": [
- "# Train the model\n",
- "model8.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "metadata": {
- "id": "hbfbbjcSlDn7"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred8 = model8.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 80,
- "metadata": {
- "id": "hnWyNv3blHdL"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse8 = np.sqrt(mean_squared_error(y_test, pred8))\n",
- "mae8 = mean_absolute_error(y_test, pred8)\n",
- "mape8 = mean_absolute_percentage_error(y_test, pred8)\n",
- "accuracy8 = accuracy_score(y_test > pred8, y_test > pred8.round())\n",
- "precision8 = precision_score(y_test > pred8, y_test > pred8.round())\n",
- "confusion8 = confusion_matrix(y_test > pred8, y_test > pred8.round())\n",
- "recall8 = recall_score(y_test > pred8, y_test > pred8.round())\n",
- "f18 = f1_score(y_test > pred8, y_test > pred8.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 81,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "IPoDRkcMlMAr",
- "outputId": "9892f42f-e65f-46c0-eeed-77ce32f6a7eb"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 148.73183825029315\n",
- "MAE: 109.35229571264969\n",
- "MAPE: 1.75024316976612\n",
- "Accuracy: 0.9908127208480565\n",
- "Precision: 0.9887820512820513\n",
- "Confusion Matrix:\n",
- " [[785 7]\n",
- " [ 6 617]]\n",
- "Recall: 0.9903691813804173\n",
- "F1 Score: 0.9895749799518845\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse8)\n",
- "print(\"MAE:\", mae8)\n",
- "print(\"MAPE:\", mape8)\n",
- "print(\"Accuracy:\", accuracy8)\n",
- "print(\"Precision:\", precision8)\n",
- "print(\"Confusion Matrix:\\n\", confusion8)\n",
- "print(\"Recall:\", recall8)\n",
- "print(\"F1 Score:\", f18)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "X5XtlzMXljps"
- },
- "source": [
- "## 9. Artificial Neural Networks (ANN)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 82,
- "metadata": {
- "id": "bJk1-9VhlRL6"
- },
- "outputs": [],
- "source": [
- "from sklearn.preprocessing import MinMaxScaler\n",
- "from tensorflow.keras.models import Sequential\n",
- "from tensorflow.keras.layers import Dense"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 83,
- "metadata": {
- "id": "sZVPMR9Wlo7-"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 84,
- "metadata": {
- "id": "vd1fDjQiltP4"
- },
- "outputs": [],
- "source": [
- "# Create an ANN model\n",
- "model9 = Sequential()\n",
- "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
- "model9.add(Dense(16, activation='relu'))\n",
- "model9.add(Dense(1, activation='linear'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 85,
- "metadata": {
- "id": "ZIf94WLMlv04"
- },
- "outputs": [],
- "source": [
- "# Compile the model\n",
- "model9.compile(loss='mean_squared_error', optimizer='adam')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "FX5DTKqslxWf",
- "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "execution_count": 86
- }
- ],
- "source": [
- "# Train the model\n",
- "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 87,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "OVW2qpNsmGVq",
- "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "45/45 [==============================] - 0s 1ms/step\n"
- ]
- }
- ],
- "source": [
- "# Make predictions on the test set\n",
- "pred9 = model9.predict(X_test_scaled).flatten()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 88,
- "metadata": {
- "id": "CqRmjMj2maJY"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse9 = np.sqrt(mean_squared_error(y_test, pred9))\n",
- "mae9 = mean_absolute_error(y_test, pred9)\n",
- "mape9 = mean_absolute_percentage_error(y_test, pred9)\n",
- "accuracy9 = accuracy_score(y_test > pred9, y_test > pred9.round())\n",
- "precision9 = precision_score(y_test > pred9, y_test > pred9.round())\n",
- "confusion9 = confusion_matrix(y_test > pred9, y_test > pred9.round())\n",
- "recall9 = recall_score(y_test > pred9, y_test > pred9.round())\n",
- "f19 = f1_score(y_test > pred9, y_test > pred9.round())\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 89,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "5zuwkC1emmh3",
- "outputId": "5d6a0e05-3112-4d27-f5fb-ed665867b22d"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 2.7570259701356035\n",
- "MAE: 1.7412277270507284\n",
- "MAPE: 0.012205298865408084\n",
- "Accuracy: 0.8904593639575972\n",
- "Precision: 0.8242753623188406\n",
- "Confusion Matrix:\n",
- " [[805 97]\n",
- " [ 58 455]]\n",
- "Recall: 0.8869395711500975\n",
- "F1 Score: 0.8544600938967135\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse9)\n",
- "print(\"MAE:\", mae9)\n",
- "print(\"MAPE:\", mape9)\n",
- "print(\"Accuracy:\", accuracy9)\n",
- "print(\"Precision:\", precision9)\n",
- "print(\"Confusion Matrix:\\n\", confusion9)\n",
- "print(\"Recall:\", recall9)\n",
- "print(\"F1 Score:\", f19)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "vjSMQNcOnFPJ"
- },
- "source": [
- "## 10. LSTM(Long Short term Memory)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 90,
- "metadata": {
- "id": "nCoyUanhnDKw"
- },
- "outputs": [],
- "source": [
- "from sklearn.preprocessing import MinMaxScaler\n",
- "from tensorflow.keras.models import Sequential\n",
- "from tensorflow.keras.layers import LSTM, Dense"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 91,
- "metadata": {
- "id": "ThcXESVEVv0U"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 92,
- "metadata": {
- "id": "uACvajfImrbB"
- },
- "outputs": [],
- "source": [
- "# Reshape the input data for LSTM\n",
- "n_features = X_train_scaled.shape[1]\n",
- "n_steps = 10\n",
- "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
- "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
- "\n",
- "# Reshape the input data\n",
- "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
- "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 93,
- "metadata": {
- "id": "r066pVYpnXH5"
- },
- "outputs": [],
- "source": [
- "# Create an LSTM model\n",
- "model = Sequential()\n",
- "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
- "model.add(Dense(1))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 94,
- "metadata": {
- "id": "YpSfHu6gov35"
- },
- "outputs": [],
- "source": [
- "# Compile the model\n",
- "model.compile(loss='mean_squared_error', optimizer='adam')\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 95,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "0vHjcluaoxzP",
- "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "execution_count": 95
- }
- ],
- "source": [
- "# Train the model\n",
- "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 96,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "gEE06_TjozYv",
- "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "44/44 [==============================] - 0s 4ms/step\n"
- ]
- }
- ],
- "source": [
- "# Make predictions on the test set\n",
- "y_pred = model.predict(X_test_reshaped).flatten()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 113,
- "metadata": {
- "id": "7k6C8DrxpB_Q"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse10 = np.sqrt(mean_squared_error(y_test[n_steps-1:], y_pred))\n",
- "mae10 = mean_absolute_error(y_test[n_steps-1:], y_pred)\n",
- "mape10 = mean_absolute_percentage_error(y_test[n_steps-1:], y_pred)\n",
- "accuracy10 = accuracy_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
- "precision10 = precision_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
- "recall10 = recall_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
- "f110 = f1_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
- "confusion10 = confusion_matrix(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 114,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "i_6-UUDhpi0c",
- "outputId": "3dcc5761-03b6-4b52-dfe6-08dece835c8d"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 10.083053125286519\n",
- "MAE: 7.973378150691296\n",
- "MAPE: 0.12730792351246625\n",
- "Accuracy: 0.9886201991465149\n",
- "Precision: 0.9904912836767037\n",
- "Recall: 0.984251968503937\n",
- "F1 Score: 0.9873617693522907\n",
- "Confusion Matrix:\n",
- " [[765 6]\n",
- " [ 10 625]]\n"
- ]
- }
- ],
- "source": [
- "# Print evaluation metrics\n",
- "print(\"RMSE:\", rmse10)\n",
- "print(\"MAE:\", mae10)\n",
- "print(\"MAPE:\", mape10)\n",
- "print(\"Accuracy:\", accuracy10)\n",
- "print(\"Precision:\", precision10)\n",
- "print(\"Recall:\", recall10)\n",
- "print(\"F1 Score:\", f110)\n",
- "print(\"Confusion Matrix:\\n\", confusion10)"
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of accuracies from accuracy1 to accuracy10\n",
- "accuracies = [accuracy1*100, accuracy2*100, accuracy3*100, accuracy4*100, accuracy5*100, accuracy6*100, accuracy7*100, accuracy8*100, accuracy9*100, accuracy10*100]\n",
- "\n",
- "# List of corresponding labels for each accuracy\n",
- "labels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, accuracies, color='blue')\n",
- "plt.xlabel('Accuracy Variables')\n",
- "plt.ylabel('Accuracy Values')\n",
- "plt.title('Bar Graph of Accuracies')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "qpWPtph9CGip",
- "outputId": "c099cb8d-96af-4223-f499-743040aecdf1"
- },
- "execution_count": 117,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDeUlEQVR4nO3deVxU9eL/8feAsogsbmypiEtiau4XNa1MzNLMLVOv5UbZTSiXvKWVmm2klbe00lspmqGYuWRWKuF263rdcSlzyy0T0JRVRYPz+8Of820ClYGBgdPr+XjM49F8zplz3gw+mjefs4zFMAxDAAAAJuXi7AAAAAAlibIDAABMjbIDAABMjbIDAABMjbIDAABMjbIDAABMjbIDAABMjbIDAABMjbIDAABMjbIDwGleeuklWSwWnT17tsT3tXr1ajVv3lweHh6yWCxKS0sr8X2WZ/PmzZPFYtGxY8ecHQUoNsoOUAKufVD88eHv769OnTrpm2++KfU8X375pXr06KGAgAC5ubmpatWquvPOO/X2228rIyOj1POUtt9++00PP/ywPD099f7772vBggXy8vK66es++OADWSwWhYeHl0JKACWlgrMDAGb28ssvKzQ0VIZhKCUlRfPmzVO3bt305Zdf6oEHHijx/efl5SkyMlLz5s1T06ZNNXLkSNWqVUuZmZnavHmzXnzxRX399ddKTEws8SzOtG3bNmVmZuqVV15RREREoV8XFxenOnXqaOvWrTp8+LDq169fginLlkcffVQDBgyQu7u7s6MAxUbZAUrQ/fffr9atW1ufR0ZGKiAgQIsWLXJI2cnLy9Ply5fl4eFR4PJp06Zp3rx5GjNmjN5++21ZLBbrslGjRun06dP65JNPirWP8iA1NVWS5OfnV+jXHD16VP/973+1bNkyPfHEE4qLi9PkyZNLKGHxZGdnF2qmyh6urq5ydXV16DYBZ+EwFlCK/Pz85OnpqQoVbP/OeOutt9S+fXtVq1ZNnp6eatWqlT7//PN8r7dYLIqOjlZcXJwaN24sd3d3rV69usB9XbhwQVOnTlXjxo315ptv2hSda4KCgvTcc88Veh9FydmwYUN5eHioVatW2rRpU4FZ09LSNHToUPn5+cnX11fDhg3ThQsXCn4T/2TJkiVq1aqVPD09Vb16dT3yyCM6deqUdfndd9+tIUOGSJLatGkji8WioUOH3nS7cXFxqlKlirp3766HHnpIcXFx180+ZswY1alTR+7u7qpZs6YGDx5scx7SpUuX9NJLL+nWW2+Vh4eHgoKC1KdPHx05ckSStGHDBlksFm3YsMFm28eOHZPFYtG8efOsY0OHDlXlypV15MgRdevWTd7e3ho0aJAk6T//+Y/69eun2rVry93dXbVq1dKYMWN08eLFfLl/+uknPfzww6pRo4Y8PT3VsGFDvfDCC9bl1ztn55tvvlHHjh3l5eUlb29vde/eXT/88IPNOsnJyRo2bJhq1qwpd3d3BQUFqWfPnpz/A6dhZgcoQenp6Tp79qwMw1BqaqpmzpyprKwsPfLIIzbrvfvuu3rwwQc1aNAgXb58WfHx8erXr59WrVql7t2726y7bt06ffbZZ4qOjlb16tVVp06dAvf93XffKS0tTePGjbP7L/Tr7cOenBs3btTixYv19NNPy93dXR988IHuu+8+bd26VU2aNLFZ9+GHH1ZoaKhiYmK0c+dOffzxx/L399fUqVNvmHPevHkaNmyY2rRpo5iYGKWkpOjdd9/V999/r127dsnPz08vvPCCGjZsqA8//NB6WLFevXo3fQ/i4uLUp08fubm5aeDAgZo1a5a2bdumNm3aWNfJyspSx44dtX//fg0fPlwtW7bU2bNntXLlSv3yyy+qXr26cnNz9cADDygxMVEDBgzQqFGjlJmZqYSEBO3bt69QWf7s999/V9euXdWhQwe99dZbqlSpkqSrxe/ChQt68sknVa1aNW3dulUzZ87UL7/8oiVLllhfv2fPHnXs2FEVK1bUiBEjVKdOHR05ckRffvmlXnvttevud8GCBRoyZIi6du2qqVOn6sKFC5o1a5Y6dOigXbt2Wf+d9O3bVz/88IOeeuop1alTR6mpqUpISNCJEyeu++8VKFEGAIeLjY01JOV7uLu7G/Pmzcu3/oULF2yeX7582WjSpIlxzz332IxLMlxcXIwffvjhphneffddQ5KxYsUKm/Hff//dOHPmjM0jLy+vUPuwJ6ckY/v27dax48ePGx4eHkbv3r2tY5MnTzYkGcOHD7d5fe/evY1q1ard8Oe7fPmy4e/vbzRp0sS4ePGidXzVqlWGJGPSpEnWsWu/j23btt1wm9ds377dkGQkJCQYhmEYeXl5Rs2aNY1Ro0bZrDdp0iRDkrFs2bJ827j2ns6dO9eQZEyfPv2666xfv96QZKxfv95m+dGjRw1JRmxsrHVsyJAhhiRj/Pjx+bb359+PYRhGTEyMYbFYjOPHj1vH7rzzTsPb29tm7I95DOP/3rOjR48ahmEYmZmZhp+fn/H444/bvCY5Odnw9fW1jp8/f96QZLz55pv5sgDOwmEsoAS9//77SkhIUEJCgj799FN16tRJjz32mJYtW2aznqenp/W/z58/r/T0dHXs2FE7d+7Mt8277rpLt9122033fe0qq8qVK9uM7927VzVq1LB5/Pbbb4Xahz0527Vrp1atWlmf165dWz179tSaNWuUm5trs+4//vEPm+cdO3bUb7/9dsMrxbZv367U1FSNHDnS5nyi7t27KywsTF999dV1X3szcXFxCggIUKdOnSRdPSzXv39/xcfH22RfunSpmjVrpt69e+fbxrXDhkuXLlX16tX11FNPXXedonjyySfzjf3x95Odna2zZ8+qffv2MgxDu3btkiSdOXNGmzZt0vDhw1W7du1C50lISFBaWpoGDhyos2fPWh+urq4KDw/X+vXrrRnc3Ny0YcMGnT9/vsg/H+BIHMYCStDf/vY3mxOUBw4cqBYtWig6OloPPPCA3NzcJEmrVq3Sq6++qqSkJOXk5FjXL+jDJzQ0tFD79vb2lnT1UMsf1a9fXwkJCZKkTz75RAsWLCj0PuzJ2aBBg3xjt956qy5cuKAzZ84oMDDQOv7nD90qVapIulqofHx8Csxy/PhxSVLDhg3zLQsLC9N3331X4OtuJjc3V/Hx8erUqZOOHj1qHQ8PD9fbb7+txMRE3XvvvZKkI0eOqG/fvjfc3pEjR9SwYcN852kVR4UKFVSzZs184ydOnNCkSZO0cuXKfEUjPT1dkvTzzz9LUr5DiTdz6NAhSdI999xT4PJrvyd3d3dNnTpVzzzzjAICAtS2bVs98MADGjx4sM3vHChNlB2gFLm4uKhTp0569913dejQITVu3Fj/+c9/9OCDD+rOO+/UBx98oKCgIFWsWFGxsbFauHBhvm388a/3GwkLC5Mk7du3Tz179rSOV65c2Xr59fUKQUH7sDenPa53TpFhGMXablGsW7dOp0+fVnx8vOLj4/Mtj4uLs5YdR7nejMqfZ8CucXd3l4uLS751u3TponPnzum5555TWFiYvLy8dOrUKQ0dOlR5eXnFynjt9QsWLCiwtPyxzI0ePVo9evTQihUrtGbNGk2cOFExMTFat26dWrRoUawcQFFQdoBS9vvvv0v6vxmXpUuXysPDQ2vWrLG5p0lsbGyx9tOxY0f5+voqPj5eEyZMyPfhaC97c16bCfijgwcPqlKlSqpRo0axskhSSEiIJOnAgQP5ZhsOHDhgXW6vuLg4+fv76/3338+3bNmyZVq+fLlmz54tT09P1atXT/v27bvh9urVq6ctW7boypUrqlixYoHrXJvJ+vNdna/NXhXG3r17dfDgQc2fP1+DBw+2jl+bxbumbt26knTT3H927URqf3//Qt2rqF69enrmmWf0zDPP6NChQ2revLnefvttffrpp3btF3AEztkBStGVK1e0du1aubm5qVGjRpKuzmpYLBabv+KPHTumFStWFGtflSpV0rPPPqt9+/Zp/PjxBc6S2DNzYm/OzZs325zLc/LkSX3xxRe69957HXL/ltatW8vf31+zZ8+2OaT2zTffaP/+/fmuDiuMixcvatmyZXrggQf00EMP5XtER0crMzNTK1eulHT1qqPdu3dr+fLl+bZ17b3t27evzp49q/fee++664SEhMjV1TXfpfkffPBBobNfe0//+Ds1DEPvvvuuzXo1atTQnXfeqblz5+rEiRMF5ilI165d5ePjo9dff11XrlzJt/zMmTOSrt7y4NKlSzbL6tWrJ29vb5vfE1CamNkBStA333yjn376SdLVG9stXLhQhw4d0vjx463nOHTv3l3Tp0/Xfffdp7///e9KTU3V+++/r/r162vPnj3F2v/48eO1f/9+vfnmm1q7dq369u2rmjVr6vz589q5c6eWLFkif3//Qt0w0N6cTZo0UdeuXW0uPZekKVOmFOtnuqZixYqaOnWqhg0bprvuuksDBw60Xnpep04djRkzxu5trly5UpmZmXrwwQcLXN62bVvVqFFDcXFx6t+/v/75z3/q888/V79+/TR8+HC1atVK586d08qVKzV79mw1a9ZMgwcP1ieffKKxY8dq69at6tixo7Kzs/Xtt99q5MiR6tmzp3x9fdWvXz/NnDlTFotF9erV06pVq6w3QyyMsLAw1atXT+PGjdOpU6fk4+OjpUuXFniS8IwZM9ShQwe1bNlSI0aMUGhoqI4dO6avvvpKSUlJBW7fx8dHs2bN0qOPPqqWLVtqwIABqlGjhk6cOKGvvvpKd9xxh9577z0d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l51NmzapW7du+cbvv/9+bdq0ySGh/iwqKkrdu3dXRESEzfiOHTt05coVm/GwsDDVrl1bmzdvvu72cnJylJGRYfMAAADmZPdhrKysrALPzalYsWKJlIb4+Hjt3LlT27Zty7csOTlZbm5u8vPzsxkPCAhQcnLydbcZExOjKVOmODoqAAAog+ye2WnatKkWL16cbzw+Pl633XabQ0Jdc/LkSY0aNUpxcXHy8PBw2HYnTJig9PR06+PkyZMO2zYAAChb7J7ZmThxovr06aMjR47onnvukSQlJiZq0aJFBX5nVnHs2LFDqampatmypXUsNzdXmzZt0nvvvac1a9bo8uXLSktLs5ndSUlJUWBg4HW36+7uLnd3d4dmBQAAZZPdZadHjx5asWKFXn/9dX3++efy9PTU7bffrm+//VZ33XWXQ8N17txZe/futRkbNmyYwsLC9Nxzz6lWrVqqWLGiEhMT1bdvX0nSgQMHdOLECbVr186hWQAAQPlUpEvPu3fvru7du+cb37dvn5o0aVLsUNd4e3vn256Xl5eqVatmHY+MjNTYsWNVtWpV+fj46KmnnlK7du3Utm1bh+UAAADlV5Hvs3NNZmamFi1apI8//lg7duxQbm6uI3IV2r/+9S+5uLiob9++ysnJUdeuXfXBBx+UagYAAFB2WQzDMIrywk2bNunjjz/WsmXLFBwcrD59+qhv375q06aNozOWuIyMDPn6+io9PV0+Pj4O3bbF4tDNOURhfuPkdhxyly5yly5yly4z5y6Kwn5+2zWzk5ycrHnz5mnOnDnKyMjQww8/rJycHK1YscLhV2IBAAA4QqEvPe/Ro4caNmyoPXv26J133tGvv/6qmTNnlmQ2AACAYiv0zM4333yjp59+Wk8++WSpficWAABAcRR6Zue7775TZmamWrVqpfDwcL333ns6e/ZsSWYDAAAotkKXnbZt2+qjjz7S6dOn9cQTTyg+Pl7BwcHKy8tTQkKCMjMzSzInAABAkRT5aizp6g385syZowULFigtLU1dunTRypUrHZmvVHA1Vn7kdhxyly5yly5yly4z5y6Kwn5+2/3dWH/UsGFDTZs2Tb/88osWLVpUnE0BAACUiGLN7JgFMzv5kdtxyF26yF26yF26zJy7KEplZgcAAKCso+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTK9NlJyYmRm3atJG3t7f8/f3Vq1cvHThwwGadS5cuKSoqStWqVVPlypXVt29fpaSkOCkxAAAoa8p02dm4caOioqL0v//9TwkJCbpy5YruvfdeZWdnW9cZM2aMvvzySy1ZskQbN27Ur7/+qj59+jgxNQAAKEsshmEYzg5RWGfOnJG/v782btyoO++8U+np6apRo4YWLlyohx56SJL0008/qVGjRtq8ebPatm1bqO1mZGTI19dX6enp8vHxcWhmi8Whm3OIwvzGye045C5d5C5d5C5dZs5dFIX9/C7TMzt/lp6eLkmqWrWqJGnHjh26cuWKIiIirOuEhYWpdu3a2rx583W3k5OTo4yMDJsHAAAwp3JTdvLy8jR69GjdcccdatKkiSQpOTlZbm5u8vPzs1k3ICBAycnJ191WTEyMfH19rY9atWqVZHQAAOBE5absREVFad++fYqPjy/2tiZMmKD09HTr4+TJkw5ICAAAyqIKzg5QGNHR0Vq1apU2bdqkmjVrWscDAwN1+fJlpaWl2czupKSkKDAw8Lrbc3d3l7u7e0lGBgAAZUSZntkxDEPR0dFavny51q1bp9DQUJvlrVq1UsWKFZWYmGgdO3DggE6cOKF27dqVdlwAAFAGlemZnaioKC1cuFBffPGFvL29refh+Pr6ytPTU76+voqMjNTYsWNVtWpV+fj46KmnnlK7du0KfSUWAAAwtzJddmbNmiVJuvvuu23GY2NjNXToUEnSv/71L7m4uKhv377KyclR165d9cEHH5RyUgAAUFaVq/vslBTus5MfuR2H3KWL3KWL3KXLzLmLwpT32QEAALAXZQcAAJgaZQcAAJgaZQcA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V65cybeel5dXvrEePXro3Llz+uijj7RlyxZt2bJF0v+dwHyzfbu5uWnw4MGKjY3V5cuXtXDhQg0fPvymeYcOHar58+crLy9PsbGx6tSpk+rWrStJGjdunJYvX67XX39d//nPf5SUlKSmTZvmO4+moJ/nj+Lj4zVu3DhFRkZq7dq1SkpK0rBhw4p1cnZWVpZcXV21Y8cOJSUlWR/79++3ng/02GOP6eeff9ajjz6qvXv3qnXr1po5c2aR9wmYAWUHMLHff/9dn3zyid5++22bD8fdu3crODhYixYtkiTdfvvtSkxMLHAbTZs2VV5enjZu3Fjg8ho1aigzM1PZ2dnWscLca+a3337TgQMH9OKLL6pz585q1KiRzp8/b7PO7bffrqSkJJ07d+6623nsscf07bff6oMPPtDvv/+uPn363HTfw4YN08mTJ7Vs2TItX75ckZGR1mXff/+9hg4dqt69e6tp06YKDAzUsWPHbrrNP/v+++/Vvn17jRw5Ui1atFD9+vXznXwtSbt377a5Oux///ufKleurFq1auVbt0WLFsrNzVVqaqrq169v8wgMDLSuV6tWLf3jH//QsmXL9Mwzz+ijjz6yOz9gJpQdwMRWrVql8+fPKzIyUk2aNLF59O3b13ooa/LkyVq0aJEmT56s/fv3W09sla5eeTRkyBANHz5cK1assF65dO1E2/DwcFWqVEnPP/+8jhw5ooULFxZ4tdefValSRdWqVdOHH36ow4cPa926dRo7dqzNOgMHDlRgYKB69eql77//Xj///LOWLl2qzZs3W9dp1KiR2rZtq+eee04DBw686WyQJIWGhuqee+7RiBEj5O7ublOQGjRoYD2Jevfu3fr73/9e4JVdN9OgQQNt375da9as0cGDBzVx4kRt27Yt33qXL19WZGSkfvzxR3399deaPHmyoqOjCzzB+tZbb9WgQYM0ePBgLVu2TEePHtXWrVsVExOjr776SpI0evRorVmzRkePHtXOnTu1fv16NWrUyO78gJlQdgATmzNnjiIiIuTr65tvWd++fbV9+3bt2bNHd999t5YsWaKVK1eqefPmuueee7R161brurNmzdJDDz2kkSNHKiwsTI8//rh1Jqdq1ar69NNP9fXXX6tp06ZatGiRXnrppZtmc3FxUXx8vHbs2KEmTZpozJgxevPNN23WcXNz09q1a+Xv769u3bqpadOmeuONN+Tq6mqzXmRkpC5fvnzTQ1h/fs358+f197//3XopvCRNnz5dVapUUfv27dWjRw917dpVLVu2LPR2r3niiSfUp08f9e/fX+Hh4frtt980cuTIfOt17txZDRo00J133qn+/fvrwQcfvOH7Fxsbq8GDB+uZZ55Rw4YN1atXL23btk21a9eWdPWS96ioKDVq1Ej33Xefbr31Vn3wwQd25wfMxGL8+WA7AJQzr7zyipYsWcLJuAAKxMwOgHIrKytL+/bt03vvvaennnrK2XEAlFGUHQDlVnR0tFq1aqW7777brkNYAP5aOIwFAABMjZkdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgav8PriEMHNJ5QJIAAAAASUVORK5CYII=\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of RMSE values from rmse1 to rmse10\n",
- "rmse_values = [rmse1, rmse2, rmse3, rmse4, rmse5, rmse6, rmse7, rmse8, rmse9, rmse10]\n",
- "\n",
- "# List of corresponding labels for each RMSE value\n",
- "labels = ['RMSE1', 'RMSE2', 'RMSE3', 'RMSE4', 'RMSE5', 'RMSE6', 'RMSE7', 'RMSE8', 'RMSE9', 'RMSE10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, rmse_values, color='green')\n",
- "plt.xlabel('RMSE Variables')\n",
- "plt.ylabel('RMSE Values')\n",
- "plt.title('Bar Graph of RMSE')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "RFaaCNH6Cfoa",
- "outputId": "67a8f358-e3ce-4ad2-9c78-ebc75902beb4"
- },
- "execution_count": 118,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABB/klEQVR4nO3de1xUdeL/8fcAMpAKiMbNQEnNe0qSrmV5o7xlWl5WJReRdCut1O1meSnblbSLlpm6rYm6mq6mZn2V8msataIppptmZnkjE7QUEA3k8vn90c/5OoEGOshw9vV8PM5jdz7nM+e8B8l5e+acOTZjjBEAAIBFeVR2AAAAgIpE2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QFgOc8//7xsNpt++umnCt9XcnKyWrduLR8fH9lsNmVlZVX4PgGUD2UHqEKSkpJks9mclqCgIHXu3Fnr16+/5nk++OAD9e7dW8HBwfL29lZgYKDuvPNOvfrqq8rJybnmea61n3/+WQMHDpSvr69mz56txYsXq3r16qXO/e2fnZeXl+rWrathw4bp2LFjJeZ36tRJNptNjRo1KnV7GzZscGxr5cqVTuu++uor9e/fX/Xq1ZOPj4/q1q2ru+66S7NmzXKaV79+/RK/TxeW7t27X+FPBXA/XpUdAED5TZkyRZGRkTLGKDMzU0lJSerZs6c++OAD3XPPPRW+/+LiYiUkJCgpKUktW7bUI488ovDwcJ05c0apqamaMGGC1q1bp40bN1Z4lsq0fft2nTlzRi+++KJiYmLK9JwLf3Z5eXnaunWrkpKS9Pnnn2vPnj3y8fFxmuvj46PvvvtOX3zxhdq2beu0bsmSJfLx8VFeXp7T+JYtW9S5c2dFRERoxIgRCgkJUXp6urZu3arXX39djz76qNP81q1b6y9/+UuJnGFhYWV6PUBVQNkBqqAePXooOjra8TghIUHBwcF69913XVJ2iouLdf78+RJvvhdMnz5dSUlJGjt2rF599VXZbDbHuscff1zHjx/XokWLrmofVcGJEyckSQEBAWV+zsV/dg8++KDq1KmjadOmae3atRo4cKDT3AYNGqiwsFDvvvuuU9nJy8vT6tWr1atXL7333ntOz/nb3/4mf39/bd++vUSuC3kvVrduXT3wwANlzg9URXyMBVhAQECAfH195eXl/O+XV155Rbfddptq164tX19ftWnTpsRHHpJks9k0evRoLVmyRM2bN5fdbldycnKp+zp37pymTZum5s2b6+WXX3YqOheEhobq6aefLvM+riRn48aN5ePjozZt2iglJaXUrFlZWRo2bJgCAgLk7++v+Ph4nTt3rvQf4m+sWLFCbdq0ka+vr+rUqaMHHnjA6eOmTp06KS4uTpJ06623ymazadiwYWXa9sXuuOMOSdL3339f6vrBgwdr+fLlKi4udox98MEHOnfuXIlydGE7zZs3L7WABQUFlTsfYAWUHaAKys7O1k8//aSTJ09q7969evjhh5Wbm1viX+ivv/66oqKiNGXKFE2dOlVeXl4aMGCA/ud//qfENj/55BONHTtWf/zjH/X666+rfv36pe77888/V1ZWlgYPHixPT89y5b7UPsqT89NPP9WYMWP0wAMPaMqUKfr555/VvXt37dmzp8TcgQMH6syZM0pMTNTAgQOVlJSkF1544XdzJiUlaeDAgfL09FRiYqJGjBihVatWqUOHDo4TkJ977jmNHDlS0q8fTS1evFh//vOfy/XzkKTDhw9LkmrVqlXq+iFDhuj48ePavHmzY2zp0qXq2rVrqeWlXr16SktLK/XnUZqCggL99NNPJZZffvml3K8FcFsGQJWxYMECI6nEYrfbTVJSUon5586dc3p8/vx506JFC9OlSxencUnGw8PD7N2793czvP7660aSWbNmjdN4YWGhOXnypNNSXFxcpn2UJ6cks2PHDsfYkSNHjI+Pj7nvvvscY5MnTzaSzPDhw52ef99995natWtf9vWdP3/eBAUFmRYtWphffvnFMf7hhx8aSWbSpEmOsQt/Htu3b7/sNi+e+7//+7/m5MmTJj093axcudJcf/31xm63m/T0dKf5HTt2NM2bNzfGGBMdHW0SEhKMMcacPn3aeHt7m4ULF5pNmzYZSWbFihWO53388cfG09PTeHp6mvbt25unnnrKfPTRR+b8+fMlMtWrV6/U3ydJJjEx8XdfE1BVcGQHqIJmz56tDRs2aMOGDfrnP/+pzp0768EHH9SqVauc5vn6+jr+/+nTp5Wdna077rhDO3fuLLHNjh07qlmzZr+77wtXWdWoUcNp/KuvvtL111/vtPz8889l2kd5crZv315t2rRxPI6IiFCfPn300UcfqaioyGnuQw895PT4jjvu0M8//3zZK8V27NihEydO6JFHHnE6n6hXr15q0qRJqUebyiMmJkbXX3+9wsPD1b9/f1WvXl1r167VDTfccMnnDBkyRKtWrdL58+e1cuVKeXp66r777it17l133aXU1FTde++92r17t6ZPn65u3bqpbt26Wrt2bYn57dq1c/wuXbwMHjz4ql4n4E44QRmogtq2bet0gvLgwYMVFRWl0aNH65577pG3t7ck6cMPP9Rf//pX7dq1S/n5+Y75pZ1nExkZWaZ916xZU5KUm5vrNN6wYUNt2LBBkrRo0SItXry4zPsoT87SLsW+6aabdO7cOZ08eVIhISGO8YiICKd5Fz4qOn36tPz8/ErNcuTIEUlS48aNS6xr0qSJPv/881KfV1azZ8/WTTfdpOzsbL3zzjtKSUmR3W6/7HMGDRqkJ554QuvXr9eSJUt0zz33OP4cSnPrrbc6ytHu3bu1evVqzZgxQ/3799euXbucCmedOnXKfCUZUFVxZAewAA8PD3Xu3FnHjx/XgQMHJEmfffaZ7r33Xvn4+Oitt97SunXrtGHDBg0ZMkTGmBLbuPjoyuU0adJEkkqcE1KjRg3FxMQoJiZGN954Y6nPLW0f5c1ZHpc6p+hqt3s12rZtq5iYGPXr109r165VixYtNGTIkBLl8WKhoaHq1KmTXn31VaWkpGjIkCFl2pe3t7duvfVWTZ06VXPmzFFBQYFWrFjhqpcCVBmUHcAiCgsLJf3fEZf33ntPPj4++uijjzR8+HD16NHDJf+Cv+OOO+Tv769ly5Y5XSF0pcqb80KZu9i3336r6667Ttdff/1V56lXr54kaf/+/SXW7d+/37HeFS6cAP3jjz/qzTffvOzcIUOG6LPPPpOfn5969uxZ7n1dOBJ4/PjxK8oKVGWUHcACCgoK9PHHH8vb21tNmzaV9Osbqc1mczqP5fDhw1qzZs1V7eu6667TU089pT179uiZZ54p9ShJeY6clDdnamqq07k86enpev/993X33XeX++qw0kRHRysoKEhz5851+kht/fr12rdvn3r16nXV+7hYp06d1LZtW82cObPEFwRerH///po8ebLeeustx8eUpdm0aVOpP/9169ZJKv3jOcDqOGcHqILWr1+vb775RtKvXxS3dOlSHThwQM8884zjXJRevXrptddeU/fu3TVkyBCdOHFCs2fP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hSoqKpLdbneMZWZmau7cuTp79qzuvfdedejQoUJCAgAAXKkyl50RI0bI29tb8+bNkySdOXNGt956q/Ly8hQaGqoZM2bo/fffV8+ePSssLAAAQHmV+dLzf//73+rXr5/j8aJFi1RUVKQDBw5o9+7dGjdunF5++eUKCQkAAHClylx2jh07pkaNGjkeb9y4Uf369ZO/v78kKS4uTnv37nV9QgAAgKtQ5rLj4+OjX375xfF469atateundP63Nxc16YDAAC4SmUuO61bt9bixYslSZ999pkyMzPVpUsXx/rvv/9eYWFhrk8IAABwFcp8gvKkSZPUo0cP/etf/9Lx48c1bNgwhYaGOtavXr1at99+e4WEBAAAuFLl+p6dtLQ0ffzxxwoJCdGAAQOc1rdu3Vpt27Z1eUAAAICrUeayI0lNmzZV06ZNS103cuRIlwQCAABwpTKXnZSUlDLNu/POO684DAAAgKuVuex06tTJcaNPY0ypc2w2m4qKilyTDAAAwAXKXHZq1aqlmjVratiwYRo6dKjq1KlTkbkAAABcosyXnh8/flzTpk1TamqqWrZsqYSEBG3ZskV+fn7y9/d3LAAAAO6kzGXH29tbf/zjH/XRRx/pm2++0c0336zRo0crPDxczz33nAoLCysyJwAAwBUpc9m5WEREhCZNmqT//d//1U033aSXXnpJOTk5rs4GAABw1cpddvLz87V06VLFxMSoRYsWqlOnjv7nf/5HgYGBFZEPAADgqpT5BOUvvvhCCxYs0LJly1S/fn3Fx8frX//6FyUHAAC4tTKXnT/84Q+KiIjQY489pjZt2kiSPv/88xLz7r33XtelAwAAuErl+gblo0eP6sUXX7zker5nBwAAuJsyl53i4uKKzAEAAFAhruhqrEv55ZdfXLk5AACAq+aSspOfn69XX31VkZGRrtgcAACAy5S57OTn52v8+PGKjo7WbbfdpjVr1kiSFixYoMjISM2cOVNjx451ecBjx47pgQceUO3ateXr66uWLVtqx44djvXGGE2aNEmhoaHy9fVVTEyMDhw44PIcAACgaipz2Zk0aZLmzJmj+vXr6/DhwxowYIBGjhypGTNm6LXXXtPhw4f19NNPuzTc6dOndfvtt6tatWpav369vv76a7366quqVauWY8706dP1xhtvaO7cudq2bZuqV6+ubt26KS8vz6VZAABA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+a3s7GxJUmBgoCQpLS1NBQUFiomJccxp0qSJIiIilJqaesnt5OfnKycnx2kBAADWVGXKTnFxscaMGaPbb79dLVq0kCRlZGTI29tbAQEBTnODg4OVkZFxyW0lJibK39/fsYSHh1dkdAAAUImqTNkZNWqU9uzZo2XLll31tsaPH6/s7GzHkp6e7oKEAADAHbn1OTsXjB49Wh9++KFSUlJ0ww03OMZDQkJ0/vx5ZWVlOR3dyczMVEhIyCW3Z7fbZbfbKzIyAABwE259ZMcYo9GjR2v16tX65JNPFBkZ6bS+TZs2qlatmjZu3OgY279/v44ePar27dtf67gAAMANufWRnVGjRmnp0qV6//33VbNmTcd5OP7+/vL19ZW/v78SEhI0btw4BQYGys/PT48++qjat2/PlVgAAECSm5edOXPmSJI6derkNL5gwQINGzZMkjRjxgx5eHioX79+ys/PV7du3fTWW29d46QAAMBduXXZMcb87hwfHx/Nnj1bs2fPvgaJAABAVePW5+wAAABcLcoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNK/KDgAAAFzH9oKtsiOUYCabSt0/R3YAAIClcWQHwH8d/uUL/HfhyA4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA07noOAFUEd2sHrgxlB3ADVfVNrKrmBsqC32/r4GMsAABgaZY5sjN79my9/PLLysjIUKtWrTRr1iy1bdu2smPhGuNfYgCA37JE2Vm+fLnGjRunuXPnql27dpo5c6a6deum/fv3KygoqFKz8eYLAEDlssTHWK+99ppGjBih+Ph4NWvWTHPnztV1112nd955p7KjAQCASlbly8758+eVlpammJgYx5iHh4diYmKUmppaickAAIA7qPIfY/30008qKipScHCw03hwcLC++eabUp+Tn5+v/Px8x+Ps7GxJUk5OjusD5rl+k1erTK+T3C5D7muL3NcWua8tS+e+iu0a8zunZ5gq7tixY0aS2bJli9P4k08+adq2bVvqcyZPnmwksbCwsLCw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qxwnJp89e1bdunWTn5+flixZou3bt2v16tWS5LgK7OLXfDlxcXHatWuXXn/9dW3ZskW7du1S7dq1S2ynPHJzc9W7d2+ncrdr1y4dOHBAd955pzw9PbVhwwatX79ezZo106xZs9S4cWMdOnToivcJ/Dei7AC4LA8PDz377LOaMGGC04nIFxs+fLg2b96sP/3pT/L09CzTdmvVqqXQ0NCrPtnWw8ND8fHxWrhwoZYuXSpvb2/1799fkvTNN9/o559/1ksvvaQ77rhDTZo0cTo5uTz+/e9/67HHHlPPnj3VvHlz2e12pxOJL/jtpfBbt25V06ZNS93mLbfcor1796p+/fpOBa9hw4aO8mWz2XT77bfrhRde0Jdffilvb29HYQNQNpQdAL9rwIAB8vT01OzZs0td3717d508eVJTpkwpdf28efP08MMP6+OPP9b333+vvXv36umnn9bevXvVu3dvp7knTpxQRkaG01JQUHDZfPHx8Tp27JieffZZDR482HGFV0REhLy9vTVr1iwdPHhQa9eu1YsvvngFPwGpUaNGWrx4sfbt26dt27YpNja2xJVkkrRixQq98847+vbbbzV58mR98cUXGj16dKnbHDVqlE6dOqXBgwdr+/bt+v777/XRRx8pPj5eRUVF2rZtm6ZOnaodO3bo6NGjWrVqlU6ePHnJ8gSgdJQdAL/Ly8tLo0eP1vTp00s9EmOz2VSnTp1Sr9iSpLZt2yo3N1cPPfSQmjdvro4dO2rr1q1as2aN4xyaCxo3bqzQ0FCnJS0t7bL5IiIiFBMTo9OnTzudM3T99dcrKSlJK1asULNmzfTSSy/plVdeuYKfgDR//nydPn1at9xyi4YOHarHHnus1O//eeGFF7Rs2TLdfPPNWrRokd599101a9as1G2GhYXp3//+t4qKinT33XerZcuWGjNmjAICAuTh4SE/Pz+lpKSoZ8+euummmzRhwgS9+uqrl/2oEEBJNmO4hhEAAFgXR3YAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAICl/T/eW9kFikhhAwAAAABJRU5ErkJggg==\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of MAE values from mae1 to mae10\n",
- "mae_values = [mae1, mae2, mae3, mae4, mae5, mae6, mae7, mae8, mae9, mae10]\n",
- "\n",
- "# List of corresponding labels for each MAE value\n",
- "labels = ['MAE1', 'MAE2', 'MAE3', 'MAE4', 'MAE5', 'MAE6', 'MAE7', 'MAE8', 'MAE9', 'MAE10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, mae_values, color='orange')\n",
- "plt.xlabel('MAE Variables')\n",
- "plt.ylabel('MAE Values')\n",
- "plt.title('Bar Graph of MAE')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "nrZu-K-KDCJ2",
- "outputId": "69165581-da05-4554-a464-a606eb87a734"
- },
- "execution_count": 119,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6NklEQVR4nO3deVRV9eL+8ecACogCOTCYqJSzlJqmoXlNozCH1JyHGwqpleZ0q6v3qmVZppU567VQ1ASHUktzyOg6hpqmpTknzoJDCqKJCvv3h1/Pr3MBZTjAYfd+rbXX6uzxOcTiPH72cCyGYRgCAAAwKafCDgAAAJCfKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsA/hLefvttWSwWXbx4Md+PtXbtWtWtW1dubm6yWCy6cuVKvh8TQNYoO0ARFxUVJYvFYjP5+PioefPmWrNmTYHnWblypdq2bStfX18VL15cpUuX1t/+9jd9/PHHSk5OLvA8Be3SpUvq0qWL3N3dNX36dC1YsEAeHh6Zrvvn/3dbtmzJsNwwDAUEBMhisahNmzaZ7uPKlSvWUnXgwIFM1+ndu3eG35G7k5ubW+7fLFBEuBR2AAD28c477ygwMFCGYSgxMVFRUVFq1aqVVq5cmeUHpT2lp6crIiJCUVFReuSRR/Tqq68qICBAV69eVVxcnEaOHKnVq1crNjY237MUph9//FFXr17Vu+++q5CQkGxt4+bmpujoaD355JM28zdu3KjTp0/L1dU1y22XLl0qi8UiPz8/LVy4UGPHjs10PVdXV3322WcZ5js7O2crI1CUUXYAk3juuefUoEED6+uIiAj5+voqJibGLmUnPT1dN2/ezHIkYMKECYqKitLQoUP18ccfy2KxWJcNHjxY586d0/z58/N0jKLg/PnzkiRvb+9sb9OqVSstXbpUU6ZMkYvL//+zHB0drfr169/z1Nvnn3+uVq1aqVKlSoqOjs6y7Li4uKhXr17ZzgSYCaexAJPy9vaWu7u7zYenJH300Udq3LixypQpI3d3d9WvX19ffPFFhu0tFosGDhyohQsXqnbt2nJ1ddXatWszPdb169c1fvx41a5dWx9++KFN0bnL399f//znP7N9jNzkrF69utzc3FS/fn1t2rQp06xXrlxR79695e3tLS8vL/Xp00fXr1/P/If4P5YuXar69evL3d1dZcuWVa9evXTmzBnr8qeeekphYWGSpMcff1wWi0W9e/e+7367d++uS5cuaf369dZ5N2/e1BdffKEePXpkud3Jkye1efNmdevWTd26dVN8fLx++OGHbL0X4K+EkR3AJJKSknTx4kUZhqHz589r6tSpSklJyfCv+cmTJ+v5559Xz549dfPmTS1atEidO3fWqlWr1Lp1a5t1v//+ey1ZskQDBw5U2bJlVbly5UyPvWXLFl25ckWvv/56jk+LZHWMnOTcuHGjFi9erEGDBsnV1VUzZsxQy5YttWPHDgUFBdms26VLFwUGBmrcuHH66aef9Nlnn8nHx0fjx4+/Z86oqCj16dNHjz/+uMaNG6fExERNnjxZW7du1e7du+Xt7a1///vfql69umbPnm09rfjwww/f92dQuXJlBQcHKyYmRs8995wkac2aNUpKSlK3bt00ZcqUTLeLiYmRh4eH2rRpI3d3dz388MNauHChGjdunOn6mY0QFS9eXJ6envfNCBRpBoAibe7cuYakDJOrq6sRFRWVYf3r16/bvL5586YRFBRktGjRwma+JMPJycn49ddf75th8uTJhiRjxYoVNvNv375tXLhwwWZKT0/P1jFyklOSsXPnTuu8EydOGG5ubkaHDh2s89566y1DkhEeHm6zfYcOHYwyZcrc8/3dvHnT8PHxMYKCgow//vjDOn/VqlWGJGP06NHWeXf/f/z444/33Of/rjtt2jSjVKlS1vfduXNno3nz5oZhGEalSpWM1q1bZ9j+kUceMXr27Gl9/a9//csoW7ascevWLZv1wsLCMv0dkWSEhobeNydQ1HEaCzCJ6dOna/369Vq/fr0+//xzNW/eXC+99JKWLVtms567u7v1vy9fvqykpCQ1bdpUP/30U4Z9NmvWTLVq1brvse/eZVWyZEmb+Xv37lW5cuVspkuXLmXrGDnJGRwcrPr161tfV6xYUe3atdO6deuUlpZms+7LL79s87pp06a6dOnSPe8U27lzp86fP69XX33V5nqi1q1bq0aNGvrmm2+y3Da7unTpoj/++EOrVq3S1atXtWrVqnuewvrll1+0d+9ede/e3Tqve/fuunjxotatW5dhfTc3N+vvx5+nDz74IM/ZAUfHaSzAJBo2bGhzgXL37t1Vr149DRw4UG3atFHx4sUlSatW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mTNVtWpVrVu3Tq+88ooGDRqkefPmSZISEhIkSb6+vjbb+fr6WpdlZty4cfLy8rJOAQEBds0NAAAcR46v2QkKCtLPP/+swMBANWrUSBMmTFDx4sU1e/ZsPfTQQ3YNl56ergYNGuj999+XJNWrV0/79u3TrFmzFBYWluv9jhgxQsOGDbO+Tk5OpvAAAGBSOR7ZGTlypNLT0yVJ77zzjuLj49W0aVOtXr1aU6ZMsWs4f39/1apVy2ZezZo1dfLkSUmSn5+fJCkxMdFmncTEROuyzLi6usrT09NmAgAA5pTtkZ0GDRropZdeUo8ePazloEqVKjp48KB+//33DN+Gbg9NmjTJcGrs8OHD1uf+BAYGys/PT7Gxsapbt66kO6M027dv1yuvvGLXLAAAoGjK9shOnTp19Oabb8rf318vvviizZ1XpUuXtnvRkaShQ4dq27Ztev/993X06FFFR0dr9uzZGjBggKQ7t7sPGTJEY8eO1ddff629e/fqxRdfVPny5dW+fXu75wEAAEVPtstOZGSkEhISNH36dJ08eVJPP/20qlSpovfff19nzpzJl3CPP/64li9frpiYGAUFBendd9/VpEmT1LNnT+s6b775pl577TX169dPjz/+uFJSUrR27VqesQMAACRJFuN+3+6Zhd9++01z587VggULdPbsWT377LOKiIjQCy+8YO+M+S45OVleXl5KSkri+p27ou0/UpdnPXL1qwqgsPH3BPkku5/fuf66iIcfflhjx47V8ePHFRMTo23btqlz58653R0AAEC+yPGt53+2YcMGzZ07V19++aVcXFzUt29fe+UCAACwixyXndOnTysqKkpRUVE6duyYmjZtqhkzZqhz585yd3fPj4wAAAC5lu2ys2TJEs2ZM0exsbHy8fFRWFiYwsPDVaVKlfzMBwAAkCfZLju9evVS69attXz5crVq1UpOTrm+3AcAAKDAZLvsnD59Wj4+PvmZBQAAwO6yPTxD0QEAAEUR56IAAICpUXYAAICpUXYAAICpZbvs7NixQ2lpaVkuT01N1ZIlS+wSCgAAwF6yXXaCg4N16dIl62tPT08dO3bM+vrKlSvq3r27fdMBAADkUbbLzv9+X2hm3x+ay+8UBQAAyDd2vWbHYnHAb7YFAAB/aVygDAAATC1HXwS6f/9+JSQkSLpzyurgwYNKSUmRJF28eNH+6QAA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\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of MAPE values from mape1 to mape10\n",
- "mape_values = [mape1, mape2, mape3, mape4, mape5, mape6, mape7, mape8, mape9, mape10]\n",
- "\n",
- "# List of corresponding labels for each MAPE value\n",
- "labels = ['MAPE1', 'MAPE2', 'MAPE3', 'MAPE4', 'MAPE5', 'MAPE6', 'MAPE7', 'MAPE8', 'MAPE9', 'MAPE10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, mape_values, color='purple')\n",
- "plt.xlabel('MAPE Variables')\n",
- "plt.ylabel('MAPE Values')\n",
- "plt.title('Bar Graph of MAPE')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "_c4Pe76fDNM-",
- "outputId": "0e3d2f74-9042-4e2d-92c6-5ce61e967bd4"
- },
- "execution_count": 120,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHHCAYAAABXx+fLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABH10lEQVR4nO3de3zP9f//8ft7YydsDrNTDXNoctZkn+2rTI1Zjv3KYRFGKvEpreNKRIdFiLJahFEYUipEWiEscqr0kdIHc9jmEJtNNuz1+8PF+9O7bWzs8J7X7Xq5vC4fr+fr+Xq+Hq/l0+69Xs/X62UxDMMQAACAiThUdAEAAADljQAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAEAABMhwAE4Ib38ssvy2Kx6MSJE2V+rNWrV6tNmzZycXGRxWLR6dOny/yYAEqOAARUYomJibJYLDaLl5eXOnXqpC+//LLc6/niiy/Uo0cPeXt7y8nJSbVr19add96pKVOmKCsrq9zrKW8nT55U37595erqqvj4eH344YeqVq1aoX3//s9u48aNBbYbhiF/f39ZLBZ179690DFOnz5tDVp79uwptM+QIUNs/n64u7urdevWmjJlinJzc639LofEopb09PRr+IkA9qtKRRcA4PpNmDBBAQEBMgxDGRkZSkxM1D333KMvvviiyF+epSk/P1/Dhg1TYmKiWrZsqccee0z+/v46c+aMUlJSNGbMGK1atUrJycllXktF+uGHH3TmzBm98sorCg8PL9Y+Li4uWrhwoTp06GDTvn79eh0+fFjOzs5F7rt06VJZLBb5+PhowYIFevXVVwvt5+zsrA8++EDSpdC0bNkyPf300/rhhx+UlJRk0/e9995T9erVC4xRs2bNYp0PUFkQgIAbQGRkpNq1a2ddHzZsmLy9vbVo0aJSCUD5+fnKy8uTi4tLodsnTZqkxMREPfnkk5oyZYosFot12xNPPKG0tDTNnz//uo5RGRw7dkxSycLCPffco6VLl+rtt99WlSr/+1fywoULFRQUdMXbdh999JHuuece1a9fXwsXLiwyAFWpUkUDBw60rj/22GMKDg7W4sWLNXXqVPn5+Vm33X///fL09Cx2/UBlxS0w4AZUs2ZNubq62vxClaTJkycrNDRUderUkaurq4KCgvTxxx8X2N9isWjUqFFasGCBmjdvLmdnZ61evbrQY509e1YTJ05U8+bN9eabb9qEn8t8fX313HPPFfsY11JnYGCgXFxcFBQUpA0bNhRa6+nTpzVkyBDVrFlTHh4eio6O1tmzZwv/If7D0qVLFRQUJFdXV3l6emrgwIE6cuSIdXtYWJgGDx4sSbr99ttlsVg0ZMiQq44bFRWlkydPau3atda2vLw8ffzxx3rggQeK3C81NVXfffed+vfvr/79+2v//v3avHlzsc7FwcFBYWFhkqQDBw4Uax/gRsMVIOAGkJmZqRMnTsgwDB07dkzvvPOOsrOzbf6rX5KmT5+unj17asCAAcrLy1NSUpL69OmjFStWqFu3bjZ9v/nmGy1ZskSjRo2Sp6enGjRoUOixN27cqNOnT+vpp5+Wo6Njieou6hglqXP9+vVavHixHn/8cTk7O+vdd99V165dtXXrVrVo0cKmb9++fRUQEKC4uDjt2LFDH3zwgby8vDRx4sQr1pmYmKjo6GjdfvvtiouLU0ZGhqZPn65NmzZp586dqlmzpl588UUFBgZq5syZ1luSjRo1uurPoEGDBgoJCdGiRYsUGRkpSfryyy+VmZmp/v376+233y50v0WLFqlatWrq3r27XF1d1ahRIy1YsEChoaFXPaYk/fHHH5KkOnXq2LT/+eefBfpWqVKFW2C48RgAKq25c+cakgoszs7ORmJiYoH+Z8+etVnPy8szWrRoYdx111027ZIMBwcH45dffrlqDdOnTzckGcuXL7dpv3DhgnH8+HGbJT8/v1jHKEmdkoxt27ZZ2w4ePGi4uLgY9957r7Vt3LhxhiRj6NChNvvfe++9Rp06da54fnl5eYaXl5fRokUL46+//rK2r1ixwpBkjB071tp2+Z/HDz/8cMUx/9l3xowZRo0aNazn3adPH6NTp06GYRhG/fr1jW7duhXYv2XLlsaAAQOs6y+88ILh6elpnD9/3qbf4MGDjWrVqln/Gezbt894/fXXDYvFYrRq1cra7/LPqLAlMDDwqucDVDbcAgNuAPHx8Vq7dq3Wrl2rjz76SJ06ddJDDz2kTz75xKafq6ur9c+nTp1SZmam7rjjDu3YsaPAmB07dlSzZs2ueuzLT3f9c+Lszz//rLp169osJ0+eLNYxSlJnSEiIgoKCrOv16tVTr169tGbNGl28eNGm76OPPmqzfscdd+jkyZNXfEJt27ZtOnbsmB577DGb+UndunVT06ZNtXLlyiL3La6+ffvqr7/+0ooVK3TmzBmtWLHiire/fvrpJ/3888+KioqytkVFRenEiRNas2ZNgf45OTnWfwaNGzfWCy+8oJCQEH366acF+i5btsz6d+nyMnfu3Os+R8DecAsMuAG0b9/eZhJ0VFSU2rZtq1GjRql79+5ycnKSJK1YsUKvvvqqdu3aZfMIdGHzdgICAop17Bo1akiSsrOzbdobN25sndcyf/58ffjhh8U+RknqbNKkSYG2W265RWfPntXx48fl4+Njba9Xr55Nv1q1akm6FLLc3d0LreXgwYOSpMDAwALbmjZtWugj7CVVt25dhYeHa+HChTp79qwuXryo+++/v8j+H330kapVq6aGDRtq3759ki49TdagQQMtWLCgwG1CFxcXffHFF5IuPREWEBCgm2++udCx77zzTiZBwxQIQMANyMHBQZ06ddL06dP1+++/q3nz5vruu+/Us2dP3XnnnXr33Xfl6+urqlWrau7cuVq4cGGBMf5+FeZKmjZtKknavXu3evXqZW2vXr269VHwokJCYccoaZ0lUdQcJcMwrmvc0vDAAw9o+PDhSk9PV2RkZJFzbgzD0KJFi5STk1Po1bNjx44pOzvb5oqco6NjsR/LB8yCAATcoC5cuCDpf1dmli1bJhcXF61Zs8bm3TLXe3vjjjvukIeHh5KSkhQbGysHh+u7s17SOn///fcCbb/99pvc3NxUt27d66pFkurXry9J2rt3r+666y6bbXv37rVuv1733nuvHnnkEX3//fdavHhxkf0uvx9owoQJuvXWW222nTp1Sg8//LCWL19eYAI8AFvMAQJuQOfPn9dXX30lJycn6y9JR0dHWSwWm3kxBw4c0PLly6/rWG5ubnr22We1e/duPf/884VeTSnJFZaS1pmSkmIzN+jQoUP67LPP1KVLlxI/lVaYdu3aycvLSwkJCTa347788kvt2bOnwO2ma1W9enW99957evnll9WjR48i+12+/fXMM8/o/vvvt1mGDx+uJk2aaMGCBaVSE3Aj4woQcAP48ssv9euvv0q6dAtk4cKF+v333/X8889b57Z069ZNU6dOVdeuXfXAAw/o2LFjio+PV+PGjfXTTz9d1/Gff/557dmzR2+++aa++uor3Xfffbr55pt16tQp7dixQ0uX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LFmiL774QqtXr9bOnTv12GOPFXkOcXFxmj9/vhISEvTLL79Yv2K/fv16SdJLL72k//znP/ryyy+1Z88evffee/L09LymnxdgauXyyVUAldrlL2IfO3bMcHZ2Ng4cOGAcOHDAcHFxMY4fP2792vTfhYaGGtOmTTMMwzDOnz9veHp62nwF+p9fnD516pRx7733GtWrVzfS09MNw7j0xemqVasa1apVs1k++uijImvds2dPgS9O33HHHcbAgQOL3Kdbt27GU089ZV3v2LGj0bZt2wL9JBmffvppkeO8+eabRlBQkHV93LhxhqOjo3H48GFr25dffmk4ODgYaWlphmHYfm383Llzhpubm7F582abcYcNG2ZERUUZhmEYPXr0MKKjo4usAUDxVKng/AWgEqlbt671dpZhGOrWrVuhVx/27t2rrVu36tNPP5V06cpMv379NHv2bIWFhdn0DQ0NlYODg3JyctSwYUMtXrxY3t7e1u0DBgzQiy++aLPP37f/U9OmTRUaGqo5c+YoLCxM+/bt03fffacJEyZIki5evKjXX39dS5Ys0ZEjR5SXl6fc3Fy5ubnZjBMUFHTVn8fixYv19ttv648//lB2drYuXLhQ4PZcvXr1dNNNN1nXQ0JClJ+fr71798rHx8em7759+3T27Fl17tzZpj0vL896m3HEiBG67777tGPHDnXp0kW9e/dWaGjoVWsFYIsABKBEhg4dqlGjRkmS4uPjC+0ze/ZsXbhwQX5+ftY2wzDk7OysGTNmyMPDw9q+ePFiNWvWTHXq1FHNmjULjOXh4aHGjRuXqMZhw4bp3//+t+Lj4zV37lw1atRIHTt2lCS9+eabmj59uqZNm6aWLVuqWrVqGj16dIHbbtWqVbviMVJSUjRgwACNHz9eERER8vDwUFJSkqZMmVKiWv8uOztbkrRy5Uqb0CTJOvk6MjJSBw8e1KpVq7R27VrdfffdGjlypCZPnnzNxwXMiDlAAEqka9euysvL0/nz562Tg//uwoULmj9/vqZMmaJdu3ZZlx9//FF+fn4FJhz7+/urUaNGhYafa9W3b185ODho4cKFmj9/voYOHSqLxSJJ2rRpk3r16qWBAweqdevWatiwoX777bcSH2Pz5s2qX7++XnzxRbVr105NmjTRwYMHC/RLTU21eQLu+++/l4ODgwIDAwv0bdasmZydnZWamqrGjRvbLP7+/tZ+devW1eDBg/XRRx9p2rRpmjlzZonrB8yOK0AASsTR0VF79uyx/vmfVqxYoVOnTmnYsGE2V3ok6b777tPs2bOLfI9PYc6ePav09HSbNmdnZ9WqVavIfapXr65+/fopNjZWWVlZNu8oatKkiT7++GNt3rxZtWrV0tSpU5WRkaFmzZoVu6bL46SmpiopKUm33367Vq5cab3l93cuLi4aPHiwJk+erKysLD3++OPq27dvgdtf0qVJ1U8//bSefPJJ5efnq0OHDsrMzNSmTZvk7u6uwYMHa+zYsQoKClLz5s2Vm5urFStW6NZbby1R7QC4AgTgGri7uxf5KPrs2bMVHh5eIPxIlwLQtm3bSvQywlmzZsnX19dmiYqKuup+w4YN06lTpxQREWFzK27MmDG67bbbFBERobCwMPn4+FzTm5h79uypJ598UqNGjVKbNm20efNmvfTSSwX6NW7cWP/v//0/3XPPPerSpYtatWqld999t8hxX3nlFb300kuKi4vTrbfeqq5du2rlypUKCAiQJDk5OSk2NlatWrXSnXfeKUdHRyUlJZW4fsDsLIZxledSAQAAbjBcAQIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKbz/wGv+ZTScaIQRQAAAABJRU5ErkJggg==\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of precision values from precision1 to precision10\n",
- "precision_values = [precision1, precision2, precision3, precision4, precision5, precision6, precision7, precision8, precision9, precision10]\n",
- "\n",
- "# List of corresponding labels for each precision value\n",
- "labels = ['Precision1', 'Precision2', 'Precision3', 'Precision4', 'Precision5', 'Precision6', 'Precision7', 'Precision8', 'Precision9', 'Precision10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, precision_values, color='red')\n",
- "plt.xlabel('Precision Variables')\n",
- "plt.ylabel('Precision Values')\n",
- "plt.title('Bar Graph of Precision')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "ZDPV0M5rDTi6",
- "outputId": "9db63164-3f42-47be-d302-d80d381d9b91"
- },
- "execution_count": 121,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "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Z59p5MiR+stf/qIqVapo8eLFqlmzZmG9BQAA4EEKvdxI0qBBg657GGr9+vU5pnXp0kVdunTJ51SFx9fXV4mJiTkOp3k6chcschcschcsches2zX39RT6RfwAAADcqdBvvwAAAOBOlBsAAGAplBsAAGAplBsPYLPZtHjxYrePzW/kLljkLljkLljkzl+3S063MXASHx9vJBlJxtvb21SqVMmMGTPGZGVl5ds6jx8/btLT029p7K3kXrhwoWnRooUJDQ01ksxPP/3k8bkzMzPNyy+/bGrWrGmKFStmIiMjTa9evczRo0c9OrcxxiQmJpqqVauaYsWKmZCQEPPII4+YH374weNzX+uZZ54xksykSZM8Pve18159xMXFeXxuY4z597//bdq3b2+CgoJMsWLFTP369c2hQ4c8Ovfvt/XVx9tvv+3RudPS0szAgQNN2bJljZ+fn6levbqZMWPGTWe50Vh3fs6kpKSY+Ph4ExkZafz9/U1cXJzZu3evW3K6U14+Zy5fvmwGDBhgQkNDTfHixU3nzp1NSkrKTa2PcvM78fHxplWrVub48ePml19+MdOnTzc2m8288cYbOcZmZGQUQsLc3UruTz75xIwZM8bMmjXLpXLjDjeb+9y5cyY2NtbMmzfP7N6922zatMk0bNjQxMTEeHRuY4yZM2eOWbNmjTlw4IDZtWuX6devnwkKCjInT5706NxXLVq0yNSuXduUKVMmT+XGHW4l97XzXn2cPXvW43Pv37/fhIaGmpdeesls27bN7N+/33z55ZfmxIkTHp372u18/PhxM3v2bGOz2cyBAwc8Onf//v1NpUqVzLp168zBgwfN+++/b4oUKWK+/PJLj8p5Lbvdbu677z7z4IMPms2bN5vdu3ebp59+2kRHR5sLFy64PfetyMvnzLPPPmuioqJMcnKy+fHHH819991n7r///ptaH+Xmd+Lj402HDh2cprVo0cLcd999jtdee+01ExkZaSpUqGCMMebw4cOmS5cuJjg42JQoUcI8+uij5uDBg07L+PDDD80999xjfHx8TEREhBk4cKDjNUnmiy++MMb89os8cOBAExERYXx9fU10dLTTL/y1Y40x5p///Kdp1qyZ8fLyMt7e3qZ///4mLS3Nkbt06dImKirK1KhRwwQEBBibzWYCAwNNZmZmjtyxsbE5fuluh9xXt/fmzZuNJHPo0KHbKndqaqqRZNauXevxuYODg42fn59ZtWqVKV++vKPceHJub29v4+3tfdv9vfT29jY+Pj63Xe7f/3536NDBNG/e3ONze3l5GX9/f6ftXa9ePTNixAi35776WXI1t5+fnylatKgJCwszPXr0cHzO+Pv7m2LFipkJEyaY0qVLGx8fH+Pj4+PYvsnJyUaS2bVrl9P2lWSCg4Pdvn39/PxMaGio0/Y15n+fmxMmTDAREREmNDTUDBgwwGRmZprfO3jwYK7l5ty5c8bb29vMnz/fMe3nn382ksymTZtyLOePcM5NHvj7+yszM1OSlJycrD179mjNmjVatmyZsrKyFBcXp8DAQG3YsEEbN25UQECAWrVq5ZhnxowZGjhwoJ5++mnt3LlTS5YsUeXKlXNd11//+lctWbJEn3/+ufbs2aM5c+aoQoUKuY69ePGi4uLiVKJECbVr104NGjTQ2rVrHRdE9Pf315UrV5SSkqK9e/eqefPmeu+995SVlaW//e1vOXIXL15ckpSVlXVb5b66vU+fPi2bzaYFCxbcNrnj4uI0ffp0BQcHa9u2bR6d+5tvvlHVqlVVo0YNPf/88zL//xJZnv570rp1a/n6+mrVqlW6++679fTTT+vMmTMenTsgIEBFixbVM888o82bN6ty5cpq0KCBFi9e7NG5f//73aJFCy1btkz9+vXz+NydOnVSxYoV5eXlpVatWmn16tXau3evLl26lC+5r1y54si9ZcsWNWzYUOfOndP//d//OT5nWrRoIZvNpr179yooKEhNmzaVl5eXXnjhBQUEBKhfv36SJD8/P6ftGx4ergceeMDt23fLli2aP3++0/a9at26dTpw4IDWrVunjz/+WElJSUpKSsp1mbnZunWrsrKyFBsb65hWrVo1RUdHa9OmTXlejoPLdcjirt1zY7fbzZo1a4yvr6958cUXTXx8vAkPD3faTfjpp5+aqlWrGrvd7piWkZFh/P39zapVq4wxxpQpU8aMGDHiuuvUNS158ODBpnnz5k7Lu97YDz74wJQoUcJcuHDBkXv58uXGZrOZzz//3Pj6+poaNWqY4sWLO+Xu0qWLadSoUY7ce/bsMZLM9OnTb6vcV7d35cqVTY8ePW6L3EuXLjXFihUzkkxoaKjZvHmzx+d+4403TIsWLUx6errx9/c3YWFhZtKkSR6f+x//+If58ssvzdatW42Pj4+JiooyDRo08Ojcx44dM5JMsWLFzNtvv238/PxM3759jc1mM6VKlfLY3L//e+nt7W0CAgLM5cuXPXp72+12k56ebnr37u04F6Zo0aLm448/zpfc8fHxpnbt2qZEiRImLS3N8TnTuXNnI8mULl3aZGRkmPj4eFO+fHnz8ccfO3J26dLFdOvWzfHvXunSpU2XLl1MZGSkGTZsmHnzzTeNJNOyZUu3b9+rli9fbry8vBznw1zNmZ2d7RhzNefvXW/PzZw5c4yPj0+O8Q0aNDAvv/xyrjlvxCNuv+Bpli1bpoCAAGVlZclut6tHjx4aPXq0Bg4cqFq1asnHx8cxdseOHdq/f78CAwOdlpGenq4DBw7o5MmTOnbsmB555JE8rbtPnz5q0aKFqlatqlatWqldu3Zq2bJlrmN//vln1a5d27HHZdmyZVq7dq2MMerevbt69uyp7OxsnTt3TtWrV3fkjoyM1A8//KBjx4455Tb//3/iR44cua1yS9Lly5eVnp6usWPHqnLlyrdNbpvNpqpVq+qxxx7z6O1dvHhxpaeny9/fXyVLlnT8OS0tzaNz/357Z2VlqX///ho1apQkeWzuq//jzszM1JgxY5SRkaEGDRro6NGjWr16tcfmzm1733///Tp//rzH/55kZWUpKytLfn5+ysjIUOfOnfXcc8/p0qVL+ZL7n//8p2w2m0qWLOn4nBk/frwWLVqk6OhoR84aNWpo586djs+ZzMxM2e12LVu2TOnp6RoyZIiWLFmi48eP6+2331aLFi3UunVrx7/n7t6+ktSkSRPZ7Xbt2bPHcR/IGjVqqEiRIo4xkZGR2rlzZ562W37gsFQumjVrpu3bt2vfvn26fPmyPv74Y8cP9tofsCRduHBBMTEx2r59u9Nj79696tGjh/z9/V1ad7169XTw4EGNGzdOly9fVteuXfX444/nOfeGDRskSatXr9bHH38sb29veXl5OeW22WzKzs7OkXv58uWSpNatW982ubds2aLGjRuratWq+vbbbxUWFnZb5N6+fbt27NihvXv3asWKFfL29vbo3EOHDpUxRunp6bp8+bJsNpvOnj2rxMREj86d29/L559/XqGhoR6de8uWLSpSpIgGDRrk9O9J9erVPTr3tdt61qxZkqTXXnvN4/89+eGHH2S32/X+++9r586d2rt3rz744AM99thj+ZY7KipK9evXz/Vz5trt5e3t7fQ506NHD8ef9+7dq2HDhumHH36QJC1YsEArV67UmTNnVLFiRbfkzKvf/xtms9lkt9vzPH9ERIQyMzN17tw5p+knTpxQRESEy3koN7koXry4KleurOjoaBUteuOdW/Xq1dO+ffsUFhamypUrOz2Cg4MVGBioChUqKDk5Oc/rDwoKUrdu3TRr1izNmzdPCxcu1NmzZ3OMq169unbs2KGLFy86ch8/flxeXl6qUaPGDdcRGBiYI/fVY66BgYG3Re7y5cvrL3/5i44fP64NGzborrvuui1y5/Z7IkkhISEem7t///7auXOnduzY4XiUKVNGL7/8ssqWLeuxuXPb3mlpafr1118VFhbmsbnLlSunhg0b6vTp006/J4cOHVLx4sU9Nve123vVqlWKiYnRAw884PF/L0NCQpSdna1y5co5bW9/f3/5+fnlS+4SJUpo3759KlmypONzZuPGjZKkgIAAp7HXfs6EhITI398/18+ZrVu3at++ffrxxx/VoUMHt+T8/fa9mtPLy0tVq1bN83b5IzExMfL29nba1nv27NHhw4fVuHFjl5fHYalb1LNnT02YMEEdOnTQ2LFjVa5cOR06dEiLFi3Syy+/rHLlymn06NF69tlnFRYWptatWystLU0bN27U4MGDcyzv3XffVWRkpOrWrSsvLy/Nnz9fERERCgkJyXXdiYmJio+PV1ZWls6cOaPBgwerV69ejl2F1xMWFiZjjDp06KAXX3xRkhy7EL///ntJ0tChQ/XKK694ZO5HH31U2dnZOnDggMaNG6fhw4drwIABKlOmjEaOHKlBgwZ5ZO527dqpfPny6tSpkzIzM7V48WIZY3T06FGNGjVK48aN88jcffv2zfH7bbPZFBERoddff91jf7/btWunsmXLqkuXLsrMzNS8efO0f/9+Va5cWS+//LIGDx7skbk7dOigtm3bavTo0QoPD9fJkydVpUoVLV26VK+88oomTpzosbnHjh2r4OBgzZ07V40bN9Z///tfj/93sFevXqpdu7aGDBmiPXv2aPv27br33nv1ySefqGvXrvmyvaOionTy5EnFx8dr9OjROnXqlAYPHqxKlSrluDP3tZ8zpUqV0uXLl7V+/XotWrRI99xzj6pVq6YBAwZo5MiRmj59umJjY1WqVCm99957bt2+1+bMy/a91tmzZ3X4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\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of recall values from recall1 to recall10\n",
- "recall_values = [recall1, recall2, recall3, recall4, recall5, recall6, recall7, recall8, recall9, recall10]\n",
- "\n",
- "# List of corresponding labels for each recall value\n",
- "labels = ['Recall1', 'Recall2', 'Recall3', 'Recall4', 'Recall5', 'Recall6', 'Recall7', 'Recall8', 'Recall9', 'Recall10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, recall_values, color='cyan')\n",
- "plt.xlabel('Recall Variables')\n",
- "plt.ylabel('Recall Values')\n",
- "plt.title('Bar Graph of Recall')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "39LBleNeDeuw",
- "outputId": "3c6c40bc-f1da-44fb-da14-25ec6d6cf278"
- },
- "execution_count": 122,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/z0lEQVR4nO3deVxU9eL/8feAMOACroAhV3HfEg03MjQTxSyXFjPNRKX8WdoieUu7JlrdyMqtcmlx75qWmtfSXMKsa1KmiFtqaiJkCuKGIELC+f3h17nOBY1RluH4ej4e83jEZ87ynoM5b89qMQzDEAAAgEm4lHYAAACAokS5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AVBmTZgwQRaLRWlpacW+rrVr16ply5by8PCQxWLR2bNni32dxcVisWjChAm2n+fPny+LxaLExMRSywQUJcoN4ISufNlc/fLx8VHnzp319ddfl3ieL7/8Uj179pSvr6/c3d1VtWpVdezYUZMnT1Z6enqJ5ylpp06d0iOPPCJPT0/NmDFDixYtUoUKFQqc9n9/d+XKlZO/v78GDx6sY8eOlXBy4NZUrrQDALi2V199VYGBgTIMQykpKZo/f7569OihL7/8Uvfff3+xrz8vL0+RkZGaP3++br/9dj399NMKCAjQ+fPnFRcXp3HjxmnNmjWKjY0t9iyl6eeff9b58+f12muvKSwsrFDzXPndXbx4UT/++KPmz5+vzZs3a8+ePfLw8CjmxMCtjXIDOLF7771XrVu3tv0cGRkpX19fffrpp0VSbvLy8pSTk3PNL9u33npL8+fP16hRozR58mRZLBbbe88995yOHz+uhQsX3tQ6yoLU1FRJUuXKlQs9z9W/uyeeeELVq1fXpEmTtGrVKj3yyCPFERPA/+GwFFCGVK5cWZ6enipXzv7fJe+8847uvPNOVatWTZ6engoODtayZcvyzW+xWDRy5Ej961//UrNmzWS1WrV27doC13XhwgVNmjRJzZo109tvv21XbK6oWbOmXnrppUKv40ZyNmrUSB4eHgoODtb3339fYNazZ89q8ODBqly5sry9vTVkyBBduHCh4I34Pz7//HMFBwfL09NT1atX18CBA+0OH919992KiIiQJLVp00YWi0WDBw8u1LKvFhoaKkk6fPiw3fj+/fv18MMPq2rVqvLw8FDr1q21atWqAj/jqFGjVKdOHVmtVtWqVUuDBg2ynW+Uk5Oj8ePHKzg4WN7e3qpQoYJCQ0P17bffOpwVKOvYcwM4sXPnziktLU2GYSg1NVXvvfeeMjIyNHDgQLvppk+frl69eumxxx5TTk6OlixZor59++qrr77SfffdZzftxo0b9dlnn2nkyJGqXr266tSpU+C6N2/erLNnz2r06NFydXV1KPe11uFIzu+++05Lly7Vs88+K6vVqpkzZ6p79+7aunWrmjdvbjftI488osDAQMXExCg+Pl4ff/yxfHx8NGnSpOvmnD9/voYMGaI2bdooJiZGKSkpmj59un744Qft2LFDlStX1j/+8Q81atRIH374oe1QU7169RzaHpJsJ+tWqVLFNrZ371516NBB/v7+GjNmjCpUqKDPPvtMffr00fLly/XAAw9IkjIyMhQaGqp9+/Zp6NChuuOOO5SWlqZVq1bp999/V/Xq1ZWenq6PP/5Y/fv315NPPqnz589rzpw5Cg8P19atW9WyZUuHMwNllgHA6cybN8+QlO9ltVqN+fPn55v+woULdj/n5OQYzZs3N+655x67cUmGi4uLsXfv3r/MMH36dEOSsXLlSrvxS5cuGSdPnrR75eXlFWodjuSUZGzbts02dvToUcPDw8N44IEHbGPR0dGGJGPo0KF28z/wwANGtWrVrvv5cnJyDB8fH6N58+ZGVlaWbfyrr74yJBnjx4+3jV35ffz888/XXebV037zzTfGyZMnjeTkZGPZsmVGjRo1DKvVaiQnJ9um7dKli3H77bcbFy9etI3l5eUZd955p9GgQQPb2Pjx4w1JxooVK/Kt78q2v3TpkpGdnW333pkzZwxfX99820eSER0dnS/zkSNH/vLzAWUBh6UAJzZjxgxt2LBBGzZs0CeffKLOnTvriSee0IoVK+ym8/T0tP33mTNndO7cOYWGhio+Pj7fMjt16qSmTZv+5bqvXAVVsWJFu/Hdu3erRo0adq9Tp04Vah2O5AwJCVFwcLDt57/97W/q3bu31q1bp9zcXLtphw8fbvdzaGioTp06dd0rubZt26bU1FQ9/fTTducD3XfffWrcuLFWr159zXkLIywsTDVq1FBAQIAefvhhVahQQatWrVKtWrUkSadPn9bGjRv1yCOP6Pz580pLS1NaWppOnTql8PBwHTx40HZ4bPny5QoKCrLtybnalcOFrq6ucnd3l3T5PKfTp0/r0qVLat26dYHbFzAzDksBTqxt27Z2JxT3799frVq10siRI3X//ffbvsy++uorvf7660pISFB2drZt+oLOkwkMDCzUuitVqiTp8iGRq9WvX18bNmyQJC1cuFCLFi0q9DocydmgQYN8Yw0bNtSFCxd08uRJ+fn52cb/9re/2U135dDPmTNn5OXlVWCWo0ePSpIaNWqU773GjRtr8+bNBc5XWDNmzFDDhg117tw5zZ07V99//72sVqvt/UOHDskwDL3yyit65ZVXClxGamqq/P39dfjwYT300EN/uc4FCxZo8uTJ2r9/v/7880/beGF/54BZUG6AMsTFxUWdO3fW9OnTdfDgQTVr1kz/+c9/1KtXL3Xs2FEzZ85UzZo15ebmpnnz5mnx4sX5lnH13pPrady4sSRpz5496t27t228YsWKtsuhr1UAClqHozkdca1zggzDuKnl3oyri2mfPn101113acCAATpw4IAqVqyovLw8SdLo0aMVHh5e4DLq169f6PV98sknGjx4sPr06aO///3v8vHxkaurq2JiYvKdxAyYHeUGKGMuXbok6b97VJYvXy4PDw+tW7fObs/AvHnzbmo9oaGh8vb21pIlSzR27Fi5uNzcUWxHcx48eDDf2K+//qry5curRo0aN5VFkmrXri1JOnDggO655x679w4cOGB7vyhcKRmdO3fW+++/rzFjxqhu3bqSJDc3t7+8d069evW0Z8+e606zbNky1a1bVytWrLDbExYdHX3zHwAoYzjnBihD/vzzT61fv17u7u5q0qSJpMtfnBaLxe48lMTERK1cufKm1lW+fHm9+OKL2rNnj8aMGVPgXhBH9ow4mjMuLs7uXJHk5GT9+9//Vrdu3Ry+eqsgrVu3lo+Pj2bPnm13iOzrr7/Wvn378l29dbPuvvtutW3bVtOmTdPFixfl4+Oju+++Wx988IGOHz+eb/qTJ0/a/vuhhx7Szp079cUXX+Sb7srv4Mo2ufp38tNPPykuLq5IPwdQFrDnBnBiX3/9tfbv3y/p8vkXixcv1sGDBzVmzBjbuST33XefpkyZou7du2vAgAFKTU3VjBkzVL9+fe3ateum1j9mzBjt27dPb7/9ttavX6+HHnpItWrV0pkzZxQfH6/PP/9cPj4+hbpB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ldaK09LSlJubK19fX7txX19f7d+/v8B5BgwYoLS0NN11110yDEOXLl3S8OHDr3tYKjs7W9nZ2baf09PTi+YDAAAAp1TqJxQ7YtOmTXrjjTc0c+ZMxcfHa8WKFVq9erVee+21a84TExMjb29v2ysgIKAEEwMAgJJmMQzDKI0V5+TkqHz58lq2bJn69OljG4+IiNDZs2f173//O988oaGhat++vd5++23b2CeffKJhw4YpIyNDLi75u1pBe24CAgJ07tw5eXl5Fe2HknOewFuYXzC5iw65Sxa5Sxa5S5aZczsqPT1d3t7ehfr+LrU9N+7u7goODlZsbKxtLC8vT7GxsQoJCSlwngsXLuQrMK6urpKka3U0q9UqLy8vuxcAADCvUjvnRpKioqIUERGh1q1bq23btpo2bZoyMzM1ZMgQSdKgQYPk7++vmJgYSVLPnj01ZcoUtWrVSu3atdOhQ4f0yiuvqGfPnraSAwAAbm2lWm769eunkydPavz48Tpx4oRatmyptWvX2k4yTkpKsttTM27cOFksFo0bN07Hjh1TjRo11LNnT/3zn/8srY8AAACcTKmdc1NaHDlmdyPK6rFPchcdcpcscpcscpcsM+d2VJk45wYAAKA4UG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpOFxusrKydOHCBdvPR48e1bRp07R+/foiDQYAAHAjHC43vXv31sKFCyVJZ8+eVbt27TR58mT17t1bs2bNKvKAAAAAjnC43MTHxys0NFSStGzZMvn6+uro0aNauHCh3n333SIPCAAA4AiHy82FCxdUqVIlSdL69ev14IMPysXFRe3bt9fRo0eLPCAAAIAjHC439evX18qVK5Wc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J06cUMuWLbV27VrbScZJSUlycbnhGykDAIBbzA0/W6qs4tlSBSN30SF3ySJ3ySJ3yTJzbkeVyLOlAAAAnBHlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmIpTlJsZM2aoTp068vDwULt27bR169ZrTvvRRx8pNDRUVapUUZUqVRQWFnbd6QEAwK2l1MvN0qVLFRUVpejoaMXHxysoKEjh4eFKTU0tcPpNmzapf//++vbbbxUXF6eAgAB169ZNx44dK+HkAADAGVkMwzBKM0C7du3Upk0bvf/++5KkvLw8BQQE6JlnntGYMWP+cv7c3FxVqVJF77//vgYNGvSX06enp8vb21vnzp2Tl5fXTef/X5YiX+LNK8wvmNxFh9wli9wli9wly8y5HeXI93ep7rnJycnR9u3bFRYWZhtzcXFRWFiY4uLiCrWMCxcu6M8//1TVqlULfD87O1vp6el2LwAAYF6lWm7S0tKUm5srX19fu3FfX1+dOHGiUMt46aWXdNttt9kVpKvFxMTI29vb9goICLjp3AAAwHmV+jk3N+PNN9/UkiVL9MUXX8jDw6PAacaOHatz587ZXsnJySWcEgAAlKRypbny6tWry9XVVSkpKXbjKSkp8vPzu+6877zzjt5880198803atGixTWns1qtslqtRZIXAAA4v1Ldc+Pu7q7g4GDFxsbaxvLy8hQbG6uQkJBrzvfWW2/ptdde09q1a9W6deuSiAoAAMqIUt1zI0lRUVGKiIhQ69at1bZt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\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [],
- "metadata": {
- "id": "13cZXvb0DsvK"
- },
- "execution_count": null,
- "outputs": []
- }
- ],
- "metadata": {
- "colab": {
- "provenance": []
- },
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.9.16"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 0
-}
\ No newline at end of file
diff --git a/Stock_Price_Prediction.ipynb b/Stock_Price_Prediction.ipynb
deleted file mode 100644
index 7c3ad61..0000000
--- a/Stock_Price_Prediction.ipynb
+++ /dev/null
@@ -1,1805 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "id": "qCDSjVhXLr_Z"
- },
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "import numpy as np\n",
- "import matplotlib.pyplot as plt\n",
- "from sklearn.model_selection import train_test_split\n",
- "from sklearn.impute import SimpleImputer\n",
- "from sklearn.preprocessing import MinMaxScaler\n",
- "from sklearn.linear_model import LinearRegression\n",
- "from sklearn.svm import SVR\n",
- "from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor, GradientBoostingRegressor, DecisionTreeRegressor\n",
- "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error\n",
- "from sklearn.neighbors import KNeighborsRegressor\n",
- "from tensorflow.keras.models import Sequential\n",
- "from tensorflow.keras.layers import Dense,LSTM"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "SOQbXSiB-g5G",
- "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
- ]
- }
- ],
- "source": [
- "from google.colab import drive\n",
- "drive.mount('/content/drive')\n",
- "df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "Sc4id6VxL8BS",
- "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Date \n",
- " Open \n",
- " High \n",
- " Low \n",
- " Close \n",
- " Adj Close \n",
- " Volume \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 01-01-1996 \n",
- " 18.691147 \n",
- " 18.978922 \n",
- " 18.540184 \n",
- " 18.823240 \n",
- " 12.409931 \n",
- " 43733533.0 \n",
- " \n",
- " \n",
- " 1 \n",
- " 02-01-1996 \n",
- " 18.894005 \n",
- " 18.964767 \n",
- " 17.738192 \n",
- " 18.224106 \n",
- " 12.014931 \n",
- " 56167280.0 \n",
- " \n",
- " \n",
- " 2 \n",
- " 03-01-1996 \n",
- " 18.327892 \n",
- " 18.568489 \n",
- " 17.643839 \n",
- " 17.738192 \n",
- " 11.694577 \n",
- " 68296318.0 \n",
- " \n",
- " \n",
- " 3 \n",
- " 04-01-1996 \n",
- " 17.502312 \n",
- " 17.832542 \n",
- " 17.223972 \n",
- " 17.676863 \n",
- " 11.654142 \n",
- " 86073880.0 \n",
- " \n",
- " \n",
- " 4 \n",
- " 05-01-1996 \n",
- " 17.738192 \n",
- " 17.785366 \n",
- " 17.459852 \n",
- " 17.577793 \n",
- " 11.588827 \n",
- " 76613039.0 \n",
- " \n",
- " \n",
- "
\n",
- "
\n",
- "
\n",
- "
\n"
- ],
- "text/plain": [
- " Date Open High Low Close Adj Close \\\n",
- "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
- "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
- "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
- "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
- "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
- "\n",
- " Volume \n",
- "0 43733533.0 \n",
- "1 56167280.0 \n",
- "2 68296318.0 \n",
- "3 86073880.0 \n",
- "4 76613039.0 "
- ]
- },
- "execution_count": 23,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Load the dataset\n",
- "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
- "df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "id": "7LaYGXsfN-8y"
- },
- "outputs": [],
- "source": [
- "# Drop the 'Date' and 'Adj Close' columns\n",
- "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "pqbTBdnBOKJc",
- "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Open \n",
- " High \n",
- " Low \n",
- " Close \n",
- " Volume \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 18.691147 \n",
- " 18.978922 \n",
- " 18.540184 \n",
- " 18.823240 \n",
- " 43733533.0 \n",
- " \n",
- " \n",
- " 1 \n",
- " 18.894005 \n",
- " 18.964767 \n",
- " 17.738192 \n",
- " 18.224106 \n",
- " 56167280.0 \n",
- " \n",
- " \n",
- " 2 \n",
- " 18.327892 \n",
- " 18.568489 \n",
- " 17.643839 \n",
- " 17.738192 \n",
- " 68296318.0 \n",
- " \n",
- " \n",
- " 3 \n",
- " 17.502312 \n",
- " 17.832542 \n",
- " 17.223972 \n",
- " 17.676863 \n",
- " 86073880.0 \n",
- " \n",
- " \n",
- " 4 \n",
- " 17.738192 \n",
- " 17.785366 \n",
- " 17.459852 \n",
- " 17.577793 \n",
- " 76613039.0 \n",
- " \n",
- " \n",
- "
\n",
- "
\n",
- "
\n",
- "
\n"
- ],
- "text/plain": [
- " Open High Low Close Volume\n",
- "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
- "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
- "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
- "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
- "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
- ]
- },
- "execution_count": 25,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "id": "dydEPoNeM6eN"
- },
- "outputs": [],
- "source": [
- "# Handle missing values\n",
- "imputer = SimpleImputer(strategy='mean')\n",
- "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "id": "OQ3cGqgTMBwt"
- },
- "outputs": [],
- "source": [
- "# Select features and target variable\n",
- "X = df[['Open', 'High', 'Low', 'Volume']]\n",
- "y = df['Close']"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {
- "id": "9Oz-bwJOMEWD"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "id": "ugapDyXODtn3"
- },
- "outputs": [],
- "source": [
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "997ZEgibCZIO",
- "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(5659, 4)"
- ]
- },
- "execution_count": 29,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "X_train.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "bmtt76RuCeyG",
- "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1415, 4)"
- ]
- },
- "execution_count": 30,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "X_test.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "CeJkUJ92Ciqd",
- "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(5659,)"
- ]
- },
- "execution_count": 31,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "y_train.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "7HGC7VuTCjWc",
- "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1415,)"
- ]
- },
- "execution_count": 32,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "y_test.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Function to evaluate and print RMSE, MAE, and MAPE\n",
- "def evaluate_model(model, X_test, y_test):\n",
- " predictions = model.predict(X_test)\n",
- " rmse = np.sqrt(mean_squared_error(y_test, predictions))\n",
- " mae = mean_absolute_error(y_test, predictions)\n",
- " mape = mean_absolute_percentage_error(y_test, predictions)\n",
- "\n",
- " print(f\"RMSE: {rmse}\")\n",
- " print(f\"MAE: {mae}\")\n",
- " print(f\"MAPE: {mape}\\n\")\n",
- " \n",
- " return rmse, mae, mape\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "metrics = {\n",
- " \"Model\": [],\n",
- " \"RMSE\": [],\n",
- " \"MAE\": [],\n",
- " \"MAPE\": []\n",
- "}"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "c6Ek8jRlO2_I"
- },
- "source": [
- "## 1. LINEAR REGRESSION"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {
- "id": "RdZ1SpzdMHAJ"
- },
- "outputs": [],
- "source": [
- "# Create a linear regression model\n",
- "model1 = LinearRegression()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "mPM035IzMY04",
- "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "5286 257.350006\n",
- "3408 129.464996\n",
- "5477 279.350006\n",
- "6906 588.500000\n",
- "530 21.644367\n",
- "Name: Close, dtype: float64"
- ]
- },
- "execution_count": 34,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "y_train.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "qBhQ9HbYMI3d",
- "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "LinearRegression()"
- ]
- },
- "execution_count": 35,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model1.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "id": "X269co2kMS4z"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model1, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"Linear Regressor\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "GxtMzlg-gR2P"
- },
- "source": [
- "## 2. Support Vector Regression"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {
- "id": "0xQewd7QWTtq"
- },
- "outputs": [],
- "source": [
- "# Create an SVR model\n",
- "model2 = SVR()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "22SaCsQmfhgP",
- "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "SVR()"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model2.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {
- "id": "OQ1nL4oYfkAC"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model2, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"SVR\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "hcIfVMWdgcKt"
- },
- "source": [
- "## 3. Random Forest Regressor"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {
- "id": "f7raXT_hf2ij"
- },
- "outputs": [],
- "source": [
- "model3 = RandomForestRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "fF002Yepgk55",
- "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "RandomForestRegressor()"
- ]
- },
- "execution_count": 48,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model3.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {
- "id": "8nRU_pzEgnCt"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model3, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"Random Forest\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "mZsLwLivhLGH"
- },
- "source": [
- "## 4. Gradient Boosting Models (GBM)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "metadata": {
- "id": "TI8idoxOg6jF"
- },
- "outputs": [],
- "source": [
- "model4 = GradientBoostingRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 248
- },
- "id": "2gpbDxshhexj",
- "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) "
- ],
- "text/plain": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...)"
- ]
- },
- "execution_count": 54,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model4.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "id": "Jj9DXdUPhh9V"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model4, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"GBM\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "d8nSGoyuh9dx"
- },
- "source": [
- "## 5. Extreme Gradient Boosting (XGBoost)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 58,
- "metadata": {
- "id": "DyhhdlZAhx94"
- },
- "outputs": [],
- "source": [
- "import xgboost as xgb\n",
- "# Create an XGBoost model\n",
- "model5 = xgb.XGBRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 248
- },
- "id": "RAIwxIp5iH9Z",
- "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) "
- ],
- "text/plain": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...)"
- ]
- },
- "execution_count": 60,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model5.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model5, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"XGBoost\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "A_J776rtiovq"
- },
- "source": [
- "## 6. AdaBoostRegressor"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "id": "HNq66cXRiYPJ"
- },
- "outputs": [],
- "source": [
- "model6 = AdaBoostRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 66,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "P0oB5wjQivBr",
- "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "AdaBoostRegressor()"
- ]
- },
- "execution_count": 66,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model6.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "metadata": {
- "id": "Bf1m5ukOi2VM"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model6, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"AdaBoost Regressor\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "Q9DzOt3CkWFX"
- },
- "source": [
- "## 7. Decision Tree"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 70,
- "metadata": {
- "id": "23DZ2biSjF9a"
- },
- "outputs": [],
- "source": [
- "model7 = DecisionTreeRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 72,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "6mQEQf-ykc9F",
- "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "DecisionTreeRegressor()"
- ]
- },
- "execution_count": 72,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model7.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 73,
- "metadata": {
- "id": "BFJ9q_tvkgRC"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model7, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"Decision Tree\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "LH-B-Xd6k5UD"
- },
- "source": [
- "## 8. KNeighborsRegressor(KNN)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 76,
- "metadata": {
- "id": "JVDSed7yktFY"
- },
- "outputs": [],
- "source": [
- "# Create a KNN model\n",
- "model8 = KNeighborsRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 78,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "9fn64o-ZlBka",
- "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "KNeighborsRegressor()"
- ]
- },
- "execution_count": 78,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model8.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "metadata": {
- "id": "hbfbbjcSlDn7"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model8, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"KNN\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "X5XtlzMXljps"
- },
- "source": [
- "## 9. Artificial Neural Networks (ANN)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 84,
- "metadata": {
- "id": "vd1fDjQiltP4"
- },
- "outputs": [],
- "source": [
- "# Create an ANN model\n",
- "model9 = Sequential()\n",
- "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
- "model9.add(Dense(16, activation='relu'))\n",
- "model9.add(Dense(1, activation='linear'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 85,
- "metadata": {
- "id": "ZIf94WLMlv04"
- },
- "outputs": [],
- "source": [
- "# Compile the model\n",
- "model9.compile(loss='mean_squared_error', optimizer='adam')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "FX5DTKqslxWf",
- "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 86,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 87,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "OVW2qpNsmGVq",
- "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "45/45 [==============================] - 0s 1ms/step\n"
- ]
- }
- ],
- "source": [
- "rmse, mae, mape = evaluate_model(model9, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"ANN\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "vjSMQNcOnFPJ"
- },
- "source": [
- "## 10. LSTM(Long Short term Memory)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 92,
- "metadata": {
- "id": "uACvajfImrbB"
- },
- "outputs": [],
- "source": [
- "# Reshape the input data for LSTM\n",
- "n_features = X_train_scaled.shape[1]\n",
- "n_steps = 10\n",
- "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
- "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
- "\n",
- "# Reshape the input data\n",
- "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
- "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 93,
- "metadata": {
- "id": "r066pVYpnXH5"
- },
- "outputs": [],
- "source": [
- "# Create an LSTM model\n",
- "model = Sequential()\n",
- "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
- "model.add(Dense(1))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 94,
- "metadata": {
- "id": "YpSfHu6gov35"
- },
- "outputs": [],
- "source": [
- "# Compile the model\n",
- "model.compile(loss='mean_squared_error', optimizer='adam')\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 95,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "0vHjcluaoxzP",
- "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 95,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 96,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "gEE06_TjozYv",
- "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "44/44 [==============================] - 0s 4ms/step\n"
- ]
- }
- ],
- "source": [
- "rmse, mae, mape = evaluate_model(model10, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"LSTM\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create a DataFrame for metrics\n",
- "metrics_df = pd.DataFrame(metrics)\n",
- "\n",
- "# Plot RMSE, MAE, and MAPE for each model\n",
- "plt.figure(figsize=(15, 5))\n",
- "\n",
- "# RMSE Plot\n",
- "plt.subplot(1, 3, 1)\n",
- "plt.bar(metrics_df['Model'], metrics_df['RMSE'], color='lightblue')\n",
- "plt.xlabel('RMSE')\n",
- "plt.title('RMSE for Different Models')\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# MAE Plot\n",
- "plt.subplot(1, 3, 2)\n",
- "plt.bar(metrics_df['Model'], metrics_df['MAE'], color='lightgreen')\n",
- "plt.xlabel('MAE')\n",
- "plt.title('MAE for Different Models')\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# MAPE Plot\n",
- "plt.subplot(1, 3, 3)\n",
- "plt.bar(metrics_df['Model'], metrics_df['MAPE'], color='salmon')\n",
- "plt.xlabel('MAPE')\n",
- "plt.title('MAPE for Different Models')\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "colab": {
- "provenance": []
- },
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.9.16"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 0
-}
From f128197231681d37105306bfd9e6463489f336b1 Mon Sep 17 00:00:00 2001
From: Ayushi Sha <124066968+AYUSHI-SHA@users.noreply.github.com>
Date: Sun, 6 Oct 2024 14:26:03 +0530
Subject: [PATCH 03/76] Changes
---
Python File/Stock_Price_Prediction.ipynb | 2708 ++++++++++++++++++++++
Stock_Price_Prediction.ipynb | 1805 ++++++++++++++
2 files changed, 4513 insertions(+)
create mode 100644 Python File/Stock_Price_Prediction.ipynb
create mode 100644 Stock_Price_Prediction.ipynb
diff --git a/Python File/Stock_Price_Prediction.ipynb b/Python File/Stock_Price_Prediction.ipynb
new file mode 100644
index 0000000..c82b075
--- /dev/null
+++ b/Python File/Stock_Price_Prediction.ipynb
@@ -0,0 +1,2708 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "id": "qCDSjVhXLr_Z"
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, accuracy_score, precision_score, confusion_matrix, recall_score, f1_score"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/content/drive')\n",
+ "df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "SOQbXSiB-g5G",
+ "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e"
+ },
+ "execution_count": 22,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "Sc4id6VxL8BS",
+ "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " Date Open High Low Close Adj Close \\\n",
+ "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
+ "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
+ "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
+ "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
+ "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
+ "\n",
+ " Volume \n",
+ "0 43733533.0 \n",
+ "1 56167280.0 \n",
+ "2 68296318.0 \n",
+ "3 86073880.0 \n",
+ "4 76613039.0 "
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Date \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Adj Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 01-01-1996 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 12.409931 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 02-01-1996 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 12.014931 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 03-01-1996 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 11.694577 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 04-01-1996 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 11.654142 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 05-01-1996 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 11.588827 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 23
+ }
+ ],
+ "source": [
+ "# Load the dataset\n",
+ "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "id": "7LaYGXsfN-8y"
+ },
+ "outputs": [],
+ "source": [
+ "# Drop the 'Date' and 'Adj Close' columns\n",
+ "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "pqbTBdnBOKJc",
+ "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " Open High Low Close Volume\n",
+ "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
+ "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
+ "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
+ "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
+ "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 25
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "id": "dydEPoNeM6eN"
+ },
+ "outputs": [],
+ "source": [
+ "# Handle missing values\n",
+ "from sklearn.impute import SimpleImputer\n",
+ "imputer = SimpleImputer(strategy='mean')\n",
+ "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "id": "OQ3cGqgTMBwt"
+ },
+ "outputs": [],
+ "source": [
+ "# Select features and target variable\n",
+ "X = df[['Open', 'High', 'Low', 'Volume']]\n",
+ "y = df['Close']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "id": "9Oz-bwJOMEWD"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "id": "ugapDyXODtn3"
+ },
+ "outputs": [],
+ "source": [
+ "# Scale the features using Min-Max scaling\n",
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "997ZEgibCZIO",
+ "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(5659, 4)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 29
+ }
+ ],
+ "source": [
+ "X_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "bmtt76RuCeyG",
+ "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(1415, 4)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 30
+ }
+ ],
+ "source": [
+ "X_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "CeJkUJ92Ciqd",
+ "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(5659,)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 31
+ }
+ ],
+ "source": [
+ "y_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7HGC7VuTCjWc",
+ "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(1415,)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 32
+ }
+ ],
+ "source": [
+ "y_test.shape"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "c6Ek8jRlO2_I"
+ },
+ "source": [
+ "## 1. LINEAR REGRESSION"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "id": "RdZ1SpzdMHAJ"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a linear regression model\n",
+ "model1 = LinearRegression()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "mPM035IzMY04",
+ "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "5286 257.350006\n",
+ "3408 129.464996\n",
+ "5477 279.350006\n",
+ "6906 588.500000\n",
+ "530 21.644367\n",
+ "Name: Close, dtype: float64"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 34
+ }
+ ],
+ "source": [
+ "y_train.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "qBhQ9HbYMI3d",
+ "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "LinearRegression()"
+ ],
+ "text/html": [
+ "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 35
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model1.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "id": "X269co2kMS4z"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred1 = model1.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "id": "QK8GvDYPOd0Y"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse1 = np.sqrt(mean_squared_error(y_test, pred1))\n",
+ "mae1 = mean_absolute_error(y_test, pred1)\n",
+ "mape1 = mean_absolute_percentage_error(y_test, pred1)\n",
+ "accuracy1 = accuracy_score(y_test > pred1, y_test > pred1.round())\n",
+ "precision1 = precision_score(y_test > pred1, y_test > pred1.round())\n",
+ "confusion1 = confusion_matrix(y_test > pred1, y_test > pred1.round())\n",
+ "recall1 = recall_score(y_test > pred1, y_test > pred1.round())\n",
+ "f11 = f1_score(y_test > pred1, y_test > pred1.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "dEi49xtEOtne",
+ "outputId": "0000b074-3187-41de-fbac-4ae75cbda6bd"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 1.6881364643681482\n",
+ "MAE: 0.9433353485344729\n",
+ "MAPE: 0.006085435990853812\n",
+ "Accuracy: 0.8296819787985866\n",
+ "Precision: 0.8623595505617978\n",
+ "Confusion Matrix:\n",
+ " [[560 98]\n",
+ " [143 614]]\n",
+ "Recall: 0.8110964332892999\n",
+ "F1 Score: 0.8359428182437032\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse1)\n",
+ "print(\"MAE:\", mae1)\n",
+ "print(\"MAPE:\", mape1)\n",
+ "print(\"Accuracy:\", accuracy1)\n",
+ "print(\"Precision:\", precision1)\n",
+ "print(\"Confusion Matrix:\\n\", confusion1)\n",
+ "print(\"Recall:\", recall1)\n",
+ "print(\"F1 Score:\", f11)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "GxtMzlg-gR2P"
+ },
+ "source": [
+ "## 2. SVR"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {
+ "id": "o7K9r7EXWRjQ"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.svm import SVR"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "id": "0xQewd7QWTtq"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an SVR model\n",
+ "model2 = SVR()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "id": "DuNes3s6U2IV"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "22SaCsQmfhgP",
+ "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "SVR()"
+ ],
+ "text/html": [
+ "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 42
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model2.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {
+ "id": "OQ1nL4oYfkAC"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred2 = model2.predict(X_test)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {
+ "id": "nRYTwydsfpjb"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse2 = np.sqrt(mean_squared_error(y_test, pred2))\n",
+ "mae2 = mean_absolute_error(y_test, pred2)\n",
+ "mape2 = mean_absolute_percentage_error(y_test, pred2)\n",
+ "accuracy2 = accuracy_score(y_test > pred2, y_test > pred2.round())\n",
+ "precision2 = precision_score(y_test > pred2, y_test > pred2.round())\n",
+ "confusion2 = confusion_matrix(y_test > pred2, y_test > pred2.round())\n",
+ "recall2 = recall_score(y_test > pred2, y_test > pred2.round())\n",
+ "f12 = f1_score(y_test > pred2, y_test > pred2.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "656J5oz5fzq6",
+ "outputId": "ce67d2d8-0bc8-4e6d-d6b5-6b78e7e1c59b"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 147.71103599153602\n",
+ "MAE: 110.99419106508152\n",
+ "MAPE: 1.9715076513294716\n",
+ "Accuracy: 0.9992932862190813\n",
+ "Precision: 1.0\n",
+ "Confusion Matrix:\n",
+ " [[727 0]\n",
+ " [ 1 687]]\n",
+ "Recall: 0.998546511627907\n",
+ "F1 Score: 0.9992727272727273\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse2)\n",
+ "print(\"MAE:\", mae2)\n",
+ "print(\"MAPE:\", mape2)\n",
+ "print(\"Accuracy:\", accuracy2)\n",
+ "print(\"Precision:\", precision2)\n",
+ "print(\"Confusion Matrix:\\n\", confusion2)\n",
+ "print(\"Recall:\", recall2)\n",
+ "print(\"F1 Score:\", f12)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "hcIfVMWdgcKt"
+ },
+ "source": [
+ "## 3. Random Forest"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "id": "f7raXT_hf2ij"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.ensemble import RandomForestRegressor\n",
+ "# Create a Random Forest model\n",
+ "model3 = RandomForestRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {
+ "id": "TadNM7MEU7fh"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "fF002Yepgk55",
+ "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "RandomForestRegressor()"
+ ],
+ "text/html": [
+ "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 48
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model3.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "id": "8nRU_pzEgnCt"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred3 = model3.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {
+ "id": "4aKEXGVUgsry"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse3 = np.sqrt(mean_squared_error(y_test, pred3))\n",
+ "mae3 = mean_absolute_error(y_test, pred3)\n",
+ "mape3 = mean_absolute_percentage_error(y_test, pred3)\n",
+ "accuracy3 = accuracy_score(y_test > pred3, y_test > pred3.round())\n",
+ "precision3 = precision_score(y_test > pred3, y_test > pred3.round())\n",
+ "confusion3 = confusion_matrix(y_test > pred3, y_test > pred3.round())\n",
+ "recall3 = recall_score(y_test > pred3, y_test > pred3.round())\n",
+ "f13 = f1_score(y_test > pred3, y_test > pred3.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "8pPzsCY1g305",
+ "outputId": "72c4ea56-2610-41c6-f286-4c8289d3f0ac"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 2.189635498596314\n",
+ "MAE: 1.250413817712252\n",
+ "MAPE: 0.007984509559881612\n",
+ "Accuracy: 0.8551236749116607\n",
+ "Precision: 0.8558823529411764\n",
+ "Confusion Matrix:\n",
+ " [[628 98]\n",
+ " [107 582]]\n",
+ "Recall: 0.8447024673439768\n",
+ "F1 Score: 0.8502556610664718\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse3)\n",
+ "print(\"MAE:\", mae3)\n",
+ "print(\"MAPE:\", mape3)\n",
+ "print(\"Accuracy:\", accuracy3)\n",
+ "print(\"Precision:\", precision3)\n",
+ "print(\"Confusion Matrix:\\n\", confusion3)\n",
+ "print(\"Recall:\", recall3)\n",
+ "print(\"F1 Score:\", f13)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "mZsLwLivhLGH"
+ },
+ "source": [
+ "## 4. Gradient Boosting Models (GBM)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "id": "TI8idoxOg6jF"
+ },
+ "outputs": [],
+ "source": [
+ "import xgboost as xgb\n",
+ "# Create an XGBoost model\n",
+ "model4 = xgb.XGBRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "id": "7r9xJDtOVBEA"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
+ },
+ "id": "2gpbDxshhexj",
+ "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
+ ],
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 54
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model4.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {
+ "id": "Jj9DXdUPhh9V"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred4 = model4.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "metadata": {
+ "id": "TdH60Sllhn5O"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse4 = np.sqrt(mean_squared_error(y_test, pred4))\n",
+ "mae4 = mean_absolute_error(y_test, pred4)\n",
+ "mape4 = mean_absolute_percentage_error(y_test, pred4)\n",
+ "accuracy4 = accuracy_score(y_test > pred4, y_test > pred4.round())\n",
+ "precision4 = precision_score(y_test > pred4, y_test > pred4.round())\n",
+ "confusion4 = confusion_matrix(y_test > pred4, y_test > pred4.round())\n",
+ "recall4 = recall_score(y_test > pred4, y_test > pred4.round())\n",
+ "f14 = f1_score(y_test > pred4, y_test > pred4.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "qpnLeFyZhwB3",
+ "outputId": "4dcac062-ec60-4b2c-ab4b-dcda1b0f2341"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 2.733930065274145\n",
+ "MAE: 1.502457380471909\n",
+ "MAPE: 0.010026410639661481\n",
+ "Accuracy: 0.8840989399293286\n",
+ "Precision: 0.8948106591865358\n",
+ "Confusion Matrix:\n",
+ " [[613 75]\n",
+ " [ 89 638]]\n",
+ "Recall: 0.8775790921595599\n",
+ "F1 Score: 0.8861111111111112\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse4)\n",
+ "print(\"MAE:\", mae4)\n",
+ "print(\"MAPE:\", mape4)\n",
+ "print(\"Accuracy:\", accuracy4)\n",
+ "print(\"Precision:\", precision4)\n",
+ "print(\"Confusion Matrix:\\n\", confusion4)\n",
+ "print(\"Recall:\", recall4)\n",
+ "print(\"F1 Score:\", f14)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "d8nSGoyuh9dx"
+ },
+ "source": [
+ "## 5. Extreme Gradient Boosting (XGBoost)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {
+ "id": "DyhhdlZAhx94"
+ },
+ "outputs": [],
+ "source": [
+ "import xgboost as xgb\n",
+ "# Create an XGBoost model\n",
+ "model5 = xgb.XGBRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {
+ "id": "Z_AD0lVOVHwB"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
+ },
+ "id": "RAIwxIp5iH9Z",
+ "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
+ ],
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 60
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model5.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {
+ "id": "XmJds5fYiKT3"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred5 = model5.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {
+ "id": "lZ1A0-L8iNCM"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse5 = np.sqrt(mean_squared_error(y_test, pred5))\n",
+ "mae5 = mean_absolute_error(y_test, pred5)\n",
+ "mape5 = mean_absolute_percentage_error(y_test, pred5)\n",
+ "accuracy5 = accuracy_score(y_test > pred5, y_test > pred5.round())\n",
+ "precision5 = precision_score(y_test > pred5, y_test > pred5.round())\n",
+ "confusion5 = confusion_matrix(y_test > pred5, y_test > pred5.round())\n",
+ "recall5 = recall_score(y_test > pred5, y_test > pred5.round())\n",
+ "f15 = f1_score(y_test > pred5, y_test > pred5.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7IkE-RAmiWNo",
+ "outputId": "cf4c1d84-412b-4a18-f70c-65ce637772ea"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 2.733930065274145\n",
+ "MAE: 1.502457380471909\n",
+ "MAPE: 0.010026410639661481\n",
+ "Accuracy: 0.8840989399293286\n",
+ "Precision: 0.8948106591865358\n",
+ "Confusion Matrix:\n",
+ " [[613 75]\n",
+ " [ 89 638]]\n",
+ "Recall: 0.8775790921595599\n",
+ "F1 Score: 0.8861111111111112\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse5)\n",
+ "print(\"MAE:\", mae5)\n",
+ "print(\"MAPE:\", mape5)\n",
+ "print(\"Accuracy:\", accuracy5)\n",
+ "print(\"Precision:\", precision5)\n",
+ "print(\"Confusion Matrix:\\n\", confusion5)\n",
+ "print(\"Recall:\", recall5)\n",
+ "print(\"F1 Score:\", f15)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "A_J776rtiovq"
+ },
+ "source": [
+ "## 6. AdaBoostRegressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {
+ "id": "HNq66cXRiYPJ"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.ensemble import AdaBoostRegressor\n",
+ "# Create an AdaBoost model\n",
+ "model6 = AdaBoostRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "id": "qPHH6rG0VW4V"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "P0oB5wjQivBr",
+ "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "AdaBoostRegressor()"
+ ],
+ "text/html": [
+ "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 66
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model6.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {
+ "id": "Bf1m5ukOi2VM"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred6 = model6.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {
+ "id": "oFWSqC4ai6gd"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse6 = np.sqrt(mean_squared_error(y_test, pred6))\n",
+ "mae6 = mean_absolute_error(y_test, pred6)\n",
+ "mape6 = mean_absolute_percentage_error(y_test, pred6)\n",
+ "accuracy6 = accuracy_score(y_test > pred6, y_test > pred6.round())\n",
+ "precision6 = precision_score(y_test > pred6, y_test > pred6.round())\n",
+ "confusion6 = confusion_matrix(y_test > pred6, y_test > pred6.round())\n",
+ "recall6 = recall_score(y_test > pred6, y_test > pred6.round())\n",
+ "f16 = f1_score(y_test > pred6, y_test > pred6.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 69,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "BsajWJGBjC80",
+ "outputId": "1af1194f-9a33-40af-8578-c99832509c1b"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 9.283285018137352\n",
+ "MAE: 7.574989783595977\n",
+ "MAPE: 0.16829256716397573\n",
+ "Accuracy: 0.9901060070671378\n",
+ "Precision: 0.9900990099009901\n",
+ "Confusion Matrix:\n",
+ " [[901 5]\n",
+ " [ 9 500]]\n",
+ "Recall: 0.9823182711198428\n",
+ "F1 Score: 0.9861932938856016\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse6)\n",
+ "print(\"MAE:\", mae6)\n",
+ "print(\"MAPE:\", mape6)\n",
+ "print(\"Accuracy:\", accuracy6)\n",
+ "print(\"Precision:\", precision6)\n",
+ "print(\"Confusion Matrix:\\n\", confusion6)\n",
+ "print(\"Recall:\", recall6)\n",
+ "print(\"F1 Score:\", f16)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Q9DzOt3CkWFX"
+ },
+ "source": [
+ "## 7. Decision Tree"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {
+ "id": "23DZ2biSjF9a"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.tree import DecisionTreeRegressor\n",
+ "# Create a Decision Tree model\n",
+ "model7 = DecisionTreeRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {
+ "id": "Ajo2RAVAVb7H"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "6mQEQf-ykc9F",
+ "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "DecisionTreeRegressor()"
+ ],
+ "text/html": [
+ "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 72
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model7.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {
+ "id": "BFJ9q_tvkgRC"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred7 = model7.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 74,
+ "metadata": {
+ "id": "9IxfYZbYkjv1"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse7 = np.sqrt(mean_squared_error(y_test, pred7))\n",
+ "mae7 = mean_absolute_error(y_test, pred7)\n",
+ "mape7 = mean_absolute_percentage_error(y_test, pred7)\n",
+ "accuracy7 = accuracy_score(y_test > pred7, y_test > pred7.round())\n",
+ "precision7 = precision_score(y_test > pred7, y_test > pred7.round())\n",
+ "confusion7 = confusion_matrix(y_test > pred7, y_test > pred7.round())\n",
+ "recall7 = recall_score(y_test > pred7, y_test > pred7.round())\n",
+ "f17 = f1_score(y_test > pred7, y_test > pred7.round())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "AnZXMYb8kooV",
+ "outputId": "273fa9ed-d6f2-4c4d-fb0e-a643f5ef5732"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 3.193539964582351\n",
+ "MAE: 1.6240937361593886\n",
+ "MAPE: 0.010136361140005275\n",
+ "Accuracy: 0.8579505300353357\n",
+ "Precision: 0.8700410396716827\n",
+ "Confusion Matrix:\n",
+ " [[578 95]\n",
+ " [106 636]]\n",
+ "Recall: 0.8571428571428571\n",
+ "F1 Score: 0.8635437881873728\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse7)\n",
+ "print(\"MAE:\", mae7)\n",
+ "print(\"MAPE:\", mape7)\n",
+ "print(\"Accuracy:\", accuracy7)\n",
+ "print(\"Precision:\", precision7)\n",
+ "print(\"Confusion Matrix:\\n\", confusion7)\n",
+ "print(\"Recall:\", recall7)\n",
+ "print(\"F1 Score:\", f17)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "LH-B-Xd6k5UD"
+ },
+ "source": [
+ "## 8. KNeighborsRegressor(KNN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {
+ "id": "JVDSed7yktFY"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.neighbors import KNeighborsRegressor\n",
+ "# Create a KNN model\n",
+ "model8 = KNeighborsRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {
+ "id": "XJHb5SxrVgVp"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "9fn64o-ZlBka",
+ "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "KNeighborsRegressor()"
+ ],
+ "text/html": [
+ "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 78
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model8.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 79,
+ "metadata": {
+ "id": "hbfbbjcSlDn7"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred8 = model8.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {
+ "id": "hnWyNv3blHdL"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse8 = np.sqrt(mean_squared_error(y_test, pred8))\n",
+ "mae8 = mean_absolute_error(y_test, pred8)\n",
+ "mape8 = mean_absolute_percentage_error(y_test, pred8)\n",
+ "accuracy8 = accuracy_score(y_test > pred8, y_test > pred8.round())\n",
+ "precision8 = precision_score(y_test > pred8, y_test > pred8.round())\n",
+ "confusion8 = confusion_matrix(y_test > pred8, y_test > pred8.round())\n",
+ "recall8 = recall_score(y_test > pred8, y_test > pred8.round())\n",
+ "f18 = f1_score(y_test > pred8, y_test > pred8.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "IPoDRkcMlMAr",
+ "outputId": "9892f42f-e65f-46c0-eeed-77ce32f6a7eb"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 148.73183825029315\n",
+ "MAE: 109.35229571264969\n",
+ "MAPE: 1.75024316976612\n",
+ "Accuracy: 0.9908127208480565\n",
+ "Precision: 0.9887820512820513\n",
+ "Confusion Matrix:\n",
+ " [[785 7]\n",
+ " [ 6 617]]\n",
+ "Recall: 0.9903691813804173\n",
+ "F1 Score: 0.9895749799518845\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse8)\n",
+ "print(\"MAE:\", mae8)\n",
+ "print(\"MAPE:\", mape8)\n",
+ "print(\"Accuracy:\", accuracy8)\n",
+ "print(\"Precision:\", precision8)\n",
+ "print(\"Confusion Matrix:\\n\", confusion8)\n",
+ "print(\"Recall:\", recall8)\n",
+ "print(\"F1 Score:\", f18)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "X5XtlzMXljps"
+ },
+ "source": [
+ "## 9. Artificial Neural Networks (ANN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 82,
+ "metadata": {
+ "id": "bJk1-9VhlRL6"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "from tensorflow.keras.models import Sequential\n",
+ "from tensorflow.keras.layers import Dense"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {
+ "id": "sZVPMR9Wlo7-"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {
+ "id": "vd1fDjQiltP4"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an ANN model\n",
+ "model9 = Sequential()\n",
+ "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
+ "model9.add(Dense(16, activation='relu'))\n",
+ "model9.add(Dense(1, activation='linear'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {
+ "id": "ZIf94WLMlv04"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model9.compile(loss='mean_squared_error', optimizer='adam')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "FX5DTKqslxWf",
+ "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "execution_count": 86
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "OVW2qpNsmGVq",
+ "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "45/45 [==============================] - 0s 1ms/step\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred9 = model9.predict(X_test_scaled).flatten()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 88,
+ "metadata": {
+ "id": "CqRmjMj2maJY"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse9 = np.sqrt(mean_squared_error(y_test, pred9))\n",
+ "mae9 = mean_absolute_error(y_test, pred9)\n",
+ "mape9 = mean_absolute_percentage_error(y_test, pred9)\n",
+ "accuracy9 = accuracy_score(y_test > pred9, y_test > pred9.round())\n",
+ "precision9 = precision_score(y_test > pred9, y_test > pred9.round())\n",
+ "confusion9 = confusion_matrix(y_test > pred9, y_test > pred9.round())\n",
+ "recall9 = recall_score(y_test > pred9, y_test > pred9.round())\n",
+ "f19 = f1_score(y_test > pred9, y_test > pred9.round())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 89,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "5zuwkC1emmh3",
+ "outputId": "5d6a0e05-3112-4d27-f5fb-ed665867b22d"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 2.7570259701356035\n",
+ "MAE: 1.7412277270507284\n",
+ "MAPE: 0.012205298865408084\n",
+ "Accuracy: 0.8904593639575972\n",
+ "Precision: 0.8242753623188406\n",
+ "Confusion Matrix:\n",
+ " [[805 97]\n",
+ " [ 58 455]]\n",
+ "Recall: 0.8869395711500975\n",
+ "F1 Score: 0.8544600938967135\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse9)\n",
+ "print(\"MAE:\", mae9)\n",
+ "print(\"MAPE:\", mape9)\n",
+ "print(\"Accuracy:\", accuracy9)\n",
+ "print(\"Precision:\", precision9)\n",
+ "print(\"Confusion Matrix:\\n\", confusion9)\n",
+ "print(\"Recall:\", recall9)\n",
+ "print(\"F1 Score:\", f19)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "vjSMQNcOnFPJ"
+ },
+ "source": [
+ "## 10. LSTM(Long Short term Memory)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {
+ "id": "nCoyUanhnDKw"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "from tensorflow.keras.models import Sequential\n",
+ "from tensorflow.keras.layers import LSTM, Dense"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 91,
+ "metadata": {
+ "id": "ThcXESVEVv0U"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 92,
+ "metadata": {
+ "id": "uACvajfImrbB"
+ },
+ "outputs": [],
+ "source": [
+ "# Reshape the input data for LSTM\n",
+ "n_features = X_train_scaled.shape[1]\n",
+ "n_steps = 10\n",
+ "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
+ "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
+ "\n",
+ "# Reshape the input data\n",
+ "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
+ "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 93,
+ "metadata": {
+ "id": "r066pVYpnXH5"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an LSTM model\n",
+ "model = Sequential()\n",
+ "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
+ "model.add(Dense(1))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {
+ "id": "YpSfHu6gov35"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model.compile(loss='mean_squared_error', optimizer='adam')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 95,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "0vHjcluaoxzP",
+ "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "execution_count": 95
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 96,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "gEE06_TjozYv",
+ "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "44/44 [==============================] - 0s 4ms/step\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Make predictions on the test set\n",
+ "y_pred = model.predict(X_test_reshaped).flatten()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 113,
+ "metadata": {
+ "id": "7k6C8DrxpB_Q"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse10 = np.sqrt(mean_squared_error(y_test[n_steps-1:], y_pred))\n",
+ "mae10 = mean_absolute_error(y_test[n_steps-1:], y_pred)\n",
+ "mape10 = mean_absolute_percentage_error(y_test[n_steps-1:], y_pred)\n",
+ "accuracy10 = accuracy_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
+ "precision10 = precision_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
+ "recall10 = recall_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
+ "f110 = f1_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
+ "confusion10 = confusion_matrix(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 114,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "i_6-UUDhpi0c",
+ "outputId": "3dcc5761-03b6-4b52-dfe6-08dece835c8d"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 10.083053125286519\n",
+ "MAE: 7.973378150691296\n",
+ "MAPE: 0.12730792351246625\n",
+ "Accuracy: 0.9886201991465149\n",
+ "Precision: 0.9904912836767037\n",
+ "Recall: 0.984251968503937\n",
+ "F1 Score: 0.9873617693522907\n",
+ "Confusion Matrix:\n",
+ " [[765 6]\n",
+ " [ 10 625]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print evaluation metrics\n",
+ "print(\"RMSE:\", rmse10)\n",
+ "print(\"MAE:\", mae10)\n",
+ "print(\"MAPE:\", mape10)\n",
+ "print(\"Accuracy:\", accuracy10)\n",
+ "print(\"Precision:\", precision10)\n",
+ "print(\"Recall:\", recall10)\n",
+ "print(\"F1 Score:\", f110)\n",
+ "print(\"Confusion Matrix:\\n\", confusion10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of accuracies from accuracy1 to accuracy10\n",
+ "accuracies = [accuracy1*100, accuracy2*100, accuracy3*100, accuracy4*100, accuracy5*100, accuracy6*100, accuracy7*100, accuracy8*100, accuracy9*100, accuracy10*100]\n",
+ "\n",
+ "# List of corresponding labels for each accuracy\n",
+ "labels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, accuracies, color='blue')\n",
+ "plt.xlabel('Accuracy Variables')\n",
+ "plt.ylabel('Accuracy Values')\n",
+ "plt.title('Bar Graph of Accuracies')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "qpWPtph9CGip",
+ "outputId": "c099cb8d-96af-4223-f499-743040aecdf1"
+ },
+ "execution_count": 117,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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PVo9evTQihUrtGbNGk2cOFExMTFat26dWrRoUawcQFFQdoBS9vvvv0v6vxmXpUuXysPDQ2vWrLG5p0lsbGyx9tOxY0f5+voqPj5eEyZMyPfhaC97c16bCfijgwcPqlKlSqpRo0axskhSSEiIJOnAgQP5ZhsOHDhgXW6vuLg4+fv76/3338+3bNmyZVq+fLlmz54tT09P1atXT/v27bvh9urVq6ctW7boypUrqlixYoHrXJvJ+vNdna/NXhXG3r17dfDgQc2fP1+DBw+2jl+bxbumbt26knTT3H927URqf3//Qt2rqF69enrmmWf0zDPP6NChQ2revLnefvttffrpp3btF3AEztkBStGVK1e0du1aubm5qVGjRpKuzmpYLBabv+KPHTumFStWFGtflSpV0rPPPqt9+/Zp/PjxBc6S2DNzYm/OzZs325zLc/LkSX3xxRe69957HXL/ltatW8vf31+zZ8+2OaT2zTffaP/+/fmuDiuMixcvatmyZXrggQf00EMP5XtER0crMzNTK1eulHT1qqPdu3dr+fLl+bZ17b3t27evzp49q/fee++664SEhMjV1TXfpfkffPBBobNfe0//+Ds1DEPvvvuuzXo1atTQnXfeqblz5+rEiRMF5ilI165d5ePjo9dff11XrlzJt/zMmTOSrt7y4NKlSzbL6tWrJ29vb5vfE1CamNkBStA333yjn376SdLVG9stXLhQhw4d0vjx463nOHTv3l3Tp0/Xfffdp7///e9KTU3V+++/r/r162vPnj3F2v/48eO1f/9+vfnmm1q7dq369u2rmjVr6vz589q5c6eWLFkif3//Qt0w0N6cTZo0UdeuXW0uPZekKVOmFOtnuqZixYqaOnWqhg0bprvuuksDBw60Xnpep04djRkzxu5trly5UpmZmXrwwQcLXN62bVvVqFFDcXFx6t+/v/75z3/q888/V79+/TR8+HC1atVK586d08qVKzV79mw1a9ZMgwcP1ieffKKxY8dq69at6tixo7Kzs/Xtt99q5MiR6tmzp3x9fdWvXz/NnDlTFotF9erV06pVq6w3QyyMsLAw1atXT+PGjdOpU6fk4+OjpUuXFniS8IwZM9ShQwe1bNlSI0aMUGhoqI4dO6avvvpKSUlJBW7fx8dHs2bN0qOPPqqWLVtqwIABqlGjhk6cOKGvvvpKd9xxh9577z0d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l51NmzapW7du+cbvv/9+bdq0ySGh/iwqKkrdu3dXRESEzfiOHTt05coVm/GwsDDVrl1bmzdvvu72cnJylJGRYfMAAADmZPdhrKysrALPzalYsWKJlIb4+Hjt3LlT27Zty7csOTlZbm5u8vPzsxkPCAhQcnLydbcZExOjKVOmODoqAAAog+ye2WnatKkWL16cbzw+Pl633XabQ0Jdc/LkSY0aNUpxcXHy8PBw2HYnTJig9PR06+PkyZMO2zYAAChb7J7ZmThxovr06aMjR47onnvukSQlJiZq0aJFBX5nVnHs2LFDqampatmypXUsNzdXmzZt0nvvvac1a9bo8uXLSktLs5ndSUlJUWBg4HW36+7uLnd3d4dmBQAAZZPdZadHjx5asWKFXn/9dX3++efy9PTU7bffrm+//VZ33XWXQ8N17txZe/futRkbNmyYwsLC9Nxzz6lWrVqqWLGiEhMT1bdvX0nSgQMHdOLECbVr186hWQAAQPlUpEvPu3fvru7du+cb37dvn5o0aVLsUNd4e3vn256Xl5eqVatmHY+MjNTYsWNVtWpV+fj46KmnnlK7du3Utm1bh+UAAADlV5Hvs3NNZmamFi1apI8//lg7duxQbm6uI3IV2r/+9S+5uLiob9++ysnJUdeuXfXBBx+UagYAAFB2WQzDMIrywk2bNunjjz/WsmXLFBwcrD59+qhv375q06aNozOWuIyMDPn6+io9PV0+Pj4O3bbF4tDNOURhfuPkdhxyly5yly5yly4z5y6Kwn5+2zWzk5ycrHnz5mnOnDnKyMjQww8/rJycHK1YscLhV2IBAAA4QqEvPe/Ro4caNmyoPXv26J133tGvv/6qmTNnlmQ2AACAYiv0zM4333yjp59+Wk8++WSpficWAABAcRR6Zue7775TZmamWrVqpfDwcL333ns6e/ZsSWYDAAAotkKXnbZt2+qjjz7S6dOn9cQTTyg+Pl7BwcHKy8tTQkKCMjMzSzInAABAkRT5aizp6g385syZowULFigtLU1dunTRypUrHZmvVHA1Vn7kdhxyly5yly5yly4z5y6Kwn5+2/3dWH/UsGFDTZs2Tb/88osWLVpUnE0BAACUiGLN7JgFMzv5kdtxyF26yF26yF26zJy7KEplZgcAAKCso+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTK9NlJyYmRm3atJG3t7f8/f3Vq1cvHThwwGadS5cuKSoqStWqVVPlypXVt29fpaSkOCkxAAAoa8p02dm4caOioqL0v//9TwkJCbpy5YruvfdeZWdnW9cZM2aMvvzySy1ZskQbN27Ur7/+qj59+jgxNQAAKEsshmEYzg5RWGfOnJG/v782btyoO++8U+np6apRo4YWLlyohx56SJL0008/qVGjRtq8ebPatm1bqO1mZGTI19dX6enp8vHxcWhmi8Whm3OIwvzGye045C5d5C5d5C5dZs5dFIX9/C7TMzt/lp6eLkmqWrWqJGnHjh26cuWKIiIirOuEhYWpdu3a2rx583W3k5OTo4yMDJsHAAAwp3JTdvLy8jR69GjdcccdatKkiSQpOTlZbm5u8vPzs1k3ICBAycnJ191WTEyMfH19rY9atWqVZHQAAOBE5absREVFad++fYqPjy/2tiZMmKD09HTr4+TJkw5ICAAAyqIKzg5QGNHR0Vq1apU2bdqkmjVrWscDAwN1+fJlpaWl2czupKSkKDAw8Lrbc3d3l7u7e0lGBgAAZUSZntkxDEPR0dFavny51q1bp9DQUJvlrVq1UsWKFZWYmGgdO3DggE6cOKF27dqVdlwAAFAGlemZnaioKC1cuFBffPGFvL29refh+Pr6ytPTU76+voqMjNTYsWNVtWpV+fj46KmnnlK7du0KfSUWAAAwtzJddmbNmiVJuvvuu23GY2NjNXToUEnSv/71L7m4uKhv377KyclR165d9cEHH5RyUgAAUFaVq/vslBTus5MfuR2H3KWL3KWL3KXLzLmLwpT32QEAALAXZQcAAJgaZQcAAJgaZQcA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V65cybeel5dXvrEePXro3Llz+uijj7RlyxZt2bJF0v+dwHyzfbu5uWnw4MGKjY3V5cuXtXDhQg0fPvymeYcOHar58+crLy9PsbGx6tSpk+rWrStJGjdunJYvX67XX39d//nPf5SUlKSmTZvmO4+moJ/nj+Lj4zVu3DhFRkZq7dq1SkpK0rBhw4p1cnZWVpZcXV21Y8cOJSUlWR/79++3ng/02GOP6eeff9ajjz6qvXv3qnXr1po5c2aR9wmYAWUHMLHff/9dn3zyid5++22bD8fdu3crODhYixYtkiTdfvvtSkxMLHAbTZs2VV5enjZu3Fjg8ho1aigzM1PZ2dnWscLca+a3337TgQMH9OKLL6pz585q1KiRzp8/b7PO7bffrqSkJJ07d+6623nsscf07bff6oMPPtDvv/+uPn363HTfw4YN08mTJ7Vs2TItX75ckZGR1mXff/+9hg4dqt69e6tp06YKDAzUsWPHbrrNP/v+++/Vvn17jRw5Ui1atFD9+vXznXwtSbt377a5Oux///ufKleurFq1auVbt0WLFsrNzVVqaqrq169v8wgMDLSuV6tWLf3jH//QsmXL9Mwzz+ijjz6yOz9gJpQdwMRWrVql8+fPKzIyUk2aNLF59O3b13ooa/LkyVq0aJEmT56s/fv3W09sla5eeTRkyBANHz5cK1assF65dO1E2/DwcFWqVEnPP/+8jhw5ooULFxZ4tdefValSRdWqVdOHH36ow4cPa926dRo7dqzNOgMHDlRgYKB69eql77//Xj///LOWLl2qzZs3W9dp1KiR2rZtq+eee04DBw686WyQJIWGhuqee+7RiBEj5O7ublOQGjRoYD2Jevfu3fr73/9e4JVdN9OgQQNt375da9as0cGDBzVx4kRt27Yt33qXL19WZGSkfvzxR3399deaPHmyoqOjCzzB+tZbb9WgQYM0ePBgLVu2TEePHtXWrVsVExOjr776SpI0evRorVmzRkePHtXOnTu1fv16NWrUyO78gJlQdgATmzNnjiIiIuTr65tvWd++fbV9+3bt2bNHd999t5YsWaKVK1eqefPmuueee7R161brurNmzdJDDz2kkSNHKiwsTI8//rh1Jqdq1ar69NNP9fXXX6tp06ZatGiRXnrppZtmc3FxUXx8vHbs2KEmTZpozJgxevPNN23WcXNz09q1a+Xv769u3bqpadOmeuONN+Tq6mqzXmRkpC5fvnzTQ1h/fs358+f197//3XopvCRNnz5dVapUUfv27dWjRw917dpVLVu2LPR2r3niiSfUp08f9e/fX+Hh4frtt980cuTIfOt17txZDRo00J133qn+/fvrwQcfvOH7Fxsbq8GDB+uZZ55Rw4YN1atXL23btk21a9eWdPWS96ioKDVq1Ej33Xefbr31Vn3wwQd25wfMxGL8+WA7AJQzr7zyipYsWcLJuAAKxMwOgHIrKytL+/bt03vvvaennnrK2XEAlFGUHQDlVnR0tFq1aqW7777brkNYAP5aOIwFAABMjZkdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgav8PriEMHNJ5QJIAAAAASUVORK5CYII=\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of RMSE values from rmse1 to rmse10\n",
+ "rmse_values = [rmse1, rmse2, rmse3, rmse4, rmse5, rmse6, rmse7, rmse8, rmse9, rmse10]\n",
+ "\n",
+ "# List of corresponding labels for each RMSE value\n",
+ "labels = ['RMSE1', 'RMSE2', 'RMSE3', 'RMSE4', 'RMSE5', 'RMSE6', 'RMSE7', 'RMSE8', 'RMSE9', 'RMSE10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, rmse_values, color='green')\n",
+ "plt.xlabel('RMSE Variables')\n",
+ "plt.ylabel('RMSE Values')\n",
+ "plt.title('Bar Graph of RMSE')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "RFaaCNH6Cfoa",
+ "outputId": "67a8f358-e3ce-4ad2-9c78-ebc75902beb4"
+ },
+ "execution_count": 118,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABB/klEQVR4nO3de1xUdeL/8fcAMpAKiMbNQEnNe0qSrmV5o7xlWl5WJReRdCut1O1meSnblbSLlpm6rYm6mq6mZn2V8msataIppptmZnkjE7QUEA3k8vn90c/5OoEGOshw9vV8PM5jdz7nM+e8B8l5e+acOTZjjBEAAIBFeVR2AAAAgIpE2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QFgOc8//7xsNpt++umnCt9XcnKyWrduLR8fH9lsNmVlZVX4PgGUD2UHqEKSkpJks9mclqCgIHXu3Fnr16+/5nk++OAD9e7dW8HBwfL29lZgYKDuvPNOvfrqq8rJybnmea61n3/+WQMHDpSvr69mz56txYsXq3r16qXO/e2fnZeXl+rWrathw4bp2LFjJeZ36tRJNptNjRo1KnV7GzZscGxr5cqVTuu++uor9e/fX/Xq1ZOPj4/q1q2ru+66S7NmzXKaV79+/RK/TxeW7t27X+FPBXA/XpUdAED5TZkyRZGRkTLGKDMzU0lJSerZs6c++OAD3XPPPRW+/+LiYiUkJCgpKUktW7bUI488ovDwcJ05c0apqamaMGGC1q1bp40bN1Z4lsq0fft2nTlzRi+++KJiYmLK9JwLf3Z5eXnaunWrkpKS9Pnnn2vPnj3y8fFxmuvj46PvvvtOX3zxhdq2beu0bsmSJfLx8VFeXp7T+JYtW9S5c2dFRERoxIgRCgkJUXp6urZu3arXX39djz76qNP81q1b6y9/+UuJnGFhYWV6PUBVQNkBqqAePXooOjra8TghIUHBwcF69913XVJ2iouLdf78+RJvvhdMnz5dSUlJGjt2rF599VXZbDbHuscff1zHjx/XokWLrmofVcGJEyckSQEBAWV+zsV/dg8++KDq1KmjadOmae3atRo4cKDT3AYNGqiwsFDvvvuuU9nJy8vT6tWr1atXL7333ntOz/nb3/4mf39/bd++vUSuC3kvVrduXT3wwANlzg9URXyMBVhAQECAfH195eXl/O+XV155Rbfddptq164tX19ftWnTpsRHHpJks9k0evRoLVmyRM2bN5fdbldycnKp+zp37pymTZum5s2b6+WXX3YqOheEhobq6aefLvM+riRn48aN5ePjozZt2iglJaXUrFlZWRo2bJgCAgLk7++v+Ph4nTt3rvQf4m+sWLFCbdq0ka+vr+rUqaMHHnjA6eOmTp06KS4uTpJ06623ymazadiwYWXa9sXuuOMOSdL3339f6vrBgwdr+fLlKi4udox98MEHOnfuXIlydGE7zZs3L7WABQUFlTsfYAWUHaAKys7O1k8//aSTJ09q7969evjhh5Wbm1viX+ivv/66oqKiNGXKFE2dOlVeXl4aMGCA/ud//qfENj/55BONHTtWf/zjH/X666+rfv36pe77888/V1ZWlgYPHixPT89y5b7UPsqT89NPP9WYMWP0wAMPaMqUKfr555/VvXt37dmzp8TcgQMH6syZM0pMTNTAgQOVlJSkF1544XdzJiUlaeDAgfL09FRiYqJGjBihVatWqUOHDo4TkJ977jmNHDlS0q8fTS1evFh//vOfy/XzkKTDhw9LkmrVqlXq+iFDhuj48ePavHmzY2zp0qXq2rVrqeWlXr16SktLK/XnUZqCggL99NNPJZZffvml3K8FcFsGQJWxYMECI6nEYrfbTVJSUon5586dc3p8/vx506JFC9OlSxencUnGw8PD7N2793czvP7660aSWbNmjdN4YWGhOXnypNNSXFxcpn2UJ6cks2PHDsfYkSNHjI+Pj7nvvvscY5MnTzaSzPDhw52ef99995natWtf9vWdP3/eBAUFmRYtWphffvnFMf7hhx8aSWbSpEmOsQt/Htu3b7/sNi+e+7//+7/m5MmTJj093axcudJcf/31xm63m/T0dKf5HTt2NM2bNzfGGBMdHW0SEhKMMcacPn3aeHt7m4ULF5pNmzYZSWbFihWO53388cfG09PTeHp6mvbt25unnnrKfPTRR+b8+fMlMtWrV6/U3ydJJjEx8XdfE1BVcGQHqIJmz56tDRs2aMOGDfrnP/+pzp0768EHH9SqVauc5vn6+jr+/+nTp5Wdna077rhDO3fuLLHNjh07qlmzZr+77wtXWdWoUcNp/KuvvtL111/vtPz8889l2kd5crZv315t2rRxPI6IiFCfPn300UcfqaioyGnuQw895PT4jjvu0M8//3zZK8V27NihEydO6JFHHnE6n6hXr15q0qRJqUebyiMmJkbXX3+9wsPD1b9/f1WvXl1r167VDTfccMnnDBkyRKtWrdL58+e1cuVKeXp66r777it17l133aXU1FTde++92r17t6ZPn65u3bqpbt26Wrt2bYn57dq1c/wuXbwMHjz4ql4n4E44QRmogtq2bet0gvLgwYMVFRWl0aNH65577pG3t7ck6cMPP9Rf//pX7dq1S/n5+Y75pZ1nExkZWaZ916xZU5KUm5vrNN6wYUNt2LBBkrRo0SItXry4zPsoT87SLsW+6aabdO7cOZ08eVIhISGO8YiICKd5Fz4qOn36tPz8/ErNcuTIEUlS48aNS6xr0qSJPv/881KfV1azZ8/WTTfdpOzsbL3zzjtKSUmR3W6/7HMGDRqkJ554QuvXr9eSJUt0zz33OP4cSnPrrbc6ytHu3bu1evVqzZgxQ/3799euXbucCmedOnXKfCUZUFVxZAewAA8PD3Xu3FnHjx/XgQMHJEmfffaZ7r33Xvn4+Oitt97SunXrtGHDBg0ZMkTGmBLbuPjoyuU0adJEkkqcE1KjRg3FxMQoJiZGN954Y6nPLW0f5c1ZHpc6p+hqt3s12rZtq5iYGPXr109r165VixYtNGTIkBLl8WKhoaHq1KmTXn31VaWkpGjIkCFl2pe3t7duvfVWTZ06VXPmzFFBQYFWrFjhqpcCVBmUHcAiCgsLJf3fEZf33ntPPj4++uijjzR8+HD16NHDJf+Cv+OOO+Tv769ly5Y5XSF0pcqb80KZu9i3336r6667Ttdff/1V56lXr54kaf/+/SXW7d+/37HeFS6cAP3jjz/qzTffvOzcIUOG6LPPPpOfn5969uxZ7n1dOBJ4/PjxK8oKVGWUHcACCgoK9PHHH8vb21tNmzaV9Osbqc1mczqP5fDhw1qzZs1V7eu6667TU089pT179uiZZ54p9ShJeY6clDdnamqq07k86enpev/993X33XeX++qw0kRHRysoKEhz5851+kht/fr12rdvn3r16nXV+7hYp06d1LZtW82cObPEFwRerH///po8ebLeeustx8eUpdm0aVOpP/9169ZJKv3jOcDqOGcHqILWr1+vb775RtKvXxS3dOlSHThwQM8884zjXJRevXrptddeU/fu3TVkyBCdOHFCs2fP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hSoqKpLdbneMZWZmau7cuTp79qzuvfdedejQoUJCAgAAXKkyl50RI0bI29tb8+bNkySdOXNGt956q/Ly8hQaGqoZM2bo/fffV8+ePSssLAAAQHmV+dLzf//73+rXr5/j8aJFi1RUVKQDBw5o9+7dGjdunF5++eUKCQkAAHClylx2jh07pkaNGjkeb9y4Uf369ZO/v78kKS4uTnv37nV9QgAAgKtQ5rLj4+OjX375xfF469atateundP63Nxc16YDAAC4SmUuO61bt9bixYslSZ999pkyMzPVpUsXx/rvv/9eYWFhrk8IAABwFcp8gvKkSZPUo0cP/etf/9Lx48c1bNgwhYaGOtavXr1at99+e4WEBAAAuFLl+p6dtLQ0ffzxxwoJCdGAAQOc1rdu3Vpt27Z1eUAAAICrUeayI0lNmzZV06ZNS103cuRIlwQCAABwpTKXnZSUlDLNu/POO684DAAAgKuVuex06tTJcaNPY0ypc2w2m4qKilyTDAAAwAXKXHZq1aqlmjVratiwYRo6dKjq1KlTkbkAAABcosyXnh8/flzTpk1TamqqWrZsqYSEBG3ZskV+fn7y9/d3LAAAAO6kzGXH29tbf/zjH/XRRx/pm2++0c0336zRo0crPDxczz33nAoLCysyJwAAwBUpc9m5WEREhCZNmqT//d//1U033aSXXnpJOTk5rs4GAABw1cpddvLz87V06VLFxMSoRYsWqlOnjv7nf/5HgYGBFZEPAADgqpT5BOUvvvhCCxYs0LJly1S/fn3Fx8frX//6FyUHAAC4tTKXnT/84Q+KiIjQY489pjZt2kiSPv/88xLz7r33XtelAwAAuErl+gblo0eP6sUXX7zker5nBwAAuJsyl53i4uKKzAEAAFAhruhqrEv55ZdfXLk5AACAq+aSspOfn69XX31VkZGRrtgcAACAy5S57OTn52v8+PGKjo7WbbfdpjVr1kiSFixYoMjISM2cOVNjx451ecBjx47pgQceUO3ateXr66uWLVtqx44djvXGGE2aNEmhoaHy9fVVTEyMDhw44PIcAACgaipz2Zk0aZLmzJmj+vXr6/DhwxowYIBGjhypGTNm6LXXXtPhw4f19NNPuzTc6dOndfvtt6tatWpav369vv76a7366quqVauWY8706dP1xhtvaO7cudq2bZuqV6+ubt26KS8vz6VZAABA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+a3s7GxJUmBgoCQpLS1NBQUFiomJccxp0qSJIiIilJqaesnt5OfnKycnx2kBAADWVGXKTnFxscaMGaPbb79dLVq0kCRlZGTI29tbAQEBTnODg4OVkZFxyW0lJibK39/fsYSHh1dkdAAAUImqTNkZNWqU9uzZo2XLll31tsaPH6/s7GzHkp6e7oKEAADAHbn1OTsXjB49Wh9++KFSUlJ0ww03OMZDQkJ0/vx5ZWVlOR3dyczMVEhIyCW3Z7fbZbfbKzIyAABwE259ZMcYo9GjR2v16tX65JNPFBkZ6bS+TZs2qlatmjZu3OgY279/v44ePar27dtf67gAAMANufWRnVGjRmnp0qV6//33VbNmTcd5OP7+/vL19ZW/v78SEhI0btw4BQYGys/PT48++qjat2/PlVgAAECSm5edOXPmSJI6derkNL5gwQINGzZMkjRjxgx5eHioX79+ys/PV7du3fTWW29d46QAAMBduXXZMcb87hwfHx/Nnj1bs2fPvgaJAABAVePW5+wAAABcLcoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNK/KDgAAAFzH9oKtsiOUYCabSt0/R3YAAIClcWQHwH8d/uUL/HfhyA4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA07noOAFUEd2sHrgxlB3ADVfVNrKrmBsqC32/r4GMsAABgaZY5sjN79my9/PLLysjIUKtWrTRr1iy1bdu2smPhGuNfYgCA37JE2Vm+fLnGjRunuXPnql27dpo5c6a6deum/fv3KygoqFKz8eYLAEDlssTHWK+99ppGjBih+Ph4NWvWTHPnztV1112nd955p7KjAQCASlbly8758+eVlpammJgYx5iHh4diYmKUmppaickAAIA7qPIfY/30008qKipScHCw03hwcLC++eabUp+Tn5+v/Px8x+Ps7GxJUk5OjusD5rl+k1erTK+T3C5D7muL3NcWua8tS+e+iu0a8zunZ5gq7tixY0aS2bJli9P4k08+adq2bVvqcyZPnmwksbCwsLCw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qxwnJp89e1bdunWTn5+flixZou3bt2v16tWS5LgK7OLXfDlxcXHatWuXXn/9dW3ZskW7du1S7dq1S2ynPHJzc9W7d2+ncrdr1y4dOHBAd955pzw9PbVhwwatX79ezZo106xZs9S4cWMdOnToivcJ/Dei7AC4LA8PDz377LOaMGGC04nIFxs+fLg2b96sP/3pT/L09CzTdmvVqqXQ0NCrPtnWw8ND8fHxWrhwoZYuXSpvb2/1799fkvTNN9/o559/1ksvvaQ77rhDTZo0cTo5uTz+/e9/67HHHlPPnj3VvHlz2e12pxOJL/jtpfBbt25V06ZNS93mLbfcor1796p+/fpOBa9hw4aO8mWz2XT77bfrhRde0Jdffilvb29HYQNQNpQdAL9rwIAB8vT01OzZs0td3717d508eVJTpkwpdf28efP08MMP6+OPP9b333+vvXv36umnn9bevXvVu3dvp7knTpxQRkaG01JQUHDZfPHx8Tp27JieffZZDR482HGFV0REhLy9vTVr1iwdPHhQa9eu1YsvvngFPwGpUaNGWrx4sfbt26dt27YpNja2xJVkkrRixQq98847+vbbbzV58mR98cUXGj16dKnbHDVqlE6dOqXBgwdr+/bt+v777/XRRx8pPj5eRUVF2rZtm6ZOnaodO3bo6NGjWrVqlU6ePHnJ8gSgdJQdAL/Ly8tLo0eP1vTp00s9EmOz2VSnTp1Sr9iSpLZt2yo3N1cPPfSQmjdvro4dO2rr1q1as2aN4xyaCxo3bqzQ0FCnJS0t7bL5IiIiFBMTo9OnTzudM3T99dcrKSlJK1asULNmzfTSSy/plVdeuYKfgDR//nydPn1at9xyi4YOHarHHnus1O//eeGFF7Rs2TLdfPPNWrRokd599101a9as1G2GhYXp3//+t4qKinT33XerZcuWGjNmjAICAuTh4SE/Pz+lpKSoZ8+euummmzRhwgS9+uqrl/2oEEBJNmO4hhEAAFgXR3YAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAICl/T/eW9kFikhhAwAAAABJRU5ErkJggg==\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of MAE values from mae1 to mae10\n",
+ "mae_values = [mae1, mae2, mae3, mae4, mae5, mae6, mae7, mae8, mae9, mae10]\n",
+ "\n",
+ "# List of corresponding labels for each MAE value\n",
+ "labels = ['MAE1', 'MAE2', 'MAE3', 'MAE4', 'MAE5', 'MAE6', 'MAE7', 'MAE8', 'MAE9', 'MAE10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, mae_values, color='orange')\n",
+ "plt.xlabel('MAE Variables')\n",
+ "plt.ylabel('MAE Values')\n",
+ "plt.title('Bar Graph of MAE')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "nrZu-K-KDCJ2",
+ "outputId": "69165581-da05-4554-a464-a606eb87a734"
+ },
+ "execution_count": 119,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6NklEQVR4nO3deVRV9eL+8ecACogCOTCYqJSzlJqmoXlNozCH1JyHGwqpleZ0q6v3qmVZppU567VQ1ASHUktzyOg6hpqmpTknzoJDCqKJCvv3h1/Pr3MBZTjAYfd+rbXX6uzxOcTiPH72cCyGYRgCAAAwKafCDgAAAJCfKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsA/hLefvttWSwWXbx4Md+PtXbtWtWtW1dubm6yWCy6cuVKvh8TQNYoO0ARFxUVJYvFYjP5+PioefPmWrNmTYHnWblypdq2bStfX18VL15cpUuX1t/+9jd9/PHHSk5OLvA8Be3SpUvq0qWL3N3dNX36dC1YsEAeHh6Zrvvn/3dbtmzJsNwwDAUEBMhisahNmzaZ7uPKlSvWUnXgwIFM1+ndu3eG35G7k5ubW+7fLFBEuBR2AAD28c477ygwMFCGYSgxMVFRUVFq1aqVVq5cmeUHpT2lp6crIiJCUVFReuSRR/Tqq68qICBAV69eVVxcnEaOHKnVq1crNjY237MUph9//FFXr17Vu+++q5CQkGxt4+bmpujoaD355JM28zdu3KjTp0/L1dU1y22XLl0qi8UiPz8/LVy4UGPHjs10PVdXV3322WcZ5js7O2crI1CUUXYAk3juuefUoEED6+uIiAj5+voqJibGLmUnPT1dN2/ezHIkYMKECYqKitLQoUP18ccfy2KxWJcNHjxY586d0/z58/N0jKLg/PnzkiRvb+9sb9OqVSstXbpUU6ZMkYvL//+zHB0drfr169/z1Nvnn3+uVq1aqVKlSoqOjs6y7Li4uKhXr17ZzgSYCaexAJPy9vaWu7u7zYenJH300Udq3LixypQpI3d3d9WvX19ffPFFhu0tFosGDhyohQsXqnbt2nJ1ddXatWszPdb169c1fvx41a5dWx9++KFN0bnL399f//znP7N9jNzkrF69utzc3FS/fn1t2rQp06xXrlxR79695e3tLS8vL/Xp00fXr1/P/If4P5YuXar69evL3d1dZcuWVa9evXTmzBnr8qeeekphYWGSpMcff1wWi0W9e/e+7367d++uS5cuaf369dZ5N2/e1BdffKEePXpkud3Jkye1efNmdevWTd26dVN8fLx++OGHbL0X4K+EkR3AJJKSknTx4kUZhqHz589r6tSpSklJyfCv+cmTJ+v5559Xz549dfPmTS1atEidO3fWqlWr1Lp1a5t1v//+ey1ZskQDBw5U2bJlVbly5UyPvWXLFl25ckWvv/56jk+LZHWMnOTcuHGjFi9erEGDBsnV1VUzZsxQy5YttWPHDgUFBdms26VLFwUGBmrcuHH66aef9Nlnn8nHx0fjx4+/Z86oqCj16dNHjz/+uMaNG6fExERNnjxZW7du1e7du+Xt7a1///vfql69umbPnm09rfjwww/f92dQuXJlBQcHKyYmRs8995wkac2aNUpKSlK3bt00ZcqUTLeLiYmRh4eH2rRpI3d3dz388MNauHChGjdunOn6mY0QFS9eXJ6envfNCBRpBoAibe7cuYakDJOrq6sRFRWVYf3r16/bvL5586YRFBRktGjRwma+JMPJycn49ddf75th8uTJhiRjxYoVNvNv375tXLhwwWZKT0/P1jFyklOSsXPnTuu8EydOGG5ubkaHDh2s89566y1DkhEeHm6zfYcOHYwyZcrc8/3dvHnT8PHxMYKCgow//vjDOn/VqlWGJGP06NHWeXf/f/z444/33Of/rjtt2jSjVKlS1vfduXNno3nz5oZhGEalSpWM1q1bZ9j+kUceMXr27Gl9/a9//csoW7ascevWLZv1wsLCMv0dkWSEhobeNydQ1HEaCzCJ6dOna/369Vq/fr0+//xzNW/eXC+99JKWLVtms567u7v1vy9fvqykpCQ1bdpUP/30U4Z9NmvWTLVq1brvse/eZVWyZEmb+Xv37lW5cuVspkuXLmXrGDnJGRwcrPr161tfV6xYUe3atdO6deuUlpZms+7LL79s87pp06a6dOnSPe8U27lzp86fP69XX33V5nqi1q1bq0aNGvrmm2+y3Da7unTpoj/++EOrVq3S1atXtWrVqnuewvrll1+0d+9ede/e3Tqve/fuunjxotatW5dhfTc3N+vvx5+nDz74IM/ZAUfHaSzAJBo2bGhzgXL37t1Vr149DRw4UG3atFHx4sUlSatWrdLYsWO1Z88epaamWtfP7DqbwMDAbB27VKlSkqSUlBSb+VWqVLFehzJ//nwtWLAg28fISc6qVatmmFetWjVdv35dFy5ckJ+fn3V+xYoVbdZ74IEHJN0pVFmdzjlx4oQkqXr16hmW1ahRI9PbxnOqXLlyCgkJUXR0tK5fv660tDR16tQpy/U///xzeXh46KGHHtLRo0cl3Sk0lStX1sKFCzOc6nN2ds723WGA2TCyA5iUk5OTmjdvrnPnzunIkSOSpM2bN+v555+Xm5ubZsyYodWrV2v9+vXq0aOHDMPIsI8/j67cS40aNSRJ+/bts5lfsmRJhYSEKCQkRA899FCm22Z2jJzmzImsrinK637toUePHlqzZo1mzZql5557Lss7ugzDUExMjK5du6ZatWqpatWq1un48eP66quvMhRP4K+MkR3AxG7fvi3p/4+4fPnll3Jzc9O6detsnt0yd+7cPB2nadOm8vLy0qJFizRixAg5OeXt31E5zXm3zP3Z4cOHVaJECZUrVy5PWSSpUqVKkqRDhw6pRYsWNssOHTpkXZ5XHTp0UP/+/bVt2zYtXrw4y/XuPn/nnXfeUc2aNW2WXb58Wf369dOKFSu41Rz4P4zsACZ169YtffvttypevLj1A9HZ2VkWi8XmOpbjx49rxYoVeTpWiRIl9Oabb2rfvn0aPnx4pqMkORk5yWnOuLg4m2t5Tp06pa+++krPPvusXR6a16BBA/n4+GjWrFk2p9TWrFmjAwcOZDhllFslS5bUzJkz9fbbb6tt27ZZrnf3FNYbb7yhTp062Ux9+/ZV1apVtXDhQrtkAsyAkR3AJNasWaODBw9KuvNgu+joaB05ckTDhw+3XovSunVrTZw4US1btlSPHj10/vx5TZ8+XVWqVNEvv/ySp+MPHz5cBw4c0Icffqhvv/1WHTt2VIUKFXT58mX99NNPWrp0qXx8fLL1wMCc5gwKClJoaKjNreeSNGbMmDy9p7uKFSum8ePHq0+fPmrWrJm6d+9uvfW8cuXKGjp0qF2OI8n6nJ6spKam6ssvv9QzzzyT5c/y+eef1+TJk3X+/Hn5+PhIujPK9/nnn2e6focOHbL8SgvADCg7gEmMHj3a+t9ubm6qUaOGZs6cqf79+1vnt2jRQpGRkfrggw80ZMgQBQYGavz48Tp+/Hiey46Tk5MWLFigjh076tNPP9XUqVN1+fJllSxZUkFBQXrvvffUt2/fDHdsZSanOZs1a6bg4GCNGTNGJ0+eVK1atRQVFaVHH300T+/pz3r37q0SJUrogw8+0D//+U95eHioQ4cOGj9+fI6elpxX33zzja5cuXLPkZ+2bdvq448/1qJFizRo0CBJd0rS3//+90zXj4+Pp+zA1CyGI1yVBwC5ZLFYNGDAAE2bNq2wowBwUFyzAwAATI2yAwAATI2yAwAATI0LlAEUaVx2COB+GNkBAACmRtkBAACmxmksSenp6Tp79qxKlSqV6ZcMAgAAx2MYhq5evary5cvf82tqKDuSzp49q4CAgMKOAQAAcuHUqVOqUKFClsspO5JKlSol6c4P6+5j9QEAgGNLTk5WQECA9XM8K5QdyXrqytPTk7IDAEARc79LULhAGQAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmJpLYQeAg4q2FHaCjHoYhZ0AAFAEMbIDAABMjbIDAABMjbIDAABMjbIDAABMjQuUAQD5ixseUMgY2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZG2QEAAKZWqGVn06ZNatu2rcqXLy+LxaIVK1bYLDcMQ6NHj5a/v7/c3d0VEhKiI0eO2Kzz+++/q2fPnvL09JS3t7ciIiKUkpJSgO8CAAA4skItO9euXVOdOnU0ffr0TJdPmDBBU6ZM0axZs7R9+3Z5eHgoNDRUN27csK7Ts2dP/frrr1q/fr1WrVqlTZs2qV+/fgX1FgAAgIOzGIZhFHYISbJYLFq+fLnat28v6c6oTvny5fWPf/xDr7/+uiQpKSlJvr6+ioqKUrdu3XTgwAHVqlVLP/74oxo0aCBJWrt2rVq1aqXTp0+rfPny2Tp2cnKyvLy8lJSUJE9Pz3x5f0VOtKWwE2TUwyF+VQHkFH9PkE+y+/ntsNfsxMfHKyEhQSEhIdZ5Xl5eatSokeLi4iRJcXFx8vb2thYdSQoJCZGTk5O2b99e4JkBAIDjcSnsAFlJSEiQJPn6+trM9/X1tS5LSEiQj4+PzXIXFxeVLl3auk5mUlNTlZqaan2dnJxsr9gAAMDBOOzITn4aN26cvLy8rFNAQEBhRwIAAPnEYcuOn5+fJCkxMdFmfmJionWZn5+fzp8/b7P89u3b+v33363rZGbEiBFKSkqyTqdOnbJzegAA4CgctuwEBgbKz89PsbGx1nnJycnavn27goODJUnBwcG6cuWKdu3aZV3n+++/V3p6uho1apTlvl1dXeXp6WkzAQAAcyrUa3ZSUlJ09OhR6+v4+Hjt2bNHpUuXVsWKFTVkyBCNHTtWVatWVWBgoEaNGqXy5ctb79iqWbOmWrZsqb59+2rWrFm6deuWBg4cqG7dumX7TiwAAGBuhVp2du7cqebNm1tfDxs2TJIUFhamqKgovfnmm7p27Zr69eunK1eu6Mknn9TatWvl5uZm3WbhwoUaOHCgnn76aTk5Oaljx46aMmVKgb8XAADgmBzmOTuFiefsZILnYgCwF/6eIJ8U+efsAAAA2ANlBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmBplBwAAmJpDl520tDSNGjVKgYGBcnd318MPP6x3331XhmFY1zEMQ6NHj5a/v7/c3d0VEhKiI0eOFGJqAADgSBy67IwfP14zZ87UtGnTdODAAY0fP14TJkzQ1KlTretMmDBBU6ZM0axZs7R9+3Z5eHgoNDRUN27cKMTkAADAUbgUdoB7+eGHH9SuXTu1bt1aklS5cmXFxMRox44dku6M6kyaNEkjR45Uu3btJEnz58+Xr6+vVqxYoW7duhVadgAA4BgcemSncePGio2N1eHDhyVJP//8s7Zs2aLnnntOkhQfH6+EhASFhIRYt/Hy8lKjRo0UFxeX5X5TU1OVnJxsMwEAAHNy6JGd4cOHKzk5WTVq1JCzs7PS0tL03nvvqWfPnpKkhIQESZKvr6/Ndr6+vtZlmRk3bpzGjBmTf8EBAIDDcOiRnSVLlmjhwoWKjo7WTz/9pHnz5umjjz7SvHnz8rTfESNGKCkpyTqdOnXKTokBAICjceiRnTfeeEPDhw+3XnvzyCOP6MSJExo3bpzCwsLk5+cnSUpMTJS/v791u8TERNWtWzfL/bq6usrV1TVfswMAAMfg0CM7169fl5OTbURnZ2elp6dLkgIDA+Xn56fY2Fjr8uTkZG3fvl3BwcEFmhUAADgmhx7Zadu2rd577z1VrFhRtWvX1u7duzVx4kSFh4dLkiwWi4YMGaKxY8eqatWqCgwM1KhRo1S+fHm1b9++cMMDAACH4NBlZ+rUqRo1apReffVVnT9/XuXLl1f//v01evRo6zpvvvmmrl27pn79+unKlSt68skntXbtWrm5uRVicgAA4Cgsxp8fR/wXlZycLC8vLyUlJcnT07Ow4ziGaEthJ8iox1/+VxUomvh7gnyS3c9vh75mBwAAIK8oOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNQoOwAAwNTyXHbS0tK0Z88eXb582R55AAAA7CrHZWfIkCGKjIyUdKfoNGvWTI899pgCAgK0YcMGe+cDAADIkxyXnS+++EJ16tSRJK1cuVLx8fE6ePCghg4dqn//+992DwgAAJAXOS47Fy9elJ+fnyRp9erV6ty5s6pVq6bw8HDt3bvX7gEBAADyIsdlx9fXV/v371daWprWrl2rZ555RpJ0/fp1OTs72z0gAABAXrjkdIM+ffqoS5cu8vf3l8ViUUhIiCRp+/btqlGjht0DAgAA5EWOy87bb7+toKAgnTp1Sp07d5arq6skydnZWcOHD7d7QAAAgLzIcdmRpE6dOkmSbty4YZ0XFhZmn0QAAAB2lONrdtLS0vTuu+/qwQcfVMmSJXXs2DFJ0qhRo6y3pAMAADiKHJed9957T1FRUZowYYKKFy9unR8UFKTPPvvMruEAAADyKsdlZ/78+Zo9e7Z69uxpc/dVnTp1dPDgQbuGAwAAyKscl50zZ86oSpUqGeanp6fr1q1bdgkFAABgLzkuO7Vq1dLmzZszzP/iiy9Ur149u4QCAACwlxzfjTV69GiFhYXpzJkzSk9P17Jly3To0CHNnz9fq1atyo+MAAAAuZbjkZ127dpp5cqV+u677+Th4aHRo0frwIEDWrlypfVpygAAAI4iV8/Zadq0qdavX2/vLAAAAHaX45EdAACAoiTHIztOTk6yWCxZLk9LS8tTIAAAAHvKcdlZvny5zetbt25p9+7dmjdvnsaMGWO3YAAAAPaQ47LTrl27DPM6deqk2rVra/HixYqIiLBLMAAAAHuw2zU7TzzxhGJjY+21OwAAALuwS9n5448/NGXKFD344IP22B0AAIDd5Pg01gMPPGBzgbJhGLp69apKlCihzz//3K7hAAAA8irHZeeTTz6xKTtOTk4qV66cGjVqpAceeMCu4QAAAPIqx2Wnd+/e+RADAAAgf2Sr7Pzyyy/Z3uGjjz6a6zAAAAD2lq2yU7duXVksFhmGcc/1LBYLDxUEAAAOJVtlJz4+Pr9zAAAA5ItslZ1KlSrldw4AAIB8kevn7Ozfv19r167V119/bTPZ25kzZ9SrVy+VKVNG7u7ueuSRR7Rz507rcsMwNHr0aPn7+8vd3V0hISE6cuSI3XMAAICiKcd3Yx07dkwdOnTQ3r17ba7juXs7uj2v2bl8+bKaNGmi5s2ba82aNSpXrpyOHDlic4v7hAkTNGXKFM2bN0+BgYEaNWqUQkNDtX//frm5udktCwAAKJpyPLIzePBgBQYG6vz58ypRooR+/fVXbdq0SQ0aNNCGDRvsGm78+PEKCAjQ3Llz1bBhQwUGBurZZ5/Vww8/LOnOqM6kSZM0cuRItWvXTo8++qjmz5+vs2fPasWKFXbNAgAAiqYcl524uDi98847Klu2rJycnOTk5KQnn3xS48aN06BBg+wa7uuvv1aDBg3UuXNn+fj4qF69evr000+ty+Pj45WQkKCQkBDrPC8vLzVq1EhxcXFZ7jc1NVXJyck2EwAAMKccl520tDSVKlVKklS2bFmdPXtW0p2LmA8dOmTXcMeOHdPMmTNVtWpVrVu3Tq+88ooGDRqkefPmSZISEhIkSb6+vjbb+fr6WpdlZty4cfLy8rJOAQEBds0NAAAcR46v2QkKCtLPP/+swMBANWrUSBMmTFDx4sU1e/ZsPfTQQ3YNl56ergYNGuj999+XJNWrV0/79u3TrFmzFBYWluv9jhgxQsOGDbO+Tk5OpvAAAGBSOR7ZGTlypNLT0yVJ77zzjuLj49W0aVOtXr1aU6ZMsWs4f39/1apVy2ZezZo1dfLkSUmSn5+fJCkxMdFmncTEROuyzLi6usrT09NmAgAA5pTtkZ0GDRropZdeUo8ePazloEqVKjp48KB+//33DN+Gbg9NmjTJcGrs8OHD1uf+BAYGys/PT7Gxsapbt66kO6M027dv1yuvvGLXLAAAoGjK9shOnTp19Oabb8rf318vvviizZ1XpUuXtnvRkaShQ4dq27Ztev/993X06FFFR0dr9uzZGjBggKQ7t7sPGTJEY8eO1ddff629e/fqxRdfVPny5dW+fXu75wEAAEVPtstOZGSkEhISNH36dJ08eVJPP/20qlSpovfff19nzpzJl3CPP/64li9frpiYGAUFBendd9/VpEmT1LNnT+s6b775pl577TX169dPjz/+uFJSUrR27VqesQMAACRJFuN+3+6Zhd9++01z587VggULdPbsWT377LOKiIjQCy+8YO+M+S45OVleXl5KSkri+p27ou0/UpdnPXL1qwqgsPH3BPkku5/fuf66iIcfflhjx47V8ePHFRMTo23btqlz58653R0AAEC+yPGt53+2YcMGzZ07V19++aVcXFzUt29fe+UCAACwixyXndOnTysqKkpRUVE6duyYmjZtqhkzZqhz585yd3fPj4wAAAC5lu2ys2TJEs2ZM0exsbHy8fFRWFiYwsPDVaVKlfzMBwAAkCfZLju9evVS69attXz5crVq1UpOTrm+3AcAAKDAZLvsnD59Wj4+PvmZBQAAwO6yPTxD0QEAAEUR56IAAICpUXYAAICpUXYAAICpZbvs7NixQ2lpaVkuT01N1ZIlS+wSCgAAwF6yXXaCg4N16dIl62tPT08dO3bM+vrKlSvq3r27fdMBAADkUbbLzv9+X2hm3x+ay+8UBQAAyDd2vWbHYnHAb7YFAAB/aVygDAAATC1HXwS6f/9+JSQkSLpzyurgwYNKSUmRJF28eNH+6QAA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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of MAPE values from mape1 to mape10\n",
+ "mape_values = [mape1, mape2, mape3, mape4, mape5, mape6, mape7, mape8, mape9, mape10]\n",
+ "\n",
+ "# List of corresponding labels for each MAPE value\n",
+ "labels = ['MAPE1', 'MAPE2', 'MAPE3', 'MAPE4', 'MAPE5', 'MAPE6', 'MAPE7', 'MAPE8', 'MAPE9', 'MAPE10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, mape_values, color='purple')\n",
+ "plt.xlabel('MAPE Variables')\n",
+ "plt.ylabel('MAPE Values')\n",
+ "plt.title('Bar Graph of MAPE')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "_c4Pe76fDNM-",
+ "outputId": "0e3d2f74-9042-4e2d-92c6-5ce61e967bd4"
+ },
+ "execution_count": 120,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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yZNXfEJt27ZtOnbsmB577DGb+UndunVT06ZNtXLlyiL3La6+ffvqr7/+0ooVK3TmzBmtWLHiire/fvrpJ/3888+KioqytkVFRenEiRNas2ZNgf45OTnWfwaNGzfWCy+8oJCQEH366acF+i5btsz6d+nyMnfu3Os+R8DecAsMuAG0b9/eZhJ0VFSU2rZtq1GjRql79+5ycnKSJK1YsUKvvvqqdu3aZfMIdGHzdgICAop17Bo1akiSsrOzbdobN25sndcyf/58ffjhh8U+RknqbNKkSYG2W265RWfPntXx48fl4+Njba9Xr55Nv1q1akm6FLLc3d0LreXgwYOSpMDAwALbmjZtWugj7CVVt25dhYeHa+HChTp79qwuXryo+++/v8j+H330kapVq6aGDRtq3759ki49TdagQQMtWLCgwG1CFxcXffHFF5IuPREWEBCgm2++udCx77zzTiZBwxQIQMANyMHBQZ06ddL06dP1+++/q3nz5vruu+/Us2dP3XnnnXr33Xfl6+urqlWrau7cuVq4cGGBMf5+FeZKmjZtKknavXu3evXqZW2vXr269VHwokJCYccoaZ0lUdQcJcMwrmvc0vDAAw9o+PDhSk9PV2RkZJFzbgzD0KJFi5STk1Po1bNjx44pOzvb5oqco6NjsR/LB8yCAATcoC5cuCDpf1dmli1bJhcXF61Zs8bm3TLXe3vjjjvukIeHh5KSkhQbGysHh+u7s17SOn///fcCbb/99pvc3NxUt27d66pFkurXry9J2rt3r+666y6bbXv37rVuv1733nuvHnnkEX3//fdavHhxkf0uvx9owoQJuvXWW222nTp1Sg8//LCWL19eYAI8AFvMAQJuQOfPn9dXX30lJycn6y9JR0dHWSwWm3kxBw4c0PLly6/rWG5ubnr22We1e/duPf/884VeTSnJFZaS1pmSkmIzN+jQoUP67LPP1KVLlxI/lVaYdu3aycvLSwkJCTa347788kvt2bOnwO2ma1W9enW99957evnll9WjR48i+12+/fXMM8/o/vvvt1mGDx+uJk2aaMGCBaVSE3Aj4woQcAP48ssv9euvv0q6dAtk4cKF+v333/X8889b57Z069ZNU6dOVdeuXfXAAw/o2LFjio+PV+PGjfXTTz9d1/Gff/557dmzR2+++aa++uor3Xfffbr55pt16tQp7dixQ0uX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LFmiL774QqtXr9bOnTv12GOPFXkOcXFxmj9/vhISEvTLL79Yv2K/fv16SdJLL72k//znP/ryyy+1Z88evffee/L09LymnxdgauXyyVUAldrlL2IfO3bMcHZ2Ng4cOGAcOHDAcHFxMY4fP2792vTfhYaGGtOmTTMMwzDOnz9veHp62nwF+p9fnD516pRx7733GtWrVzfS09MNw7j0xemqVasa1apVs1k++uijImvds2dPgS9O33HHHcbAgQOL3Kdbt27GU089ZV3v2LGj0bZt2wL9JBmffvppkeO8+eabRlBQkHV93LhxhqOjo3H48GFr25dffmk4ODgYaWlphmHYfm383Llzhpubm7F582abcYcNG2ZERUUZhmEYPXr0MKKjo4usAUDxVKng/AWgEqlbt671dpZhGOrWrVuhVx/27t2rrVu36tNPP5V06cpMv379NHv2bIWFhdn0DQ0NlYODg3JyctSwYUMtXrxY3t7e1u0DBgzQiy++aLPP37f/U9OmTRUaGqo5c+YoLCxM+/bt03fffacJEyZIki5evKjXX39dS5Ys0ZEjR5SXl6fc3Fy5ubnZjBMUFHTVn8fixYv19ttv648//lB2drYuXLhQ4PZcvXr1dNNNN1nXQ0JClJ+fr71798rHx8em7759+3T27Fl17tzZpj0vL896m3HEiBG67777tGPHDnXp0kW9e/dWaGjoVWsFYIsABKBEhg4dqlGjRkmS4uPjC+0ze/ZsXbhwQX5+ftY2wzDk7OysGTNmyMPDw9q+ePFiNWvWTHXq1FHNmjULjOXh4aHGjRuXqMZhw4bp3//+t+Lj4zV37lw1atRIHTt2lCS9+eabmj59uqZNm6aWLVuqWrVqGj16dIHbbtWqVbviMVJSUjRgwACNHz9eERER8vDwUFJSkqZMmVKiWv8uOztbkrRy5Uqb0CTJOvk6MjJSBw8e1KpVq7R27VrdfffdGjlypCZPnnzNxwXMiDlAAEqka9euysvL0/nz562Tg//uwoULmj9/vqZMmaJdu3ZZlx9//FF+fn4FJhz7+/urUaNGhYafa9W3b185ODho4cKFmj9/voYOHSqLxSJJ2rRpk3r16qWBAweqdevWatiwoX777bcSH2Pz5s2qX7++XnzxRbVr105NmjTRwYMHC/RLTU21eQLu+++/l4ODgwIDAwv0bdasmZydnZWamqrGjRvbLP7+/tZ+devW1eDBg/XRRx9p2rRpmjlzZonrB8yOK0AASsTR0VF79uyx/vmfVqxYoVOnTmnYsGE2V3ok6b777tPs2bOLfI9PYc6ePav09HSbNmdnZ9WqVavIfapXr65+/fopNjZWWVlZNu8oatKkiT7++GNt3rxZtWrV0tSpU5WRkaFmzZoVu6bL46SmpiopKUm33367Vq5cab3l93cuLi4aPHiwJk+erKysLD3++OPq27dvgdtf0qVJ1U8//bSefPJJ5efnq0OHDsrMzNSmTZvk7u6uwYMHa+zYsQoKClLz5s2Vm5urFStW6NZbby1R7QC4AgTgGri7uxf5KPrs2bMVHh5eIPxIlwLQtm3bSvQywlmzZsnX19dmiYqKuup+w4YN06lTpxQREWFzK27MmDG67bbbFBERobCwMPn4+FzTm5h79uypJ598UqNGjVKbNm20efNmvfTSSwX6NW7cWP/v//0/3XPPPerSpYtatWqld999t8hxX3nlFb300kuKi4vTrbfeqq5du2rlypUKCAiQJDk5OSk2NlatWrXSnXfeKUdHRyUlJZW4fsDsLIZxledSAQAAbjBcAQIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKbz/wGv+ZTScaIQRQAAAABJRU5ErkJggg==\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of precision values from precision1 to precision10\n",
+ "precision_values = [precision1, precision2, precision3, precision4, precision5, precision6, precision7, precision8, precision9, precision10]\n",
+ "\n",
+ "# List of corresponding labels for each precision value\n",
+ "labels = ['Precision1', 'Precision2', 'Precision3', 'Precision4', 'Precision5', 'Precision6', 'Precision7', 'Precision8', 'Precision9', 'Precision10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, precision_values, color='red')\n",
+ "plt.xlabel('Precision Variables')\n",
+ "plt.ylabel('Precision Values')\n",
+ "plt.title('Bar Graph of Precision')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "ZDPV0M5rDTi6",
+ "outputId": "9db63164-3f42-47be-d302-d80d381d9b91"
+ },
+ "execution_count": 121,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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Z59p5MiR+stf/qIqVapo8eLFqlmzZmG9BQAA4EEKvdxI0qBBg657GGr9+vU5pnXp0kVdunTJ51SFx9fXV4mJiTkOp3k6chcschcschcsches2zX39RT6RfwAAADcqdBvvwAAAOBOlBsAAGAplBsAAGAplBsPYLPZtHjxYrePzW/kLljkLljkLljkzl+3S063MXASHx9vJBlJxtvb21SqVMmMGTPGZGVl5ds6jx8/btLT029p7K3kXrhwoWnRooUJDQ01ksxPP/3k8bkzMzPNyy+/bGrWrGmKFStmIiMjTa9evczRo0c9OrcxxiQmJpqqVauaYsWKmZCQEPPII4+YH374weNzX+uZZ54xksykSZM8Pve18159xMXFeXxuY4z597//bdq3b2+CgoJMsWLFTP369c2hQ4c8Ovfvt/XVx9tvv+3RudPS0szAgQNN2bJljZ+fn6levbqZMWPGTWe50Vh3fs6kpKSY+Ph4ExkZafz9/U1cXJzZu3evW3K6U14+Zy5fvmwGDBhgQkNDTfHixU3nzp1NSkrKTa2PcvM78fHxplWrVub48ePml19+MdOnTzc2m8288cYbOcZmZGQUQsLc3UruTz75xIwZM8bMmjXLpXLjDjeb+9y5cyY2NtbMmzfP7N6922zatMk0bNjQxMTEeHRuY4yZM2eOWbNmjTlw4IDZtWuX6devnwkKCjInT5706NxXLVq0yNSuXduUKVMmT+XGHW4l97XzXn2cPXvW43Pv37/fhIaGmpdeesls27bN7N+/33z55ZfmxIkTHp372u18/PhxM3v2bGOz2cyBAwc8Onf//v1NpUqVzLp168zBgwfN+++/b4oUKWK+/PJLj8p5Lbvdbu677z7z4IMPms2bN5vdu3ebp59+2kRHR5sLFy64PfetyMvnzLPPPmuioqJMcnKy+fHHH819991n7r///ptaH+Xmd+Lj402HDh2cprVo0cLcd999jtdee+01ExkZaSpUqGCMMebw4cOmS5cuJjg42JQoUcI8+uij5uDBg07L+PDDD80999xjfHx8TEREhBk4cKDjNUnmiy++MMb89os8cOBAExERYXx9fU10dLTTL/y1Y40x5p///Kdp1qyZ8fLyMt7e3qZ///4mLS3Nkbt06dImKirK1KhRwwQEBBibzWYCAwNNZmZmjtyxsbE5fuluh9xXt/fmzZuNJHPo0KHbKndqaqqRZNauXevxuYODg42fn59ZtWqVKV++vKPceHJub29v4+3tfdv9vfT29jY+Pj63Xe7f/3536NDBNG/e3ONze3l5GX9/f6ftXa9ePTNixAi35776WXI1t5+fnylatKgJCwszPXr0cHzO+Pv7m2LFipkJEyaY0qVLGx8fH+Pj4+PYvsnJyUaS2bVrl9P2lWSCg4Pdvn39/PxMaGio0/Y15n+fmxMmTDAREREmNDTUDBgwwGRmZprfO3jwYK7l5ty5c8bb29vMnz/fMe3nn382ksymTZtyLOePcM5NHvj7+yszM1OSlJycrD179mjNmjVatmyZsrKyFBcXp8DAQG3YsEEbN25UQECAWrVq5ZhnxowZGjhwoJ5++mnt3LlTS5YsUeXKlXNd11//+lctWbJEn3/+ufbs2aM5c+aoQoUKuY69ePGi4uLiVKJECbVr104NGjTQ2rVrHRdE9Pf315UrV5SSkqK9e/eqefPmeu+995SVlaW//e1vOXIXL15ckpSVlXVb5b66vU+fPi2bzaYFCxbcNrnj4uI0ffp0BQcHa9u2bR6d+5tvvlHVqlVVo0YNPf/88zL//xJZnv570rp1a/n6+mrVqlW6++679fTTT+vMmTMenTsgIEBFixbVM888o82bN6ty5cpq0KCBFi9e7NG5f//73aJFCy1btkz9+vXz+NydOnVSxYoV5eXlpVatWmn16tXau3evLl26lC+5r1y54si9ZcsWNWzYUOfOndP//d//OT5nWrRoIZvNpr179yooKEhNmzaVl5eXXnjhBQUEBKhfv36SJD8/P6ftGx4ergceeMDt23fLli2aP3++0/a9at26dTpw4IDWrVunjz/+WElJSUpKSsp1mbnZunWrsrKyFBsb65hWrVo1RUdHa9OmTXlejoPLdcjirt1zY7fbzZo1a4yvr6958cUXTXx8vAkPD3faTfjpp5+aqlWrGrvd7piWkZFh/P39zapVq4wxxpQpU8aMGDHiuuvUNS158ODBpnnz5k7Lu97YDz74wJQoUcJcuHDBkXv58uXGZrOZzz//3Pj6+poaNWqY4sWLO+Xu0qWLadSoUY7ce/bsMZLM9OnTb6vcV7d35cqVTY8ePW6L3EuXLjXFihUzkkxoaKjZvHmzx+d+4403TIsWLUx6errx9/c3YWFhZtKkSR6f+x//+If58ssvzdatW42Pj4+JiooyDRo08Ojcx44dM5JMsWLFzNtvv238/PxM3759jc1mM6VKlfLY3L//e+nt7W0CAgLM5cuXPXp72+12k56ebnr37u04F6Zo0aLm448/zpfc8fHxpnbt2qZEiRImLS3N8TnTuXNnI8mULl3aZGRkmPj4eFO+fHnz8ccfO3J26dLFdOvWzfHvXunSpU2XLl1MZGSkGTZsmHnzzTeNJNOyZUu3b9+rli9fbry8vBznw1zNmZ2d7RhzNefvXW/PzZw5c4yPj0+O8Q0aNDAvv/xyrjlvxCNuv+Bpli1bpoCAAGVlZclut6tHjx4aPXq0Bg4cqFq1asnHx8cxdseOHdq/f78CAwOdlpGenq4DBw7o5MmTOnbsmB555JE8rbtPnz5q0aKFqlatqlatWqldu3Zq2bJlrmN//vln1a5d27HHZdmyZVq7dq2MMerevbt69uyp7OxsnTt3TtWrV3fkjoyM1A8//KBjx4455Tb//3/iR44cua1yS9Lly5eVnp6usWPHqnLlyrdNbpvNpqpVq+qxxx7z6O1dvHhxpaeny9/fXyVLlnT8OS0tzaNz/357Z2VlqX///ho1apQkeWzuq//jzszM1JgxY5SRkaEGDRro6NGjWr16tcfmzm1733///Tp//rzH/55kZWUpKytLfn5+ysjIUOfOnfXcc8/p0qVL+ZL7n//8p2w2m0qWLOn4nBk/frwWLVqk6OhoR84aNWpo586djs+ZzMxM2e12LVu2TOnp6RoyZIiWLFmi48eP6+2331aLFi3UunVrx7/n7t6+ktSkSRPZ7Xbt2bPHcR/IGjVqqEiRIo4xkZGR2rlzZ562W37gsFQumjVrpu3bt2vfvn26fPmyPv74Y8cP9tofsCRduHBBMTEx2r59u9Nj79696tGjh/z9/V1ad7169XTw4EGNGzdOly9fVteuXfX444/nOfeGDRskSatXr9bHH38sb29veXl5OeW22WzKzs7OkXv58uWSpNatW982ubds2aLGjRuratWq+vbbbxUWFnZb5N6+fbt27NihvXv3asWKFfL29vbo3EOHDpUxRunp6bp8+bJsNpvOnj2rxMREj86d29/L559/XqGhoR6de8uWLSpSpIgGDRrk9O9J9erVPTr3tdt61qxZkqTXXnvN4/89+eGHH2S32/X+++9r586d2rt3rz744AM99thj+ZY7KipK9evXz/Vz5trt5e3t7fQ506NHD8ef9+7dq2HDhumHH36QJC1YsEArV67UmTNnVLFiRbfkzKvf/xtms9lkt9vzPH9ERIQyMzN17tw5p+knTpxQRESEy3koN7koXry4KleurOjoaBUteuOdW/Xq1dO+ffsUFhamypUrOz2Cg4MVGBioChUqKDk5Oc/rDwoKUrdu3TRr1izNmzdPCxcu1NmzZ3OMq169unbs2KGLFy86ch8/flxeXl6qUaPGDdcRGBiYI/fVY66BgYG3Re7y5cvrL3/5i44fP64NGzborrvuui1y5/Z7IkkhISEem7t///7auXOnduzY4XiUKVNGL7/8ssqWLeuxuXPb3mlpafr1118VFhbmsbnLlSunhg0b6vTp006/J4cOHVLx4sU9Nve123vVqlWKiYnRAw884PF/L0NCQpSdna1y5co5bW9/f3/5+fnlS+4SJUpo3759KlmypONzZuPGjZKkgIAAp7HXfs6EhITI398/18+ZrVu3at++ffrxxx/VoUMHt+T8/fa9mtPLy0tVq1bN83b5IzExMfL29nba1nv27NHhw4fVuHFjl5fHYalb1LNnT02YMEEdOnTQ2LFjVa5cOR06dEiLFi3Syy+/rHLlymn06NF69tlnFRYWptatWystLU0bN27U4MGDcyzv3XffVWRkpOrWrSsvLy/Nnz9fERERCgkJyXXdiYmJio+PV1ZWls6cOaPBgwerV69ejl2F1xMWFiZjjDp06KAXX3xRkhy7EL///ntJ0tChQ/XKK694ZO5HH31U2dnZOnDggMaNG6fhw4drwIABKlOmjEaOHKlBgwZ5ZO527dqpfPny6tSpkzIzM7V48WIZY3T06FGNGjVK48aN88jcffv2zfH7bbPZFBERoddff91jf7/btWunsmXLqkuXLsrMzNS8efO0f/9+Va5cWS+//LIGDx7skbk7dOigtm3bavTo0QoPD9fJkydVpUoVLV26VK+88oomTpzosbnHjh2r4OBgzZ07V40bN9Z///tfj/93sFevXqpdu7aGDBmiPXv2aPv27br33nv1ySefqGvXrvmyvaOionTy5EnFx8dr9OjROnXqlAYPHqxKlSrluDP3tZ8zpUqV0uXLl7V+/XotWrRI99xzj6pVq6YBAwZo5MiRmj59umJjY1WqVCm99957bt2+1+bMy/a91tmzZ3X4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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of recall values from recall1 to recall10\n",
+ "recall_values = [recall1, recall2, recall3, recall4, recall5, recall6, recall7, recall8, recall9, recall10]\n",
+ "\n",
+ "# List of corresponding labels for each recall value\n",
+ "labels = ['Recall1', 'Recall2', 'Recall3', 'Recall4', 'Recall5', 'Recall6', 'Recall7', 'Recall8', 'Recall9', 'Recall10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, recall_values, color='cyan')\n",
+ "plt.xlabel('Recall Variables')\n",
+ "plt.ylabel('Recall Values')\n",
+ "plt.title('Bar Graph of Recall')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "39LBleNeDeuw",
+ "outputId": "3c6c40bc-f1da-44fb-da14-25ec6d6cf278"
+ },
+ "execution_count": 122,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/z0lEQVR4nO3deVxU9eL/8feAMOACroAhV3HfEg03MjQTxSyXFjPNRKX8WdoieUu7JlrdyMqtcmlx75qWmtfSXMKsa1KmiFtqaiJkCuKGIELC+f3h17nOBY1RluH4ej4e83jEZ87ynoM5b89qMQzDEAAAgEm4lHYAAACAokS5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AVBmTZgwQRaLRWlpacW+rrVr16ply5by8PCQxWLR2bNni32dxcVisWjChAm2n+fPny+LxaLExMRSywQUJcoN4ISufNlc/fLx8VHnzp319ddfl3ieL7/8Uj179pSvr6/c3d1VtWpVdezYUZMnT1Z6enqJ5ylpp06d0iOPPCJPT0/NmDFDixYtUoUKFQqc9n9/d+XKlZO/v78GDx6sY8eOlXBy4NZUrrQDALi2V199VYGBgTIMQykpKZo/f7569OihL7/8Uvfff3+xrz8vL0+RkZGaP3++br/9dj399NMKCAjQ+fPnFRcXp3HjxmnNmjWKjY0t9iyl6eeff9b58+f12muvKSwsrFDzXPndXbx4UT/++KPmz5+vzZs3a8+ePfLw8CjmxMCtjXIDOLF7771XrVu3tv0cGRkpX19fffrpp0VSbvLy8pSTk3PNL9u33npL8+fP16hRozR58mRZLBbbe88995yOHz+uhQsX3tQ6yoLU1FRJUuXKlQs9z9W/uyeeeELVq1fXpEmTtGrVKj3yyCPFERPA/+GwFFCGVK5cWZ6enipXzv7fJe+8847uvPNOVatWTZ6engoODtayZcvyzW+xWDRy5Ej961//UrNmzWS1WrV27doC13XhwgVNmjRJzZo109tvv21XbK6oWbOmXnrppUKv40ZyNmrUSB4eHgoODtb3339fYNazZ89q8ODBqly5sry9vTVkyBBduHCh4I34Pz7//HMFBwfL09NT1atX18CBA+0OH919992KiIiQJLVp00YWi0WDBw8u1LKvFhoaKkk6fPiw3fj+/fv18MMPq2rVqvLw8FDr1q21atWqAj/jqFGjVKdOHVmtVtWqVUuDBg2ynW+Uk5Oj8ePHKzg4WN7e3qpQoYJCQ0P17bffOpwVKOvYcwM4sXPnziktLU2GYSg1NVXvvfeeMjIyNHDgQLvppk+frl69eumxxx5TTk6OlixZor59++qrr77SfffdZzftxo0b9dlnn2nkyJGqXr266tSpU+C6N2/erLNnz2r06NFydXV1KPe11uFIzu+++05Lly7Vs88+K6vVqpkzZ6p79+7aunWrmjdvbjftI488osDAQMXExCg+Pl4ff/yxfHx8NGnSpOvmnD9/voYMGaI2bdooJiZGKSkpmj59un744Qft2LFDlStX1j/+8Q81atRIH374oe1QU7169RzaHpJsJ+tWqVLFNrZ371516NBB/v7+GjNmjCpUqKDPPvtMffr00fLly/XAAw9IkjIyMhQaGqp9+/Zp6NChuuOOO5SWlqZVq1bp999/V/Xq1ZWenq6PP/5Y/fv315NPPqnz589rzpw5Cg8P19atW9WyZUuHMwNllgHA6cybN8+QlO9ltVqN+fPn55v+woULdj/n5OQYzZs3N+655x67cUmGi4uLsXfv3r/MMH36dEOSsXLlSrvxS5cuGSdPnrR75eXlFWodjuSUZGzbts02dvToUcPDw8N44IEHbGPR0dGGJGPo0KF28z/wwANGtWrVrvv5cnJyDB8fH6N58+ZGVlaWbfyrr74yJBnjx4+3jV35ffz888/XXebV037zzTfGyZMnjeTkZGPZsmVGjRo1DKvVaiQnJ9um7dKli3H77bcbFy9etI3l5eUZd955p9GgQQPb2Pjx4w1JxooVK/Kt78q2v3TpkpGdnW333pkzZwxfX99820eSER0dnS/zkSNH/vLzAWUBh6UAJzZjxgxt2LBBGzZs0CeffKLOnTvriSee0IoVK+ym8/T0tP33mTNndO7cOYWGhio+Pj7fMjt16qSmTZv+5bqvXAVVsWJFu/Hdu3erRo0adq9Tp04Vah2O5AwJCVFwcLDt57/97W/q3bu31q1bp9zcXLtphw8fbvdzaGioTp06dd0rubZt26bU1FQ9/fTTducD3XfffWrcuLFWr159zXkLIywsTDVq1FBAQIAefvhhVahQQatWrVKtWrUkSadPn9bGjRv1yCOP6Pz580pLS1NaWppOnTql8PBwHTx40HZ4bPny5QoKCrLtybnalcOFrq6ucnd3l3T5PKfTp0/r0qVLat26dYHbFzAzDksBTqxt27Z2JxT3799frVq10siRI3X//ffbvsy++uorvf7660pISFB2drZt+oLOkwkMDCzUuitVqiTp8iGRq9WvX18bNmyQJC1cuFCLFi0q9DocydmgQYN8Yw0bNtSFCxd08uRJ+fn52cb/9re/2U135dDPmTNn5OXlVWCWo0ePSpIaNWqU773GjRtr8+bNBc5XWDNmzFDDhg117tw5zZ07V99//72sVqvt/UOHDskwDL3yyit65ZVXClxGamqq/P39dfjwYT300EN/uc4FCxZo8uTJ2r9/v/7880/beGF/54BZUG6AMsTFxUWdO3fW9OnTdfDgQTVr1kz/+c9/1KtXL3Xs2FEzZ85UzZo15ebmpnnz5mnx4sX5lnH13pPrady4sSRpz5496t27t228YsWKtsuhr1UAClqHozkdca1zggzDuKnl3oyri2mfPn101113acCAATpw4IAqVqyovLw8SdLo0aMVHh5e4DLq169f6PV98sknGjx4sPr06aO///3v8vHxkaurq2JiYvKdxAyYHeUGKGMuXbok6b97VJYvXy4PDw+tW7fObs/AvHnzbmo9oaGh8vb21pIlSzR27Fi5uNzcUWxHcx48eDDf2K+//qry5curRo0aN5VFkmrXri1JOnDggO655x679w4cOGB7vyhcKRmdO3fW+++/rzFjxqhu3bqSJDc3t7+8d069evW0Z8+e606zbNky1a1bVytWrLDbExYdHX3zHwAoYzjnBihD/vzzT61fv17u7u5q0qSJpMtfnBaLxe48lMTERK1cufKm1lW+fHm9+OKL2rNnj8aMGVPgXhBH9ow4mjMuLs7uXJHk5GT9+9//Vrdu3Ry+eqsgrVu3lo+Pj2bPnm13iOzrr7/Wvn378l29dbPuvvtutW3bVtOmTdPFixfl4+Oju+++Wx988IGOHz+eb/qTJ0/a/vuhhx7Szp079cUXX+Sb7srv4Mo2ufp38tNPPykuLq5IPwdQFrDnBnBiX3/9tfbv3y/p8vkXixcv1sGDBzVmzBjbuST33XefpkyZou7du2vAgAFKTU3VjBkzVL9+fe3ateum1j9mzBjt27dPb7/9ttavX6+HHnpItWrV0pkzZxQfH6/PP/9cPj4+hbpB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ldaK09LSlJubK19fX7txX19f7d+/v8B5BgwYoLS0NN11110yDEOXLl3S8OHDr3tYKjs7W9nZ2baf09PTi+YDAAAAp1TqJxQ7YtOmTXrjjTc0c+ZMxcfHa8WKFVq9erVee+21a84TExMjb29v2ysgIKAEEwMAgJJmMQzDKI0V5+TkqHz58lq2bJn69OljG4+IiNDZs2f173//O988oaGhat++vd5++23b2CeffKJhw4YpIyNDLi75u1pBe24CAgJ07tw5eXl5Fe2HknOewFuYXzC5iw65Sxa5Sxa5S5aZczsqPT1d3t7ehfr+LrU9N+7u7goODlZsbKxtLC8vT7GxsQoJCSlwngsXLuQrMK6urpKka3U0q9UqLy8vuxcAADCvUjvnRpKioqIUERGh1q1bq23btpo2bZoyMzM1ZMgQSdKgQYPk7++vmJgYSVLPnj01ZcoUtWrVSu3atdOhQ4f0yiuvqGfPnraSAwAAbm2lWm769eunkydPavz48Tpx4oRatmyptWvX2k4yTkpKsttTM27cOFksFo0bN07Hjh1TjRo11LNnT/3zn/8srY8AAACcTKmdc1NaHDlmdyPK6rFPchcdcpcscpcscpcsM+d2VJk45wYAAKA4UG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpOFxusrKydOHCBdvPR48e1bRp07R+/foiDQYAAHAjHC43vXv31sKFCyVJZ8+eVbt27TR58mT17t1bs2bNKvKAAAAAjnC43MTHxys0NFSStGzZMvn6+uro0aNauHCh3n333SIPCAAA4AiHy82FCxdUqVIlSdL69ev14IMPysXFRe3bt9fRo0eLPCAAAIAjHC439evX18qVK5Wc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J06cUMuWLbV27VrbScZJSUlycbnhGykDAIBbzA0/W6qs4tlSBSN30SF3ySJ3ySJ3yTJzbkeVyLOlAAAAnBHlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmIpTlJsZM2aoTp068vDwULt27bR169ZrTvvRRx8pNDRUVapUUZUqVRQWFnbd6QEAwK2l1MvN0qVLFRUVpejoaMXHxysoKEjh4eFKTU0tcPpNmzapf//++vbbbxUXF6eAgAB169ZNx44dK+HkAADAGVkMwzBKM0C7du3Upk0bvf/++5KkvLw8BQQE6JlnntGYMWP+cv7c3FxVqVJF77//vgYNGvSX06enp8vb21vnzp2Tl5fXTef/X5YiX+LNK8wvmNxFh9wli9wli9wly8y5HeXI93ep7rnJycnR9u3bFRYWZhtzcXFRWFiY4uLiCrWMCxcu6M8//1TVqlULfD87O1vp6el2LwAAYF6lWm7S0tKUm5srX19fu3FfX1+dOHGiUMt46aWXdNttt9kVpKvFxMTI29vb9goICLjp3AAAwHmV+jk3N+PNN9/UkiVL9MUXX8jDw6PAacaOHatz587ZXsnJySWcEgAAlKRypbny6tWry9XVVSkpKXbjKSkp8vPzu+6877zzjt5880198803atGixTWns1qtslqtRZIXAAA4v1Ldc+Pu7q7g4GDFxsbaxvLy8hQbG6uQkJBrzvfWW2/ptdde09q1a9W6deuSiAoAAMqIUt1zI0lRUVGKiIhQ69at1bZt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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [],
+ "metadata": {
+ "id": "13cZXvb0DsvK"
+ },
+ "execution_count": null,
+ "outputs": []
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.9.16"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/Stock_Price_Prediction.ipynb b/Stock_Price_Prediction.ipynb
new file mode 100644
index 0000000..7c3ad61
--- /dev/null
+++ b/Stock_Price_Prediction.ipynb
@@ -0,0 +1,1805 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "id": "qCDSjVhXLr_Z"
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.impute import SimpleImputer\n",
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn.svm import SVR\n",
+ "from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor, GradientBoostingRegressor, DecisionTreeRegressor\n",
+ "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error\n",
+ "from sklearn.neighbors import KNeighborsRegressor\n",
+ "from tensorflow.keras.models import Sequential\n",
+ "from tensorflow.keras.layers import Dense,LSTM"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "SOQbXSiB-g5G",
+ "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
+ ]
+ }
+ ],
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/content/drive')\n",
+ "df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "Sc4id6VxL8BS",
+ "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Date \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Adj Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 01-01-1996 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 12.409931 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 02-01-1996 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 12.014931 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 03-01-1996 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 11.694577 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 04-01-1996 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 11.654142 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 05-01-1996 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 11.588827 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ],
+ "text/plain": [
+ " Date Open High Low Close Adj Close \\\n",
+ "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
+ "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
+ "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
+ "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
+ "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
+ "\n",
+ " Volume \n",
+ "0 43733533.0 \n",
+ "1 56167280.0 \n",
+ "2 68296318.0 \n",
+ "3 86073880.0 \n",
+ "4 76613039.0 "
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Load the dataset\n",
+ "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "id": "7LaYGXsfN-8y"
+ },
+ "outputs": [],
+ "source": [
+ "# Drop the 'Date' and 'Adj Close' columns\n",
+ "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "pqbTBdnBOKJc",
+ "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ],
+ "text/plain": [
+ " Open High Low Close Volume\n",
+ "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
+ "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
+ "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
+ "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
+ "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "id": "dydEPoNeM6eN"
+ },
+ "outputs": [],
+ "source": [
+ "# Handle missing values\n",
+ "imputer = SimpleImputer(strategy='mean')\n",
+ "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "id": "OQ3cGqgTMBwt"
+ },
+ "outputs": [],
+ "source": [
+ "# Select features and target variable\n",
+ "X = df[['Open', 'High', 'Low', 'Volume']]\n",
+ "y = df['Close']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "id": "9Oz-bwJOMEWD"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "id": "ugapDyXODtn3"
+ },
+ "outputs": [],
+ "source": [
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "997ZEgibCZIO",
+ "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(5659, 4)"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "bmtt76RuCeyG",
+ "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(1415, 4)"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "CeJkUJ92Ciqd",
+ "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(5659,)"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7HGC7VuTCjWc",
+ "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(1415,)"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Function to evaluate and print RMSE, MAE, and MAPE\n",
+ "def evaluate_model(model, X_test, y_test):\n",
+ " predictions = model.predict(X_test)\n",
+ " rmse = np.sqrt(mean_squared_error(y_test, predictions))\n",
+ " mae = mean_absolute_error(y_test, predictions)\n",
+ " mape = mean_absolute_percentage_error(y_test, predictions)\n",
+ "\n",
+ " print(f\"RMSE: {rmse}\")\n",
+ " print(f\"MAE: {mae}\")\n",
+ " print(f\"MAPE: {mape}\\n\")\n",
+ " \n",
+ " return rmse, mae, mape\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "metrics = {\n",
+ " \"Model\": [],\n",
+ " \"RMSE\": [],\n",
+ " \"MAE\": [],\n",
+ " \"MAPE\": []\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "c6Ek8jRlO2_I"
+ },
+ "source": [
+ "## 1. LINEAR REGRESSION"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "id": "RdZ1SpzdMHAJ"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a linear regression model\n",
+ "model1 = LinearRegression()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "mPM035IzMY04",
+ "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "5286 257.350006\n",
+ "3408 129.464996\n",
+ "5477 279.350006\n",
+ "6906 588.500000\n",
+ "530 21.644367\n",
+ "Name: Close, dtype: float64"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_train.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "qBhQ9HbYMI3d",
+ "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "LinearRegression()"
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model1.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "id": "X269co2kMS4z"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model1, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Linear Regressor\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "GxtMzlg-gR2P"
+ },
+ "source": [
+ "## 2. Support Vector Regression"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "id": "0xQewd7QWTtq"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an SVR model\n",
+ "model2 = SVR()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "22SaCsQmfhgP",
+ "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "SVR()"
+ ]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model2.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {
+ "id": "OQ1nL4oYfkAC"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model2, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"SVR\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "hcIfVMWdgcKt"
+ },
+ "source": [
+ "## 3. Random Forest Regressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "id": "f7raXT_hf2ij"
+ },
+ "outputs": [],
+ "source": [
+ "model3 = RandomForestRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "fF002Yepgk55",
+ "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "RandomForestRegressor()"
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model3.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "id": "8nRU_pzEgnCt"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model3, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Random Forest\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "mZsLwLivhLGH"
+ },
+ "source": [
+ "## 4. Gradient Boosting Models (GBM)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "id": "TI8idoxOg6jF"
+ },
+ "outputs": [],
+ "source": [
+ "model4 = GradientBoostingRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
+ },
+ "id": "2gpbDxshhexj",
+ "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
+ ],
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
+ ]
+ },
+ "execution_count": 54,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model4.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {
+ "id": "Jj9DXdUPhh9V"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model4, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"GBM\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "d8nSGoyuh9dx"
+ },
+ "source": [
+ "## 5. Extreme Gradient Boosting (XGBoost)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {
+ "id": "DyhhdlZAhx94"
+ },
+ "outputs": [],
+ "source": [
+ "import xgboost as xgb\n",
+ "# Create an XGBoost model\n",
+ "model5 = xgb.XGBRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
+ },
+ "id": "RAIwxIp5iH9Z",
+ "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
+ ],
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
+ ]
+ },
+ "execution_count": 60,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model5.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model5, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"XGBoost\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "A_J776rtiovq"
+ },
+ "source": [
+ "## 6. AdaBoostRegressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {
+ "id": "HNq66cXRiYPJ"
+ },
+ "outputs": [],
+ "source": [
+ "model6 = AdaBoostRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "P0oB5wjQivBr",
+ "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "AdaBoostRegressor()"
+ ]
+ },
+ "execution_count": 66,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model6.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {
+ "id": "Bf1m5ukOi2VM"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model6, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"AdaBoost Regressor\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Q9DzOt3CkWFX"
+ },
+ "source": [
+ "## 7. Decision Tree"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {
+ "id": "23DZ2biSjF9a"
+ },
+ "outputs": [],
+ "source": [
+ "model7 = DecisionTreeRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "6mQEQf-ykc9F",
+ "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "DecisionTreeRegressor()"
+ ]
+ },
+ "execution_count": 72,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model7.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {
+ "id": "BFJ9q_tvkgRC"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model7, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Decision Tree\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "LH-B-Xd6k5UD"
+ },
+ "source": [
+ "## 8. KNeighborsRegressor(KNN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {
+ "id": "JVDSed7yktFY"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a KNN model\n",
+ "model8 = KNeighborsRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "9fn64o-ZlBka",
+ "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "KNeighborsRegressor()"
+ ]
+ },
+ "execution_count": 78,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model8.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 79,
+ "metadata": {
+ "id": "hbfbbjcSlDn7"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model8, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"KNN\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "X5XtlzMXljps"
+ },
+ "source": [
+ "## 9. Artificial Neural Networks (ANN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {
+ "id": "vd1fDjQiltP4"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an ANN model\n",
+ "model9 = Sequential()\n",
+ "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
+ "model9.add(Dense(16, activation='relu'))\n",
+ "model9.add(Dense(1, activation='linear'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {
+ "id": "ZIf94WLMlv04"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model9.compile(loss='mean_squared_error', optimizer='adam')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "FX5DTKqslxWf",
+ "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 86,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "OVW2qpNsmGVq",
+ "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "45/45 [==============================] - 0s 1ms/step\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model9, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"ANN\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "vjSMQNcOnFPJ"
+ },
+ "source": [
+ "## 10. LSTM(Long Short term Memory)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 92,
+ "metadata": {
+ "id": "uACvajfImrbB"
+ },
+ "outputs": [],
+ "source": [
+ "# Reshape the input data for LSTM\n",
+ "n_features = X_train_scaled.shape[1]\n",
+ "n_steps = 10\n",
+ "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
+ "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
+ "\n",
+ "# Reshape the input data\n",
+ "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
+ "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 93,
+ "metadata": {
+ "id": "r066pVYpnXH5"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an LSTM model\n",
+ "model = Sequential()\n",
+ "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
+ "model.add(Dense(1))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {
+ "id": "YpSfHu6gov35"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model.compile(loss='mean_squared_error', optimizer='adam')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 95,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "0vHjcluaoxzP",
+ "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 95,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 96,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "gEE06_TjozYv",
+ "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "44/44 [==============================] - 0s 4ms/step\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model10, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"LSTM\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create a DataFrame for metrics\n",
+ "metrics_df = pd.DataFrame(metrics)\n",
+ "\n",
+ "# Plot RMSE, MAE, and MAPE for each model\n",
+ "plt.figure(figsize=(15, 5))\n",
+ "\n",
+ "# RMSE Plot\n",
+ "plt.subplot(1, 3, 1)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['RMSE'], color='lightblue')\n",
+ "plt.xlabel('RMSE')\n",
+ "plt.title('RMSE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# MAE Plot\n",
+ "plt.subplot(1, 3, 2)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['MAE'], color='lightgreen')\n",
+ "plt.xlabel('MAE')\n",
+ "plt.title('MAE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# MAPE Plot\n",
+ "plt.subplot(1, 3, 3)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['MAPE'], color='salmon')\n",
+ "plt.xlabel('MAPE')\n",
+ "plt.title('MAPE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.9.16"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
From 81d00fa7bc1083780d73f7cd5086adf75b9d1d6c Mon Sep 17 00:00:00 2001
From: Ayushi Sha <124066968+AYUSHI-SHA@users.noreply.github.com>
Date: Sun, 6 Oct 2024 14:32:48 +0530
Subject: [PATCH 04/76] Resolved conflicts while merging
---
Python File/Stock_Price_Prediction.ipynb | 2708 -----------------
...b => Stock_Price_Prediction(Updated).ipynb | 0
2 files changed, 2708 deletions(-)
delete mode 100644 Python File/Stock_Price_Prediction.ipynb
rename Python File/Stock_Price_Prediction(Updated).ipynb => Stock_Price_Prediction(Updated).ipynb (100%)
diff --git a/Python File/Stock_Price_Prediction.ipynb b/Python File/Stock_Price_Prediction.ipynb
deleted file mode 100644
index c82b075..0000000
--- a/Python File/Stock_Price_Prediction.ipynb
+++ /dev/null
@@ -1,2708 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "id": "qCDSjVhXLr_Z"
- },
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "import numpy as np\n",
- "from sklearn.model_selection import train_test_split\n",
- "from sklearn.linear_model import LinearRegression\n",
- "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, accuracy_score, precision_score, confusion_matrix, recall_score, f1_score"
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "from google.colab import drive\n",
- "drive.mount('/content/drive')\n",
- "df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "SOQbXSiB-g5G",
- "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e"
- },
- "execution_count": 22,
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
- ]
- }
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "Sc4id6VxL8BS",
- "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " Date Open High Low Close Adj Close \\\n",
- "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
- "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
- "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
- "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
- "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
- "\n",
- " Volume \n",
- "0 43733533.0 \n",
- "1 56167280.0 \n",
- "2 68296318.0 \n",
- "3 86073880.0 \n",
- "4 76613039.0 "
- ],
- "text/html": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Date \n",
- " Open \n",
- " High \n",
- " Low \n",
- " Close \n",
- " Adj Close \n",
- " Volume \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 01-01-1996 \n",
- " 18.691147 \n",
- " 18.978922 \n",
- " 18.540184 \n",
- " 18.823240 \n",
- " 12.409931 \n",
- " 43733533.0 \n",
- " \n",
- " \n",
- " 1 \n",
- " 02-01-1996 \n",
- " 18.894005 \n",
- " 18.964767 \n",
- " 17.738192 \n",
- " 18.224106 \n",
- " 12.014931 \n",
- " 56167280.0 \n",
- " \n",
- " \n",
- " 2 \n",
- " 03-01-1996 \n",
- " 18.327892 \n",
- " 18.568489 \n",
- " 17.643839 \n",
- " 17.738192 \n",
- " 11.694577 \n",
- " 68296318.0 \n",
- " \n",
- " \n",
- " 3 \n",
- " 04-01-1996 \n",
- " 17.502312 \n",
- " 17.832542 \n",
- " 17.223972 \n",
- " 17.676863 \n",
- " 11.654142 \n",
- " 86073880.0 \n",
- " \n",
- " \n",
- " 4 \n",
- " 05-01-1996 \n",
- " 17.738192 \n",
- " 17.785366 \n",
- " 17.459852 \n",
- " 17.577793 \n",
- " 11.588827 \n",
- " 76613039.0 \n",
- " \n",
- " \n",
- "
\n",
- "
\n",
- "
\n",
- "
\n"
- ]
- },
- "metadata": {},
- "execution_count": 23
- }
- ],
- "source": [
- "# Load the dataset\n",
- "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
- "df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "id": "7LaYGXsfN-8y"
- },
- "outputs": [],
- "source": [
- "# Drop the 'Date' and 'Adj Close' columns\n",
- "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "pqbTBdnBOKJc",
- "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- " Open High Low Close Volume\n",
- "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
- "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
- "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
- "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
- "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
- ],
- "text/html": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Open \n",
- " High \n",
- " Low \n",
- " Close \n",
- " Volume \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 18.691147 \n",
- " 18.978922 \n",
- " 18.540184 \n",
- " 18.823240 \n",
- " 43733533.0 \n",
- " \n",
- " \n",
- " 1 \n",
- " 18.894005 \n",
- " 18.964767 \n",
- " 17.738192 \n",
- " 18.224106 \n",
- " 56167280.0 \n",
- " \n",
- " \n",
- " 2 \n",
- " 18.327892 \n",
- " 18.568489 \n",
- " 17.643839 \n",
- " 17.738192 \n",
- " 68296318.0 \n",
- " \n",
- " \n",
- " 3 \n",
- " 17.502312 \n",
- " 17.832542 \n",
- " 17.223972 \n",
- " 17.676863 \n",
- " 86073880.0 \n",
- " \n",
- " \n",
- " 4 \n",
- " 17.738192 \n",
- " 17.785366 \n",
- " 17.459852 \n",
- " 17.577793 \n",
- " 76613039.0 \n",
- " \n",
- " \n",
- "
\n",
- "
\n",
- "
\n",
- "
\n"
- ]
- },
- "metadata": {},
- "execution_count": 25
- }
- ],
- "source": [
- "df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "id": "dydEPoNeM6eN"
- },
- "outputs": [],
- "source": [
- "# Handle missing values\n",
- "from sklearn.impute import SimpleImputer\n",
- "imputer = SimpleImputer(strategy='mean')\n",
- "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "id": "OQ3cGqgTMBwt"
- },
- "outputs": [],
- "source": [
- "# Select features and target variable\n",
- "X = df[['Open', 'High', 'Low', 'Volume']]\n",
- "y = df['Close']"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {
- "id": "9Oz-bwJOMEWD"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "id": "ugapDyXODtn3"
- },
- "outputs": [],
- "source": [
- "# Scale the features using Min-Max scaling\n",
- "from sklearn.preprocessing import MinMaxScaler\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "997ZEgibCZIO",
- "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "(5659, 4)"
- ]
- },
- "metadata": {},
- "execution_count": 29
- }
- ],
- "source": [
- "X_train.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "bmtt76RuCeyG",
- "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "(1415, 4)"
- ]
- },
- "metadata": {},
- "execution_count": 30
- }
- ],
- "source": [
- "X_test.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "CeJkUJ92Ciqd",
- "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "(5659,)"
- ]
- },
- "metadata": {},
- "execution_count": 31
- }
- ],
- "source": [
- "y_train.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "7HGC7VuTCjWc",
- "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "(1415,)"
- ]
- },
- "metadata": {},
- "execution_count": 32
- }
- ],
- "source": [
- "y_test.shape"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "c6Ek8jRlO2_I"
- },
- "source": [
- "## 1. LINEAR REGRESSION"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {
- "id": "RdZ1SpzdMHAJ"
- },
- "outputs": [],
- "source": [
- "# Create a linear regression model\n",
- "model1 = LinearRegression()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "mPM035IzMY04",
- "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "5286 257.350006\n",
- "3408 129.464996\n",
- "5477 279.350006\n",
- "6906 588.500000\n",
- "530 21.644367\n",
- "Name: Close, dtype: float64"
- ]
- },
- "metadata": {},
- "execution_count": 34
- }
- ],
- "source": [
- "y_train.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "qBhQ9HbYMI3d",
- "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "LinearRegression()"
- ],
- "text/html": [
- "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 35
- }
- ],
- "source": [
- "# Train the model\n",
- "model1.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "id": "X269co2kMS4z"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred1 = model1.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 37,
- "metadata": {
- "id": "QK8GvDYPOd0Y"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse1 = np.sqrt(mean_squared_error(y_test, pred1))\n",
- "mae1 = mean_absolute_error(y_test, pred1)\n",
- "mape1 = mean_absolute_percentage_error(y_test, pred1)\n",
- "accuracy1 = accuracy_score(y_test > pred1, y_test > pred1.round())\n",
- "precision1 = precision_score(y_test > pred1, y_test > pred1.round())\n",
- "confusion1 = confusion_matrix(y_test > pred1, y_test > pred1.round())\n",
- "recall1 = recall_score(y_test > pred1, y_test > pred1.round())\n",
- "f11 = f1_score(y_test > pred1, y_test > pred1.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 38,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "dEi49xtEOtne",
- "outputId": "0000b074-3187-41de-fbac-4ae75cbda6bd"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 1.6881364643681482\n",
- "MAE: 0.9433353485344729\n",
- "MAPE: 0.006085435990853812\n",
- "Accuracy: 0.8296819787985866\n",
- "Precision: 0.8623595505617978\n",
- "Confusion Matrix:\n",
- " [[560 98]\n",
- " [143 614]]\n",
- "Recall: 0.8110964332892999\n",
- "F1 Score: 0.8359428182437032\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse1)\n",
- "print(\"MAE:\", mae1)\n",
- "print(\"MAPE:\", mape1)\n",
- "print(\"Accuracy:\", accuracy1)\n",
- "print(\"Precision:\", precision1)\n",
- "print(\"Confusion Matrix:\\n\", confusion1)\n",
- "print(\"Recall:\", recall1)\n",
- "print(\"F1 Score:\", f11)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "GxtMzlg-gR2P"
- },
- "source": [
- "## 2. SVR"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 39,
- "metadata": {
- "id": "o7K9r7EXWRjQ"
- },
- "outputs": [],
- "source": [
- "from sklearn.svm import SVR"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {
- "id": "0xQewd7QWTtq"
- },
- "outputs": [],
- "source": [
- "# Create an SVR model\n",
- "model2 = SVR()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 41,
- "metadata": {
- "id": "DuNes3s6U2IV"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "22SaCsQmfhgP",
- "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "SVR()"
- ],
- "text/html": [
- "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 42
- }
- ],
- "source": [
- "# Train the model\n",
- "model2.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {
- "id": "OQ1nL4oYfkAC"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred2 = model2.predict(X_test)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 44,
- "metadata": {
- "id": "nRYTwydsfpjb"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse2 = np.sqrt(mean_squared_error(y_test, pred2))\n",
- "mae2 = mean_absolute_error(y_test, pred2)\n",
- "mape2 = mean_absolute_percentage_error(y_test, pred2)\n",
- "accuracy2 = accuracy_score(y_test > pred2, y_test > pred2.round())\n",
- "precision2 = precision_score(y_test > pred2, y_test > pred2.round())\n",
- "confusion2 = confusion_matrix(y_test > pred2, y_test > pred2.round())\n",
- "recall2 = recall_score(y_test > pred2, y_test > pred2.round())\n",
- "f12 = f1_score(y_test > pred2, y_test > pred2.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 45,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "656J5oz5fzq6",
- "outputId": "ce67d2d8-0bc8-4e6d-d6b5-6b78e7e1c59b"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 147.71103599153602\n",
- "MAE: 110.99419106508152\n",
- "MAPE: 1.9715076513294716\n",
- "Accuracy: 0.9992932862190813\n",
- "Precision: 1.0\n",
- "Confusion Matrix:\n",
- " [[727 0]\n",
- " [ 1 687]]\n",
- "Recall: 0.998546511627907\n",
- "F1 Score: 0.9992727272727273\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse2)\n",
- "print(\"MAE:\", mae2)\n",
- "print(\"MAPE:\", mape2)\n",
- "print(\"Accuracy:\", accuracy2)\n",
- "print(\"Precision:\", precision2)\n",
- "print(\"Confusion Matrix:\\n\", confusion2)\n",
- "print(\"Recall:\", recall2)\n",
- "print(\"F1 Score:\", f12)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "hcIfVMWdgcKt"
- },
- "source": [
- "## 3. Random Forest"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {
- "id": "f7raXT_hf2ij"
- },
- "outputs": [],
- "source": [
- "from sklearn.ensemble import RandomForestRegressor\n",
- "# Create a Random Forest model\n",
- "model3 = RandomForestRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 47,
- "metadata": {
- "id": "TadNM7MEU7fh"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "fF002Yepgk55",
- "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "RandomForestRegressor()"
- ],
- "text/html": [
- "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 48
- }
- ],
- "source": [
- "# Train the model\n",
- "model3.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {
- "id": "8nRU_pzEgnCt"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred3 = model3.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 50,
- "metadata": {
- "id": "4aKEXGVUgsry"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse3 = np.sqrt(mean_squared_error(y_test, pred3))\n",
- "mae3 = mean_absolute_error(y_test, pred3)\n",
- "mape3 = mean_absolute_percentage_error(y_test, pred3)\n",
- "accuracy3 = accuracy_score(y_test > pred3, y_test > pred3.round())\n",
- "precision3 = precision_score(y_test > pred3, y_test > pred3.round())\n",
- "confusion3 = confusion_matrix(y_test > pred3, y_test > pred3.round())\n",
- "recall3 = recall_score(y_test > pred3, y_test > pred3.round())\n",
- "f13 = f1_score(y_test > pred3, y_test > pred3.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 51,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "8pPzsCY1g305",
- "outputId": "72c4ea56-2610-41c6-f286-4c8289d3f0ac"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 2.189635498596314\n",
- "MAE: 1.250413817712252\n",
- "MAPE: 0.007984509559881612\n",
- "Accuracy: 0.8551236749116607\n",
- "Precision: 0.8558823529411764\n",
- "Confusion Matrix:\n",
- " [[628 98]\n",
- " [107 582]]\n",
- "Recall: 0.8447024673439768\n",
- "F1 Score: 0.8502556610664718\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse3)\n",
- "print(\"MAE:\", mae3)\n",
- "print(\"MAPE:\", mape3)\n",
- "print(\"Accuracy:\", accuracy3)\n",
- "print(\"Precision:\", precision3)\n",
- "print(\"Confusion Matrix:\\n\", confusion3)\n",
- "print(\"Recall:\", recall3)\n",
- "print(\"F1 Score:\", f13)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "mZsLwLivhLGH"
- },
- "source": [
- "## 4. Gradient Boosting Models (GBM)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "metadata": {
- "id": "TI8idoxOg6jF"
- },
- "outputs": [],
- "source": [
- "import xgboost as xgb\n",
- "# Create an XGBoost model\n",
- "model4 = xgb.XGBRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 53,
- "metadata": {
- "id": "7r9xJDtOVBEA"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 248
- },
- "id": "2gpbDxshhexj",
- "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...)"
- ],
- "text/html": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) "
- ]
- },
- "metadata": {},
- "execution_count": 54
- }
- ],
- "source": [
- "# Train the model\n",
- "model4.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "id": "Jj9DXdUPhh9V"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred4 = model4.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 56,
- "metadata": {
- "id": "TdH60Sllhn5O"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse4 = np.sqrt(mean_squared_error(y_test, pred4))\n",
- "mae4 = mean_absolute_error(y_test, pred4)\n",
- "mape4 = mean_absolute_percentage_error(y_test, pred4)\n",
- "accuracy4 = accuracy_score(y_test > pred4, y_test > pred4.round())\n",
- "precision4 = precision_score(y_test > pred4, y_test > pred4.round())\n",
- "confusion4 = confusion_matrix(y_test > pred4, y_test > pred4.round())\n",
- "recall4 = recall_score(y_test > pred4, y_test > pred4.round())\n",
- "f14 = f1_score(y_test > pred4, y_test > pred4.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 57,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "qpnLeFyZhwB3",
- "outputId": "4dcac062-ec60-4b2c-ab4b-dcda1b0f2341"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 2.733930065274145\n",
- "MAE: 1.502457380471909\n",
- "MAPE: 0.010026410639661481\n",
- "Accuracy: 0.8840989399293286\n",
- "Precision: 0.8948106591865358\n",
- "Confusion Matrix:\n",
- " [[613 75]\n",
- " [ 89 638]]\n",
- "Recall: 0.8775790921595599\n",
- "F1 Score: 0.8861111111111112\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse4)\n",
- "print(\"MAE:\", mae4)\n",
- "print(\"MAPE:\", mape4)\n",
- "print(\"Accuracy:\", accuracy4)\n",
- "print(\"Precision:\", precision4)\n",
- "print(\"Confusion Matrix:\\n\", confusion4)\n",
- "print(\"Recall:\", recall4)\n",
- "print(\"F1 Score:\", f14)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "d8nSGoyuh9dx"
- },
- "source": [
- "## 5. Extreme Gradient Boosting (XGBoost)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 58,
- "metadata": {
- "id": "DyhhdlZAhx94"
- },
- "outputs": [],
- "source": [
- "import xgboost as xgb\n",
- "# Create an XGBoost model\n",
- "model5 = xgb.XGBRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 59,
- "metadata": {
- "id": "Z_AD0lVOVHwB"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 248
- },
- "id": "RAIwxIp5iH9Z",
- "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...)"
- ],
- "text/html": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) "
- ]
- },
- "metadata": {},
- "execution_count": 60
- }
- ],
- "source": [
- "# Train the model\n",
- "model5.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 61,
- "metadata": {
- "id": "XmJds5fYiKT3"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred5 = model5.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 62,
- "metadata": {
- "id": "lZ1A0-L8iNCM"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse5 = np.sqrt(mean_squared_error(y_test, pred5))\n",
- "mae5 = mean_absolute_error(y_test, pred5)\n",
- "mape5 = mean_absolute_percentage_error(y_test, pred5)\n",
- "accuracy5 = accuracy_score(y_test > pred5, y_test > pred5.round())\n",
- "precision5 = precision_score(y_test > pred5, y_test > pred5.round())\n",
- "confusion5 = confusion_matrix(y_test > pred5, y_test > pred5.round())\n",
- "recall5 = recall_score(y_test > pred5, y_test > pred5.round())\n",
- "f15 = f1_score(y_test > pred5, y_test > pred5.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 63,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "7IkE-RAmiWNo",
- "outputId": "cf4c1d84-412b-4a18-f70c-65ce637772ea"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 2.733930065274145\n",
- "MAE: 1.502457380471909\n",
- "MAPE: 0.010026410639661481\n",
- "Accuracy: 0.8840989399293286\n",
- "Precision: 0.8948106591865358\n",
- "Confusion Matrix:\n",
- " [[613 75]\n",
- " [ 89 638]]\n",
- "Recall: 0.8775790921595599\n",
- "F1 Score: 0.8861111111111112\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse5)\n",
- "print(\"MAE:\", mae5)\n",
- "print(\"MAPE:\", mape5)\n",
- "print(\"Accuracy:\", accuracy5)\n",
- "print(\"Precision:\", precision5)\n",
- "print(\"Confusion Matrix:\\n\", confusion5)\n",
- "print(\"Recall:\", recall5)\n",
- "print(\"F1 Score:\", f15)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "A_J776rtiovq"
- },
- "source": [
- "## 6. AdaBoostRegressor"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "id": "HNq66cXRiYPJ"
- },
- "outputs": [],
- "source": [
- "from sklearn.ensemble import AdaBoostRegressor\n",
- "# Create an AdaBoost model\n",
- "model6 = AdaBoostRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 65,
- "metadata": {
- "id": "qPHH6rG0VW4V"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 66,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "P0oB5wjQivBr",
- "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "AdaBoostRegressor()"
- ],
- "text/html": [
- "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 66
- }
- ],
- "source": [
- "# Train the model\n",
- "model6.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "metadata": {
- "id": "Bf1m5ukOi2VM"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred6 = model6.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 68,
- "metadata": {
- "id": "oFWSqC4ai6gd"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse6 = np.sqrt(mean_squared_error(y_test, pred6))\n",
- "mae6 = mean_absolute_error(y_test, pred6)\n",
- "mape6 = mean_absolute_percentage_error(y_test, pred6)\n",
- "accuracy6 = accuracy_score(y_test > pred6, y_test > pred6.round())\n",
- "precision6 = precision_score(y_test > pred6, y_test > pred6.round())\n",
- "confusion6 = confusion_matrix(y_test > pred6, y_test > pred6.round())\n",
- "recall6 = recall_score(y_test > pred6, y_test > pred6.round())\n",
- "f16 = f1_score(y_test > pred6, y_test > pred6.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 69,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "BsajWJGBjC80",
- "outputId": "1af1194f-9a33-40af-8578-c99832509c1b"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 9.283285018137352\n",
- "MAE: 7.574989783595977\n",
- "MAPE: 0.16829256716397573\n",
- "Accuracy: 0.9901060070671378\n",
- "Precision: 0.9900990099009901\n",
- "Confusion Matrix:\n",
- " [[901 5]\n",
- " [ 9 500]]\n",
- "Recall: 0.9823182711198428\n",
- "F1 Score: 0.9861932938856016\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse6)\n",
- "print(\"MAE:\", mae6)\n",
- "print(\"MAPE:\", mape6)\n",
- "print(\"Accuracy:\", accuracy6)\n",
- "print(\"Precision:\", precision6)\n",
- "print(\"Confusion Matrix:\\n\", confusion6)\n",
- "print(\"Recall:\", recall6)\n",
- "print(\"F1 Score:\", f16)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "Q9DzOt3CkWFX"
- },
- "source": [
- "## 7. Decision Tree"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 70,
- "metadata": {
- "id": "23DZ2biSjF9a"
- },
- "outputs": [],
- "source": [
- "from sklearn.tree import DecisionTreeRegressor\n",
- "# Create a Decision Tree model\n",
- "model7 = DecisionTreeRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 71,
- "metadata": {
- "id": "Ajo2RAVAVb7H"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 72,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "6mQEQf-ykc9F",
- "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "DecisionTreeRegressor()"
- ],
- "text/html": [
- "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 72
- }
- ],
- "source": [
- "# Train the model\n",
- "model7.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 73,
- "metadata": {
- "id": "BFJ9q_tvkgRC"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred7 = model7.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 74,
- "metadata": {
- "id": "9IxfYZbYkjv1"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse7 = np.sqrt(mean_squared_error(y_test, pred7))\n",
- "mae7 = mean_absolute_error(y_test, pred7)\n",
- "mape7 = mean_absolute_percentage_error(y_test, pred7)\n",
- "accuracy7 = accuracy_score(y_test > pred7, y_test > pred7.round())\n",
- "precision7 = precision_score(y_test > pred7, y_test > pred7.round())\n",
- "confusion7 = confusion_matrix(y_test > pred7, y_test > pred7.round())\n",
- "recall7 = recall_score(y_test > pred7, y_test > pred7.round())\n",
- "f17 = f1_score(y_test > pred7, y_test > pred7.round())\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 75,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "AnZXMYb8kooV",
- "outputId": "273fa9ed-d6f2-4c4d-fb0e-a643f5ef5732"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 3.193539964582351\n",
- "MAE: 1.6240937361593886\n",
- "MAPE: 0.010136361140005275\n",
- "Accuracy: 0.8579505300353357\n",
- "Precision: 0.8700410396716827\n",
- "Confusion Matrix:\n",
- " [[578 95]\n",
- " [106 636]]\n",
- "Recall: 0.8571428571428571\n",
- "F1 Score: 0.8635437881873728\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse7)\n",
- "print(\"MAE:\", mae7)\n",
- "print(\"MAPE:\", mape7)\n",
- "print(\"Accuracy:\", accuracy7)\n",
- "print(\"Precision:\", precision7)\n",
- "print(\"Confusion Matrix:\\n\", confusion7)\n",
- "print(\"Recall:\", recall7)\n",
- "print(\"F1 Score:\", f17)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "LH-B-Xd6k5UD"
- },
- "source": [
- "## 8. KNeighborsRegressor(KNN)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 76,
- "metadata": {
- "id": "JVDSed7yktFY"
- },
- "outputs": [],
- "source": [
- "from sklearn.neighbors import KNeighborsRegressor\n",
- "# Create a KNN model\n",
- "model8 = KNeighborsRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 77,
- "metadata": {
- "id": "XJHb5SxrVgVp"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 78,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "9fn64o-ZlBka",
- "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- "KNeighborsRegressor()"
- ],
- "text/html": [
- "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ]
- },
- "metadata": {},
- "execution_count": 78
- }
- ],
- "source": [
- "# Train the model\n",
- "model8.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "metadata": {
- "id": "hbfbbjcSlDn7"
- },
- "outputs": [],
- "source": [
- "# Make predictions on the test set\n",
- "pred8 = model8.predict(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 80,
- "metadata": {
- "id": "hnWyNv3blHdL"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse8 = np.sqrt(mean_squared_error(y_test, pred8))\n",
- "mae8 = mean_absolute_error(y_test, pred8)\n",
- "mape8 = mean_absolute_percentage_error(y_test, pred8)\n",
- "accuracy8 = accuracy_score(y_test > pred8, y_test > pred8.round())\n",
- "precision8 = precision_score(y_test > pred8, y_test > pred8.round())\n",
- "confusion8 = confusion_matrix(y_test > pred8, y_test > pred8.round())\n",
- "recall8 = recall_score(y_test > pred8, y_test > pred8.round())\n",
- "f18 = f1_score(y_test > pred8, y_test > pred8.round())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 81,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "IPoDRkcMlMAr",
- "outputId": "9892f42f-e65f-46c0-eeed-77ce32f6a7eb"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 148.73183825029315\n",
- "MAE: 109.35229571264969\n",
- "MAPE: 1.75024316976612\n",
- "Accuracy: 0.9908127208480565\n",
- "Precision: 0.9887820512820513\n",
- "Confusion Matrix:\n",
- " [[785 7]\n",
- " [ 6 617]]\n",
- "Recall: 0.9903691813804173\n",
- "F1 Score: 0.9895749799518845\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse8)\n",
- "print(\"MAE:\", mae8)\n",
- "print(\"MAPE:\", mape8)\n",
- "print(\"Accuracy:\", accuracy8)\n",
- "print(\"Precision:\", precision8)\n",
- "print(\"Confusion Matrix:\\n\", confusion8)\n",
- "print(\"Recall:\", recall8)\n",
- "print(\"F1 Score:\", f18)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "X5XtlzMXljps"
- },
- "source": [
- "## 9. Artificial Neural Networks (ANN)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 82,
- "metadata": {
- "id": "bJk1-9VhlRL6"
- },
- "outputs": [],
- "source": [
- "from sklearn.preprocessing import MinMaxScaler\n",
- "from tensorflow.keras.models import Sequential\n",
- "from tensorflow.keras.layers import Dense"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 83,
- "metadata": {
- "id": "sZVPMR9Wlo7-"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 84,
- "metadata": {
- "id": "vd1fDjQiltP4"
- },
- "outputs": [],
- "source": [
- "# Create an ANN model\n",
- "model9 = Sequential()\n",
- "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
- "model9.add(Dense(16, activation='relu'))\n",
- "model9.add(Dense(1, activation='linear'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 85,
- "metadata": {
- "id": "ZIf94WLMlv04"
- },
- "outputs": [],
- "source": [
- "# Compile the model\n",
- "model9.compile(loss='mean_squared_error', optimizer='adam')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "FX5DTKqslxWf",
- "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "execution_count": 86
- }
- ],
- "source": [
- "# Train the model\n",
- "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 87,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "OVW2qpNsmGVq",
- "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "45/45 [==============================] - 0s 1ms/step\n"
- ]
- }
- ],
- "source": [
- "# Make predictions on the test set\n",
- "pred9 = model9.predict(X_test_scaled).flatten()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 88,
- "metadata": {
- "id": "CqRmjMj2maJY"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse9 = np.sqrt(mean_squared_error(y_test, pred9))\n",
- "mae9 = mean_absolute_error(y_test, pred9)\n",
- "mape9 = mean_absolute_percentage_error(y_test, pred9)\n",
- "accuracy9 = accuracy_score(y_test > pred9, y_test > pred9.round())\n",
- "precision9 = precision_score(y_test > pred9, y_test > pred9.round())\n",
- "confusion9 = confusion_matrix(y_test > pred9, y_test > pred9.round())\n",
- "recall9 = recall_score(y_test > pred9, y_test > pred9.round())\n",
- "f19 = f1_score(y_test > pred9, y_test > pred9.round())\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 89,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "5zuwkC1emmh3",
- "outputId": "5d6a0e05-3112-4d27-f5fb-ed665867b22d"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 2.7570259701356035\n",
- "MAE: 1.7412277270507284\n",
- "MAPE: 0.012205298865408084\n",
- "Accuracy: 0.8904593639575972\n",
- "Precision: 0.8242753623188406\n",
- "Confusion Matrix:\n",
- " [[805 97]\n",
- " [ 58 455]]\n",
- "Recall: 0.8869395711500975\n",
- "F1 Score: 0.8544600938967135\n"
- ]
- }
- ],
- "source": [
- "# Print the evaluation metrics\n",
- "print(\"RMSE:\", rmse9)\n",
- "print(\"MAE:\", mae9)\n",
- "print(\"MAPE:\", mape9)\n",
- "print(\"Accuracy:\", accuracy9)\n",
- "print(\"Precision:\", precision9)\n",
- "print(\"Confusion Matrix:\\n\", confusion9)\n",
- "print(\"Recall:\", recall9)\n",
- "print(\"F1 Score:\", f19)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "vjSMQNcOnFPJ"
- },
- "source": [
- "## 10. LSTM(Long Short term Memory)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 90,
- "metadata": {
- "id": "nCoyUanhnDKw"
- },
- "outputs": [],
- "source": [
- "from sklearn.preprocessing import MinMaxScaler\n",
- "from tensorflow.keras.models import Sequential\n",
- "from tensorflow.keras.layers import LSTM, Dense"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 91,
- "metadata": {
- "id": "ThcXESVEVv0U"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 92,
- "metadata": {
- "id": "uACvajfImrbB"
- },
- "outputs": [],
- "source": [
- "# Reshape the input data for LSTM\n",
- "n_features = X_train_scaled.shape[1]\n",
- "n_steps = 10\n",
- "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
- "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
- "\n",
- "# Reshape the input data\n",
- "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
- "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 93,
- "metadata": {
- "id": "r066pVYpnXH5"
- },
- "outputs": [],
- "source": [
- "# Create an LSTM model\n",
- "model = Sequential()\n",
- "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
- "model.add(Dense(1))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 94,
- "metadata": {
- "id": "YpSfHu6gov35"
- },
- "outputs": [],
- "source": [
- "# Compile the model\n",
- "model.compile(loss='mean_squared_error', optimizer='adam')\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 95,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "0vHjcluaoxzP",
- "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
- },
- "outputs": [
- {
- "output_type": "execute_result",
- "data": {
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "execution_count": 95
- }
- ],
- "source": [
- "# Train the model\n",
- "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 96,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "gEE06_TjozYv",
- "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "44/44 [==============================] - 0s 4ms/step\n"
- ]
- }
- ],
- "source": [
- "# Make predictions on the test set\n",
- "y_pred = model.predict(X_test_reshaped).flatten()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 113,
- "metadata": {
- "id": "7k6C8DrxpB_Q"
- },
- "outputs": [],
- "source": [
- "# Calculate evaluation metrics\n",
- "rmse10 = np.sqrt(mean_squared_error(y_test[n_steps-1:], y_pred))\n",
- "mae10 = mean_absolute_error(y_test[n_steps-1:], y_pred)\n",
- "mape10 = mean_absolute_percentage_error(y_test[n_steps-1:], y_pred)\n",
- "accuracy10 = accuracy_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
- "precision10 = precision_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
- "recall10 = recall_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
- "f110 = f1_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
- "confusion10 = confusion_matrix(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 114,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "i_6-UUDhpi0c",
- "outputId": "3dcc5761-03b6-4b52-dfe6-08dece835c8d"
- },
- "outputs": [
- {
- "output_type": "stream",
- "name": "stdout",
- "text": [
- "RMSE: 10.083053125286519\n",
- "MAE: 7.973378150691296\n",
- "MAPE: 0.12730792351246625\n",
- "Accuracy: 0.9886201991465149\n",
- "Precision: 0.9904912836767037\n",
- "Recall: 0.984251968503937\n",
- "F1 Score: 0.9873617693522907\n",
- "Confusion Matrix:\n",
- " [[765 6]\n",
- " [ 10 625]]\n"
- ]
- }
- ],
- "source": [
- "# Print evaluation metrics\n",
- "print(\"RMSE:\", rmse10)\n",
- "print(\"MAE:\", mae10)\n",
- "print(\"MAPE:\", mape10)\n",
- "print(\"Accuracy:\", accuracy10)\n",
- "print(\"Precision:\", precision10)\n",
- "print(\"Recall:\", recall10)\n",
- "print(\"F1 Score:\", f110)\n",
- "print(\"Confusion Matrix:\\n\", confusion10)"
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of accuracies from accuracy1 to accuracy10\n",
- "accuracies = [accuracy1*100, accuracy2*100, accuracy3*100, accuracy4*100, accuracy5*100, accuracy6*100, accuracy7*100, accuracy8*100, accuracy9*100, accuracy10*100]\n",
- "\n",
- "# List of corresponding labels for each accuracy\n",
- "labels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, accuracies, color='blue')\n",
- "plt.xlabel('Accuracy Variables')\n",
- "plt.ylabel('Accuracy Values')\n",
- "plt.title('Bar Graph of Accuracies')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "qpWPtph9CGip",
- "outputId": "c099cb8d-96af-4223-f499-743040aecdf1"
- },
- "execution_count": 117,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "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PVo9evTQihUrtGbNGk2cOFExMTFat26dWrRoUawcQFFQdoBS9vvvv0v6vxmXpUuXysPDQ2vWrLG5p0lsbGyx9tOxY0f5+voqPj5eEyZMyPfhaC97c16bCfijgwcPqlKlSqpRo0axskhSSEiIJOnAgQP5ZhsOHDhgXW6vuLg4+fv76/3338+3bNmyZVq+fLlmz54tT09P1atXT/v27bvh9urVq6ctW7boypUrqlixYoHrXJvJ+vNdna/NXhXG3r17dfDgQc2fP1+DBw+2jl+bxbumbt26knTT3H927URqf3//Qt2rqF69enrmmWf0zDPP6NChQ2revLnefvttffrpp3btF3AEztkBStGVK1e0du1aubm5qVGjRpKuzmpYLBabv+KPHTumFStWFGtflSpV0rPPPqt9+/Zp/PjxBc6S2DNzYm/OzZs325zLc/LkSX3xxRe69957HXL/ltatW8vf31+zZ8+2OaT2zTffaP/+/fmuDiuMixcvatmyZXrggQf00EMP5XtER0crMzNTK1eulHT1qqPdu3dr+fLl+bZ17b3t27evzp49q/fee++664SEhMjV1TXfpfkffPBBobNfe0//+Ds1DEPvvvuuzXo1atTQnXfeqblz5+rEiRMF5ilI165d5ePjo9dff11XrlzJt/zMmTOSrt7y4NKlSzbL6tWrJ29vb5vfE1CamNkBStA333yjn376SdLVG9stXLhQhw4d0vjx463nOHTv3l3Tp0/Xfffdp7///e9KTU3V+++/r/r162vPnj3F2v/48eO1f/9+vfnmm1q7dq369u2rmjVr6vz589q5c6eWLFkif3//Qt0w0N6cTZo0UdeuXW0uPZekKVOmFOtnuqZixYqaOnWqhg0bprvuuksDBw60Xnpep04djRkzxu5trly5UpmZmXrwwQcLXN62bVvVqFFDcXFx6t+/v/75z3/q888/V79+/TR8+HC1atVK586d08qVKzV79mw1a9ZMgwcP1ieffKKxY8dq69at6tixo7Kzs/Xtt99q5MiR6tmzp3x9fdWvXz/NnDlTFotF9erV06pVq6w3QyyMsLAw1atXT+PGjdOpU6fk4+OjpUuXFniS8IwZM9ShQwe1bNlSI0aMUGhoqI4dO6avvvpKSUlJBW7fx8dHs2bN0qOPPqqWLVtqwIABqlGjhk6cOKGvvvpKd9xxh9577z0d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l51NmzapW7du+cbvv/9+bdq0ySGh/iwqKkrdu3dXRESEzfiOHTt05coVm/GwsDDVrl1bmzdvvu72cnJylJGRYfMAAADmZPdhrKysrALPzalYsWKJlIb4+Hjt3LlT27Zty7csOTlZbm5u8vPzsxkPCAhQcnLydbcZExOjKVOmODoqAAAog+ye2WnatKkWL16cbzw+Pl633XabQ0Jdc/LkSY0aNUpxcXHy8PBw2HYnTJig9PR06+PkyZMO2zYAAChb7J7ZmThxovr06aMjR47onnvukSQlJiZq0aJFBX5nVnHs2LFDqampatmypXUsNzdXmzZt0nvvvac1a9bo8uXLSktLs5ndSUlJUWBg4HW36+7uLnd3d4dmBQAAZZPdZadHjx5asWKFXn/9dX3++efy9PTU7bffrm+//VZ33XWXQ8N17txZe/futRkbNmyYwsLC9Nxzz6lWrVqqWLGiEhMT1bdvX0nSgQMHdOLECbVr186hWQAAQPlUpEvPu3fvru7du+cb37dvn5o0aVLsUNd4e3vn256Xl5eqVatmHY+MjNTYsWNVtWpV+fj46KmnnlK7du3Utm1bh+UAAADlV5Hvs3NNZmamFi1apI8//lg7duxQbm6uI3IV2r/+9S+5uLiob9++ysnJUdeuXfXBBx+UagYAAFB2WQzDMIrywk2bNunjjz/WsmXLFBwcrD59+qhv375q06aNozOWuIyMDPn6+io9PV0+Pj4O3bbF4tDNOURhfuPkdhxyly5yly5yly4z5y6Kwn5+2zWzk5ycrHnz5mnOnDnKyMjQww8/rJycHK1YscLhV2IBAAA4QqEvPe/Ro4caNmyoPXv26J133tGvv/6qmTNnlmQ2AACAYiv0zM4333yjp59+Wk8++WSpficWAABAcRR6Zue7775TZmamWrVqpfDwcL333ns6e/ZsSWYDAAAotkKXnbZt2+qjjz7S6dOn9cQTTyg+Pl7BwcHKy8tTQkKCMjMzSzInAABAkRT5aizp6g385syZowULFigtLU1dunTRypUrHZmvVHA1Vn7kdhxyly5yly5yly4z5y6Kwn5+2/3dWH/UsGFDTZs2Tb/88osWLVpUnE0BAACUiGLN7JgFMzv5kdtxyF26yF26yF26zJy7KEplZgcAAKCso+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTK9NlJyYmRm3atJG3t7f8/f3Vq1cvHThwwGadS5cuKSoqStWqVVPlypXVt29fpaSkOCkxAAAoa8p02dm4caOioqL0v//9TwkJCbpy5YruvfdeZWdnW9cZM2aMvvzySy1ZskQbN27Ur7/+qj59+jgxNQAAKEsshmEYzg5RWGfOnJG/v782btyoO++8U+np6apRo4YWLlyohx56SJL0008/qVGjRtq8ebPatm1bqO1mZGTI19dX6enp8vHxcWhmi8Whm3OIwvzGye045C5d5C5d5C5dZs5dFIX9/C7TMzt/lp6eLkmqWrWqJGnHjh26cuWKIiIirOuEhYWpdu3a2rx583W3k5OTo4yMDJsHAAAwp3JTdvLy8jR69GjdcccdatKkiSQpOTlZbm5u8vPzs1k3ICBAycnJ191WTEyMfH19rY9atWqVZHQAAOBE5absREVFad++fYqPjy/2tiZMmKD09HTr4+TJkw5ICAAAyqIKzg5QGNHR0Vq1apU2bdqkmjVrWscDAwN1+fJlpaWl2czupKSkKDAw8Lrbc3d3l7u7e0lGBgAAZUSZntkxDEPR0dFavny51q1bp9DQUJvlrVq1UsWKFZWYmGgdO3DggE6cOKF27dqVdlwAAFAGlemZnaioKC1cuFBffPGFvL29refh+Pr6ytPTU76+voqMjNTYsWNVtWpV+fj46KmnnlK7du0KfSUWAAAwtzJddmbNmiVJuvvuu23GY2NjNXToUEnSv/71L7m4uKhv377KyclR165d9cEHH5RyUgAAUFaVq/vslBTus5MfuR2H3KWL3KWL3KXLzLmLwpT32QEAALAXZQcAAJgaZQcAAJgaZQcA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V65cybeel5dXvrEePXro3Llz+uijj7RlyxZt2bJF0v+dwHyzfbu5uWnw4MGKjY3V5cuXtXDhQg0fPvymeYcOHar58+crLy9PsbGx6tSpk+rWrStJGjdunJYvX67XX39d//nPf5SUlKSmTZvmO4+moJ/nj+Lj4zVu3DhFRkZq7dq1SkpK0rBhw4p1cnZWVpZcXV21Y8cOJSUlWR/79++3ng/02GOP6eeff9ajjz6qvXv3qnXr1po5c2aR9wmYAWUHMLHff/9dn3zyid5++22bD8fdu3crODhYixYtkiTdfvvtSkxMLHAbTZs2VV5enjZu3Fjg8ho1aigzM1PZ2dnWscLca+a3337TgQMH9OKLL6pz585q1KiRzp8/b7PO7bffrqSkJJ07d+6623nsscf07bff6oMPPtDvv/+uPn363HTfw4YN08mTJ7Vs2TItX75ckZGR1mXff/+9hg4dqt69e6tp06YKDAzUsWPHbrrNP/v+++/Vvn17jRw5Ui1atFD9+vXznXwtSbt377a5Oux///ufKleurFq1auVbt0WLFsrNzVVqaqrq169v8wgMDLSuV6tWLf3jH//QsmXL9Mwzz+ijjz6yOz9gJpQdwMRWrVql8+fPKzIyUk2aNLF59O3b13ooa/LkyVq0aJEmT56s/fv3W09sla5eeTRkyBANHz5cK1assF65dO1E2/DwcFWqVEnPP/+8jhw5ooULFxZ4tdefValSRdWqVdOHH36ow4cPa926dRo7dqzNOgMHDlRgYKB69eql77//Xj///LOWLl2qzZs3W9dp1KiR2rZtq+eee04DBw686WyQJIWGhuqee+7RiBEj5O7ublOQGjRoYD2Jevfu3fr73/9e4JVdN9OgQQNt375da9as0cGDBzVx4kRt27Yt33qXL19WZGSkfvzxR3399deaPHmyoqOjCzzB+tZbb9WgQYM0ePBgLVu2TEePHtXWrVsVExOjr776SpI0evRorVmzRkePHtXOnTu1fv16NWrUyO78gJlQdgATmzNnjiIiIuTr65tvWd++fbV9+3bt2bNHd999t5YsWaKVK1eqefPmuueee7R161brurNmzdJDDz2kkSNHKiwsTI8//rh1Jqdq1ar69NNP9fXXX6tp06ZatGiRXnrppZtmc3FxUXx8vHbs2KEmTZpozJgxevPNN23WcXNz09q1a+Xv769u3bqpadOmeuONN+Tq6mqzXmRkpC5fvnzTQ1h/fs358+f197//3XopvCRNnz5dVapUUfv27dWjRw917dpVLVu2LPR2r3niiSfUp08f9e/fX+Hh4frtt980cuTIfOt17txZDRo00J133qn+/fvrwQcfvOH7Fxsbq8GDB+uZZ55Rw4YN1atXL23btk21a9eWdPWS96ioKDVq1Ej33Xefbr31Vn3wwQd25wfMxGL8+WA7AJQzr7zyipYsWcLJuAAKxMwOgHIrKytL+/bt03vvvaennnrK2XEAlFGUHQDlVnR0tFq1aqW7777brkNYAP5aOIwFAABMjZkdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgav8PriEMHNJ5QJIAAAAASUVORK5CYII=\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of RMSE values from rmse1 to rmse10\n",
- "rmse_values = [rmse1, rmse2, rmse3, rmse4, rmse5, rmse6, rmse7, rmse8, rmse9, rmse10]\n",
- "\n",
- "# List of corresponding labels for each RMSE value\n",
- "labels = ['RMSE1', 'RMSE2', 'RMSE3', 'RMSE4', 'RMSE5', 'RMSE6', 'RMSE7', 'RMSE8', 'RMSE9', 'RMSE10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, rmse_values, color='green')\n",
- "plt.xlabel('RMSE Variables')\n",
- "plt.ylabel('RMSE Values')\n",
- "plt.title('Bar Graph of RMSE')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "RFaaCNH6Cfoa",
- "outputId": "67a8f358-e3ce-4ad2-9c78-ebc75902beb4"
- },
- "execution_count": 118,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABB/klEQVR4nO3de1xUdeL/8fcAMpAKiMbNQEnNe0qSrmV5o7xlWl5WJReRdCut1O1meSnblbSLlpm6rYm6mq6mZn2V8msataIppptmZnkjE7QUEA3k8vn90c/5OoEGOshw9vV8PM5jdz7nM+e8B8l5e+acOTZjjBEAAIBFeVR2AAAAgIpE2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QFgOc8//7xsNpt++umnCt9XcnKyWrduLR8fH9lsNmVlZVX4PgGUD2UHqEKSkpJks9mclqCgIHXu3Fnr16+/5nk++OAD9e7dW8HBwfL29lZgYKDuvPNOvfrqq8rJybnmea61n3/+WQMHDpSvr69mz56txYsXq3r16qXO/e2fnZeXl+rWrathw4bp2LFjJeZ36tRJNptNjRo1KnV7GzZscGxr5cqVTuu++uor9e/fX/Xq1ZOPj4/q1q2ru+66S7NmzXKaV79+/RK/TxeW7t27X+FPBXA/XpUdAED5TZkyRZGRkTLGKDMzU0lJSerZs6c++OAD3XPPPRW+/+LiYiUkJCgpKUktW7bUI488ovDwcJ05c0apqamaMGGC1q1bp40bN1Z4lsq0fft2nTlzRi+++KJiYmLK9JwLf3Z5eXnaunWrkpKS9Pnnn2vPnj3y8fFxmuvj46PvvvtOX3zxhdq2beu0bsmSJfLx8VFeXp7T+JYtW9S5c2dFRERoxIgRCgkJUXp6urZu3arXX39djz76qNP81q1b6y9/+UuJnGFhYWV6PUBVQNkBqqAePXooOjra8TghIUHBwcF69913XVJ2iouLdf78+RJvvhdMnz5dSUlJGjt2rF599VXZbDbHuscff1zHjx/XokWLrmofVcGJEyckSQEBAWV+zsV/dg8++KDq1KmjadOmae3atRo4cKDT3AYNGqiwsFDvvvuuU9nJy8vT6tWr1atXL7333ntOz/nb3/4mf39/bd++vUSuC3kvVrduXT3wwANlzg9URXyMBVhAQECAfH195eXl/O+XV155Rbfddptq164tX19ftWnTpsRHHpJks9k0evRoLVmyRM2bN5fdbldycnKp+zp37pymTZum5s2b6+WXX3YqOheEhobq6aefLvM+riRn48aN5ePjozZt2iglJaXUrFlZWRo2bJgCAgLk7++v+Ph4nTt3rvQf4m+sWLFCbdq0ka+vr+rUqaMHHnjA6eOmTp06KS4uTpJ06623ymazadiwYWXa9sXuuOMOSdL3339f6vrBgwdr+fLlKi4udox98MEHOnfuXIlydGE7zZs3L7WABQUFlTsfYAWUHaAKys7O1k8//aSTJ09q7969evjhh5Wbm1viX+ivv/66oqKiNGXKFE2dOlVeXl4aMGCA/ud//qfENj/55BONHTtWf/zjH/X666+rfv36pe77888/V1ZWlgYPHixPT89y5b7UPsqT89NPP9WYMWP0wAMPaMqUKfr555/VvXt37dmzp8TcgQMH6syZM0pMTNTAgQOVlJSkF1544XdzJiUlaeDAgfL09FRiYqJGjBihVatWqUOHDo4TkJ977jmNHDlS0q8fTS1evFh//vOfy/XzkKTDhw9LkmrVqlXq+iFDhuj48ePavHmzY2zp0qXq2rVrqeWlXr16SktLK/XnUZqCggL99NNPJZZffvml3K8FcFsGQJWxYMECI6nEYrfbTVJSUon5586dc3p8/vx506JFC9OlSxencUnGw8PD7N2793czvP7660aSWbNmjdN4YWGhOXnypNNSXFxcpn2UJ6cks2PHDsfYkSNHjI+Pj7nvvvscY5MnTzaSzPDhw52ef99995natWtf9vWdP3/eBAUFmRYtWphffvnFMf7hhx8aSWbSpEmOsQt/Htu3b7/sNi+e+7//+7/m5MmTJj093axcudJcf/31xm63m/T0dKf5HTt2NM2bNzfGGBMdHW0SEhKMMcacPn3aeHt7m4ULF5pNmzYZSWbFihWO53388cfG09PTeHp6mvbt25unnnrKfPTRR+b8+fMlMtWrV6/U3ydJJjEx8XdfE1BVcGQHqIJmz56tDRs2aMOGDfrnP/+pzp0768EHH9SqVauc5vn6+jr+/+nTp5Wdna077rhDO3fuLLHNjh07qlmzZr+77wtXWdWoUcNp/KuvvtL111/vtPz8889l2kd5crZv315t2rRxPI6IiFCfPn300UcfqaioyGnuQw895PT4jjvu0M8//3zZK8V27NihEydO6JFHHnE6n6hXr15q0qRJqUebyiMmJkbXX3+9wsPD1b9/f1WvXl1r167VDTfccMnnDBkyRKtWrdL58+e1cuVKeXp66r777it17l133aXU1FTde++92r17t6ZPn65u3bqpbt26Wrt2bYn57dq1c/wuXbwMHjz4ql4n4E44QRmogtq2bet0gvLgwYMVFRWl0aNH65577pG3t7ck6cMPP9Rf//pX7dq1S/n5+Y75pZ1nExkZWaZ916xZU5KUm5vrNN6wYUNt2LBBkrRo0SItXry4zPsoT87SLsW+6aabdO7cOZ08eVIhISGO8YiICKd5Fz4qOn36tPz8/ErNcuTIEUlS48aNS6xr0qSJPv/881KfV1azZ8/WTTfdpOzsbL3zzjtKSUmR3W6/7HMGDRqkJ554QuvXr9eSJUt0zz33OP4cSnPrrbc6ytHu3bu1evVqzZgxQ/3799euXbucCmedOnXKfCUZUFVxZAewAA8PD3Xu3FnHjx/XgQMHJEmfffaZ7r33Xvn4+Oitt97SunXrtGHDBg0ZMkTGmBLbuPjoyuU0adJEkkqcE1KjRg3FxMQoJiZGN954Y6nPLW0f5c1ZHpc6p+hqt3s12rZtq5iYGPXr109r165VixYtNGTIkBLl8WKhoaHq1KmTXn31VaWkpGjIkCFl2pe3t7duvfVWTZ06VXPmzFFBQYFWrFjhqpcCVBmUHcAiCgsLJf3fEZf33ntPPj4++uijjzR8+HD16NHDJf+Cv+OOO+Tv769ly5Y5XSF0pcqb80KZu9i3336r6667Ttdff/1V56lXr54kaf/+/SXW7d+/37HeFS6cAP3jjz/qzTffvOzcIUOG6LPPPpOfn5969uxZ7n1dOBJ4/PjxK8oKVGWUHcACCgoK9PHHH8vb21tNmzaV9Osbqc1mczqP5fDhw1qzZs1V7eu6667TU089pT179uiZZ54p9ShJeY6clDdnamqq07k86enpev/993X33XeX++qw0kRHRysoKEhz5851+kht/fr12rdvn3r16nXV+7hYp06d1LZtW82cObPEFwRerH///po8ebLeeustx8eUpdm0aVOpP/9169ZJKv3jOcDqOGcHqILWr1+vb775RtKvXxS3dOlSHThwQM8884zjXJRevXrptddeU/fu3TVkyBCdOHFCs2fP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hSoqKpLdbneMZWZmau7cuTp79qzuvfdedejQoUJCAgAAXKkyl50RI0bI29tb8+bNkySdOXNGt956q/Ly8hQaGqoZM2bo/fffV8+ePSssLAAAQHmV+dLzf//73+rXr5/j8aJFi1RUVKQDBw5o9+7dGjdunF5++eUKCQkAAHClylx2jh07pkaNGjkeb9y4Uf369ZO/v78kKS4uTnv37nV9QgAAgKtQ5rLj4+OjX375xfF469atateundP63Nxc16YDAAC4SmUuO61bt9bixYslSZ999pkyMzPVpUsXx/rvv/9eYWFhrk8IAABwFcp8gvKkSZPUo0cP/etf/9Lx48c1bNgwhYaGOtavXr1at99+e4WEBAAAuFLl+p6dtLQ0ffzxxwoJCdGAAQOc1rdu3Vpt27Z1eUAAAICrUeayI0lNmzZV06ZNS103cuRIlwQCAABwpTKXnZSUlDLNu/POO684DAAAgKuVuex06tTJcaNPY0ypc2w2m4qKilyTDAAAwAXKXHZq1aqlmjVratiwYRo6dKjq1KlTkbkAAABcosyXnh8/flzTpk1TamqqWrZsqYSEBG3ZskV+fn7y9/d3LAAAAO6kzGXH29tbf/zjH/XRRx/pm2++0c0336zRo0crPDxczz33nAoLCysyJwAAwBUpc9m5WEREhCZNmqT//d//1U033aSXXnpJOTk5rs4GAABw1cpddvLz87V06VLFxMSoRYsWqlOnjv7nf/5HgYGBFZEPAADgqpT5BOUvvvhCCxYs0LJly1S/fn3Fx8frX//6FyUHAAC4tTKXnT/84Q+KiIjQY489pjZt2kiSPv/88xLz7r33XtelAwAAuErl+gblo0eP6sUXX7zker5nBwAAuJsyl53i4uKKzAEAAFAhruhqrEv55ZdfXLk5AACAq+aSspOfn69XX31VkZGRrtgcAACAy5S57OTn52v8+PGKjo7WbbfdpjVr1kiSFixYoMjISM2cOVNjx451ecBjx47pgQceUO3ateXr66uWLVtqx44djvXGGE2aNEmhoaHy9fVVTEyMDhw44PIcAACgaipz2Zk0aZLmzJmj+vXr6/DhwxowYIBGjhypGTNm6LXXXtPhw4f19NNPuzTc6dOndfvtt6tatWpav369vv76a7366quqVauWY8706dP1xhtvaO7cudq2bZuqV6+ubt26KS8vz6VZAABA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+a3s7GxJUmBgoCQpLS1NBQUFiomJccxp0qSJIiIilJqaesnt5OfnKycnx2kBAADWVGXKTnFxscaMGaPbb79dLVq0kCRlZGTI29tbAQEBTnODg4OVkZFxyW0lJibK39/fsYSHh1dkdAAAUImqTNkZNWqU9uzZo2XLll31tsaPH6/s7GzHkp6e7oKEAADAHbn1OTsXjB49Wh9++KFSUlJ0ww03OMZDQkJ0/vx5ZWVlOR3dyczMVEhIyCW3Z7fbZbfbKzIyAABwE259ZMcYo9GjR2v16tX65JNPFBkZ6bS+TZs2qlatmjZu3OgY279/v44ePar27dtf67gAAMANufWRnVGjRmnp0qV6//33VbNmTcd5OP7+/vL19ZW/v78SEhI0btw4BQYGys/PT48++qjat2/PlVgAAECSm5edOXPmSJI6derkNL5gwQINGzZMkjRjxgx5eHioX79+ys/PV7du3fTWW29d46QAAMBduXXZMcb87hwfHx/Nnj1bs2fPvgaJAABAVePW5+wAAABcLcoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNK/KDgAAAFzH9oKtsiOUYCabSt0/R3YAAIClcWQHwH8d/uUL/HfhyA4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA07noOAFUEd2sHrgxlB3ADVfVNrKrmBsqC32/r4GMsAABgaZY5sjN79my9/PLLysjIUKtWrTRr1iy1bdu2smPhGuNfYgCA37JE2Vm+fLnGjRunuXPnql27dpo5c6a6deum/fv3KygoqFKz8eYLAEDlssTHWK+99ppGjBih+Ph4NWvWTHPnztV1112nd955p7KjAQCASlbly8758+eVlpammJgYx5iHh4diYmKUmppaickAAIA7qPIfY/30008qKipScHCw03hwcLC++eabUp+Tn5+v/Px8x+Ps7GxJUk5OjusD5rl+k1erTK+T3C5D7muL3NcWua8tS+e+iu0a8zunZ5gq7tixY0aS2bJli9P4k08+adq2bVvqcyZPnmwksbCwsLCw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qxwnJp89e1bdunWTn5+flixZou3bt2v16tWS5LgK7OLXfDlxcXHatWuXXn/9dW3ZskW7du1S7dq1S2ynPHJzc9W7d2+ncrdr1y4dOHBAd955pzw9PbVhwwatX79ezZo106xZs9S4cWMdOnToivcJ/Dei7AC4LA8PDz377LOaMGGC04nIFxs+fLg2b96sP/3pT/L09CzTdmvVqqXQ0NCrPtnWw8ND8fHxWrhwoZYuXSpvb2/1799fkvTNN9/o559/1ksvvaQ77rhDTZo0cTo5uTz+/e9/67HHHlPPnj3VvHlz2e12pxOJL/jtpfBbt25V06ZNS93mLbfcor1796p+/fpOBa9hw4aO8mWz2XT77bfrhRde0Jdffilvb29HYQNQNpQdAL9rwIAB8vT01OzZs0td3717d508eVJTpkwpdf28efP08MMP6+OPP9b333+vvXv36umnn9bevXvVu3dvp7knTpxQRkaG01JQUHDZfPHx8Tp27JieffZZDR482HGFV0REhLy9vTVr1iwdPHhQa9eu1YsvvngFPwGpUaNGWrx4sfbt26dt27YpNja2xJVkkrRixQq98847+vbbbzV58mR98cUXGj16dKnbHDVqlE6dOqXBgwdr+/bt+v777/XRRx8pPj5eRUVF2rZtm6ZOnaodO3bo6NGjWrVqlU6ePHnJ8gSgdJQdAL/Ly8tLo0eP1vTp00s9EmOz2VSnTp1Sr9iSpLZt2yo3N1cPPfSQmjdvro4dO2rr1q1as2aN4xyaCxo3bqzQ0FCnJS0t7bL5IiIiFBMTo9OnTzudM3T99dcrKSlJK1asULNmzfTSSy/plVdeuYKfgDR//nydPn1at9xyi4YOHarHHnus1O//eeGFF7Rs2TLdfPPNWrRokd599101a9as1G2GhYXp3//+t4qKinT33XerZcuWGjNmjAICAuTh4SE/Pz+lpKSoZ8+euummmzRhwgS9+uqrl/2oEEBJNmO4hhEAAFgXR3YAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAICl/T/eW9kFikhhAwAAAABJRU5ErkJggg==\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of MAE values from mae1 to mae10\n",
- "mae_values = [mae1, mae2, mae3, mae4, mae5, mae6, mae7, mae8, mae9, mae10]\n",
- "\n",
- "# List of corresponding labels for each MAE value\n",
- "labels = ['MAE1', 'MAE2', 'MAE3', 'MAE4', 'MAE5', 'MAE6', 'MAE7', 'MAE8', 'MAE9', 'MAE10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, mae_values, color='orange')\n",
- "plt.xlabel('MAE Variables')\n",
- "plt.ylabel('MAE Values')\n",
- "plt.title('Bar Graph of MAE')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "nrZu-K-KDCJ2",
- "outputId": "69165581-da05-4554-a464-a606eb87a734"
- },
- "execution_count": 119,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6NklEQVR4nO3deVRV9eL+8ecACogCOTCYqJSzlJqmoXlNozCH1JyHGwqpleZ0q6v3qmVZppU567VQ1ASHUktzyOg6hpqmpTknzoJDCqKJCvv3h1/Pr3MBZTjAYfd+rbXX6uzxOcTiPH72cCyGYRgCAAAwKafCDgAAAJCfKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsA/hLefvttWSwWXbx4Md+PtXbtWtWtW1dubm6yWCy6cuVKvh8TQNYoO0ARFxUVJYvFYjP5+PioefPmWrNmTYHnWblypdq2bStfX18VL15cpUuX1t/+9jd9/PHHSk5OLvA8Be3SpUvq0qWL3N3dNX36dC1YsEAeHh6Zrvvn/3dbtmzJsNwwDAUEBMhisahNmzaZ7uPKlSvWUnXgwIFM1+ndu3eG35G7k5ubW+7fLFBEuBR2AAD28c477ygwMFCGYSgxMVFRUVFq1aqVVq5cmeUHpT2lp6crIiJCUVFReuSRR/Tqq68qICBAV69eVVxcnEaOHKnVq1crNjY237MUph9//FFXr17Vu+++q5CQkGxt4+bmpujoaD355JM28zdu3KjTp0/L1dU1y22XLl0qi8UiPz8/LVy4UGPHjs10PVdXV3322WcZ5js7O2crI1CUUXYAk3juuefUoEED6+uIiAj5+voqJibGLmUnPT1dN2/ezHIkYMKECYqKitLQoUP18ccfy2KxWJcNHjxY586d0/z58/N0jKLg/PnzkiRvb+9sb9OqVSstXbpUU6ZMkYvL//+zHB0drfr169/z1Nvnn3+uVq1aqVKlSoqOjs6y7Li4uKhXr17ZzgSYCaexAJPy9vaWu7u7zYenJH300Udq3LixypQpI3d3d9WvX19ffPFFhu0tFosGDhyohQsXqnbt2nJ1ddXatWszPdb169c1fvx41a5dWx9++KFN0bnL399f//znP7N9jNzkrF69utzc3FS/fn1t2rQp06xXrlxR79695e3tLS8vL/Xp00fXr1/P/If4P5YuXar69evL3d1dZcuWVa9evXTmzBnr8qeeekphYWGSpMcff1wWi0W9e/e+7367d++uS5cuaf369dZ5N2/e1BdffKEePXpkud3Jkye1efNmdevWTd26dVN8fLx++OGHbL0X4K+EkR3AJJKSknTx4kUZhqHz589r6tSpSklJyfCv+cmTJ+v5559Xz549dfPmTS1atEidO3fWqlWr1Lp1a5t1v//+ey1ZskQDBw5U2bJlVbly5UyPvWXLFl25ckWvv/56jk+LZHWMnOTcuHGjFi9erEGDBsnV1VUzZsxQy5YttWPHDgUFBdms26VLFwUGBmrcuHH66aef9Nlnn8nHx0fjx4+/Z86oqCj16dNHjz/+uMaNG6fExERNnjxZW7du1e7du+Xt7a1///vfql69umbPnm09rfjwww/f92dQuXJlBQcHKyYmRs8995wkac2aNUpKSlK3bt00ZcqUTLeLiYmRh4eH2rRpI3d3dz388MNauHChGjdunOn6mY0QFS9eXJ6envfNCBRpBoAibe7cuYakDJOrq6sRFRWVYf3r16/bvL5586YRFBRktGjRwma+JMPJycn49ddf75th8uTJhiRjxYoVNvNv375tXLhwwWZKT0/P1jFyklOSsXPnTuu8EydOGG5ubkaHDh2s89566y1DkhEeHm6zfYcOHYwyZcrc8/3dvHnT8PHxMYKCgow//vjDOn/VqlWGJGP06NHWeXf/f/z444/33Of/rjtt2jSjVKlS1vfduXNno3nz5oZhGEalSpWM1q1bZ9j+kUceMXr27Gl9/a9//csoW7ascevWLZv1wsLCMv0dkWSEhobeNydQ1HEaCzCJ6dOna/369Vq/fr0+//xzNW/eXC+99JKWLVtms567u7v1vy9fvqykpCQ1bdpUP/30U4Z9NmvWTLVq1brvse/eZVWyZEmb+Xv37lW5cuVspkuXLmXrGDnJGRwcrPr161tfV6xYUe3atdO6deuUlpZms+7LL79s87pp06a6dOnSPe8U27lzp86fP69XX33V5nqi1q1bq0aNGvrmm2+y3Da7unTpoj/++EOrVq3S1atXtWrVqnuewvrll1+0d+9ede/e3Tqve/fuunjxotatW5dhfTc3N+vvx5+nDz74IM/ZAUfHaSzAJBo2bGhzgXL37t1Vr149DRw4UG3atFHx4sUlSatW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mTNVtWpVrVu3Tq+88ooGDRqkefPmSZISEhIkSb6+vjbb+fr6WpdlZty4cfLy8rJOAQEBds0NAAAcR46v2QkKCtLPP/+swMBANWrUSBMmTFDx4sU1e/ZsPfTQQ3YNl56ergYNGuj999+XJNWrV0/79u3TrFmzFBYWluv9jhgxQsOGDbO+Tk5OpvAAAGBSOR7ZGTlypNLT0yVJ77zzjuLj49W0aVOtXr1aU6ZMsWs4f39/1apVy2ZezZo1dfLkSUmSn5+fJCkxMdFmncTEROuyzLi6usrT09NmAgAA5pTtkZ0GDRropZdeUo8ePazloEqVKjp48KB+//33DN+Gbg9NmjTJcGrs8OHD1uf+BAYGys/PT7Gxsapbt66kO6M027dv1yuvvGLXLAAAoGjK9shOnTp19Oabb8rf318vvviizZ1XpUuXtnvRkaShQ4dq27Ztev/993X06FFFR0dr9uzZGjBggKQ7t7sPGTJEY8eO1ddff629e/fqxRdfVPny5dW+fXu75wEAAEVPtstOZGSkEhISNH36dJ08eVJPP/20qlSpovfff19nzpzJl3CPP/64li9frpiYGAUFBendd9/VpEmT1LNnT+s6b775pl577TX169dPjz/+uFJSUrR27VqesQMAACRJFuN+3+6Zhd9++01z587VggULdPbsWT377LOKiIjQCy+8YO+M+S45OVleXl5KSkri+p27ou0/UpdnPXL1qwqgsPH3BPkku5/fuf66iIcfflhjx47V8ePHFRMTo23btqlz58653R0AAEC+yPGt53+2YcMGzZ07V19++aVcXFzUt29fe+UCAACwixyXndOnTysqKkpRUVE6duyYmjZtqhkzZqhz585yd3fPj4wAAAC5lu2ys2TJEs2ZM0exsbHy8fFRWFiYwsPDVaVKlfzMBwAAkCfZLju9evVS69attXz5crVq1UpOTrm+3AcAAKDAZLvsnD59Wj4+PvmZBQAAwO6yPTxD0QEAAEUR56IAAICpUXYAAICpUXYAAICpZbvs7NixQ2lpaVkuT01N1ZIlS+wSCgAAwF6yXXaCg4N16dIl62tPT08dO3bM+vrKlSvq3r27fdMBAADkUbbLzv9+X2hm3x+ay+8UBQAAyDd2vWbHYnHAb7YFAAB/aVygDAAATC1HXwS6f/9+JSQkSLpzyurgwYNKSUmRJF28eNH+6QAA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\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of MAPE values from mape1 to mape10\n",
- "mape_values = [mape1, mape2, mape3, mape4, mape5, mape6, mape7, mape8, mape9, mape10]\n",
- "\n",
- "# List of corresponding labels for each MAPE value\n",
- "labels = ['MAPE1', 'MAPE2', 'MAPE3', 'MAPE4', 'MAPE5', 'MAPE6', 'MAPE7', 'MAPE8', 'MAPE9', 'MAPE10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, mape_values, color='purple')\n",
- "plt.xlabel('MAPE Variables')\n",
- "plt.ylabel('MAPE Values')\n",
- "plt.title('Bar Graph of MAPE')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "_c4Pe76fDNM-",
- "outputId": "0e3d2f74-9042-4e2d-92c6-5ce61e967bd4"
- },
- "execution_count": 120,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "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yZNXfEJt27ZtOnbsmB577DGb+UndunVT06ZNtXLlyiL3La6+ffvqr7/+0ooVK3TmzBmtWLHiire/fvrpJ/3888+KioqytkVFRenEiRNas2ZNgf45OTnWfwaNGzfWCy+8oJCQEH366acF+i5btsz6d+nyMnfu3Os+R8DecAsMuAG0b9/eZhJ0VFSU2rZtq1GjRql79+5ycnKSJK1YsUKvvvqqdu3aZfMIdGHzdgICAop17Bo1akiSsrOzbdobN25sndcyf/58ffjhh8U+RknqbNKkSYG2W265RWfPntXx48fl4+Njba9Xr55Nv1q1akm6FLLc3d0LreXgwYOSpMDAwALbmjZtWugj7CVVt25dhYeHa+HChTp79qwuXryo+++/v8j+H330kapVq6aGDRtq3759ki49TdagQQMtWLCgwG1CFxcXffHFF5IuPREWEBCgm2++udCx77zzTiZBwxQIQMANyMHBQZ06ddL06dP1+++/q3nz5vruu+/Us2dP3XnnnXr33Xfl6+urqlWrau7cuVq4cGGBMf5+FeZKmjZtKknavXu3evXqZW2vXr269VHwokJCYccoaZ0lUdQcJcMwrmvc0vDAAw9o+PDhSk9PV2RkZJFzbgzD0KJFi5STk1Po1bNjx44pOzvb5oqco6NjsR/LB8yCAATcoC5cuCDpf1dmli1bJhcXF61Zs8bm3TLXe3vjjjvukIeHh5KSkhQbGysHh+u7s17SOn///fcCbb/99pvc3NxUt27d66pFkurXry9J2rt3r+666y6bbXv37rVuv1733nuvHnnkEX3//fdavHhxkf0uvx9owoQJuvXWW222nTp1Sg8//LCWL19eYAI8AFvMAQJuQOfPn9dXX30lJycn6y9JR0dHWSwWm3kxBw4c0PLly6/rWG5ubnr22We1e/duPf/884VeTSnJFZaS1pmSkmIzN+jQoUP67LPP1KVLlxI/lVaYdu3aycvLSwkJCTa347788kvt2bOnwO2ma1W9enW99957evnll9WjR48i+12+/fXMM8/o/vvvt1mGDx+uJk2aaMGCBaVSE3Aj4woQcAP48ssv9euvv0q6dAtk4cKF+v333/X8889b57Z069ZNU6dOVdeuXfXAAw/o2LFjio+PV+PGjfXTTz9d1/Gff/557dmzR2+++aa++uor3Xfffbr55pt16tQp7dixQ0uX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LFmiL774QqtXr9bOnTv12GOPFXkOcXFxmj9/vhISEvTLL79Yv2K/fv16SdJLL72k//znP/ryyy+1Z88evffee/L09LymnxdgauXyyVUAldrlL2IfO3bMcHZ2Ng4cOGAcOHDAcHFxMY4fP2792vTfhYaGGtOmTTMMwzDOnz9veHp62nwF+p9fnD516pRx7733GtWrVzfS09MNw7j0xemqVasa1apVs1k++uijImvds2dPgS9O33HHHcbAgQOL3Kdbt27GU089ZV3v2LGj0bZt2wL9JBmffvppkeO8+eabRlBQkHV93LhxhqOjo3H48GFr25dffmk4ODgYaWlphmHYfm383Llzhpubm7F582abcYcNG2ZERUUZhmEYPXr0MKKjo4usAUDxVKng/AWgEqlbt671dpZhGOrWrVuhVx/27t2rrVu36tNPP5V06cpMv379NHv2bIWFhdn0DQ0NlYODg3JyctSwYUMtXrxY3t7e1u0DBgzQiy++aLPP37f/U9OmTRUaGqo5c+YoLCxM+/bt03fffacJEyZIki5evKjXX39dS5Ys0ZEjR5SXl6fc3Fy5ubnZjBMUFHTVn8fixYv19ttv648//lB2drYuXLhQ4PZcvXr1dNNNN1nXQ0JClJ+fr71798rHx8em7759+3T27Fl17tzZpj0vL896m3HEiBG67777tGPHDnXp0kW9e/dWaGjoVWsFYIsABKBEhg4dqlGjRkmS4uPjC+0ze/ZsXbhwQX5+ftY2wzDk7OysGTNmyMPDw9q+ePFiNWvWTHXq1FHNmjULjOXh4aHGjRuXqMZhw4bp3//+t+Lj4zV37lw1atRIHTt2lCS9+eabmj59uqZNm6aWLVuqWrVqGj16dIHbbtWqVbviMVJSUjRgwACNHz9eERER8vDwUFJSkqZMmVKiWv8uOztbkrRy5Uqb0CTJOvk6MjJSBw8e1KpVq7R27VrdfffdGjlypCZPnnzNxwXMiDlAAEqka9euysvL0/nz562Tg//uwoULmj9/vqZMmaJdu3ZZlx9//FF+fn4FJhz7+/urUaNGhYafa9W3b185ODho4cKFmj9/voYOHSqLxSJJ2rRpk3r16qWBAweqdevWatiwoX777bcSH2Pz5s2qX7++XnzxRbVr105NmjTRwYMHC/RLTU21eQLu+++/l4ODgwIDAwv0bdasmZydnZWamqrGjRvbLP7+/tZ+devW1eDBg/XRRx9p2rRpmjlzZonrB8yOK0AASsTR0VF79uyx/vmfVqxYoVOnTmnYsGE2V3ok6b777tPs2bOLfI9PYc6ePav09HSbNmdnZ9WqVavIfapXr65+/fopNjZWWVlZNu8oatKkiT7++GNt3rxZtWrV0tSpU5WRkaFmzZoVu6bL46SmpiopKUm33367Vq5cab3l93cuLi4aPHiwJk+erKysLD3++OPq27dvgdtf0qVJ1U8//bSefPJJ5efnq0OHDsrMzNSmTZvk7u6uwYMHa+zYsQoKClLz5s2Vm5urFStW6NZbby1R7QC4AgTgGri7uxf5KPrs2bMVHh5eIPxIlwLQtm3bSvQywlmzZsnX19dmiYqKuup+w4YN06lTpxQREWFzK27MmDG67bbbFBERobCwMPn4+FzTm5h79uypJ598UqNGjVKbNm20efNmvfTSSwX6NW7cWP/v//0/3XPPPerSpYtatWqld999t8hxX3nlFb300kuKi4vTrbfeqq5du2rlypUKCAiQJDk5OSk2NlatWrXSnXfeKUdHRyUlJZW4fsDsLIZxledSAQAAbjBcAQIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKbz/wGv+ZTScaIQRQAAAABJRU5ErkJggg==\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of precision values from precision1 to precision10\n",
- "precision_values = [precision1, precision2, precision3, precision4, precision5, precision6, precision7, precision8, precision9, precision10]\n",
- "\n",
- "# List of corresponding labels for each precision value\n",
- "labels = ['Precision1', 'Precision2', 'Precision3', 'Precision4', 'Precision5', 'Precision6', 'Precision7', 'Precision8', 'Precision9', 'Precision10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, precision_values, color='red')\n",
- "plt.xlabel('Precision Variables')\n",
- "plt.ylabel('Precision Values')\n",
- "plt.title('Bar Graph of Precision')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "ZDPV0M5rDTi6",
- "outputId": "9db63164-3f42-47be-d302-d80d381d9b91"
- },
- "execution_count": 121,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "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Z59p5MiR+stf/qIqVapo8eLFqlmzZmG9BQAA4EEKvdxI0qBBg657GGr9+vU5pnXp0kVdunTJ51SFx9fXV4mJiTkOp3k6chcschcschcsches2zX39RT6RfwAAADcqdBvvwAAAOBOlBsAAGAplBsAAGAplBsPYLPZtHjxYrePzW/kLljkLljkLljkzl+3S063MXASHx9vJBlJxtvb21SqVMmMGTPGZGVl5ds6jx8/btLT029p7K3kXrhwoWnRooUJDQ01ksxPP/3k8bkzMzPNyy+/bGrWrGmKFStmIiMjTa9evczRo0c9OrcxxiQmJpqqVauaYsWKmZCQEPPII4+YH374weNzX+uZZ54xksykSZM8Pve18159xMXFeXxuY4z597//bdq3b2+CgoJMsWLFTP369c2hQ4c8Ovfvt/XVx9tvv+3RudPS0szAgQNN2bJljZ+fn6levbqZMWPGTWe50Vh3fs6kpKSY+Ph4ExkZafz9/U1cXJzZu3evW3K6U14+Zy5fvmwGDBhgQkNDTfHixU3nzp1NSkrKTa2PcvM78fHxplWrVub48ePml19+MdOnTzc2m8288cYbOcZmZGQUQsLc3UruTz75xIwZM8bMmjXLpXLjDjeb+9y5cyY2NtbMmzfP7N6922zatMk0bNjQxMTEeHRuY4yZM2eOWbNmjTlw4IDZtWuX6devnwkKCjInT5706NxXLVq0yNSuXduUKVMmT+XGHW4l97XzXn2cPXvW43Pv37/fhIaGmpdeesls27bN7N+/33z55ZfmxIkTHp372u18/PhxM3v2bGOz2cyBAwc8Onf//v1NpUqVzLp168zBgwfN+++/b4oUKWK+/PJLj8p5Lbvdbu677z7z4IMPms2bN5vdu3ebp59+2kRHR5sLFy64PfetyMvnzLPPPmuioqJMcnKy+fHHH819991n7r///ptaH+Xmd+Lj402HDh2cprVo0cLcd999jtdee+01ExkZaSpUqGCMMebw4cOmS5cuJjg42JQoUcI8+uij5uDBg07L+PDDD80999xjfHx8TEREhBk4cKDjNUnmiy++MMb89os8cOBAExERYXx9fU10dLTTL/y1Y40x5p///Kdp1qyZ8fLyMt7e3qZ///4mLS3Nkbt06dImKirK1KhRwwQEBBibzWYCAwNNZmZmjtyxsbE5fuluh9xXt/fmzZuNJHPo0KHbKndqaqqRZNauXevxuYODg42fn59ZtWqVKV++vKPceHJub29v4+3tfdv9vfT29jY+Pj63Xe7f/3536NDBNG/e3ONze3l5GX9/f6ftXa9ePTNixAi35776WXI1t5+fnylatKgJCwszPXr0cHzO+Pv7m2LFipkJEyaY0qVLGx8fH+Pj4+PYvsnJyUaS2bVrl9P2lWSCg4Pdvn39/PxMaGio0/Y15n+fmxMmTDAREREmNDTUDBgwwGRmZprfO3jwYK7l5ty5c8bb29vMnz/fMe3nn382ksymTZtyLOePcM5NHvj7+yszM1OSlJycrD179mjNmjVatmyZsrKyFBcXp8DAQG3YsEEbN25UQECAWrVq5ZhnxowZGjhwoJ5++mnt3LlTS5YsUeXKlXNd11//+lctWbJEn3/+ufbs2aM5c+aoQoUKuY69ePGi4uLiVKJECbVr104NGjTQ2rVrHRdE9Pf315UrV5SSkqK9e/eqefPmeu+995SVlaW//e1vOXIXL15ckpSVlXVb5b66vU+fPi2bzaYFCxbcNrnj4uI0ffp0BQcHa9u2bR6d+5tvvlHVqlVVo0YNPf/88zL//xJZnv570rp1a/n6+mrVqlW6++679fTTT+vMmTMenTsgIEBFixbVM888o82bN6ty5cpq0KCBFi9e7NG5f//73aJFCy1btkz9+vXz+NydOnVSxYoV5eXlpVatWmn16tXau3evLl26lC+5r1y54si9ZcsWNWzYUOfOndP//d//OT5nWrRoIZvNpr179yooKEhNmzaVl5eXXnjhBQUEBKhfv36SJD8/P6ftGx4ergceeMDt23fLli2aP3++0/a9at26dTpw4IDWrVunjz/+WElJSUpKSsp1mbnZunWrsrKyFBsb65hWrVo1RUdHa9OmTXlejoPLdcjirt1zY7fbzZo1a4yvr6958cUXTXx8vAkPD3faTfjpp5+aqlWrGrvd7piWkZFh/P39zapVq4wxxpQpU8aMGDHiuuvUNS158ODBpnnz5k7Lu97YDz74wJQoUcJcuHDBkXv58uXGZrOZzz//3Pj6+poaNWqY4sWLO+Xu0qWLadSoUY7ce/bsMZLM9OnTb6vcV7d35cqVTY8ePW6L3EuXLjXFihUzkkxoaKjZvHmzx+d+4403TIsWLUx6errx9/c3YWFhZtKkSR6f+x//+If58ssvzdatW42Pj4+JiooyDRo08Ojcx44dM5JMsWLFzNtvv238/PxM3759jc1mM6VKlfLY3L//e+nt7W0CAgLM5cuXPXp72+12k56ebnr37u04F6Zo0aLm448/zpfc8fHxpnbt2qZEiRImLS3N8TnTuXNnI8mULl3aZGRkmPj4eFO+fHnz8ccfO3J26dLFdOvWzfHvXunSpU2XLl1MZGSkGTZsmHnzzTeNJNOyZUu3b9+rli9fbry8vBznw1zNmZ2d7RhzNefvXW/PzZw5c4yPj0+O8Q0aNDAvv/xyrjlvxCNuv+Bpli1bpoCAAGVlZclut6tHjx4aPXq0Bg4cqFq1asnHx8cxdseOHdq/f78CAwOdlpGenq4DBw7o5MmTOnbsmB555JE8rbtPnz5q0aKFqlatqlatWqldu3Zq2bJlrmN//vln1a5d27HHZdmyZVq7dq2MMerevbt69uyp7OxsnTt3TtWrV3fkjoyM1A8//KBjx4455Tb//3/iR44cua1yS9Lly5eVnp6usWPHqnLlyrdNbpvNpqpVq+qxxx7z6O1dvHhxpaeny9/fXyVLlnT8OS0tzaNz/357Z2VlqX///ho1apQkeWzuq//jzszM1JgxY5SRkaEGDRro6NGjWr16tcfmzm1733///Tp//rzH/55kZWUpKytLfn5+ysjIUOfOnfXcc8/p0qVL+ZL7n//8p2w2m0qWLOn4nBk/frwWLVqk6OhoR84aNWpo586djs+ZzMxM2e12LVu2TOnp6RoyZIiWLFmi48eP6+2331aLFi3UunVrx7/n7t6+ktSkSRPZ7Xbt2bPHcR/IGjVqqEiRIo4xkZGR2rlzZ562W37gsFQumjVrpu3bt2vfvn26fPmyPv74Y8cP9tofsCRduHBBMTEx2r59u9Nj79696tGjh/z9/V1ad7169XTw4EGNGzdOly9fVteuXfX444/nOfeGDRskSatXr9bHH38sb29veXl5OeW22WzKzs7OkXv58uWSpNatW982ubds2aLGjRuratWq+vbbbxUWFnZb5N6+fbt27NihvXv3asWKFfL29vbo3EOHDpUxRunp6bp8+bJsNpvOnj2rxMREj86d29/L559/XqGhoR6de8uWLSpSpIgGDRrk9O9J9erVPTr3tdt61qxZkqTXXnvN4/89+eGHH2S32/X+++9r586d2rt3rz744AM99thj+ZY7KipK9evXz/Vz5trt5e3t7fQ506NHD8ef9+7dq2HDhumHH36QJC1YsEArV67UmTNnVLFiRbfkzKvf/xtms9lkt9vzPH9ERIQyMzN17tw5p+knTpxQRESEy3koN7koXry4KleurOjoaBUteuOdW/Xq1dO+ffsUFhamypUrOz2Cg4MVGBioChUqKDk5Oc/rDwoKUrdu3TRr1izNmzdPCxcu1NmzZ3OMq169unbs2KGLFy86ch8/flxeXl6qUaPGDdcRGBiYI/fVY66BgYG3Re7y5cvrL3/5i44fP64NGzborrvuui1y5/Z7IkkhISEem7t///7auXOnduzY4XiUKVNGL7/8ssqWLeuxuXPb3mlpafr1118VFhbmsbnLlSunhg0b6vTp006/J4cOHVLx4sU9Nve123vVqlWKiYnRAw884PF/L0NCQpSdna1y5co5bW9/f3/5+fnlS+4SJUpo3759KlmypONzZuPGjZKkgIAAp7HXfs6EhITI398/18+ZrVu3at++ffrxxx/VoUMHt+T8/fa9mtPLy0tVq1bN83b5IzExMfL29nba1nv27NHhw4fVuHFjl5fHYalb1LNnT02YMEEdOnTQ2LFjVa5cOR06dEiLFi3Syy+/rHLlymn06NF69tlnFRYWptatWystLU0bN27U4MGDcyzv3XffVWRkpOrWrSsvLy/Nnz9fERERCgkJyXXdiYmJio+PV1ZWls6cOaPBgwerV69ejl2F1xMWFiZjjDp06KAXX3xRkhy7EL///ntJ0tChQ/XKK694ZO5HH31U2dnZOnDggMaNG6fhw4drwIABKlOmjEaOHKlBgwZ5ZO527dqpfPny6tSpkzIzM7V48WIZY3T06FGNGjVK48aN88jcffv2zfH7bbPZFBERoddff91jf7/btWunsmXLqkuXLsrMzNS8efO0f/9+Va5cWS+//LIGDx7skbk7dOigtm3bavTo0QoPD9fJkydVpUoVLV26VK+88oomTpzosbnHjh2r4OBgzZ07V40bN9Z///tfj/93sFevXqpdu7aGDBmiPXv2aPv27br33nv1ySefqGvXrvmyvaOionTy5EnFx8dr9OjROnXqlAYPHqxKlSrluDP3tZ8zpUqV0uXLl7V+/XotWrRI99xzj6pVq6YBAwZo5MiRmj59umJjY1WqVCm99957bt2+1+bMy/a91tmzZ3X4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\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [
- "import matplotlib.pyplot as plt\n",
- "\n",
- "# Assuming you have a list of recall values from recall1 to recall10\n",
- "recall_values = [recall1, recall2, recall3, recall4, recall5, recall6, recall7, recall8, recall9, recall10]\n",
- "\n",
- "# List of corresponding labels for each recall value\n",
- "labels = ['Recall1', 'Recall2', 'Recall3', 'Recall4', 'Recall5', 'Recall6', 'Recall7', 'Recall8', 'Recall9', 'Recall10']\n",
- "\n",
- "# Plotting the bar graph\n",
- "plt.bar(labels, recall_values, color='cyan')\n",
- "plt.xlabel('Recall Variables')\n",
- "plt.ylabel('Recall Values')\n",
- "plt.title('Bar Graph of Recall')\n",
- "plt.show()\n"
- ],
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 472
- },
- "id": "39LBleNeDeuw",
- "outputId": "3c6c40bc-f1da-44fb-da14-25ec6d6cf278"
- },
- "execution_count": 122,
- "outputs": [
- {
- "output_type": "display_data",
- "data": {
- "text/plain": [
- ""
- ],
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/z0lEQVR4nO3deVxU9eL/8feAMOACroAhV3HfEg03MjQTxSyXFjPNRKX8WdoieUu7JlrdyMqtcmlx75qWmtfSXMKsa1KmiFtqaiJkCuKGIELC+f3h17nOBY1RluH4ej4e83jEZ87ynoM5b89qMQzDEAAAgEm4lHYAAACAokS5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AVBmTZgwQRaLRWlpacW+rrVr16ply5by8PCQxWLR2bNni32dxcVisWjChAm2n+fPny+LxaLExMRSywQUJcoN4ISufNlc/fLx8VHnzp319ddfl3ieL7/8Uj179pSvr6/c3d1VtWpVdezYUZMnT1Z6enqJ5ylpp06d0iOPPCJPT0/NmDFDixYtUoUKFQqc9n9/d+XKlZO/v78GDx6sY8eOlXBy4NZUrrQDALi2V199VYGBgTIMQykpKZo/f7569OihL7/8Uvfff3+xrz8vL0+RkZGaP3++br/9dj399NMKCAjQ+fPnFRcXp3HjxmnNmjWKjY0t9iyl6eeff9b58+f12muvKSwsrFDzXPndXbx4UT/++KPmz5+vzZs3a8+ePfLw8CjmxMCtjXIDOLF7771XrVu3tv0cGRkpX19fffrpp0VSbvLy8pSTk3PNL9u33npL8+fP16hRozR58mRZLBbbe88995yOHz+uhQsX3tQ6yoLU1FRJUuXKlQs9z9W/uyeeeELVq1fXpEmTtGrVKj3yyCPFERPA/+GwFFCGVK5cWZ6enipXzv7fJe+8847uvPNOVatWTZ6engoODtayZcvyzW+xWDRy5Ej961//UrNmzWS1WrV27doC13XhwgVNmjRJzZo109tvv21XbK6oWbOmXnrppUKv40ZyNmrUSB4eHgoODtb3339fYNazZ89q8ODBqly5sry9vTVkyBBduHCh4I34Pz7//HMFBwfL09NT1atX18CBA+0OH919992KiIiQJLVp00YWi0WDBw8u1LKvFhoaKkk6fPiw3fj+/fv18MMPq2rVqvLw8FDr1q21atWqAj/jqFGjVKdOHVmtVtWqVUuDBg2ynW+Uk5Oj8ePHKzg4WN7e3qpQoYJCQ0P17bffOpwVKOvYcwM4sXPnziktLU2GYSg1NVXvvfeeMjIyNHDgQLvppk+frl69eumxxx5TTk6OlixZor59++qrr77SfffdZzftxo0b9dlnn2nkyJGqXr266tSpU+C6N2/erLNnz2r06NFydXV1KPe11uFIzu+++05Lly7Vs88+K6vVqpkzZ6p79+7aunWrmjdvbjftI488osDAQMXExCg+Pl4ff/yxfHx8NGnSpOvmnD9/voYMGaI2bdooJiZGKSkpmj59un744Qft2LFDlStX1j/+8Q81atRIH374oe1QU7169RzaHpJsJ+tWqVLFNrZ371516NBB/v7+GjNmjCpUqKDPPvtMffr00fLly/XAAw9IkjIyMhQaGqp9+/Zp6NChuuOOO5SWlqZVq1bp999/V/Xq1ZWenq6PP/5Y/fv315NPPqnz589rzpw5Cg8P19atW9WyZUuHMwNllgHA6cybN8+QlO9ltVqN+fPn55v+woULdj/n5OQYzZs3N+655x67cUmGi4uLsXfv3r/MMH36dEOSsXLlSrvxS5cuGSdPnrR75eXlFWodjuSUZGzbts02dvToUcPDw8N44IEHbGPR0dGGJGPo0KF28z/wwANGtWrVrvv5cnJyDB8fH6N58+ZGVlaWbfyrr74yJBnjx4+3jV35ffz888/XXebV037zzTfGyZMnjeTkZGPZsmVGjRo1DKvVaiQnJ9um7dKli3H77bcbFy9etI3l5eUZd955p9GgQQPb2Pjx4w1JxooVK/Kt78q2v3TpkpGdnW333pkzZwxfX99820eSER0dnS/zkSNH/vLzAWUBh6UAJzZjxgxt2LBBGzZs0CeffKLOnTvriSee0IoVK+ym8/T0tP33mTNndO7cOYWGhio+Pj7fMjt16qSmTZv+5bqvXAVVsWJFu/Hdu3erRo0adq9Tp04Vah2O5AwJCVFwcLDt57/97W/q3bu31q1bp9zcXLtphw8fbvdzaGioTp06dd0rubZt26bU1FQ9/fTTducD3XfffWrcuLFWr159zXkLIywsTDVq1FBAQIAefvhhVahQQatWrVKtWrUkSadPn9bGjRv1yCOP6Pz580pLS1NaWppOnTql8PBwHTx40HZ4bPny5QoKCrLtybnalcOFrq6ucnd3l3T5PKfTp0/r0qVLat26dYHbFzAzDksBTqxt27Z2JxT3799frVq10siRI3X//ffbvsy++uorvf7660pISFB2drZt+oLOkwkMDCzUuitVqiTp8iGRq9WvX18bNmyQJC1cuFCLFi0q9DocydmgQYN8Yw0bNtSFCxd08uRJ+fn52cb/9re/2U135dDPmTNn5OXlVWCWo0ePSpIaNWqU773GjRtr8+bNBc5XWDNmzFDDhg117tw5zZ07V99//72sVqvt/UOHDskwDL3yyit65ZVXClxGamqq/P39dfjwYT300EN/uc4FCxZo8uTJ2r9/v/7880/beGF/54BZUG6AMsTFxUWdO3fW9OnTdfDgQTVr1kz/+c9/1KtXL3Xs2FEzZ85UzZo15ebmpnnz5mnx4sX5lnH13pPrady4sSRpz5496t27t228YsWKtsuhr1UAClqHozkdca1zggzDuKnl3oyri2mfPn101113acCAATpw4IAqVqyovLw8SdLo0aMVHh5e4DLq169f6PV98sknGjx4sPr06aO///3v8vHxkaurq2JiYvKdxAyYHeUGKGMuXbok6b97VJYvXy4PDw+tW7fObs/AvHnzbmo9oaGh8vb21pIlSzR27Fi5uNzcUWxHcx48eDDf2K+//qry5curRo0aN5VFkmrXri1JOnDggO655x679w4cOGB7vyhcKRmdO3fW+++/rzFjxqhu3bqSJDc3t7+8d069evW0Z8+e606zbNky1a1bVytWrLDbExYdHX3zHwAoYzjnBihD/vzzT61fv17u7u5q0qSJpMtfnBaLxe48lMTERK1cufKm1lW+fHm9+OKL2rNnj8aMGVPgXhBH9ow4mjMuLs7uXJHk5GT9+9//Vrdu3Ry+eqsgrVu3lo+Pj2bPnm13iOzrr7/Wvn378l29dbPuvvtutW3bVtOmTdPFixfl4+Oju+++Wx988IGOHz+eb/qTJ0/a/vuhhx7Szp079cUXX+Sb7srv4Mo2ufp38tNPPykuLq5IPwdQFrDnBnBiX3/9tfbv3y/p8vkXixcv1sGDBzVmzBjbuST33XefpkyZou7du2vAgAFKTU3VjBkzVL9+fe3ateum1j9mzBjt27dPb7/9ttavX6+HHnpItWrV0pkzZxQfH6/PP/9cPj4+hbpB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ldaK09LSlJubK19fX7txX19f7d+/v8B5BgwYoLS0NN11110yDEOXLl3S8OHDr3tYKjs7W9nZ2baf09PTi+YDAAAAp1TqJxQ7YtOmTXrjjTc0c+ZMxcfHa8WKFVq9erVee+21a84TExMjb29v2ysgIKAEEwMAgJJmMQzDKI0V5+TkqHz58lq2bJn69OljG4+IiNDZs2f173//O988oaGhat++vd5++23b2CeffKJhw4YpIyNDLi75u1pBe24CAgJ07tw5eXl5Fe2HknOewFuYXzC5iw65Sxa5Sxa5S5aZczsqPT1d3t7ehfr+LrU9N+7u7goODlZsbKxtLC8vT7GxsQoJCSlwngsXLuQrMK6urpKka3U0q9UqLy8vuxcAADCvUjvnRpKioqIUERGh1q1bq23btpo2bZoyMzM1ZMgQSdKgQYPk7++vmJgYSVLPnj01ZcoUtWrVSu3atdOhQ4f0yiuvqGfPnraSAwAAbm2lWm769eunkydPavz48Tpx4oRatmyptWvX2k4yTkpKsttTM27cOFksFo0bN07Hjh1TjRo11LNnT/3zn/8srY8AAACcTKmdc1NaHDlmdyPK6rFPchcdcpcscpcscpcsM+d2VJk45wYAAKA4UG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpOFxusrKydOHCBdvPR48e1bRp07R+/foiDQYAAHAjHC43vXv31sKFCyVJZ8+eVbt27TR58mT17t1bs2bNKvKAAAAAjnC43MTHxys0NFSStGzZMvn6+uro0aNauHCh3n333SIPCAAA4AiHy82FCxdUqVIlSdL69ev14IMPysXFRe3bt9fRo0eLPCAAAIAjHC439evX18qVK5Wc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J06cUMuWLbV27VrbScZJSUlycbnhGykDAIBbzA0/W6qs4tlSBSN30SF3ySJ3ySJ3yTJzbkeVyLOlAAAAnBHlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmIpTlJsZM2aoTp068vDwULt27bR169ZrTvvRRx8pNDRUVapUUZUqVRQWFnbd6QEAwK2l1MvN0qVLFRUVpejoaMXHxysoKEjh4eFKTU0tcPpNmzapf//++vbbbxUXF6eAgAB169ZNx44dK+HkAADAGVkMwzBKM0C7du3Upk0bvf/++5KkvLw8BQQE6JlnntGYMWP+cv7c3FxVqVJF77//vgYNGvSX06enp8vb21vnzp2Tl5fXTef/X5YiX+LNK8wvmNxFh9wli9wli9wly8y5HeXI93ep7rnJycnR9u3bFRYWZhtzcXFRWFiY4uLiCrWMCxcu6M8//1TVqlULfD87O1vp6el2LwAAYF6lWm7S0tKUm5srX19fu3FfX1+dOHGiUMt46aWXdNttt9kVpKvFxMTI29vb9goICLjp3AAAwHmV+jk3N+PNN9/UkiVL9MUXX8jDw6PAacaOHatz587ZXsnJySWcEgAAlKRypbny6tWry9XVVSkpKXbjKSkp8vPzu+6877zzjt5880198803atGixTWns1qtslqtRZIXAAA4v1Ldc+Pu7q7g4GDFxsbaxvLy8hQbG6uQkJBrzvfWW2/ptdde09q1a9W6deuSiAoAAMqIUt1zI0lRUVGKiIhQ69at1bZt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\n"
- },
- "metadata": {}
- }
- ]
- },
- {
- "cell_type": "code",
- "source": [],
- "metadata": {
- "id": "13cZXvb0DsvK"
- },
- "execution_count": null,
- "outputs": []
- }
- ],
- "metadata": {
- "colab": {
- "provenance": []
- },
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.9.16"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 0
-}
\ No newline at end of file
diff --git a/Python File/Stock_Price_Prediction(Updated).ipynb b/Stock_Price_Prediction(Updated).ipynb
similarity index 100%
rename from Python File/Stock_Price_Prediction(Updated).ipynb
rename to Stock_Price_Prediction(Updated).ipynb
From 90f3350b3ef3b18d0cc9028e3ac8bffbf6d2b174 Mon Sep 17 00:00:00 2001
From: Ayushi Sha <124066968+AYUSHI-SHA@users.noreply.github.com>
Date: Sun, 6 Oct 2024 14:35:40 +0530
Subject: [PATCH 05/76] Delete Stock_Price_Prediction.ipynb
---
Stock_Price_Prediction.ipynb | 1805 ----------------------------------
1 file changed, 1805 deletions(-)
delete mode 100644 Stock_Price_Prediction.ipynb
diff --git a/Stock_Price_Prediction.ipynb b/Stock_Price_Prediction.ipynb
deleted file mode 100644
index 7c3ad61..0000000
--- a/Stock_Price_Prediction.ipynb
+++ /dev/null
@@ -1,1805 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "id": "qCDSjVhXLr_Z"
- },
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "import numpy as np\n",
- "import matplotlib.pyplot as plt\n",
- "from sklearn.model_selection import train_test_split\n",
- "from sklearn.impute import SimpleImputer\n",
- "from sklearn.preprocessing import MinMaxScaler\n",
- "from sklearn.linear_model import LinearRegression\n",
- "from sklearn.svm import SVR\n",
- "from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor, GradientBoostingRegressor, DecisionTreeRegressor\n",
- "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error\n",
- "from sklearn.neighbors import KNeighborsRegressor\n",
- "from tensorflow.keras.models import Sequential\n",
- "from tensorflow.keras.layers import Dense,LSTM"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "SOQbXSiB-g5G",
- "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
- ]
- }
- ],
- "source": [
- "from google.colab import drive\n",
- "drive.mount('/content/drive')\n",
- "df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "Sc4id6VxL8BS",
- "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Date \n",
- " Open \n",
- " High \n",
- " Low \n",
- " Close \n",
- " Adj Close \n",
- " Volume \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 01-01-1996 \n",
- " 18.691147 \n",
- " 18.978922 \n",
- " 18.540184 \n",
- " 18.823240 \n",
- " 12.409931 \n",
- " 43733533.0 \n",
- " \n",
- " \n",
- " 1 \n",
- " 02-01-1996 \n",
- " 18.894005 \n",
- " 18.964767 \n",
- " 17.738192 \n",
- " 18.224106 \n",
- " 12.014931 \n",
- " 56167280.0 \n",
- " \n",
- " \n",
- " 2 \n",
- " 03-01-1996 \n",
- " 18.327892 \n",
- " 18.568489 \n",
- " 17.643839 \n",
- " 17.738192 \n",
- " 11.694577 \n",
- " 68296318.0 \n",
- " \n",
- " \n",
- " 3 \n",
- " 04-01-1996 \n",
- " 17.502312 \n",
- " 17.832542 \n",
- " 17.223972 \n",
- " 17.676863 \n",
- " 11.654142 \n",
- " 86073880.0 \n",
- " \n",
- " \n",
- " 4 \n",
- " 05-01-1996 \n",
- " 17.738192 \n",
- " 17.785366 \n",
- " 17.459852 \n",
- " 17.577793 \n",
- " 11.588827 \n",
- " 76613039.0 \n",
- " \n",
- " \n",
- "
\n",
- "
\n",
- "
\n",
- "
\n"
- ],
- "text/plain": [
- " Date Open High Low Close Adj Close \\\n",
- "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
- "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
- "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
- "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
- "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
- "\n",
- " Volume \n",
- "0 43733533.0 \n",
- "1 56167280.0 \n",
- "2 68296318.0 \n",
- "3 86073880.0 \n",
- "4 76613039.0 "
- ]
- },
- "execution_count": 23,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Load the dataset\n",
- "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
- "df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "id": "7LaYGXsfN-8y"
- },
- "outputs": [],
- "source": [
- "# Drop the 'Date' and 'Adj Close' columns\n",
- "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "pqbTBdnBOKJc",
- "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Open \n",
- " High \n",
- " Low \n",
- " Close \n",
- " Volume \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 18.691147 \n",
- " 18.978922 \n",
- " 18.540184 \n",
- " 18.823240 \n",
- " 43733533.0 \n",
- " \n",
- " \n",
- " 1 \n",
- " 18.894005 \n",
- " 18.964767 \n",
- " 17.738192 \n",
- " 18.224106 \n",
- " 56167280.0 \n",
- " \n",
- " \n",
- " 2 \n",
- " 18.327892 \n",
- " 18.568489 \n",
- " 17.643839 \n",
- " 17.738192 \n",
- " 68296318.0 \n",
- " \n",
- " \n",
- " 3 \n",
- " 17.502312 \n",
- " 17.832542 \n",
- " 17.223972 \n",
- " 17.676863 \n",
- " 86073880.0 \n",
- " \n",
- " \n",
- " 4 \n",
- " 17.738192 \n",
- " 17.785366 \n",
- " 17.459852 \n",
- " 17.577793 \n",
- " 76613039.0 \n",
- " \n",
- " \n",
- "
\n",
- "
\n",
- "
\n",
- "
\n"
- ],
- "text/plain": [
- " Open High Low Close Volume\n",
- "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
- "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
- "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
- "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
- "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
- ]
- },
- "execution_count": 25,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "id": "dydEPoNeM6eN"
- },
- "outputs": [],
- "source": [
- "# Handle missing values\n",
- "imputer = SimpleImputer(strategy='mean')\n",
- "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "id": "OQ3cGqgTMBwt"
- },
- "outputs": [],
- "source": [
- "# Select features and target variable\n",
- "X = df[['Open', 'High', 'Low', 'Volume']]\n",
- "y = df['Close']"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {
- "id": "9Oz-bwJOMEWD"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "id": "ugapDyXODtn3"
- },
- "outputs": [],
- "source": [
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "997ZEgibCZIO",
- "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(5659, 4)"
- ]
- },
- "execution_count": 29,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "X_train.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "bmtt76RuCeyG",
- "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1415, 4)"
- ]
- },
- "execution_count": 30,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "X_test.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "CeJkUJ92Ciqd",
- "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(5659,)"
- ]
- },
- "execution_count": 31,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "y_train.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "7HGC7VuTCjWc",
- "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1415,)"
- ]
- },
- "execution_count": 32,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "y_test.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Function to evaluate and print RMSE, MAE, and MAPE\n",
- "def evaluate_model(model, X_test, y_test):\n",
- " predictions = model.predict(X_test)\n",
- " rmse = np.sqrt(mean_squared_error(y_test, predictions))\n",
- " mae = mean_absolute_error(y_test, predictions)\n",
- " mape = mean_absolute_percentage_error(y_test, predictions)\n",
- "\n",
- " print(f\"RMSE: {rmse}\")\n",
- " print(f\"MAE: {mae}\")\n",
- " print(f\"MAPE: {mape}\\n\")\n",
- " \n",
- " return rmse, mae, mape\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "metrics = {\n",
- " \"Model\": [],\n",
- " \"RMSE\": [],\n",
- " \"MAE\": [],\n",
- " \"MAPE\": []\n",
- "}"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "c6Ek8jRlO2_I"
- },
- "source": [
- "## 1. LINEAR REGRESSION"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {
- "id": "RdZ1SpzdMHAJ"
- },
- "outputs": [],
- "source": [
- "# Create a linear regression model\n",
- "model1 = LinearRegression()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "mPM035IzMY04",
- "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "5286 257.350006\n",
- "3408 129.464996\n",
- "5477 279.350006\n",
- "6906 588.500000\n",
- "530 21.644367\n",
- "Name: Close, dtype: float64"
- ]
- },
- "execution_count": 34,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "y_train.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "qBhQ9HbYMI3d",
- "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "LinearRegression()"
- ]
- },
- "execution_count": 35,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model1.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "id": "X269co2kMS4z"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model1, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"Linear Regressor\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "GxtMzlg-gR2P"
- },
- "source": [
- "## 2. Support Vector Regression"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {
- "id": "0xQewd7QWTtq"
- },
- "outputs": [],
- "source": [
- "# Create an SVR model\n",
- "model2 = SVR()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "22SaCsQmfhgP",
- "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "SVR()"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model2.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {
- "id": "OQ1nL4oYfkAC"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model2, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"SVR\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "hcIfVMWdgcKt"
- },
- "source": [
- "## 3. Random Forest Regressor"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {
- "id": "f7raXT_hf2ij"
- },
- "outputs": [],
- "source": [
- "model3 = RandomForestRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "fF002Yepgk55",
- "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "RandomForestRegressor()"
- ]
- },
- "execution_count": 48,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model3.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {
- "id": "8nRU_pzEgnCt"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model3, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"Random Forest\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "mZsLwLivhLGH"
- },
- "source": [
- "## 4. Gradient Boosting Models (GBM)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 52,
- "metadata": {
- "id": "TI8idoxOg6jF"
- },
- "outputs": [],
- "source": [
- "model4 = GradientBoostingRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 54,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 248
- },
- "id": "2gpbDxshhexj",
- "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) "
- ],
- "text/plain": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...)"
- ]
- },
- "execution_count": 54,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model4.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "id": "Jj9DXdUPhh9V"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model4, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"GBM\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "d8nSGoyuh9dx"
- },
- "source": [
- "## 5. Extreme Gradient Boosting (XGBoost)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 58,
- "metadata": {
- "id": "DyhhdlZAhx94"
- },
- "outputs": [],
- "source": [
- "import xgboost as xgb\n",
- "# Create an XGBoost model\n",
- "model5 = xgb.XGBRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 248
- },
- "id": "RAIwxIp5iH9Z",
- "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) "
- ],
- "text/plain": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...)"
- ]
- },
- "execution_count": 60,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model5.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model5, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"XGBoost\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "A_J776rtiovq"
- },
- "source": [
- "## 6. AdaBoostRegressor"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "id": "HNq66cXRiYPJ"
- },
- "outputs": [],
- "source": [
- "model6 = AdaBoostRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 66,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "P0oB5wjQivBr",
- "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "AdaBoostRegressor()"
- ]
- },
- "execution_count": 66,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model6.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "metadata": {
- "id": "Bf1m5ukOi2VM"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model6, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"AdaBoost Regressor\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "Q9DzOt3CkWFX"
- },
- "source": [
- "## 7. Decision Tree"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 70,
- "metadata": {
- "id": "23DZ2biSjF9a"
- },
- "outputs": [],
- "source": [
- "model7 = DecisionTreeRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 72,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "6mQEQf-ykc9F",
- "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "DecisionTreeRegressor()"
- ]
- },
- "execution_count": 72,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model7.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 73,
- "metadata": {
- "id": "BFJ9q_tvkgRC"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model7, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"Decision Tree\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "LH-B-Xd6k5UD"
- },
- "source": [
- "## 8. KNeighborsRegressor(KNN)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 76,
- "metadata": {
- "id": "JVDSed7yktFY"
- },
- "outputs": [],
- "source": [
- "# Create a KNN model\n",
- "model8 = KNeighborsRegressor()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 78,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "9fn64o-ZlBka",
- "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "KNeighborsRegressor()"
- ]
- },
- "execution_count": 78,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model8.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "metadata": {
- "id": "hbfbbjcSlDn7"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model8, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"KNN\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "X5XtlzMXljps"
- },
- "source": [
- "## 9. Artificial Neural Networks (ANN)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 84,
- "metadata": {
- "id": "vd1fDjQiltP4"
- },
- "outputs": [],
- "source": [
- "# Create an ANN model\n",
- "model9 = Sequential()\n",
- "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
- "model9.add(Dense(16, activation='relu'))\n",
- "model9.add(Dense(1, activation='linear'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 85,
- "metadata": {
- "id": "ZIf94WLMlv04"
- },
- "outputs": [],
- "source": [
- "# Compile the model\n",
- "model9.compile(loss='mean_squared_error', optimizer='adam')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "FX5DTKqslxWf",
- "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 86,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 87,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "OVW2qpNsmGVq",
- "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "45/45 [==============================] - 0s 1ms/step\n"
- ]
- }
- ],
- "source": [
- "rmse, mae, mape = evaluate_model(model9, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"ANN\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "vjSMQNcOnFPJ"
- },
- "source": [
- "## 10. LSTM(Long Short term Memory)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 92,
- "metadata": {
- "id": "uACvajfImrbB"
- },
- "outputs": [],
- "source": [
- "# Reshape the input data for LSTM\n",
- "n_features = X_train_scaled.shape[1]\n",
- "n_steps = 10\n",
- "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
- "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
- "\n",
- "# Reshape the input data\n",
- "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
- "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 93,
- "metadata": {
- "id": "r066pVYpnXH5"
- },
- "outputs": [],
- "source": [
- "# Create an LSTM model\n",
- "model = Sequential()\n",
- "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
- "model.add(Dense(1))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 94,
- "metadata": {
- "id": "YpSfHu6gov35"
- },
- "outputs": [],
- "source": [
- "# Compile the model\n",
- "model.compile(loss='mean_squared_error', optimizer='adam')\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 95,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "0vHjcluaoxzP",
- "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 95,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 96,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "gEE06_TjozYv",
- "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "44/44 [==============================] - 0s 4ms/step\n"
- ]
- }
- ],
- "source": [
- "rmse, mae, mape = evaluate_model(model10, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"LSTM\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create a DataFrame for metrics\n",
- "metrics_df = pd.DataFrame(metrics)\n",
- "\n",
- "# Plot RMSE, MAE, and MAPE for each model\n",
- "plt.figure(figsize=(15, 5))\n",
- "\n",
- "# RMSE Plot\n",
- "plt.subplot(1, 3, 1)\n",
- "plt.bar(metrics_df['Model'], metrics_df['RMSE'], color='lightblue')\n",
- "plt.xlabel('RMSE')\n",
- "plt.title('RMSE for Different Models')\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# MAE Plot\n",
- "plt.subplot(1, 3, 2)\n",
- "plt.bar(metrics_df['Model'], metrics_df['MAE'], color='lightgreen')\n",
- "plt.xlabel('MAE')\n",
- "plt.title('MAE for Different Models')\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# MAPE Plot\n",
- "plt.subplot(1, 3, 3)\n",
- "plt.bar(metrics_df['Model'], metrics_df['MAPE'], color='salmon')\n",
- "plt.xlabel('MAPE')\n",
- "plt.title('MAPE for Different Models')\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "colab": {
- "provenance": []
- },
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "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.9.16"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 0
-}
From 4b421087d26d78f51843af2722cf856b9c1f38dc Mon Sep 17 00:00:00 2001
From: Ayushi Sha <124066968+AYUSHI-SHA@users.noreply.github.com>
Date: Sun, 6 Oct 2024 14:45:27 +0530
Subject: [PATCH 06/76] conflicts resolving
---
Python File/Stock_Price_Prediction.ipynb | 2708 ++++++++++++++++++++++
Stock_Price_Prediction.ipynb | 1805 ++++++++++++++
2 files changed, 4513 insertions(+)
create mode 100644 Python File/Stock_Price_Prediction.ipynb
create mode 100644 Stock_Price_Prediction.ipynb
diff --git a/Python File/Stock_Price_Prediction.ipynb b/Python File/Stock_Price_Prediction.ipynb
new file mode 100644
index 0000000..c82b075
--- /dev/null
+++ b/Python File/Stock_Price_Prediction.ipynb
@@ -0,0 +1,2708 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "id": "qCDSjVhXLr_Z"
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, accuracy_score, precision_score, confusion_matrix, recall_score, f1_score"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/content/drive')\n",
+ "df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "SOQbXSiB-g5G",
+ "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e"
+ },
+ "execution_count": 22,
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
+ ]
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "Sc4id6VxL8BS",
+ "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " Date Open High Low Close Adj Close \\\n",
+ "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
+ "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
+ "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
+ "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
+ "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
+ "\n",
+ " Volume \n",
+ "0 43733533.0 \n",
+ "1 56167280.0 \n",
+ "2 68296318.0 \n",
+ "3 86073880.0 \n",
+ "4 76613039.0 "
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Date \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Adj Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 01-01-1996 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 12.409931 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 02-01-1996 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 12.014931 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 03-01-1996 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 11.694577 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 04-01-1996 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 11.654142 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 05-01-1996 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 11.588827 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 23
+ }
+ ],
+ "source": [
+ "# Load the dataset\n",
+ "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "id": "7LaYGXsfN-8y"
+ },
+ "outputs": [],
+ "source": [
+ "# Drop the 'Date' and 'Adj Close' columns\n",
+ "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "pqbTBdnBOKJc",
+ "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ " Open High Low Close Volume\n",
+ "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
+ "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
+ "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
+ "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
+ "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
+ ],
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 25
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "id": "dydEPoNeM6eN"
+ },
+ "outputs": [],
+ "source": [
+ "# Handle missing values\n",
+ "from sklearn.impute import SimpleImputer\n",
+ "imputer = SimpleImputer(strategy='mean')\n",
+ "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "id": "OQ3cGqgTMBwt"
+ },
+ "outputs": [],
+ "source": [
+ "# Select features and target variable\n",
+ "X = df[['Open', 'High', 'Low', 'Volume']]\n",
+ "y = df['Close']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "id": "9Oz-bwJOMEWD"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "id": "ugapDyXODtn3"
+ },
+ "outputs": [],
+ "source": [
+ "# Scale the features using Min-Max scaling\n",
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "997ZEgibCZIO",
+ "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(5659, 4)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 29
+ }
+ ],
+ "source": [
+ "X_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "bmtt76RuCeyG",
+ "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(1415, 4)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 30
+ }
+ ],
+ "source": [
+ "X_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "CeJkUJ92Ciqd",
+ "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(5659,)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 31
+ }
+ ],
+ "source": [
+ "y_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7HGC7VuTCjWc",
+ "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(1415,)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 32
+ }
+ ],
+ "source": [
+ "y_test.shape"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "c6Ek8jRlO2_I"
+ },
+ "source": [
+ "## 1. LINEAR REGRESSION"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "id": "RdZ1SpzdMHAJ"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a linear regression model\n",
+ "model1 = LinearRegression()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "mPM035IzMY04",
+ "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "5286 257.350006\n",
+ "3408 129.464996\n",
+ "5477 279.350006\n",
+ "6906 588.500000\n",
+ "530 21.644367\n",
+ "Name: Close, dtype: float64"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 34
+ }
+ ],
+ "source": [
+ "y_train.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "qBhQ9HbYMI3d",
+ "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "LinearRegression()"
+ ],
+ "text/html": [
+ "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 35
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model1.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "id": "X269co2kMS4z"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred1 = model1.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {
+ "id": "QK8GvDYPOd0Y"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse1 = np.sqrt(mean_squared_error(y_test, pred1))\n",
+ "mae1 = mean_absolute_error(y_test, pred1)\n",
+ "mape1 = mean_absolute_percentage_error(y_test, pred1)\n",
+ "accuracy1 = accuracy_score(y_test > pred1, y_test > pred1.round())\n",
+ "precision1 = precision_score(y_test > pred1, y_test > pred1.round())\n",
+ "confusion1 = confusion_matrix(y_test > pred1, y_test > pred1.round())\n",
+ "recall1 = recall_score(y_test > pred1, y_test > pred1.round())\n",
+ "f11 = f1_score(y_test > pred1, y_test > pred1.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "dEi49xtEOtne",
+ "outputId": "0000b074-3187-41de-fbac-4ae75cbda6bd"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 1.6881364643681482\n",
+ "MAE: 0.9433353485344729\n",
+ "MAPE: 0.006085435990853812\n",
+ "Accuracy: 0.8296819787985866\n",
+ "Precision: 0.8623595505617978\n",
+ "Confusion Matrix:\n",
+ " [[560 98]\n",
+ " [143 614]]\n",
+ "Recall: 0.8110964332892999\n",
+ "F1 Score: 0.8359428182437032\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse1)\n",
+ "print(\"MAE:\", mae1)\n",
+ "print(\"MAPE:\", mape1)\n",
+ "print(\"Accuracy:\", accuracy1)\n",
+ "print(\"Precision:\", precision1)\n",
+ "print(\"Confusion Matrix:\\n\", confusion1)\n",
+ "print(\"Recall:\", recall1)\n",
+ "print(\"F1 Score:\", f11)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "GxtMzlg-gR2P"
+ },
+ "source": [
+ "## 2. SVR"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {
+ "id": "o7K9r7EXWRjQ"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.svm import SVR"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "id": "0xQewd7QWTtq"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an SVR model\n",
+ "model2 = SVR()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "metadata": {
+ "id": "DuNes3s6U2IV"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "22SaCsQmfhgP",
+ "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "SVR()"
+ ],
+ "text/html": [
+ "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 42
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model2.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {
+ "id": "OQ1nL4oYfkAC"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred2 = model2.predict(X_test)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {
+ "id": "nRYTwydsfpjb"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse2 = np.sqrt(mean_squared_error(y_test, pred2))\n",
+ "mae2 = mean_absolute_error(y_test, pred2)\n",
+ "mape2 = mean_absolute_percentage_error(y_test, pred2)\n",
+ "accuracy2 = accuracy_score(y_test > pred2, y_test > pred2.round())\n",
+ "precision2 = precision_score(y_test > pred2, y_test > pred2.round())\n",
+ "confusion2 = confusion_matrix(y_test > pred2, y_test > pred2.round())\n",
+ "recall2 = recall_score(y_test > pred2, y_test > pred2.round())\n",
+ "f12 = f1_score(y_test > pred2, y_test > pred2.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "656J5oz5fzq6",
+ "outputId": "ce67d2d8-0bc8-4e6d-d6b5-6b78e7e1c59b"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 147.71103599153602\n",
+ "MAE: 110.99419106508152\n",
+ "MAPE: 1.9715076513294716\n",
+ "Accuracy: 0.9992932862190813\n",
+ "Precision: 1.0\n",
+ "Confusion Matrix:\n",
+ " [[727 0]\n",
+ " [ 1 687]]\n",
+ "Recall: 0.998546511627907\n",
+ "F1 Score: 0.9992727272727273\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse2)\n",
+ "print(\"MAE:\", mae2)\n",
+ "print(\"MAPE:\", mape2)\n",
+ "print(\"Accuracy:\", accuracy2)\n",
+ "print(\"Precision:\", precision2)\n",
+ "print(\"Confusion Matrix:\\n\", confusion2)\n",
+ "print(\"Recall:\", recall2)\n",
+ "print(\"F1 Score:\", f12)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "hcIfVMWdgcKt"
+ },
+ "source": [
+ "## 3. Random Forest"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "id": "f7raXT_hf2ij"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.ensemble import RandomForestRegressor\n",
+ "# Create a Random Forest model\n",
+ "model3 = RandomForestRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {
+ "id": "TadNM7MEU7fh"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "fF002Yepgk55",
+ "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "RandomForestRegressor()"
+ ],
+ "text/html": [
+ "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 48
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model3.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "id": "8nRU_pzEgnCt"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred3 = model3.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {
+ "id": "4aKEXGVUgsry"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse3 = np.sqrt(mean_squared_error(y_test, pred3))\n",
+ "mae3 = mean_absolute_error(y_test, pred3)\n",
+ "mape3 = mean_absolute_percentage_error(y_test, pred3)\n",
+ "accuracy3 = accuracy_score(y_test > pred3, y_test > pred3.round())\n",
+ "precision3 = precision_score(y_test > pred3, y_test > pred3.round())\n",
+ "confusion3 = confusion_matrix(y_test > pred3, y_test > pred3.round())\n",
+ "recall3 = recall_score(y_test > pred3, y_test > pred3.round())\n",
+ "f13 = f1_score(y_test > pred3, y_test > pred3.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "8pPzsCY1g305",
+ "outputId": "72c4ea56-2610-41c6-f286-4c8289d3f0ac"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 2.189635498596314\n",
+ "MAE: 1.250413817712252\n",
+ "MAPE: 0.007984509559881612\n",
+ "Accuracy: 0.8551236749116607\n",
+ "Precision: 0.8558823529411764\n",
+ "Confusion Matrix:\n",
+ " [[628 98]\n",
+ " [107 582]]\n",
+ "Recall: 0.8447024673439768\n",
+ "F1 Score: 0.8502556610664718\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse3)\n",
+ "print(\"MAE:\", mae3)\n",
+ "print(\"MAPE:\", mape3)\n",
+ "print(\"Accuracy:\", accuracy3)\n",
+ "print(\"Precision:\", precision3)\n",
+ "print(\"Confusion Matrix:\\n\", confusion3)\n",
+ "print(\"Recall:\", recall3)\n",
+ "print(\"F1 Score:\", f13)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "mZsLwLivhLGH"
+ },
+ "source": [
+ "## 4. Gradient Boosting Models (GBM)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "id": "TI8idoxOg6jF"
+ },
+ "outputs": [],
+ "source": [
+ "import xgboost as xgb\n",
+ "# Create an XGBoost model\n",
+ "model4 = xgb.XGBRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "id": "7r9xJDtOVBEA"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
+ },
+ "id": "2gpbDxshhexj",
+ "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
+ ],
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 54
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model4.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {
+ "id": "Jj9DXdUPhh9V"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred4 = model4.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "metadata": {
+ "id": "TdH60Sllhn5O"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse4 = np.sqrt(mean_squared_error(y_test, pred4))\n",
+ "mae4 = mean_absolute_error(y_test, pred4)\n",
+ "mape4 = mean_absolute_percentage_error(y_test, pred4)\n",
+ "accuracy4 = accuracy_score(y_test > pred4, y_test > pred4.round())\n",
+ "precision4 = precision_score(y_test > pred4, y_test > pred4.round())\n",
+ "confusion4 = confusion_matrix(y_test > pred4, y_test > pred4.round())\n",
+ "recall4 = recall_score(y_test > pred4, y_test > pred4.round())\n",
+ "f14 = f1_score(y_test > pred4, y_test > pred4.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "qpnLeFyZhwB3",
+ "outputId": "4dcac062-ec60-4b2c-ab4b-dcda1b0f2341"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 2.733930065274145\n",
+ "MAE: 1.502457380471909\n",
+ "MAPE: 0.010026410639661481\n",
+ "Accuracy: 0.8840989399293286\n",
+ "Precision: 0.8948106591865358\n",
+ "Confusion Matrix:\n",
+ " [[613 75]\n",
+ " [ 89 638]]\n",
+ "Recall: 0.8775790921595599\n",
+ "F1 Score: 0.8861111111111112\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse4)\n",
+ "print(\"MAE:\", mae4)\n",
+ "print(\"MAPE:\", mape4)\n",
+ "print(\"Accuracy:\", accuracy4)\n",
+ "print(\"Precision:\", precision4)\n",
+ "print(\"Confusion Matrix:\\n\", confusion4)\n",
+ "print(\"Recall:\", recall4)\n",
+ "print(\"F1 Score:\", f14)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "d8nSGoyuh9dx"
+ },
+ "source": [
+ "## 5. Extreme Gradient Boosting (XGBoost)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {
+ "id": "DyhhdlZAhx94"
+ },
+ "outputs": [],
+ "source": [
+ "import xgboost as xgb\n",
+ "# Create an XGBoost model\n",
+ "model5 = xgb.XGBRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {
+ "id": "Z_AD0lVOVHwB"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
+ },
+ "id": "RAIwxIp5iH9Z",
+ "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
+ ],
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 60
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model5.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "metadata": {
+ "id": "XmJds5fYiKT3"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred5 = model5.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {
+ "id": "lZ1A0-L8iNCM"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse5 = np.sqrt(mean_squared_error(y_test, pred5))\n",
+ "mae5 = mean_absolute_error(y_test, pred5)\n",
+ "mape5 = mean_absolute_percentage_error(y_test, pred5)\n",
+ "accuracy5 = accuracy_score(y_test > pred5, y_test > pred5.round())\n",
+ "precision5 = precision_score(y_test > pred5, y_test > pred5.round())\n",
+ "confusion5 = confusion_matrix(y_test > pred5, y_test > pred5.round())\n",
+ "recall5 = recall_score(y_test > pred5, y_test > pred5.round())\n",
+ "f15 = f1_score(y_test > pred5, y_test > pred5.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7IkE-RAmiWNo",
+ "outputId": "cf4c1d84-412b-4a18-f70c-65ce637772ea"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 2.733930065274145\n",
+ "MAE: 1.502457380471909\n",
+ "MAPE: 0.010026410639661481\n",
+ "Accuracy: 0.8840989399293286\n",
+ "Precision: 0.8948106591865358\n",
+ "Confusion Matrix:\n",
+ " [[613 75]\n",
+ " [ 89 638]]\n",
+ "Recall: 0.8775790921595599\n",
+ "F1 Score: 0.8861111111111112\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse5)\n",
+ "print(\"MAE:\", mae5)\n",
+ "print(\"MAPE:\", mape5)\n",
+ "print(\"Accuracy:\", accuracy5)\n",
+ "print(\"Precision:\", precision5)\n",
+ "print(\"Confusion Matrix:\\n\", confusion5)\n",
+ "print(\"Recall:\", recall5)\n",
+ "print(\"F1 Score:\", f15)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "A_J776rtiovq"
+ },
+ "source": [
+ "## 6. AdaBoostRegressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {
+ "id": "HNq66cXRiYPJ"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.ensemble import AdaBoostRegressor\n",
+ "# Create an AdaBoost model\n",
+ "model6 = AdaBoostRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "id": "qPHH6rG0VW4V"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "P0oB5wjQivBr",
+ "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "AdaBoostRegressor()"
+ ],
+ "text/html": [
+ "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 66
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model6.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {
+ "id": "Bf1m5ukOi2VM"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred6 = model6.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {
+ "id": "oFWSqC4ai6gd"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse6 = np.sqrt(mean_squared_error(y_test, pred6))\n",
+ "mae6 = mean_absolute_error(y_test, pred6)\n",
+ "mape6 = mean_absolute_percentage_error(y_test, pred6)\n",
+ "accuracy6 = accuracy_score(y_test > pred6, y_test > pred6.round())\n",
+ "precision6 = precision_score(y_test > pred6, y_test > pred6.round())\n",
+ "confusion6 = confusion_matrix(y_test > pred6, y_test > pred6.round())\n",
+ "recall6 = recall_score(y_test > pred6, y_test > pred6.round())\n",
+ "f16 = f1_score(y_test > pred6, y_test > pred6.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 69,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "BsajWJGBjC80",
+ "outputId": "1af1194f-9a33-40af-8578-c99832509c1b"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 9.283285018137352\n",
+ "MAE: 7.574989783595977\n",
+ "MAPE: 0.16829256716397573\n",
+ "Accuracy: 0.9901060070671378\n",
+ "Precision: 0.9900990099009901\n",
+ "Confusion Matrix:\n",
+ " [[901 5]\n",
+ " [ 9 500]]\n",
+ "Recall: 0.9823182711198428\n",
+ "F1 Score: 0.9861932938856016\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse6)\n",
+ "print(\"MAE:\", mae6)\n",
+ "print(\"MAPE:\", mape6)\n",
+ "print(\"Accuracy:\", accuracy6)\n",
+ "print(\"Precision:\", precision6)\n",
+ "print(\"Confusion Matrix:\\n\", confusion6)\n",
+ "print(\"Recall:\", recall6)\n",
+ "print(\"F1 Score:\", f16)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Q9DzOt3CkWFX"
+ },
+ "source": [
+ "## 7. Decision Tree"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {
+ "id": "23DZ2biSjF9a"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.tree import DecisionTreeRegressor\n",
+ "# Create a Decision Tree model\n",
+ "model7 = DecisionTreeRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {
+ "id": "Ajo2RAVAVb7H"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "6mQEQf-ykc9F",
+ "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "DecisionTreeRegressor()"
+ ],
+ "text/html": [
+ "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 72
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model7.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {
+ "id": "BFJ9q_tvkgRC"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred7 = model7.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 74,
+ "metadata": {
+ "id": "9IxfYZbYkjv1"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse7 = np.sqrt(mean_squared_error(y_test, pred7))\n",
+ "mae7 = mean_absolute_error(y_test, pred7)\n",
+ "mape7 = mean_absolute_percentage_error(y_test, pred7)\n",
+ "accuracy7 = accuracy_score(y_test > pred7, y_test > pred7.round())\n",
+ "precision7 = precision_score(y_test > pred7, y_test > pred7.round())\n",
+ "confusion7 = confusion_matrix(y_test > pred7, y_test > pred7.round())\n",
+ "recall7 = recall_score(y_test > pred7, y_test > pred7.round())\n",
+ "f17 = f1_score(y_test > pred7, y_test > pred7.round())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "AnZXMYb8kooV",
+ "outputId": "273fa9ed-d6f2-4c4d-fb0e-a643f5ef5732"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 3.193539964582351\n",
+ "MAE: 1.6240937361593886\n",
+ "MAPE: 0.010136361140005275\n",
+ "Accuracy: 0.8579505300353357\n",
+ "Precision: 0.8700410396716827\n",
+ "Confusion Matrix:\n",
+ " [[578 95]\n",
+ " [106 636]]\n",
+ "Recall: 0.8571428571428571\n",
+ "F1 Score: 0.8635437881873728\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse7)\n",
+ "print(\"MAE:\", mae7)\n",
+ "print(\"MAPE:\", mape7)\n",
+ "print(\"Accuracy:\", accuracy7)\n",
+ "print(\"Precision:\", precision7)\n",
+ "print(\"Confusion Matrix:\\n\", confusion7)\n",
+ "print(\"Recall:\", recall7)\n",
+ "print(\"F1 Score:\", f17)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "LH-B-Xd6k5UD"
+ },
+ "source": [
+ "## 8. KNeighborsRegressor(KNN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {
+ "id": "JVDSed7yktFY"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.neighbors import KNeighborsRegressor\n",
+ "# Create a KNN model\n",
+ "model8 = KNeighborsRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {
+ "id": "XJHb5SxrVgVp"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "9fn64o-ZlBka",
+ "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "KNeighborsRegressor()"
+ ],
+ "text/html": [
+ "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ]
+ },
+ "metadata": {},
+ "execution_count": 78
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model8.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 79,
+ "metadata": {
+ "id": "hbfbbjcSlDn7"
+ },
+ "outputs": [],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred8 = model8.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {
+ "id": "hnWyNv3blHdL"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse8 = np.sqrt(mean_squared_error(y_test, pred8))\n",
+ "mae8 = mean_absolute_error(y_test, pred8)\n",
+ "mape8 = mean_absolute_percentage_error(y_test, pred8)\n",
+ "accuracy8 = accuracy_score(y_test > pred8, y_test > pred8.round())\n",
+ "precision8 = precision_score(y_test > pred8, y_test > pred8.round())\n",
+ "confusion8 = confusion_matrix(y_test > pred8, y_test > pred8.round())\n",
+ "recall8 = recall_score(y_test > pred8, y_test > pred8.round())\n",
+ "f18 = f1_score(y_test > pred8, y_test > pred8.round())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "IPoDRkcMlMAr",
+ "outputId": "9892f42f-e65f-46c0-eeed-77ce32f6a7eb"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 148.73183825029315\n",
+ "MAE: 109.35229571264969\n",
+ "MAPE: 1.75024316976612\n",
+ "Accuracy: 0.9908127208480565\n",
+ "Precision: 0.9887820512820513\n",
+ "Confusion Matrix:\n",
+ " [[785 7]\n",
+ " [ 6 617]]\n",
+ "Recall: 0.9903691813804173\n",
+ "F1 Score: 0.9895749799518845\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse8)\n",
+ "print(\"MAE:\", mae8)\n",
+ "print(\"MAPE:\", mape8)\n",
+ "print(\"Accuracy:\", accuracy8)\n",
+ "print(\"Precision:\", precision8)\n",
+ "print(\"Confusion Matrix:\\n\", confusion8)\n",
+ "print(\"Recall:\", recall8)\n",
+ "print(\"F1 Score:\", f18)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "X5XtlzMXljps"
+ },
+ "source": [
+ "## 9. Artificial Neural Networks (ANN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 82,
+ "metadata": {
+ "id": "bJk1-9VhlRL6"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "from tensorflow.keras.models import Sequential\n",
+ "from tensorflow.keras.layers import Dense"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {
+ "id": "sZVPMR9Wlo7-"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {
+ "id": "vd1fDjQiltP4"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an ANN model\n",
+ "model9 = Sequential()\n",
+ "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
+ "model9.add(Dense(16, activation='relu'))\n",
+ "model9.add(Dense(1, activation='linear'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {
+ "id": "ZIf94WLMlv04"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model9.compile(loss='mean_squared_error', optimizer='adam')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "FX5DTKqslxWf",
+ "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "execution_count": 86
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "OVW2qpNsmGVq",
+ "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "45/45 [==============================] - 0s 1ms/step\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Make predictions on the test set\n",
+ "pred9 = model9.predict(X_test_scaled).flatten()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 88,
+ "metadata": {
+ "id": "CqRmjMj2maJY"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse9 = np.sqrt(mean_squared_error(y_test, pred9))\n",
+ "mae9 = mean_absolute_error(y_test, pred9)\n",
+ "mape9 = mean_absolute_percentage_error(y_test, pred9)\n",
+ "accuracy9 = accuracy_score(y_test > pred9, y_test > pred9.round())\n",
+ "precision9 = precision_score(y_test > pred9, y_test > pred9.round())\n",
+ "confusion9 = confusion_matrix(y_test > pred9, y_test > pred9.round())\n",
+ "recall9 = recall_score(y_test > pred9, y_test > pred9.round())\n",
+ "f19 = f1_score(y_test > pred9, y_test > pred9.round())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 89,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "5zuwkC1emmh3",
+ "outputId": "5d6a0e05-3112-4d27-f5fb-ed665867b22d"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 2.7570259701356035\n",
+ "MAE: 1.7412277270507284\n",
+ "MAPE: 0.012205298865408084\n",
+ "Accuracy: 0.8904593639575972\n",
+ "Precision: 0.8242753623188406\n",
+ "Confusion Matrix:\n",
+ " [[805 97]\n",
+ " [ 58 455]]\n",
+ "Recall: 0.8869395711500975\n",
+ "F1 Score: 0.8544600938967135\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print the evaluation metrics\n",
+ "print(\"RMSE:\", rmse9)\n",
+ "print(\"MAE:\", mae9)\n",
+ "print(\"MAPE:\", mape9)\n",
+ "print(\"Accuracy:\", accuracy9)\n",
+ "print(\"Precision:\", precision9)\n",
+ "print(\"Confusion Matrix:\\n\", confusion9)\n",
+ "print(\"Recall:\", recall9)\n",
+ "print(\"F1 Score:\", f19)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "vjSMQNcOnFPJ"
+ },
+ "source": [
+ "## 10. LSTM(Long Short term Memory)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {
+ "id": "nCoyUanhnDKw"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "from tensorflow.keras.models import Sequential\n",
+ "from tensorflow.keras.layers import LSTM, Dense"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 91,
+ "metadata": {
+ "id": "ThcXESVEVv0U"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 92,
+ "metadata": {
+ "id": "uACvajfImrbB"
+ },
+ "outputs": [],
+ "source": [
+ "# Reshape the input data for LSTM\n",
+ "n_features = X_train_scaled.shape[1]\n",
+ "n_steps = 10\n",
+ "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
+ "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
+ "\n",
+ "# Reshape the input data\n",
+ "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
+ "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 93,
+ "metadata": {
+ "id": "r066pVYpnXH5"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an LSTM model\n",
+ "model = Sequential()\n",
+ "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
+ "model.add(Dense(1))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {
+ "id": "YpSfHu6gov35"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model.compile(loss='mean_squared_error', optimizer='adam')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 95,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "0vHjcluaoxzP",
+ "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
+ },
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "execution_count": 95
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 96,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "gEE06_TjozYv",
+ "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "44/44 [==============================] - 0s 4ms/step\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Make predictions on the test set\n",
+ "y_pred = model.predict(X_test_reshaped).flatten()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 113,
+ "metadata": {
+ "id": "7k6C8DrxpB_Q"
+ },
+ "outputs": [],
+ "source": [
+ "# Calculate evaluation metrics\n",
+ "rmse10 = np.sqrt(mean_squared_error(y_test[n_steps-1:], y_pred))\n",
+ "mae10 = mean_absolute_error(y_test[n_steps-1:], y_pred)\n",
+ "mape10 = mean_absolute_percentage_error(y_test[n_steps-1:], y_pred)\n",
+ "accuracy10 = accuracy_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
+ "precision10 = precision_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
+ "recall10 = recall_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
+ "f110 = f1_score(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n",
+ "confusion10 = confusion_matrix(y_test[n_steps-1:] > y_pred, y_test[n_steps-1:] > y_pred.round())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 114,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "i_6-UUDhpi0c",
+ "outputId": "3dcc5761-03b6-4b52-dfe6-08dece835c8d"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stdout",
+ "text": [
+ "RMSE: 10.083053125286519\n",
+ "MAE: 7.973378150691296\n",
+ "MAPE: 0.12730792351246625\n",
+ "Accuracy: 0.9886201991465149\n",
+ "Precision: 0.9904912836767037\n",
+ "Recall: 0.984251968503937\n",
+ "F1 Score: 0.9873617693522907\n",
+ "Confusion Matrix:\n",
+ " [[765 6]\n",
+ " [ 10 625]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print evaluation metrics\n",
+ "print(\"RMSE:\", rmse10)\n",
+ "print(\"MAE:\", mae10)\n",
+ "print(\"MAPE:\", mape10)\n",
+ "print(\"Accuracy:\", accuracy10)\n",
+ "print(\"Precision:\", precision10)\n",
+ "print(\"Recall:\", recall10)\n",
+ "print(\"F1 Score:\", f110)\n",
+ "print(\"Confusion Matrix:\\n\", confusion10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of accuracies from accuracy1 to accuracy10\n",
+ "accuracies = [accuracy1*100, accuracy2*100, accuracy3*100, accuracy4*100, accuracy5*100, accuracy6*100, accuracy7*100, accuracy8*100, accuracy9*100, accuracy10*100]\n",
+ "\n",
+ "# List of corresponding labels for each accuracy\n",
+ "labels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, accuracies, color='blue')\n",
+ "plt.xlabel('Accuracy Variables')\n",
+ "plt.ylabel('Accuracy Values')\n",
+ "plt.title('Bar Graph of Accuracies')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "qpWPtph9CGip",
+ "outputId": "c099cb8d-96af-4223-f499-743040aecdf1"
+ },
+ "execution_count": 117,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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PVo9evTQihUrtGbNGk2cOFExMTFat26dWrRoUawcQFFQdoBS9vvvv0v6vxmXpUuXysPDQ2vWrLG5p0lsbGyx9tOxY0f5+voqPj5eEyZMyPfhaC97c16bCfijgwcPqlKlSqpRo0axskhSSEiIJOnAgQP5ZhsOHDhgXW6vuLg4+fv76/3338+3bNmyZVq+fLlmz54tT09P1atXT/v27bvh9urVq6ctW7boypUrqlixYoHrXJvJ+vNdna/NXhXG3r17dfDgQc2fP1+DBw+2jl+bxbumbt26knTT3H927URqf3//Qt2rqF69enrmmWf0zDPP6NChQ2revLnefvttffrpp3btF3AEztkBStGVK1e0du1aubm5qVGjRpKuzmpYLBabv+KPHTumFStWFGtflSpV0rPPPqt9+/Zp/PjxBc6S2DNzYm/OzZs325zLc/LkSX3xxRe69957HXL/ltatW8vf31+zZ8+2OaT2zTffaP/+/fmuDiuMixcvatmyZXrggQf00EMP5XtER0crMzNTK1eulHT1qqPdu3dr+fLl+bZ17b3t27evzp49q/fee++664SEhMjV1TXfpfkffPBBobNfe0//+Ds1DEPvvvuuzXo1atTQnXfeqblz5+rEiRMF5ilI165d5ePjo9dff11XrlzJt/zMmTOSrt7y4NKlSzbL6tWrJ29vb5vfE1CamNkBStA333yjn376SdLVG9stXLhQhw4d0vjx463nOHTv3l3Tp0/Xfffdp7///e9KTU3V+++/r/r162vPnj3F2v/48eO1f/9+vfnmm1q7dq369u2rmjVr6vz589q5c6eWLFkif3//Qt0w0N6cTZo0UdeuXW0uPZekKVOmFOtnuqZixYqaOnWqhg0bprvuuksDBw60Xnpep04djRkzxu5trly5UpmZmXrwwQcLXN62bVvVqFFDcXFx6t+/v/75z3/q888/V79+/TR8+HC1atVK586d08qVKzV79mw1a9ZMgwcP1ieffKKxY8dq69at6tixo7Kzs/Xtt99q5MiR6tmzp3x9fdWvXz/NnDlTFotF9erV06pVq6w3QyyMsLAw1atXT+PGjdOpU6fk4+OjpUuXFniS8IwZM9ShQwe1bNlSI0aMUGhoqI4dO6avvvpKSUlJBW7fx8dHs2bN0qOPPqqWLVtqwIABqlGjhk6cOKGvvvpKd9xxh9577z0d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l51NmzapW7du+cbvv/9+bdq0ySGh/iwqKkrdu3dXRESEzfiOHTt05coVm/GwsDDVrl1bmzdvvu72cnJylJGRYfMAAADmZPdhrKysrALPzalYsWKJlIb4+Hjt3LlT27Zty7csOTlZbm5u8vPzsxkPCAhQcnLydbcZExOjKVOmODoqAAAog+ye2WnatKkWL16cbzw+Pl633XabQ0Jdc/LkSY0aNUpxcXHy8PBw2HYnTJig9PR06+PkyZMO2zYAAChb7J7ZmThxovr06aMjR47onnvukSQlJiZq0aJFBX5nVnHs2LFDqampatmypXUsNzdXmzZt0nvvvac1a9bo8uXLSktLs5ndSUlJUWBg4HW36+7uLnd3d4dmBQAAZZPdZadHjx5asWKFXn/9dX3++efy9PTU7bffrm+//VZ33XWXQ8N17txZe/futRkbNmyYwsLC9Nxzz6lWrVqqWLGiEhMT1bdvX0nSgQMHdOLECbVr186hWQAAQPlUpEvPu3fvru7du+cb37dvn5o0aVLsUNd4e3vn256Xl5eqVatmHY+MjNTYsWNVtWpV+fj46KmnnlK7du3Utm1bh+UAAADlV5Hvs3NNZmamFi1apI8//lg7duxQbm6uI3IV2r/+9S+5uLiob9++ysnJUdeuXfXBBx+UagYAAFB2WQzDMIrywk2bNunjjz/WsmXLFBwcrD59+qhv375q06aNozOWuIyMDPn6+io9PV0+Pj4O3bbF4tDNOURhfuPkdhxyly5yly5yly4z5y6Kwn5+2zWzk5ycrHnz5mnOnDnKyMjQww8/rJycHK1YscLhV2IBAAA4QqEvPe/Ro4caNmyoPXv26J133tGvv/6qmTNnlmQ2AACAYiv0zM4333yjp59+Wk8++WSpficWAABAcRR6Zue7775TZmamWrVqpfDwcL333ns6e/ZsSWYDAAAotkKXnbZt2+qjjz7S6dOn9cQTTyg+Pl7BwcHKy8tTQkKCMjMzSzInAABAkRT5aizp6g385syZowULFigtLU1dunTRypUrHZmvVHA1Vn7kdhxyly5yly5yly4z5y6Kwn5+2/3dWH/UsGFDTZs2Tb/88osWLVpUnE0BAACUiGLN7JgFMzv5kdtxyF26yF26yF26zJy7KEplZgcAAKCso+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTo+wAAABTK9NlJyYmRm3atJG3t7f8/f3Vq1cvHThwwGadS5cuKSoqStWqVVPlypXVt29fpaSkOCkxAAAoa8p02dm4caOioqL0v//9TwkJCbpy5YruvfdeZWdnW9cZM2aMvvzySy1ZskQbN27Ur7/+qj59+jgxNQAAKEsshmEYzg5RWGfOnJG/v782btyoO++8U+np6apRo4YWLlyohx56SJL0008/qVGjRtq8ebPatm1bqO1mZGTI19dX6enp8vHxcWhmi8Whm3OIwvzGye045C5d5C5d5C5dZs5dFIX9/C7TMzt/lp6eLkmqWrWqJGnHjh26cuWKIiIirOuEhYWpdu3a2rx583W3k5OTo4yMDJsHAAAwp3JTdvLy8jR69GjdcccdatKkiSQpOTlZbm5u8vPzs1k3ICBAycnJ191WTEyMfH19rY9atWqVZHQAAOBE5absREVFad++fYqPjy/2tiZMmKD09HTr4+TJkw5ICAAAyqIKzg5QGNHR0Vq1apU2bdqkmjVrWscDAwN1+fJlpaWl2czupKSkKDAw8Lrbc3d3l7u7e0lGBgAAZUSZntkxDEPR0dFavny51q1bp9DQUJvlrVq1UsWKFZWYmGgdO3DggE6cOKF27dqVdlwAAFAGlemZnaioKC1cuFBffPGFvL29refh+Pr6ytPTU76+voqMjNTYsWNVtWpV+fj46KmnnlK7du0KfSUWAAAwtzJddmbNmiVJuvvuu23GY2NjNXToUEnSv/71L7m4uKhv377KyclR165d9cEHH5RyUgAAUFaVq/vslBTus5MfuR2H3KWL3KWL3KXLzLmLwpT32QEAALAXZQcAAJgaZQcAAJgaZQcA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V65cybeel5dXvrEePXro3Llz+uijj7RlyxZt2bJF0v+dwHyzfbu5uWnw4MGKjY3V5cuXtXDhQg0fPvymeYcOHar58+crLy9PsbGx6tSpk+rWrStJGjdunJYvX67XX39d//nPf5SUlKSmTZvmO4+moJ/nj+Lj4zVu3DhFRkZq7dq1SkpK0rBhw4p1cnZWVpZcXV21Y8cOJSUlWR/79++3ng/02GOP6eeff9ajjz6qvXv3qnXr1po5c2aR9wmYAWUHMLHff/9dn3zyid5++22bD8fdu3crODhYixYtkiTdfvvtSkxMLHAbTZs2VV5enjZu3Fjg8ho1aigzM1PZ2dnWscLca+a3337TgQMH9OKLL6pz585q1KiRzp8/b7PO7bffrqSkJJ07d+6623nsscf07bff6oMPPtDvv/+uPn363HTfw4YN08mTJ7Vs2TItX75ckZGR1mXff/+9hg4dqt69e6tp06YKDAzUsWPHbrrNP/v+++/Vvn17jRw5Ui1atFD9+vXznXwtSbt377a5Oux///ufKleurFq1auVbt0WLFsrNzVVqaqrq169v8wgMDLSuV6tWLf3jH//QsmXL9Mwzz+ijjz6yOz9gJpQdwMRWrVql8+fPKzIyUk2aNLF59O3b13ooa/LkyVq0aJEmT56s/fv3W09sla5eeTRkyBANHz5cK1assF65dO1E2/DwcFWqVEnPP/+8jhw5ooULFxZ4tdefValSRdWqVdOHH36ow4cPa926dRo7dqzNOgMHDlRgYKB69eql77//Xj///LOWLl2qzZs3W9dp1KiR2rZtq+eee04DBw686WyQJIWGhuqee+7RiBEj5O7ublOQGjRoYD2Jevfu3fr73/9e4JVdN9OgQQNt375da9as0cGDBzVx4kRt27Yt33qXL19WZGSkfvzxR3399deaPHmyoqOjCzzB+tZbb9WgQYM0ePBgLVu2TEePHtXWrVsVExOjr776SpI0evRorVmzRkePHtXOnTu1fv16NWrUyO78gJlQdgATmzNnjiIiIuTr65tvWd++fbV9+3bt2bNHd999t5YsWaKVK1eqefPmuueee7R161brurNmzdJDDz2kkSNHKiwsTI8//rh1Jqdq1ar69NNP9fXXX6tp06ZatGiRXnrppZtmc3FxUXx8vHbs2KEmTZpozJgxevPNN23WcXNz09q1a+Xv769u3bqpadOmeuONN+Tq6mqzXmRkpC5fvnzTQ1h/fs358+f197//3XopvCRNnz5dVapUUfv27dWjRw917dpVLVu2LPR2r3niiSfUp08f9e/fX+Hh4frtt980cuTIfOt17txZDRo00J133qn+/fvrwQcfvOH7Fxsbq8GDB+uZZ55Rw4YN1atXL23btk21a9eWdPWS96ioKDVq1Ej33Xefbr31Vn3wwQd25wfMxGL8+WA7AJQzr7zyipYsWcLJuAAKxMwOgHIrKytL+/bt03vvvaennnrK2XEAlFGUHQDlVnR0tFq1aqW7777brkNYAP5aOIwFAABMjZkdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgav8PriEMHNJ5QJIAAAAASUVORK5CYII=\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of RMSE values from rmse1 to rmse10\n",
+ "rmse_values = [rmse1, rmse2, rmse3, rmse4, rmse5, rmse6, rmse7, rmse8, rmse9, rmse10]\n",
+ "\n",
+ "# List of corresponding labels for each RMSE value\n",
+ "labels = ['RMSE1', 'RMSE2', 'RMSE3', 'RMSE4', 'RMSE5', 'RMSE6', 'RMSE7', 'RMSE8', 'RMSE9', 'RMSE10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, rmse_values, color='green')\n",
+ "plt.xlabel('RMSE Variables')\n",
+ "plt.ylabel('RMSE Values')\n",
+ "plt.title('Bar Graph of RMSE')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "RFaaCNH6Cfoa",
+ "outputId": "67a8f358-e3ce-4ad2-9c78-ebc75902beb4"
+ },
+ "execution_count": 118,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABB/klEQVR4nO3de1xUdeL/8fcAMpAKiMbNQEnNe0qSrmV5o7xlWl5WJReRdCut1O1meSnblbSLlpm6rYm6mq6mZn2V8msataIppptmZnkjE7QUEA3k8vn90c/5OoEGOshw9vV8PM5jdz7nM+e8B8l5e+acOTZjjBEAAIBFeVR2AAAAgIpE2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QEAAJZG2QFgOc8//7xsNpt++umnCt9XcnKyWrduLR8fH9lsNmVlZVX4PgGUD2UHqEKSkpJks9mclqCgIHXu3Fnr16+/5nk++OAD9e7dW8HBwfL29lZgYKDuvPNOvfrqq8rJybnmea61n3/+WQMHDpSvr69mz56txYsXq3r16qXO/e2fnZeXl+rWrathw4bp2LFjJeZ36tRJNptNjRo1KnV7GzZscGxr5cqVTuu++uor9e/fX/Xq1ZOPj4/q1q2ru+66S7NmzXKaV79+/RK/TxeW7t27X+FPBXA/XpUdAED5TZkyRZGRkTLGKDMzU0lJSerZs6c++OAD3XPPPRW+/+LiYiUkJCgpKUktW7bUI488ovDwcJ05c0apqamaMGGC1q1bp40bN1Z4lsq0fft2nTlzRi+++KJiYmLK9JwLf3Z5eXnaunWrkpKS9Pnnn2vPnj3y8fFxmuvj46PvvvtOX3zxhdq2beu0bsmSJfLx8VFeXp7T+JYtW9S5c2dFRERoxIgRCgkJUXp6urZu3arXX39djz76qNP81q1b6y9/+UuJnGFhYWV6PUBVQNkBqqAePXooOjra8TghIUHBwcF69913XVJ2iouLdf78+RJvvhdMnz5dSUlJGjt2rF599VXZbDbHuscff1zHjx/XokWLrmofVcGJEyckSQEBAWV+zsV/dg8++KDq1KmjadOmae3atRo4cKDT3AYNGqiwsFDvvvuuU9nJy8vT6tWr1atXL7333ntOz/nb3/4mf39/bd++vUSuC3kvVrduXT3wwANlzg9URXyMBVhAQECAfH195eXl/O+XV155Rbfddptq164tX19ftWnTpsRHHpJks9k0evRoLVmyRM2bN5fdbldycnKp+zp37pymTZum5s2b6+WXX3YqOheEhobq6aefLvM+riRn48aN5ePjozZt2iglJaXUrFlZWRo2bJgCAgLk7++v+Ph4nTt3rvQf4m+sWLFCbdq0ka+vr+rUqaMHHnjA6eOmTp06KS4uTpJ06623ymazadiwYWXa9sXuuOMOSdL3339f6vrBgwdr+fLlKi4udox98MEHOnfuXIlydGE7zZs3L7WABQUFlTsfYAWUHaAKys7O1k8//aSTJ09q7969evjhh5Wbm1viX+ivv/66oqKiNGXKFE2dOlVeXl4aMGCA/ud//qfENj/55BONHTtWf/zjH/X666+rfv36pe77888/V1ZWlgYPHixPT89y5b7UPsqT89NPP9WYMWP0wAMPaMqUKfr555/VvXt37dmzp8TcgQMH6syZM0pMTNTAgQOVlJSkF1544XdzJiUlaeDAgfL09FRiYqJGjBihVatWqUOHDo4TkJ977jmNHDlS0q8fTS1evFh//vOfy/XzkKTDhw9LkmrVqlXq+iFDhuj48ePavHmzY2zp0qXq2rVrqeWlXr16SktLK/XnUZqCggL99NNPJZZffvml3K8FcFsGQJWxYMECI6nEYrfbTVJSUon5586dc3p8/vx506JFC9OlSxencUnGw8PD7N2793czvP7660aSWbNmjdN4YWGhOXnypNNSXFxcpn2UJ6cks2PHDsfYkSNHjI+Pj7nvvvscY5MnTzaSzPDhw52ef99995natWtf9vWdP3/eBAUFmRYtWphffvnFMf7hhx8aSWbSpEmOsQt/Htu3b7/sNi+e+7//+7/m5MmTJj093axcudJcf/31xm63m/T0dKf5HTt2NM2bNzfGGBMdHW0SEhKMMcacPn3aeHt7m4ULF5pNmzYZSWbFihWO53388cfG09PTeHp6mvbt25unnnrKfPTRR+b8+fMlMtWrV6/U3ydJJjEx8XdfE1BVcGQHqIJmz56tDRs2aMOGDfrnP/+pzp0768EHH9SqVauc5vn6+jr+/+nTp5Wdna077rhDO3fuLLHNjh07qlmzZr+77wtXWdWoUcNp/KuvvtL111/vtPz8889l2kd5crZv315t2rRxPI6IiFCfPn300UcfqaioyGnuQw895PT4jjvu0M8//3zZK8V27NihEydO6JFHHnE6n6hXr15q0qRJqUebyiMmJkbXX3+9wsPD1b9/f1WvXl1r167VDTfccMnnDBkyRKtWrdL58+e1cuVKeXp66r777it17l133aXU1FTde++92r17t6ZPn65u3bqpbt26Wrt2bYn57dq1c/wuXbwMHjz4ql4n4E44QRmogtq2bet0gvLgwYMVFRWl0aNH65577pG3t7ck6cMPP9Rf//pX7dq1S/n5+Y75pZ1nExkZWaZ916xZU5KUm5vrNN6wYUNt2LBBkrRo0SItXry4zPsoT87SLsW+6aabdO7cOZ08eVIhISGO8YiICKd5Fz4qOn36tPz8/ErNcuTIEUlS48aNS6xr0qSJPv/881KfV1azZ8/WTTfdpOzsbL3zzjtKSUmR3W6/7HMGDRqkJ554QuvXr9eSJUt0zz33OP4cSnPrrbc6ytHu3bu1evVqzZgxQ/3799euXbucCmedOnXKfCUZUFVxZAewAA8PD3Xu3FnHjx/XgQMHJEmfffaZ7r33Xvn4+Oitt97SunXrtGHDBg0ZMkTGmBLbuPjoyuU0adJEkkqcE1KjRg3FxMQoJiZGN954Y6nPLW0f5c1ZHpc6p+hqt3s12rZtq5iYGPXr109r165VixYtNGTIkBLl8WKhoaHq1KmTXn31VaWkpGjIkCFl2pe3t7duvfVWTZ06VXPmzFFBQYFWrFjhqpcCVBmUHcAiCgsLJf3fEZf33ntPPj4++uijjzR8+HD16NHDJf+Cv+OOO+Tv769ly5Y5XSF0pcqb80KZu9i3336r6667Ttdff/1V56lXr54kaf/+/SXW7d+/37HeFS6cAP3jjz/qzTffvOzcIUOG6LPPPpOfn5969uxZ7n1dOBJ4/PjxK8oKVGWUHcACCgoK9PHHH8vb21tNmzaV9Osbqc1mczqP5fDhw1qzZs1V7eu6667TU089pT179uiZZ54p9ShJeY6clDdnamqq07k86enpev/993X33XeX++qw0kRHRysoKEhz5851+kht/fr12rdvn3r16nXV+7hYp06d1LZtW82cObPEFwRerH///po8ebLeeustx8eUpdm0aVOpP/9169ZJKv3jOcDqOGcHqILWr1+vb775RtKvXxS3dOlSHThwQM8884zjXJRevXrptddeU/fu3TVkyBCdOHFCs2fP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hSoqKpLdbneMZWZmau7cuTp79qzuvfdedejQoUJCAgAAXKkyl50RI0bI29tb8+bNkySdOXNGt956q/Ly8hQaGqoZM2bo/fffV8+ePSssLAAAQHmV+dLzf//73+rXr5/j8aJFi1RUVKQDBw5o9+7dGjdunF5++eUKCQkAAHClylx2jh07pkaNGjkeb9y4Uf369ZO/v78kKS4uTnv37nV9QgAAgKtQ5rLj4+OjX375xfF469atateundP63Nxc16YDAAC4SmUuO61bt9bixYslSZ999pkyMzPVpUsXx/rvv/9eYWFhrk8IAABwFcp8gvKkSZPUo0cP/etf/9Lx48c1bNgwhYaGOtavXr1at99+e4WEBAAAuFLl+p6dtLQ0ffzxxwoJCdGAAQOc1rdu3Vpt27Z1eUAAAICrUeayI0lNmzZV06ZNS103cuRIlwQCAABwpTKXnZSUlDLNu/POO684DAAAgKuVuex06tTJcaNPY0ypc2w2m4qKilyTDAAAwAXKXHZq1aqlmjVratiwYRo6dKjq1KlTkbkAAABcosyXnh8/flzTpk1TamqqWrZsqYSEBG3ZskV+fn7y9/d3LAAAAO6kzGXH29tbf/zjH/XRRx/pm2++0c0336zRo0crPDxczz33nAoLCysyJwAAwBUpc9m5WEREhCZNmqT//d//1U033aSXXnpJOTk5rs4GAABw1cpddvLz87V06VLFxMSoRYsWqlOnjv7nf/5HgYGBFZEPAADgqpT5BOUvvvhCCxYs0LJly1S/fn3Fx8frX//6FyUHAAC4tTKXnT/84Q+KiIjQY489pjZt2kiSPv/88xLz7r33XtelAwAAuErl+gblo0eP6sUXX7zker5nBwAAuJsyl53i4uKKzAEAAFAhruhqrEv55ZdfXLk5AACAq+aSspOfn69XX31VkZGRrtgcAACAy5S57OTn52v8+PGKjo7WbbfdpjVr1kiSFixYoMjISM2cOVNjx451ecBjx47pgQceUO3ateXr66uWLVtqx44djvXGGE2aNEmhoaHy9fVVTEyMDhw44PIcAACgaipz2Zk0aZLmzJmj+vXr6/DhwxowYIBGjhypGTNm6LXXXtPhw4f19NNPuzTc6dOndfvtt6tatWpav369vv76a7366quqVauWY8706dP1xhtvaO7cudq2bZuqV6+ubt26KS8vz6VZAABA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+a3s7GxJUmBgoCQpLS1NBQUFiomJccxp0qSJIiIilJqaesnt5OfnKycnx2kBAADWVGXKTnFxscaMGaPbb79dLVq0kCRlZGTI29tbAQEBTnODg4OVkZFxyW0lJibK39/fsYSHh1dkdAAAUImqTNkZNWqU9uzZo2XLll31tsaPH6/s7GzHkp6e7oKEAADAHbn1OTsXjB49Wh9++KFSUlJ0ww03OMZDQkJ0/vx5ZWVlOR3dyczMVEhIyCW3Z7fbZbfbKzIyAABwE259ZMcYo9GjR2v16tX65JNPFBkZ6bS+TZs2qlatmjZu3OgY279/v44ePar27dtf67gAAMANufWRnVGjRmnp0qV6//33VbNmTcd5OP7+/vL19ZW/v78SEhI0btw4BQYGys/PT48++qjat2/PlVgAAECSm5edOXPmSJI6derkNL5gwQINGzZMkjRjxgx5eHioX79+ys/PV7du3fTWW29d46QAAMBduXXZMcb87hwfHx/Nnj1bs2fPvgaJAABAVePW5+wAAABcLcoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNMoOAACwNK/KDgAAAFzH9oKtsiOUYCabSt0/R3YAAIClcWQHwH8d/uUL/HfhyA4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA07noOAFUEd2sHrgxlB3ADVfVNrKrmBsqC32/r4GMsAABgaZY5sjN79my9/PLLysjIUKtWrTRr1iy1bdu2smPhGuNfYgCA37JE2Vm+fLnGjRunuXPnql27dpo5c6a6deum/fv3KygoqFKz8eYLAEDlssTHWK+99ppGjBih+Ph4NWvWTHPnztV1112nd955p7KjAQCASlbly8758+eVlpammJgYx5iHh4diYmKUmppaickAAIA7qPIfY/30008qKipScHCw03hwcLC++eabUp+Tn5+v/Px8x+Ps7GxJUk5OjusD5rl+k1erTK+T3C5D7muL3NcWua8tS+e+iu0a8zunZ5gq7tixY0aS2bJli9P4k08+adq2bVvqcyZPnmwksbCwsLCw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qxwnJp89e1bdunWTn5+flixZou3bt2v16tWS5LgK7OLXfDlxcXHatWuXXn/9dW3ZskW7du1S7dq1S2ynPHJzc9W7d2+ncrdr1y4dOHBAd955pzw9PbVhwwatX79ezZo106xZs9S4cWMdOnToivcJ/Dei7AC4LA8PDz377LOaMGGC04nIFxs+fLg2b96sP/3pT/L09CzTdmvVqqXQ0NCrPtnWw8ND8fHxWrhwoZYuXSpvb2/1799fkvTNN9/o559/1ksvvaQ77rhDTZo0cTo5uTz+/e9/67HHHlPPnj3VvHlz2e12pxOJL/jtpfBbt25V06ZNS93mLbfcor1796p+/fpOBa9hw4aO8mWz2XT77bfrhRde0Jdffilvb29HYQNQNpQdAL9rwIAB8vT01OzZs0td3717d508eVJTpkwpdf28efP08MMP6+OPP9b333+vvXv36umnn9bevXvVu3dvp7knTpxQRkaG01JQUHDZfPHx8Tp27JieffZZDR482HGFV0REhLy9vTVr1iwdPHhQa9eu1YsvvngFPwGpUaNGWrx4sfbt26dt27YpNja2xJVkkrRixQq98847+vbbbzV58mR98cUXGj16dKnbHDVqlE6dOqXBgwdr+/bt+v777/XRRx8pPj5eRUVF2rZtm6ZOnaodO3bo6NGjWrVqlU6ePHnJ8gSgdJQdAL/Ly8tLo0eP1vTp00s9EmOz2VSnTp1Sr9iSpLZt2yo3N1cPPfSQmjdvro4dO2rr1q1as2aN4xyaCxo3bqzQ0FCnJS0t7bL5IiIiFBMTo9OnTzudM3T99dcrKSlJK1asULNmzfTSSy/plVdeuYKfgDR//nydPn1at9xyi4YOHarHHnus1O//eeGFF7Rs2TLdfPPNWrRokd599101a9as1G2GhYXp3//+t4qKinT33XerZcuWGjNmjAICAuTh4SE/Pz+lpKSoZ8+euummmzRhwgS9+uqrl/2oEEBJNmO4hhEAAFgXR3YAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAIClUXYAAICl/T/eW9kFikhhAwAAAABJRU5ErkJggg==\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of MAE values from mae1 to mae10\n",
+ "mae_values = [mae1, mae2, mae3, mae4, mae5, mae6, mae7, mae8, mae9, mae10]\n",
+ "\n",
+ "# List of corresponding labels for each MAE value\n",
+ "labels = ['MAE1', 'MAE2', 'MAE3', 'MAE4', 'MAE5', 'MAE6', 'MAE7', 'MAE8', 'MAE9', 'MAE10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, mae_values, color='orange')\n",
+ "plt.xlabel('MAE Variables')\n",
+ "plt.ylabel('MAE Values')\n",
+ "plt.title('Bar Graph of MAE')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "nrZu-K-KDCJ2",
+ "outputId": "69165581-da05-4554-a464-a606eb87a734"
+ },
+ "execution_count": 119,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6NklEQVR4nO3deVRV9eL+8ecACogCOTCYqJSzlJqmoXlNozCH1JyHGwqpleZ0q6v3qmVZppU567VQ1ASHUktzyOg6hpqmpTknzoJDCqKJCvv3h1/Pr3MBZTjAYfd+rbXX6uzxOcTiPH72cCyGYRgCAAAwKafCDgAAAJCfKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsA/hLefvttWSwWXbx4Md+PtXbtWtWtW1dubm6yWCy6cuVKvh8TQNYoO0ARFxUVJYvFYjP5+PioefPmWrNmTYHnWblypdq2bStfX18VL15cpUuX1t/+9jd9/PHHSk5OLvA8Be3SpUvq0qWL3N3dNX36dC1YsEAeHh6Zrvvn/3dbtmzJsNwwDAUEBMhisahNmzaZ7uPKlSvWUnXgwIFM1+ndu3eG35G7k5ubW+7fLFBEuBR2AAD28c477ygwMFCGYSgxMVFRUVFq1aqVVq5cmeUHpT2lp6crIiJCUVFReuSRR/Tqq68qICBAV69eVVxcnEaOHKnVq1crNjY237MUph9//FFXr17Vu+++q5CQkGxt4+bmpujoaD355JM28zdu3KjTp0/L1dU1y22XLl0qi8UiPz8/LVy4UGPHjs10PVdXV3322WcZ5js7O2crI1CUUXYAk3juuefUoEED6+uIiAj5+voqJibGLmUnPT1dN2/ezHIkYMKECYqKitLQoUP18ccfy2KxWJcNHjxY586d0/z58/N0jKLg/PnzkiRvb+9sb9OqVSstXbpUU6ZMkYvL//+zHB0drfr169/z1Nvnn3+uVq1aqVKlSoqOjs6y7Li4uKhXr17ZzgSYCaexAJPy9vaWu7u7zYenJH300Udq3LixypQpI3d3d9WvX19ffPFFhu0tFosGDhyohQsXqnbt2nJ1ddXatWszPdb169c1fvx41a5dWx9++KFN0bnL399f//znP7N9jNzkrF69utzc3FS/fn1t2rQp06xXrlxR79695e3tLS8vL/Xp00fXr1/P/If4P5YuXar69evL3d1dZcuWVa9evXTmzBnr8qeeekphYWGSpMcff1wWi0W9e/e+7367d++uS5cuaf369dZ5N2/e1BdffKEePXpkud3Jkye1efNmdevWTd26dVN8fLx++OGHbL0X4K+EkR3AJJKSknTx4kUZhqHz589r6tSpSklJyfCv+cmTJ+v5559Xz549dfPmTS1atEidO3fWqlWr1Lp1a5t1v//+ey1ZskQDBw5U2bJlVbly5UyPvWXLFl25ckWvv/56jk+LZHWMnOTcuHGjFi9erEGDBsnV1VUzZsxQy5YttWPHDgUFBdms26VLFwUGBmrcuHH66aef9Nlnn8nHx0fjx4+/Z86oqCj16dNHjz/+uMaNG6fExERNnjxZW7du1e7du+Xt7a1///vfql69umbPnm09rfjwww/f92dQuXJlBQcHKyYmRs8995wkac2aNUpKSlK3bt00ZcqUTLeLiYmRh4eH2rRpI3d3dz388MNauHChGjdunOn6mY0QFS9eXJ6envfNCBRpBoAibe7cuYakDJOrq6sRFRWVYf3r16/bvL5586YRFBRktGjRwma+JMPJycn49ddf75th8uTJhiRjxYoVNvNv375tXLhwwWZKT0/P1jFyklOSsXPnTuu8EydOGG5ubkaHDh2s89566y1DkhEeHm6zfYcOHYwyZcrc8/3dvHnT8PHxMYKCgow//vjDOn/VqlWGJGP06NHWeXf/f/z444/33Of/rjtt2jSjVKlS1vfduXNno3nz5oZhGEalSpWM1q1bZ9j+kUceMXr27Gl9/a9//csoW7ascevWLZv1wsLCMv0dkWSEhobeNydQ1HEaCzCJ6dOna/369Vq/fr0+//xzNW/eXC+99JKWLVtms567u7v1vy9fvqykpCQ1bdpUP/30U4Z9NmvWTLVq1brvse/eZVWyZEmb+Xv37lW5cuVspkuXLmXrGDnJGRwcrPr161tfV6xYUe3atdO6deuUlpZms+7LL79s87pp06a6dOnSPe8U27lzp86fP69XX33V5nqi1q1bq0aNGvrmm2+y3Da7unTpoj/++EOrVq3S1atXtWrVqnuewvrll1+0d+9ede/e3Tqve/fuunjxotatW5dhfTc3N+vvx5+nDz74IM/ZAUfHaSzAJBo2bGhzgXL37t1Vr149DRw4UG3atFHx4sUlSatW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mTNVtWpVrVu3Tq+88ooGDRqkefPmSZISEhIkSb6+vjbb+fr6WpdlZty4cfLy8rJOAQEBds0NAAAcR46v2QkKCtLPP/+swMBANWrUSBMmTFDx4sU1e/ZsPfTQQ3YNl56ergYNGuj999+XJNWrV0/79u3TrFmzFBYWluv9jhgxQsOGDbO+Tk5OpvAAAGBSOR7ZGTlypNLT0yVJ77zzjuLj49W0aVOtXr1aU6ZMsWs4f39/1apVy2ZezZo1dfLkSUmSn5+fJCkxMdFmncTEROuyzLi6usrT09NmAgAA5pTtkZ0GDRropZdeUo8ePazloEqVKjp48KB+//33DN+Gbg9NmjTJcGrs8OHD1uf+BAYGys/PT7Gxsapbt66kO6M027dv1yuvvGLXLAAAoGjK9shOnTp19Oabb8rf318vvviizZ1XpUuXtnvRkaShQ4dq27Ztev/993X06FFFR0dr9uzZGjBggKQ7t7sPGTJEY8eO1ddff629e/fqxRdfVPny5dW+fXu75wEAAEVPtstOZGSkEhISNH36dJ08eVJPP/20qlSpovfff19nzpzJl3CPP/64li9frpiYGAUFBendd9/VpEmT1LNnT+s6b775pl577TX169dPjz/+uFJSUrR27VqesQMAACRJFuN+3+6Zhd9++01z587VggULdPbsWT377LOKiIjQCy+8YO+M+S45OVleXl5KSkri+p27ou0/UpdnPXL1qwqgsPH3BPkku5/fuf66iIcfflhjx47V8ePHFRMTo23btqlz58653R0AAEC+yPGt53+2YcMGzZ07V19++aVcXFzUt29fe+UCAACwixyXndOnTysqKkpRUVE6duyYmjZtqhkzZqhz585yd3fPj4wAAAC5lu2ys2TJEs2ZM0exsbHy8fFRWFiYwsPDVaVKlfzMBwAAkCfZLju9evVS69attXz5crVq1UpOTrm+3AcAAKDAZLvsnD59Wj4+PvmZBQAAwO6yPTxD0QEAAEUR56IAAICpUXYAAICpUXYAAICpZbvs7NixQ2lpaVkuT01N1ZIlS+wSCgAAwF6yXXaCg4N16dIl62tPT08dO3bM+vrKlSvq3r27fdMBAADkUbbLzv9+X2hm3x+ay+8UBQAAyDd2vWbHYnHAb7YFAAB/aVygDAAATC1HXwS6f/9+JSQkSLpzyurgwYNKSUmRJF28eNH+6QAA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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of MAPE values from mape1 to mape10\n",
+ "mape_values = [mape1, mape2, mape3, mape4, mape5, mape6, mape7, mape8, mape9, mape10]\n",
+ "\n",
+ "# List of corresponding labels for each MAPE value\n",
+ "labels = ['MAPE1', 'MAPE2', 'MAPE3', 'MAPE4', 'MAPE5', 'MAPE6', 'MAPE7', 'MAPE8', 'MAPE9', 'MAPE10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, mape_values, color='purple')\n",
+ "plt.xlabel('MAPE Variables')\n",
+ "plt.ylabel('MAPE Values')\n",
+ "plt.title('Bar Graph of MAPE')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "_c4Pe76fDNM-",
+ "outputId": "0e3d2f74-9042-4e2d-92c6-5ce61e967bd4"
+ },
+ "execution_count": 120,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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yZNXfEJt27ZtOnbsmB577DGb+UndunVT06ZNtXLlyiL3La6+ffvqr7/+0ooVK3TmzBmtWLHiire/fvrpJ/3888+KioqytkVFRenEiRNas2ZNgf45OTnWfwaNGzfWCy+8oJCQEH366acF+i5btsz6d+nyMnfu3Os+R8DecAsMuAG0b9/eZhJ0VFSU2rZtq1GjRql79+5ycnKSJK1YsUKvvvqqdu3aZfMIdGHzdgICAop17Bo1akiSsrOzbdobN25sndcyf/58ffjhh8U+RknqbNKkSYG2W265RWfPntXx48fl4+Njba9Xr55Nv1q1akm6FLLc3d0LreXgwYOSpMDAwALbmjZtWugj7CVVt25dhYeHa+HChTp79qwuXryo+++/v8j+H330kapVq6aGDRtq3759ki49TdagQQMtWLCgwG1CFxcXffHFF5IuPREWEBCgm2++udCx77zzTiZBwxQIQMANyMHBQZ06ddL06dP1+++/q3nz5vruu+/Us2dP3XnnnXr33Xfl6+urqlWrau7cuVq4cGGBMf5+FeZKmjZtKknavXu3evXqZW2vXr269VHwokJCYccoaZ0lUdQcJcMwrmvc0vDAAw9o+PDhSk9PV2RkZJFzbgzD0KJFi5STk1Po1bNjx44pOzvb5oqco6NjsR/LB8yCAATcoC5cuCDpf1dmli1bJhcXF61Zs8bm3TLXe3vjjjvukIeHh5KSkhQbGysHh+u7s17SOn///fcCbb/99pvc3NxUt27d66pFkurXry9J2rt3r+666y6bbXv37rVuv1733nuvHnnkEX3//fdavHhxkf0uvx9owoQJuvXWW222nTp1Sg8//LCWL19eYAI8AFvMAQJuQOfPn9dXX30lJycn6y9JR0dHWSwWm3kxBw4c0PLly6/rWG5ubnr22We1e/duPf/884VeTSnJFZaS1pmSkmIzN+jQoUP67LPP1KVLlxI/lVaYdu3aycvLSwkJCTa347788kvt2bOnwO2ma1W9enW99957evnll9WjR48i+12+/fXMM8/o/vvvt1mGDx+uJk2aaMGCBaVSE3Aj4woQcAP48ssv9euvv0q6dAtk4cKF+v333/X8889b57Z069ZNU6dOVdeuXfXAAw/o2LFjio+PV+PGjfXTTz9d1/Gff/557dmzR2+++aa++uor3Xfffbr55pt16tQp7dixQ0uX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LFmiL774QqtXr9bOnTv12GOPFXkOcXFxmj9/vhISEvTLL79Yv2K/fv16SdJLL72k//znP/ryyy+1Z88evffee/L09LymnxdgauXyyVUAldrlL2IfO3bMcHZ2Ng4cOGAcOHDAcHFxMY4fP2792vTfhYaGGtOmTTMMwzDOnz9veHp62nwF+p9fnD516pRx7733GtWrVzfS09MNw7j0xemqVasa1apVs1k++uijImvds2dPgS9O33HHHcbAgQOL3Kdbt27GU089ZV3v2LGj0bZt2wL9JBmffvppkeO8+eabRlBQkHV93LhxhqOjo3H48GFr25dffmk4ODgYaWlphmHYfm383Llzhpubm7F582abcYcNG2ZERUUZhmEYPXr0MKKjo4usAUDxVKng/AWgEqlbt671dpZhGOrWrVuhVx/27t2rrVu36tNPP5V06cpMv379NHv2bIWFhdn0DQ0NlYODg3JyctSwYUMtXrxY3t7e1u0DBgzQiy++aLPP37f/U9OmTRUaGqo5c+YoLCxM+/bt03fffacJEyZIki5evKjXX39dS5Ys0ZEjR5SXl6fc3Fy5ubnZjBMUFHTVn8fixYv19ttv648//lB2drYuXLhQ4PZcvXr1dNNNN1nXQ0JClJ+fr71798rHx8em7759+3T27Fl17tzZpj0vL896m3HEiBG67777tGPHDnXp0kW9e/dWaGjoVWsFYIsABKBEhg4dqlGjRkmS4uPjC+0ze/ZsXbhwQX5+ftY2wzDk7OysGTNmyMPDw9q+ePFiNWvWTHXq1FHNmjULjOXh4aHGjRuXqMZhw4bp3//+t+Lj4zV37lw1atRIHTt2lCS9+eabmj59uqZNm6aWLVuqWrVqGj16dIHbbtWqVbviMVJSUjRgwACNHz9eERER8vDwUFJSkqZMmVKiWv8uOztbkrRy5Uqb0CTJOvk6MjJSBw8e1KpVq7R27VrdfffdGjlypCZPnnzNxwXMiDlAAEqka9euysvL0/nz562Tg//uwoULmj9/vqZMmaJdu3ZZlx9//FF+fn4FJhz7+/urUaNGhYafa9W3b185ODho4cKFmj9/voYOHSqLxSJJ2rRpk3r16qWBAweqdevWatiwoX777bcSH2Pz5s2qX7++XnzxRbVr105NmjTRwYMHC/RLTU21eQLu+++/l4ODgwIDAwv0bdasmZydnZWamqrGjRvbLP7+/tZ+devW1eDBg/XRRx9p2rRpmjlzZonrB8yOK0AASsTR0VF79uyx/vmfVqxYoVOnTmnYsGE2V3ok6b777tPs2bOLfI9PYc6ePav09HSbNmdnZ9WqVavIfapXr65+/fopNjZWWVlZNu8oatKkiT7++GNt3rxZtWrV0tSpU5WRkaFmzZoVu6bL46SmpiopKUm33367Vq5cab3l93cuLi4aPHiwJk+erKysLD3++OPq27dvgdtf0qVJ1U8//bSefPJJ5efnq0OHDsrMzNSmTZvk7u6uwYMHa+zYsQoKClLz5s2Vm5urFStW6NZbby1R7QC4AgTgGri7uxf5KPrs2bMVHh5eIPxIlwLQtm3bSvQywlmzZsnX19dmiYqKuup+w4YN06lTpxQREWFzK27MmDG67bbbFBERobCwMPn4+FzTm5h79uypJ598UqNGjVKbNm20efNmvfTSSwX6NW7cWP/v//0/3XPPPerSpYtatWqld999t8hxX3nlFb300kuKi4vTrbfeqq5du2rlypUKCAiQJDk5OSk2NlatWrXSnXfeKUdHRyUlJZW4fsDsLIZxledSAQAAbjBcAQIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKZDAAIAAKbz/wGv+ZTScaIQRQAAAABJRU5ErkJggg==\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of precision values from precision1 to precision10\n",
+ "precision_values = [precision1, precision2, precision3, precision4, precision5, precision6, precision7, precision8, precision9, precision10]\n",
+ "\n",
+ "# List of corresponding labels for each precision value\n",
+ "labels = ['Precision1', 'Precision2', 'Precision3', 'Precision4', 'Precision5', 'Precision6', 'Precision7', 'Precision8', 'Precision9', 'Precision10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, precision_values, color='red')\n",
+ "plt.xlabel('Precision Variables')\n",
+ "plt.ylabel('Precision Values')\n",
+ "plt.title('Bar Graph of Precision')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "ZDPV0M5rDTi6",
+ "outputId": "9db63164-3f42-47be-d302-d80d381d9b91"
+ },
+ "execution_count": 121,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "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Z59p5MiR+stf/qIqVapo8eLFqlmzZmG9BQAA4EEKvdxI0qBBg657GGr9+vU5pnXp0kVdunTJ51SFx9fXV4mJiTkOp3k6chcschcschcsches2zX39RT6RfwAAADcqdBvvwAAAOBOlBsAAGAplBsAAGAplBsPYLPZtHjxYrePzW/kLljkLljkLljkzl+3S063MXASHx9vJBlJxtvb21SqVMmMGTPGZGVl5ds6jx8/btLT029p7K3kXrhwoWnRooUJDQ01ksxPP/3k8bkzMzPNyy+/bGrWrGmKFStmIiMjTa9evczRo0c9OrcxxiQmJpqqVauaYsWKmZCQEPPII4+YH374weNzX+uZZ54xksykSZM8Pve18159xMXFeXxuY4z597//bdq3b2+CgoJMsWLFTP369c2hQ4c8Ovfvt/XVx9tvv+3RudPS0szAgQNN2bJljZ+fn6levbqZMWPGTWe50Vh3fs6kpKSY+Ph4ExkZafz9/U1cXJzZu3evW3K6U14+Zy5fvmwGDBhgQkNDTfHixU3nzp1NSkrKTa2PcvM78fHxplWrVub48ePml19+MdOnTzc2m8288cYbOcZmZGQUQsLc3UruTz75xIwZM8bMmjXLpXLjDjeb+9y5cyY2NtbMmzfP7N6922zatMk0bNjQxMTEeHRuY4yZM2eOWbNmjTlw4IDZtWuX6devnwkKCjInT5706NxXLVq0yNSuXduUKVMmT+XGHW4l97XzXn2cPXvW43Pv37/fhIaGmpdeesls27bN7N+/33z55ZfmxIkTHp372u18/PhxM3v2bGOz2cyBAwc8Onf//v1NpUqVzLp168zBgwfN+++/b4oUKWK+/PJLj8p5Lbvdbu677z7z4IMPms2bN5vdu3ebp59+2kRHR5sLFy64PfetyMvnzLPPPmuioqJMcnKy+fHHH819991n7r///ptaH+Xmd+Lj402HDh2cprVo0cLcd999jtdee+01ExkZaSpUqGCMMebw4cOmS5cuJjg42JQoUcI8+uij5uDBg07L+PDDD80999xjfHx8TEREhBk4cKDjNUnmiy++MMb89os8cOBAExERYXx9fU10dLTTL/y1Y40x5p///Kdp1qyZ8fLyMt7e3qZ///4mLS3Nkbt06dImKirK1KhRwwQEBBibzWYCAwNNZmZmjtyxsbE5fuluh9xXt/fmzZuNJHPo0KHbKndqaqqRZNauXevxuYODg42fn59ZtWqVKV++vKPceHJub29v4+3tfdv9vfT29jY+Pj63Xe7f/3536NDBNG/e3ONze3l5GX9/f6ftXa9ePTNixAi35776WXI1t5+fnylatKgJCwszPXr0cHzO+Pv7m2LFipkJEyaY0qVLGx8fH+Pj4+PYvsnJyUaS2bVrl9P2lWSCg4Pdvn39/PxMaGio0/Y15n+fmxMmTDAREREmNDTUDBgwwGRmZprfO3jwYK7l5ty5c8bb29vMnz/fMe3nn382ksymTZtyLOePcM5NHvj7+yszM1OSlJycrD179mjNmjVatmyZsrKyFBcXp8DAQG3YsEEbN25UQECAWrVq5ZhnxowZGjhwoJ5++mnt3LlTS5YsUeXKlXNd11//+lctWbJEn3/+ufbs2aM5c+aoQoUKuY69ePGi4uLiVKJECbVr104NGjTQ2rVrHRdE9Pf315UrV5SSkqK9e/eqefPmeu+995SVlaW//e1vOXIXL15ckpSVlXVb5b66vU+fPi2bzaYFCxbcNrnj4uI0ffp0BQcHa9u2bR6d+5tvvlHVqlVVo0YNPf/88zL//xJZnv570rp1a/n6+mrVqlW6++679fTTT+vMmTMenTsgIEBFixbVM888o82bN6ty5cpq0KCBFi9e7NG5f//73aJFCy1btkz9+vXz+NydOnVSxYoV5eXlpVatWmn16tXau3evLl26lC+5r1y54si9ZcsWNWzYUOfOndP//d//OT5nWrRoIZvNpr179yooKEhNmzaVl5eXXnjhBQUEBKhfv36SJD8/P6ftGx4ergceeMDt23fLli2aP3++0/a9at26dTpw4IDWrVunjz/+WElJSUpKSsp1mbnZunWrsrKyFBsb65hWrVo1RUdHa9OmTXlejoPLdcjirt1zY7fbzZo1a4yvr6958cUXTXx8vAkPD3faTfjpp5+aqlWrGrvd7piWkZFh/P39zapVq4wxxpQpU8aMGDHiuuvUNS158ODBpnnz5k7Lu97YDz74wJQoUcJcuHDBkXv58uXGZrOZzz//3Pj6+poaNWqY4sWLO+Xu0qWLadSoUY7ce/bsMZLM9OnTb6vcV7d35cqVTY8ePW6L3EuXLjXFihUzkkxoaKjZvHmzx+d+4403TIsWLUx6errx9/c3YWFhZtKkSR6f+x//+If58ssvzdatW42Pj4+JiooyDRo08Ojcx44dM5JMsWLFzNtvv238/PxM3759jc1mM6VKlfLY3L//e+nt7W0CAgLM5cuXPXp72+12k56ebnr37u04F6Zo0aLm448/zpfc8fHxpnbt2qZEiRImLS3N8TnTuXNnI8mULl3aZGRkmPj4eFO+fHnz8ccfO3J26dLFdOvWzfHvXunSpU2XLl1MZGSkGTZsmHnzzTeNJNOyZUu3b9+rli9fbry8vBznw1zNmZ2d7RhzNefvXW/PzZw5c4yPj0+O8Q0aNDAvv/xyrjlvxCNuv+Bpli1bpoCAAGVlZclut6tHjx4aPXq0Bg4cqFq1asnHx8cxdseOHdq/f78CAwOdlpGenq4DBw7o5MmTOnbsmB555JE8rbtPnz5q0aKFqlatqlatWqldu3Zq2bJlrmN//vln1a5d27HHZdmyZVq7dq2MMerevbt69uyp7OxsnTt3TtWrV3fkjoyM1A8//KBjx4455Tb//3/iR44cua1yS9Lly5eVnp6usWPHqnLlyrdNbpvNpqpVq+qxxx7z6O1dvHhxpaeny9/fXyVLlnT8OS0tzaNz/357Z2VlqX///ho1apQkeWzuq//jzszM1JgxY5SRkaEGDRro6NGjWr16tcfmzm1733///Tp//rzH/55kZWUpKytLfn5+ysjIUOfOnfXcc8/p0qVL+ZL7n//8p2w2m0qWLOn4nBk/frwWLVqk6OhoR84aNWpo586djs+ZzMxM2e12LVu2TOnp6RoyZIiWLFmi48eP6+2331aLFi3UunVrx7/n7t6+ktSkSRPZ7Xbt2bPHcR/IGjVqqEiRIo4xkZGR2rlzZ562W37gsFQumjVrpu3bt2vfvn26fPmyPv74Y8cP9tofsCRduHBBMTEx2r59u9Nj79696tGjh/z9/V1ad7169XTw4EGNGzdOly9fVteuXfX444/nOfeGDRskSatXr9bHH38sb29veXl5OeW22WzKzs7OkXv58uWSpNatW982ubds2aLGjRuratWq+vbbbxUWFnZb5N6+fbt27NihvXv3asWKFfL29vbo3EOHDpUxRunp6bp8+bJsNpvOnj2rxMREj86d29/L559/XqGhoR6de8uWLSpSpIgGDRrk9O9J9erVPTr3tdt61qxZkqTXXnvN4/89+eGHH2S32/X+++9r586d2rt3rz744AM99thj+ZY7KipK9evXz/Vz5trt5e3t7fQ506NHD8ef9+7dq2HDhumHH36QJC1YsEArV67UmTNnVLFiRbfkzKvf/xtms9lkt9vzPH9ERIQyMzN17tw5p+knTpxQRESEy3koN7koXry4KleurOjoaBUteuOdW/Xq1dO+ffsUFhamypUrOz2Cg4MVGBioChUqKDk5Oc/rDwoKUrdu3TRr1izNmzdPCxcu1NmzZ3OMq169unbs2KGLFy86ch8/flxeXl6qUaPGDdcRGBiYI/fVY66BgYG3Re7y5cvrL3/5i44fP64NGzborrvuui1y5/Z7IkkhISEem7t///7auXOnduzY4XiUKVNGL7/8ssqWLeuxuXPb3mlpafr1118VFhbmsbnLlSunhg0b6vTp006/J4cOHVLx4sU9Nve123vVqlWKiYnRAw884PF/L0NCQpSdna1y5co5bW9/f3/5+fnlS+4SJUpo3759KlmypONzZuPGjZKkgIAAp7HXfs6EhITI398/18+ZrVu3at++ffrxxx/VoUMHt+T8/fa9mtPLy0tVq1bN83b5IzExMfL29nba1nv27NHhw4fVuHFjl5fHYalb1LNnT02YMEEdOnTQ2LFjVa5cOR06dEiLFi3Syy+/rHLlymn06NF69tlnFRYWptatWystLU0bN27U4MGDcyzv3XffVWRkpOrWrSsvLy/Nnz9fERERCgkJyXXdiYmJio+PV1ZWls6cOaPBgwerV69ejl2F1xMWFiZjjDp06KAXX3xRkhy7EL///ntJ0tChQ/XKK694ZO5HH31U2dnZOnDggMaNG6fhw4drwIABKlOmjEaOHKlBgwZ5ZO527dqpfPny6tSpkzIzM7V48WIZY3T06FGNGjVK48aN88jcffv2zfH7bbPZFBERoddff91jf7/btWunsmXLqkuXLsrMzNS8efO0f/9+Va5cWS+//LIGDx7skbk7dOigtm3bavTo0QoPD9fJkydVpUoVLV26VK+88oomTpzosbnHjh2r4OBgzZ07V40bN9Z///tfj/93sFevXqpdu7aGDBmiPXv2aPv27br33nv1ySefqGvXrvmyvaOionTy5EnFx8dr9OjROnXqlAYPHqxKlSrluDP3tZ8zpUqV0uXLl7V+/XotWrRI99xzj6pVq6YBAwZo5MiRmj59umJjY1WqVCm99957bt2+1+bMy/a91tmzZ3X4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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "# Assuming you have a list of recall values from recall1 to recall10\n",
+ "recall_values = [recall1, recall2, recall3, recall4, recall5, recall6, recall7, recall8, recall9, recall10]\n",
+ "\n",
+ "# List of corresponding labels for each recall value\n",
+ "labels = ['Recall1', 'Recall2', 'Recall3', 'Recall4', 'Recall5', 'Recall6', 'Recall7', 'Recall8', 'Recall9', 'Recall10']\n",
+ "\n",
+ "# Plotting the bar graph\n",
+ "plt.bar(labels, recall_values, color='cyan')\n",
+ "plt.xlabel('Recall Variables')\n",
+ "plt.ylabel('Recall Values')\n",
+ "plt.title('Bar Graph of Recall')\n",
+ "plt.show()\n"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 472
+ },
+ "id": "39LBleNeDeuw",
+ "outputId": "3c6c40bc-f1da-44fb-da14-25ec6d6cf278"
+ },
+ "execution_count": 122,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ ""
+ ],
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/z0lEQVR4nO3deVxU9eL/8feAMOACroAhV3HfEg03MjQTxSyXFjPNRKX8WdoieUu7JlrdyMqtcmlx75qWmtfSXMKsa1KmiFtqaiJkCuKGIELC+f3h17nOBY1RluH4ej4e83jEZ87ynoM5b89qMQzDEAAAgEm4lHYAAACAokS5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AQAApkK5AVBmTZgwQRaLRWlpacW+rrVr16ply5by8PCQxWLR2bNni32dxcVisWjChAm2n+fPny+LxaLExMRSywQUJcoN4ISufNlc/fLx8VHnzp319ddfl3ieL7/8Uj179pSvr6/c3d1VtWpVdezYUZMnT1Z6enqJ5ylpp06d0iOPPCJPT0/NmDFDixYtUoUKFQqc9n9/d+XKlZO/v78GDx6sY8eOlXBy4NZUrrQDALi2V199VYGBgTIMQykpKZo/f7569OihL7/8Uvfff3+xrz8vL0+RkZGaP3++br/9dj399NMKCAjQ+fPnFRcXp3HjxmnNmjWKjY0t9iyl6eeff9b58+f12muvKSwsrFDzXPndXbx4UT/++KPmz5+vzZs3a8+ePfLw8CjmxMCtjXIDOLF7771XrVu3tv0cGRkpX19fffrpp0VSbvLy8pSTk3PNL9u33npL8+fP16hRozR58mRZLBbbe88995yOHz+uhQsX3tQ6yoLU1FRJUuXKlQs9z9W/uyeeeELVq1fXpEmTtGrVKj3yyCPFERPA/+GwFFCGVK5cWZ6enipXzv7fJe+8847uvPNOVatWTZ6engoODtayZcvyzW+xWDRy5Ej961//UrNmzWS1WrV27doC13XhwgVNmjRJzZo109tvv21XbK6oWbOmXnrppUKv40ZyNmrUSB4eHgoODtb3339fYNazZ89q8ODBqly5sry9vTVkyBBduHCh4I34Pz7//HMFBwfL09NT1atX18CBA+0OH919992KiIiQJLVp00YWi0WDBw8u1LKvFhoaKkk6fPiw3fj+/fv18MMPq2rVqvLw8FDr1q21atWqAj/jqFGjVKdOHVmtVtWqVUuDBg2ynW+Uk5Oj8ePHKzg4WN7e3qpQoYJCQ0P17bffOpwVKOvYcwM4sXPnziktLU2GYSg1NVXvvfeeMjIyNHDgQLvppk+frl69eumxxx5TTk6OlixZor59++qrr77SfffdZzftxo0b9dlnn2nkyJGqXr266tSpU+C6N2/erLNnz2r06NFydXV1KPe11uFIzu+++05Lly7Vs88+K6vVqpkzZ6p79+7aunWrmjdvbjftI488osDAQMXExCg+Pl4ff/yxfHx8NGnSpOvmnD9/voYMGaI2bdooJiZGKSkpmj59un744Qft2LFDlStX1j/+8Q81atRIH374oe1QU7169RzaHpJsJ+tWqVLFNrZ371516NBB/v7+GjNmjCpUqKDPPvtMffr00fLly/XAAw9IkjIyMhQaGqp9+/Zp6NChuuOOO5SWlqZVq1bp999/V/Xq1ZWenq6PP/5Y/fv315NPPqnz589rzpw5Cg8P19atW9WyZUuHMwNllgHA6cybN8+QlO9ltVqN+fPn55v+woULdj/n5OQYzZs3N+655x67cUmGi4uLsXfv3r/MMH36dEOSsXLlSrvxS5cuGSdPnrR75eXlFWodjuSUZGzbts02dvToUcPDw8N44IEHbGPR0dGGJGPo0KF28z/wwANGtWrVrvv5cnJyDB8fH6N58+ZGVlaWbfyrr74yJBnjx4+3jV35ffz888/XXebV037zzTfGyZMnjeTkZGPZsmVGjRo1DKvVaiQnJ9um7dKli3H77bcbFy9etI3l5eUZd955p9GgQQPb2Pjx4w1JxooVK/Kt78q2v3TpkpGdnW333pkzZwxfX99820eSER0dnS/zkSNH/vLzAWUBh6UAJzZjxgxt2LBBGzZs0CeffKLOnTvriSee0IoVK+ym8/T0tP33mTNndO7cOYWGhio+Pj7fMjt16qSmTZv+5bqvXAVVsWJFu/Hdu3erRo0adq9Tp04Vah2O5AwJCVFwcLDt57/97W/q3bu31q1bp9zcXLtphw8fbvdzaGioTp06dd0rubZt26bU1FQ9/fTTducD3XfffWrcuLFWr159zXkLIywsTDVq1FBAQIAefvhhVahQQatWrVKtWrUkSadPn9bGjRv1yCOP6Pz580pLS1NaWppOnTql8PBwHTx40HZ4bPny5QoKCrLtybnalcOFrq6ucnd3l3T5PKfTp0/r0qVLat26dYHbFzAzDksBTqxt27Z2JxT3799frVq10siRI3X//ffbvsy++uorvf7660pISFB2drZt+oLOkwkMDCzUuitVqiTp8iGRq9WvX18bNmyQJC1cuFCLFi0q9DocydmgQYN8Yw0bNtSFCxd08uRJ+fn52cb/9re/2U135dDPmTNn5OXlVWCWo0ePSpIaNWqU773GjRtr8+bNBc5XWDNmzFDDhg117tw5zZ07V99//72sVqvt/UOHDskwDL3yyit65ZVXClxGamqq/P39dfjwYT300EN/uc4FCxZo8uTJ2r9/v/7880/beGF/54BZUG6AMsTFxUWdO3fW9OnTdfDgQTVr1kz/+c9/1KtXL3Xs2FEzZ85UzZo15ebmpnnz5mnx4sX5lnH13pPrady4sSRpz5496t27t228YsWKtsuhr1UAClqHozkdca1zggzDuKnl3oyri2mfPn101113acCAATpw4IAqVqyovLw8SdLo0aMVHh5e4DLq169f6PV98sknGjx4sPr06aO///3v8vHxkaurq2JiYvKdxAyYHeUGKGMuXbok6b97VJYvXy4PDw+tW7fObs/AvHnzbmo9oaGh8vb21pIlSzR27Fi5uNzcUWxHcx48eDDf2K+//qry5curRo0aN5VFkmrXri1JOnDggO655x679w4cOGB7vyhcKRmdO3fW+++/rzFjxqhu3bqSJDc3t7+8d069evW0Z8+e606zbNky1a1bVytWrLDbExYdHX3zHwAoYzjnBihD/vzzT61fv17u7u5q0qSJpMtfnBaLxe48lMTERK1cufKm1lW+fHm9+OKL2rNnj8aMGVPgXhBH9ow4mjMuLs7uXJHk5GT9+9//Vrdu3Ry+eqsgrVu3lo+Pj2bPnm13iOzrr7/Wvn378l29dbPuvvtutW3bVtOmTdPFixfl4+Oju+++Wx988IGOHz+eb/qTJ0/a/vuhhx7Szp079cUXX+Sb7srv4Mo2ufp38tNPPykuLq5IPwdQFrDnBnBiX3/9tfbv3y/p8vkXixcv1sGDBzVmzBjbuST33XefpkyZou7du2vAgAFKTU3VjBkzVL9+fe3ateum1j9mzBjt27dPb7/9ttavX6+HHnpItWrV0pkzZxQfH6/PP/9cPj4+hbpB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ldaK09LSlJubK19fX7txX19f7d+/v8B5BgwYoLS0NN11110yDEOXLl3S8OHDr3tYKjs7W9nZ2baf09PTi+YDAAAAp1TqJxQ7YtOmTXrjjTc0c+ZMxcfHa8WKFVq9erVee+21a84TExMjb29v2ysgIKAEEwMAgJJmMQzDKI0V5+TkqHz58lq2bJn69OljG4+IiNDZs2f173//O988oaGhat++vd5++23b2CeffKJhw4YpIyNDLi75u1pBe24CAgJ07tw5eXl5Fe2HknOewFuYXzC5iw65Sxa5Sxa5S5aZczsqPT1d3t7ehfr+LrU9N+7u7goODlZsbKxtLC8vT7GxsQoJCSlwngsXLuQrMK6urpKka3U0q9UqLy8vuxcAADCvUjvnRpKioqIUERGh1q1bq23btpo2bZoyMzM1ZMgQSdKgQYPk7++vmJgYSVLPnj01ZcoUtWrVSu3atdOhQ4f0yiuvqGfPnraSAwAAbm2lWm769eunkydPavz48Tpx4oRatmyptWvX2k4yTkpKsttTM27cOFksFo0bN07Hjh1TjRo11LNnT/3zn/8srY8AAACcTKmdc1NaHDlmdyPK6rFPchcdcpcscpcscpcsM+d2VJk45wYAAKA4UG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpUG4AAICpOFxusrKydOHCBdvPR48e1bRp07R+/foiDQYAAHAjHC43vXv31sKFCyVJZ8+eVbt27TR58mT17t1bs2bNKvKAAAAAjnC43MTHxys0NFSStGzZMvn6+uro0aNauHCh3n333SIPCAAA4AiHy82FCxdUqVIlSdL69ev14IMPysXFRe3bt9fRo0eLPCAAAIAjHC439evX18qVK5WcnKx169apW7dukqTU1FR5eXkVeUAAAABHOFxuxo8fr9GjR6tOnTpq27atQkJCJF3ei9OqVasiDwgAAOAIi2EYhqMznThxQsePH1dQUJBcXC73o61bt8rLy0uNGzcu8pBFKT09Xd7e3jp37lyx7GmyFPkSb15hfsHkLjrkLlnkLlnkLllmzu0oR76/b+g+N35+fqpUqZI2bNigrKwsSVKbNm2cvtgAAADzc7jcnDp1Sl26dFHDhg3Vo0cPHT9+XJIUGRmpF154ocgDAgAAOMLhcjNq1Ci5ubkpKSlJ5cuXt43369dPa9euLdJwAAAAjirn6Azr16/XunXrVKtWLbvxBg0acCk4AAAodQ7vucnMzLTbY3PF6dOnZbVaiyQUAADAjXK43ISGhtoevyBJFotFeXl5euutt9S5c+ciDQcAAOAoh8vNW2+9pQ8//FD33nuvcnJy9OKLL6p58+b6/vvvNWnSJIcDzJgxQ3Xq1JGHh4fatWunrVu3Xnf6s2fPasSIEapZs6asVqsaNmyoNWvWOLxeAABgTg6Xm+bNm+vXX3/VXXfdpd69eyszM1MPPvigduzYoXr16jm0rKVLlyoqKkrR0dGKj49XUFCQwsPDlZqaWuD0OTk56tq1qxITE7Vs2TIdOHBAH330kfz9/R39GAAAwKRu6CZ+RaVdu3Zq06aN3n//fUlSXl6eAgIC9Mwzz2jMmDH5pp89e7befvtt7d+/X25ubje0Tm7iVzByFx1ylyxylyxylywz53aUI9/fDl8t9f3331/3/Y4dOxZqOTk5Odq+fbvGjh1rG3NxcVFYWJji4uIKnGfVqlUKCQnRiBEj9O9//1s1atTQgAED9NJLL8nV1bXAebKzs5WdnW37OT09vVD5AABA2eRwubn77rvzjVks/+2Nubm5hVpOWlqacnNz5evrazfu6+ur/fv3FzjPb7/9po0bN+qxxx7TmjVrdOjQIT399NP6888/FR0dXeA8MTExmjhxYqEyAQCAss/hc27OnDlj90pNTdXatWvVpk0brV+/vjgy2uTl5cnHx0cffvihgoOD1a9fP/3jH//Q7NmzrznP2LFjde7cOdsrOTm5WDMCAIDS5fCeG29v73xjXbt2lbu7u6KiorR9+/ZCLad69epydXVVSkqK3XhKSor8/PwKnKdmzZpyc3OzOwTVpEkTnThxQjk5OXJ3d883j9Vq5f47AADcQm7owZkF8fX11YEDBwo9vbu7u4KDgxUbG2sby8vLU2xsrEJCQgqcp0OHDjp06JDy8vJsY7/++qtq1qxZYLEBAAC3Hof33OzatcvuZ8MwdPz4cb355ptq2bKlQ8uKiopSRESEWrdurbZt22ratGnKzMzUkCFDJEmDBg2Sv7+/YmJiJElPPfWU3n//fT333HN65plndPDgQb3xxht69tlnHf0YAADApBwuNy1btpTFYtH/XkHevn17zZ0716Fl9evXTydPntT48eN14sQJtWzZUmvXrrWdZJyUlCQXl//uXAoICNC6des0atQotWjRQv7+/nruuef00ksvOfoxAACASTl8n5v/fTimi4uLatSoIQ8PjyINVly4z03ByF10yF2yyF2yyF2yzJzbUcV6n5vatWvfcDAAAIDiVqhy8+677xZ6gZz/AgAASlOhDksFBgYWbmEWi3777bebDlWcOCxVMHIXHXKXLHKXLHKXLDPndlSRH5Y6cuRIkQQDAAAobkV2nxsAAABn4PAJxZL0+++/a9WqVUpKSlJOTo7de1OmTCmSYAAAADfC4XITGxurXr16qW7dutq/f7+aN2+uxMREGYahO+64ozgyAgAAFJrDh6XGjh2r0aNHa/fu3fLw8NDy5cuVnJysTp06qW/fvsWREQAAoNAcLjf79u3ToEGDJEnlypVTVlaWKlasqFdffVWTJk0q8oAAAACOcLjcVKhQwXaeTc2aNXX48GHbe2lpaUWXDAAA4AY4fM5N+/bttXnzZjVp0kQ9evTQCy+8oN27d2vFihVq3759cWQEAAAotEKXm9OnT6tq1aqaMmWKMjIyJEkTJ05URkaGli5dqgYNGnClFAAAKHWFfnCmh4eH+vTpo8jISHXt2rW4cxUb7lBcMHIXHXKXLHKXLHKXLDPndpQj39+FPufmo48+0smTJ9W9e3fVqVNHEyZMUGJi4s1mBQAAKFKFLjePP/64YmNjdejQIUVERGjBggWqX7++unbtqqVLl+a7mR8AAEBpcPhqqcDAQE2cOFFHjhzR2rVr5ePjo6FDh6pmzZo8ERwAAJS6Qp9zcz3Lly/XsGHDdPbsWeXm5hZFrmLDOTcFI3fRIXfJInfJInfJMnNuRxX5U8ELcvToUc2bN08LFixQcnKyOnfurMjIyBtdHAAAQJFwqNxkZ2dr+fLlmjt3rjZt2iR/f38NHjxYQ4YMUZ06dYopIgAAQOEVutw8/fTTWrJkiS5cuKDevXtrzZo16tq1qywWZ9whBgAAblWFLjebN29WdHS0Bg4cqGrVqhVnJgAAgBtW6HKza9eu4swBAABQJBy+FBwAAMCZUW4AAICpUG4AAICpUG4AAICpFOqEYkdOJm7RosUNhwEAALhZhSo3LVu2lMVi0bWe1HDlPYvF4vSPXwAAAOZWqHJz5MiR4s4BAABQJApVbmrXrl3cOQAAAIpEocrNqlWrCr3AXr163XAYAACAm1WoctOnT59CLYxzbgAAQGkrVLnJy8sr7hwAAABFgvvcAAAAUyn0gzOvlpmZqe+++05JSUnKycmxe+/ZZ58tkmAAAAA3wuFys2PHDvXo0UMXLlxQZmamqlatqrS0NJUvX14+Pj6UGwAAUKocPiw1atQo9ezZU2fOnJGnp6d+/PFHHT16VMHBwXrnnXeKIyMAAEChOVxuEhIS9MILL8jFxUWurq7Kzs5WQECA3nrrLb388svFkREAAKDQHC43bm5ucnG5PJuPj4+SkpIkSd7e3kpOTi7adAAAAA5y+JybVq1a6eeff1aDBg3UqVMnjR8/XmlpaVq0aJGaN29eHBkBAAAKzeE9N2+88YZq1qwpSfrnP/+pKlWq6KmnntLJkyf1wQcfFHlAAAAAR1iMaz3q26TS09Pl7e2tc+fOycvLq8iXbynyJd68wvyCyV10yF2yyF2yyF2yzJzbUY58fzu85+bIkSM6ePBgvvGDBw8qMTHR0cUBAAAUKYfLzeDBg7Vly5Z84z/99JMGDx5cFJkAAABumMPlZseOHerQoUO+8fbt2yshIaEoMgEAANwwh8uNxWLR+fPn842fO3eOJ4IDAIBS53C56dixo2JiYuyKTG5urmJiYnTXXXcVaTgAAABHOXyfm0mTJqljx45q1KiRQkNDJUn/+c9/lJ6ero0bNxZ5QAAAAEc4vOemadOm2rVrlx555BGlpqbq/PnzGjRokPbv389N/AAAQKnjPjdFrKzeb4DcRYfcJYvcJYvcJcvMuR1VrPe5kS4fhho4cKDuvPNOHTt2TJK0aNEibd68+UYWBwAAUGQcLjfLly9XeHi4PD09FR8fr+zsbEmXr5Z64403ijwgAACAIxwuN6+//rpmz56tjz76SG5ubrbxDh06KD4+vkjDAQAAOMrhcnPgwAF17Ngx37i3t7fOnj1bFJkAAABumMPlxs/PT4cOHco3vnnzZtWtW7dIQgEAANwoh8vNk08+qeeee04//fSTLBaL/vjjD/3rX//S6NGj9dRTTxVHRgAAgEJz+CZ+Y8aMUV5enrp06aILFy6oY8eOslqtGj16tJ555pniyAgAAFBoN3yfm5ycHB06dEgZGRlq2rSpKlasqKysLHl6ehZ1xiLFfW4KRu6iQ+6SRe6SRe6SZebcjir2+9xIkru7u5o2baq2bdvKzc1NU6ZMUWBg4I0uDgAAoEgUutxkZ2dr7Nixat26te68806tXLlSkjRv3jwFBgZq6tSpGjVq1A2FmDFjhurUqSMPDw+1a9dOW7duLdR8S5YskcViUZ8+fW5ovQAAwHwKXW7Gjx+vWbNmqU6dOkpMTFTfvn01bNgwTZ06VVOmTFFiYqJeeuklhwMsXbpUUVFRio6OVnx8vIKCghQeHq7U1NTrzpeYmKjRo0fbHt4JAAAgOVBuPv/8cy1cuFDLli3T+vXrlZubq0uXLmnnzp169NFH5erqekMBpkyZoieffFJDhgxR06ZNNXv2bJUvX15z58695jy5ubl67LHHNHHiRC4/BwAAdgpdbn7//XcFBwdLkpo3by6r1apRo0bJYrnxU5lycnK0fft2hYWF/TeQi4vCwsIUFxd3zfleffVV+fj4KDIy8obXDQAAzKnQl4Ln5ubK3d39vzOWK6eKFSve1MrT0tKUm5srX19fu3FfX1/t37+/wHk2b96sOXPmKCEhoVDryM7Otj3/Srp8tjUAADCvQpcbwzA0ePBgWa1WSdLFixc1fPhwVahQwW66FStWFG3Cq5w/f16PP/64PvroI1WvXr1Q88TExGjixInFlgkAADiXQpebiIgIu58HDhx40yuvXr26XF1dlZKSYjeekpIiPz+/fNMfPnxYiYmJ6tmzp20sLy9P0uU9SQcOHFC9evXs5hk7dqyioqJsP6enpysgIOCmswMAAOdU6HIzb968Il+5u7u7goODFRsba7ucOy8vT7GxsRo5cmS+6Rs3bqzdu3fbjY0bN07nz5/X9OnTCywtVqvVtrcJAACYn8OPXyhqUVFRioiIUOvWrdW2bVtNmzZNmZmZGjJkiCRp0KBB8vf3V0xMjDw8PNS8eXO7+StXrixJ+cYBAMCtqdTLTb9+/XTy5EmNHz9eJ06cUMuWLbV27VrbScZJSUlycbnhGykDAIBbzA0/W6qs4tlSBSN30SF3ySJ3ySJ3yTJzbkeVyLOlAAAAnBHlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmArlBgAAmIpTlJsZM2aoTp068vDwULt27bR169ZrTvvRRx8pNDRUVapUUZUqVRQWFnbd6QEAwK2l1MvN0qVLFRUVpejoaMXHxysoKEjh4eFKTU0tcPpNmzapf//++vbbbxUXF6eAgAB169ZNx44dK+HkAADAGVkMwzBKM0C7du3Upk0bvf/++5KkvLw8BQQE6JlnntGYMWP+cv7c3FxVqVJF77//vgYNGvSX06enp8vb21vnzp2Tl5fXTef/X5YiX+LNK8wvmNxFh9wli9wli9wly8y5HeXI93ep7rnJycnR9u3bFRYWZhtzcXFRWFiY4uLiCrWMCxcu6M8//1TVqlULfD87O1vp6el2LwAAYF6lWm7S0tKUm5srX19fu3FfX1+dOHGiUMt46aWXdNttt9kVpKvFxMTI29vb9goICLjp3AAAwHmV+jk3N+PNN9/UkiVL9MUXX8jDw6PAacaOHatz587ZXsnJySWcEgAAlKRypbny6tWry9XVVSkpKXbjKSkp8vPzu+6877zzjt5880198803atGixTWns1qtslqtRZIXAAA4v1Ldc+Pu7q7g4GDFxsbaxvLy8hQbG6uQkJBrzvfWW2/ptdde09q1a9W6deuSiAoAAMqIUt1zI0lRUVGKiIhQ69at1bZt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\n"
+ },
+ "metadata": {}
+ }
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [],
+ "metadata": {
+ "id": "13cZXvb0DsvK"
+ },
+ "execution_count": null,
+ "outputs": []
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.9.16"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/Stock_Price_Prediction.ipynb b/Stock_Price_Prediction.ipynb
new file mode 100644
index 0000000..7c3ad61
--- /dev/null
+++ b/Stock_Price_Prediction.ipynb
@@ -0,0 +1,1805 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "id": "qCDSjVhXLr_Z"
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.impute import SimpleImputer\n",
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn.svm import SVR\n",
+ "from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor, GradientBoostingRegressor, DecisionTreeRegressor\n",
+ "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error\n",
+ "from sklearn.neighbors import KNeighborsRegressor\n",
+ "from tensorflow.keras.models import Sequential\n",
+ "from tensorflow.keras.layers import Dense,LSTM"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "SOQbXSiB-g5G",
+ "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
+ ]
+ }
+ ],
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/content/drive')\n",
+ "df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "Sc4id6VxL8BS",
+ "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Date \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Adj Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 01-01-1996 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 12.409931 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 02-01-1996 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 12.014931 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 03-01-1996 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 11.694577 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 04-01-1996 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 11.654142 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 05-01-1996 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 11.588827 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ],
+ "text/plain": [
+ " Date Open High Low Close Adj Close \\\n",
+ "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
+ "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
+ "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
+ "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
+ "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
+ "\n",
+ " Volume \n",
+ "0 43733533.0 \n",
+ "1 56167280.0 \n",
+ "2 68296318.0 \n",
+ "3 86073880.0 \n",
+ "4 76613039.0 "
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Load the dataset\n",
+ "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "id": "7LaYGXsfN-8y"
+ },
+ "outputs": [],
+ "source": [
+ "# Drop the 'Date' and 'Adj Close' columns\n",
+ "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "pqbTBdnBOKJc",
+ "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n",
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
\n",
+ "
\n"
+ ],
+ "text/plain": [
+ " Open High Low Close Volume\n",
+ "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
+ "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
+ "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
+ "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
+ "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "id": "dydEPoNeM6eN"
+ },
+ "outputs": [],
+ "source": [
+ "# Handle missing values\n",
+ "imputer = SimpleImputer(strategy='mean')\n",
+ "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {
+ "id": "OQ3cGqgTMBwt"
+ },
+ "outputs": [],
+ "source": [
+ "# Select features and target variable\n",
+ "X = df[['Open', 'High', 'Low', 'Volume']]\n",
+ "y = df['Close']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "id": "9Oz-bwJOMEWD"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {
+ "id": "ugapDyXODtn3"
+ },
+ "outputs": [],
+ "source": [
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "997ZEgibCZIO",
+ "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(5659, 4)"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "bmtt76RuCeyG",
+ "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(1415, 4)"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "CeJkUJ92Ciqd",
+ "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(5659,)"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7HGC7VuTCjWc",
+ "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(1415,)"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Function to evaluate and print RMSE, MAE, and MAPE\n",
+ "def evaluate_model(model, X_test, y_test):\n",
+ " predictions = model.predict(X_test)\n",
+ " rmse = np.sqrt(mean_squared_error(y_test, predictions))\n",
+ " mae = mean_absolute_error(y_test, predictions)\n",
+ " mape = mean_absolute_percentage_error(y_test, predictions)\n",
+ "\n",
+ " print(f\"RMSE: {rmse}\")\n",
+ " print(f\"MAE: {mae}\")\n",
+ " print(f\"MAPE: {mape}\\n\")\n",
+ " \n",
+ " return rmse, mae, mape\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "metrics = {\n",
+ " \"Model\": [],\n",
+ " \"RMSE\": [],\n",
+ " \"MAE\": [],\n",
+ " \"MAPE\": []\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "c6Ek8jRlO2_I"
+ },
+ "source": [
+ "## 1. LINEAR REGRESSION"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {
+ "id": "RdZ1SpzdMHAJ"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a linear regression model\n",
+ "model1 = LinearRegression()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "mPM035IzMY04",
+ "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "5286 257.350006\n",
+ "3408 129.464996\n",
+ "5477 279.350006\n",
+ "6906 588.500000\n",
+ "530 21.644367\n",
+ "Name: Close, dtype: float64"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_train.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "qBhQ9HbYMI3d",
+ "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "LinearRegression()"
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model1.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "id": "X269co2kMS4z"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model1, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Linear Regressor\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "GxtMzlg-gR2P"
+ },
+ "source": [
+ "## 2. Support Vector Regression"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "id": "0xQewd7QWTtq"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an SVR model\n",
+ "model2 = SVR()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "22SaCsQmfhgP",
+ "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "SVR()"
+ ]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model2.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {
+ "id": "OQ1nL4oYfkAC"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model2, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"SVR\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "hcIfVMWdgcKt"
+ },
+ "source": [
+ "## 3. Random Forest Regressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "id": "f7raXT_hf2ij"
+ },
+ "outputs": [],
+ "source": [
+ "model3 = RandomForestRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "fF002Yepgk55",
+ "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "RandomForestRegressor()"
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model3.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "metadata": {
+ "id": "8nRU_pzEgnCt"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model3, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Random Forest\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "mZsLwLivhLGH"
+ },
+ "source": [
+ "## 4. Gradient Boosting Models (GBM)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {
+ "id": "TI8idoxOg6jF"
+ },
+ "outputs": [],
+ "source": [
+ "model4 = GradientBoostingRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
+ },
+ "id": "2gpbDxshhexj",
+ "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
+ ],
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
+ ]
+ },
+ "execution_count": 54,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model4.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {
+ "id": "Jj9DXdUPhh9V"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model4, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"GBM\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "d8nSGoyuh9dx"
+ },
+ "source": [
+ "## 5. Extreme Gradient Boosting (XGBoost)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {
+ "id": "DyhhdlZAhx94"
+ },
+ "outputs": [],
+ "source": [
+ "import xgboost as xgb\n",
+ "# Create an XGBoost model\n",
+ "model5 = xgb.XGBRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
+ },
+ "id": "RAIwxIp5iH9Z",
+ "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
+ ],
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
+ ]
+ },
+ "execution_count": 60,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model5.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model5, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"XGBoost\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "A_J776rtiovq"
+ },
+ "source": [
+ "## 6. AdaBoostRegressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {
+ "id": "HNq66cXRiYPJ"
+ },
+ "outputs": [],
+ "source": [
+ "model6 = AdaBoostRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "P0oB5wjQivBr",
+ "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "AdaBoostRegressor()"
+ ]
+ },
+ "execution_count": 66,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model6.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {
+ "id": "Bf1m5ukOi2VM"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model6, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"AdaBoost Regressor\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Q9DzOt3CkWFX"
+ },
+ "source": [
+ "## 7. Decision Tree"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {
+ "id": "23DZ2biSjF9a"
+ },
+ "outputs": [],
+ "source": [
+ "model7 = DecisionTreeRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "6mQEQf-ykc9F",
+ "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "DecisionTreeRegressor()"
+ ]
+ },
+ "execution_count": 72,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model7.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {
+ "id": "BFJ9q_tvkgRC"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model7, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Decision Tree\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "LH-B-Xd6k5UD"
+ },
+ "source": [
+ "## 8. KNeighborsRegressor(KNN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {
+ "id": "JVDSed7yktFY"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a KNN model\n",
+ "model8 = KNeighborsRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "9fn64o-ZlBka",
+ "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "KNeighborsRegressor()"
+ ]
+ },
+ "execution_count": 78,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model8.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 79,
+ "metadata": {
+ "id": "hbfbbjcSlDn7"
+ },
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model8, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"KNN\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "X5XtlzMXljps"
+ },
+ "source": [
+ "## 9. Artificial Neural Networks (ANN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {
+ "id": "vd1fDjQiltP4"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an ANN model\n",
+ "model9 = Sequential()\n",
+ "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
+ "model9.add(Dense(16, activation='relu'))\n",
+ "model9.add(Dense(1, activation='linear'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {
+ "id": "ZIf94WLMlv04"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model9.compile(loss='mean_squared_error', optimizer='adam')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "FX5DTKqslxWf",
+ "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 86,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "OVW2qpNsmGVq",
+ "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "45/45 [==============================] - 0s 1ms/step\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model9, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"ANN\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "vjSMQNcOnFPJ"
+ },
+ "source": [
+ "## 10. LSTM(Long Short term Memory)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 92,
+ "metadata": {
+ "id": "uACvajfImrbB"
+ },
+ "outputs": [],
+ "source": [
+ "# Reshape the input data for LSTM\n",
+ "n_features = X_train_scaled.shape[1]\n",
+ "n_steps = 10\n",
+ "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
+ "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
+ "\n",
+ "# Reshape the input data\n",
+ "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
+ "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 93,
+ "metadata": {
+ "id": "r066pVYpnXH5"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an LSTM model\n",
+ "model = Sequential()\n",
+ "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
+ "model.add(Dense(1))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {
+ "id": "YpSfHu6gov35"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model.compile(loss='mean_squared_error', optimizer='adam')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 95,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "0vHjcluaoxzP",
+ "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 95,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 96,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "gEE06_TjozYv",
+ "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "44/44 [==============================] - 0s 4ms/step\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model10, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"LSTM\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create a DataFrame for metrics\n",
+ "metrics_df = pd.DataFrame(metrics)\n",
+ "\n",
+ "# Plot RMSE, MAE, and MAPE for each model\n",
+ "plt.figure(figsize=(15, 5))\n",
+ "\n",
+ "# RMSE Plot\n",
+ "plt.subplot(1, 3, 1)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['RMSE'], color='lightblue')\n",
+ "plt.xlabel('RMSE')\n",
+ "plt.title('RMSE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# MAE Plot\n",
+ "plt.subplot(1, 3, 2)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['MAE'], color='lightgreen')\n",
+ "plt.xlabel('MAE')\n",
+ "plt.title('MAE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# MAPE Plot\n",
+ "plt.subplot(1, 3, 3)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['MAPE'], color='salmon')\n",
+ "plt.xlabel('MAPE')\n",
+ "plt.title('MAPE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.9.16"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 0
+}
From 5a6e093e313f9b13816b25a007c84d5e84c78bdc Mon Sep 17 00:00:00 2001
From: spandana2004 <110383668+spandana2004@users.noreply.github.com>
Date: Sun, 6 Oct 2024 17:58:31 +0530
Subject: [PATCH 07/76] reduced_redundancy_stock_price_prediction
This file has reduced redundant code for print statements for training and also for evaluation of the Stock Price prediction code.
---
...ed_redundancy_stock_price_prediction.ipynb | 289 ++++++++++++++++++
1 file changed, 289 insertions(+)
create mode 100644 reduced_redundancy_stock_price_prediction.ipynb
diff --git a/reduced_redundancy_stock_price_prediction.ipynb b/reduced_redundancy_stock_price_prediction.ipynb
new file mode 100644
index 0000000..37e1d9d
--- /dev/null
+++ b/reduced_redundancy_stock_price_prediction.ipynb
@@ -0,0 +1,289 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "d6a21042",
+ "metadata": {},
+ "source": [
+ "DEPENDENCIES"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "15cc2438",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "from sklearn.model_selection import train_test_split, GridSearchCV\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn.svm import SVR\n",
+ "from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor, GradientBoostingRegressor\n",
+ "from sklearn.tree import DecisionTreeRegressor\n",
+ "from sklearn.neighbors import KNeighborsRegressor\n",
+ "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, accuracy_score, precision_score, confusion_matrix, recall_score, f1_score\n",
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "import xgboost as xgb\n",
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "1a47080a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Load the dataset\n",
+ "df = pd.read_csv('SBIN.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "8b945263",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Data preprocessing\n",
+ "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)\n",
+ "from sklearn.impute import SimpleImputer\n",
+ "imputer = SimpleImputer(strategy='mean')\n",
+ "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "af430abe",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Select features and target variable\n",
+ "X = df[['Open', 'High', 'Low', 'Volume']]\n",
+ "y = df['Close']"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "763efa5e",
+ "metadata": {},
+ "source": [
+ "TRAINING AND TESTING"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "2dddc0b9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "1c523190",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "73b110e4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Function to train and evaluate model\n",
+ "def train_and_evaluate_model(model, X_train, y_train, X_test, y_test, params=None):\n",
+ " if params:\n",
+ " model = GridSearchCV(model, params, scoring='neg_mean_squared_error', cv=5, n_jobs=-1)\n",
+ " model.fit(X_train, y_train)\n",
+ " predictions = model.predict(X_test)\n",
+ " \n",
+ " # Calculate evaluation metrics\n",
+ " rmse = np.sqrt(mean_squared_error(y_test, predictions))\n",
+ " mae = mean_absolute_error(y_test, predictions)\n",
+ " mape = mean_absolute_percentage_error(y_test, predictions)\n",
+ " accuracy = accuracy_score(y_test > predictions, y_test > predictions.round())\n",
+ " precision = precision_score(y_test > predictions, y_test > predictions.round())\n",
+ " confusion = confusion_matrix(y_test > predictions, y_test > predictions.round())\n",
+ " recall = recall_score(y_test > predictions, y_test > predictions.round())\n",
+ " f1 = f1_score(y_test > predictions, y_test > predictions.round())\n",
+ "\n",
+ " # Print the evaluation metrics\n",
+ " print(f\"RMSE: {rmse}, MAE: {mae}, MAPE: {mape}, Accuracy: {accuracy}, Precision: {precision}, Confusion Matrix:\\n{confusion}, Recall: {recall}, F1 Score: {f1}\")\n",
+ "\n",
+ " return model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "68f21263",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Define models and their hyperparameters\n",
+ "models_params = {\n",
+ " 'Linear Regression': (LinearRegression(), None),\n",
+ " 'SVR': (SVR(), {'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5], 'kernel': ['sigmoid']}),\n",
+ " 'Random Forest': (RandomForestRegressor(), None),\n",
+ " 'Gradient Boosting': (GradientBoostingRegressor(), None),\n",
+ " 'XGBoost': (xgb.XGBRegressor(), None),\n",
+ " 'AdaBoost': (AdaBoostRegressor(), None),\n",
+ " 'Decision Tree': (DecisionTreeRegressor(), None),\n",
+ " 'KNeighbors': (KNeighborsRegressor(), {'n_neighbors': [3, 5, 7, 9, 11, 15, 20, 23, 25, 30, 60, 70, 150]})\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "af1992c1",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Linear Regression Model:\n",
+ "RMSE: 1.6881364651923592, MAE: 0.9433353486266863, MAPE: 0.006085435968276418, Accuracy: 0.8296819787985866, Precision: 0.8623595505617978, Confusion Matrix:\n",
+ "[[560 98]\n",
+ " [143 614]], Recall: 0.8110964332892999, F1 Score: 0.8359428182437032\n",
+ "\n",
+ "SVR Model:\n",
+ "RMSE: 134.5606234817444, MAE: 76.05976804010935, MAPE: 0.39705639844596075, Accuracy: 0.9978798586572438, Precision: 0.9970544918998527, Confusion Matrix:\n",
+ "[[735 2]\n",
+ " [ 1 677]], Recall: 0.9985250737463127, F1 Score: 0.997789240972734\n",
+ "\n",
+ "Random Forest Model:\n",
+ "RMSE: 2.191031983578823, MAE: 1.254384854932792, MAPE: 0.007957611370512454, Accuracy: 0.8551236749116607, Precision: 0.8556851311953353, Confusion Matrix:\n",
+ "[[623 99]\n",
+ " [106 587]], Recall: 0.847041847041847, F1 Score: 0.851341551849166\n",
+ "\n",
+ "Gradient Boosting Model:\n",
+ "RMSE: 2.697993647984777, MAE: 1.6922021460047614, MAPE: 0.011881429758725463, Accuracy: 0.9017667844522969, Precision: 0.8982300884955752, Confusion Matrix:\n",
+ "[[667 69]\n",
+ " [ 70 609]], Recall: 0.8969072164948454, F1 Score: 0.8975681650700075\n",
+ "\n",
+ "XGBoost Model:\n",
+ "RMSE: 2.733930065274145, MAE: 1.502457380471909, MAPE: 0.010026410639661481, Accuracy: 0.8840989399293286, Precision: 0.8948106591865358, Confusion Matrix:\n",
+ "[[613 75]\n",
+ " [ 89 638]], Recall: 0.8775790921595599, F1 Score: 0.8861111111111112\n",
+ "\n",
+ "AdaBoost Model:\n",
+ "RMSE: 9.915909571695305, MAE: 8.180488940261938, MAPE: 0.1986601163272193, Accuracy: 0.992226148409894, Precision: 0.986, Confusion Matrix:\n",
+ "[[911 7]\n",
+ " [ 4 493]], Recall: 0.9919517102615694, F1 Score: 0.9889669007021062\n",
+ "\n",
+ "Decision Tree Model:\n",
+ "RMSE: 3.0678929179050054, MAE: 1.6473595220251132, MAPE: 0.010260672105066157, Accuracy: 0.8572438162544169, Precision: 0.8650137741046832, Confusion Matrix:\n",
+ "[[585 98]\n",
+ " [104 628]], Recall: 0.8579234972677595, F1 Score: 0.8614540466392319\n",
+ "\n",
+ "KNeighbors Model:\n",
+ "RMSE: 3.261285106039988, MAE: 1.8071640369846882, MAPE: 0.014187783844224503, Accuracy: 0.8968197879858657, Precision: 0.9097744360902256, Confusion Matrix:\n",
+ "[[664 60]\n",
+ " [ 86 605]], Recall: 0.8755426917510853, F1 Score: 0.8923303834808259\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Train and evaluate all models\n",
+ "for name, (model, params) in models_params.items():\n",
+ " print(f\"\\n{name} Model:\")\n",
+ " train_and_evaluate_model(model, X_train_scaled, y_train, X_test_scaled, y_test, params)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "fb66a3c1",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAGDCAYAAAD6aR7qAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABV40lEQVR4nO3deXxU5dn/8c+VEJIACZElESKKKy7IIrjUraB9inWlLm3dqq2tj13tRtVqq7WLttS2v9a2WvflcatabN3QKrgWV2RRFgVRCEvYQliy5/r9cU5wCDPJZDJbku/79ZoXM2fOXHPNcM/Mlfvc577N3RERERGR1MvJdAIiIiIiPYUKLxEREZE0UeElIiIikiYqvERERETSRIWXiIiISJqo8BIRERFJExVeIpKVzOxdM5uQ6TwkNjNbZmafydBzl5nZi2a22cxuSEH8c83smTj3vdDMXm7j/plm9rXkZSddmQov6bDWX7Zm9iUz22hmnzaz4WbmZvZEq8fca2bXhNcnhPv8pdU+L5vZhTGe8xozuzfKdjezfZLxunoKM7vTzH6ZxHhPmdmW8NJgZvURt29KNK67H+TuM5OVZyzhj6ab2e9bbZ8cbr8zYttFZrYw/LFfY2ZPmFlReN+drV77FjObk+r8I3Jr97PXzVwMrAOK3f2Hre8M/z/czA6L2LaPmcU1eaW7/5+7fzZ56YoEVHhJp5jZBcBfgJPc/YWIu44ws6PaeOhW4MtmNjyV+aWCmfXK5nip1jpfd/+cu/dz937A/wG/bbnt7pdkJssOWwJ8sdVr+zKwuOWGmX0a+DVwtrsXAQcAD7WKE/na+7n76FQnHkV7n72sk+BnYA/gPW97FvANQNL+yMi0rvZdIdGp8JKEmdnFwA3AJHd/tdXdv6XtL7wq4E7g6iTlsquZbTOzgRHbxpnZWjPLC3s1XjGzP5vZprDX4viIffub2W1mtsrMKszsl2aWG97X8tg/mNkG4Jo44n3FzBaEPSNLzex/I+6bYGYrzOwyM1sN3GFmu5jZ42G+G8Pru0U8ZmaY06thT8q/zWygmf2fmVWb2RuRRayZ7W9mz5rZBjNbZGZfCLdfDJwL/LglTrh9qJk9Ej7/h2b23YhY15jZw2HPSTVwYZz/JxPMbEWrbdt7S8O4D5nZ3eH79K6ZjU9w30PMbHZ43z/M7EHrWK/eamAeMCmMNwA4EvhXxD6HAv9199kA7r7B3e9y980deJ6WfBeY2ckRt3uZ2brwdRSE7/V6M6sK/2/LOhA+5mfPohwSs4heYwt6if5qn/RivhJ+tv4YtsuFZja2VdhDzey98P47zKwgIvbJZvZO+DpeNbNREfctCz8Dc4GtFqWoMLMjw9e/Kfz3yJY8gQv4pB3HOtx5FzDKgqI52vvR3uf+5Yh9Pxt+ljaF79EL1urwoZn9LnwfPjSzz7V6ur3N7PXw8Y+FbazlcaeGbbrKgs/6AW29T+HtirC9L7KI7x7Jfiq8JFHfAH4BHO/ub0a5/y/Afm18IQL8CjjDzEZ0Nhl3Xw3MBL4Qsfk84AF3bwhvHw4sBQYRFHyPRnz53QU0AvsAY4HPApFfqi2PLQ3zbi9eJXAyUAx8BfiDmR0SEW9XYADBX+0XE3wW7whv7w7UADe2eplfAs4HyoG9gf+GjxkALAhzwMz6As8C94X5ng381cwOcve/s2Ov1ClmlgP8G5gTxj4e+J6ZTYp47tOAh4GS8PHJcirwQBj3X1Fec7v7mllv4J8EhfwA4H7g85EPDH/Qjm4nl7sJerkgeK8fA+oi7n8NmGRmPzezo8wsv514bbmf4P+lxSRgnbu/TVBQ9AeGAQOBSwjaQ7zi+ey15QvAVQTtuo6gnb0d3n4Y+H2r/c8N898b2C98LGF7vx343/B13Az8q9X7djZwElDi7o2RQcPP0hPAn8LH/x54wswGuvuF7NiO/xPjtWwj6KX8VYz72/vct+TS8tqvCHNZRFCYRzo83D6IoPi9zcws4v4vA18FhobP+acw9n4E7eF7wGDgSeDfYbtusf19Inifvw0cGva8TgKWxXh9koVUeEmi/geYRdBLEE0twZddzF6HsFi6Cbg2zuf8QvgDuv3S6v67CIotwr9azwbuibi/Evijuze4+4MEX5Inhb0JnwO+5+5b3b0S+APBj2+Lle7+Z3dvdPeatuKFr+0Jd1/igReAZ4BjIuI1A1e7e52717j7end/xN23hT0ovwJa/5V+RxhzE/AUsMTd/xP+YP2D4IcDgoJvmbvfEeb7NvAIcGaM9/VQYLC7X+vu9e6+FLil1ev/r7tPc/fmiNefDC+7+5Pu3kTwf9XWoblY+x4B9AL+FP5fPAq8HvlAdy9x95iDn0P/BCaYWX+CH8m7W8V4CTgdOISgIFhvZr9v6SEJ/ahVG70rxnPdB5xqZn3C2+eE2wAaCH7c93H3Jnd/y92r28k9UrufvXb8M3zOWoL3pNbd7w7f9wf5pJ21uNHdl7v7hvB5WwrKrwM3u/tr4eu4i6CQOyLisX8KHxutTZ0EvO/u94Tt+H5gIXBKB1/PzcDurXug4vzctzgReNfdHw0/b38i6CWN9JG73xK+T3cBQ4DInsp73H2+u28FfkrwfZYLfBF4wt2fDf9I/B1QyI6FXeT71ATkAweaWZ67L3P3JR18TySDVHhJoi4h+Ov21lZ/1UW6BSgzs7a+KH9D0IsQz1iYh8If0O2XVvc/RvBltBdBYbjJ3SN/gCtajQf5iOCvzz2APGBVREF3M0FvUYvlUfKJFQ8z+5yZzbLgUF8VwRf3oIh914Y/bIT79zGzm83sIwsO570IlLT6UV8Tcb0myu1+4fU9gMNbFajnEvSyRbMHMLTV/j9hxx+NaK8/GSJ/vLYBBdEOObWz71B2/r/ocL7hj9oThL097v5KlH2ecvdTCHrWTiM47BrZQ/K7Vm30ghjP9QFBL+UpYfF1Kp8UXvcA04EHzGylmf3WzPI6+HLi+ezFEm87axH5Xm//DBC0qx+2alfDIu5v/djWhobxIn1E0CsbN3evI+id/wUQ+V0Vz+c+MpftuYZtbUWrfVZH3L8tvBr5XrV+n/IIvhN2eJ3u3hzuWx7tsWHb+R5wDVBpZg+YWeR7KllOhZckqpLgkNQxwF+j7RD+9fZzdv7Ci9xnPfDHcJ9OCQuZhwiKjPPZsbcLoLxVkbg7sJLgS62O4Me25Qez2N0Pigwf5SmjxgsPpTxC8JdrWVggPsmO70HreD8ERgCHu3sxcGy4PVZR25blwAutCoB+7v6NGM+9HPiw1f5F7n5iG/nGYyvQ0qPT0gs5OIE47VnFzv8XwxKMdTfB/0XrtrODsOfvOeB5YGSCz9VyuPE0gkHiH4SxG9z95+5+IEGvx8l8cgg0Lm189lr/n8Qqxjsi8r1u+UxB0K5+1apd9Ql7rran2kbclQTFUaTdgYoEcryD4PBt5CHoeD73LVYBkWMuLfJ2nFq/Tw0EZ2Xu8DrD2MPY8XXu8D65+33ufnT4OCf4A1a6CBVekjB3XwkcB5xgZn+Isds9BN3iJ7QR6vcEPzAHtLFPvO4m6IU4FWg9/UQp8F0LBtufFT7fk+6+iuBQ4A1mVmxmOWa2t8UYkNtePKA3wWteCzSGhzjaOy29iKA3oSoc29KZkw4eJxjjc36YW56ZHRoxYHcNsFfE/q8D1eGA3UIzyzWzkWZ2aCdygOCMwAIzOynssbmK4H1Jtv8SHH75djjw+DTgsHYeE8sLBL2lf259h5mdZsHUKbtY4DCCw8GzEnyuBwjaxTf4pLcLM5toZgeHhWo1wQ90UwLxo3325gAHmdkYCwbBX5Ng7pG+ZWa7he32JwSHIyHodbvEzA4P36++YVsoijPukwTt+Jzw//WLwIEE7btDwsOD1wCXRWzryOf+CeBgC6YY6QV8i9g9yLGcZ2YHhj2c1wIPh4clHyIY8nB8+Dn5IUFB2PqEJQDMbISZHRf+gVdL8L2RSPuQDFHhJZ3i7ssJiq8zzey6KPc3ERQRA1rfF7FPNcFg1Jj7dCCfVwjGT73t7sta3f0asC/BX5m/As4Me9wg6FHoDbwHbCQYSDuknaeLGs+DMVrfJfhC3UgwfudfMaME/kgwrmMdwQ/50+3sH1P4/J8lGKuykuAQyG/4pOi5jeCQbJWZTQv/j04BxgAfhjncStBDkDAPxqJ9M4xVQdDb0vrwTKe5ez3B2KuLCM6WPY/gx3n7wHgLznw7JmqAHWO5uz8XjldqbSPBuKX3CQqie4Gp7h55skHLWXYtl3VtPNcqgqLxSD4pViD4QX84fI4FBMXgveHruMninBst2mfP3RcT/Oj/J3wd7Y17i8d9BAXM0vDyy/C53iR4v24keO8+IM4zYsPHryfo7fshsB74MXCyu8d8T9txP0HPVaS4Pvfhc55F8D21nqAAfJMdT75ozz0EJ4CsBgoIviNw90UEbfbPBJ+9U4BTwnYdTT5wfbjvaoI/AH/SgTwkw8zbnAJFpOsxs+eB+9z91ohtFwJfC7vnk/EcSY0nyWVmrwE3ufsdmc5Fuh8LzgReAZzr7jMynY90Lerxkm4lPDx2CDv2IEg3Z8GqCbuGh6QuAEbRiV5DkdbMbJKZlYSH+H5CMHYu0cPM0oNpFlzpNiw4dX8ycKknMKmldGkjCA7t9iOYhf7M8FCeSLJ8iuCwasuhyckxpsEQaZMONYqIiIikiQ41ioiIiKSJCi8RERGRNOkSY7wGDRrkw4cPT+lzbN26lb59+2ZFHOWiXJSLclEuykW5ZG8u7XnrrbfWuXv0CaPdPesv48aN81SbMWNG1sRRLqmLkaw4yiV1MZIVR7mkLkay4iiX1MVIVhzlkhjgTY9R0+hQo4iIiEiaqPASERERSRMVXiIiIiJposJLREREJE1UeImIiIikiQovERERkTRR4SUiIiKSJiq8RERERNJEhZeIiIhImnSJJYNEREREOmPa7AqmTl9ERVUN5bOeZ8qkEUweW572PFR4iYiISLc2bXYFVzw6j5qGJgAqqmq44tF5AGkvvnSoUURERLq1qdMXbS+6WtQ0NDF1+qK056LCS0RERLq1lVU1HdqeSjrUKCIiIt3Sx+u38ZunF+Ix7h9aUpjWfECFl4iIiHQzm2oa+OuMD7jjlWXk5hgnHFTGzMVrqW1o3r5PYV4uUyaNSHtuKrxERESkW2hoaub+1z/mj/95n43b6jnjkN340WdHsGv/gh3Paiwp1FmNIiIiIolwd2YsquRXTyxgydqtHLHXAK466UBGlvffvs/kseVMHlvOzJkzmTBhQsZyVeElIiIiXdaCVdX86okFvPzBOvYc1JdbvjyezxxQipllOrWoVHiJiIhIl1O5uZbfP7OYB99cTnFBHlefciDnHr4HvXtl94QNKrxEREQka7Wecf7S4/dlTXUtf3thCQ1NzXz1qD35znH7UNKnd6ZTjYsKLxEREclK0Wac//EjcwGYdFAZl3/uAPYc1DeTKXaYCi8RERHJStFmnAcY1K83N58/PgMZdV52HwgVERGRHivWzPLrt9SnOZPkUeElIiIiWWfBqmpyc6KfmZiJGeeTRYcaRUREJGs0NTu3vLSU3z+zmIK8HOobnfqmzM84nywqvERERCQrfLR+Kz98aA5vfrSREw7alV99fiQvvb8uK2acTxYVXiIiIpJR7s79ry/nl0+8R26O8YcvjmbymHLMLGtmnE8WFV4iIiKSMZXVtfz4kbnMXLSWo/YZyNQzR3fpMVztUeElIiIiGfH43JVcNW0+tQ1N/PzUgzj/iD3IiTGgvrtQ4SUiIiJpVbWtnp899i7/mrOS0cNK+P0XRrP34H6ZTistVHiJiIhI2ryweC0/fngO67fU84P/2Y9vTtibXrk9Z3YrFV4iIiKSEpHrLA7573PsNagPryzZwL6l/bjtgkMZWd4/0ymmnQovERERSbrW6yyu2lTLqk21TBwxiL+dN56CvNwMZ5gZKevbM7PbzazSzOZHbPuFmc01s3fM7BkzG5qq5xcREZHMibXO4uI1W3ts0QWpXTLoTuCEVtumuvsodx8DPA78LIXPLyIiImnW3Oy8uHgtFTHWWYy1/mJPkbJDje7+opkNb7WtOuJmX8BT9fwiIiKSPqs21fCPN1fw4BvLqaiqIcegOcqvfHeeoyse5p662icsvB5395ER234FfBnYBEx097UxHnsxcDFAWVnZuAceeCBleQJs2bKFfv06fyprMuIoF+WiXJSLclEuXSGXxmZnztomXlzRyNy1TThw0MAcjt0tj/qmZu55r4H6T5ZZpHcOXDiyN0cOzUt6LumO05aJEye+5e7jo97p7im7AMOB+THuuwL4eTxxxo0b56k2Y8aMrImjXFIXI1lxlEvqYiQrjnJJXYxkxVEuqYuRrDixYny4dotf/9QCH//LZ32Pyx73w371rE99eqF/tG7rDvv98+0VfuR1z/kelz3uR173nP/z7RVJzyVTcdoCvOkxappMntV4H/AEcHUGcxAREZFWIqeBKJ/1PFMmjeCEkbsy/d3VPPD6cv67dD25OcbEEaV86dBhTBgxOOpcXN1tncVkSGvhZWb7uvv74c1TgYXpfH4RERFpW+tpICqqavjhP+ZwxaNzqWloZtiAQqZMGsGZ43ajrLggw9l2PSkrvMzsfmACMMjMVhD0bJ1oZiOAZuAj4JJUPb+IiIh0XLRpIJqaHXJz+L+vHc6n9hrY7ddTTKVUntV4dpTNt6Xq+URERKTzYk33UNvQxFH7DEpzNt1Pz1kcSURERNpU29AUc3LTnj4NRLKo8BIREREqN9dyzi2zqGloolerQ4mFeblMmTQiQ5l1L1qrUUREpId7d+Umvn7Xm2zYVs9fzz2E+sbmT85qLAkG008eW57pNLsFFV4iIiI92NPzV/H9B+dQ0iePhy85kpHl/QE0DUSKqPASERHpgdydv8z4gN89s5gxw0r4+/njKNX0ECmnwktERKSHqW1o4scPz+Vfc1YyecxQrj9jVMxB9ZJcKrxERER6kMrqWr5+z1vMWV7FlEkj+OaEvTHTvFzposJLRESkh5hfsYmv3fUm1bUN3Hz+OCYdtGumU+pxVHiJiIj0AE/OW8UPHnqHAX168/AlR3Lg0OJMp9QjqfASERHpxtydPz33AX/4z2IO2b2Em88fz+Ci/Eyn1WOp8BIREemmauqb+NHDc3hi7ipOP6Sc604/mPxeGkSfSSq8REREupFpsyu2T36a9+x0Gpqcyz+3P/977F4aRJ8FVHiJiIh0E9NmV3DFo/OoaWgCoKHJ6Z2bw67FBSq6soTWahQREekmfv3kgu1FV4v6pmD5H8kO6vESERHp4t76aCM3v7CEys11Ue9fWVWT5owkFhVeIiIiXVBzs/P8wkpufnEJbyzbSP/CPIrye7G5rnGnfYeWFGYgQ4lGhZeIiEgXUtfYxGOzV3Lzi0tYsnYr5SWFXH3KgXxh/DCefW/NDmO8AArzcpkyaUQGM5ZIKrxERES6gOraBu577WNuf/lDKjfXceCQYv7fl8Zw0sFD6JUbDNmePLYcYPtZjeUlhUyZNGL7dsk8FV4iIiJZbPWmWm5/5UPue+1jttQ1cvQ+g7jhC6M5ep9BUc9UnDy2nMljy5k5cyYTJkxIf8LSJhVeIiIiWSBy/q3yWc9z3hG7s2TtVh57p4Jmh5MOHsLFx+7FyPL+mU5VOkGFl4iISIa1nn+roqqG3zy9iLwc49wj9uCio/dk2IA+Gc5SkkGFl4iISIZNnb5op/m3AAYV5XPNqQdlICNJFU2gKiIikmGx5tlavak2zZlIqqnwEhERyaDVm2rJzYm+nI/m3+p+VHiJiIhkyAeVWzjjb6+Sa9A7d8efZM2/1T2p8BIREcmA2R9v5KybXqWusYlHvnkUvz1zFOVhD1d5SSHXnX6w5t/qhjS4XkREJM1mLKrkm/e+TWlxPnd/9TD2GNiXkeX9Nf9WD6DCS0REJI0efmsFlz0ylwOGFHHHhYcxuCg/0ylJGqnwEhERSQN35+YXl3L9Uws5ep9B3HT+OPrl62e4p9H/uIiISIo1Nzu/fGIBt7/yIaeMHsoNZ42mdy8Ns+6JVHiJiIikUH1jMz/6xxz+NWclXzlqOD896UByYkwfId2fCi8REZEU2VLXyDfufYuX3l/HZSfszyWf3ivqwtbSc6jwEhERSYF1W+r4yh1v8N6qaqaeOYqzxg/LdEqSBVR4iYiIJNnH67fx5dtfY3V1Lbd8eRzH7V+W6ZQkS6jwEhERSaL5FZu48I43aGxu5r6vH8Ehu++S6ZQki6jwEhER6aRpsyuYOn0RFVU12NMv07+wFw9/40j2KS3KdGqSZXQuq4iISCdMm13BFY/Oo6KqBgAHahuamV9RndnEJCup8BIREemEqdMXUtPQtMO22sZmpk5flKGMJJup8BIREUlQTX0TFVW1Ue9bGfaAiURS4SUiIpKAlVU1nHXzqzHvH1pSmMZspKtQ4SUiItJBb320gVNvfIVl67bx9WP2pDAvd4f7C/NymTJpRIayk2ymsxpFREQ64KE3lnPltHmUlxTywMWHs09pEQcN7b/9rMbykkKmTBrB5LHlmU5VspAKLxERkTg0NjXzqycXcMcryzhm30HcePYh9O+TB8DkseVMHlvOzJkzmTBhQmYTlaymwktERKQdVdvq+fZ9s3n5g3VcdPSeXPG5/emVq9E60nEqvERERNrwQeVmvnbXm6ysquW3Z47iC1pzUTpBhZeIiEgMzy1Yw6UPvENBXi73X3w44/YYkOmUpItT4SUiItKKu3PTC0v57fSFjBzan5vPH6fpISQpVHiJiIhEqG1o4rJH5vLYOys5ZfRQfnvGKAp757b/QJE4qPASEREJrdpUw8V3v8X8lZuYMmkE35ywN2aW6bSkG1HhJSIiPda02RXb598a/PJ/qG1oxDFuOX88nzmwLNPpSTekwktERHqkabMruOLRedsXuF67pQ4DLjthhIouSRlNQiIiIl3StNkVHHX981z49FaOuv55ps2uaHP/5mZn9aZaXlu6nn+8uZyfTpu/vehq4cA9sz5OYdbS06nHS0REupzWvVUVVTVc8eg8GpqaGTOshI/Wb+PjDTtelm/YRl1jc7uxV1bVpDp96cFUeImISNwix0SVz3o+oTUJOxOjudlZs7mWXz7x3k69VTUNTUx5eO4O2/r2zmX3gX3ZZ3A/jtu/lGED+rDHgD7sPqAP59w6i5VVtTs9h6aNkFRS4SUiInGJ1csExF04tRfD3dm4rYHlG7axfOM2lm+oCf/dxoqNNVRsrKG+qe1eq//3pTHsHhZXA/r2jnlW4o8n7b9DLgCFeblMmTQirtcikoh2Cy8zKwWOAoYCNcB84E13b7+/VkREuoXKzbX8/N/vxuhlmsNDby6nMC+Xgt65wb95ORTm5W7fVtArl8Leufz26YVRY1z+yFxuemEJyzdsY2v9jvfv0iePYQP6cOCQYj57UBm77dKHPz67mPVb63fKs7ykkNPGxFcEthSL23vfSgoT6sET6YiYhZeZTQQuBwYAs4FKoACYDOxtZg8DN7h7dRryFBGRNKptaOKNZRt46f11vLh4LQtXb465b0OTU9/YzKaaBmobmqhtaKamoYnahiZqGppwj+P5GpvZbZc+fGrvgey2Sx+G7VLIsAF9GDagD/3yd/6pKsrvlZTeqsljy5k8tpyZM2cyYcKEDj1WJBFt9XidCHzd3Xc6vcPMegEnA/8DPBLtwWZ2e7hPpbuPDLdNBU4B6oElwFfcvaozL0BERDrP3Vm4ejMvvb+Wl95fx+sfbqCusZm8XGP8HgP48QkjuOOVZazdXLfTY8tLCnn4G0fGjFvX2Ly9IDvtLy+zpjp6jFsvGB93vuqtkq4qZuHl7lPauK8RmNZO7DuBG4G7I7Y9C1zh7o1m9hvgCuCyeJMVEZHERBvQfuQ+A3nlg3W8tHgdL32wbntRtW9pP849fA+O2W8Qh+85gD69g5+Kof0LO9zLZGYU5OVSkBcsuXPF5w5I2rgq9VZJV9TWocY/uvv3wuuXuvv/i7jvTne/sK3A7v6imQ1vte2ZiJuzgDMTyFlERDog2oD27z/4Di1HAAf07c3R+wzi6H0Hccy+gxjSP/pZfcnoZVJPlfR0bR1qPDbi+gXA/4u4PSoJz/1V4MEkxBERkTb8JsqAdgeKC3px39eP4MAhxeTkxLceYTJ6mdRTJT2ZeYxRj2Y2293Htr4e3n7b3Q9pN3jQ4/V4yxiviO1XAuOB0z1GAmZ2MXAxQFlZ2bgHHnggvleUoC1bttCvX7+siKNclItyUS7JiLOpznn2owYeX9oQc587T+ibllxSFUO5KJdMxWnLxIkT33L36IMW3T3qBZgD7AIMjLg+ILzMifW4VjGGA/NbbbsA+C/QJ54Y7s64ceM81WbMmJE1cZRL6mIkK45ySV2MZMXpybl8tG6rX/nPub7flU/68Msf9xFXPel7XPb4Tpcjr3su5bmkOkay4iiX1MVIVpxsyqU9BNNuRa1p2jrU2B94C2jpf347sl5LpAI0sxMIBtN/2t23JRJDRESie3flJm56YSlPzF1Jr5wcTj+knK8fuxfzVmzSRKEiWaKtsxqHdyawmd0PTAAGmdkK4GqCsxjzgWfDmYRnufslnXkeEZGezN2ZtXQDf3thCS8uXku//F58/Zi9+OrRe1JWXADA3oODwyoa0C6SeW2d1bgHUOXum8LbEwkmT10G/MXdd54yOIK7nx1l820JZyoiIts1NzvPvLeGv72whDnLqxjUrzdTJo3gvCP2oH9h3k77a0C7SHZo61DjQ8DngU1mNgb4B3AdMAb4K/C1VCcnIiI7zsE19L/Pcex+g3l92QaWrt3K7gP68MvJIzlz3G7b58oSkezVVuFV6O4rw+vnAbe7+w1mlgO8k/LMRERkpzm4Vm6q5YE3ljO0fwF/Pnssnxu5K71yczKcpYjEq61Pa+SkLscBzwG4FscWEUmb66PMwQVgBqeMHqqiS6SLaavH63kzewhYRTCVxPMAZjaEYK1FERFJkY/Xb+PvLy1h9abaqPevrIq+XUSyW1uF1/eALwJDgKPdvWUGvl2BK1Ocl4hIjzS/YhM3vbCEJ+etoldODn1657Ktfucer6El0Zf1EZHs1tZ0Eg7sNF28u89OaUYiIj2Mu/PqkvXc9MISXnp/XTAlxLF78dWj9uS/S9ZrDi6RbqSt6SQ2s+NEqRbeNoK6rDjFuYmIdGtNzc7T81dz0wtLmFexicFF+Vx2wv6ce8TuFBcEU0JoUWmR7qWtQ43PERxWfBR4wN0/Tk9KIiLdW21DE4+8vYJbXlzKsvXbGD6wD9edfjCfH1sedUoIzcEl0n20dahxspn1B04HbjGzAuBBgiJsQ7oSFBHpqiLn3yqf9TzfOm5vNm5t4I5XlrFuSx2jduvPX889hEkH7UpujrUfUES6vLZ6vAhnrb/DzO4iGGj/Z6AA+H0achMR6bJaz79VUVXDTx6dD8Ax+w7iG58ew6f2Hki4fJqI9BBtFl5mdiRwNnAM8DLweXd/KR2JiYh0ZVOnL4o6/9bgonzuuejwDGQkItmgrcH1y4AqgjMbLwYaw+2HALj726lPT0Ska1pZVRN1+7rNdWnORESySVs9XssIzmKcBHyWHWeyd4LZ7EVEpJWtdY307pVDXePOC31o/i2Rnq2twfUT0piHiEi3sHZzHRfd9QZ1jc3k5RoNTZ/MyqP5t0Qk5iJfZnZ0Ww80s2IzG5n8lEREuqala7dwxt9eZfGazdz65fFMPXM05WEPV3lJIdedfrDm3xLp4do61HiGmf0WeBp4C1hLcEbjPsBEYA/ghynPUESkC3j7441cdOcbmBn3f/0Ixu6+C4Dm3xKRHbR1qPH7ZrYLcCZwFsGajTXAAuBmd385PSmKiGS3Z99bw3fuf5uy4gLu/Mph7Dmob6ZTEpEs1d48XhuBW8KLiIi0cs+sj7j6sfkcXN6f2y48lEH98jOdkohksTYLLxERic7dmTp9EX+duYTj9i/lxnPG0qe3vlJFpG36lhAR6aD6xmYuf2Quj86u4OzDhvGL00bSKzfmuUoiItu1N3N9DnCEu7+apnxERLLa5toGvnHv27z8wTp+8D/78Z3j9tGyPyISt/bGeDWb2Q3Ap9KUj4hI1lpTXcuFd7zB4jWb+e2Zo/jC+GGZTklEuph4+safMbMzTH/SiUgP9v6azZz+11f5aP1WbrtgvIouEUlIPGO8fgD0BZrMrIZg6SB39+KUZpYm02ZXMHX6Iiqqaiif9TxTJo3QBIcissN3w6CXn2VLbQP9Cnrz4MWf4uDd+mc6PRHpototvNy9KB2JZMK02RVc8eg8ahqaAKioquGKR+cBqPgS6cFafzes21KPAVMm7KWiS0Q6Ja7TcMzsVDP7XXg5OdVJpcvU6Yu2f7G2qGloYur0RRnKSESyQbTvBgduf3lZRvIRke6j3cLLzK4HLgXeCy+Xhtu6vJVVNR3aLiI9g74bRCRV4hnjdSIwxt2bAczsLmA2cHkqE0uHoSWFVET5Ih0aLmorIj1L5eZapj69CI9xv74bRKSz4p3xryTiercZ4DBl0ggK83J32FaYl8uUSSMylJGIZEJdYxM3v7CE4373AtPeqeC4EYMpyNvx61HfDSKSDPH0eP0amG1mMwjOaDwWuCKlWaVJywD63zy9kFWbaiku6MW1p43UwHqRHsLdeW5BJb984j2Wrd/G8fuXctXJB7LnoL47nvFcUqgznkUkKeKZub4ZOAI4lKDwuszdV6cht7SYPLacyWPLGXHlE5w5bpi+WEV6iA8qN3Pt4wt4cfFa9h7clzu/cigTRpRuv7/lu2HmzJlMmDAhc4mKSLcSz8z133b3h4B/pSmnjCjJNyo312Y6DRFJsU01DfzxP4u5+78f0ad3Lj89+UC+/Kk9yNNaiyKSBvEcanzWzH4EPAhsbdno7htSllUGlOQbldV1mU5DRFKkqdl54I2PueGZxWzcVs+XDt2dH312Pwb2y890aiLSg8RTeH01/PdbEdsc2Cv56WROSb6xRj1eIt3SrKXr+fm/32PBqmoOGz6Aq089kIOGdpvzhESkC4lnjNfl7v5gmvLJmJICY+76OtwdLUsp0nVFDoove/U/DCku4J0Vmxjav4AbzxnLSQcP0WdcRDImnjFe3yI4zNitleTnUNNQz5a6RooK8jKdjogkoPVSP2uq61hTXccJB+3KH744hsLeue1EEBFJrXhGkz5rZj8ys2FmNqDlkvLM0qwkP/gLeI3GeYl0WdGW+gGYV7FJRZeIZAWN8Qq1FF6Vm2vZp7RfhrMRkURoqR8RyXbtFl7uvmc6Esm07YWXerxEuqxd+xewatPOJ8loqR8RyRYxDzWa2Y8jrp/V6r5fpzKpTCgpaDnUqDMbRbqqvQf33WmblvoRkWzS1hivL0Vcb71E0AkpyCWjCnKhT+9cKjerx0ukK3rro428smQ9x+w7iPKwh6u8pJDrTj9YK1KISNZo61Cjxbge7XaXZ2aUFuWrx0ukC6pvbOaKR+cypLiAv503jn75vbTUj4hkpbYKL49xPdrtbqG0uEA9XiJd0E0vLGHxmi3cdsF4+uXHc86QiEhmtPUNNdrMqgl6twrD64S3C1KeWQaUFuUzv2JTptMQkQ74oHILNz7/ASePGsLxB5RlOh0RkTbFLLzcvcdNelNWXMDzCys1e71IF9Hc7Pzk0XkU9s7l6lMOynQ6IiLtimcC1R6jtCifbfVNbKlrzHQqIhKH+9/4mNeXbeDKEw9gcJEWuxaR7KfCK0JZcXAEVeO8RLLfmuparn9yIZ/aayBnjd8t0+mIiMRFhVeE0vAvZp3ZKJL9rn7sXeqbmvn16QdraICIdBkqvCKUhj1ea9XjJZLVpr+7mqffXc2ln9mXPQftPGmqiEi2ijm43sw208a0Ee5enJKMMqi0WD1eItmuuraBnz02nwOGFPP1Y7rVkrEi0gO0dVZjEYCZXQusBu4hmEriXKAoLdmlWVF+LwrzcrVeo0gW++3TC1m7uY6/nz+evFx12otI1xLPt9Ykd/+ru29292p3/xtwRqoTywQzo6w4nzU61CiSld5YtoF7Z33MhUfuyehhJZlOR0Skw+IpvJrM7FwzyzWzHDM7F2hKdWKZUlpUQKUONYpknbrGJi5/ZC7lJYX88LP7ZTodEZGExFN4nQN8AVgTXs4Kt3VLpcX5mk5CJAv9dcYSlqzdyi8/P5K+WhZIRLqodr+93H0ZcFrqU8kOpUUFzKiuzHQaIhLh/TWb+evMDzhtzFAmjijNdDoiIglrt8fLzPYzs+fMbH54e5SZXZX61DKjrDifrZq9XiRrNDc7lz86j775vfjpyQdmOh0RkU6J51DjLcAVQAOAu88FvpTKpDJJU0qIZJf/e/1j3vpoI1eddCCD+mlZIBHp2uIpvPq4++uttnXb7qCyonDZIE0pIZJxqzfV8punFnL0PoM445DyTKcjItJp8RRe68xsb8LJVM3sTGBVew8ys9vNrLLlEGW47Swze9fMms1sfMJZp1BLj1flZvV4iWSSu/PTx+bT2NzMrz4/UssCiUi3EE/h9S3gZmB/M6sAvgdcEsfj7gROaLVtPnA68GL8KaZXy7JB6vESyayn56/m2ffW8P3P7MceA7UskIh0D22e1WhmucA33P0zZtYXyHH3zfEEdvcXzWx4q20LwrgJppt6Rfm9KMjL0RgvkQza2uBc8693OWhoMRcdvWem0xERSRpzj7kcY7CD2fPuflxCwYPC63F3H9lq+0zgR+7+ZhuPvRi4GKCsrGzcAw88kEgKcduyZQv9+vUD4McvbmOv/jlcMrqgU3GSkUum4ygX5ZLOGK+ubOCRxQ2sr20GjNP36cWp+yQ2oL47vS/KRbkol+zKpT0TJ058y92jD6ly9zYvwA3Av4DzCQ4Tng6c3t7jwscOB+ZH2T4TGB9PDHdn3LhxnmozZszYfv3Mv73iX7jp1U7HSUYumY6jXFIXI1lxuksu/3x7he9/1VO+x2WPb7/sf9VT/s+3V6Q9l2THUS6pi5GsOMoldTGSFSebcmkP8KbHqGniGeM1AFgPHAecEl5OTrgM7AJKiwtYq9nrRdJq6vRF1DTsuBpZTUMTU6cvylBGIiLJF8/M9V9JRyLZpLQon5ka4yWSNhu31lNRVRP1vpUxtouIdEXtFl5mVgBcBBwEbB/05O5fbedx9wMTgEFmtgK4GtgA/BkYDDxhZu+4+6SEs0+RsuKC7bPX99OacCIp09Ts3Pf6x9zwTOxeraElhWnMSEQkteKpKu4BFgKTgGuBc4EF7T3I3c+Ocdc/484uQ0qLwrm8qmvpNzi1A/BEeqo3lm3g6sfe5b1V1Ryx1wCO3W8wf37ugx0ONxbm5TJl0ogMZikiklzxFF77uPtZZnaau99lZvcB01OdWCaVtczltbmOvVR4iSTV6k21XP/UAqa9s5Ih/Qu48ZyxnHTwEMyMof0LmTp9ERVVNZSXFDJl0ggmj9WM9SLSfcRTeDWE/1aZ2UhgNcHZit1WmdZrFEm6usYmbn95GX9+/n0am5xvT9yHb07cmz69P/kamjy2nMljy5k5cyYTJkzIXLIiIikST+H1dzPbBfgpwbQS/YCfpTSrDBscrteoMxtFkmPGwkquffw9Ply3lc8cUMZPTz5As9GLSI8Uz1mNt4ZXXwD2Sm062aG4QLPXiyTDsnVb+cXj7/Hcwkr2GtSXO79yKBNGlGY6LRGRjInnrMaovVvufm3y08kOZkZpUQGV6vESicu02RWfjM2a9TyXHr8PH23Yxi0vfkhernHF5/bnK0ftSe9e8UwdKCLSfcVzqHFrxPUCgslT2z2rsasrK85Xj5dIHKbNruCKR+dtPxuxoqqGHz8yD4DTx5Zz2ef2337CiohITxfPocYbIm+b2e8Ixnp1a6VFBSxYVZ3pNESyXrQZ5wEG9evN7784Jv0JiYhksUT6/fvQA8Z6lRbn61CjSBxizSy/fkt9mjMREcl+8Yzxmgd4eDOXYNb5bju+q0VpUQFb6hrZWtdIX81eLxJTaXE+a6p3/iNFM86LiOwsnooickHsRmCNuzemKJ+s0TKXV+XmOvZU4SUS1fIN26iLcphRM86LiEQXz6HGzRGXGqDYzAa0XFKaXQaVhnN5aYC9SHQrNm7jS3+fhWP8aNJ+lIc9XOUlhVx3+sGacV5EJIp4unLeBoYBGwEDSoCPw/ucbjreK7LHS0R2tLKqhnNueY3NtQ3c9/UjGFnen29P3FczzouItCOeHq+ngVPcfZC7DyQ49Piou+/p7t2y6IJPerwq1eMlsoPVm2o555ZZbNxazz0XHc7I8v6ZTklEpMuIp/A61N2fbLnh7k8Bn05dStmhuLAX+b1y1OMlEqGyOii61m2p566LDmP0sJJMpyQi0qXEc6hxnZldBdxLcGjxPGB9SrPKAmYWnq2lHi8RCNYuPefW11hdXcvdXz2MQ3bfJdMpiYh0OfH0eJ1NMIXEP4FpQGm4rdsrKyqgMspp8iI9zfotdZx362tUbKzhjgsPZfzwbntejYhISsUzc/0G4FIAM9sFqHJ3b/tR3UNpcT4LV2/OdBoiGbVxaz3n3voay9Zv5Y4LD+XwvQZmOiURkS4rZo+Xmf3MzPYPr+eb2fPAB8AaM/tMuhLMpNKiAtaqx0t6sE3bGjjvttdYum4rt14wniP3GZTplEREurS2DjV+EVgUXr8g3LeUYGD9r1OcV1YoLc5nc10j2+q7/XyxIjvZVNPA+be/xvtrtvD388dxzL6DM52SiEiX11bhVR9xSHEScL+7N7n7AuIblN/llW2fUkK9XtKzbK5t4ILbX2fBqmr+dt4hTBhRmumURES6hbYKrzozG2lmg4GJwDMR9/VJbVrZoaxYs9dLz7OlrpEL73iD+RWb+Ms5h3D8AWWZTklEpNtoq+fqUuBhgjMa/+DuHwKY2YnA7DTklnGl4ez1azSXl/QQ2+ob+eodb/DO8ipuPHssnz1o10ynJCLSrcQsvNz9NWD/KNufBJ7c+RHdT5lmr5ceYNrsCqZOX0RFVQ29//Ms9Y3N/PnssXzu4CGZTk1EpNvpEWO1ElVc2Ivemr1eurFpsyu44tF51DQ0AVDf2ExertHU3CNmjBERSbt4JlDtscyMsuJ89XhJtzV1+qLtRVeLhiZn6vRFMR4hIiKdocKrHaVFBazRWY3SDS3fsI2Kqpqo962MsV1ERDonrkONZnYkMDxyf3e/O0U5ZZWy4nwWafZ66UZWVtVw44wPeOiN5TH3GVpSmMaMRER6jnYLLzO7B9gbeAdoOSbhQI8ovEqLCnhp8bpMpyHSaZXVtfxlxgfc//pyHOfsw3Zn79K+/OapHQ83FublMmXSiAxmKiLSfcXT4zUeOLCnrM/YWuTs9X1661wE6XrWbanjpplLuGfWRzQ1O2eN341vH7cv5WGvVklh7+1nNZaXFDJl0ggmjy3PcNYiIt1TPJXEfGBXYFWKc8lKpRGz1w8fpMJLuo6NW+u5+cWl3PXqMuoam/j82N249Ph92X3gjvMfTx5bzuSx5cycOZMJEyZkJlkRkR4inkpiEPCemb0ObB9l7u6npiyrLFIWTqJaubmO4YP6ZjgbkfZtqmngtpeWcvsry9ha38ipo4fy3eP3Ze/B/TKdmohIjxdP4XVNqpPIZi09Xlo2SLJN5MSn5bOe5zvH7U3l5npueWkpm2sbOfHgXfneZ/Zjv7KiTKcqIiKhdgsvd38hHYlkq8geL5Fs0Xri04qqGi5/dD4AnzmgjO//z74cNLR/JlMUEZEo2p3Hy8yOMLM3zGyLmdWbWZOZVacjuWzQvzAvmL1ePV6SRaJNfAowuF8+t14wXkWXiEiWimcC1RuBs4H3gULga+G2HsHMKC3KV4+XZJVYE5yu26J2KiKSzeI6Tc/dPzCzXHdvAu4ws1dTnFdWKS3K1xgvyQoNTc38/cWlxJrbRROfiohkt3gKr21m1ht4x8x+SzCtRI86va+suID3K7dkOg3p4eYsr+KyR+aycPVmxuzWn4WrN1Pb2Lz9fk18KiKS/eI51Hh+uN+3ga3AMOCMVCaVbcqKC9TjJRmzrb6RXzz+Hp//6yts3FbP388fx7RvH831Z4zaPglqeUkh151+sCY+FRHJcvGc1fiRmRUCQ9z952nIKesMLspnc20jNfVNFPbOzXQ60oO8sHgtV/5zHis21nDeEbvz4xP2p7ggD9DEpyIiXVE8ZzWeQrBO49Ph7TFm9q8U55VVyorD2es3q9dL0mPD1nq+/+A7XHD76+T3yuEfl3yKX04+eHvRJSIiXVO8E6geBswEcPd3zGx46lLKPqVFwVxea6rr2GNgjxreJmnm7jz2zkquffw9Ntc28N3j9uGbE/ehIE89rSIi3UE8hVeju28ys5Qnk63U4yXpsHzDNq6cNp8XF69lzLASfnPGKEbsqlnnRUS6k7gWyTazc4BcM9sX+C7Q46aTgKDHSyQZIpf7GTrrOQ4bPoDp764hx+CaUw7k/E8NJzen5/6xIyLSXcVTeH0HuJJggez7genAL1KZVLYp6ZNH79wc9XhJUrRe7mdlVS3T3lnJAbsWceuFh24/U1FERLqfeM5q3EZQeF2Z+nSyk5kxuCifSvV4SRLEWu6nurZBRZeISDcXs/Bq78xFdz81+elkr7LifPV4SacsW7eVJ+atoiLGcj8rq9S+RES6u7Z6vD4FLCc4vPga0KMHnJQWFfDBWs1eLx2zfMM2npi3isfnrmR+RbC2fO/cHOqbmnfaV8v9iIh0f20VXrsC/0OwQPY5wBPA/e7+bjoSyzZlxfm8umRdptOQLmDVphqemLuKx+eu4p3lVQCMHlbClScewImjhvDGhxt2GOMFWu5HRKSniFl4hQtiPw08bWb5BAXYTDO71t3/nK4Es0VpcQHVtY3UNjRpTqUeLPJsxPJZzzNl0ggmjy2nsrqWJ+cFxdabH20EYGR5MZedsD8njxrCsAF9tscoD5f12R6npHB7HBER6d7aHFwfFlwnERRdw4E/AY+mPq3s0zKlRGV1HbsP7NPO3tIdtT4bsaKqhikPz+HPz73P0vVbcYf9dy3iR5/dj5NGDWXPQbEn29VyPyIiPVNbg+vvAkYCTwE/d/f5acsqC5WGk6iu2VyrwquHinY2YkOT89GGbVx6/L6cPGoI+5RqwlMREYmtrR6v84GtwH7AdyNmrjfA3b04xblllbLiT3q8pOdpbvaYZyM2NTvf+8x+ac5IRES6orbGeLW7gHZPUloU9nhV65T/nqS52XnmvTX8v+fej7mPzkYUEZF4qbiK0y598sjLNSo3q8erJ2hudp6ev5qT/vwyl9z7FrUNTZx7xDAK8nb8yOhsRBER6Yh4lgwSgtnrS4sKqFSPV7cW2cO1YFU1ew7qyx++OJpTRg2lV24Oh+4xUGcjiohIwlR4dUBpcT5rNHt9t+QeFlz/eZ/3ohRcLXQ2ooiIdIYKrw4oKypgiWav71aiFVy//8JoTh29Y8ElIiKSDCkrvMzsduBkoNLdR4bbBgAPEswJtgz4grtvTFUOyVaq2eu7tB0nP32OSQftyqylG1RwiYhI2qTyF+ZO4IRW2y4HnnP3fYHnwttdRlnE7PXStbRMftoyJURFVS23v7KMyuoafv+F0Tz7/WM5/ZDdVHSJiEhKpexXxt1fBDa02nwacFd4/S5gcqqePxUGF2kur64q2uSnAL3zclVwiYhI2qT716bM3VcBhP+Wpvn5O6UsnL2+UgPsu5xYk5+uqtL/pYiIpI+5e+qCmw0HHo8Y41Xl7iUR9290911iPPZi4GKAsrKycQ888EDK8gTYsmUL/fr1a3Of5Zub+ekrNXxzTD6H7Rp9eFw8cZKRS7ridPVcmt2Z9kED/1rSEPX+gQXGDRM6vgRUV39flItyUS7KRbmkzsSJE99y9/FR73T3lF0IBtHPj7i9CBgSXh8CLIonzrhx4zzVZsyY0e4+67fU+R6XPe63v7y0U3GSkUu64nTlXDZsqfPzb3vN97jscT/rb6/4iKue9D0ue3z7Zf+rnvJ/vr0iLbmkMo5ySV2MZMVRLqmLkaw4yiV1MZIVJ5tyaQ/wpseoadJ9qPFfwAXh9QuAx9L8/J3SMnv9Go3xynrzVmzi5D+/zKwl67nu9IN58H8/xfWnj6I8XN6nvKSQ604/WJOfiohIWqVyOon7gQnAIDNbAVwNXA88ZGYXAR8DZ6Xq+VNh++z1GuOV1R56YzlXPTafQX17849LPsXoYSWAJj8VEZHMS1nh5e5nx7jr+FQ9ZzoMLsrXWY1ZqrahiZ//+13uf305R+0zkD99aSwD++VnOi0REZHtNHN9B5UV5/Phuq2ZTkNaqaiq4Rv3vsXcFZv45oS9+eFnR5CbY5lOS0REZAcqvDqotKiAWUtbT08mmfTy++v4zv1v09jk3Hz+OCYdtGumUxIREYlKhVcHlRXns6mmgdqGJgrycjOdTo/W3Oz87YUl3PDMIvYp7cdN541jr8GpPUVYRESkM1R4dVBpUTCJ6trNdQwb0PH5nyQ5qmsb+OFDc3j2vTWcOnoo159xMH16qzmLiEh20y9VB5UWB4O111TXqvDKkEWrN3PJvW+xfMM2rj7lQC48cjhmGs8lIiLZT4VXB7X0eFVu1pmN6TJtdgVTpy+ioqqGXV58hi21jZT07c39Fx/BocMHZDo9ERGRuKnw6qCyiB4vSb1psyu44tF52xe43ritgRyD70zcW0WXiIh0Oemeub7L26VPb/JyTT1eafLb6Qu3F10tmh1ufvHDDGUkIiKSOPV4dVBOjjG4X756vFLM3Zn+7mpWVkV/n1dW1aQ5IxERkc5T4ZWA0uIC1qrHKyXcnRcWr+WGZxYzr2ITvXKMxmbfab+h4ZqLIiIiXYkKrwSUFuWzbL1mr0+2WUvXc8Mzi3hj2UZ226WQ3501mhycK6e9u8PhxsK8XKZMGpHBTEVERBKjwisBZcUFvL5Ms9cnyzvLq7jhmUW89P46yorz+cXkkXxx/DB69wqGIObk5Gw/q7G8pJApk0YweWx5hrMWERHpOBVeCSgtyqdqm2av76wFq6r5/bOLefa9NQzo25urTjqA847YY6f3dPLYciaPLWfmzJlMmDAhM8mKiIgkgQqvBJQVa/b6zli6dgt/+M/7PD53Jf3ye/HD/9mPrxy9J/3y1RxFRKR70y9dAgaHc3lVbtbs9e2JnPy07NX/MHxgH978qIreuTl849N7c/Gxe1HSp3em0xQREUkLFV4JKGuZvb5aZza2pfXkp2uq61hTXcen9x3EDV8cw6B++RnOUEREJL00gWoCSjV7fVymTl+00+SnAB+s3aqiS0REeiQVXgkY0Kc3vXI0e317Yk1yqslPRUSkp1LhlYCcHGNwUT5rdKixTf0L86Ju1+SnIiLSU6nwSlBpcQGVm3WoMZblG7axrb6RHNtxuyY/FRGRnkyFV4JKi/I1uD6G5mZnysNz6N0rl6tOOoDysIervKSQ604/WJOfiohIj6WzGhNUVpzPG5q9Pqq7/ruMWUs38JszDuaLh+7OV4/eS5OfioiIoB6vhJUWFVC1rYG6xp3P2uvJlqzdwvVPLWTiiMF8YfywTKcjIiKSVVR4JaisZRJVHW7crqnZ+dE/5lCQl8v1Z4zCzNp/kIiISA+iwitBpeGyQZpS4hN/f3Epsz+u4trTDtq+rJKIiIh8QoVXgkqLWnq8dGYjwMLV1fzh2cWcePCunDp6aKbTERERyUoqvBJUph6v7eobm/nhQ3MoKujFL04bqUOMIiIiMeisxgS1zF6vZYPgxhkf8O7Kam4+fxwDtRSQiIhITOrxSlDL7PU9vcdr7ooq/jLjA04fW86kg3bNdDoiIiJZTYVXJ5QW5ffoHq/ahiZ++NAcBvfL5+pTDsp0OiIiIllPhVcnlBYXsLYH93j94dnFvF+5hd+cOYr+faKvyygiIiKfUOHVCT25x+vNZRv4+0tLOefw3fn0foMznY6IiEiXoMKrE8qKC9jYA2ev31bfyA//MYfykkJ+cuIBmU5HRESky1Dh1Qktc3n1tMON1z+1kI/Wb+N3Z42mX75OjBUREYmXCq9O6Ilzeb3ywTru/u9HfPWoPTlir4GZTkdERKRLUeHVCYN72Oz11bUN/Pjhuew1uC8/PmFEptMRERHpcnScqBNaerzW9JCFsn/5+Hus2lTDI984koK83EynIyIi0uWox6sTBvbtTW6OUbm5+/d4PbdgDQ+9uYJvTNibsbvvkul0REREuiQVXp2Qk2MM7pff7Xu8Nm6t5/JH57H/rkV89/h9M52OiIhIl6VDjZ1UWtw9lw2aNruCqdMXUVFVQ+Fzz1Pb0MSdXzmU/F46xCgiIpIo9Xh1UmlRQbcbXD9tdgVXPDqPiqoaAGoamsjNMd5fsyXDmYmIiHRtKrw6qTv2eE2dvoiahh0nhW1sdqZOX5ShjERERLoHFV6dVFZUwIat9dQ3Nmc6laRZGfZ0xbtdRERE4qPCq5PKisPZ67d0j16vDVvrY04VMbSkMM3ZiIiIdC8qvDqpNCy8usNi2U/OW8Vn//ACdY1N9MqxHe4rzMtlyiRNmioiItIZOquxk0qLwmWDuvCUEuu21HH1Y+/yxLxVHFzen3u/djgLV23eflZjeUkhUyaNYPLY8kynKiIi0qWp8Oqklh6vrjiJqrvz+NxVXP2vd9lS28iUSSP432P3olduDvvvWszkseXMnDmTCRMmZDpVERGRbkGFVycN7JsfzF6fhB6vyLmzymc9n9JepsrNtfx02nymv7uG0cNKmHrmKPYrK0rJc4mIiEhAhVcn5eYYg/r17vQYr5a5s1qmcaioquGKR+cBJLX4cncee2cl1/z7XbbVN3H55/bna0fvSa9cDfcTERFJNRVeSVBWXNDpubyizZ1V09DE1OmLklZ4VVbX8pN/zuc/C9YwdvcSpp45mn1K+yUltoiIiLRPhVcSlBbls2Jj5+a4ijVHVkVVDb98/D1GDSth9G792X1AH8ws6r6xuDuPvF3Btf9+l7rGZq466QC+ctSe5OZ0LI6IiIh0jgqvJCgtLmD2x1WdilHWv4DVm3Y+XJmXa9wz6yPqXv4QgJI+eYzarYQxu/Vn1G4ljBrWf/uZlS0ix4rt+up/2KVPbxas3syhw3fhN2eMYq/B6uUSERHJBBVeSVBalM/6Tsxev35LHbjvtL0wL5frTj+Yk0YNYdHqzcxdsYm5K6p4Z3kVN85YS3P4kKH9Cxi1Wwmjh5WwubaB21/5kNqGIJfV1XWsrq7j9LFD+d1ZY8hRL5eIiEjGqPBKgrLioMcpkdnrN2yt59xbX2Pjtga+OWFvHntnZdS5s0aW92dkeX/OOXx3ALbVN/LuymrmLK9i7opNzFlRxdPvro75PK99uFFFl4iISIap8EqC0qJwLq8Ontm4cWs959wyiw/XbeW2Cw7l6H0H8eMT9o9r7qw+vXtx6PABHDp8wA7xxv7i2aj7a51FERGRzNMcAknQ0uO1pgNzeW0Me7qWrtvKrReM5+h9B3U6j1369qY8xnqKWmdRREQk81R4JUFLj9faOGevr9pWz3m3vcYHa7dwy5fHc8y+g5OWy5RJIyhstci11lkUERHJDjrUmAQD++WTY0GP17D8tvfdtK2B8257jffXbOHvXx7Hp/dLXtEFn0y2qnUWRUREsk9GCi8zuxT4OmDALe7+x0zkkSzB7PX5wXqNbRRem2qComvx6i3cfP44JowoTUk+k8eWa51FERGRLJT2Q41mNpKg6DoMGA2cbGb7pjuPZCsrLmhzjNemmga+fNtrLFxdzU3nH8LE/VNTdImIiEj2ysQYrwOAWe6+zd0bgReAz2cgj6QqK86PuWxQdW0DX779dd5bVc3fzh3HcfuXpTk7ERERyQbmUSbuTOkTmh0APAZ8CqgBngPedPfvtNrvYuBigLKysnEPPPBASvPasmUL/folPqP7nfPreKuykesO8x3i1DQ6v3ujlmXVzXxrTD6HlLV/dLezuSQzjnJRLspFuSgX5aJcOmbixIlvufv4qHe6e9ovwEXA28CLwE3AH9raf9y4cZ5qM2bM6NTj//DsIt/jssf92eee375tc22Df/4vL/veVzzhT81blbZckhlHuaQuRrLiKJfUxUhWHOWSuhjJiqNcUhcjWXGyKZf2EHQoRa1pMjKdhLvf5u6HuPuxwAbg/UzkkUwt6yVuqgt6ELfUNXLh7a8zZ8UmbjxnLCeM3DWT6YmIiEgWyNRZjaXuXmlmuwOnExx27NLKioPTGTfVOVvrGvnKHa8ze3kVfz57LCeMHJLh7ERERCQbZGoer0fMbCDQAHzL3TdmKI+keW9lNQDXzqrl+jeepaGpmRvPOYQTD1bRJSIiIoGMFF7ufkwmnjdVps2u4C8zPth+u76pmbxco6GpOYNZiYiISLbRkkFJMHX6ImobdyyyGpqcqdMXZSgjERERyUYqvJJgZVVNh7aLiIhIz6TCKwmGlhR2aLuIiIj0TCq8kmDKpBEU5uXusK0wL5cpk0ZkKCMRERHJRpk6q7FbmTy2HAjGelVU1VBeUsiUSSO2bxcREREBFV5JM3lsOZPHljNz5kwmTJiQ6XREREQkC+lQo4iIiEiaqPASERERSRMVXiIiIiJposJLREREJE1UeImIiIikiQovERERkTRR4SUiIiKSJiq8RERERNJEhZeIiIhImqjwEhEREUkTc/dM59AuM1sLfJTipxkErMuSOMpFuSgX5aJclItyyd5c2rOHuw+Oeo+76xIUn29mSxzlolyUi3JRLsolG+Iol+RfdKhRREREJE1UeImIiIikiQqvT/w9i+Iol9TFSFYc5ZK6GMmKo1xSFyNZcZRL6mIkK45ySbIuMbheREREpDtQj5eIiIhImvT4wsvMbjezSjOb34kYw8xshpktMLN3zezSBOMUmNnrZjYnjPPzTuSUa2azzezxTsRYZmbzzOwdM3szwRglZvawmS0M359PJRBjRJhDy6XazL6XQJzvh+/rfDO738wKOhojjHNpGOPdePOI1s7MbICZPWtm74f/7pJgnLPCXJrNbHyCMaaG/0dzzeyfZlaSYJxfhDHeMbNnzGxoR2NE3PcjM3MzG5RgLteYWUVEuzkxkVzM7Dtmtih8j3+bYC4PRuSxzMzeSSDGGDOb1fJ5NLPDEsxltJn9N/xs/9vMituJEfX7raPtt404cbffNmJ0qP22ESfu9hsrRsT9cbXfNnKJu/22lUu87beNPDradmPFibv9thGjo2036m9qR9tu0mXylMpsuADHAocA8zsRYwhwSHi9CFgMHJhAHAP6hdfzgNeAIxLM6QfAfcDjnXhdy4BBnXx/7wK+Fl7vDZR0Ml4usJpgjpSOPK4c+BAoDG8/BFyYwPOPBOYDfYBewH+AfRNpZ8BvgcvD65cDv0kwzgHACGAmMD7BGJ8FeoXXf9OJXIojrn8XuKmjMcLtw4DpBPP3tdsGY+RyDfCjDvzfRosxMfw/zg9vlyYSp9X9NwA/SyCXZ4DPhddPBGYm+JreAD4dXv8q8It2YkT9futo+20jTtztt40YHWq/bcSJu/3GitHR9ttGLnG33zZixN1+23o9HWy7sXKJu/22EaOjbTfqb2pH226yLz2+x8vdXwQ2dDLGKnd/O7y+GVhA8EPf0Tju7lvCm3nhpcOD8MxsN+Ak4NaOPjaZwr9GjgVuA3D3enev6mTY44El7p7IhLq9gEIz60VQOK1MIMYBwCx33+bujcALwOfbe1CMdnYaQWFK+O/kROK4+wJ3X9R+6m3GeCZ8PQCzgN0SjFMdcbMv7bTfNj5/fwB+3N7j44gTtxgxvgFc7+514T6VncnFzAz4AnB/AjEcaPkLvz9xtN8YcUYAL4bXnwXOaCdGrO+3DrXfWHE60n7biNGh9ttGnLjbbzvf+3G332T8frQRI+72214eHWi7seLE3X7biNHRthvrN7XD373J1OMLr2Qzs+HAWILKOpHH54ZduZXAs+6eSJw/EnzomxPJIYIDz5jZW2Z2cQKP3wtYC9xhwWHPW82sbydz+hLtfPCjcfcK4HfAx8AqYJO7P5PA888HjjWzgWbWh+Avt2EJxAEoc/dVYX6rgNIE4yTbV4GnEn2wmf3KzJYD5wI/S+DxpwIV7j4n0RwifDs8dHR7gocT9gOOMbPXzOwFMzu0k/kcA6xx9/cTeOz3gKnhe/s74IoEc5gPnBpeP4sOtN9W328Jt9/Ofk+2E6ND7bd1nETab2SMzrTfKK+pw+23VYyE2m+M97bDbbdVnO+RQPttFaPDbTfGb2pGv3tVeCWRmfUDHgG+1+ovp7i5e5O7jyH4i+0wMxvZwRxOBird/a1Enr+Vo9z9EOBzwLfM7NgOPr4XwWGOv7n7WGArQbduQsysN8GH7h8JPHYXgr9y9gSGAn3N7LyOxnH3BQSHMp4FngbmAI1tPqgLMbMrCV7P/yUaw92vdPdhYYxvd/D5+wBXkkDBFsXfgL2BMQTF9g0JxOgF7EJweGIK8FD4l3+iziaBPxxC3wC+H7633yfsSU7AVwk+z28RHMapj+dByfh+S1acWDE62n6jxelo+42MET53Qu03Si4dbr9RYnS4/bbx/9OhthslTofbb5QYHW67nf1NTYlkHK/s6hdgOJ0Y4+WfHD+eDvwgiXldTQfGqISPuQ5YQTA+azWwDbg3Cblck0AuuwLLIm4fAzzRiRxOA55J8LFnAbdF3P4y8NckvC+/Br6ZSDsDFgFDwutDgEWJxInYPpM4xnjFigFcAPwX6NOB1x/zswPsEc/nKjIGcDDBX6bLwksjQS/lrp3MJa7PeJT/o6eBCRG3lwCDE3x/ewFrgN0SbC+b+GQKIAOqk/B/tB/wehwxdvp+S6T9RovT0fYbK0ZH229bucTbflvHSLT9xpFLu+03xv9Rh9pvG+9tR9tutFw61H7jeE/iarutHnM18KNE2m4yL+rxSoLwL4jbgAXu/vtOxBls4dk4ZlYIfAZY2JEY7n6Fu+/m7sMJDss97+4d7tkxs75mVtRynWDwaofO/HT31cByMxsRbjoeeK+juUToTG/Bx8ARZtYn/P86nmDcQIeZWWn47+7A6Z3I6V8EPxaE/z6WYJxOM7MTgMuAU919Wyfi7Btx81Q63n7nuXupuw8P2/AKgkG2qxPIZUjEzc/TwfYbmgYcF8bbj+AEkUQX1/0MsNDdVyT4+JXAp8PrxwGJHK6MbL85wFXATe3sH+v7rUPtNxnfk7FidLT9thEn7vYbLUYi7beNXOJuv228t9OIs/228/8Td9ttI07c7beN96SjbTfWb2pmv3vTWeVl44XgR3MV0EDwIbkogRhHE4yHmgu8E15OTCDOKGB2GGc+7Zw9Eke8CSR4ViPB+Kw54eVd4MoE44wB3gxf0zRglwTj9AHWA/078X78nOBDNx+4h/BMnwTivERQQM4Bjk+0nQEDgecIvoCeAwYkGOfz4fU6gr9KpycQ4wNgeUT7bfNsxDbiPBK+v3OBfxMMWO5QjFb3LyO+sxqj5XIPMC/M5V+Ef+F2MEZv4N7wNb0NHJdILuH2O4FLOtFejgbeCtvda8C4BONcSnCW2GLgesJeiDZiRP1+62j7bSNO3O23jRgdar9txIm7/caK0dH220YucbffNmLE3X7bej10rO3GyiXu9ttGjI623ai/qSTw3ZvMi2auFxEREUkTHWoUERERSRMVXiIiIiJposJLREREJE1UeImIiIikiQovERERkTRR4SUiAJiZm9kNEbd/ZGbXJCn2nWZ2ZjJitfM8Z5nZAjOb0Wr78PD1fSdi241mdmE78S4xsy+3s8+FZnZjjPu2RNueTGY2xMwebysXM/u2mX0l1bmISPtUeIlIizrgdDMblOlEIplZbgd2v4hgJYGJUe6rBC4Nl56Ki7vf5O53d+D5k8aCxdzj8QPglnb2uR34bucyEpFkUOElIi0agb8TrKO2g9Y9Vi09OWY2IVx89yEzW2xm15vZuWb2upnNM7O9I8J8xsxeCvc7OXx8rplNNbM3LFgM+H8j4s4ws/sIJpFsnc/ZYfz5ZvabcNvPCCZevMnMpkZ5fWsJJku8oPUdZra3mT1twYLwL5nZ/uH2a8zsR+H1Q8Mc/xvmHDmT+NDw8e+b2W9bxb7BzN42s+fMbHC4bYyZzQrj/dPCBZDNbKaZ/drMXiAoEs8KX+McM3sxymsCOINgaZjWr+mkMNdBHszmvszMDosRQ0TSRIWXiET6C3CumfXvwGNGE8wofTBwPrCfux8G3Ap8J2K/4QRLhpxEUBwVEPRQbXL3Q4FDga+b2Z7h/ocRrJhwYOSTmdlQgoXKjyNYGeFQM5vs7tcSrJJwrrtPiZHr9cAPo/Si/R34jruPI1jL7a9RHnsHwezdnwKaWt03Bvhi+B580cyGhdv7Am97sNj8CwRrxQHcDVzm7qMICsurI2KVuPun3f0GgsWWJ7n7aIIlbHYQvlcb3b2u1fbPEyxIf6K7tywR8ybBeqkikkEqvERkO3evJigKOnJY6g13XxX++C8Bngm3zyMotlo85O7N7v4+sBTYn2AN0C+b2TsEy4gMBFrWy3vd3T+M8nyHAjPdfa27NwL/Bxwb5+v7EHgdOKdlm5n1A44E/hHmcTPBwrlE7FMCFLn7q+Gm+1qFfs7dN7l7LcFyUnuE25uBB8Pr9wJHh0Vtibu/EG6/q1X+D0ZcfwW408y+DkQ75DqEoCcv0kSCdQtPcveNEdsrgaFRYohIGsU7hkBEeo4/EqzrdkfEtkbCP9TCBWwjx0lF9rY0R9xuZsfvmNbrkzlgBD1N0yPvMLMJwNYY+Vk7+bfn18DDQMuhuxygyt3HtPGY9p4z8j1oIvZ3azxrtG1/3e5+iZkdTtBL+I6ZjXH39RH71gAFrR6/lGCt1f0IerlaFIT7i0gGqcdLRHbg7huAhwgOA7ZYBowLr58G5CUQ+iwzywnHfe0FLAKmA98wszwAM9vPzPq2E+c14NNmNig8ZHg2wWG8uLj7QoJeqZPD29XAh2Z2VpiDmdnoVo/ZCGw2syPCTV+K8+lygJaxcecAL7v7JmCjmbUc9js/Vv5mtre7v+buPwPWAcNa7bKYHXsVAT4CTgfuNrODIrbvR7BQsIhkkAovEYnmBiDy7MZbCIqd14HDid0b1ZZFBAXGUwRjpWoJxoG9B7wdDla/mXZ64t19FXAFMAOYQzCG6rEO5vIrYLeI2+cCF5nZHOBdguKytYuAv5vZfwl6wDbF8TxbgYPM7C2CMWnXhtsvAKaa2VyC8WHXRn84U1tOIiDooZsTeae7bwWWmNk+rbYvCl/TPyJOcDgK+E8cOYtICpl7PD3fIiI9m5n1c/eWszkvB4a4+6UZTqtlIP04d7+qjX3GAj9w9/PTl5mIRKMxXiIi8TnJzK4g+N78CLgws+kE3P2fZjawnd0GAT9NRz4i0jb1eImIiIikicZ4iYiIiKSJCi8RERGRNFHhJSIiIpImKrxERERE0kSFl4iIiEiaqPASERERSZP/D4j9t7ZTH/84AAAAAElFTkSuQmCC\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from sklearn.model_selection import cross_val_score\n",
+ "\n",
+ "# KNN Hyperparameter Tuning\n",
+ "def knn_hyperparameter_tuning(X_train, y_train):\n",
+ " k_values = range(1, 31) # Example range for k\n",
+ " mse_values = []\n",
+ " \n",
+ " for k in k_values:\n",
+ " knn_model = KNeighborsRegressor(n_neighbors=k)\n",
+ " mse = -cross_val_score(knn_model, X_train, y_train, cv=5, scoring='neg_mean_squared_error').mean()\n",
+ " mse_values.append(mse)\n",
+ " \n",
+ " return k_values, mse_values\n",
+ "\n",
+ "# Perform KNN Hyperparameter Tuning\n",
+ "k_values, mse_values = knn_hyperparameter_tuning(X_train_scaled, y_train)\n",
+ "\n",
+ "# Plotting the results\n",
+ "plt.figure(figsize=(10, 6))\n",
+ "plt.plot(k_values, mse_values, marker='o', linestyle='-')\n",
+ "plt.title('KNN Hyperparameter Tuning: MSE vs. Number of Neighbors')\n",
+ "plt.xlabel('Number of Neighbors (k)')\n",
+ "plt.ylabel('Mean Squared Error (MSE)')\n",
+ "plt.xticks(k_values) # Show all k values on x-axis\n",
+ "plt.grid()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b410ecfc",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.9.12"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
From 535e5c69172733a1ef338dc040154a9353ee2db5 Mon Sep 17 00:00:00 2001
From: Ayushi Sha <124066968+AYUSHI-SHA@users.noreply.github.com>
Date: Sun, 6 Oct 2024 18:55:28 +0530
Subject: [PATCH 08/76] Updated codes
---
Stock_Price_Prediction(Updated).ipynb | 6 +-
Stock_prediction_Data_Analysis.ipynb | 135 +++++++++++++++++++++-----
2 files changed, 115 insertions(+), 26 deletions(-)
diff --git a/Stock_Price_Prediction(Updated).ipynb b/Stock_Price_Prediction(Updated).ipynb
index 77a2cd6..c108568 100644
--- a/Stock_Price_Prediction(Updated).ipynb
+++ b/Stock_Price_Prediction(Updated).ipynb
@@ -697,10 +697,8 @@
},
{
"cell_type": "code",
- "execution_count": 5,
- "metadata": {
- "id": "idXVoeEFw55L"
- },
+ "execution_count": null,
+ "metadata": {},
"outputs": [],
"source": [
"# Handle missing values\n",
diff --git a/Stock_prediction_Data_Analysis.ipynb b/Stock_prediction_Data_Analysis.ipynb
index cf6979c..2da9745 100644
--- a/Stock_prediction_Data_Analysis.ipynb
+++ b/Stock_prediction_Data_Analysis.ipynb
@@ -568,6 +568,46 @@
"import seaborn as sns"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "96a4fe8c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Function to create scatter plots\n",
+ "def create_scatter_plot(x_data, y_data, size_data=None, title=None, x_label=None, y_label=None, figsize=(20,10)):\n",
+ " plt.figure(figsize=figsize)\n",
+ " sns.scatterplot(x=x_data, y=y_data, size=size_data)\n",
+ " if title:\n",
+ " plt.title(title)\n",
+ " if x_label:\n",
+ " plt.xlabel(x_label)\n",
+ " if y_label:\n",
+ " plt.ylabel(y_label)\n",
+ " plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "25e91892",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Function to create line plots\n",
+ "def create_line_plot(x_data, y_data, title=None, x_label=None, y_label=None, figsize=(20,10)):\n",
+ " plt.figure(figsize=figsize)\n",
+ " sns.lineplot(x=x_data, y=y_data)\n",
+ " if title:\n",
+ " plt.title(title)\n",
+ " if x_label:\n",
+ " plt.xlabel(x_label)\n",
+ " if y_label:\n",
+ " plt.ylabel(y_label)\n",
+ " plt.show()"
+ ]
+ },
{
"cell_type": "code",
"execution_count": 12,
@@ -591,6 +631,15 @@
"plt.show()"
]
},
+ {
+ "cell_type": "markdown",
+ "id": "69d2c9c2",
+ "metadata": {},
+ "source": [
+ "Early 1990s spike: There is a high trading volume around the mid-1990s, peaking at over 4 × 10^8 (400 million trades).\n",
+ "Post-1996 to 2020: The volume significantly decreases, showing lower levels of activity with some fluctuations and minor peaks, particularly after 2016.\n"
+ ]
+ },
{
"cell_type": "code",
"execution_count": 29,
@@ -609,10 +658,23 @@
}
],
"source": [
- "plt.figure(figsize = (20,10))\n",
- "sns.lineplot(x = df['Date'], y = df['High'] - df['Low'])\n",
- "plt.ylabel(\"price variation\")\n",
- "plt.show()"
+ "create_line_plot(df['Date'], df['High'] - df['Low'], \n",
+ " title='Price Variation Over Time', x_label='Date', y_label='Price Variation')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b64048ab",
+ "metadata": {},
+ "source": [
+ "#### Stable period until 2004: \n",
+ "The price variation was relatively low and stable until around 2003-2004, generally staying under 10 units.\n",
+ "#### 2004-2008 increase: \n",
+ "Starting from 2004, price variations gradually began to increase, peaking sharply just before the 2008 financial crisis. Some spikes went beyond 40 units.\n",
+ "#### 2008-2020 fluctuations:\n",
+ "After the 2008 peak, price variation showed continuous fluctuations with noticeable peaks, though they were more frequent post-2016.\n",
+ "#### 2020 onward:\n",
+ "The recent period (2020-2024) shows significant and frequent fluctuations, with peaks reaching 60+ units, possibly influenced by events like the COVID-19 pandemic and other global factors."
]
},
{
@@ -633,9 +695,18 @@
}
],
"source": [
- "plt.figure(figsize = (20,10))\n",
- "sns.lineplot(x = df['Adj Close'], y = df['Volume'])\n",
- "plt.show()"
+ "create_line_plot(df['Adj Close'], df['Volume'], \n",
+ " title='Adjusted Close vs Volume', \n",
+ " x_label='Adjusted Close', \n",
+ " y_label='Volume')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "22e7a95e",
+ "metadata": {},
+ "source": [
+ "The overall trend seems to be somewhat volatile, with periods of upward and downward movement."
]
},
{
@@ -656,9 +727,16 @@
}
],
"source": [
- "plt.figure(figsize = (20,10))\n",
- "sns.scatterplot(x = df['Open'], y = df['Adj Close'], size = df['Volume'])\n",
- "plt.show()"
+ "create_scatter_plot(df['Open'], df['Adj Close'], size_data=df['Volume'], \n",
+ " title='Open vs Adjusted Close', x_label='Open', y_label='Adj Close')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "bc30e23a",
+ "metadata": {},
+ "source": [
+ "The scatter points generally show an upward trend, indicating a positive correlation between the opening and closing prices. This means that, in general, when the stock opens higher, it tends to close higher as well."
]
},
{
@@ -679,9 +757,16 @@
}
],
"source": [
- "plt.figure(figsize = (20,10))\n",
- "sns.scatterplot(x = df['Close'], y = df['Adj Close'], size = df['Volume'])\n",
- "plt.show()"
+ "create_scatter_plot(df['Close'], df['Adj Close'], size_data=df['Volume'], \n",
+ " title='Close vs Adjusted Close', x_label='Close', y_label='Adj Close')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "01218d24",
+ "metadata": {},
+ "source": [
+ "The scatter points show a very strong upward trend, indicating a strong positive correlation between the closing price and the adjusted closing price. This means that, in general, when the stock closes higher, the adjusted closing price is also higher."
]
},
{
@@ -702,10 +787,8 @@
}
],
"source": [
- "plt.figure(figsize = (20,10))\n",
- "sns.scatterplot(x = df['Open'], y = df['Close'], size= df['Volume'])\n",
- "plt.legend()\n",
- "plt.show()"
+ "create_scatter_plot(df['Open'], df['Close'], size_data=df['Volume'], \n",
+ " title='Open vs Close', x_label='Open', y_label='Close')"
]
},
{
@@ -726,11 +809,10 @@
}
],
"source": [
- "plt.figure(figsize = (20,10))\n",
- "sns.lineplot(x = df['Open']-df['Close'], y = df['High'] - df['Low'])\n",
- "plt.xlabel(\"Stock Variation\")\n",
- "plt.ylabel(\"price variation\")\n",
- "plt.show()"
+ "create_line_plot(df['Open'] - df['Close'], df['High'] - df['Low'], \n",
+ " title='Stock Variation vs Price Variation', \n",
+ " x_label='Stock Variation (Open - Close)', \n",
+ " y_label='Price Variation (High - Low)')"
]
},
{
@@ -899,6 +981,15 @@
"plt.show()"
]
},
+ {
+ "cell_type": "markdown",
+ "id": "3084d625",
+ "metadata": {},
+ "source": [
+ "The high correlation between 'Open,' 'High,' 'Low,' 'Close,' and 'Adj Close' shows these features are highly interdependent and tend to move together in the same direction.\n",
+ "The negative correlation of 'Volume' with price-related features suggests that increased trading volume does not necessarily coincide with an increase in stock prices."
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,
From 59d4ebf25e1cb0c62d44f651c3c0bb5791a8027d Mon Sep 17 00:00:00 2001
From: Pankaj Kumar Goyal <140732455+Pankaj4152@users.noreply.github.com>
Date: Sun, 6 Oct 2024 19:06:57 +0530
Subject: [PATCH 09/76] Added MACD , MACD Graph and SMA graph
---
.../Stock_Price_Prediction_REMOTE_20502.ipynb | 248 +++++++++++++++++-
1 file changed, 245 insertions(+), 3 deletions(-)
diff --git a/Python File/Stock_Price_Prediction_REMOTE_20502.ipynb b/Python File/Stock_Price_Prediction_REMOTE_20502.ipynb
index 5312833..c08a8c8 100644
--- a/Python File/Stock_Price_Prediction_REMOTE_20502.ipynb
+++ b/Python File/Stock_Price_Prediction_REMOTE_20502.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 10,
"metadata": {
"id": "qCDSjVhXLr_Z"
},
@@ -10,6 +10,7 @@
"source": [
"import pandas as pd\n",
"import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.linear_model import LinearRegression\n",
"from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, accuracy_score, precision_score, confusion_matrix, recall_score, f1_score"
@@ -17,7 +18,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
@@ -298,6 +299,40 @@
"df.head()"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "##### SMA Graph"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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7z/8+OOPuP32241lSUlJqKmpQVFRkahuXl4ekpKSjHUsV3+rO66rI0WtVkOj0Yi+GpuioiL88ssvWLhwIS6//HKkpaWhf//+mD17Nq655hpjvUmTJmH79u2iALhixQpMmjQJSqX1nrXbt29HZWUl5s+fj5KSEuzYscPltiUkJIjmesnN/spfffVV3HHHHbjtttvQuXNnLF26FOHh4fUOWkRERETk3wJ5zo/1u2UnrFy5EgkJCRgzZoyxrE+fPlCpVNiyZQsyMjIACD0GmZmZSE9PBwCkp6fj+eefR35+vrH3YPPmzdBoNOjcubO7r8WuKm0VThed9upzWGoZ0xKhylCn6kZGRiIyMhIbNmzAwIEDoVarJeslJiZi1KhRWL16NebMmYOKigqsX78e27dvxwcffGBVf/ny5Zg4cSJUKhUmTpyI5cuX45JLLnHpdfTs2RPV1dXo2rUrnn76aQwaNAiAMO9r3759mD17trGuXC7H8OHDjfO8iIiIiKhxCeSeH5fDj16vx8qVKzF16lRRT0N0dDSmT5+OWbNmITY2FhqNBvfddx/S09MxcOBAAMDIkSPRuXNnTJkyBYsWLUJubi7mzJmDmTNn2nyz7ymni05j8heTvfocltZMWIOOTTs6VVepVGLVqlW44447sHTpUvTu3RtDhw7FTTfdhO7du4vqTps2DQ8//DCefPJJfPbZZ2jTpg169uxpdc+SkhJ89tlnxiAyefJkDB48GK+//joiIyMdtqlZs2ZYunQp+vbti+rqaixbtgyXXXYZdu/ejd69e6OwsBA6nU5yHteRI0ecet1EREREFFgCec6Py+Hnxx9/RGZmJqZNm2Z1bvHixZDL5cjIyEB1dTVGjRqFt99+23heoVBg48aNuPvuu5Geno6IiAhMnToV8+fPd+9VOKFlTEusmbDG689j+ZyuyMjIwJgxY/DLL79g165d+O6777Bo0SIsW7bMuLAEAIwZMwZ33nknfv75Z6xYsULydwEAH3/8Mdq0aYMePXoAEHpw0tLSsH79ekyfPt1hezp06IAOHToYjy+55BKcPHkSixcvxocffujSayMiIiKixiGoen5GjhwJg/lAPzOhoaFYsmQJlixZYvP6tLQ0fPvtt64+rdtClaFO98L4UmhoKEaMGIERI0bgqaeewu2334558+aJwo9SqcSUKVMwb9487N69G19+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lp49gU8+EZb4njPHOuHU7dlDRERERO5jzw8REREREQUszvkhIiIiIiKy4NPws2TJErRs2RKhoaEYMGAAfv/9d182h4iIiIiIGjGfhZ/169dj1qxZmDdvHv744w/06NEDo0aNQn5+vq+aREREREREjZjPws+rr76KO+64A7fddhs6d+6MpUuXIjw8HCtWrPBVk4iIiIiIqBHzSfipqanBvn37MHz4cFND5HIMHz4cO3futKpfXV2NkpIS0RcREREREZErfBJ+CgsLodPpkGixU2ViYiJy63adNLNgwQJER0cbv1JSUhqqqURERERE1EgExGpvs2fPRnFxsfErKyvL100iIiIiIqIA45NNTps2bQqFQoG8vDxReV5eHpKSkqzqq9VqqNXqhmoeERERERE1Qj7p+QkJCUGfPn2wZcsWY5ler8eWLVuQnp7uiyYREREREVEj55OeHwCYNWsWpk6dir59+6J///547bXXUF5ejttuu81XTSIiIiIiokbMZ+HnxhtvREFBAebOnYvc3Fz07NkTmzZtsloEgYiIiIiIyBNkBoPB4OtGuKqkpATR0dEoLi6GRqPxdXOIiIiIiMhHXMkGAbHaGxERERERkbsYfoiIiIiIKCgw/BARERERUVBg+CEiIiIioqDA8ENEREREREHBZ0tdu6NugbqSkhIft4SIiIiIiHypLhM4s4h1QIaf0tJSAEBKSoqPW0JERERERP6gtLQU0dHRdusE5D4/er0e2dnZiIqKgkwma7DnLSkpQUpKCrKysri/kJ/g78S/8PfhX/j78D/8nfgX/j78C38f/idQficGgwGlpaVITk6GXG5/Vk9A9vzI5XK0aNHCZ8+v0Wj8+g8gGPF34l/4+/Av/H34H/5O/At/H/7l/9u7+5gqyzcO4N+Dh3PgjOCgyAFMXgyCFCGEpJNaf3AWEettrTFHDbOXYceFyxlWK/qnYLW1lTN6hzabrFqQlULEm9kQgkA44hCDpDmBingrkpdz/f7w5zMf0Z/22zwP+Hw/29nwvq89577va7e31w7eh/mYfxZCTi73ic85vPCAiIiIiIh0gcUPERERERHpAouff8FsNqOgoABms1nrodB/MSfzC/MxvzAf8w9zMr8wH/ML8zH/XIs5WZAXHhAREREREf1b/OSHiIiIiIh0gcUPERERERHpAosfIiIiIiLSBRY/RERE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/uTkZHh7e6ty0t3djf7+flVOOjs7VYdXdXU1/P39lUPRbrernnEuhnvq8txuN86cOcNcaCAtLQ2dnZ1ob29XXikpKcjOzlZ+Zk60MzExgZ9//hmhoaHcHxpZt27dnK9HOH78OCIiIgDwXNdKSUkJgoODkZmZqbTpdo9ofePCQlFWViZms1lKS0ulq6tLnnzySbFararbL+j/Mz4+Lm1tbdLW1iYA5I033pC2tjY5efKkiJy9EtNqtcqXX34pHR0dct999130SsykpCRpamqSQ4cOSUxMjOpKzJGREbHZbPLII4+Iy+WSsrIysVgsvBLzIrZs2SIBAQFSX1+vuh7z77//VmJyc3MlPDxcamtrpaWlRex2u9jtdqX/3NWYd955p7S3t0tlZaUsXbr0oldj7tixQ44dOya7d++e11djamXnzp3S0NAgfX190tHRITt37hSDwSDffvutiDAX88H5t72JMCeetH37dqmvr5e+vj754YcfxOFwSFBQkAwNDYkIc6GF5uZmMRqN8sorr0hPT4988sknYrFYZM+ePUoMz3XPmp2dlfDwcMnPz5/Tp8c9wuLnX9i1a5eEh4eLyWSStWvXyuHDh7Ue0jWhrq5OAMx55eTkiMjZazFffPFFsdlsYjabJS0tTbq7u1XP+OOPP2Tjxo3i5+cn/v7+8uijj8r4+Lgq5siRI7J+/Xoxm82ybNkyKSoq8tQUF5SL5QKAlJSUKDGTk5Py1FNPSWBgoFgsFnnggQfk9OnTquf88ssvkpGRIb6+vhIUFCTbt2+X6elpVUxdXZ3cfPPNYjKZZMWKFar3oLM2b94sERERYjKZZOnSpZKWlqYUPiLMxXxwYfHDnHhOVlaWhIaGislkkmXLlklWVpbq+2SYC2189dVXEh8fL2azWeLi4uS9995T9fNc96yqqioBMGeNRfS5RwwiIpp85ERERERERORB/D8/RERERESkCyx+iIiIiIhIF1j8EBERERGRLrD4ISIiIiIiXWDxQ0REREREusDih4iIiIiIdIHFDxERERER6QKLHyIiIiIi0gUWP0REREREpAssfoiIiIiISBdY/BARERERkS78ByuFhQQ6rV2GAAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax1 = plt.subplots(figsize=(10, 6))\n",
+ "\n",
+ "ax1.plot(df[\"SMA_10\"], label = \"SMA_10\", color='Red', linewidth=1, alpha=0.8)\n",
+ "ax1.plot(df[\"SMA_50\"], label = \"SMA_50\", color='Green', linewidth=1, alpha=0.8)\n",
+ "ax1.plot(df[\"Close\"], label = \"Close\", color='Blue', linewidth=2)\n",
+ "\n",
+ "plt.legend()\n",
+ "plt.show()"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -360,7 +395,6 @@
],
"source": [
"# Create subplots\n",
- "import matplotlib.pyplot as plt\n",
"fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8), gridspec_kw={'height_ratios': [3, 1]})\n",
"\n",
"# price graph\n",
@@ -502,6 +536,214 @@
"df.head()"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### MACD"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Calculate the short-term and long-term EMAs\n",
+ "df['EMA_12'] = df['Close'].ewm(span=12, adjust=False).mean()\n",
+ "df['EMA_26'] = df['Close'].ewm(span=26, adjust=False).mean()\n",
+ "\n",
+ "# Calculate MACD and Signal line\n",
+ "df['MACD'] = df['EMA_12'] - df['EMA_26'] # MACD line\n",
+ "df['Signal_Line'] = df['MACD'].ewm(span=9, adjust=False).mean() # Signal line"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Volume \n",
+ " SMA_10 \n",
+ " SMA_50 \n",
+ " EMA_12 \n",
+ " EMA_26 \n",
+ " MACD \n",
+ " Signal_Line \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 49 \n",
+ " 22.649218 \n",
+ " 22.734135 \n",
+ " 22.276527 \n",
+ " 22.635065 \n",
+ " 39637704.0 \n",
+ " 23.102579 \n",
+ " 20.537146 \n",
+ " 22.635065 \n",
+ " 22.635065 \n",
+ " 0.000000 \n",
+ " 0.000000 \n",
+ " \n",
+ " \n",
+ " 50 \n",
+ " 22.172739 \n",
+ " 22.361443 \n",
+ " 21.837790 \n",
+ " 22.116129 \n",
+ " 39109363.0 \n",
+ " 22.929443 \n",
+ " 20.603004 \n",
+ " 22.555229 \n",
+ " 22.596625 \n",
+ " -0.041397 \n",
+ " -0.008279 \n",
+ " \n",
+ " \n",
+ " 51 \n",
+ " 22.092541 \n",
+ " 22.186892 \n",
+ " 21.889683 \n",
+ " 22.083105 \n",
+ " 27429706.0 \n",
+ " 22.757250 \n",
+ " 20.680184 \n",
+ " 22.482594 \n",
+ " 22.558587 \n",
+ " -0.075992 \n",
+ " -0.021822 \n",
+ " \n",
+ " \n",
+ " 52 \n",
+ " 22.073669 \n",
+ " 22.686958 \n",
+ " 21.960447 \n",
+ " 22.611477 \n",
+ " 27421227.0 \n",
+ " 22.635065 \n",
+ " 20.777649 \n",
+ " 22.502422 \n",
+ " 22.562505 \n",
+ " -0.060082 \n",
+ " -0.029474 \n",
+ " \n",
+ " \n",
+ " 53 \n",
+ " 22.691675 \n",
+ " 22.889814 \n",
+ " 22.465231 \n",
+ " 22.587889 \n",
+ " 36343129.0 \n",
+ " 22.626573 \n",
+ " 20.875870 \n",
+ " 22.515571 \n",
+ " 22.564385 \n",
+ " -0.048814 \n",
+ " -0.033342 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Open High Low Close Volume SMA_10 \\\n",
+ "49 22.649218 22.734135 22.276527 22.635065 39637704.0 23.102579 \n",
+ "50 22.172739 22.361443 21.837790 22.116129 39109363.0 22.929443 \n",
+ "51 22.092541 22.186892 21.889683 22.083105 27429706.0 22.757250 \n",
+ "52 22.073669 22.686958 21.960447 22.611477 27421227.0 22.635065 \n",
+ "53 22.691675 22.889814 22.465231 22.587889 36343129.0 22.626573 \n",
+ "\n",
+ " SMA_50 EMA_12 EMA_26 MACD Signal_Line \n",
+ "49 20.537146 22.635065 22.635065 0.000000 0.000000 \n",
+ "50 20.603004 22.555229 22.596625 -0.041397 -0.008279 \n",
+ "51 20.680184 22.482594 22.558587 -0.075992 -0.021822 \n",
+ "52 20.777649 22.502422 22.562505 -0.060082 -0.029474 \n",
+ "53 20.875870 22.515571 22.564385 -0.048814 -0.033342 "
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "##### MACD Graph"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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giAefREaGir88MMPwunTp4W+fftKHn3RokUL4ciRI8Kvv/4q1KtXT+Poi4yMDCE8PFx45plnhLNnzwrr168XAgICePSFDY0bN04ICQkR9u/fr3EExv3799Vtnn/+eaFmzZrC3r17hePHjwtxcXFCXFycul51/EW3bt2EkydPCjt27BCqVq0qefzFtGnThAsXLgjLli1zyeMvXMWMGTOEAwcOCNeuXRNOnz4tzJgxQ1AoFMKuXbsEQeBr6i7KZi8XBL6uruqll14S9u/fL1y7dk04ePCgEB8fL1SpUkW4ffu2IAh8XV3R0aNHBS8vL+Htt98WLl++LKxdu1YICAgQ1qxZo27Dv5tcV0lJiVCzZk1h+vTpOnX8fS3FoNuJffjhh0LNmjUFHx8foW3btsLhw4cdPST6z759+wQAOh/Dhw8XBEE8/uK1114TwsPDBV9fX6Fr167CpUuXNPr4559/hMGDBwtBQUFCcHCwMHLkSCE7O1ujzalTp4SOHTsKvr6+QvXq1YUFCxbY6ymWS1KvKQBh1apV6jZ5eXnCCy+8IFSsWFEICAgQ+vXrJ9y6dUujn7/++kvo0aOH4O/vL1SpUkV46aWXhKKiIo02+/btE5o3by74+PgIderU0bgHWdeoUaOEWrVqCT4+PkLVqlWFrl27qgNuQeBr6i60g26+rq5p0KBBQrVq1QQfHx+hevXqwqBBgzTOc+br6pq2bt0qNG7cWPD19RViYmKETz/9VKOefze5rp07dwoAdF4vQeDva1kKQRAEh0yxExEREREREbk57ukmIiIiIiIishEG3UREREREREQ2wqCbiIiIiIiIyEYYdBMRERERERHZCINuIiIiIiIiIhth0E1ERERERERkIwy6iYiIiIiIiGyEQTcRERERERGRjTDoJiIiIiIiIrIRBt1ERERERERENsKgm4iIiIiIiMhGGHQTERERERER2QiDbiIiIiIiIiIbYdBNREREREREZCMMuomIiIiIiIhshEE3ERERERERkY0w6CYiIiIiIiKyEQbdRERERERERDbCoJuIiMhNJCYmQqFQQKFQ4Ndff9WpFwQBUVFRUCgU6N27t059RkYG/Pz8oFAocOHCBb33KSkpwapVq9C5c2dUqlQJvr6+qF27NkaOHInjx49LjkehUMDPzw+RkZHo3r07li5diuzsbOs8cSIiIifGoJuIiMjN+Pn5Yd26dTrlBw4cwI0bN+Dr6yt53YYNG6BQKBAREYG1a9dKtsnLy0Pv3r0xatQoCIKAV155BcuXL8ewYcOQnJyMtm3b4saNGxrXvPHGG/jqq6+wfPlyTJgwAQAwadIkNGnSBKdPn7bw2RIRETk3L0cPgIiIiKyrZ8+e2LBhA5YuXQovr9L/6tetW4dWrVrh7t27ktetWbMGPXv2RK1atbBu3Tq89dZbOm2mTZuGHTt2YMmSJZg0aZJG3Zw5c7BkyRKda3r06IHWrVurH8+cORN79+5F79698dhjj+HChQvw9/c389kSERE5N850ExERuZnBgwfjn3/+QVJSkrqssLAQ3333HZ5++mnJa1JSUvDLL7/gqaeewlNPPYVr167h0KFDGm1u3LiBTz75BI888ohOwA0Anp6emDp1KmrUqGF0jF26dMFrr72Gv//+G2vWrDHtCRIREbkQBt1ERERupnbt2oiLi8PXX3+tLtu+fTsyMzPx1FNPSV7z9ddfIzAwEL1790bbtm3xwAMP6Cwx3759O4qLi/HMM89YZZyqfnbt2mWV/oiIiJwRg24iIiI39PTTT2Pz5s3Iy8sDAKxduxadOnVCZGSkZPu1a9eib9++6mXegwYNwrfffovi4mJ1G1VytSZNmlhljDVq1EBISAiuXr1qlf6IiIicEYNuIiIiN/Tkk08iLy8P27ZtQ3Z2NrZt26Z3afnp06dx5swZDB48WF02ePBg3L17Fzt37lSXZWVlAQAqVKhgtXEGBQUxizkREbk1JlIjIiJyQ1WrVkV8fDzWrVuH+/fvo6SkBAMHDpRsu2bNGgQGBqJOnTq4cuUKADEDeu3atbF27Vr06tULABAcHAwAVg2Sc3JyEBYWZrX+iIiInA2DbiIiIjf19NNPY8yYMUhLS0OPHj0QGhqq00YQBHz99dfIzc1FbGysTv3t27eRk5ODoKAgxMTEAADOnDmD5s2bWzy+GzduIDMzE3Xr1rW4LyIiImfFoJuIiMhN9evXD8899xwOHz6Mb775RrKN6uzuN954Aw0bNtSo+/fffzF27Fhs3rwZQ4cORY8ePeDp6Yk1a9ZYJZnaV199BQDo3r27xX0RERE5KwbdREREbiooKAjLly/HX3/9hT59+ki2US0tnzZtGvz8/HTqFy1ahLVr12Lo0KGIiorCmDFjsGLFCnz44YeYMGGCRlulUoklS5Zg0KBBRo8N27t3L958801ER0djyJAh5j9JIiIiJ8egm4iIyI0NHz5cb11BQQG+//57PPLII5IBNwA89thj+OCDD3D79m2EhYXhvffew9WrVzFx4kRs3LgRvXv3RsWKFZGSkoINGzbg4sWLOseSbd++HRcvXkRxcTHS09Oxd+9eJCUloVatWtiyZYveexMREbkDBt1ERETl1I8//oiMjAy9s+AA0KdPH7z33ntYv349Jk6ciICAAGzfvh2JiYlYvXo13nzzTdy/fx+RkZHo0qUL1q5di+rVq2v0MXv2bACAj48PKlWqhCZNmuD999/HyJEjrZoJnYiIyBkpBEEQHD0IIiIiIiIiInfEc7qJiIiIiIiIbIRBNxEREREREZGNMOgmIiIiIiIishEG3UREREREREQ2wqCbiIiIiIiIyEYYdBMRERERERHZCINuIiIiIiIiIhvxcvQAnI1SqURqaioqVKgAhULh6OEQERERERGRExIEAdnZ2YiMjISHh/75bAbdWlJTUxEVFeXoYRAREREREZELuH79OmrUqKG3nkG3lgoVKgAQv3HBwcEOHg0RERERERE5o6ysLERFRaljSH0YdGtRLSkPDg5m0E1EREREREQGGduWzERqRERERERERDbCoJuIiIiIiIjIRhh0ExEREREREdkI93SboaSkBEVFRY4eBtmBj4+PwfT/REREREREhjDoNoEgCEhLS0NGRoajh0J24uHhgejoaPj4+Dh6KERERERE5IIYdJtAFXCHhYUhICDAaJY6cm1KpRKpqam4desWatasydebiIiIiIhMxqBbppKSEnXAXblyZUcPh+ykatWqSE1NRXFxMby9vR09HCIiIiIicjHcrCqTag93QECAg0dC9qRaVl5SUuLgkRARERERkSti0G0iLjEuX/h6ExERERGRJRh0ExEREREREdkIg+5yYMSIEVAoFHj++ed16hISEqBQKDBixAiN8uTkZHh6eqJXr16SfRYWFmLhwoVo1qwZAgICUKVKFXTo0AGrVq1SL8VX3VehUMDb2xvh4eF45JFH8MUXX0CpVFr9eRIRERER2UteUR6+PPUlzqSfcfRQyMkx6C4noqKisH79euTl5anL8vPzsW7dOtSsWVOn/cqVKzFhwgT8/PPPSE1N1agrLCxE9+7dsWDBAowdOxaHDh3C0aNHkZCQ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HRQRERERlWtFyiJAAWT7ABXzAUVOjqOHRE7MZYJuMt+AAQNQWFiI1atXo06dOkhPT8eePXvwzz//qNsYSzjnrKpWreroIRARERFROVNUUgS/IiCkQHzsmZtn+AIq11xmeTmZJyMjA7/88gveeecdPPzww6hVqxbatm2LmTNn4rHHHlO3015efujQITRv3hx+fn5o3bo1Nm/eDIVCoZ5x3r9/PxQKBfbs2YPWrVsjICAA//vf/3Dp0iV1H1evXkXfvn0RHh6OoKAgtGnTBrt377bq89NeXq5QKPD555+jX79+CAgIQL169bBlyxaNa86ePYsePXogKCgI4eHheOaZZ3D37l2rjouIiIiI3FexshjN0wAPQXzM5eVkCINua8jP1/9RWGj9tiYICgpCUFAQNm/ejIKCAlnXZGVloU+fPmjSpAl+++03vPnmm5g+fbpk21dffRXvvfcejh8/Di8vL4waNUpdl5OTg549e2LPnj34/fff8eijj6JPnz5ISUkx6TmYau7cuXjyySdx+vRp9OzZE0OGDMG9e/cAiG9CdOnSBS1atMDx48exY8cOpKen48knn7TpmIiIiIjIfRQpi9QBNwB43OdMN+nH5eXW8MQT+utatwbmzCl9PHQooC/4bdwYmD+/9PHo0UBWlm67rVtlD83LywuJiYkYM2YMVqxYgZYtW6JTp0546qmn0LRpU8lr1q1bB4VCgc8++wx+fn6IjY3FzZs3MWbMGJ22b7/9Njp16gQAmDFjBnr16oX8/Hz4+fmhWbNmaPZ/9s46To7y/uPv9dvzi7snhAAJQYJDcGix4oVS3Artr1C8xSlQaIHibsUDAYIFAiEBYsTd7WKX5PxubfT3x7Mju2d7l0su8rxfr7yyNzsz+8zszOzz+eqwYfa6Dz74IJ9++iljxozhxhtvzPgYmstll13G73//ewAefvhhnn76aX799VdOOeUUnn32WYYPH87DDz9sr//666/Ts2dPli1bxqBBg7bbuCQSiUQikUgkuweqruIz3AtkyzBJw0hP9x7AOeecw8aNGxkzZgynnHIKEyZM4IADDuDNN9+sd/2lS5cydOhQsrKy7GUjRoyod123cO/atSsgKs2D8HTfcsst7L333hQWFpKbm8vixYu3u6fbPaacnBzy8/PtMc2dO5cff/zRjgDIzc1l8ODBgAiHl0gkEolEIpFI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r7feesvrUNAGBgwYoDVr1qiyslK//e1vNW3aNC1btszrsHCCtm3bpptvvllLly5VKBTyOhy0oUmTJrnPhw4dqlGjRqmsrEzPPvusMjIyPIwMJyoSiWjkyJH68Y9/LEk688wztX79ej322GOaNm2ax9GhrfzqV7/SpEmT1L17d69D6ZDo6e6A8vPz5TjOEdX9du3apeLiYo+iwvFqaKOW2q+4uFi7d+9OeL2+vl579uxJOOZo54i/BpLjxhtv1J/+9Ce98cYb6tGjh7u/uLhYtbW12rdvX8LxTdv2WO3W3DHZ2dl8qUySQCCgvn37asSIEZo/f76GDRumhx9+mDZNUatWrdLu3bt11llnyefzyefzadmyZfqv//ov+Xw+FRUV0a5pIjc3V/3799emTZv4vKaobt26aeDAgQn7zjjjDHfaAN+bUt9nn32mP//5z/q3f/s3dx+f10Qk3R1QIBDQiBEj9Nprr7n7IpGIXnvtNZWXl3sYGY5Hr169VFxcnNB+VVVVWrlypdt+5eXl2rdvn1atWuUe8/rrrysSiWjUqFHuMX/5y19UV1fnHrN06VINGDBAeXl57fTTnFqMMbrxxhv1/PPP6/XXX1evXr0SXh8xYoT8fn9C227cuFFbt25NaNt169YlfDlYunSpsrOz3S8d5eXlCedoOIbPd/uJRCKqqamhTVPU2LFjtW7dOq1Zs8Z9jBw5UlOnTnWf067pYf/+/frkk0/UrVs3Pq8p6rzzzjti+c2PPvpIZWVlkvjelA6efPJJFRYWavLkye4+Pq9NeF3JDUe3ePFiEwwGzcKFC837779vrr32WpObm5tQ3Q/eqa6uNqtXrzarV682ksxDDz1kVq9ebT777DNjTHTpi9zcXPP73//erF271nzjG9846tIXZ555plm5cqV56623TL9+/RKWvti3b58pKioyV111lVm/fr1ZvHixyczMZOmLJJo5c6bJyckxb775ZsISGAcPHnSPuf76601paal5/fXXzbvvvmvKy8tNeXm5+3rD8hfjx483a9asMa+88oopKCg46vIXd9xxh/nggw/Mo48+mpLLX6SKuXPnmmXLlpktW7aYtWvXmrlz5xrLssySJUuMMbRpuoivXm4M7ZqqZs+ebd58802zZcsW89e//tWMGzfO5Ofnm927dxtjaNdU9M477xifz2fuu+8+8/HHH5tFixaZzMxM89RTT7nH8L0pdYXDYVNaWmrmzJlzxGt8XhuRdHdgjzzyiCktLTWBQMCcc8455u233/Y6JMS88cYbRtIRj2nTphljostf/OAHPzBFRUUmGAyasWPHmo0bNyac48svvzRXXHGF6dSpk8nOzjb/+q//aqqrqxOOee+998z5559vgsGgOe2008z999/fXj/iKelobSrJPPnkk+4xhw4dMjfccIPJy8szmZmZ5pvf/KbZuXNnwnk+/fRTM2nSJJORkWHy8/PN7NmzTV1dXcIxb7zxhhk+fLgJBAKmd+/eCddA27r66qtNWVmZCQQCpqCgwIwdO9ZNuI2hTdNF06Sbdk1NU6ZMMd26dTOBQMCcdtppZsqUKQnrOdOuqemPf/yjGTx4sAkGg+b00083jz/+eMLrfG9KXa+++qqRdER7GcPnNZ5ljDGedLEDAAAAAJDmmNMNAAAAAECSkHQDAAAAAJAkJN0AAAAAACQJSTcAAAAAAElC0g0AAAAAQJKQdAMAAAAAkCQk3QAAAAAAJAlJNwAAAAAASULSDQAAAABAkpB0AwAAAACQJCTdAAAAAAAkCUk3AAAAAABJ8v8Au81DHOL5V3AAAAAASUVORK5CYII=",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Plot the MACD\n",
+ "fig, ax = plt.subplots(2, 1, figsize=(10, 8))\n",
+ "\n",
+ "\n",
+ "# Plot stock price on first subplot (bold)\n",
+ "ax[0].plot( df['Close'], label='Close Price', color='blue', linewidth=3)\n",
+ "ax[0].set_title('Stock Price')\n",
+ "ax[0].set_ylabel('Price')\n",
+ "\n",
+ "# Plot MACD and Signal line on second subplot\n",
+ "ax[1].plot( df['MACD'], label='MACD', color='green', linewidth=2)\n",
+ "ax[1].plot( df['Signal_Line'], label='Signal Line', color='red', linestyle='--', alpha=0.7)\n",
+ "ax[1].set_title('MACD')\n",
+ "ax[1].set_ylabel('MACD Value')\n",
+ "\n",
+ "# Show legends\n",
+ "ax[0].legend()\n",
+ "ax[1].legend()\n",
+ "\n",
+ "plt.tight_layout()\n",
+ "plt.show()\n"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
From a89781f4dbc5288b8fa9e9b1e6c1fafae4cc0886 Mon Sep 17 00:00:00 2001
From: Simran Shaikh
Date: Sun, 6 Oct 2024 14:39:33 -0500
Subject: [PATCH 10/76] Added More Charts
---
.ipynb_checkpoints/More_Charts.ipynb | 358 ++++++++++++++++++++++
.ipynb_checkpoints/candlestick_chart.html | 14 +
2 files changed, 372 insertions(+)
create mode 100644 .ipynb_checkpoints/More_Charts.ipynb
create mode 100644 .ipynb_checkpoints/candlestick_chart.html
diff --git a/.ipynb_checkpoints/More_Charts.ipynb b/.ipynb_checkpoints/More_Charts.ipynb
new file mode 100644
index 0000000..3b6c54f
--- /dev/null
+++ b/.ipynb_checkpoints/More_Charts.ipynb
@@ -0,0 +1,358 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## Data Analysis Based On different Charts and there details"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "from plotly.offline import plot\n",
+ "import plotly.graph_objs as go\n",
+ "\n",
+ "# Load the data\n",
+ "df = pd.read_csv(\"/Data/SBIN.csv\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "A line chart is a simple and effective way to visualize the closing price of the stock over time"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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3LiBJUuWICUlBfPmzROHS1q1agUAmDp1Kp5++mkolUoMGDAAzZo1w6hRo/DNN98gIyMDXbt2xYEDB7BkyRIMGjQI3bp1A1A012Tu3Ln4z3/+gzZt2mDYsGEICgrCsWPHkJubiyVLlhj0r2rVqti8eTM6deqE+Ph47NmzBxEREVZ/X8ritddew8qVK/Hkk0/i2WefRatWrXD37l38/fffWLhwIZo1a4YRI0Zg+fLleOGFF7B9+3Z07NgRarUaZ8+exfLly8V6UKYMHz4cBw8exPz583H69GkMHz4cQUFBOHz4MH744QdUqVIFK1euhFKplFzXsmVL1K1bF1OnTkV+fr5BeQN/f3989dVXGDFiBFq2bImnn34a1apVQ3JyMtauXYuOHTviiy++sMv3zV5c8T2Ri3Lq2j2iCmD9+vXCs88+K8TExAi+vr6Cu7u7ULduXeHFF180WhEcOqUG5HK5EBISIgwdOlS4ePGi5NySSg7oUqlUQp06dSwqOZCWliZ8+OGHQteuXYXq1asLbm5uQlBQkNC9e3dh5cqVBufPmjVLiIiIEORyuaT8gEqlEt59910hOjpaUCqVQs2aNYUpU6aIy8R1/f3330KHDh0ELy8vwd/fX2jbtq3w66+/iseNVQS/ePGiUL16daFhw4aS74E+U98TfaaqsWuP6ZYcEARBuHPnjjBx4kQhIiJCcHd3F2rUqCGMGjVKUhqioKBA+Oijj4RGjRoJHh4eQlBQkNCqVSvh3XffFTIzM0vskyAUlR/o2bOnEBQUJHh4eAh169YVXnnlFbPveerUqQIAoW7duibP2b59u9C7d28hICBA8PT0FOrUqSOMHj1aOHTokHiOpd87Y0pTcuB///ufQR8BCCtWrJC0L1q0SAAgHDx40Or3RORMMkGwsnIeERERUSXEOU1EREREFmDQRERERGQBBk1EREREFmDQRERERGQBBk1EREREFmDQRERERGQBFrdE0b5HKSkp8PPzs+leW0RERGQ/giDg/v37CA8Pd8geiwyaAKSkpJjdfJOIiIjKr2vXrqFGjRp2fx0GTYC4mea1a9fg7+/v5N4QERGRJbKyslCzZk2jm2LbA4MmQByS8/f3Z9BERERUwThqag0nghMRERFZgEETERERkQUYNBERERFZgEETERERkQUYNBERERFZgEETERERkQUYNBERERFZgEETERERkQUYNBERERFZgEETERERkQUYNBERERFZgEETERERkQW4YS8RERHZzY2MBxAEAaH+nlAqKnaupmL3noiIiMq1PvN2odNH25F8N9fZXSkzBk1ERERkP0LRf2TO7YVNMGgiIiIiu3kYM0Euq/hhE4MmIiIishuNUBQ2uUDMxKCJiIiI7OdhzMRMExEREZE52kyTK2DQRERERHajDZlcINHEoImIiIjsiMNzRERERCXjRHAbiYqKgkwmM/iaMGECACAvLw8TJkxAlSpV4Ovri8GDByMtLU1yj+TkZCQkJMDb2xshISF47bXXUFhY6Iy3Q0RERHpYcsBGDh48iJs3b4pfmzdvBgA8+eSTAIBJkyZh9erVWLFiBXbu3ImUlBQ8/vjj4vVqtRoJCQkoKCjAvn37sGTJEixevBjTp093yvshIiIiKUGbaXJyP2xBJgjlZ1r7yy+/jDVr1uDChQvIyspCtWrV8Msvv+CJJ54AAJw9exYNGzZEYmIi2rdvj/Xr16N///5ISUlBaGgoAGDhwoV44403cOvWLbi7u1v0ullZWQgICEBmZib8/f3t9v6IiIgqm6g31wIADkztgRA/T5ve29Gf3+VmTlNBQQF++uknPPvss5DJZEhKSoJKpUJ8fLx4TkxMDGrVqoXExEQAQGJiIpo0aSIGTADQu3dvZGVl4dSpUyZfKz8/H1lZWZIvIiIisi3dvAyH52zozz//REZGBkaPHg0ASE1Nhbu7OwIDAyXnhYaGIjU1VTxHN2DSHtceM2X27NkICAgQv2rWrGm7N0JEREQAigtbAq4xPFdugqbvv/8effv2RXh4uN1fa8qUKcjMzBS/rl27ZvfXJCIiqmx05/+4QqbJzdkdAICrV69iy5YtWLVqldgWFhaGgoICZGRkSLJNaWlpCAsLE885cOCA5F7a1XXac4zx8PCAh4eHDd8BERER6dMdnnOBmKl8ZJoWLVqEkJAQJCQkiG2tWrWCUqnE1q1bxbZz584hOTkZcXFxAIC4uDicOHEC6enp4jmbN2+Gv78/YmNjHfcGiIiIyIBGMjxX8aMmp2eaNBoNFi1ahFGjRsHNrbg7AQEBGDt2LCZPnozg4GD4+/vjxRdfRFxcHNq3bw8A6NWrF2JjYzFixAjMmTMHqampmDZtGiZMmMBMEhERkZMJOgN0snKRpikbpwdNW7ZsQXJyMp599lmDY3PnzoVcLsfgwYORn5+P3r1748svvxSPKxQKrFmzBuPHj0dcXBx8fHwwatQozJw505FvgYiIiIxwtYng5apOk7OwThMREZHtPShQo+H0DQCAU+/2ho+HbXM1lbZOExEREbkWyfCcC6SaGDQRERGRXQguNhGcQRMRERHZhYYlB4iIiIhKpjtpmkETERERkQmCpvixK1QEZ9BEREREdiGZCO7EftgKgyYiIiKyC8lEcGaaiIiIiIzTnQgur/gxE4MmIiIisg/pRPCKHzUxaCIiIiK70CaaXCBeAsCgiYiIiOxEu1Obi8RMDJqIiIjIPrTDc64wNAcwaCIiIiI7yM4vRKGmKGxyhUngAGDb7YaJiIio0ruR8QAdP9yGmsFeAFxj3zmAmSYiIiKysb+O3gAAXLv7AAAnghMREREZpVvUEgDyCzXGT6xgGDQRERGRTQn6UZOLYNBERERENqVxzZiJQRMRERHZlosmmhg0ERERkW1duZPj7C7YBYMmIiIisql7uQXO7oJdMGgiIiIim9IfnmsbFeycjtgYgyYiIiKyKS+lQvK8QM2SA0REREQGesaGSp6zuCURERGREfqL51wkZmLQRERERLal0SvUJHeRVBODJiIiIjJQlqrear1rDyffK2t3ygUGTURERCTxoECNRz7egZeWHSnV9Wq9TJOrVAhn0EREREQSm8+k4eqdXPx1NKVU1+sHTX4ebrboltMxaCIiIiIJS4fmNBoBSxOv4MzNLEl7oV7QpFC4xpwm1wj9iIiIyGb0M0WmLN1/FTP+PgUAuPJhgtiu0qvLlPlAZbvOOREzTURERCTKfKDC5OXHLDpXGzDpUxVKgyZX2cCXQRMRERGJ+s7bJXmelpVn9T2OXMuwUW/KFwZNREREJErJlAZJ7T7YavU9tp1Nt1V3yhUGTUREREQWYNBERERENtUqMkjyvGWtQOd0xMacHjTduHEDzzzzDKpUqQIvLy80adIEhw4dEo8LgoDp06ejevXq8PLyQnx8PC5cuCC5x927dzF8+HD4+/sjMDAQY8eORXZ2tqPfChERkUu6m1Ng1fkPCtSS5zJuo1J29+7dQ8eOHaFUKrF+/XqcPn0an3zyCYKCiiPUOXPm4LPPPsPChQvxzz//wMfHB71790ZeXvGY6/Dhw3Hq1Cls3rwZa9aswa5duzBu3DhnvCUiIiKXk5NfaLQ9wEspPh67+CB6froTDwrU0Ogtl6sf6mfX/jmKTCjL5jJl9Oabb2Lv3r3YvXu30eOCICA8PByvvPIKXn31VQBAZmYmQkNDsXjxYjz99NM4c+YMYmNjcfDgQbRu3RoAsGHDBvTr1w/Xr19HeHh4if3IyspCQEAAMjMz4e/vb7s3SEREVMFEvbnWoG1sp2i83T/WonMfaxGBkzcycSE9G2/2jUF6Vj5e7lkP/p5Kg3PLytGf307NNP39999o3bo1nnzySYSEhKBFixb49ttvxeOXL19Gamoq4uPjxbaAgAC0a9cOiYmJAIDExEQEBgaKARMAxMfHQy6X459//jH6uvn5+cjKypJ8ERERkXHf77ls8bl/HLkhbtjbomYgpg+ItUvA5AxODZr+/fdffPXVV6hXrx42btyI8ePH47///S+WLFkCAEhNTQUAhIaGSq4LDQ0Vj6WmpiIkJERy3M3NDcHBweI5+mbPno2AgADxq2bNmrZ+a0RERJWW5mFFcYXcNeYyaTl1GxWNRoPWrVvjgw8+AAC0aNECJ0+exMKFCzFq1Ci7ve6UKVMwefJk8XlWVhYDJyIiIgst2XcF/l6mQwhtpslVJoBrOTVoql69OmJjpWOkDRs2xO+//w4ACAsLAwCkpaWhevXq4jlpaWlo3ry5eE56urSIVmFhIe7evSter8/DwwMeHh62ehtERESVxs3MBya3T9HSPNxFxdUyTU4dnuvYsSPOnTsnaTt//jwiIyMBANHR0QgLC8PWrcXVSLOysvDPP/8gLi4OABAXF4eMjAwkJSWJ52zbtg0ajQbt2rVzwLsgIiKqPPJUmhLP0W74q2CmyXYmTZqEDh064IMPPsBTTz2FAwcO4JtvvsE333wDoCit9/LLL+O9995DvXr1EB0djbfffhvh4eEYNGgQgKLMVJ8+ffDcc89h4cKFUKlUmDhxIp5++mmLVs4RERGR5SwJg7QlB+ROrwZpW04Nmtq0aYM//vgDU6ZMwcyZMxEdHY158+Zh+PDh4jmvv/46cnJyMG7cOGRkZKBTp07YsGEDPD09xXN+/vlnTJw4ET169IBcLsfgwYPx2WefOeMtERERVWgBXkpkPlCZPJ5qwQa+2qDJ1YbnnFqnqbxgnSYiIqIiTWZsxH29YpZNawTg74mdABivzWTK5kldUM+OhS0rVZ0mIiIiKl8KNYa5FG16Jb9QbXDMHFdbPcegiYiIiAAU7cTxQGUYGGmH2+7lmB62M8bVhucYNBEREREAYOf5W0bbtcknazfudbXVcwyaiIiICACw45zxoEk7/Xn2+jNW3c/VVs+52NshIiKi0vg96ToW77ti9Jh2eC75bq5V9+TwHBEREbmcV1YckzwP8y8u7aMdnlMbmSRuDofniIiIyKWkGam9tGlyF7zWuwEAnWKVVgZBcmaaiIiIyJUUFBpujeLvqUTb6OCiJw8TTEPaWLe5vdLFJjW51rshIiIiq+mXue4ZGwoA0CaK8gs12H42HVvPpFl1XzeFa2WanLqNChERETmfAGnUpBSDnaL/3sh4gDGLD1p9X04EJyIiIpeiP7973YlUAMWZJn2tI4Msuq+nUlGWbpU7DJqIiIgqObXGcE4TYHrid0sLgyZXw+E5IiKiSk6lNl5KwFTQpDvsNrxdLXgpFejbJAyDv0oU20P8PGzbyXKAQRMREVEll2dkvzkAMFVhQKkTNEVX9cF/Otc2OOfviZ1s0rfyhMNzRERElVyeyvjwnCkKnVICjSMCjJ4TFuBptL0iY6aJiIioklOppUFTn0ZhAIpWzRnjppBhzYudcOlWNtrXrmL3/pUXDJqIiIgqOf3tUbrHhADQFhww5CaXoXFEgMksk6vi8BwREVElp59p0s5lkpmY1OSmqJzhQ+V810RERCQq1Ms0aVfNmco0JV66Y7T9y+EtAQBzhzSzWd/KEw7PERERVWJrjqfgk03nJW3aed6mVs+duZlltL1fk+o4/15fuLu5Zk7GNd8VERERAQC+2/0vot5ci2UHko0en/jLEVy+nSNpM1WfSWvmwEYmj7lqwAQwaCIiInJp7609AwB4c9UJi6/RzmUyFTvVqeZb5n5VRAyaiIiISEJbu7JRuPHVcUoXziaZUznfNREREZUoyNvdaLtSYX74zlUxaCIiInIhgiDgbk6BRefmFxrfPmXPhdsATA/PubPkABEREVV0oxYdRMtZm7H6WEqJ515Iyzbarg26TE0IVzJoIiIioopu1/lbAIAXfz2CzAcqs+eayiRp6zaZGoRTyDk8R0RERC4kO7/Q7HFfD+PlGiMCvQCYDqo8lYoy9auiYtBERETkotxKyAjpVwLXqurrAaCo9MCi0W1s3q+KikETERGRiyqhRqXBRr1aulOWGoT52bBHFRuDJiIiIhchCMVBUK1gb0AwPK47z8lU0DSoRYT4uLJO+jaG3wkiIiIX8a/OdihyGaAfE3X7eAeavbsJ28+lAwCOX88wuMd/e9RDjSBvyX10ebtXzvlMAIMmIiIil/GgQFp3aWXSNcnzK3dyAQBjFh0EAPy0X7of3f89UgeTe9aXtOlP+g70UtqkrxURgyYiIiIXoTuxWwDw8abzZs+vEeQled63cXWDc3w83LDwmVbic1lJE6VcGIMmIiIiF6HWaMTHVx9mlczpUKeK5HmTGsb3muvTOEx8fD/PfO0nV8agiYiIyEUUqo1P7DZFpXP+yLhIi67JyjNf+8mVOTVoeueddyCTySRfMTEx4vG8vDxMmDABVapUga+vLwYPHoy0tDTJPZKTk5GQkABvb2+EhITgtddeQ2Fh5f2BEhFR5WWq7pIp2tVzj7WIwMyBje3RJZdivBSoAzVq1AhbtmwRn7u5FXdp0qRJWLt2LVasWIGAgABMnDgRjz/+OPbu3QsAUKvVSEhIQFhYGPbt24ebN29i5MiRUCqV+OCDDxz+XoiIiJzJ2qBJe35JRTB19dUZqqtsnB40ubm5ISzM8AeQmZmJ77//Hr/88gu6d+8OAFi0aBEaNmyI/fv3o3379ti0aRNOnz6NLVu2IDQ0FM2bN8esWbPwxhtv4J133oG7u7uj3w4REZHTFKo1JZ+kQzsHyk1RctD0y3PtsOLQdbzdP7ZUfXMFTp/TdOHCBYSHh6N27doYPnw4kpOLlj8mJSVBpVIhPj5ePDcmJga1atVCYmIiACAxMRFNmjRBaGioeE7v3r2RlZWFU6dOmXzN/Px8ZGVlSb6IiIgqOlPFKk3RZpos2YC3Q52qmDukOYJ9Km9CwqlBU7t27bB48WJs2LABX331FS5fvozOnTvj/v37SE1Nhbu7OwIDAyXXhIaGIjU1FQCQmpoqCZi0x7XHTJk9ezYCAgLEr5o1a9r2jRERETnB8euZVp2vnTjuJnd6DqVCcOrwXN++fcXHTZs2Rbt27RAZGYnly5fDy8vLzJVlM2XKFEyePFl8npWVxcCJiIgqvC+2X7TqfGsyTVQOhud0BQYGon79+rh48SLCwsJQUFCAjIwMyTlpaWniHKiwsDCD1XTa58bmSWl5eHjA399f8kVERFTZWDOnicpZ0JSdnY1Lly6hevXqaNWqFZRKJbZu3SoeP3fuHJKTkxEXFwcAiIuLw4kTJ5Ceni6es3nzZvj7+yM2tvJOVCMiIiqJRiOUavVcZebU4blXX30VAwYMQGRkJFJSUjBjxgwoFAoMHToUAQEBGDt2LCZPnozg4GD4+/vjxRdfRFxcHNq3bw8A6NWrF2JjYzFixAjMmTMHqampmDZtGiZMmAAPDw9nvjUiIqJyTS0IuJCWDQBQcE6TRZwaNF2/fh1Dhw7FnTt3UK1aNXTq1An79+9HtWrVAABz586FXC7H4MGDkZ+fj969e+PLL78Ur1coFFizZg3Gjx+PuLg4+Pj4YNSoUZg5c6az3hIREVGFoNYI2HPxNgAgLTPPyb2pGJwaNC1btszscU9PTyxYsAALFiwweU5kZCTWrVtn664RERFVOC1rBeJwcoZBu5tcZlD4skCnplPy3ZL3qaNyNqeJiIiISi+yio/RdmOVwk+nZOkct64oZmXFoImIiMhFWLONyprjKaW6rjJj0EREROQirNlGRfdUlZXbr1RWDJqIiIhchDUZo0Bvpfj4rb4N7dEdl8OgiYiIyEVYk2n6ascl8XGHulXt0R2Xw6CJiIjIRXBukn0xaCIiInIRaguCpkebhTugJ66JQRMREZGLKFQbD5q6NagmPtY/w8/DqSUbKxQGTURERC4iV1VotF2hs7fc6mMpkmMx1f3s2idXwqCJiIjIBWw8lYqTN7JKPlHPwSv37NAb18SgiYiIyAU8vzTJ2V1weQyaiIiIiCxQ6qDp4sWL2LhxIx48eAAAEAQucyQiInK06/dyseLQNUlbQtPqTuqNa7M6aLpz5w7i4+NRv3599OvXDzdv3gQAjB07Fq+88orNO0hERESm9fhkJ15beVzS9mqvBhZfP6R1TVt3yWVZHTRNmjQJbm5uSE5Ohre3t9g+ZMgQbNiwwaadIyIiIvPyCw2rgEdX9bH4+nqhvrbsjkuzujjDpk2bsHHjRtSoUUPSXq9ePVy9etVmHSMiIiJbkZk84uHG6c2Wsvo7lZOTI8kwad29exceHh426RQRERE5xupjN53dhQrD6qCpc+fO+PHHH8XnMpkMGo0Gc+bMQbdu3WzaOSIiIiqbzvXMb8Z78Va2g3pS8Vk9PDdnzhz06NEDhw4dQkFBAV5//XWcOnUKd+/exd69e+3RRyIiIiqlGkFeuHW/wOTxF7vXdWBvKjarM02NGzfG+fPn0alTJwwcOBA5OTl4/PHHceTIEdSpU8cefSQiIiIr/fhsWzzaLBxv9ImRtA9qLt2wN9Tf05HdqtBKtUtfQEAApk6dauu+EBERkQXUGgFHr2WgUbi/yXO61K+GLvWrGbTPfrwpBjQLx9glhwAAKrXh6jsyzupM06JFi7BixQqD9hUrVmDJkiU26RQRERGZtnDnJQz+ah9eWnbEovO7NigKnjyVcni5K9CjYah4TK1hcWpLWR00zZ49G1WrGk4qCwkJwQcffGCTThEREZFp3++5DADYeCrN4FjtaoY1moa1rYUvhrXA9lcfMThWyKDJYlYPzyUnJyM6OtqgPTIyEsnJyTbpFBEREZlmuuoSsPCZVgZtCrkM/ZuGGzmbmSZrWJ1pCgkJwfHjxw3ajx07hipVqtikU0RERFQ6Qd7uFp0X3zAUvh5u6Ns4zM49ch1WZ5qGDh2K//73v/Dz80OXLl0AADt37sRLL72Ep59+2uYdJCIiIqk7OaZLCFT1tSxo+nZkK6jUAtxZEdxiVgdNs2bNwpUrV9CjRw+4uRVdrtFoMHLkSM5pIiIicjKZzNzgnfQ8dzfLzqUiVgdN7u7u+O233zBr1iwcO3YMXl5eaNKkCSIjI+3RPyIiIrKQl1Lh7C64tFLVaQKA+vXro379+rbsCxEREZXB6I5Rzu6CS7MoaJo8eTJmzZoFHx8fTJ482ey5n376qU06RkRERNZRKjg/yZ4sCpqOHDkClUoFADh8+LDJ8VJLx1GJiIjI9twV/By2J4uCpu3bt4uPd+zYYa++EBERkQUaVvfHmZtZBu3cEcW+rMrjqVQquLm54eTJk/bqDxEREelZfugaJv12VNwnTmOiIOWa4ymO7FalY1XQpFQqUatWLajVanv1h4iIiPS8vvI4/jhyA38fLQqK1EJx0NSiVqD4uICpJruyesbY1KlT8dZbb+Hu3bv26A8RERGZkJ1fWPTfvEKxbVDzCPGxnHOL7crqkgNffPEFLl68iPDwcERGRsLHR7ox4OHDh23WOSIiIiqmXR2nzShN7x+Lx1pGYMbfpwAAfbglil1ZHTQNHDjQLqvkPvzwQ0yZMgUvvfQS5s2bBwDIy8vDK6+8gmXLliE/Px+9e/fGl19+idDQUPG65ORkjB8/Htu3b4evry9GjRqF2bNni9XKiYiIXMX2c+kY1q4WCh8GTV0bVIO7TpmBwS0jTF1KNmB1ZPHOO+/YvBMHDx7E119/jaZNm0raJ02ahLVr12LFihUICAjAxIkT8fjjj2Pv3r0AALVajYSEBISFhWHfvn24efMmRo4cCaVSyS1diIjI5Ww+nQYAUD+cCO4ml0mCpuoBXk7pV2Vh8ZymnJwcjB8/HhEREahWrRqefvpp3Lp1q8wdyM7OxvDhw/Htt98iKChIbM/MzMT333+PTz/9FN27d0erVq2waNEi7Nu3D/v37wcAbNq0CadPn8ZPP/2E5s2bo2/fvpg1axYWLFiAggLTmxkSERFVFIJguFJOOxFcIZdBLpdh35vdsfv1bvDx4CiLPVkcNL399ttYunQp+vfvj2HDhmHbtm0YN25cmTswYcIEJCQkID4+XtKelJQElUolaY+JiUGtWrWQmJgIAEhMTESTJk0kw3W9e/dGVlYWTp06ZfI18/PzkZWVJfkiIiIqj1RqI0GTpjhoAoDwQC/UDPZ2aL8qI4tD0j/++AOLFi3Ck08+CQAYOXIk2rdvj8LCwlLPH1q2bBkOHz6MgwcPGhxLTU2Fu7s7AgMDJe2hoaFITU0Vz9ENmLTHtcdMmT17Nt59991S9ZmIiMiRCjWGZQQK9YImcgyLM03Xr19Hx44dxeetWrWCUqlESkrpCmldu3YNL730En7++Wd4enqW6h6lNWXKFGRmZopf165dc+jrExERWWrb2XTJc41GgHbEzk3OveYcyeLvtkajgVKplLS5ubmVutBlUlIS0tPT0bJlS7i5ucHNzQ07d+7EZ599Bjc3N4SGhqKgoAAZGRmS69LS0hAWVrSkMiwsDGlpaQbHtcdM8fDwgL+/v+SLiIioPPpqxyXJc93Clsw0OZbF42qCIKBHjx6Sobjc3FwMGDAA7u7uYpuldZp69OiBEydOSNrGjBmDmJgYvPHGG6hZsyaUSiW2bt2KwYMHAwDOnTuH5ORkxMXFAQDi4uLw/vvvIz09HSEhIQCAzZs3w9/fH7GxsZa+NSIiogpDrWHQ5CwWB00zZswwaBs4cGCpX9jPzw+NGzeWtPn4+KBKlSpi+9ixYzF58mQEBwfD398fL774IuLi4tC+fXsAQK9evRAbG4sRI0Zgzpw5SE1NxbRp0zBhwgR4eHiUum9ERETlhX5pxEKdoMmNQZNDlSlosre5c+dCLpdj8ODBkuKWWgqFAmvWrMH48eMRFxcHHx8fjBo1CjNnznR4X4mIiOyhe4MQnLxRvMq7oLB4YjgzTY5Vrgo67NixQ/Lc09MTCxYswIIFC0xeExkZiXXr1tm5Z0RERM7h5ymdT5z5QCU+VnCvOYfitHsiIqJyTKNX3DItK098LGemyaEYNBEREZVj+qUtf0y84oxuEBg0ERERlWv6maZqvlzo5CwMmoiIiMox/a3n8h9OBG9WM9DxnankrJ4I/tlnnxltl8lk8PT0RN26ddGlSxcoFIoyd46IiKiy09+wVxs0cTqT41kdNM2dOxe3bt1Cbm4ugoKCAAD37t2Dt7c3fH19kZ6ejtq1a2P79u2oWbOmzTtMRERUnqw9fhMaQcCAZuF2ub9+pinp6j0AAGMmx7N6eO6DDz5AmzZtcOHCBdy5cwd37tzB+fPn0a5dO8yfPx/JyckICwvDpEmT7NFfIiKicuPotQxM+OUwXvz1CO7nqUq+oBQ0ekFT8t1cAICc5QYczupM07Rp0/D777+jTp06YlvdunXx8ccfY/Dgwfj3338xZ84ccesTIiIiVzVowV7xcZ5KAz877D8vGKyfK5JTULq9X6n0rM403bx5E4WFhQbthYWFSE1NBQCEh4fj/v37Ze8dERFRBWEquCkr/UyT1pmbWcYPkN1YHTR169YNzz//PI4cOSK2HTlyBOPHj0f37t0BACdOnEB0dLTteklERFTOqU1FN2WkPxGcnMfqoOn7779HcHAwWrVqBQ8PD3h4eKB169YIDg7G999/DwDw9fXFJ598YvPOEhERlQcqtQZL9YpMFqrtFTTZ5bZUClbPaQoLC8PmzZtx9uxZnD9/HgDQoEEDNGjQQDynW7dutushERFRObPsQDLe/uuUpK1ArTFxdtnoF7ck5yn1hr0xMTGIiYmxZV+IiIgqhGPXMw3a7JZpsstdqTSsDprUajUWL16MrVu3Ij09HRqNNLLetm2bzTpHRERUHhlb7K9ycKbpP504d9jRrA6aXnrpJSxevBgJCQlo3LgxZKwTQURElUyhkUnf9gqaTKWa3BTcCc3RrA6ali1bhuXLl6Nfv3726A8REVG5d+x6hkGbsUDKFrSZptEdorB43xWxXalg0sLRrA5T3d3dUbduXXv0hYiIqELwdjfcX1U303QnOx/T/zqJkzcM5z5ZSzs656GUfmSH+HmU+d5kHauDpldeeQXz589n3QgiIqq0Ar3cDdp0J4JP/+sUfky8iv6f7ynza2kTWPrbpgxpU6vM9ybrWD08t2fPHmzfvh3r169Ho0aNoFQqJcdXrVpls84RERGVR7Hh/thz8bakTTfTdCql7BkmLW2lcRkAXw83ZOcX7crh7sY5TY5mddAUGBiIxx57zB59ISIqd77b/S92nLuFb0a2grd7qau0kIv5Zte/Bm1/HLmBHg1DAcCmi6QEnUyTNmAi57D6X4BFixbZox9EROXSe2vPAAAW7b2CCd04n5NMW3P8Jr4YVvQ4I7fAZvfVTgSXc9630zG3R0RkgawHKmd3gaykUmtQaK8yACW4l1v8+9J3/m7kqdSlvpc4hZglfpzOokxTy5YtsXXrVgQFBaFFixZm046HDx+2WeeIiMoLbmVRsag1Ah753w7cyHiAfz/oB7kD0jQd61Yx2n7mZhY2nkrFwOYRpbovM03lh0VB08CBA+HhUbS0cdCgQfbsDxERlUOFag2m/30K7aKDS/3h70h3cwpwI+MBAGDOxnN4s69tt/3yVMqRpyrKYkUEeuFGxgPUCPQ2eX5Zgm4x0WS0Djk5kkVB04wZM4w+JiKqLCp7oumPIzfwyz/J+OWf5AoRNG0/ly4+Xrjzks2Dpq71q2HjqTT83yN14O+lxIfrz0qKW3auVxW7LxSvrkvPyi/1awnMNJUbVs9punbtGq5fvy4+P3DgAF5++WV88803Nu0YEZGzLd57WXxsp2LPFUZaVp6zu2CVRXuvSJ5vO5uGHTqBVFnkF6rFIDoiyAtuD6MZtc5erLoBEwDMXn+21K+nfS1OaXI+q4OmYcOGYfv27QCA1NRUxMfH48CBA5g6dSpmzpxp8w4SETnLO6tPi4+FSr7XvEpdsd7/mZtZ4uPHW0Tg2cWHMHrRwTJNyAaAlUnX0WDaBmw6nQagaMhM8TBoKmkblag31+K4ke1XSqId2uNer85nddB08uRJtG3bFgCwfPlyNGnSBPv27cPPP/+MxYsX27p/REROseXhh6JWZR+eK9Q4ZxWaLegGG2XdVPfVFcckz+UyiJkmS+YtPfrFXqtfUzfT9N/uRWUvpiU0tPo+VHZW12lSqVTipPAtW7bg0UcfBQDExMTg5s2btu0dEZGTfLtbWrxQfwuLysZem9Hag34ByPzC4uySrd+FTAYo5EX5B91tVPw93ZCVZ5tClLrbqEzu1QAvx9d3yGpAMmR1pqlRo0ZYuHAhdu/ejc2bN6NPnz4AgJSUFFSpYny5JRFRRaP/4ap0q5wfUqdTsrDi0DVJQFDe6W+Sq13lBgBqG78PGWQ6c5rs8z3SDg1r4yQGTM5jdabpo48+wmOPPYb//e9/GDVqFJo1awYA+Pvvv8VhOyKiiq5ONR8cuHxXfK6UV85awP0+2+3sLlhNf0+2LWeKh1ptnTGTyYqH/7T3flCgtlmWCdAZnmPJAaezOmh65JFHcPv2bWRlZSEoKEhsHzduHLy9TdeoICKqSDzcFJLnbgp+YGkJglCuJyW7K0wHuKayQRm5Bfh29794vGUN1Knma/FryWXFE8G19/5oQ+lXyhlTPBHcprelUijVn04KhQKFhYXYs2cP9uzZg1u3biEqKgohISG27h8RkcMJgoDF+65I2r41skFrZWWvYShb8XAz/dFmakL7lFUnsGD7JSRYmVnzUMp1Vs8V3Vv/d6esiieCM2pyNquDppycHDz77LOoXr06unTpgi5duiA8PBxjx45Fbm6uPfpIRORQO87dMmjLKSjbUnVXUh4nhWc+UIllBtzMZJrumxg20w7F6s5/skRqZh6UD7OQ2fmFeGpholXXW4LbqJQfVgdNkydPxs6dO7F69WpkZGQgIyMDf/31F3bu3IlXXnnFHn0kInKo/ZfvOLsL5VpZl+3bQ7N3N6Hv/N1Yceia2fP+PHLDaHtp39PF9Gy4PZzvdvJGFg5cuWv2/LbRwVa/RvE2KuRsVgdNv//+O77//nv07dsX/v7+8Pf3R79+/fDtt99i5cqV9ugjEZFDKUwMg5xOyTLaXtmUl0KXuQWFBuUFXlt53Ow1jSICjLbrDjkuMTO85uMunes2Ii7S7Hy3cV1qS557611vCXEbFaaanM7qoCk3NxehoaEG7SEhIVYPz3311Vdo2rSpGHzFxcVh/fr14vG8vDxMmDABVapUga+vLwYPHoy0NGnBueTkZCQkJMDb2xshISF47bXXUFhou1ULRFT53MtVGW3/0MYTfMs77Ya3+spD8JinUiN2+kY0nrFRUocJKA4yjDEVdugGgjP+PmXyfvpBVxUfDyjNDAdOiq8veW7tyGZqZh7WnUgFwDlN5YHVQVNcXBxmzJiBvLzifYgePHiAd999F3FxcVbdq0aNGvjwww+RlJSEQ4cOoXv37hg4cCBOnSr6hZ00aRJWr16NFStWYOfOnUhJScHjjz8uXq9Wq5GQkICCggLs27cPS5YsweLFizF9+nRr3xYRkcjNxF/0+WXcgqOiuZdTYLT9me//cXBPDG3WqdhubjNc/aCloND4MFyBieE5tUZAr7m78MRX+6DWCMh6IA2o3d3kJn9fgKIVb7rZKXMBnTGz1hRv5cOQyfmsLjkwf/589O7dGzVq1BBrNB07dgyenp7YuHGjVfcaMGCA5Pn777+Pr776Cvv370eNGjXw/fff45dffkH37t0BAIsWLULDhg2xf/9+tG/fHps2bcLp06exZcsWhIaGonnz5pg1axbeeOMNvPPOO3B3d7f27RERoXnNQCzdf9WgvXwMSjmOwkwwkJWngr+n0oG9kcotKB5R0O+n7s9pePtamLvlvPjc2rlLyXdzcSE9G0BR0cyzqfclx5UKGZRmVut5KhVQ6wRKlmy1outOTnFAWNmr0pcHVmeaGjdujAsXLmD27Nlo3rw5mjdvjg8//BAXLlxAo0aNSt0RtVqNZcuWIScnB3FxcUhKSoJKpUJ8fLx4TkxMDGrVqoXExKLVCYmJiWjSpIlkuLB3797IysoSs1VERNbSfsg90qAagn0q7x9f5j6jP9103vRBBwjwKjlg8/d0Q7C39Of35Y5LVr3ONzqlJt5cdcLguLub3GTh05fj6wGQDslZu4XfhbRs8TFjJuezOtMEAN7e3njuueds0oETJ04gLi4OeXl58PX1xR9//IHY2FgcPXoU7u7uCAwMlJwfGhqK1NSi8d3U1FSD+VXa59pzjMnPz0d+fnH0npXl/PF5Iio/tJOC3eRyfPxkUzy7+FDRgUqWalIVmn7DR65lOK4jelRqDV746bD4XL9ulG5dI/3J08l3S557G1WluFDzrweSxceBRgI1d4Xc5ERw7bCdUKZMU/EQKeeBO59FQdPff/9t8Q21G/haqkGDBjh69CgyMzOxcuVKjBo1Cjt37rTqHtaaPXs23n33Xbu+BhFVXIUPh3CUCpl0CKqSfWgVqE3P4dINLBxtwOd7JM91g6aIQC+D88MDPJGSmWfQbsrt7KJARX/+Ud0QXyT+Ky1HIZPJxDpN+rT1orrUq4atZ9Mf3tPibhjgNirOZ1HQNGjQIItuJpPJoDbzP5kx7u7uqFu3LgCgVatWOHjwIObPn48hQ4agoKAAGRkZkmxTWloawsLCAABhYWE4cOCA5H7a1XXac4yZMmUKJk+eLD7PyspCzZo1reo3Ebku7UoqhVwm2cdMvxSBRiPgTGoWYsL8zc7/qajyTUyaBoBsG+6tZi39eUUDvigOoqr5eUCbEtT+uHo3DsOivVcsvr+nUoEpq05g+8NAR2vvxdvi4y71q2Fyz6JJ5m4mhue0maaPn2yGMYsP4ui1DKszTbrKci3ZhkVzmjQajUVf1gZMpl4rPz8frVq1glKpxNatW8Vj586dQ3JysrhKLy4uDidOnEB6evEv9ubNm+Hv74/Y2FiTr+Hh4SGWOdB+ERFpaTMXSoVcGjTpBUbztpxHwmd78O5q15xDqbsM/61+MZJjW8+mo9fcnYj/dCc2njI9HcLW8oysYNSt8m2sDtIbfWIM2nTpZ5S83OX49UAyUrOk2al/b+eIj1/sXhfNawYWXW/ivtqgKcjHHf/3SB0A1gc+HepUER+rGTQ5nVO37Z4yZQp27dqFK1eu4MSJE5gyZQp27NiB4cOHIyAgAGPHjsXkyZOxfft2JCUlYcyYMYiLi0P79u0BAL169UJsbCxGjBiBY8eOYePGjZg2bRomTJgADw8PZ741IqrAVA9n6yrkMsnmr/oTcT/bdhEA8GOi4Uo7V6Bdnt+8ZiDGdaljcPx8WjYupmfj+aVJAIpWtKWYqO1kK1l5xmtoaanUmuI5TQ/bPJXmC0rqz4m6drfk99Amqriyt6m9+BSS352i3hxOzijx3rqa1CiuC6Uph9vXVDYWB03btm1DbGys0UnTmZmZaNSoEXbt2mXVi6enp2PkyJFo0KABevTogYMHD2Ljxo3o2bMnAGDu3Lno378/Bg8ejC5duiAsLAyrVq0Sr1coFFizZg0UCgXi4uLwzDPPYOTIkZg5c6ZV/SAi0qWdAK1UyOCh84HrikNw5miX57ubKd6oJQgCYqdvRIcPt+GKTkbG1kztHadlqlr5p08VlcgJ8ZP+Qf170nWsOmx8axVTIvXmc1X1Nb7CUqnz+7L5dOmyced0hiLL455/lY3Fq+fmzZuH5557zuhQVkBAAJ5//nnMnTsXXbp0sfjFv//+e7PHPT09sWDBAixYsMDkOZGRkVi3bp3Fr0lEZE5BoUas66PWCJKAQbdOTqoVE4srKm2myd1MHSIt3WzLt7v/xfuPNbFLn3LzzU8DKdRoivdq0/l5VQ8omiCuW6ogI7cAr6w4ZnUfGodLq4IHehsPmnSDbHNVw83R3TzaVEaLHMfin+KxY8fQp08fk8d79eqFpKQkm3SKiMhZdLfQOHPzviRg0P3QenbxQYf2yxkKdFYRlkR3vs3P/ySbObOsfTIfNJ28YbyEjLub7OH1xZPb81Sl26TXw4IgEpAGSkPb1irVa+li0OR8FgdNaWlpUCpNFxNzc3PDrVu3TB4nIqoIdOvy6Geadp6/he92FxU7PH3T9eu7WZNpsrZoY0kEQcB3u//FoSt3Je3mVvQVX1v0X91QTxvAqHSuL22xyOv3LJu3pVt9XDuvKtC79FXU9TcnJsezOGiKiIjAyZMnTR4/fvw4qlevbpNOERGVB36ebvBUSv+ZfG/tGSzee9lJPXIsbdBkydCSrVd2rT+ZivfWnsETCxMl7fv/vWviimInb2QatGnfQ4HOnCf9LVX0f9amHLhSch8AYOuZ4pXd2mydyoKgz5ScEoYmyf4sDpr69euHt99+W7JRr9aDBw8wY8YM9O/f36adIyJyND+P4qme1+89gEwmQ+d6VSXnvLP6tP5lLmnmw81iMx9uUtsg1M/kufob2ZbVWb1M3tYzaYh6cy0+23qh+JxZffDNiFYG12rnKelmkrTZsuz84n4W6k0ad1fIUaeaT4l9e75L7ZLfAIAnW9cQH2sLXaqsGGLT31w4uqrzCopSEYuDpmnTpuHu3buoX78+5syZg7/++gt//fUXPvroIzRo0AB3797F1KlT7dlXIiK769+sOGN+4+Hy+ct2XA3mbKuPpWDcj4ckG+Dq232hqKjjyvFxWPFCnNFzLB2ystQ1nfvdzs7H2CWHDM7xVCrMbparSzvMmqfSiD/PQr0xRXc3ucms2rMdo8XHNYMtC16CdPYtFDNNVmwYfNDCjBY5jsVBU2hoKPbt24fGjRtjypQpeOyxx/DYY4/hrbfeQuPGjbFnzx6DfeCIiCqe4vTEr88V1YRLy3LdlXIv/noEm06nIXb6xhLP9fNUSuoT6Xrq60Sj7aWlO93oTnYButavZvQ886sYja9e+3xbUbYqt0A63KVUyHHDRPCnO6/LWAFNY+5mF+8bp93UVxAsn9A9ZpF0sUGvRqZ3uiDHsGrDXu3y/nv37uHixYsQBAH16tVDUFCQvfpHRORQ2gKCr/aqj7iH1Zgry6ql82n3Ud/MEJwj1dPph1ojINzInnKANIDpVLcq9uhsdaJLdwWgNoB59Iu9eufIcV9vsnX72sEY16U2juoUpbQ0aNLdXUV3U1+VWgOFvOR76K70O/FOL/h5ln4SOdlGqQpHBAUFoU2bNmjbti0DJiJyKdoJzQqdTzx5Ccus6of62rVPjtJr7i5k5hrOTZo3pLnD+nAh7T7WnbiJ2jpzi9QaweQy//5Nw9G5XlW8HF8P341qLTmm+2PTHcYzsVWcJLDRWjYuDt1jQnEnpzhrVNLvg5a7ojgw0s10WTNEp8WAqXxw6jYqRETljTbTpFv8+7XeDcxecz4t22WKXZ5JLZqAnV9YPHTVLSbEYa/fc+4u/N/Ph7H7QnEJm8+3XcCRaxlGz1fIZVg6th1ejq9vdrsU3aDL30QAYq7yeYGkVIFh0KS7R5yW7u+QbqBVOfKWrolBExGRjlVHirbU0N3j7NlO0ZjYra7Z61xl015tFiRbZ7sSXw+rZnLYxAmdIpWbTqfhmF7Q9OXwlkavaxRevGuFbmjj4aZA9QBPAEUTyI1le8yVVtAtqVDbyAq7r55phTZReiMvkqCp+LFg45pW5DgMmoiIjFiw/ZL4WKmQY1CLCLPnrz9Zur3FyhuVWoPxPyWh1XtbABTN33HGnnv6QZKurvWroV8T43UBTbUDxdmi+VsvoNNH2wyOnzBS30n/WgCoU81wODbAS4kVL3SQtMl0oibdTJPGgppW+uUGqHxg0ERE9JBg5sOspE1r4xs6bgjLng5cvicJAJ2RZSrJotFtTB7THYbTH0XTnZeUlpVv9PrnOkcbbS/NPCTdjJRuXywJmh4UsJBlecSgiYjoId3VSo+3lGaWlG7msy3NagTao0sOt3DnJcnz9PvGgwtLmAtCjdl+Lr3Ec/o1CYPcTObL3JYv/+1ufogVANrXNpybBABNS/HzDfX3FB/LrJzTlKvilinlUfn7E4KIyEl0/7qfMaCR5JibqSVXFZimjKUU6of64nxattFjH64/i98PX8e6/3ZGNT8Pi+6nX5fImOe71DF7XDfTZCqbZE7D6v5G28d2ioabXIZHGpQ+oyiXARrBskyTfg0pKh9c718BIqJSynn4QeWukCPAS7rCytQq87YPiz0W2rmWU05+Id5bcxpHku/Z7J43LSja6WOkJtGEbkWByzuPNjI4prVw5yXcup+PF35KKn0HjTC3Qg4omvBtyte7/i3x/uGBXmgcYRg4eSoVeL5rHTQIK30dK+28JksScByeK58YNBERPfTg4VYi3h6GH7xVdLbE0Fr5QhwaVi/6ENUIAtKz8vD6ymO4k136IS1T5m4+j+/2XMZjX+6TlAMoC6UFE7yNbRnyWu8YnJ7ZGx3qVEVICVmkpKu2C/IAGASz+sxN5i6JNjBuHB5Q6nuYow2aLMk0/bT/qvj44yeb2aU/ZD0GTURED126VbQnWYaRAo/GavO0igwSi2AWagS0/WArlh+6Lq48s6UknQzTJ5vO2+Sext6TvrOp9422e7sXze7ooTMBPqGp8ZVr0VPWWj2/yRQfIwGtLnMBa6e6VY22xzzMHmlX3pWUzbJEjLGM1MNvtyVJyWUHr4mPn2hVw8yZ5EgMmojIZWXnF2L1sRTk5Fs2qfb5pZYPJT3VugZkMplYRfqezsoseziis43HNxYMM1nCFoGMdiPbhKbVMbaT8ZVnggDctdH3p6TK2G/0jTF5zENp/CNv6dh2mDWwEWY/3qToPAs3ATannpHtaLSJPVsFkOR4nAhORC7r5WVHseVMGgY2D8f8p1uU+X7n3+uLbWfTcf1eLp5uWwtA8ZCLbmbAnKw8FX7en4z+TasbHfpyJLUNPrzrhfrhxDu94OvhZrJqNwDk26Du0PB2tUo8p3qAF3rFhmLT6TSDY8FGhlgBoJqfB0bERYnPn25bC1/v+hed6xnPTJmzemInLDuYjEk96xscs2ZOE5VPDJqIyGVtOVP0wfnX0RSbBE3ubnL0aSzdad7NysKPM/46hT+O3MB3u/9F0ts9S9UP3dVo9/NUuJejQq0q1gdglgwTmRrS0qXN/kSY2FQXsG41WJC3EveMDJHesrD8gamyA5N7NsBP+5NLvD66qg+OzehVqhpVTWoEoEmNJkaPWTOniconDs8REaF0xQsBGK0ZZG6qkHZPtTtWDldFVy0ulNhZJ5DpO383uvxvOy7dMr703xxLSg5MHxBr8f106xLpyy0oeYhUGwz+9J924qpEpc4muk0iLJugXdtIxW7AdKbJmAAvpc0roWc/HCa+fu+BTe9LjsNMExERgA06VbCNrZQzxVimyVz18NKWJrh8O0d8nKMTgGg/gDefTkOdrsaDBVO0GQ8fdwW6NqiGdScMt4KxNpPWuV5V7L5w26A9J7/kTJM2iHOTy/HFsBb4bs9lDGtbC2dTs7D5dDr+r4T9/7TGd62DrAcq9GoUalXfHeWTTefQ0YIMHpU/DJqIqFLYef4WutavZvRYnkqNF389Ij5f+9/OFt/XWDYiIsj0MJW6FEFT0tW7kucbTxnO1ynNiI+2K3K5DHOeaAZ/T6XB3CxLVthZ0g9LJuNrA0qFXIYQf0+81a8hACCqqg/6NDa9p5w+L3eF2RpSzmbNr0DtqoabA5PzcHiOiCqFUT8cwIHLd40e23hKmmEJCzA9zKTPWND0760cI2cW0Q2a/jp6w+R5mbkqfL/nMtLv5+HHxKsmzysLbV/kMhl8PdwwqkOUwTl+ntb9bW1qmDO7hKBJEARkPiiax+TIDYL/nNDRYa+lZc2cpq+eaWXHnpC1mGkiIocRBAETfz2C8ABPTE2wfK6MrQz7dj8uftBP0nbmZhZeWna01PdUWJmJ0R2ee2nZUQxsHmH0vI82nsUv/yRj+cFrJufidPxwm/hYsGhHMynt0ndtkBIT5odxXWojxM8DNYO9kadSo6qvZVugaJkafiwpaNIt5mjtkKA1HmlQDTvO3RKfN68ZaLfXMqWkbOP5tOLaWNYGrWRf/GkQkUOkZ+Wh7QdbxefX7z3Al8NbWj38UxaFGgE7zqWL+4cJgoC+83eX6Z66E5V1qTWC0YyJ/uTrv4+l4NFm4Qbn/XmkKAt1Ls14cclCtQY3MoonFJdmeE5bckDbTZlMJg6JlZZuBfAxHaOwaO8VAMC0P0/imfaRRq85nZKFt/86JT6356/EZ0NbYFXSdbyz+jTCrcgo2lJJw3O630NHZt2oZByeIyKH0A2YAGD9yVS8v/aMw/sxWmdT2BVJ18t8vwBv48UWTa0W08/E/PfXIxYvpdd1P8+ygp3maDMet7PtU5hTf9PjTCNlBABgpd7PQVP2kk4m+XsqMbpjNI5O74ntrz1ivxcyo6TiloU6Q5wMmsoXBk1E5DTf7bnslNfVfmj9vL/sc4W8TGy5se/SHYvvcdvI1h8lrbJrN1sahJamyvQlM3Ov7OHxr/YabY/UqzGlsmfU9FCgt7vZzX3tqaQ5TbrlKIK9LV/JSfbHoImIHKJZDftsgmqOqT/StfNrjl033NzV2jkupgopjv/J8i1ZtNWyr97JEbM/BUYqaLeKDBIf6x83dn5JfNztHzTorlg0FaTp17qKquLaK8aMzWlKunoX3T/ZgZ3nb0nqTBmrA0bOw6CJiOwu+U6u0QDF3kwla/JUxgOMdtHB+Pk/7ax6DbmJCTjWLCs/dOUuot5ci67/24E6b60zed5nQ01XNc8rRdCkUhd1smWtQKuvNcVTb3+3L4YV99nUHKK3/zwpPn6qdQ2XH5Iy9rvxzHcH8O+tHIz64QA8HwbiRjf9Jadi0EREdvf4V/sc/prJd3JNHstTGS+0+GynaPhYuXWGqaEWazZ9fU9vbpepSt3VzKxkM/WezCl4OHfGlsNUVXykffTzVIp7xvU3MuFd3+zHm9qsL+VVoZHhxwc6Pz9tMOvvZX5zYnI8Bk1EZHfG5uzY2/JDpjfQ1VbUjq3uL2nv9nBVnTVM7b4ytG3Jm8uacjbV+Io5dzc5GoQazz7km8iemaMd0jM1xFga34xshdjq/lg0po3YFvRwXo4lQ4iunmUCAFWh+TSkttaVucry5Bz8iRCRS1qw46LpY9svASjaX0xXaYIH/UnM2j3iSlP5W8tckDl7sPHNYPMKS5FpskPQ1Cg8AOte6iwJQLX3zzcSNH2145L4uFsD4xXbXY2xTJMubQbQlj8Xsg3+RIjIJZlboLT6WAqu38tF4r+Wr3AzpX6oH74d2Vp8rk2UGBsus3SFW8YD40vzAcDPxPBhaTJN+Q8DLXt/OHuIQZPh9+SjDWfFx5VhaA4wHjzq0gazpmqAkfMwaCIipyrNqq/SaBNVvPKsf9PqeG3FcfF595gQ/D2x9Ntp9IwNRfWHk5y7xxRlWIx9MJqagK4v00zQZGo1VWkyTfce1k3ysPMwkDYoK+lnHepvXfXxisrU4gEt7fCcksNz5Q5/IkRkV8ayC7q+2/OvQ/oxNSEW4x+pAwAI9feUZJlGd4hC0xqBZbr/1le64p+3eiDy4XJ5Y+87K890MCQ5z0zQZOrjtjSZps+2Xii61s6Bq3aieUmv48jq8M5Uw8yGzgDnNJVn/IkQkV2VNCK1/1/jm+jaWuNwf3GYSD+TY4vJx97ubgj194Tnw2KX94xUv9bd9sScO2YqdBeYmHme+O8dk5vlGqNbsfzf2/YtcunjUfQ9MZdBq0xOpWQZtOkGUtrVc8w0lT9O/YnMnj0bbdq0gZ+fH0JCQjBo0CCcO3dOck5eXh4mTJiAKlWqwNfXF4MHD0ZaWprknOTkZCQkJMDb2xshISF47bXXUFhY9i0GiKjsSqp+nF+KpfKW0K1xs+r/OsBN5wNIf9uO0izXN0UbGBy4bBgMfrfbsqzaD3tNV0qvXdUXNYONZyqs2ZZm4c7ivpiaJ2Ur2qXz+lvL6M7xckShzYpCW3xV6VY5Mm8ViVODpp07d2LChAnYv38/Nm/eDJVKhV69eiEnp/ivnkmTJmH16tVYsWIFdu7ciZSUFDz++OPicbVajYSEBBQUFGDfvn1YsmQJFi9ejOnTpzvjLRGRnpIWkZW0XUhpaT+P20YHo8XDKt8bT6UZPfeBDYOmA5eLh/30g7F1J1LFx7MGSvdlA4CIQGkw5Ofphgnd6iDQW4lFo4uW8Lu7ybHz1W5GX3vxvisW9/NSerb4uIUNi1saI04E1xtC1P15lDTPx5XlqdS4fq84C6ldUeiuYCBZ3jg1aNqwYQNGjx6NRo0aoVmzZli8eDGSk5ORlFS0/UBmZia+//57fPrpp+jevTtatWqFRYsWYd++fdi/fz8AYNOmTTh9+jR++uknNG/eHH379sWsWbOwYMECFBTYZxNKIrKcbqapdjXD7TEGtYiwy+tq5xS93ruBOFfG1Oq1xuG22+JlTMdo8XHM2xug1ghGyw+MiIvCsnHtJW36w3eeSgVe6x2Do9N7oVtM8RJ+c1trWJo1W3vipvj4/x6pa9E1pWVsTtPvSdfxgs5WMx5K1x+KMlXh21RNsQK1fbKwVHrl6rc0M7Nom4Xg4GAAQFJSElQqFeLj48VzYmJiUKtWLSQmJgIAEhMT0aRJE4SGhorn9O7dG1lZWTh16pTR18nPz0dWVpbki4js44bOX9BrX+yMj59sJtkTzl7DMtqVap46G+p6GXmtdf/tjKiqttvrLFrvXnXeWod+83cbrfJd0lJ/pZngyNRGwet0giFLBXjbt/K0h97qOUEQ8MqKY5Jz/vdEM7v2oTx4snVNAMCjOpXR/zp6A9P/Mv5Z5aiVpWS5chM0aTQavPzyy+jYsSMaN24MAEhNTYW7uzsCAwMl54aGhiI1NVU8Rzdg0h7XHjNm9uzZCAgIEL9q1qxp43dDRFrf7CqeO+PhJscTrWrg3Ht9xaX59hqe02aadLcz6RUbJjln1f91QGy4tCp4WRmbvHsu7b7R2kv6q6NC/KRL7t3MTATWVhxvXztYUtnc0rIGjqTdjy6/UI2CQg2ipxjur9fMyo2SKyJtCPz3sRSx7aVlR02eb6//N6j0yk3QNGHCBJw8eRLLli2z+2tNmTIFmZmZ4te1a6a3WyCistEdntNOW1Eq5OKKtbJUzjZHOxSku6/ayLhIyTk+7rafAG2qIOH8LefRM7boDzrtXmz6+9PpB1xuZoobvt6nARY+0xJfj2iNt/o1FNvL44Ir3eG5cya2iPG182T08iDtfp74+GZmySsp7fX/BpVeufgtnThxItasWYNdu3ahRo0aYntYWBgKCgqQkZEhyTalpaUhLCxMPOfAgQOS+2lX12nP0efh4QEPj8pRRI3I2RQ6E3x16/C4PQya7PHXtCAI4tweT525Mt56w3OmhrjKwtQy8SWJV8XH9UJ8ARgOzzWvGSiZ16SUm46APJUK9GlcHQDg61n8T7m1tY661rf/1iUeOtuoqIxsIeKukFeKLUNO3sgUH/+w5zJGtI8yez6DpvLHqb+lgiBg4sSJ+OOPP7Bt2zZER0dLjrdq1QpKpRJbt24V286dO4fk5GTExcUBAOLi4nDixAmkp6eL52zevBn+/v6IjY11zBshIpM6169qtF2babLFvI2d529h1A8HxICjUCOIq/Z0M036AYU9lnRbUlsn2LfojzbdQGFAs3C8N6ix5DxL6y7pBoOvrzxucFwQBMmcKt3Cm474YNa+T7VGMDpRvX2dKnbvQ3mg+7v+7e7LeOrrRLPnl1SugxzPqUHThAkT8NNPP+GXX36Bn58fUlNTkZqaigcPiv7hCwgIwNixYzF58mRs374dSUlJGDNmDOLi4tC+fdGqk169eiE2NhYjRozAsWPHsHHjRkybNg0TJkxgNomoHNAmFjrXkwZP2gnLs9acLvNrjPrhAHaev4W3Vp0AAKRmFg+DmFuVFebvWebX1mdJoUzvhxku3TlNTSMCEOTjLjnP0qKTgV7GJ3Jn5qrw64FkJHy2B/0+2y0GSLn5xYGL/jwqe9ANXPVrZAHmJ7y7kgK1NAhKzcozcWYRlZpBU3nj1OG5r776CgDwyCOPSNoXLVqE0aNHAwDmzp0LuVyOwYMHIz8/H71798aXX34pnqtQKLBmzRqMHz8ecXFx8PHxwahRozBz5kxHvQ0iMkO7o7t+BsYeCY6bmQ9w6VY2vt55SWzTn2zdJCIAJ25kYnr/WKdt26HNDOlmmowNW1kqRC/4EwQBMpkMC3ddEmv+AMD1e7mIrOIjea3Zg5uU+nUtpfs+Vx2+YXC8spRosjarOq5LbTv1hErLqUGTJTt+e3p6YsGCBViwYIHJcyIjI7FuneFqDCJyrswHKrzxe1H2xxHFCz3cFOjxyU5Jm35No9UvdrJ7P8Z2isb3e0xX9fYyEjR9teMS/u+RuljzYif0/3yP1a85/pE6YoC0/Vw6useESgImoLjgpzaD4e4ml2SB7KWk7Jt+BsZVhQd44sxN0yVugn3ccTenqL7glsldUDfEeF0nch7Xn3lHRE4z7sdD4uMtZ4xX4waA0YsO4I8jhsM21krRKw4ZWcW7zPcsjZImNXs/XLWnmwXTTpb20VlF1iTC8qKbA5sX1/5JzcwXt+LQpa18rs14eJSTpXYFJWzq7CpUZtKrMWF+eKRB8aR8BkzlU/n4P4aIXNI/RvZf05rzRFPx8Y5ztzDpt2Mmz7XUnRzpLgD6S/od5dmO0WaPa4fnZDKZWIbgj//rCACI0gn0lo5ta/Fr3ssprgOV+O8dNJ6x0eCc3AJp0FReVqxVliKOzc3Uolo2rr24opTKr3JRcoCIKh9Tk5etpb8JrK7zadkmj9lTNT8PvNKzPj7ZfN7ocd3K5N+ObC05JpPJcOXDBKtfs3VUkPh4tU7xRF2nUzLRKjKo/AVNFq4SrOjGd62Dz7ZeMHos0Nu9Uu+/V1GUj/9jiKjSUdroA/vXA+WzOK25zz97FHJUKuTo1sB8zaW3/zqFgkKNuKeZM4OmNTpzy/Q38nVVxrbxAYp/DuaKmVL5wKCJiBzCTy9QMFa40ZLFIfos3aDW0dKy8o22e7jJJfvh2ZK/Bdm7tKw83M8rys7ZoyK6pXSHTitLpsmUGQOKagpO7FYP1fw8MLGbfTdQptJj0EREDhHoI/1AN7bdyINSBEA3MkxvR1FFr+6RI+WbmNysXwLBliwZ8szKUyHp6j0AMDpZ3FF0V9RVljlNALDtla4GbaF+RSUjwgI8ceCtHni1dwNHd4ssxKCJiJzC2PCc7ua+looI9DJ5bMPLXay+n62MMTEZ/L4dA5Wj1zNLPCfrQSE+33YRAJB8N9dufdGnX+3cTSfTmF+Jgqba1XwN2rrobGXjrNphZBkGTUTkEDLobWFiZHhuyb4rVt83Ntzf5LFqDqh2bUrD6v44NqOXQSV0ezI3vBld1QcAkH7ffBVqewnylmb9FDqZxignlYYoD16Or1duJuRTyfiTIiK7Mbfk39i+b/dyVUbOLIGJOGHZuPbW38vGAryUDikeqaW/IbEubQD50rKjYluov+OCSv0EiptchpUvxKFXbCjmP93CYf0ob8z9zKj8YdBERHaj+0Gp/6FpbGPbp9vUtPo1TG042y462Op72cPzXR23FUbbKOPvOWlaPA4YqZn1Rp8Ye3fJJLlMhtZRwfhmZGvUDK5cmaaRcZHiY0cG1VR2DJqIyOaW7r+K/yw5hDydpeT6eSWFkbkb2lVleSq1QXVvU4ztBD+1X8NyMzekTVQwhrWr5ZDXeqZ9pNH2Kr7GM0qPtYiwZ3ckYsKkFa4rcyFH3e87h+YqFha3JCKbe/vPkwZt+kGM2kiw8+BhxeqG0zeI+6T9+lx7xNWpYvK1tImm+qG+YjFLcyvqnKGaTtBiz2FDP0/D1XNhDzfzHdg8HH8dLS56GeitdGhgqT8B2l5lFyoC3SyrPVdTku3xp0VEDqG/aWstnSGZDg+DolyVGpm5KujGU0O/3W/2vtrJz7oFI1XlrO5PVZ0J6e1rmw4Ay0q/eOKcwU2x+41uAICPBjeVnuvkoMVZW9yUB7rv3UNZeb8PFREzTURkd1V83DH3qeaSNqVCjgvv94VCJsNvh65h36U7eFCgxvqTNw2u33AyFX0ahxm9tzZjpfvXe0SQ6TIEzjCkdU0cTc5A1xIqdttaj4Yh4vfFU6lAm6ggHLxSVKPJ2UGLvBIPz+kOyTHTVLHwp0VENvXzP1cN2g5Ni0eTGgEG7UqFHHK5TFxBlFtQiDdXnTA474WfkkzuMacdnlPIZeK8mVa1goye6yzubnJ88lQzPNos3KGvq7+XmTZgAoArdxxXo4mkdH8u3G+uYmHQREQ2IwgCpv5R8nwmfd4Pt/PIKTBdEVxVaHyVnHZ4Ti6T4duRrfH7+A5oZ8chsIqkvH0gT+8f6+wulAshOqUesvJKUWaDnIbDc0RkM9pK07p6Nwot8Tqfh5mmByaySUDRh0uAt+FEZ+3qOZkMqBnsXemWr+vrVLcq9ly8DQAwUj/UqcZ0jEKBWoNGZgqSVgYebgr0aRSGkymZ6BFT8v8fVH6Us/+liKgi+3TzeYO2CRZsPur9cBJ3Tr7pTNMvB5KNtmsezvkub1kVZ3mlV33xsbfehryLx7QRHzuyUrmWTCbDC13roHM9x87tKo8WjmiFPW90N/qHAJVfzDQRkV2Z2xtOS3dOkymmdghRi8Nz1vfNFbWoFYT3H2uMAC+lwYrFRxqEYNbARli6/yoWjW5j4g5EZAqDJiKymcEta+D3w9clbZbU4ykOmkxnmkwlkrRzmvQDhMpseDvjRS4BYERcFEbERTmuM0QuhMNzRGQzD1SGmSLLgqaiv9/M7XavX1FaS7t6rrxUACci18WgiYhsZt2JVIM2SzJAuoUpTfF/WO1ao7fXXOKlOwAMt2khIrI1Bk1EZBNrjxsWpbSUJftvqTUCPlx/Fq3f3yLuS6fRCPj7WNHWIJtOp5X69YmILMGgiYhsYsIvh8XHz7S3/Qa1hRoBC3dewt2cAnyz618AQEE52y6FiFwbgyYisrmhbYuCpio+7ja75ws/JYmPtdOXrrKqNRE5EFfPEZFF0u/nYcWh6xjVIarEOUgNw/yx+/VuCLZh0KTL7eE8qd7zdtnl/kRExjDTREQW6TB7G/638Rwaz9hocOx0SpbkuVwuQ81gb/hYMMHblDf6xOD38R2MHlMYKXXNjU+JyN74rwwRWaRQY6K6JIB+n+0u8/3f6BMjed65XlW0ijS+8a6x+KhGcMlFNImIyoJBExGVCwlNqkueuylMFxEoVBsGcF8Nb2XzPhER6WLQRERW06+VZAseSuk/R25m6jtdvZOLO9n5krYGJopfEhHZCoMmIrLaY1/ulTxvHFG8a/2Pz7Yt1T21xSu1TO01BwAbTqWi1XtbEFnFGwCw4oW4Ur0mEZE1GDQRUYnyC6V7wh27nikWmAQAn4fboHw+tAW61C/dDvZe7tLtVizJZWXnFW3bwn3niMgRGDQRUYn+PHLDoK3Dh9vEzXLzVEVBlbd7yfvMWcpcpknrTk4BAEBpZDUdEZGt8V8aIiqRNjjRt3T/VQBAbkFR0ORlwea8lvL1tLxcAffqJSJHYNBERCWqEeRttH3PhdsAgAcPM036Q2xlERFoeQmBqKo+NntdIiJTGDQRUYkyc41nmmoFe+PqnRxcv1c0v8lWQVPD6v4ln6SjpArlRES24NSgadeuXRgwYADCw8Mhk8nw559/So4LgoDp06ejevXq8PLyQnx8PC5cuCA55+7duxg+fDj8/f0RGBiIsWPHIjs724Hvgsj1vf3XKaPt3+25jFE/HBCfeyttE7wozdRoIiJyFqcGTTk5OWjWrBkWLFhg9PicOXPw2WefYeHChfjnn3/g4+OD3r17Iy8vTzxn+PDhOHXqFDZv3ow1a9Zg165dGDdunKPeApHLK1RrJM/nDWkueX5FZ9NcT3fb/JMi05mkFM2hNyIqJ5waNPXt2xfvvfceHnvsMYNjgiBg3rx5mDZtGgYOHIimTZvixx9/REpKipiROnPmDDZs2IDvvvsO7dq1Q6dOnfD5559j2bJlSElJcfC7IXJNl27liI83T+qCQS0i8FiLCKPnerjZZniuis5Gvz//px1Gd4gSn5vaWoWIyN7K7Zymy5cvIzU1FfHx8WJbQEAA2rVrh8TERABAYmIiAgMD0bp1a/Gc+Ph4yOVy/PPPPybvnZ+fj6ysLMkXERmXmlWc2a0XWlR1e3DLGkbP9Svj3KKvhrdEm6ggzBrUWGwLD/TCO482wpbJXfHPWz2w4vk4tIli4EREjldug6bU1FQAQGhoqKQ9NDRUPJaamoqQkBDJcTc3NwQHB4vnGDN79mwEBASIXzVr1rRx74lcw/V7uZI5S1rGsj2jO0RBXsYik32bVMeKFzoYXTlXN8QXof6ekMtlGKST6dLfs46IyF7KbdBkT1OmTEFmZqb4de3aNWd3ichpfthzGXM3n8fqYylQ6+0pN3vdWaPXeLkrDLJKPRqGGD3XHnS3XFl74qbDXpeIKrdyu043LCwMAJCWlobq1Yv/kkxLS0Pz5s3Fc9LT0yXXFRYW4u7du+L1xnh4eMDDw8P2nSaqYLacTsPMNafF5yuTrmOJzt5xugHJ811rS669n18oeR7k7Q5HydF57YHNwx32ukRUuZXbTFN0dDTCwsKwdetWsS0rKwv//PMP4uKKNueMi4tDRkYGkpKSxHO2bdsGjUaDdu3aObzPROXRyRuZ2HY2zeix//x4SPJ85/lbJu/zZp8Ys6/jyAKTIf7Ff/TMHNjYzJlERLbj1ExTdnY2Ll68KD6/fPkyjh49iuDgYNSqVQsvv/wy3nvvPdSrVw/R0dF4++23ER4ejkGDBgEAGjZsiD59+uC5557DwoULoVKpMHHiRDz99NMID+dfn0RqjYD+n+8BAHw/qjXWnriJVYdvINBbif1Tepi9NunqXfHxG31iJGUAjPGxYTXwkoT6e4qPbbnfHRGROU4Nmg4dOoRu3bqJzydPngwAGDVqFBYvXozXX38dOTk5GDduHDIyMtCpUyds2LABnp7F/2D+/PPPmDhxInr06AG5XI7Bgwfjs88+c/h7ISqPdl0ozhyNXVKcVcrIVSHm7Q1mrx38VaL4+AW9oTkAmJbQEO+tPSM+LymosqUGoX5oEhGAGkFeUCrKbcKciFyMTBAs2UvctWVlZSEgIACZmZnw97du+wai8izqzbVWX3PlwwRoNAJqv7VO0qbv+PUMPPrFXgBFBS8HmajdZC+CIDg0UCOi8sfRn9/ldiI4ETnH/TwVNpwsLtnxo87EcF1NawTig8eaoGawFzrXq+ao7okYMBGRozFoInJRliaR5TJAt9LAkeQMvPXHCfF5gzA/k9cOa1er1P0jIqpoOBmAyEWdS7tvtP213g0woFnxQon1L3XBiXd6ic9H/nAAKnVxFKU76ZqIqDJjponIBX2y6Rw+31a0MtXdTY6CwqJNd6sHeGJCt7oAgHcGxCItK99sJqltdLD9O0tEVEEw00TkgrQBEwAUFGrEbU9+fa692F7F1wOx4eYnTg5ry+E3IiItZpqIKoHlz8chO68QAd5Kk+d8+HgTvLnqhKTt0Wasd0ZEpMVME1EFJQgCRv5wANP+PGHQruuTJ5tBIZeZDZgA4HZ2vuR5sI97mTfgJSJyJQyaiCqoJfuuYNf5W/hpfzL2/3tHbI+eUlxf6eysPhjcqoZF94uPDZU8v5tTYJuOEhG5CAZNRBXUO6uLN9o9di0DeSo1/vvrEck5nkrLtxiJCfMHE0tERKYxaCJyIEEQMPWPE1i097LYln4/DzcyHlhcV8mYL7ZfRKePtuHvYyli2wtd61h9n/1vFe9HF98w1MyZRESVDyeCEznQ4eR7+PmfZADAIw1CEBnsjc+3XsTS/VcBABff7ws3M3upCYKAZxcfxPZztyTt9/MKoV+V6c2+MVb3L8TPE0fe7onVx1M4CZyISA+DJiIHSs8qnmzd7eMdBsfPp2WbLQOQfj/fIGAypkWtwNJ0DwAQ5OOOkXFRpb6eiMhVcXiOyIGu3cs1ezw164HJY4IgoN0HWyVtI9pHGpx3eXY//PF/HUvXQSIiMolBE5EDLd57xezxm5l5Jo/9c/muQdtrfRpg52uPiM+b1QzkRrZERHbCoInIgcIDvYy2+3kUjZSrHm53Yox23pP+dZFVfNAqMgg+7gosfKalbTpKREQGOKeJyIEeqNRG26sHeuJ+Wjbmb72A0R2jjZ4T7O0ued4rNlTMKv00th3yVGoE+bgbu5SIiGyAQRORnWlLCchkMpxKyQIAbHy5CxqE+SHqzbUAiiaAA8C9XBXyVGqD+kqFao2YaXquczSmJsRKjnu5K+DlbnlNJiIish6DJiI7OnMzC33n7wYALB7TRmyvEVQ0THflwwQAEIMnoGg7kxpB3gCAA5fv4qmvEyX3bBwRYNc+ExGRcQyaiOykoFAjBkwAMHrRQfGxj4fp//UGfL4HnetVQ51qvpi75bzB8f5NWT+JiMgZGDQR2VhOfiHmbj6P7/ZcNnq8boiv2evv5aoklb11TUtoCAX3OiEicgoGTUQ2pNEIaDRjo9lz/pxgWENpRPtIo6vj9D3WIqLUfSMiorJh0ERkQ2MWHzTafvH9vth76Q7ialeBu5thpY/pA2LRv2l1DPlmv8Gxra90xeTlx9CiZiCq+HrYvM9ERGQZBk1ENnInOx87zxvf4sRNIUfX+tVMXqtUyNGudhUMa1cLv/yTjFd71UeQjzvcFXLUqeaLv4xkp4iIyLFkQlm2VncRWVlZCAgIQGZmJvz9Te/7VR4duHwXn2+7gDlPNEX1AOOFE8n+dpxLl0z07t+0OuYNaY41x28irk4VhPp7WnwvtUbgvCUiIgs4+vObQROcGzSpNQKy8woR4K00e55GI2D7uXQ0CPNDRKAX1BoBx65nYPBXxcvRY8L8sOHlLvbuMhmhWzIAKC4lQERE9uPoz28OzznYqsPX8cG6M/jfE81w9FoG5m+9UNT+fx3QslaQ0Ws2nLyJpfuvYu/FO2bvfTb1Pt5fe9qg8KHheVk4l3ofA5tzUnFpaGsneSrlOP1uH6g00q1P9rzRzUk9IyIie2KmCY6NVBtN34CcAuNbaTzeIgIzBjQyyDrpZzEsEeitxJ43usNXpx5QoVqDycuPSZazX/qgX5mHgtQaAS//dhSCIODzoS1cdsPYib8cxprjN00e93CT48zMPpBzaI2IyCEcnWnihr0OcD9PhXs5BcjKU5kMmABg1ZEbaDZzE1J1drr/bve/Zu8d3zAUF97vi5/GtpO0Z+Sq0Pjh0vfcgkJcTM/GW3+cMKj/M+7HQ9a+HdG2s2mIenMt6ry1DquPpWDN8Zt4d/VpAMDuC7cQO30DDly+CwDo+elOxLy9Ho99uRf//Gs+Y2ZObkEhViZdx7Q/TyDzgapU9yhUa7Dv4m3kFhRafM1bf5wwGzABQI+GIQyYiIhcGDNNsG+kqtEIqP3WOpPH17/UWVI1WmvPG91QPcALdUxcO7RtTcx+vKmk7amFiThw5a6kbXSHKCzed8VsH4/N6IUAL/NzqnQVqjVwU8hNZsBiwvxwNvW+2Xvsn9IDYQFFk6PVGgGfbj6H9rWroHM90yvM9L+X9UJ8MaRNTby39gx++U87dKhbtcS+5+QXGtRRmtyzPlrUCsSI7w8AAN7sGwMfdwUOJ2dgXJfa+O3gtRK/hwCweVIX1Av1K/E8IiKyDU4EdwJ7ftOv3c1F5znbDdo71KmCEe0j0bdJdQiCgCHf7BezMqZsmdwV286m4VRKFuYNaW50GOxeTgHmbjmPHxNNF0o88U4v7Dx/CxN/OSJp/2tCRzSrGYibmQ8Q7OMODzfDDWC1gVKAl7LUmR6t6Ko+mDmwkRisaB1/pxcupGWjZa1A8T1mPlCh2bubLLrv7+Pj0LRGIJSKokRqnkqNLWfS0LV+NTR5x7J7mLLztUcQWcUHAKBSa5CamYcQfw+j3ysiIrIvBk1OYI9vep5KjblbzuPrnYbDa4ff7olgH3eD9qt3ctD1fzuM3s/a1VhLE6/g7b9OGbT/t3tdTO7VAADw6opjWJl03ej19UN9sWlSV/H5/TwV/DyVpZpfVVqT4uvjpfh6Jt+LOVV83LHmv52w7kQqZq05bZP+zBrUGCPaR9rkXkREVHZcPeciPNzkBgHTH//XAVV9PYwGTABQK9gbIX4eSL+fL2k/8U4vq19/RFyUGGhM6FYHr/WOser682nZ2HY2DfVC/HAqJRMv/HTY5LlbJndB3ZCiYal7OQVoMWszAKBtVDCmD4hFiL8H1h6/ic71quL0zfv4769HTN5L19wt57F432Xcy5VmtDa83Bl95hkOaeq6k1OAuNnbTB5/u38sgryVCPP3RJCPO1789Qhejq+HPo3CsP/fu4irUwUKuQzavylcdXI7ERFZjpkm2C9SffHXI1j9cOL1L8+1Q4c6Jc+50ZWdXwgPN7k4zGRrKrUG9aauBwCEB3giRWcCujX0s2CZuSrkqgqNFtu8kfEAHT80DGYWj2kDuUyGkT8cwGu9G+B/G88ZfS3tXKjUzDy0n70VHzzWBMPa1RKPJ9/Jxbyt57Hq8A2T/dWdT0VERBUXh+ecwF7fdEEQ8O/tHERX8akQq6ryVGocTr6HYd/+Y/E1AV5KHJtheSZMEAQ8vzQJGgH4dmQraISi7UdC9Cpm/7T/Kqb9eVJ8Pi2hIUZ3iIKbhQGk7jDipQ/64W5OAeI/3Yk5TzRF70ZhFveXiIjKLwZNTlCRt1Gxh5z8Qjy7+CDu5BRABiD9fj5mDmyE11YeR0GhBl8Ma1E0iXv1aXw6pDkiAu2zfUv6/Tz8fTTFqmBJ648j1zHpt2P4c0JHNK8ZaJf+ERGRczFocgIGTURERBUPi1uW0oIFCxAVFQVPT0+0a9cOBw4cKPkiIiIiIgu5RND022+/YfLkyZgxYwYOHz6MZs2aoXfv3khPT3d214iIiMhFuETQ9Omnn+K5557DmDFjEBsbi4ULF8Lb2xs//PCDs7tGRERELqLCB00FBQVISkpCfHy82CaXyxEfH4/ExESj1+Tn5yMrK0vyRURERGROhQ+abt++DbVajdDQUEl7aGgoUlNTjV4ze/ZsBAQEiF81a9Z0RFeJiIioAqvwQVNpTJkyBZmZmeLXtWvXnN0lIiIiKucq/DYqVatWhUKhQFpamqQ9LS0NYWHGixh6eHjAw8PDEd0jIiIiF1HhM03u7u5o1aoVtm7dKrZpNBps3boVcXFxTuwZERERuZIKn2kCgMmTJ2PUqFFo3bo12rZti3nz5iEnJwdjxoxxdteIiIjIRbhE0DRkyBDcunUL06dPR2pqKpo3b44NGzYYTA4nIiIiKi1uowJuo0JERFQRcRsVIiIionKIQRMRERGRBRg0EREREVnAJSaCl5V2Whe3UyEiIqo4tJ/bjpqezaAJwP379wGA26kQERFVQPfv30dAQIDdX4er51BUDDMlJQV+fn6QyWQ2u++uXbswYMAAm92PiIioonr//fcxceJEm95TEATcv38f4eHhkMvtP+OImSYAcrkcNWrUsPl9fXx8bH5PIiKiisjT09MuZQEckWHS4kRwIiIiIgswaCIiIiKyAIMmO6pVq5azu0BERFQuNG/e3NldKDNOBCciIiKyADNNRERERBZg0ERERERkAQZNRERERBZg0ERERERkAZcpbmnLSt5ERETk+qxdC8dMExEREZEFGDQRERERWcAlgqbTp087uwtERETk4lwiaFqyZImzu0BEREQuziWCJiIiIiJ7c4mgadSoUc7uAhEREVUwMpkMTz31lOXnu8recyw5QERERNYICwvDtm3b0LBhQ4vOZ9BERERElRLrNBERERHZgctUBHeRhBkRERGVU8w0EREREVmAQRMRERGRBRg0EREREVmAQRMRERGRBRg0EREREVmAQRMRERGRBRg0EREREVmAQRMRERGRBRg0EVG5N3r0aMhkMshkMiiVSoSGhqJnz5744YcfoNFoLL7P4sWLERgYaL+OEpFLY9BERBVCnz59cPPmTVy5cgXr169Ht27d8NJLL6F///4oLCx0dveIqBJg0EREFYKHhwfCwsIQERGBli1b4q233sJff/2F9evXY/HixQCATz/9FE2aNIGPjw9q1qyJ//u//0N2djYAYMeOHRgzZgwyMzPFrNU777wDAMjPz8err76KiIgI+Pj4oF27dtixY4dz3igRlVsMmoiowurevTuaNWuGVatWAQDkcjk+++wznDp1CkuWLMG2bdvw+uuvAwA6dOiAefPmwd/fHzdv3sTNmzfx6quvAgAmTpyIxMRELFu2DMePH8eTTz6JPn364MKFC057b0RU/sgE7nRLROXc6NGjkZGRgT///NPg2NNPP43jx4/j9OnTBsdWrlyJF154Abdv3wZQNKfp5ZdfRkZGhnhOcnIyateujeTkZISHh4vt8fHxaNu2LT744AObvx8iqpjcnN0BIqKyEAQBMpkMALBlyxbMnj0bZ8+eRVZWFgoLC5GXl4fc3Fx4e3sbvf7EiRNQq9WoX7++pD0/Px9VqlSxe/+JqOJg0EREFdqZM2cQHR2NK1euoH///hg/fjzef/99BAcHY8+ePRg7diwKCgpMBk3Z2dlQKBRISkqCQqGQHPP19XXEWyCiCoJBExFVWNu2bcOJEycwadIkJCUlQaPR4JNPPoFcXjRdc/ny5ZLz3d3doVarJW0tWrSAWq1Geno6Onfu7LC+E1HFw6CJiCqE/Px8pKamQq1WIy0tDRs2bMDs2bPRv39/jBw5EidPnoRKpcLnn3+OAQMGYO/evVi4cKHkHlFRUcjOzsbWrVvRrFkzeHt7o379+hg+fDhGjhyJTz75BC1atMCtW7ewdetWNG3aFAkJCU56x0RU3nD1HBFVCBs2bED16tURFRWFPn36YPv27fjss8/w119/QaFQoFmzZvj000/x0UcfoXHjxvj5558xe/ZsyT06dOiAF154AUOGDEG1atUwZ84cAMCiRYswcuRIvPLKK2jQoAEGDRqEgwcPolatWs54q0RUTnH1HBEREZEFmGkiIiIisgCDJiIiIiILMGgiIiIisgCDJiIiIiILMGgiIiIisgCDJiIiIiILMGgiIiIisgCDJiIiIiILMGgiIiIisgCDJiIiIiILMGgiIiIisgCDJiIiIiIL/D9FLRs0L5DxUgAAAABJRU5ErkJggg==",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Plot the closing price over time\n",
+ "plt.plot(df['Date'], df['Close'])\n",
+ "plt.xlabel('Date')\n",
+ "plt.ylabel('Closing Price')\n",
+ "plt.title('SBIN Stock Price Over Time')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "A candlestick chart is a more detailed way to visualize the stock price, showing the high, low, open, and close prices for each day"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "C:\\Users\\Admin\\AppData\\Roaming\\Python\\Python312\\site-packages\\plotly\\offline\\offline.py:557: UserWarning:\n",
+ "\n",
+ "Your filename `candlestick_chart` didn't end with .html. Adding .html to the end of your file.\n",
+ "\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "'candlestick_chart.html'"
+ ]
+ },
+ "execution_count": 11,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Plot the candlestick chart\n",
+ "fig = go.Figure(data=[go.Candlestick(x=df['Date'],\n",
+ " open=df['Open'],\n",
+ " high=df['High'],\n",
+ " low=df['Low'],\n",
+ " close=df['Close'])])\n",
+ "plot(fig, filename='candlestick_chart')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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SJLUokULr5f/0EMPqUmTJpo0aZLX017q119/1cMPP6yTJ0/queeec7VwhIaGyuFwuLVsZGRklOn0WVJSkmrWrKkZM2Zo06ZNHrfqXJCcnKyCggI9/vjjOnHihNu9dUJDQ3XXXXdp1apVbqetjx07pkWLFunOO+9UdHT0ZefduHFjffnll8rPz3cNW716tc8vB+/Xr59CQ0M1adKkYp8hy7L0888/+3R5gEmMadm5ksOHD2vevHk6fPiw6tWrJ+m3Vps1a9Zo3rx5mjZtmho1aqR169ZpwIABevzxx1VYWKi2bdu6voQAXxg1apTOnj2re++9V82aNVN+fr62bt2qJUuWqGHDhho6dKjb+EeOHNF7770n6bfLrb/55hvNmTNHNWvWLHa3ZU+EhobqueeeK7acq7m4jry8PO3fv19Lly7VTz/9pKefflqPP/64a9xevXpp1qxZ6tmzpwYNGqTjx49r9uzZatKkiXbv3u11zZJUuXJlPfjgg/rv//5vhYaGauDAgV5N37FjR11//fVatWqVIiIiip2enjJlitavX68777xTf/jDH1SpUiXNmTNHTqdTL7300hXn/fvf/17Lli1Tz549NWDAAP34449677331LhxY6/X80oaN26sKVOmaMKECcrIyFDfvn0VFRWlQ4cOacWKFXrsscc0duxYny4TMIZNV4H5lSRrxYoVruerV6+2JFnVqlVze1SqVMkaMGCAZVmWlZWVZcXHx1vjxo2zdu7caW3atMnq2LGj1bVrV6uoqMimNYFpPv30U2vYsGFWs2bNrMjISKtKlSpWkyZNrFGjRlnHjh1zG/fSS89DQkKs2rVrWwMHDrQOHjzoNu7VLj2/WEFBgdW4cWOvLj2/UIPD4bCio6Otm2++2Xr00Uetr776qsRp/vrXv1rx8fFWWFiY1axZM2vevHmuGi+d99UuPb9g+/btliTrrrvuumrNJRk3bpwlybXPX2rnzp1Wjx49rMjISKtq1apW586dra1bt7qNc7n6Zs6cacXGxlphYWFW+/btra+//vqyl54vXbrUbdp58+ZZkqwdO3a4DS/pPbUsy/rggw+sO++803Uca9asmTVixAjXZfQAinNYlo+vQw0ADodDK1asUN++fSVJS5YsUXJysvbt21esE2BkZKTq1q2rF154QWvWrNGOHTtcr/3rX/9SXFyctm3bpjZt2pTnKgC4xDfffKOWLVvq3Xff1cMPP2x3OQCCSIU4jdWqVSsVFhbq+PHj6tChQ4njnD17ttgPEl4IRkVFRX6vEcCVzZ07V5GRkVwhCcBrxoSdvLw8HTx40PX80KFD2rVrl2rUqKGmTZsqOTlZKSkpmjlzplq1aqUTJ05ow4YNSkhIUK9evdSrVy+9/PLLmjx5sgYOHKjTp0/r2WefVYMGDdSqVSsb1wyo2D766CPt379f//u//6uRI0eqWrVqdpcEIMgYcxorLS1NnTt3LjZ88ODBmj9/vgoKCjRlyhS9++67OnLkiGrWrKk2bdpo0qRJuuWWWyRJixcv1ksvvaTvv/9eVatWVdu2bTVjxgw1a9asvFcHwP/XsGFDHTt2TD169NCCBQvcbl4IAJ4wJuwAAACUpMLcZwcAAFRMhB0AAGC0oO6gXFRUpKNHjyoqKsqjHwQEAAD2syxLp0+fVr169YpdCe0PQR12jh49esXfrAEAAIErMzNT119/vd+XE9Rh58JVGZmZmVf87RoAABA4cnNzFRcXV25XVwZ12Llw6io6OpqwAwBAkCmvLih0UAYAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABgtYMLO9OnT5XA4NHr0aLtLAQAABgmIsLNjxw7NmTNHCQkJdpcCAAAMY3vYycvLU3JysubOnatrrrnG7nIAAIBhbA87I0aMUK9evdStWze7SwEAAAaqZOfCFy9erJ07d2rHjh0eje90OuV0Ol3Pc3Nz/VUaAAAwhG0tO5mZmXryySe1cOFChYeHezRNamqqYmJiXI+4uDg/VwkAAIKdw7Isy44Fr1y5Uvfee69CQ0NdwwoLC+VwOBQSEiKn0+n2mlRyy05cXJxycnIUHR1dbrUDAIDSy83NVUxMTLl9f9t2Gqtr167as2eP27ChQ4eqWbNm+uMf/1gs6EhSWFiYwsLCyqtEAABgANvCTlRUlJo3b+42rFq1arr22muLDQcAACgt26/GAgAA8Cdbr8a6VFpamt0lAAAAw9CyAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjEXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNFsDTtvvPGGEhISFB0drejoaLVt21affvqpnSUBAADD2Bp2rr/+ek2fPl3p6en6+uuv1aVLF/Xp00f79u2zsywAAGAQh2VZlt1FXKxGjRr685//rEceeeSq4+bm5iomJkY5OTmKjo4uh+oAAEBZlff3dyW/L8FDhYWFWrp0qc6cOaO2bduWOI7T6ZTT6XQ9z83NLa/yAABAkLK9g/KePXsUGRmpsLAwDR8+XCtWrNBNN91U4ripqamKiYlxPeLi4sq5WgAAEGxsP42Vn5+vw4cPKycnR8uWLdNbb72lTZs2lRh4SmrZiYuL4zQWAABBpLxPY9kedi7VrVs3NW7cWHPmzLnquPTZAQAg+JT397ftp7EuVVRU5NZ6AwAAUBa2dlCeMGGCkpKSVL9+fZ0+fVqLFi1SWlqa1q5da2dZAADAILaGnePHjyslJUVZWVmKiYlRQkKC1q5dq+7du9tZFgAAMIitYeevf/2rnYsHAAAVQMD12QEAAPAlwg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+wAAACjlSrsfP7553rooYfUtm1bHTlyRJK0YMECbdmyxafFAQAAlJXXYeeDDz5Qjx49FBERoX/84x9yOp2SpJycHE2bNs3nBQIAAJSF12FnypQpevPNNzV37lxVrlzZNbx9+/bauXOnT4sDAAAoK6/DzoEDB5SYmFhseExMjE6dOuWLmgAAAHzG67BTt25dHTx4sNjwLVu26IYbbvBJUQAAAL7iddh59NFH9eSTT+qrr76Sw+HQ0aNHtXDhQo0dO1ZPPPGEP2oEAAAotUreTjB+/HgVFRWpa9euOnv2rBITExUWFqaxY8dq1KhR/qgRAACg1ByWZVmlmTA/P18HDx5UXl6ebrrpJkVGRvq6tqvKzc1VTEyMcnJyFB0dXe7LBwAA3ivv72+vW3YuqFKlim666SZf1gIAAOBzXoedc+fO6fXXX9fGjRt1/PhxFRUVub3O5ecAACCQeB12HnnkEa1bt079+/fXHXfcIYfD4Y+6AAAAfMLrsLN69Wp98sknat++vT/qAQAA8CmvLz2PjY1VVFSUP2oBAADwOa/DzsyZM/XHP/5R//znP/1RDwAAgE95fRrrtttu07lz53TDDTeoatWqbr+PJUknT570WXEAAABl5XXYGThwoI4cOaJp06apTp06dFAGAAABzeuws3XrVm3btk0tWrTwRz0AAAA+5XWfnWbNmunXX3/1Ry0AAAA+53XYmT59up5++mmlpaXp559/Vm5urtsDAAAgkHj921ghIb/lo0v76liWJYfDocLCQt9VdxX8NhYAAMEn4H8ba+PGjf6oAwAAwC+8DjsdO3b0Rx0AAAB+4XXY2bx58xVfT0xMLHUxAAAAvuZ12OnUqVOxYRf33ynPPjsAAABX4/XVWL/88ovb4/jx41qzZo1uv/12rVu3zh81AgAAlJrXLTsxMTHFhnXv3l1VqlTRmDFjlJ6e7pPCAAAAfMHrlp3LqVOnjg4cOOCr2QEAAPiE1y07u3fvdntuWZaysrI0ffp0tWzZ0ld1AQAA+ITXYadly5ZyOBy69F6Ebdq00dtvv+2zwgAAAHzB67Bz6NAht+chISGqVauWwsPDfVYUAACAr3gddho0aOCPOgAAAPzCo7Dz2muveTzD//qv/yp1MQAAAL7m0Q+BNmrUyLOZORz6v//7vzIX5Sl+CBQAgOATkD8Eemk/HQAAgGBRpvvsWJZV7KosAACAQFKqsPPuu+/qlltuUUREhCIiIpSQkKAFCxb4ujYAAIAy8/pqrFmzZumFF17QyJEj1b59e0nSli1bNHz4cGVnZ+upp57yeZEAAACl5VEH5Ys1atRIkyZNUkpKitvwd955Ry+++GK59u+hgzIAAMGnvL+/vT6NlZWVpXbt2hUb3q5dO2VlZfmkKAAAAF/xOuw0adJE77//frHhS5YsUXx8vE+KAgAA8BWP++zs3btXzZs31+TJkzVgwABt3rzZ1Wfniy++0IYNG0oMQQAAAHbyuGUnISFBrVu3VnZ2tj777DPVrFlTK1eu1MqVK1WzZk1t375d9957rz9rBQAA8JrHLTubNm3SvHnzNHbsWBUVFem+++7Tyy+/rMTERH/WBwAAUCYet+x06NBBb7/9trKysvT6668rIyNDnTt3VtOmTTVjxgz99NNP/qwz4DQc/7HdJQAAAA943UG5WrVqGjp0qDZt2qQDBw7o/vvv1+zZs1W/fn3dc889/qgRAACg1Mr0cxFNmjTRs88+q+eff15RUVH6+GNaOwAAQGApddjZvHmzhgwZorp162rcuHHq16+fvvjiC6/mkZqaqttvv11RUVGqXbu2+vbtqwMHDpS2JAAAgGK8CjtHjx7VtGnT1LRpU3Xq1EkHDx7Ua6+9pqNHj2ru3Llq06aNVwvftGmTRowYoS+//FLr169XQUGB7rrrLp05c8ar+diJvjsAAAQ2j6/GSkpK0t///nfVrFlTKSkpGjZsmG688cYyLXzNmjVuz+fPn6/atWsrPT2dq7wAAIBPeBx2KleurGXLlql3794KDQ31SzE5OTmSpBo1apT4utPplNPpdD3Pzc31Sx0AAMAcHoedDz/80J91qKioSKNHj1b79u3VvHnzEsdJTU3VpEmT/FoHAAAwS5muxvKlESNGaO/evVq8ePFlx5kwYYJycnJcj8zMzHKsEAAABCOPW3b8aeTIkVq9erU2b96s66+//rLjhYWFKSwsrBwrAwAAwc7WsGNZlkaNGqUVK1YoLS1NjRo1srMcAABgIFvDzogRI7Ro0SKtWrVKUVFRrp+ciImJUUREhJ2lAQAAQ9jaZ+eNN95QTk6OOnXqpOuuu871WLJkiZ1lAQAAg9h+GgsAgIqk4fiPlTG9l91lVCgBczUWAACAPxB2AACA0Qg7AADAaIQdAABgNMIOAAAwGmHHSw3Hf2x3CQAAwAuEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYKQU6KQMAEDwIOwAAwGiEHQAAYDTCDgAAMBphx0foxwMAQGAi7AAAAKMRdgAAgNEIO2VQ0qkrTmcBABBYCDsAAMBohB0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wU074gVAAAOxB2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPslDPupAwAQPki7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCjg0CpZNyoNQBAIA/EXYAAIDRCDsAAMBohB0AAGA0wg4AADAaYccP6PgLAEDgIOwAAACjEXYAAIDRCDsAAMBohJ0KhL5EAICKiLADAACMRtgBAABGI+z4EaeNAACwH2EHAAAYjbBTjmjpAQCg/BF2AACA0Qg7AADAaIQdAABgNMIOAAAwGmEHAAAYjbADAACMRtgBAABGI+z4APfPAQCzcZwPbraGnc2bN+vuu+9WvXr15HA4tHLlSjvLAQAABrI17Jw5c0YtWrTQ7Nmz7SwDAAAYrJKdC09KSlJSUpKdJfhdw/EfK2N6L7vLAACgwrI17HjL6XTK6XS6nufm5tpYDQAACAZB1UE5NTVVMTExrkdcXJzdJQEAgAAXVGFnwoQJysnJcT0yMzPtLgkAAAS4oDqNFRYWprCwMLvLAAAAQSSoWnYAAAC8ZWvYycvL065du7Rr1y5J0qFDh7Rr1y4dPnzYzrIAABUYNxA0j62nsb7++mt17tzZ9XzMmDGSpMGDB2v+/Pk2VQUAAExia9jp1KmTLMuyswQAALzGPdSCC312AACA0Qg7AADAaIQdL9BpDQCA4EPYsUkgBadAqgUAAF8j7AQIAgcAAP5B2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDnAFXCUHVBzs7+Yi7AAAAKMRdgzEfycAAPwbYQcAAJTIlH+eCTsVlCkfYAAAroawAwQpAisAeIawAwAIOoR9eIOwAwAAjEbYAQAARiPsAAAAoxF2rqAinBMuaR0rwnoDQGl5cozkOBpYCDvARThAAYB5CDsBji9fAADKhrADAACMRtgBAFQotJhXPIQdAAA8QEgKXoQdAABgNMJOAOC/BQAwF8d4+xF2AC80HP8xBy5I4gusrNh+KE+EHUNw4AB8y459iv0Y8A/CzlUE2sGHOx4DAHylonx/EHbgpqJ88O3ALeaBio392z6EHQAASokAExwIOwAAwGiEHcAH/PnfHf85AkDZEHYAHyKYBB7eE5SGN58bPmOBj7ATwNiBAN9gXwIqNsIOAL/jlgkoq2D9vARr3aYh7AQgX+0c7GT+w7b1DNsJQCAg7BjOH182pZlnMH7p0ekYAMxA2AkifEH6RrBvx2Cv3zS8H0DgI+zYyBe9/TnQBi/eu6tjGyEQ8DkMfoQdAEBAC5awEYh1BmJNdiDsBLFg+xAHW72+UBHXOdjxngHmIewApcSXYsXEZfRA8CHsVDDBflAua/3Bvv4AAO8RdoKQP77wCQGBg/cC8E4g/RPE/huYCDsoV4F6IAjUukwQaNs20OoJRiZvQ5PXrSIj7ADloCIdQAP1Zoz8945AwmeofBF2Agw7QPljm5c/b7c571Hp+XvbBeJ7Eyg1BUodFwRaPeWJsBOk+LLwTllbBHxxA0h/qYhfZsGiIm+7QGmFCxSerhM3kPUPwg5KhR3v34JtWwRivXZ2mvdkOYG2zcr6xRkMgrl2BB7CDoByEaxfXsFat4lK+14EeivTlVpz+Pz5BmHHQ3zggLIrzX5k575nx7IDeX0r2nGwoq2vyQg7QDkqS/8fUw68V1oPE/sf+esUnWl9w3whGGqEPQg78AgHkeDBe+U/vuzfw/tUvtjeFRthB17hgOEf/tiuwfJeVfQ6g6FfRqDXZxquyPI9wg7gJxcOTMFwysIfp8s4MJddMAShYGLiaWFPBeNVh75E2EHQMXmHvJryXPeKvJ39JZA7H/tq3nZeveTtON6M5y92L/9SgVaPrxB24DFTdwK72R1g7Lic11/srsmuDtAXtyJ62qJox49n2hGE7P5MeCOYag02hB2UCc3sgYH3oGz83Weqor0/pQ0cFW07ecrXwdST47Zpx3bCDq6IW5zbx85LtO1cnqefJV/2ibrasu2Yd1la4QJxv/M0/F06XqDfENAEFWE7EXZQYVSEHdou/ggeniwP3inpfQqEbRkINQQTXwbCioKwg1JjBws8l2sNKOmAWJHfv2D7ggiElrXSTmvijSLLg7/7XNk1b7sQduA3Ju4wpgjm0yFXU96tTOXFjsBj2jY03cX/2PDeuSPswKeCaQcLploDid3bzZvWA7trDRSlaSXwReBh+9uL7f9vhB3Ywo7LXlF2gdrnA8HLxM+PiesU7AIi7MyePVsNGzZUeHi4Wrdure3bt9tdEsrA5FMkpgukK8AAwFdsDztLlizRmDFjNHHiRO3cuVMtWrRQjx49dPz4cbtLQznhS9R/2LYAEABhZ9asWXr00Uc1dOhQ3XTTTXrzzTdVtWpVvf3223aXBj8p6RSIJ6dFaHUAAJSGrWEnPz9f6enp6tatm2tYSEiIunXrpm3bttlYGeziTdDxZFxCEACgkp0Lz87OVmFhoerUqeM2vE6dOvruu++Kje90OuV0Ol3Pc3JyJEm5ubl+qa/IedY1/wt/X8nF413u79JM483yL9Rd2ukvnqakeXkzfVmX33ziWu2d1MNVx+WmaT5x7VX/vnT6C8NKqvPidb9cff5aZ6Y3f/qy7vPBuM5MH9zT++M79sI8Lcvy+bxLZNnoyJEjliRr69atbsPHjRtn3XHHHcXGnzhxoiWJBw8ePHjw4GHAIzMzs1zyhq0tOzVr1lRoaKiOHTvmNvzYsWOqW7dusfEnTJigMWPGuJ4XFRXp5MmTuvbaa+VwOHxa25/+9Ce9+uqrPp0nAADBaP/+/YqNjfXZ/CzL0unTp1WvXj2fzfNKbA07VapU0a233qoNGzaob9++kn4LMBs2bNDIkSOLjR8WFqawsDC3YdWrV/dLbZcuBwCAiioqKkrR0dE+nWdMTIxP53cltoYdSRozZowGDx6s2267TXfccYdeeeUVnTlzRkOHDrW7NAAAYADbw84DDzygEydO6E9/+pN++ukntWzZUmvWrCnWaRkAAKA0HJZVXl2hg8sHH3yg/v37210GAAC2uvHGG7V9+3afn8YqT4QdAABgNNvvoAwAAOBPhB0AAGA0wg4AADAaYQcAABjN9kvP7777bq1evdruMgAAQJDo06ePVq5c6fH4trfsfP7553aXAAAADGZ72Dl//rzdJQAAAIPZGnby8vJ05swZO0sAAACGszXsfP/993YuHgAAVAC2n8YCAADwJ1t/LiIvL09RUVF2LR4AAASxgwcPqnHjxlcdz9aWncjISFWtWtXOEgAAQJAJDQ3V4sWLFRcX59H4tp/Gql+/vt0lAACAINK7d2898MADqlKlikfj2x52vvvuO7tLAAAABrP9Dso2dhkCAAAVgO0tOwAAAP5E2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wA8CvhgwZIofDIYfDocqVK6tOnTrq3r273n77bRUVFXk8n/nz56t69er+KxSAsQg7APyuZ8+eysrKUkZGhj799FN17txZTz75pHr37q3z58/bXR4AwxF2APhdWFiY6tatq9jYWP3Hf/yHnn32Wa1atUqffvqp5s+fL0maNWuWbrnlFlWrVk1xcXH6wx/+oLy8PElSWlqahg4dqpycHFcr0YsvvihJcjqdGjt2rGJjY1WtWjW1bt1aaWlp9qwogIBE2AFgiy5duqhFixZavny5JCkkJESvvfaa9u3bp3feeUefffaZnnnmGUlSu3bt9Morryg6OlpZWVnKysrS2LFjJUkjR47Utm3btHjxYu3evVv333+/evbsqR9++MG2dQMQWBwWv8QJwI+GDBmiU6dOaeXKlcVee/DBB7V7927t37+/2GvLli3T8OHDlZ2dLem3PjujR4/WqVOnXOMcPnxYN9xwgw4fPqx69eq5hnfr1k133HGHpk2b5vP1ARB8bP/VcwAVl2VZcjgckqS///3vSk1N1Xfffafc3FydP39e586d09mzZ1W1atUSp9+zZ48KCwvVtGlTt+FOp1PXXnut3+sHEBwIOwBs8+2336pRo0bKyMhQ79699cQTT2jq1KmqUaOGtmzZokceeUT5+fmXDTt5eXkKDQ1Venq6QkND3V6LjIwsj1UAEAQIOwBs8dlnn2nPnj166qmnlJ6erqKiIs2cOVMhIb91JXz//ffdxq9SpYoKCwvdhrVq1UqFhYU6fvy4OnToUG61AwguhB0Afud0OvXTTz+psLBQx44d05o1a5SamqrevXsrJSVFe/fuVUFBgV5//XXdfffd+uKLL/Tmm2+6zaNhw4bKy8vThg0b1KJFC1WtWlVNmzZVcnKyUlJSNHPmTLVq1UonTpzQhg0blJCQoF69etm0xgACCVdjAfC7NWvW6LrrrlPDhg3Vs2dPbdy4Ua+99ppWrVql0NBQtWjRQrNmzdKMGTPUvHlzLVy4UKmpqW7zaNeunYYPH64HHnhAtWrV0ksvvSRJmjdvnlJSUvT000/rxhtvVN++fbVjxw7Vr1/fjlUFEIC4GgsAABiNlh0AAGA0wg4AADAaYQcAABiNsAMAAIxG2AEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjPb/AIBym1Yc809gAAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Plot the daily volume\n",
+ "plt.bar(df['Date'], df['Volume'])\n",
+ "plt.xlabel('Date')\n",
+ "plt.ylabel('Volume')\n",
+ "plt.title('SBIN Daily Volume')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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1q0b1q5d6/c9cnJy0L59e7fbfX1/Pv/8c3Tp0gUymQx9+/bFoUOHAADvvvsu1Go1pFIpBgwYwH3Ojvyd2wIVXbY2MvbLER4ezt125MgRpKeno23btpg1axaCgoLw2WefYfTo0di4cSPGjBnj9fU+//xz6PV6/POf/4RSqcQff/yBFStW4OzZs/j8888BAJMnT0ZZWRl++OEHfPzxx37beOTIEWRmZiI0NBTPPfccRCIR3n33XQwYMAC//vorevfu7fR4tgOZN28eTp06hTfeeANTp07Fp59+CsD+R3rnnXciMjISs2bNQlhYGE6dOoUvv/zS7b3Xr1+P6upqTJ48GTweD6+88gruvfdenDx5EiKRyGe7f/31V3z66aeYPn06JBIJ3nrrLdx11134448/kJyc7Pf3fumll8Dj8TBz5kxcunQJb7zxBgYPHow///wTMpkMALBjxw4MGzYM3bt3x7x588Dn87F69WoMHDgQeXl56NWrF+699178/fff2LBhA15//XVuFCEyMhKZmZnYsmULqqqqEBoaCoZhUFBQAD6fj7y8PIwcORKA/aTM5/O5QECv16N///44d+4cJk+ejNjYWPz222+YPXs2zp8/jzfeeIP7PSZPnow1a9Zg4sSJmD59OkpKSrBy5UoUFhaioKDA6TgWFxfjvvvuw6RJkzBhwgSsWrUKOTk56N69O7p27er1WMXFxQEAPvroI7z44ov16iCvXLkCwB5InTt3DosWLYJUKq33yGJoaCiefvppzJ07t8GjKnq9Hj/99BOysrIQGxtb7+c5qu/fxfz587FkyRI88sgj6NWrF6qqqrB3717s378fQ4YM8fke+fn5+PLLLzFlyhSEhIRg+fLlGDt2LEpLS6FUKgHYg6W77roL0dHRWLBgAaxWKxYuXIjIyMhr+r1YbPDJvg9gn+LJzs7G5MmT8eijj6Jjx44en6vT6ZCZmYljx44hNzcXt99+O8rLy7F161acPXsWKpUKNpsNI0eORH5+Ph577DF07twZhw4dwuuvv46///4bmzdv9tm++pzrWFarFUOHDkXv3r3x73//Gz/++CNee+01JCYm4p///CcA+wjRqFGjkJ+fj8cffxydO3fGpk2bMGHChHodr/Hjx2PBggVYv36903fRarXis88+Q2ZmJmJjY1FbW4sBAwaguLgYU6dORXx8PD7//HPk5ORAo9HgySefrNf71UdeXh62bt2KJ554AgCwZMkSjBgxAs899xzeeustTJkyBZWVlXjllVeQm5uLHTt2cM+tz7ktYDHkmqxevZoBwPz444/M5cuXmTNnzjBffPEFExkZyUgkEubMmTPcYwcNGsSkpKQwBoOBu81mszH9+vVjkpKSuNt+/vlnBgDz888/c7fp9Xq3916yZAnD4/GY06dPc7c98cQTjLePEwAzb9487ufRo0czYrGYOXHiBHdbWVkZExISwmRlZbn9joMHD2ZsNht3+9NPP80IBAJGo9EwDMMwmzZtYgAwe/bs8Xq8SkpKGACMUqlkrly5wt2+ZcsWBgDz1VdfcbfNmzfP7XcBwABg9u7dy912+vRpRiqVMmPGjPH6vgxz9bi2bduWqaqq4m7/7LPPGADMf//7X4Zh7J9JUlISM3ToUKffV6/XM/Hx8cyQIUO421599VUGAFNSUuL0Xnv27GEAMNu3b2cYhmEOHjzIAGDuv/9+pnfv3tzjRo4cyaSlpXE/L1q0iAkKCmL+/vtvp9ebNWsWIxAImNLSUoZhGCYvL48BwKxbt87pcd9++63b7XFxcQwAZufOndxtly5dYiQSCfOvf/3L5zHT6/VMx44dGQBMXFwck5OTw3z44YfMxYsX3R7Lfl6u/8LCwphvv/3W6bHs9+DVV1/lbmM/n88//5zRaDRMeHg4M3LkSO7+CRMmMEFBQT7be+DAAQYA8+STT/p8nKNr/bvo1q0bM3z4cJ+v7e07LBaLmeLiYrd2r1ixgrvtnnvuYeRyOXPu3DnutqKiIkYoFHr9G3fEHq/Lly8zly9fZoqLi5mXX36Z4fF4TGpqKvc49vvh+hmx902YMIH7ee7cuQwA5ssvv3R7LPu38vHHHzN8Pp/Jy8tzuv+dd95hADAFBQU+213fc92ECRMYAMzChQudHpuWlsZ0796d+3nz5s0MAOaVV17hbrNYLExmZiYDgFm9erXP9jAMw/Ts2ZNp164dY7VaudvYv7V3332XYRiGeeONNxgAzP/+9z/uMSaTienbty8THBzsdM5x/c5NmDCBiYuLc3tfb98fiUTidM559913GQBM69atnd5n9uzZTuenhpzbAhFN/VynwYMHIzIyEjExMbjvvvsQFBSErVu3ol27dgDsV5k7duzAAw88gOrqapSXl6O8vBwVFRUYOnQoioqKfK4SYq/0AaCmpgbl5eXo168fGIZBYWFhg9trtVrx/fffY/To0UhISOBuj46Oxrhx45Cfn4+qqiqn5zz22GNOV9SZmZmwWq04ffo0AHDJpNu2bYPZbPb5/v/3f//nNNrETpWdPHnSb9v79u2L7t27cz/HxsZi1KhR+O677+q1muPhhx92mhK47777EB0dje3btwOwrxYpKirCuHHjUFFRwX1WNTU1GDRoEHbu3Ok2DeMqLS0NwcHB3JRUXl4eN0S+f/9+6PV6MAyD/Px87ncH7FeTmZmZCA8P5963vLwcgwcPhtVq5V7v888/h0KhwJAhQ5we1717dwQHB+Pnn392ak+XLl2c3icyMhIdO3b0e7xlMhl+//13boprzZo1mDRpEqKjozFt2jSPQ/kbN27EDz/8gO+//x6rV69Ghw4dMHbsWPz2228+38uRQqHAU089ha1btzbo+81+Zz1N+dRHQ/4uwsLCcOTIERQVFTX4fQYPHozExETu59TUVISGhnKfh9VqxY8//ojRo0c75ZGo1WoMGzas3u9TU1ODyMhIREZGQq1W4/nnn0ffvn2xadMmp8fFx8dj6NChfl9v48aN6Natm8fRX/bc8Pnnn6Nz587o1KmT03dz4MCBAOD23XTV0HPd448/7vRzZmam0/d6+/btEAqF3AgLAAgEAkybNs3v78v6xz/+gbNnzzpNMa9fvx5isRj3338/9z6tW7fmpoEAQCQSYfr06dDpdPj111/r/X7+DBo0yGmqiB3lGzt2rNN3n72dPR6NcW5rTi0mUNm5cyfuuecetGnTBjwez+8woyffffcd+vTpg5CQEERGRmLs2LEe5/kcvfnmm/jhhx/wxRdf4O6770Z5eblTIlpxcTEYhsGcOXO4Ewf7b968eQDsUyfelJaWIicnBxEREdxcbP/+/QEAWq22wb/j5cuXodfrPQ7xdu7cmVux4ch1KJ0NNNiciP79+2Ps2LFYsGABVCoVRo0ahdWrV3vszPy9li9JSUlut3Xo0AF6vd4tZ6Y+z+fxeFCr1dxnzHY8EyZMcPusPvjgAxiNRr/HXCAQoG/fvsjLywNgD1QyMzORkZEBq9WK3bt34+jRo7hy5YpTAFFUVIRvv/3W7X0HDx4M4Op3pKioCFqtFlFRUW6P1el0bt8lT9Mg4eHh9TreCoUCr7zyCk6dOoVTp07hww8/RMeOHbFy5UosWrTI7fFZWVkYPHgwhgwZgpycHPz0008ICQlpUMcAAE8++STCwsIalKvC5sxUV1c36L1YDfm7WLhwITQaDTp06ICUlBQ8++yz9V6i6u/zuHTpEmpra6FWq90e5+k2b6RSKX744Qf88MMP2LlzJ86cOYOCggKnIAywByr1ceLECb/Tq0VFRThy5Ijb97JDhw4AfJ/ngIad66RSqdtUmOv3+vTp04iOjnZb2u5tesuTBx98EAKBAOvXrwdgTyTftGkThg0bxp27Tp8+jaSkJLdVUp07d+bubyyu3x+FQgEAiImJ8Xg7ezwa49zWnFpMjkpNTQ26deuG3Nxc3HvvvQ1+fklJCUaNGoVnnnkG69atg1arxdNPP417773XYzIVq1evXtyqn9GjRyMjIwPjxo3DX3/9xS3VBIAZM2Z4vXLxdgKyWq0YMmQIrly5gpkzZ6JTp04ICgrCuXPnkJOT02QRsEAg8Hg7wzAAwBVT2717N7766it89913yM3NxWuvvYbdu3c7nSj8vVZzYo/nq6++6nWVSn3qeWRkZOCll16CwWBAXl4eXnjhBYSFhSE5ORl5eXlo1aoVADgFKjabDUOGDMFzzz3n8TXZk73NZkNUVBTWrVvn8XGuJ+/GOt5xcXHIzc3FmDFjkJCQgHXr1mHx4sU+nxMcHIzevXtjy5YtqKmpQVBQUL3eix1VmT9/fr1HVdRqNYRCIZdYeCNlZWXhxIkT2LJlC77//nt88MEHeP311/HOO+/gkUce8fncpvr+CwQCLsj1xXEU43rZbDakpKTgP//5j8f7XTtTRw0913k7jo0tKioKQ4YMwcaNG/Hmm2/iq6++QnV1NcaPH98or+8t98vbCLG339vf96qxzm3NpcUEKsOGDfM5NGo0GvHCCy9gw4YN0Gg0SE5OxrJly7hM+H379sFqtWLx4sVcZDxjxgyMGjUKZrPZb6InYP+yLFmyBHfccQdWrlyJWbNmcVcwIpGoXicOR4cOHcLff/+NtWvX4uGHH+Zud1xdwKrvaoDIyEjI5XL89ddfbvcdP34cfD7f5wnFlz59+qBPnz546aWXsH79eowfPx6ffPKJ35N3fXkaav/7778hl8vrlWjo+nyGYVBcXMzVQWCH5ENDQ/1+Vr6Od2ZmJkwmEzZs2IBz585xAUlWVhYXqHTo0IELWNj31ul0ft83MTERP/74I9LT0xu1k6mv8PBwJCYm1nuZr8ViAWBPxqxvoALYlxO/8cYbWLBgQb3q1MjlcgwcOBA7duzAmTNnGvwdbujfRUREBCZOnIiJEydCp9MhKysL8+fPv+7velRUFKRSqcdCY76Kj91o9fnMExMTceDAAQwaNKjBq5Macq6rr7i4OPz000/Q6XROnbCnz9iX8ePH49tvv8U333yD9evXIzQ0FPfcc4/T+xw8eBA2m81pVOX48ePc/d6Eh4d7XIXUmKMwQMPObYGoxUz9+DN16lTs2rULn3zyCQ4ePIj7778fd911F9d5de/encuCtlqt0Gq1+PjjjzF48OB6BSmsAQMGoFevXnjjjTdgMBgQFRWFAQMG4N1338X58+fdHu9ryoKNkh2vthiGwX//+1+3x7KdgL+ldwKBAHfeeSe2bNniNK118eJFrF+/HhkZGfVaeuqosrLS7YqQjdobsxLmrl27nEa3zpw5gy1btuDOO++s1xXWRx995DQ18MUXX+D8+fNcgNu9e3ckJibi3//+N3Q6ndvzHT8rX8e7d+/eEIlEWLZsGSIiIrjVNZmZmdi9ezd+/fVXp9EUAHjggQewa9cufPfdd26vp9FouA7/gQcegNVq9Tj1YrFYGq1S7oEDB5yWnbJOnz6No0eP1mv4/MqVK/jtt9/QunVrREVFNej92VGVLVu24M8//6zXc+bNmweGYfDQQw95/Pz27dvndcloQ/4uKioqnJ4bHBwMtVrdKN91diRk8+bNTtV/i4uLnZayN7WxY8fiwIEDbjkuwNXz0wMPPIBz587h/fffd3tMbW0tampqvL5+Q8519XX33XfDYrHg7bff5m6zWq1YsWJFg15n9OjRkMvleOutt/DNN9/g3nvvdapNdffdd+PChQvcKkjA/re4YsUKBAcHc9NXniQmJkKr1TpNHZ4/f97jcb4eDTm3BaIWM6LiS2lpKVavXo3S0lIuQW3GjBn49ttvsXr1arz88suIj4/H999/jwceeACTJ0+G1WrlCkc11LPPPov7778fa9asweOPP44333wTGRkZSElJwaOPPoqEhARcvHgRu3btwtmzZ3HgwAGPr9OpUyckJiZixowZOHfuHEJDQ7Fx40aP+QVskun06dMxdOhQCAQCPPjggx5fd/Hixfjhhx+QkZGBKVOmQCgU4t1334XRaMQrr7zS4N937dq1eOuttzBmzBgkJiaiuroa77//PkJDQ3H33Xc3+PW8SU5OxtChQ52WJwP2+hn1ERERgYyMDEycOBEXL17EG2+8AbVajUcffRSAvdbEBx98gGHDhqFr166YOHEi2rZti3PnzuHnn39GaGgoVzWVPd4vvPACHnzwQYhEItxzzz0ICgqCXC5H9+7dsXv3bq6GCmAfUampqUFNTY1boPLss89i69atGDFiBLd8uKamBocOHcIXX3yBU6dOQaVSoX///pg8eTKWLFmCP//8E3feeSdEIhGKiorw+eef47///S/uu+++6z7WP/zwA+bNm4eRI0eiT58+CA4OxsmTJ7Fq1SoYjUaP+SNffPEFgoODwTAMysrK8OGHH6KyshLvvPPONdX/ePLJJ/H666/jwIED9RqN6devH958801MmTIFnTp1cqpM+8svv2Dr1q0+p6vq+3fRpUsXDBgwAN27d0dERAT27t2LL774AlOnTm3w7+jJ/Pnz8f333yM9PR3//Oc/YbVasXLlSiQnJ9c7aGtszz77LL744gvcf//9yM3NRffu3XHlyhVs3boV77zzDrp164aHHnoIn332GR5//HH8/PPPSE9Ph9VqxfHjx/HZZ59x9Vo8aci5rr7uuecepKenY9asWTh16hS6dOmCL7/8ssG5GMHBwRg9ejSXp+I67fPYY4/h3XffRU5ODvbt24f27dvjiy++QEFBAd544w2fCd4PPvggZs6ciTFjxmD69OnQ6/V4++230aFDB58pBw3VkHNbQGrqZUZNAQCzadMm7udt27YxAJigoCCnf0KhkHnggQcYhmGY8+fPM0lJScyzzz7L7N+/n/n111+Z/v37M4MGDXJazsVil+56WpJrtVqZxMREJjExkbFYLAzDMMyJEyeYhx9+mGndujUjEomYtm3bMiNGjGC++OIL7nmelicfPXqUGTx4MBMcHMyoVCrm0Ucf5ZY0Oi6vs1gszLRp05jIyEiGx+M5LW2Dy5I4hmGY/fv3M0OHDmWCg4MZuVzO3HHHHcxvv/1Wr9/RtZ379+9nsrOzmdjYWEYikTBRUVHMiBEjnJYSe1qW6q193pbmPfHEE8z//vc/JikpiZFIJExaWprTsfKGbe+GDRuY2bNnM1FRUYxMJmOGDx/utOyRVVhYyNx7772MUqlkJBIJExcXxzzwwAPMTz/95PS4RYsWMW3btmX4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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Plot the scatter plot of closing price vs volume\n",
+ "sns.scatterplot(x=df['Close'], y=df['Volume'])\n",
+ "plt.xlabel('Closing Price')\n",
+ "plt.ylabel('Volume')\n",
+ "plt.title('Relationship between SBIN Closing Price and Volume')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAHHCAYAAABeLEexAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABPHElEQVR4nO3deVhU1eM/8PcgzIDgsKgw8JEtxQX3NJFwSSVR0VywREnRSFrAPVMqzWyhrMw1yRbR3NJcMk0URaWMFEncUhRDUXHAQhjBZD2/P/xxv46gArIM3Pfree7zNOece+85Mwjvzj33jkIIIUBEREQkY0a13QEiIiKi2sZARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BE9P/NmzcPCoWiRs71zDPP4JlnnpFeHzx4EAqFAj/++GONnH/8+PFwcXGpkXNVVk5ODl5++WVoNBooFApMnTq1trtUa1xcXDB+/PhqOXZkZCQUCgUuXbpULcevbvf/WyKqLAYiqpdKfsmXbKampnBwcICPjw+WLFmCW7duVcl50tLSMG/ePCQmJlbJ8aqSIfetPD766CNERkbitddew/fff4+xY8c+sG1+fj4WL16Mzp07Q61Ww8rKCm3btkVwcDDOnTsntbv/50KhUMDW1hZ9+vTB7t27Sx1XoVAgNDRUen3p0iVpvy1btpRqXxKq//nnn3KN8eLFi3jllVfwxBNPwNTUFGq1Gl5eXli8eDH++++/ch2jLit5v0q2hg0bwt3dHe+88w50Ol1td49kxri2O0BUnebPnw9XV1cUFBRAq9Xi4MGDmDp1KhYuXIgdO3agQ4cOUtt33nkHs2fPrtDx09LS8N5778HFxQWdOnUq93579+6t0Hkq42F9+/rrr1FcXFztfXgcMTEx6N69O959991HtvXz88Pu3bsxevRoTJw4EQUFBTh37hx27tyJp59+Gq1bt9ZrX/JzIYRAeno6IiMjMWjQIPz8888YPHhwufo3f/58jBgxotKzirt27cLzzz8PlUqFcePGoV27dsjPz8dvv/2GmTNn4syZM1i5cmWljl0RY8eOhb+/P1QqVbWf60FWrFgBCwsL5OTkYO/evfjwww8RExODw4cPP/L9rYl/SyQPDERUrw0cOBBdu3aVXoeFhSEmJgaDBw/G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DDYQjR07FidPnkRiYqK0OTg4YObMmdizZw8AwNPTE1lZWUhISJD2i4mJQXFxMTw8PKQ2sbGxKCgokNpER0ejVatWsLa2rtlBERERkUGq1bvMcnJykJycLL1OSUlBYmIibGxs4OTkhMaNG+u1NzExgUajQatWrQAAbdq0wYABAzBx4kRERESgoKAAoaGh8Pf3l27RHzNmDN577z0EBQVh1qxZOH36NBYvXowvvvii5gZKREREBq1WA9GxY8fQp08f6fX06dMBAIGBgYiMjCzXMdatW4fQ0FD069cPRkZG8PPzw5IlS6R6S0tL7N27FyEhIejSpQuaNGmCuXPn8pZ7IiIikiiEEKK2O1EX6HQ6WFpaIjs7u8rXE7nM3vXINpc+9n1kGyIiItJX3r/fBruGiIiIiKimMBARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkewxEBEREZHsMRARERGR7DEQERERkezVaiCKjY3FkCFD4ODgAIVCge3bt0t1BQUFmDVrFtq3bw9zc3M4ODhg3LhxSEtL0ztGZmYmAgICoFarYWVlhaCgIOTk5Oi1OXnyJHr27AlTU1M4OjpiwYIFNTE8IiIiqiNqNRDl5uaiY8eOWL58eam627dv488//8ScOXPw559/YuvWrUhKSsJzzz2n1y4gIABnzpxBdHQ0du7cidjYWAQHB0v1Op0O/fv3h7OzMxISEvDpp59i3rx5WLlyZbWPj4iIiOoGhRBC1HYnAEChUGDbtm0YNmzYA9vEx8ejW7duuHz5MpycnHD27Fm4u7sjPj4eXbt2BQBERUVh0KBBuHr1KhwcHLBixQq8/fbb0Gq1UCqVAIDZs2dj+/btOHfuXLn7p9PpYGlpiezsbKjV6sca6/1cZu96ZJtLH/tW6TmJiIjkoLx/v+vUGqLs7GwoFApYWVkBAOLi4mBlZSWFIQDw9vaGkZERjhw5IrXp1auXFIYAwMfHB0lJSbh58+YDz5WXlwed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3XdLXX6TA45dnmMH5D1+jl2eYwfkPf76MHaFeNR9aERERET1nKy+y4yIiIioLAxEREREJHsMRERERCR7DEREREQkewxE1Wj58uVwcXGBqakpPDw8cPTo0dru0mOLjY3FkCFD4ODgAIVCge3bt+vVCyEwd+5c2Nvbw8zMDN7e3rhw4YJem8zMTAQEBECtVsPKygpBQUHIycmpwVFUTnh4OJ566ik0atQItra2GDZsGJKSkvTa3LlzByEhIWjcuDEsLCzg5+dX6gnpqamp8PX1RcOGDWFra4uZM2eisLCwJodSKStWrECHDh2kB695enpi9+7dUn19Hvv9Pv74YygUCkydOlUqq6/jnzdvHhQKhd7WunVrqb6+jrvEtWvX8OKLL6Jx48YwMzND+/btcezYMam+Pv/Oc3FxKfXZKxQKhISEAKiHn72garFx40ahVCrFd999J86cOSMmTpworKysRHp6em137bH88ssv4u233xZbt24VAMS2bdv06j/++GNhaWkptm/fLk6cOCGee+454erqKv777z+pzYABA0THjh3FH3/8IX799VfRokULMXr06BoeScX5+PiIVatWidOnT4vExEQxaNAg4eTkJHJycqQ2r776qnB0dBT79+8Xx44dE927dxdPP/20VF9YWCjatWsnvL29xfHjx8Uvv/wimjRpIsLCwmpjSBWyY8cOsWvXLnH+/HmRlJQk3nrrLWFiYiJOnz4thKjfY7/X0aNHhYuLi+jQoYOYMmWKVF5fx//uu++Ktm3biuvXr0vbjRs3pPr6Om4hhMjMzBTOzs5i/Pjx4siRI+Lvv/8We/bsEcnJyVKb+vw7LyMjQ+9zj46OFgDEgQMHhBD177NnIKom3bp1EyEhIdLroqIi4eDgIMLDw2uxV1Xr/kBUXFwsNBqN+PTTT6WyrKwsoVKpxIYNG4QQQvz1118CgIiPj5fa7N69WygUCnHt2rUa63tVyMjIEADEoUOHhBB3x2piYiI2b94stTl79qwAIOLi4oQQdwOlkZGR0Gq1UpsVK1YItVot8vLyanYAVcDa2lp88803shn7rVu3hJubm4iOjha9e/eWAlF9Hv+7774rOnbsWGZdfR63EELMmjVL9OjR44H1cvudN2XKFNG8eXNRXFxcLz97XjKrBvn5+UhISIC3t7dUZmRkBG9vb8TFxdViz6pXSkoKtFqt3rgtLS3h4eEhjTsuLg5WVlbo2rWr1Mbb2xtGRkY4cuRIjff5cWRnZwMAbGxsAAAJCQkoKCjQG3/r1q3h5OSkN/727dvrPSHdx8cHOp0OZ86cqcHeP56ioiJs3LgRubm58PT0lM3YQ0JC4OvrqzdOoP5/9hcuXICDgwOeeOIJBAQEIDU1FUD9H/eOHTvQtWtXPP/887C1tUXnzp3x9ddfS/Vy+p2Xn5+PtWvX4qWXXoJCoaiXnz0DUTX4559/UFRUVOprQezs7KDVamupV9WvZGwPG7dWq4Wtra1evbGxMWxsbOrUe1NcXIypU6fCy8sL7dq1A3B3bEqlstSXAN8//rLen5I6Q3fq1ClYWFhApVLh1VdfxbZt2+Du7i6LsW/cuBF//vknwsPDS9XV5/F7eHggMjISUVFRWLFiBVJSUtCzZ0/cunWrXo8bAP7++2+sWLECbm5u2LNnD1577TVMnjwZq1evBiCv33nbt29HVlYWxo8fD6B+/szL6qs7iKpKSEgITp8+jd9++622u1KjWrVqhcTERGRnZ+PHH39EYGAgDh06VNvdqnZXrlzBlClTEB0dDVNT09ruTo0aOHCg9N8dOnSAh4cHnJ2dsWnTJpiZmdViz6pfcXExunbtio8++ggA0LlzZ5w+fRoREREIDAys5d7VrG+//RYDBw6Eg4NDbXel2nCGqBo0adIEDRo0KLXaPj09HRqNppZ6Vf1KxvawcWs0GmRkZOjVFxYWIjMzs868N6Ghodi5cycOHDiAZs2aSeUajQb5+fnIysrSa3//+Mt6f0rqDJ1SqUSLFi3QpUsXhIeHo2PHjli8eHG9H3tCQgIyMjLw5JNPwtjYGMbGxjh06BCWLFkCY2Nj2NnZ1evx38vKygotW7ZEcnJyvf/c7e3t4e7urlfWpk0b6ZKhXH7nXb58Gfv27cPLL78sldXHz56BqBoolUp06dIF+/fvl8qKi4uxf/9+eHp61mLPqperqys0Go3euHU6HY4cOSKN29PTE1lZWUhISJDaxMTEoLi4GB4eHjXe54oQQiA0NBTbtm1DTEwMXF1d9eq7dOkCExMTvfEnJSUhNTVVb/ynTp3S+wUZHR0NtVpd6hdvXVBcXIy8vLx6P/Z+/frh1KlTSExMlLauXbsiICBA+u/6PP575eTk4OLFi7C3t6/3n7uXl1epR2ucP38ezs7OAOr/77wSq1atgq2tLXx9faWyevnZ1/aq7vpq48aNQqVSicjISPHXX3+J4OBgYWVlpbfavi66deuWOH78uDh+/LgAIBYuXCiOHz8uLl++LIS4ewuqlZWV+Omnn8TJkyfF0KFDy7wFtXPnzuLIkSPit99+E25ubnXiFtTXXntNWFpaioMHD+rdinr79m2pzauvviqcnJxETEyMOHbsmPD09BSenp5SfcltqP379xeJiYkiKipKNG3a1GBvQ73X7NmzxaFDh0RKSoo4efKkmD17tlAoFGLv3r1CiPo99rLce5eZEPV3/DNmzBAHDx4UKSkp4vDhw8Lb21s0adJEZGRkCCHq77iFuPuIBWNjY/Hhhx+KCxcuiHXr1omGDRuKtWvXSm3q8+88Ie7eIe3k5CRmzZpVqq6+ffYMRNVo6dKlwsnJSSiVStGtWzfxxx9/1HaXHtuBAwcEgFJbYGCgEOLubahz5swRdnZ2QqVSiX79+omkpCS9Y/z7779i9OjRwsLCQqjVajFhwgRx69atWhhNxZQ1bgBi1apVUpv//vtPvP7668La2lo0bNhQDB8+XFy/fl3vOJcuXRIDBw4UZmZmokmTJmLGjBmioKCghkdTcS+99JJwdnYWSqVSNG3aVPTr108KQ0LU77GX5f5AVF/HP2rUKGFvby+USqX43//+J0aNGqX3HJ76Ou4SP//8s2jXrp1QqVSidevWYuXKlXr19fl3nhBC7NmzRwAoNSYh6t9nrxBCiFqZmiIiIiIyEFxDRERERLLHQERERESyx0BEREREssdARERERLLHQERERESyx0BEREREssdARERERLLHQEREtUqhUGD79u1Vcqx58+ahU6dOVXKs6vDMM89g6tSptd0NIioDAxERVRutVotJkybhiSeegEqlgqOjI4YMGaL3/UdV6Y033qi2Y99r3rx5UCgUUCgUMDY2houLC6ZNm4acnJyH7rd161a8//771d4/Iqo449ruABHVT5cuXYKXlxesrKzw6aefon379igoKMCePXsQEhKCc+fOVfk5LSwsYGFhUeXHLUvbtm2xb98+FBYW4vDhw3jppZdw+/ZtfPXVV6Xa5ufnQ6lUwsbGpkb6RkQVxxkiIqoWr7/+OhQKBY4ePQo/Pz+0bNkSbdu2xfTp0/HHH388cL9Tp06hb9++MDMzQ+PGjREcHKw383Lw4EF069YN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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Plot the histogram of closing prices\n",
+ "plt.hist(df['Close'], bins=50)\n",
+ "plt.xlabel('Closing Price')\n",
+ "plt.ylabel('Frequency')\n",
+ "plt.title('Distribution of SBIN Closing Prices')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "A moving average chart is a type of chart that shows the average value of a stock's price over a certain period of time. It is used to smooth out the fluctuations in the price and to identify trends."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAHHCAYAAACiOWx7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC7xUlEQVR4nOzdd3hUVfrA8e+dnt5IgwQSegfpkaaAFLGzKgqKiroqsD911RV1UexrXVHsKFZQ1wqigChFikBUpHcILQmk92n398educmkQAIpJLyf58njzK3nJpF5c8573qOoqqoihBBCCCFOytDQDRBCCCGEaAwkaBJCCCGEqAYJmoQQQgghqkGCJiGEEEKIapCgSQghhBCiGiRoEkIIIYSoBgmahBBCCCGqQYImIYQQQohqkKBJCCGEEKIaJGgS4ix3wQUX0LVr1wa7f0JCAjfddFOD3b8mFEXhscceq/axU6dOrdsG1YMLLriACy64oKGbIcQ5QYImUec2b97M3/72N1q1aoXNZqNFixZcdNFFvPrqqz7HJSQkoCiK/mWz2WjXrh33338/mZmZPsc+9thjKIrCiRMn9G033XQTiqLQvXt3KlsdqLofkna7nVdeeYXzzjuP4OBgQkND6dKlC7fffjs7duzQj1uzZg2PPfYY2dnZNfyO1B/v98T7FRwcTI8ePXjxxRcpKSlp6ObVubr6GR04cED/nj755JOVHjNhwgQURSEwMLBW7302crlcNG/eHEVR+OGHHxq6OULUGVNDN0A0bWvWrOHCCy+kZcuW3HbbbcTExHDo0CHWrVvHK6+8wrRp03yO79mzJ//85z8BKC4uJjk5mf/+97+sWLGC9evXV+uemzdv5quvvmLcuHGn1eZx48bxww8/cN1113HbbbfhcDjYsWMHCxcu5Pzzz6djx476s82cOZObbrqJ0NDQ07pXfbBarbz77rsAZGdn8+WXX3LfffexYcMG5s+ff8rzd+7cicHQOP6+KioqwmQq/Wetrn9GNpuNefPm8cgjj/hsLygo4Ntvv8Vms9X6PctbsmRJnd/jVH7++WeOHTtGQkICn3zyCWPGjGnoJglRJyRoEnXqqaeeIiQkhA0bNlT40EpPT69wfIsWLZg4caL+/tZbbyUwMJAXXniB3bt3065du5Pez8/Pj/j4eB5//HGuuuoqFEWpUXs3bNjAwoULeeqpp3jooYd89r322mtnda9SVUwmk8/39K677qJ///589tlnvPTSSzRv3rzCOaqqUlxcjJ+fH1artT6be0bqI0gp6+KLL+arr75i06ZN9OjRQ9/+7bffYrfbGT16ND///HOdtsFisdTp9avj448/plevXkyaNImHHnqIgoICAgIC6rUNDXFPce5pHH8+ikZr7969dOnSpdK/8qOioqp1jZiYGACfHoSqGAwGHnnkEf766y++/vrrGrUVtPYCDBw4sMI+o9FIREQEoA0P3n///QAkJibqQzUHDhwAwOl08sQTT9CmTRusVisJCQk89NBDlQ6J/fDDDwwdOpSgoCCCg4Pp27cvn3766UnbuWTJEvz9/bnuuutwOp01ekaDwaDnwHjbm5CQwCWXXMLixYvp06cPfn5+vPXWW/q+8jlN2dnZ3HPPPSQkJGC1WomLi+PGG2/0GS4tKSnh0UcfpW3btlitVuLj43nggQdOOSw4a9YsjEajT4D64osvoigK9957r77N5XIRFBTEv/71L31b2ZymU/2MvL755hu6du2K1WqlS5cu/Pjjj6f6FuqSkpJITEys8PP65JNPGD16NOHh4ZWe9/rrr9OlSxesVivNmzdnypQpPs87depUAgMDKSwsrHDuddddR0xMDC6XC6iY07R8+XIUReHzzz/nqaeeIi4uDpvNxvDhw9mzZ0+F682ePZvWrVvj5+dHv379WLVqVY3ypIqKivj6668ZP34811xzDUVFRXz77bf6/hdeeAFFUTh48GCFc6dPn47FYiErK0vf9ttvvzF69GhCQkLw9/dn6NChrF692uc87/D8tm3buP766wkLC2PQoEEA/PXXX9x00020bt0am81GTEwMt9xyCxkZGRXuv3z5cvr06YPNZqNNmza89dZb+rXL+/jjj+nduzd+fn6Eh4czfvx4Dh065HPM7t27GTduHDExMdhsNuLi4hg/fjw5OTnV+l6Ks58ETaJOtWrViuTkZLZs2VKt4x0OBydOnODEiRMcPnyYBQsW8NJLLzFkyBASExOrdY3rr7+edu3a8fjjj1ea23Sq9oL2oXeyYOSqq67iuuuuA+Dll1/mo48+4qOPPiIyMhLQeshmzJhBr169ePnllxk6dCjPPPMM48eP97nO3LlzGTt2LJmZmUyfPp1nn32Wnj17nvSDe+HChVx22WVcffXVfPzxx9UKJsvzBofeIBC0YbjrrruOiy66iFdeeYWePXtWem5+fj6DBw/m1VdfZeTIkbzyyivccccd7Nixg8OHDwPgdru57LLLeOGFF7j00kt59dVXueKKK3j55Ze59tprT9q2wYMH43a7+fXXX/Vtq1atwmAwsGrVKn3bH3/8QX5+PkOGDKn0Oqf6GQH8+uuv3HXXXYwfP57nnnuO4uJixo0bV+kHbFWuu+465s+fr/+unThxgiVLlnD99ddXevxjjz3GlClTaN68OS+++CLjxo3jrbfeYuTIkTgcDgCuvfZaCgoK+P77733OLSwsZMGCBfztb3/DaDSetF3PPvssX3/9Nffddx/Tp09n3bp1TJgwweeYN954g6lTpxIXF8dzzz3H4MGDueKKK/SfY3V899135OfnM378eGJiYrjgggv45JNP9P3XXHONHsSV9/nnnzNy5EjCwsIAbZhvyJAh5Obm8uijj/L000+TnZ3NsGHDKh2ev/rqqyksLOTpp5/mtttuA2Dp0qXs27ePm2++mVdffZXx48czf/58Lr74Yp9/D/744w9Gjx5NRkYGM2fOZPLkyTz++ON88803Fe7z1FNPceONN9KuXTteeukl7r77bpYtW8aQIUP0YNdutzNq1CjWrVvHtGnTmD17Nrfffjv79u1rlD3UogqqEHVoyZIlqtFoVI1Go5qUlKQ+8MAD6uLFi1W73V7h2FatWqlAha+BAweqJ06c8Dn20UcfVQH1+PHj+rZJkyapAQEBqqqq6gcffKAC6ldffaXvB9QpU6actL1ut1sdOnSoCqjR0dHqddddp86ePVs9ePBghWOff/55FVD379/vs/3PP/9UAfXWW2/12X7fffepgPrzzz+rqqqq2dnZalBQkNq/f3+1qKioQju8hg4dqnbp0kVVVVX98ssvVbPZrN52222qy+U66bOoaun35Pjx4+rx48fVPXv2qE8//bSqKIravXt3/Tjv9/7HH3+scI1WrVqpkyZN0t/PmDGjwve2fLs/+ugj1WAwqKtWrfLZ/+abb6qAunr16irb7HK51ODgYPWBBx7QrxkREaFeffXVqtFoVPPy8lRVVdWXXnpJNRgMalZWln4uoD766KP6+6p+Rt5jLRaLumfPHn3bpk2bVEB99dVXq2yfqqrq/v37VUB9/vnn1S1btqiA/qyzZ89WAwMD1YKCAp/fSVVV1fT0dNVisagjR470+fm99tprKqC+9957+jO3aNFCHTdunM99P//8cxVQV65cqW8bOnSoOnToUP39L7/8ogJqp06d1JKSEn37K6+8ogLq5s2bVVVV1ZKSEjUiIkLt27ev6nA49OPmzp2rAj7XPJlLLrlEHThwoP7+7bffVk0mk5qenq5vS0pKUnv37u1z3vr161VA/fDDD/VnbteunTpq1Cif3//CwkI1MTFRveiii/Rt3v//r7vuugrtKSwsrLBt3rx5Fb5vl156qerv768eOXJE37Z7927VZDKpZT8aDxw4oBqNRvWpp57yuebmzZtVk8mkb//jjz9UQP3iiy+q+E6JpkB6mkSduuiii1i7di2XXXYZmzZt4rnnnmPUqFG0aNGC7777rsLx/fv3Z+nSpSxdulTPLdq6dSuXXXYZRUVF1b7vhAkTTqu3SVEUFi9ezJNPPklYWBjz5s1jypQptGrVimuvvbZafzEuWrQIwGcoCdAT3L29B0uXLiUvL48HH3ywQi5OZcMD8+bN49prr+Xvf/87b731VrWTswsKCoiMjCQyMpK2bdvy0EMPkZSUVGH4MjExkVGjRp3yel9++SU9evTgyiuvrLDP2+4vvviCTp060bFjR73n8MSJEwwbNgyAX375pcrrGwwGzj//fFauXAnA9u3bycjI4MEHH0RVVdauXQtovU9du3Y9owTvESNG0KZNG/199+7dCQ4OZt++fdW+RpcuXejevTvz5s0D4NNPP+Xyyy/H39+/wrE//fQTdrudu+++2+fnd9tttxEcHKz/biiKwtVXX82iRYvIz8/Xj/vss89o0aKFPhR1MjfffLNPvtPgwYMB9GfbuHEjGRkZ3HbbbT69lRMmTNB7fk4lIyODxYsX6z16oE2kKN+zdO2115KcnKz3cHqfxWq1cvnllwPw559/snv3bq6//noyMjL035mCggKGDx/OypUrcbvdPve/4447KrTJz89Pf11cXMyJEycYMGAAAL///jugDe3+9NNPXHHFFT45fW3btq2QxP7VV1/hdru55pprfH6XY2JiaNeunf67HBISAsDixYsrHVYVTYMETaLO9e3bl6+++oqsrCzWr1/P9OnTycvL429/+xvbtm3zObZZs2aMGDGCESNGMHbsWB566CHeffdd1qxZo88Aqw6j0cgjjzzCn3/+WWl3+8lYrVYefvhhtm/fztGjR5k3bx4DBgzg888/r1bJgoMHD2IwGGjbtq3P9piYGEJDQ/XcDu8HSHVqMO3fv5+JEycybtw4Xn311RoluNtsNj0QXblyJYcOHWL16tW0bt3a57jqDn/u3bv3lG3evXs3W7du1YM171f79u2ByicBlDV48GCSk5MpKipi1apVxMbG0qtXL3r06KEP0f366696IHC6WrZsWWFbWFiYT45NdVx//fV88cUX7NmzhzVr1lQ5NOf92Xfo0MFnu8VioXXr1j55P9deey1FRUX6Hxf5+fksWrSIq6++ulo///LP5g2EvM/mvVf531OTyURCQsIprw9a4ONwODjvvPPYs2cPe/bsITMzk/79+/sM0V199dUYDAY+++wzQJto8MUXXzBmzBiCg4MB7XcGYNKkSRV+b959911KSkoq5AZV9jubmZnJ//3f/xEdHY2fnx+RkZH6cd7z09PTKSoqqvDslX0/du/ejaqqtGvXrkK7tm/frv8uJyYmcu+99/Luu+/SrFkzRo0axezZsyWfqYmR2XOi3lgsFvr27Uvfvn1p3749N998M1988QWPPvroSc8bPnw4ACtXrqxQouBkJkyYwBNPPMHjjz/OFVdccVptjo2NZfz48YwbN44uXbrw+eefM3fu3GrlEdV05t6p2hEbG8uiRYvYuHEjffr0qfa5RqORESNGnPK4sn+hnym32023bt146aWXKt0fHx9/0vMHDRqEw+Fg7dq1rFq1Sg+OBg8ezKpVq9ixYwfHjx8/46CpqrygmvROgpbXNH36dG677TYiIiIYOXLkGbULYMCAASQkJPD5559z/fXXs2DBAoqKik6ZE+ZVW892Mt7AqLKJE6D1arVu3ZrmzZszePBgPv/8cx566CHWrVtHSkoK//nPf/Rjvb1Izz//fJX5dOVrXlX2O3vNNdewZs0a7r//fnr27ElgYCBut5vRo0dX6KmqDrfbrdefqux7WrZNL774IjfddBPffvstS5Ys4R//+AfPPPMM69atIy4ursb3FmcfCZpEg/B+6B87duyUx3oTsssOU1SHt7fJ+4/YmTCbzXTv3p3du3frXfNVBUWtWrXC7Xaze/duOnXqpG9PS0sjOztbTzb3Dgtt2bKl0r94y7LZbCxcuJBhw4YxevRoVqxYQZcuXc7omU5XmzZtTpnY36ZNGzZt2sTw4cNPK3js168fFouFVatWsWrVKn0W3JAhQ3jnnXdYtmyZ/v5kajNwPZmWLVsycOBAli9fzp133lllUO392e/cudOnp89ut7N///4Kwe0111zDK6+8Qm5uLp999hkJCQn6UNOZ8rZlz549XHjhhfp2p9PJgQMH6N69+0nP379/P2vWrGHq1KkMHTrUZ5/b7eaGG27g008/1WtYXXvttdx1113s3LmTzz77DH9/fy699FL9HO//D8HBwdUK8iuTlZXFsmXLmDlzJjNmzNC3e3uxvKKiorDZbJXOJiy/rU2bNqiqSmJiot5TejLdunWjW7duPPLII6xZs4aBAwfy5ptvVlkEVTQuMjwn6tQvv/xS6V+23ryf8sMUlVmwYAGATx2c6po4cSJt27Zl5syZ1Tp+9+7dpKSkVNienZ3N2rVrCQsL02dfeWvClM9zuvjiiwH473//67Pd2+syduxYAEaOHElQUBDPPPMMxcXFPsdW9j0LCQlh8eLFREVFcdFFF/nkh9SncePGsWnTpkpLOnjbfc0113DkyBHeeeedCscUFRVRUFBw0nvYbDb69u3LvHnzSElJ8elpKioqYtasWbRp04bY2NiTXqeqn1FdePLJJ3n00UdP2hs6YsQILBYLs2bN8vkZz5kzh5ycHP13w+vaa6+lpKSEDz74gB9//JFrrrmm1trbp08fIiIieOedd3xmin7yySfVGp709jI98MAD/O1vf/P5uuaaaxg6dKjPEN24ceMwGo3MmzePL774gksuucSnrlLv3r1p06YNL7zwQqV/IB0/fvyUbfL2BJX//6f8/4ve3tdvvvmGo0eP6tv37NlToaL5VVddhdFoZObMmRWuq6qqPtMyNze3wozbbt26YTAYzonq++cK6WkSdWratGkUFhZy5ZVX0rFjR+x2O2vWrNH/ar755pt9jj9y5Agff/wxoP31vWnTJt566y2aNWtWo6E5L6PRyMMPP1zhPlXZtGkT119/PWPGjGHw4MGEh4dz5MgRPvjgA44ePcp///tf/R/m3r17A/Dwww8zfvx4zGYzl156KT169GDSpEm8/fbbZGdnM3ToUNavX88HH3zAFVdcof9VHxwczMsvv8ytt95K37599XozmzZtorCwkA8++KBC+5o1a8bSpUsZNGgQI0aM4Ndff6VFixY1/r6cifvvv5///e9/XH311dxyyy307t2bzMxMvvvuO958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V199RcuWLTnvvPMqHJ+fn89nn33GnXfeydixY5k7d2617mO1Wn0qu4eFhen7tm/fzo8//si7775L//79GTRoEK+++irz58+vdlAmhBCicVKbWCK4BE01papgL2iYr7K/fdV0yy238P777+vv33vvPW6++eZKj/3888/p2LEjHTp0YOLEibz33ns+00Wrsnz5cqKioujQoQN33nknGRkZ+r61a9cSGhpKnz599G0jRozAYDDw22+/1fh5hBBCNB7uJlZyQJJ/aspRCE/XfQHOSj10FCwBNTpl4sSJTJ8+nYMHDwKwevVq5s+fz/LlyyscO2fOHCZOnAhoQ245OTmsWLGCCy64oMrrjx49mquuuorExET27t3LQw89xJgxY/TcqNTUVKKionzOMZlMhIeHn7RquxBCiMav7J/dEjSJs15kZKQ+1KaqKmPHjqVZs2YVjtu5cyfr16/n66+/BrTA5tprr2XOnDknDZrGjx+vv+7WrRvdu3enTZs2LF++nOHDh9f68wghhGg8VHfp66aQCC5BU02Z/bUen4a692m45ZZbmDp1KgCzZ8+u9Jg5c+bgdDp9lrFRVRWr1cprr71GSEhIte7VunVrmjVrxp49exg+fDgxMTE+xUcBnE4nmZmZJ63aLoQQovHzSQRvwHbUFgmaakpRajxE1tBGjx6N3W5HURRGjRpVYb/T6eTDDz/kxRdfZOTIkT77rrjiCubNm1dp6YLKHD58mIyMDGJjYwGtant2djbJycn07t0bgJ9//hm3203//v3P8MmEEEKczXwSwaWnSTQGRqOR7du366/LW7hwIVlZWUyePLlCj9K4ceOYM2dOpUFTfn4+M2fOZNy4ccTExLB3714eeOAB2rZtqwdnnTp1YvTo0dx22228+eabOBwOpk6dyvjx4+tlcWYhhBANp2wiuKHxx0wye+5cERwcTHBwcKX75syZw4gRIyodghs3bhwbN27kr7/+qrDPaDTy119/cdlll9G+fXsmT55M7969WbVqlc8yNp988gkdO3Zk+PDhXHzxxQwaNIi333679h5OCCHEWck3EbzxR02KWp055U1cbm4uISEh5OTkVAgsiouL2b9/P4mJidhstgZqoShPfi5CCHH2O55XQt+nfkJRYP8z1VtpoiZO9vldF6SnSQghhBB1wtsv0/j7mDQSNAkhhBCiTniHsprC0BxI0CSEEEKIOpBf4sTp1sKmppAEDjJ7TgghhBC17Eh2EQOf/Zn4cD+gaaw7B9LTJIQQQoha9u2fRwA4lFkENI0lVECCJiGEEELUsvLz8kuc7soPbGQkaBJCCCFErWqq1YwkaBJCCCFErXI3zZhJgiYhhBBC1K4m2tEkQZMQQgghateBjIKGbkKdkKCpibrppptQFKXShXanTJmCoijcdNNNFfatXbsWo9HI2LGnLnfvcDj417/+Rbdu3QgICKB58+bceOONHD161Oe4zMxMJkyYQHBwMKGhoUyePJn8/HyfY/766y8GDx6MzWYjPj6e5557rmYPLIQQ4qyRVWhv6CbUCQmamrD4+Hjmz59PUVGRvq24uJhPP/2Uli1bVnrOnDlzmDZtGitXrqwQ/JRXWFjI77//zr///W9+//13vvrqK3bu3Mlll13mc9yECRPYunUrS5cuZeHChaxcuZLbb79d35+bm8vIkSNp1aoVycnJPP/88zz22GOyqK8QQjRS5Yfn+iWEN0xDapkUt2zCevXqxd69e/nqq6+YMGECAF999RUtW7YkMTGxwvH5+fl89tlnbNy4kdTUVObOnctDDz1U5fVDQkJYunSpz7bXXnuNfv36kZKSQsuWLdm+fTs//vgjGzZsoE+fPgC8+uqrXHzxxbzwwgs0b96cTz75BLvdznvvvYfFYqFLly78+eefvPTSSz7BlRBCiMbBz2z0eW93ScmBc5KqqhQ6Chvk63SmcN5yyy28//77+vv33nuPm2++udJjP//8czp27EiHDh2YOHEi7733Xo3vmZOTg6IohIaGAtpwX2hoqB4wAYwYMQKDwcBvv/2mHzNkyBAsFot+zKhRo9i5cydZWVk1ur8QQoiGd1HnaP31BONPjClaCIWZDdii2iE9TTVU5Cyi/6f9G+Tev13/G/5m/xqdM3HiRKZPn87BgwcBWL16NfPnz2f58uUVjp0zZw4TJ04EYPTo0eTk5LBixQouuOCCat2ruLiYf/3rX1x33XUEBwcDkJqaSlRUlM9xJpOJ8PBwUlNT9WPK93xFR0fr+8LCwqr9vEIIIRpe2T+3HzDNJyS/EApvAf/GPUwnQVMTFxkZydixY5k7dy6qqjJ27FiaNWtW4bidO3eyfv16vv76a0ALbK699lrmzJlTraDJ4XBwzTXXoKoqb7zxRm0/hhBCiEbEXaZQkx8l2osa/tF/NpKgqYb8TH78dv1vDXbv03HLLbcwdepUAGbPnl3pMXPmzMHpdNK8eXN9m6qqWK1WXnvtNUJCQqq8vjdgOnjwID///LPeywQQExNDenq6z/FOp5PMzExiYmL0Y9LS0nyO8b73HiOEEKJ+qaqKcpqLxrk8qR1W7FgUl7bRGlhbTWswEjTVkKIoNR4ia2ijR4/GbrejKAqjRo2qsN/pdPLhhx/y4osvMnLkSJ99V1xxBfPmzau0dAGUBky7d+/ml19+ISIiwmd/UlIS2dnZJCcn07t3bwB+/vln3G43/fv31495+OGHcTgcmM1mAJYuXUqHDh1kaE4IIRpAkd3F6FdW0jM+lFfGn1fj812enqZgtHpNLlXBaAmq1TY2BEkEPwcYjUa2b9/Otm3bMBqNFfYvXLiQrKwsJk+eTNeuXX2+xo0bx5w5cyq9rsPh4G9/+xsbN27kk08+weVykZqaSmpqKna7VqOjU6dOjB49mttuu43169ezevVqpk6dyvjx4/Vereuvvx6LxcLkyZPZunUrn332Ga+88gr33ntv3X1ThBBCVGnp9jQOZhTy7Z8nLz1TFW/QFKpoQVMugWBo/CFH438CUS3BwcE+w2ZlzZkzhxEjRlQ6BDdu3Dg2btzIX3/9VWHfkSNH+O677zh8+DA9e/YkNjZW/1qzZo1+3CeffELHjh0ZPnw4F198MYMGDfKpwRQSEsKSJUvYv38/vXv35p///CczZsyQcgNCCNFAqjtz2u1W+WjtAbYfy/XZ7vQETSFohYzzlIDabWADkeG5Jmru3Lkn3f/NN9/orxcsWFDlcf369avyf56EhIRq/Y8VHh7Op59+etJjunfvzqpVq055LSGEEHXPVc0Vdz9ad5BHv9sKwIFnS1eScHjqMoV4epqy3P5UXlK5cZGeJiGEEELocooc3Pv5pmod6w2YynM4taApTNF6mnLUptHTJEGTEEIIIXRj/rvS531abnGNr/HHoWwAmpMBwDE14iRHNx4SNAkhhBBCdzTHN0jq//SyGl/j5x1aqZkWygkADqsV6wM2RhI0CSGEEKJOxCpaT9NRCZrOLaez7puoO/LzEEKIs1fvVlqNveaeoCkgqimkgZ8FQdORI0eYOHEiERER+Pn50a1bNzZu3KjvV1WVGTNmEBsbi5+fHyNGjGD37t0+18jMzGTChAkEBwcTGhrK5MmTyc/Pr5X2eesaeesOibNDYWEhgF4MUwghRO0LIZ8hhk1k5pfU6LwiuwtQ9aAp0xh18hMaiQYtOZCVlcXAgQO58MIL+eGHH4iMjGT37t0+VaCfe+45Zs2axQcffEBiYiL//ve/GTVqFNu2bcNmswEwYcIEjh07xtKlS3E4HNx8883cfvvtp5zmXh0mkwl/f3+OHz+O2WzG0ASKczVmqqpSWFhIeno6oaGhlRbrFEIIUTteNL/BCOMfFHy/H659p8L+ED8zOUUOACbP3UBKZiHfTR2EW1UJoQB/RQu2wmITK5zbGClqA45zPPjgg6xevbrK+jyqqtK8eXP++c9/ct999wGQk5NDdHQ0c+fOZfz48Wzfvp3OnTuzYcMG+vTpA8CPP/7IxRdfzOHDh33WUqtKbm4uISEh5OTkVFoA0m63s3//ftxu9xk8rahNoaGhxMTEnPa6SEIIISqX8OD3AARSyBbbrQCoKCiPZVd5bFlXnteCLUdyMB3fyg/W6RSYQnHdt4dgW+2PDJzq87u2NWhP03fffceoUaO4+uqrWbFiBS1atOCuu+7itttuA2D//v2kpqYyYsQI/ZyQkBD69+/P2rVrGT9+PGvXriU0NFQPmABGjBiBwWDgt99+48orr6xw35KSEkpKSrsac3NzKxxTlsVioV27djJEd5Ywm83SwySEEHWsvXJYf21XjVired7XfxyhdWQA8d58pshWUAcBU0No0KBp3759vPHGG9x777089NBDbNiwgX/84x9YLBYmTZpEamoqANHR0T7nRUdH6/tSU1OJivIdKzWZTISHh+vHlPfMM88wc+bMGrXVYDDow4FCCCFEU5eglH6GWhUnOIrBXL3PQbe7NJ+J4Li6aF6DaNCgye1206dPH55++mkAzjvvPLZs2cKbb77JpEmT6uy+06dP91kMNjc3l/j4+Dq7nxBCCNHYtDKk+W7IT4OwVgB8sOYAwX5VhxAutTRoUoOb01QSKRo0qzk2NpbOnTv7bOvUqRMpKSkAxMTEAJCW5vuDS0tL0/fFxMSQnp7us9/pdJKZmakfU57VatUXsD3ZQrZCCCHEuSrOU5hSl699Fh/LKeLR77Zyz2dVL7XidpfWaLoy5zcu/fpSdmburLO21pcGDZoGDhzIzp2+38Rdu3bRqpUWySYmJhITE8OyZaXVSHNzc/ntt99ISkoCICkpiezsbJKTk/Vjfv75Z9xuN/3796+HpxBCCCGanmbk+G7wBE3FjlNPinJ5hudKFDjgyOFA7gFCrCF10cx61aDDc/fccw/nn38+Tz/9NNdccw3r16/n7bff5u233wZAURTuvvtunnzySdq1a6eXHGjevDlXXHEFoPVMjR49mttuu40333wTh8PB1KlTGT9+fLVmzgkhhBCiomaKFjSVqGasigPytByn8kNtkWThwEQ2Qfo2t6oSSwbbLBZcqETYIoj2j6axa9CgqW/fvnz99ddMnz6dxx9/nMTERP773/8yYcIE/ZgHHniAgoICbr/9drKzsxk0aBA//vijT1L2J598wtSpUxk+fDgGg4Fx48Yxa9ashngkIYQQolHz1l6KULSZ5dvUVpyn7NF7mlLLLOAbQQ4rrfdQjIWN7vacZ9jDJPuDpLvbEqNk8qMtAIBe0b2aRImYBg2aAC655BIuueSSKvcrisLjjz/O448/XuUx4eHhtVLIUgghhDjXud0qCm4i8ARN7lacZ9ij9zSNf3udfmxvwy78FDt+2LnI+DsAt5kW8lTBBCw2Fxv8tA6OvjF96/kp6kaDB01CCCGEOHs43Vo1b7PiAmC76lk3Lj+dEqfL59iuhv0Vzh9jWM8WYyIO4E+bVt2pb3TTCJpkTRAhhBBCANpKHEUOl57PlK0GcERtpu3MTyWrwOFz/HnKHgCOqyG84rwSh2rEqjh5xPwJm61WihWFcFs4bULb1Otz1BXpaRJCCCEEACt2HQcg0hM0nVBDOK56Zr3lpZFZULoyRjD5JBm2AXCNfQb71VgiyeF6088A/Oan9TL1ie7TJPKZQHqahBBCCOGxfKcWNHnLDZwghHQ1TNtZkM6zi7box/Yz7MSkuNnrjmW/GgvAv50386LjbwBs8EzY6hfTr76aX+ekp0kIIYQQfJl8mLlrDgAQo2QCkKqGkYGnALTqJjszHdDWketn2AHAw5HhBAY+jCP3PEqOXcWrrqswGYr5w/qXdlxs0wmapKdJCCGEEPzzi9IK394lUI6pEbgwkqtoNZhCXNn6Mf0M29lpNrM1OA/F4MISuhH/hNcx2A4xy9wfpwEibM1ICE6oz8eoUxI0CSGEEOe4tDK1l6B0CZXOHbWlzrIULa8pzFOGwIyTrsoBvgsK0M9RXVaMfofxT3gDa/T3APSMbDr5TCBBkxBCCHHOszt9l0ZprRwFIKZ1VwByPEN0Y1trWT3RSiZbbCa+DAoEoPDQjRTsvQ9HXicUxY3Rpp0/PP6ieml/fZGgSQghhDjHqWrpaxNOWhnSASgJaQ1oCeEARw5pdZmiDEe4KzqKAoMBZ2ECrvwOqK4gio+Mx1UcA4CzoDVD4obU41PUPUkEF0IIIc5xKqVRU0slHRMuMPvjCIgFDrLZHsswEwRm7wQuoCRiI3lGAy1KDOxIuQUwei5kpXD/VIx+h3EVxWE1mRviceqM9DQJIYQQ5zh3mZ6meEUrO0B4awwGLUzY6Y4DoLXhGBgKSQ07AMDgjAhQLeWuZsJVlACYsJmNddru+iZBkxBCCHGOc7lLc5qilCztRVAsBk8Sd7oaCmgL9JqDN2M3uGhrtxNUEFffTW1QMjwnhBBCnOMcrtKupmi8QVOMHjRleHKaIpRcTMGbAbgkv4C9ajMm9G+Jn9nImG4xjHtjrX6dqCBrPbW+/kjQJIQQQpzjih2lC/FGl+lp8lYLyFC12XNOYwlG/30AjCwo4t9qOIOaBXDr4NYVrvnd1EF12+gGIEGTEEIIcY4rdpQOz5UGTdH6tlz8satGfg6woShuOthdxDudHFMj6NoipNJrxoTY6rTNDUGCJiGEEOIc53BVFjQ150h2kWerQgYhLPXXErtH5+cB8I8rL2BA64h6bGnDkkRwIYQQ4hznKjN9zrvuHMGxlK3lfUAJ4jc/rffoooJCsAQxtm/Hemxlw5OgSQghhDjHeXuaTDiJJEfbGNTcZwmUH4JsuBSFliXQyumEuD7QhJZIqQ4JmoQQQohznNPT0xRJDgZFxa2YICCyTE+Tm59D7ADcnKct5ktM1wrXeX1CLwBevrZHHbe4YUhOkxBCCHEOW/jXUV5csgsoHZortjXD32DQO5KM/vvJMbsIdLu5JL9Q2xjepsK1Lu4Wy64nx2AxNc0+mab5VEIIIYQA4N1V+0h48Hvmr0+pdP/UT/9g/4kCoDQJvNgW7XOMOeR3AEYVFGLzLlQXUTFoAppswAQSNAkhhBBN2pPfbwfgwa82n/LYDsohAIr9tKBJUUAxZ2AK/hOAy/PySw+OaFe7DW0EJGgSQgghBIEUco/5SwDyg7WAqH2MP37NP0cxuAgqiOa8Ei2vyW0OgKCYBmtrQ5GgSQghhBBcYNikvz6UcCUAmzJWY/Q/iOqyEJh2gb7fFdbmnJs5BxI0CSGEEE2KqqpkFtirdWyJs3T5lNbKMQDmOy9g6RFt3bjVR1cB4MjuR25JS/1Yd3z/2mpuoyJBkxBCCNGETHp/A72eWMqCTUdPeezutNIcpVaGVAAOqjFkFthRVZU1R1cD4MzvSBphJLvbcVQNxzVgWt00/iwnJQeEEEKIJmTlruMATJv3B0PaR5702LIjbHHKCQAOq81wulUO5R0iozgD1W3CVZgAGBhnnwnAjtC4umj6WU96moQQQogmKr/EedL9gdbSvpMwtPXkThBCi1A/tpzYAoC7JJbyfSw2s7F2G9pISNAkhBBCNFEmw8mTtZ1l1pwLU7Shumw1kGaBVrZmbAXggoReddfARkaCJiGEEKKJOtUEt9KFelVC0YKmLDUQowE2n9DqOvVv3jSXRDkdEjQJIYQQTYSqlvYctQz3B7Xi/pwih/7eGzQFUYRZ0WbSZRHExd2b6cNz3SN71m2jGxEJmoQQQogmYp9nORQAgwLuckHThS8sp8fMJfyyMx2Avw5nAxCqaPlMhaqVvw/vQo77AA63g3BbOPGB8T7X8Lecm/lMIEGTEEII0WQU2V0+7/+XfMjn/YEMbbHdm9/fAMDH67T16MI8Q3NOayj3XtSedUfXAdArqhd+Ft8k8FA/c+03vJGQoEkIIYRoIsomdqvAC0t2nfT4uDA/AMI9PU3moGaoqsqPB34E4MKWFxJgNfHmxN76Oco5WAncS4ImIYQQoolwud3664OeXqWTOb9NBICeBO4X3Izd2bvZl7MPs8HMhfEXAjC6a+k6c3nFjooXOkdI0CSEEEI0EU6XeuqDynB4jg/z9DThH8HiA4sBGNRiEEGWoArn5BafvPZTU9agQdNjjz2Goig+Xx07dtT3FxcXM2XKFCIiIggMDGTcuHGkpaX5XCMlJYWxY8fi7+9PVFQU999/P07nufsDFUIIce5yls/8PgXv7LmkGM+Qm384P6f8DMBFrS6q1bY1BQ2+jEqXLl346aef9PcmU2mT7rnnHr7//nu++OILQkJCmDp1KldddRWrV2tr4bhcLsaOHUtMTAxr1qzh2LFj3HjjjZjNZp5++ul6fxYhhBCiIZ0saFJwo6IASoXjA925ABwym9lzYg9GxciQuCGVXmdMmaG6c02DB00mk4mYmIo/gJycHObMmcOnn37KsGHDAHj//ffp1KkT69atY8CAASxZsoRt27bx008/ER0dTc+ePXniiSf417/+xWOPPYbFYqnvxxFCCCEajNPlrnS7gpst1skEKCW85Pgbs1xXAaU5UN6g6WdnFgB9ovsQYg3xucant/Xni42H+fclneuq+We9Bs9p2r17N82bN6d169ZMmDCBlBRt+mNycjIOh4MRI0box3bs2JGWLVuydu1aANauXUu3bt2Ijo7Wjxk1ahS5ubls3bq1ynuWlJSQm5vr8yWEEEI0dq4qepq+sjxGgFICwL3m/9FB0T5rvT1NAa4cAH4pPAxos+bKO79NM16+tifhAeduh0SDBk39+/dn7ty5/Pjjj7zxxhvs37+fwYMHk5eXR2pqKhaLhdDQUJ9zoqOjSU1NBSA1NdUnYPLu9+6ryjPPPENISIj+FR8fX+WxQgghRGPx1+GcCtuCKOQ8wx6fbaMNWp0mb+J4oDOLgyYTfxRodZ28s+aErwYNmsaMGcPVV19N9+7dGTVqFIsWLSI7O5vPP/+8Tu87ffp0cnJy9K9Dhw6d+iQhhBDiLPfaL3sqbEtUjumvZzgmAdDPsAMok9PkzOL9kGDcqAxqMYjmgc3robWNT4MPz5UVGhpK+/bt2bNnDzExMdjtdrKzs32OSUtL03OgYmJiKsym876vLE/Ky2q1Ehwc7PMlhBBCNCXxShoDDZuJV44DsNHdnrXuLgBaz5PLgcvtxogLqzObXwK0Qpc3dr6xwdp8tjurgqb8/Hz27t1LbGwsvXv3xmw2s2zZMn3/zp07SUlJISkpCYCkpCQ2b95Menq6fszSpUsJDg6mc+dzN1FNCCHEuU5lnuUpPrE8w62mRQAcUiPZozYnSw3EXynBfeRPnG6VMOUEM5qFk2k0EmIJoU9MnwZu+9mrQYOm++67jxUrVnDgwAHWrFnDlVdeidFo5LrrriMkJITJkydz77338ssvv5CcnMzNN99MUlISAwYMAGDkyJF07tyZG264gU2bNrF48WIeeeQRpkyZgtVqbchHE0IIIRpMNFnEKScA9HymQ2okKgb+crcGwPDeCHan5mFo8SULggIAuKrdVZgN5+7acqfSoCUHDh8+zHXXXUdGRgaRkZEMGjSIdevWERkZCcDLL7+MwWBg3LhxlJSUMGrUKF5//XX9fKPRyMKFC7nzzjtJSkoiICCASZMm8fjjjzfUIwkhhBANroOhYq5uiqpNlPrV3ZWhxr8AyD76DUUJKRhVlRnOIC7v9X/12s7GRlFVtWblQ5ug3NxcQkJCyMnJkfwmIYQQjdZVr6/m95Rs7jN9xlTTtz77Li15ks1qayw42GWbRIGicHFsezKtRVyel8+Tzc6H8Z80UMtPT31/fp9VOU1CCCGEOH2tIrRhtvMNFWsV7lG1GXF2zDzimMT9Uc3ItBbh7zQxNSsHgmLrta2NkQRNQgghRBPhLSHQUtEmSE20T2eruxWfOS+gCJt+3MrwDFb5+2F1q0w4FkmMywXBUmbgVBp8GRUhhBBC1A6ny40VO80UbaWLze5Extqf8TnGFLSZrGZaTtOjGRnE2y1aF4oETackQZMQQgjRRDjdKrFKBgAFqpUcAsofgTX6OwBuzC3m0vxCMOzVdknQdEoSNAkhhBBNhNPlphnaUirH1VBA8dlvDNyFwZyH2xnI6OOqb5JOkARNpyI5TUIIIUQToRWrzAcgm8AK+83Bm7TjcnpyQg333RksieCnIkGTEEII0US43CqhnqApSy0fNLkwBe4EwJHXjWNlgyZbCFjKD+WJ8iRoEkIIIZoIp0slFE/QRJC+/cIOkRj996MYizEThLsonmNqROmJMjRXLRI0CSGEEE1EocNZOjxXpqfJaFAwh68BoCCrM2DgGGWCJhmaqxYJmoQQQogmYPHWVLYcyS3taSoTNBWTjilwOwCOzIEAbHUnlJ4cllhv7WzMJGgSQgghmoC/f5QMoOc0lU0EP8FaFEXFmd8etz0KgO1qS1a6ulGgWqHLFfXe3sZISg4IIYQQTUgYFYfnctkBgDOvS5kjFSY5/oUFJzsTh9RnExstCZqEEEKIRuxwViFr92bo70OVPKBsIribAvYD4CpM8DlXxUAJlvpoZpMgQZMQQgjRiA1/cQUlTrf+PqxcyQHFlIsbO6pqwG1vVuH8a/vE109DmwDJaRJCCCEasbIBE6Angud4cpoMVm3xXrc9AjBWOL9ddMUimKJyEjQJIYQQTYSNEmyKAyjtaTJYjgPgtkdWeo7VJKFAdcl3SgghhGgivEngGMwUYNNeeoOmkqhKz1mw6Vi9tK0pkKBJCCGEaCLCPEng+IfjXaw3PDQboNJ8JoA9x/ProWVNgwRNQgghRBPhrdGEX5i+zWlMA6ruaZo2rG2dt6upkKBJCCGEaCJiydReBMXy4S39uLh7OMVqFlDa03RFT9915qKDbfXaxsZMgiYhhBCikXG5VZIPZlHscPlsb66c0F6ExDGkfSRTR4UAYCII3P4APHNVd+ZM6qOf43D5zr4TVZM6TUIIIUQj8+aKvTy/eCejukT7bG+hB01a7aW92XsBiPGLJwuwmQ34WYwM71R6nsut1kubmwIJmoQQQohGZs6vWoXvxVvTfLa3NxzWXkS0AWBHprZ8yqCWPZjS8Tx6twqjPKcETdUmQZMQQgjRyCiVbDPgppOSor2J7QGUBk2dIzpxSbvmlZwlPU01ITlNQgghRBPQWjmKn2LHbQ6A8DaoqqoHTR3DO1Y4fkSnaAKtJsZ0janvpjZa0tMkhBBCNDIZBfYy71RiyGSwYTMASmx3MBjYcnwzufZc/E3+tA2tWFbgnRt743CpWKQieLVJ0CSEEEI0YtcYl/Oc+R39vdJ1HACL9i8CYEjcEMxGc4XzFEXBYqpsoE9URcJLIYQQohG72rjCd0P3a3G4HXrQdEnrSxqgVU2TBE1CCCFEIxbnLTMALGt1N9iCWX1kNZnFmYTbwjm/xfkN17gmRoImIYQQopFScNOMHACusz/MprgJACw5sASAixMvxmyoODQnTo8ETUIIIUQjFU4eZsWFW1VY7+6IxajlKCWnJQMwNH5oQzavyZGgSQghhGhkOsUGAxClZAOQQRAujLjc4HA5SC1MBah01pw4fRI0CSGEEGe5zzce4p7P/tTXiXN7ClJ6g6bjqlbpe+FfR0ktTMWturEarUTYIhqkvU2VlBwQQgghznIP/O8vAAa1bca43nG4VG/QlAVAuhoKgN3l5mj+UQBiA2JRFCkpUJukp0kIIYRoJPJLnNp/i7X/RpINwHE1BACDouhBU4vAFvXfwCZOgiYhhBCikTAbtY9tu2eY7pJE7X06oQCM7hrD0QItaGoeWPlac+L0nTVB07PPPouiKNx99936tuLiYqZMmUJERASBgYGMGzeOtDTfFZ1TUlIYO3Ys/v7+REVFcf/99+N0Ouu59UIIIUTd+2VnOgBOT9DU0poLQLonp2lcrxZ6T5METbXvrAiaNmzYwFtvvUX37t19tt9zzz0sWLCAL774ghUrVnD06FGuuuoqfb/L5WLs2LHY7XbWrFnDBx98wNy5c5kxY0Z9P4IQQghR55Zu0zoOXJ5EcFOhFkR5c5piQ/w4kn8EkOG5utDgQVN+fj4TJkzgnXfeISwsTN+ek5PDnDlzeOmllxg2bBi9e/fm/fffZ82aNaxbtw6AJUuWsG3bNj7++GN69uzJmDFjeOKJJ5g9ezZ2u72qWwohhBCNhupJ+i7LmwhuKtCCpicmDmfVAxcSYDVJT1MdavCgacqUKYwdO5YRI0b4bE9OTsbhcPhs79ixIy1btmTt2rUArF27lm7duhEdHa0fM2rUKHJzc9m6dWuV9ywpKSE3N9fnSwghhDgbOVyVBE1uFVAxFh4HoFlMS+LD/XG4HaQVar1R0tNU+xq05MD8+fP5/fff2bBhQ4V9qampWCwWQkNDfbZHR0eTmpqqH1M2YPLu9+6ryjPPPMPMmTPPsPVCCCFE3XO63ZVsUwmiCMVZpG0IigEgrSBNajTVoTPqabLb7ezcufO0Eq8PHTrE//3f//HJJ59gs9nOpBk1Nn36dHJycvSvQ4cO1ev9hRBCiOr6eUe6z3u3W0VVS2s0YQ0Bsx+A1GiqY6cVNBUWFjJ58mT8/f3p0qULKSkpAEybNo1nn322WtdITk4mPT2dXr16YTKZMJlMrFixglmzZmEymYiOjsZut5Odne1zXlpaGjExWkQdExNTYTad9733mMpYrVaCg4N9voQQQoiz0RvL9/q8Ly1sma1tCCodcfEmgUs+U904raBp+vTpbNq0ieXLl/v0Eo0YMYLPPvusWtcYPnw4mzdv5s8//9S/+vTpw4QJE/TXZrOZZcuW6efs3LmTlJQUkpKSAEhKSmLz5s2kp5dG4UuXLiU4OJjOnTufzqMJIYQQZzXvzDlvYUsCS4OmYwXHAAma6spp5TR98803fPbZZwwYMMCn+69Lly7s3bv3JGeWCgoKomvXrj7bAgICiIiI0LdPnjyZe++9l/DwcIKDg5k2bRpJSUkMGDAAgJEjR9K5c2duuOEGnnvuOVJTU3nkkUeYMmUKVqv1dB5NCCGEOKuUH2Vzllt3rmzQpPc0BUjQVBdOK2g6fvw4UVFRFbYXFBTU6hjqyy+/jMFgYNy4cZSUlDBq1Chef/11fb/RaGThwoXceeedJCUlERAQwKRJk3j88cdrrQ1CCCFEQxrWIYotR0pnedudWmJ46fBcaTqK9DTVrdMKmvr06cP333/PtGnTAPRA6d1339WHzk7H8uXLfd7bbDZmz57N7NmzqzynVatWLFq06LTvKYQQQpzNgmxmn/c5RQ6gTCJ4mZ4mqdFUt04raHr66acZM2YM27Ztw+l08sorr7Bt2zbWrFnDihUraruNQgghxDnLXa64ZVpuMQBR3pwmT0+Tw+XQe5qkRlPdOK1E8EGDBvHnn3/idDrp1q0bS5YsISoqirVr19K7d+/abqMQQghxzipf2vLDtQeAijlNRwuO4lbd+Jn8iPSLrLf2nUtOu7hlmzZteOedd2qzLUIIIYQop3xPU2SgNtGpfE5TSq5W/icuKE5qNNWR0+ppWrRoEYsXL66wffHixfzwww9n3CghhBBCaMrGTEEU0v/YR7RSUglWCrWNnp6mlDwtaGoZ1LK+m3jOOK2g6cEHH8TlclXYrqoqDz744Bk3SgghhBCasgv2TjIu5uLUN1lgeUTbYLKBLQSAw3mHAYgPiq/3Np4rTito2r17d6XFIzt27MiePXvOuFFCCCFEY/H9X8dYsOlonV2/bE/TJcZ1AKW9TEExeiEnb0+TBE1157RymkJCQti3bx8JCQk+2/fs2UNAQEBttEsIIYQ46/15KJspn/4OwAUdIiuUB6gN7jJBk1I+LTyotLTAoTxtHdWWwTI8V1dOq6fp8ssv5+677/ap/r1nzx7++c9/ctlll9Va44QQQoiz2RWzV+uvix3uOrmHWiZQ8qfEd2dwLAAut0uG5+rBaQVNzz33HAEBAXTs2JHExEQSExPp1KkTERERvPDCC7XdRiGEEOKsp1YoDlA7vD1NCm6ilUzfnUFa0JRWmIbD7cBkMBHjX/WC9eLMnPbw3Jo1a1i6dCmbNm3Cz8+P7t27M2TIkNpunxBCCNEouNx1EzR5E8HDycOilJuEFawNz3mH5uIC4zAajHXSDnEGdZoURWHkyJGMHDmyNtsjhBBCnPUcLjfz16f4bHO66ipo0v6r12UqK1pb4F6SwOtHtYOmWbNmcfvtt2Oz2Zg1a9ZJj/3HP/5xxg0TQgghzlbz16fw72+3+myzu+omp8lb3DLas9ZciWrGqjgoUi34Ne8JwKFcSQKvD9UOml5++WUmTJiAzWbj5ZdfrvI4RVEkaBJCCNGkbTqcU2FbnfU0ef7rXaB3tbsLbzkvpQQz33hrNOVrSeBxgXF10gahqXbQtH///kpfCyGEEOeayhYpcdR1TxNa0JSmhvGb2olbByXqxxzL1xbqjQ2MrZM2CE2NZ885HA7atGnD9u3b66I9QgghxFnPWS7pW8FdZ0ET5XKajqP1LpmMpR/hxwq0oKl5QHNE3alx0GQ2mykuLq6LtgghhBCNwqbD2frrUYb17LXeQMjur+rkXt6epvMitf9mq0EAmI1af1eJq4SM4gwAYgOkp6kunVadpilTpvCf//wHp9NZ2+0RQgghznr+ltJp/c+b38agqLReda++LSO/hBnfbmHLkYq5TzXlnT3n784HIEfVVt6ICrICkFqQCoCfyY8Qa8gZ309U7bRKDmzYsIFly5axZMkSunXrVmHplK++qptoWwghhDgbhPpZ9Nf6OnBlzPh2K99vPsaHaw9y4NmxZ3Qv70igzZkHQA7aZ+61fbWZct6huZiAGBSlsmwrUVtOK2gKDQ1l3Lhxtd0WIYQQolHo3DyYX/ecwIrdd4fLAUYzW4+eeQ+Tl7fSuJ8rFyjtabKYtMEibxK45DPVvRoFTW63m+eff55du3Zht9sZNmwYjz32GH5+fnXVPiGEaFDvrtrH8p3HefvG3vhbTrsesGhi3l65D4BYJcN3R14qhMbXao+Pd3jOWq6nyatsT5OoWzXKaXrqqad46KGHCAwMpEWLFsyaNYspU6bUVduEEKLBPfn9dn7dc4L3Vx9o6KaIs1AL5YTvhtyjAGQX2is5+vRoieAqNqdvTpOXN2iSJPC6V6Og6cMPP+T1119n8eLFfPPNNyxYsIBPPvkEt7uOplkKIcRZIrfI0dBNEDXkcLlx1lUZAI8KQVOeFjRlFZb+vox5ZRXFjnJrxtWAqkIAxRjQrpGLv89+vdxAoAzP1bUaBU0pKSlcfPHF+vsRI0agKApHjx6t9YYJIcTZxDvtWzQOLrfKBc8vp+3DP+Cuo4V0oeqeprK2H8tl8dbU076HW1UJoQAAu2qkCKvPfm9OkwzP1b0aBU1OpxObzeazzWw243DIX2BCCNGUOV1uHvp6M9/+eaShm1ItmQV2jmQXAfDc4p21fn2bWfv4jFeO++6oJGiCMwu6VSDIM0MvlwDK1iN3q2695IAMz9W9GmU1qqrKTTfdhNVaGuUWFxdzxx13+JQdkJIDQoim5lzvaPr6jyN8+lsKn/6WwuU9WzR0c07pl53p+us3V+zlwTEda/X6Q9tHsnhrGv1DciAf/nC35TzDHsjX7ju4XTNW7S7thUrPLTnte6mqSgBaUekC1bfjIrM4E7vbjoJCdED0ad9DVE+NgqZJkyZV2DZx4sRaa4wQQpxN5q4uXWezDkd4GoW03Ma1EkT5xP2fd6RhUBQu6BB1xtcucbr0IDrcrvW8JbvbaUFTgRY0lQ2YAJ75YTt/H9rmtO6nqhCoaL1mBfjOVvcOzUX6R2I2mE/r+qL6ahQ0vf/++3XVDiGEOOs8tmCb/lrl3I6aHK7G9fzbj+Xqr686rwW3zN0IwI4nRmMzG6s67ZT+l3yY+77YBEAARfjZMwH43d0O+AEKfIOlAIrYaptMiWpm4IMv8MbUK+geF1qje7rL9jSVz2eSmXP16rSWURFCiKbup21pPu/P9eE5ZyOeJV22ZtKZLqrrDZgAOiopABRaIzmgepKw89N9jr/auAIAq+LgZtOPXPba6hrfU1UhQNGCpmbhEQA8MrYTIEFTfZOgSQghKvHOqn0+7w3n+PIUzkY0Pplf4rsuaomzdLp/bT5FT8MeADJDunBc9az5VngC3G6CbdpATjdD6e/RraYfCCWvxvdxe0oOACQ2j2bf0xdz6+DWQOm6c7GBEjTVBwmahBCiEuU/XM2mczNo2nY0ly82HsLZiIbnyi+SW+wo7V1y1eJz9DTsBSArrDuZBGsbVTcUZerHxJLpc84j5k9qfB8VlQC0nCYsgRgMpb+LR/O12XrS01Q/ZE0AIYSoRJvIANbvL/3AMxvOzb8xL561qqGbUGPeNdm8Ou96g/NN+TzhnFirPWbdFG2iQFZYd1wYyTMEE+TOpTjrGLnFWm9XlJINwBZ3Al0NB+ih7K3xfcoOz2EN9Nknw3P169z8V0AIIU7BatKShf0o5nXzf0k6OrdhG3QWUc/yBC+LsfSjzZ9i7jX/j1tMPzLSsBFXFUFTdqGd5xfvYO/x/GrdQ8FNc09hy6KgBAByDGEAfLbid/24KCWbFJOJh/z78EREGHsC8mqcIFc2ERyLb9AkNZrqlwRNQghRjqqqzF1zAIBLjOu42LiegQdfh+xDDduws0RVgcfZwlqmp6nsgrqTTT9UmdA+/avNzP5lL2Or2bPWjFwsigsVAw5/rYxBjkHLa0reugsAGyVsCFC5PC6W/bHr+Tw4iIejQ8jJOVij59FKDlTsaSp0FJJVkqU9p+Q01QsJmoQQopzlO0urPHdWynzAJc+t/8acRRTcmHGelUnhOUUOvcyAqUxPU/MyQVM/w04cKRsrPd87FFs2/+lkYhTt+EJrBCazBYAMtKApQtFyqiKVDJ6KCMOpKKhOrb6SQ1H4/XDNZtBpPU2lOU1eqYVaL1OAOYAgc1CNrilOjwRNQghRzrr9pR+0HZQyvUtpWxugNWcHA25+tDzIYssDOApzTn1CPesxcwljXlnFFxt9ewPL9jQB7N24tNLza1qKwHvdDEMzTJ58t72F2kK6zTxBk1/wHxw3mQh3quTveZgRuVqe09aMmv0eqVDp8FxqfunQnHKOz+6sLxI0CSFEOcYyH0DtDKVrrRUf31fZ4eeEVkoaHQyHaW1IRdm5qKGbA0Ch3VmhvMD9//vL533zckFT2Z9nWWWHHD/wDM1WJsCi5bp5e5pCoxMwGbXfl8MGf7IMBiLIAcVJVjMtt2lojhlUEy3s2tyr3blVX78yqqpWmgh+tEBmztW3Bg2a3njjDbp3705wcDDBwcEkJSXxww8/6PuLi4uZMmUKERERBAYGMm7cONLSfAvOpaSkMHbsWPz9/YmKiuL+++/H6XSWv5UQQlRbVqG2CHkw+UQqpb0qanbKOVXl0rvgLUD7Mj1ugYumNERzfBQ7XHSesZiujy72qcMEvonq3in/O9zxAATlVT57rWzF80e/8+0JKnu9Li20IbhYT9BkDG2B2WjA0uwnPm+dzJBWcbyaeABb7P8othTQzOmiR044ABEl2rpxewqqv+hxak4xizanVtrTJDPn6l+DBk1xcXE8++yzJCcns3HjRoYNG8bll1/O1q3aL+w999zDggUL+OKLL1ixYgVHjx7lqquu0s93uVyMHTsWu93OmjVr+OCDD5g7dy4zZsxoqEcSQjQBJk8dnLaK9pd8hqrli/ipRVCYWeV5TU1WgV1/3V457Lvz4Np6bo2vpWUqtp9sMdwBzbTAb6W7OwCBuXsrDXztVQzPudwqI19eyd/eWIPLrZJbpAXU3p4mJSSO9KKDWCN/Ak8HZa5JxRzyJwB3ZWdTSCQAQXYt4DlUkkmRs4jqeGKhtpRPpcNzUtiy3jVo0HTppZdy8cUX065dO9q3b89TTz1FYGAg69atIycnhzlz5vDSSy8xbNgwevfuzfvvv8+aNWtYt24dAEuWLGHbtm18/PHH9OzZkzFjxvDEE08we/Zs7Hb7Ke4uhBCV6xkfCkCCon0obXe3JE3VtpFds5lPjZmxTBHFDgYtaCpRzSxy9SPfFNJQzQK0oTmvsu0E38KkLQxacLPG3QWnasDizIO8Y9W+T0pmIbvT89l4MIstR3LYkapV9I7Vg6bm/Jq+EAD//Hh+SjlC9yIXqqrQJyeQq/IKSPf87qjOQMJdLlRgX071hnozCrSAMMCzYK/P8JwUtqx3Z01Ok8vlYv78+RQUFJCUlERycjIOh4MRI0box3Ts2JGWLVuydq32F87atWvp1q0b0dHR+jGjRo0iNzdX760SQoiacnl6IpKitF6FVCI4pGrTys+loKlsbnE7T0/T3x33cJfjbl5IbthhyhA/8ymPCbYZMeZpgcVBNZqDquez4viOat/n7ZWlwc2DX23WX8cp2gxLR3AUv6b+qG3M6ku0y8W7x9LJ3/E4M10BGEEPmnIJoI1d+53ak7WnWvffnabVjZLhubNDgwdNmzdvJjAwEKvVyh133MHXX39N586dSU1NxWKxEBoa6nN8dHQ0qanaX3+pqak+AZN3v3dfVUpKSsjNzfX5EkIIL29ScJhb6004roZwWG2m7cw6d4Imh1P7Phhw01rRPqB3u1sA8Meh7IZqFg6Xmzs+Li0gWb5ulHf0LZhCFEcBAMfUcHarcdqO4ztPev2ECH/99bz1KfrrUE+g5k8xcZ7Clj/bj1LozMdtDyMnvxsAfoqDQByEFWvnHvAEa7mqP60dWtC0P2d/tZ41o8COGSdWxdOzZgnwPLOLtEJtiFKCpvrT4EFThw4d+PPPP/ntt9+48847mTRpEtu2bavTez7zzDOEhIToX/Hx8XV6PyFE4+L05Ld4g6Z0NbRMT1NKVac1OXaXlmAdTRZmxYVDNXKMCMA3sKhvl776q8/7skFTi1A//XUM2sy5bIIoxsoetbm248Suk17/RL6W3lG+8nnbKK2Xx9vrlqqG8snebwBwZPenGD/yVS3ZO045QVCJFtTEJGrBVD5+JNYwaAItSNNZtfy6E0UncLqdGBUjkf6R1b6WODMNHjRZLBbatm1L7969eeaZZ+jRowevvPIKMTEx2O12srOzfY5PS0sjJiYGgJiYmAqz6bzvvcdUZvr06eTk5Ohfhw5JlV8hRCnvTKoQlzdoCuOQ6vlgKjM853arbD2ac9ZXyD5dJU4tePQuF5KqhuP2fGzkFzfcLGVvXpHXpa+VBlGRQVa8WU2x3mVO/GJQzBksC89hpZ/tlJXdbWYj07/aTNIzP/tsX71Hu14ngxY4L4lvxY7MHfgZ/XFk9wEgQ9UW7u1t8ARmthAeu3YwPeNDtaDJk4u1P7f6QVOgp7Cly2ABo9bb5R2ai/KPwmSQZWTrS4MHTeW53W5KSkro3bs3ZrOZZcuW6ft27txJSkoKSUlJACQlJbF582bS09P1Y5YuXUpwcDCdO3eu8h5Wq1Uvc+D9EkIIL28QFOIs7Wk67A2aygzP/fenXYyd9SszFzTNHEpv8NjCU+voCM30fct2pDPy5RWMeGkFi7dWnQ5R24odvuUFzjds4Tx7sv7e31NHCSDa09O0tXkUAYmvsCdiH1NioliQ75uEXb5Hyc9iYN76FFJzS3t4zDg5dCLHc8+tlCjwrrUQgIkd/o7q0nqhTniqgvcxeIYAI9oSFmjlrgvaUKDa9OG5Q7mHcLgdp3ze89tE6DWaHMYAfbusOdcwGjRomj59OitXruTAgQNs3ryZ6dOns3z5ciZMmEBISAiTJ0/m3nvv5ZdffiE5OZmbb76ZpKQkBgwYAMDIkSPp3LkzN9xwA5s2bWLx4sU88sgjTJkyBavV2pCPJoRoxBxuN6AS4tQ+dNMJLe1pyjmkJ83M+llL5v1wbdPMc7J7epp6h2l5QUfUCJ/9u9Ly2ZOez98/0oKWQruTo9nVm0p/unKLSwONNsoRPjI/w4eW//C06R1eM89iQP5Pek5TjHqCoyYjj6hHUYylM6qfsZZwNK+0VpJvT6FK3+zFXGpYo28ZatjEbtuN7LbdyDDD7yQZtrEoIIAsdwmxAbGMii8thZPpKU/RS9mtbQhvA4CiKORjI8rlwk8Fp+rkcF65Mg6V6BYXoieBO02lQ496YUspN1CvGrRPLz09nRtvvJFjx44REhJC9+7dWbx4MRdddBEAL7/8MgaDgXHjxlFSUsKoUaN4/fXX9fONRiMLFy7kzjvvJCkpiYCAACZNmsTjjz/eUI8khGgCHE6VQIqwqNqHVboaigMTbgwYnMWQnwZBVacANBXepUVi3NpMsaNqsyqPVVWVzjMWA7D8vgtIaBZQ5bFnIq/MsOCtxkUYFS3gud70i7YxZx1HUroDRqI5waPNwilQXcT7d2LP71fTN+Fh/rJZ+deKf/L+xR/z7R+pPkHTjcYlPG7+AIC/SlpzUI1hhulDff97lhdwAe+FavlR4zuOJzq4NL8ryxM0tTJ4RkAi2gKwdFsqBaofBiDBDduNWl5TYkjiSZ93Z2qe3tNkL9PTdCxfZs41hAYNmubMmXPS/TabjdmzZzN79uwqj2nVqhWLFp0dJf2FEI2f3enm5Z920VrJBsBtCaSoWEvuzTQ2o5krHbJTSHWHNlwj64m3pylK9QZNEVUeWzbweGfVPp66sludtKmwxDs8pzLYqJUA2OJOoKvhgH5M80WTaKs8y2H/NNb5+WFVTNze6WHuTj7Mv044+XtzM39mbOWlDa/y+tfty1xd5XbT9/q7voadZLmCaGPwreu0KMCfA2YTIdYQru1wLQGeBXsBMim3cG6E1tNkNhooQPs9SnS42G40si9nH8MYdtLnXb7zOKMMWu+dw1ganMnwXMM463KahBCiIXmX0IjyBE1qYGlZk+MmT+9S1kFumbsBAMWYhykkmVx70ytd4q2S3cyl9ZocOUlPk6tMXtAnv9XdDEPvjL6WSjpxygnsqpGr7TP4W8kMpjsms9vdAkV1c73xJ5aEajlHN8WPJD5ImyWtuCJ57Lg27Prxjvcx+pXmN7VRDuulBAC6K/v0mXJH1Ai+dA0mx6Dwcniodt0uNxFg9u1R8w7P6TxB03X9WpKPNrzWukQrWFndGXSBnuE5u6Hi8FxMQNPv8TybSNAkhBBleOvyRJKtbQgs/VDaVuipgp2TwrZjuSjGPPxbv4Jf8y+YtmwabrXypTgaK29PU0Q1giZ3LT+6qqq8u2ofGw/4LlvjndE30LAFgD/UdhRhY6PakXmu4cx2Xg5AgN9e9lgNWN1uJnS6HrNR+7g7RiSjCou4Mqg9Kiq25l+CUoLRfzdZ7d7i4Wbh5HmqerZRjuqV0He743jBcQ1PhEdz3GQiIaglEztNrNDurPI9TZ6cJpvZSIGnHEHrYi1HrLpBk7caeKHBX//eePOh4gLjqnUNUTskaBJCiEp4e5oMwaVB0zFVW3h1+y5tZpQ1ZgEGk1ax+ff03/l+3/c0JXanmyAK8Xd7C0T6Ds9Fks1TpjlYsfv0NNWGH7ak8uT32/nbm75r3K3bpwVRgw3a0Nxat+9M6W1qKwC2hGQBMKqwiLBmnfSgyTsL8n5zHBG2SAyWDII6Popfy/dxGJ18FxTIpKhEVKCt4Qi9PbPgNquJHA/Zz+IgC6qq8PigJ7GZbBXaXbanKccYBjZtdrbZqOg9TYkOLS9rX86+CjP3KuMtOVCIFjRlFmdS6CxEQaFFUItTni9qjwRNQghRRpBVS/WM9ARNSmAMg9tpPSypnqDp8IE9GAN2Yg7+C1VVcORq+TvvbXmvWh+CjcXjC7fpNZrwCyM+umwRRZW5lv8wwbSMp81z9IVsa8uOY77Dncu2p5Hw4PfMWrabjkoKowza8OiAUdfrxyjmDA7HrCapVRzfBGklAP5GMJgsWEzax90Bl/YzDMpL5e4e/0Z1aYGPopR2le32d7LEL4BoJZtxRq0G1GK/YGyxXwHQNeBKzos6r9J2Z6qlJWzcnl4mAJPRQAlmnKqBVg4HRsVAgaOA9ML0yi4DlPb0BXoSwW0BWk/noTytzlR0QDRWo8wUr08SNAkhRBmX9NASa709TQRFs/+E1tPirQoeakzF1vwLAByZ51N8bBwB5gD2ZO9h3bF19d7mM7Fg01Fu/3CjzwK4ZTX31GgiJJ7/3ZnEZ3/v79mj8ITzBlyqwjjjKvI21+6EnENZpaULTuSXMPmDjfr7McbftFlzHcZSFNVDa40pm4DE1zCG/km+Qfto619UTM9QLdHb4ulpOuD09JZlp9A1vA/5ux6hYP9dWI6N5KeUI9yarQVr/wmPxvsd2WS2cThuDYrixpHdi7FxN1XZ7l1q6XCZO6Sl/tpsVACFAmyYgXh/rQfzZAv3bvAMTXp7mhwmLX/KGzR587RE/ZGgSQghfGj5LFFowzsExpDmKXK4yx2HCnwUZcdgysdVHE3Y8b5Y3QYubX0pAF/s+qIhGn3aps37gyXb0vRyAeW18PY0hcQTZDPz0b7H8Gv5FgbbIda5O/OpazgAxUufrNV2lVkrmIx8O0Pbl/Zy9VT2ai/aDiM1pxhQscV+hWIswlUczV1H/fnsyDHeTE1HadYOoMLwHNkpFJY4ARPu4pb0yw0g2uViYFYoqtOf4xYnCwIDUIEZEbG4sOPMb68FyNaqFwsuwI917k4AHIoZpW83ewI57xBdgp82weBkeU03v6/1poUq2hBwYrw2FOfNZ2oZ1LLyE0WdkaBJCCHKcHumzncK8vR0BEXr0+mPEc4Cv1B+CfAD1UDCsf6ss97LTttNXB2vBQ8/p/x80iGXs9mutLwK20qDpjgKHYWsOboGU8B+cGvDQrOcV+JUDfQw7KOzcqDW2tIuujQ3yOVWaa6vKafSw+AJmlr0xs9swBK5GFPgLhTVRPGRCfgVtKSz3aHV1Gmm9TRpPT1lktnt+dwwe4l+j44GrfdmrzOBkowLAHgiIoKbY+LY5+fCiIXiY38DjD5Vxytzk/0BxpY8TWaLC/RtJs/99WRwm9aOk/U0eWcvenv7gqJa+ZzTKrjVSdshap8ETUIIUYY3oTnA7gkWAmMweGZToTh4ISIUgI6Z8UxwbtfPa7/rZ86LOg+X6mLB3gX12eRaM/LlleQU+uYmlQ7PxbHu2Docbgduezhuu9Zjc5wwlrl7AbDI+hCXGNbSUvFdE7QmdqflsWjzMVpHlk7ld7lVrJ6cpJZKOqFKASWqCaK6kGlairXZcgDu63sfbntUafV2KA2aPOeXYCHPpOU1xSnH9cPaK1rQtEuNw5F1Ps789jgMkOynndfGcgmqU8tX0n8fqlCMla1qAhZTaSlEb09XgbfsgCUUqN4MutLAVetZ2pOtVaJvE9qmqlNEHZGgSQghynC7VazYsTk9ichB0dw/qgMAlogVZJndxDqdPJu7jeHG3/XzilOSGZs4FoDlh5bXc6trz/ZU7blLnFo9JD0RPDSeFYdXAODM70jZAbRvXAP1169ZXuV7y0OQd3rr0V308kru+uR3Vu0uDWhe/Xk3fxzKBrTaSQA71JYcLDzGq3/MAuCBvg9wY5cJgG8yNp7hOW/QBZBr1fLWfIMmbchrpxoPqomiQzdRkj6SCFsE17S/hgTjZfqxSiVB0/ltKhb+NChlX2tv8j09TW1NWk/ajswdON1VL35swkm0d6g4JA6H28GB3APaNULbVnmeqBsSNAkhRBlf/XGESEVbmBWjFWyh3DIokclDIrBErATgvows2pBBjJKln1dwaDND44cCsOn4JjKKMuq97bXBu3RKvme5krI5TeuPrQfAmd/B55wf3P340jVIfx+kFMHuJZyJzUdKZ88t2ZbGJk/Q5F0IN6RdEvN2zMOpOhnYfKBeM6lL82D2qWWqZPtrwYzVZCQ2RAtY8v20JVC8hSyt2ElQtCBvp9ubXG3AnjGM5dcu599J/0aldEiubC+Y1xsTe9M3Icx3o0/QpP3X29PUwRhAiDWEXHsufx3/q8rvQwS5GBQVFCMERHIo9xBOtxN/k79UA28AEjQJIUQ5ehJ4UDQoCmajgaBm21AMDlxFcVjzSodFvnWdD0CEM40Yox+dwjuhorLy8MqGaPoZUnE6Srjz42R6P/mTTy9Hpi2Qw/lab4yrqHwCssJjjps4roaUbjq84Yxa4g2Syhtg0IZEI3sM4ds93wJwY+cb9d6fi7vFsklty932u7jF+AyU6RXyTuH/JVULnrw9TecbtmJUVE6owRynzDOU4T0XoE1kYIX9IX5mvrjjfJ9tSpmoydvT5F1KxeQoYlALLdD09uBVdr9wxZNn5h8BBoPP0FxlPV6ibknQJIQQHt4aS94aTWWrgf+WthwAR05PpjjuJlUNw6kaeMd5MUe8RR/TtjEkbggA61PX11eza4nKZ5Yn6P31BfyxRVtKJkbJ0qb2Gy1sLtTWX2sd0hrcfhXOzsOfQSWvcKf9/7QNh7USAfn2fP6363/M+n3WabUqhHzGGVYSSCEJyjE6Gg6horBQKSTfkU9CcAIDmg/Qj/cOw33jHsRWY3ufa2UU2LWmeZLBvT1Nd5i0HLSvXYO4bXDrStvh7YGribI9Ut74xjs8R0k+Q+O0nsnKAuwiuzY86p05h7+Wh7U3W0uCbx1SeTtF3ZKgSQghPLyzlWIVz9IdQVrQdKLoBFsz/wTAmdeVfPy5ouRxxtqfZovamh1uT89L2hZ6RWlJ0X+m/1mfTT9jLThBf8MOgh3Hudn0IwBtPXk+hLfmrwxt2ZJuzapeiLcECxvdnqG79O2oxTmkF6Uzc+1M3t/yPlnFWVWeC/DLTt9Zh+ONP7PJdjsvWt5ksfVffGD+DwBKq4F8eUBr47UdrsWglH6UWUxVf6z9Y5iWA+QtO9BCOUF75RD9DTtwqgbedV7MgNaVL0rcPS70pG2vTHRwacVwRe9p8gSc9nzOb34+RsXInuw9ehkBr0JP1fBwyvQ0UZoELvlMDUOCJiGE8PD+de/NbyFc+2v+55SfUVFxFcWhOkMBSCWCnaoWLO1QPXkwaVvpHtkdg2LgcP5hjhce52zmLa8A0MEz5R5glGEjoNJZOahtiOmm5910j+yuH9c+uuIw1XFCOeSOBFSmPD+HIEMLOoV3wqk6WXpw6Unb461LBBBKHs+a39Xft1AyaGVIx20ws3Xo/7E9czsWg4VL21zqc42yCd9puSWV3qe0p+k4k4xa7tVSd2/SCKdTbHCl50welMj0MR1ZfPeQkz7DyRiUsj1NeYRYQ+gZ1ROo2NtU6PldDNOH53x7mmTmXMOQoEkIITwKPB9UbQyeoMmzQr33w96Z17XCOf0Swtnp7Wk6voNASyDtw7RhoeT05NprW4mTJxdu44+Uk/fW1MQxT9FOgI5KadCUYEijk5JCZ4O2eDHRXZl23jTu63MfSbFJTLlQ+748dlmXSq/7h6r1giQWb+eOj5MZ21qbVViTtfkeN8/VX7/tHKu/zk8czXfHte/r8FbDCbH65iBZTVXXUHprpTbzzlurKVgpZIJpGQAfukYC0DzUj64tKgZONrORvw9tQ4eYoAr7qsugKD49TUCVQ3TeAD7M29PkF47D7eBgrhbISk9Tw5CgSQghPIo8S4kkeoOm8DZkF2ezIVXrAXHk+gZN/7sjiU6xQRxQterOrox9PPC/TXQK03pjklNrL2h6eeku3v11P1e+vkYvB3CmzGXmxLcv09ME2tBYN8/0fmK60T2yO5O6TCI+OJ77R3Vk2+OjOL9NM6KCKq599odb+0A/z7Cb5INZjE4YjYLC7+m/czT/6CnbZcLJhYY/AZjnvJCnnRN40HEr69ydKB78EMtStEDHW+KhrM1Hck55/SJsnChTluCEGsw6dyc976hr88qTwc+UFjSV5jRBadC0PnU9hY5C/diP12nBUdlE8GP5x3CqTmxGGzEBpfl2ov5I0CSEEB57jxdgxkms6hlWi2hLrj2XQS0G0b1Zd1RHM5/je7cKw2gwcNATNBkL0vhu414+XWEBqNV16JLL9DC9uGRXrVyz7OyreM9Mso+dWmXzSaaltDKk41IViOtb4Vx/i1a4cXinKH3b2O7aFPg/3FptpH6GHVhwMODJjfSJ6QPAov2nXqOuu7KPIKWIDDWIh52TAZjvGsZ4+7/Zb7aTVpiGv8nfJwHcKyO/8iE5gEFtS39+29yl1bQ3W3qiYuDiblr7beaTV/yujo6V9UgpkK/69jQlhiQSF6jVX1p1ZJV+6PwNWhAbViZoOpJ/BIDmgc1l5lwDkaBJCNFk5Zc4WbDpKAUlVRcPLOvvHyXTUknTZoxZAiEwipbBLXlt+Gt8dPFHPsde0ycORVEwGRVyCKTIoOX3tFTScRa0xagYOZB7QF9c9Uz9kZKtv357ZdVLb9SEd7YgQIwn+f1/rqG86SzNE9qptgRb5Xk+ALcMTAS0gGnyIO31X2prMtQggpUiuin7UFUYHDsCgFWHV1V5La++nlpMG9wdcZf7mFqbuhyAIXFDsBor9nL9a0zHKq9rNZde63t3acDVe/jVPHF5F565Sktyt54kmby6yi4D42VQqNDTpCgKoxNHA/Dd3u8qnBNG6ew5by9d88DmZ9w+cXokaBJCNFl3z/+TafP+4KGvN1f7nMSySeBK2To7BnY9OYY3J/bmkbGdmHFpF8927Zg9Tq0Xo6WSDm4bPSJ7ALDmyBqf6+cWO3hj+V4OZRbS0LxLxhhwE0U2AKlqGM86r+NN5yUcVpvxhHPiSa/RLjqIzY+N5LXrztO3uTGwwa0FL30MWq9Ytwitt+qvE39R5Cw66TX76EGTb8mA6/vF60Nzw1sOr/Tc2BA/RnaOrnRfeIBFf/2Dqx+H1WbscMcT3PsabkhKINimLcQ7vp+Woza4XbNKr3MyC6YOYkL/ljx6aecK+wyKoq89R0lp8c7L2mjVxlcfWU2e3Xf9v8p6mloEtqhxu0TtkKBJCNFk/bRdWwPt2z9PnUfjpc+ci6g4O8liMjC6awy3Dm5NoFUbnjJ58oK8Q3StPOuuDY4bDMDyw8t9rvHot1v5z487uGL26uo/SDmRZfKI8oodpGScXgDmnTwXQQ5mxYVLVThOKADPOq9nUMksjK2HnvI6QTYziqLQIrS0ftNGT8Az3TyP/5jeJsxhJto/Gqfbyabjm6q8lhU7A41anajf3J189qXk7edA7gHMBrP+/a1MVWUH7r2otJJ5LgFcUPISl9ifArPN57jEZgFsenQkc2/uV+U9qtItLoSnruxGs8CKvWAGRSG/XCI4aEN0LYNa4lJd/J72u885ek6TXzhHC6SnqaFJ0CSEEJQWLyztaarelG6DJ2hK8QRNLZU0FAWGxQ8D4Ldjv5Ff5gPSu6aat9BidSU2Ky2UOLRNqP56zCurGPL8L+w9nl/JWSfnLTngXQ7mOKG48M3nmVFJj0lVytYlSi7TS3StaTnhq2bQL0YLQryJ9eVFBlnpruzDnxKyDGFsURMxG0t7+0zBWq2opOZJBJgrLmXi1bqSit3g29ME4MSEE1Olx4b4mTEaajdvKL/EWaanyffn1TdG64lLTvOdPBAqw3NnFQmahBAC+HGLFiwlKlrl68p6mipTvqeppZKOxWigdWhrEoITKiT4OsvURqqJ/ScKAHjT/DIzd10O+7Up6oeztKGupdvSanxNt2d4rpU5G4BUNbzCMaYaBg7eIa3NaiIlqlnfHrpvAX0DteTrqoImt1ulh0GrQ+TXOonbh7Rh6T1DeXNiL8b1iiPPs0DyRa0uOmkb7hzahpvOT+DT2/rXqO31Qe9pcpWAy6Fv7xWtFUUtW6bCip1AxVMWwj+8dHguQIbnGooETUKIc8KKXVUXmix2uJg27w8AEvQaTdWrg2PUe5q0WWQtlXRahGkfjN68G28eDoDrNIKm5INaknYk2Yw2biDAnQ8L7/E5Rj2NWMzblFiDdn1TaMUP45rO0vK2w4mJexx3stLVjWw1AEV10ydP69HafGKzz/R6L6dbpacnaLK16stDF3cioVkAo7vG8o/RoezK2oVJMXFh/IUnbYOfxchjl3Xh/DY1z0mqa3oiOEBJaf7SeVFaTti2jG16zlczvAtHW7Cb/fViqdLT1HAkaBJCnBMmvbee9fszK923eKsWKNkoobl3CZVqDs95g6Y9bu2DrI3hGAMzvwZV1YOmlYdX6kFC2aDp2z+PVHndnEIHc37dT3peMR+u1Wr29DXsKD0gYw+c2FOtNlbF2xbvorzN4yuuZxZkq3z4qipl12hb5B7AjY7pzHGOASDu+F5iAmIqzWtSVZWcIgftvEu3xHT32e8tMNovtl+FgpZn4pspA2vtWtXhxIQdTw9cmWHbuMA4ovyicLqdbDmhDUNGKp6gKTCa1MI0VFRsRhvhtoo9gqJ+SNAkhKg3qqoy5dPfeer7bQ1y/+vfqVg3afuxXP5v/p8ADDBs1zYGRuvLVpyK0dMTc5wwfvPMGHvCPBc2vEvXZl1pGdSSImeR3ttUdnjOe9/K/GfxDp5YuI0b3l1Pumc5kH5lgybgtTdLF8FVqXlXk7fkQIySAUBYTCtuH9KaR8Z24q0bevPK+J6VJjSfTGXDj3tUrQdLydpP32gtd6f8EN3H6w5ixFU6PBpZmhOlqioL9y4EYESrETVqT3kXdIj0ed8zPvSMrnc6ihTPEF2ZvCZFUejaTCueuuKA1utZunB0tNRoOktI0CSEqBfpucUkTl/E938d451V+7nz42SfOkH1welWWV5mUVhVVRnzSmm+0aXGtdqLzpf7lBs4mbKJys86riu99h8foSgKoxJGAbDi8ArAd703gO82VT6z75s/tA/JnWl5rN2nBTX9PFPxvcFZ95LSmVan8630lhyI8AwDKUExPHRxJ24d3JpRXWK4vGfNc2eSD5YW4bx5YAJQOnRJ1gE94Xlj2kb9uG1Hc/n3t1uJV9KxKC7cJhsEx+n716euZ2/OXvxMfoxOGF3jNpU167rzeMyT3N48xHaKo+tGoR40+ZYX6ByhtWvjMa1ERlSZoEmSwM8OEjQJIepFv6eX+bz/YUsqT32/vV7b4EcxN5VZFPaL5NKV5eOU44wxrNfedB1X7WuG+JcmO/+htqNP8Ru4VQXl2CbIS2VInLbA65oja3C4HRV6Yv4x7w+O51Vdxbqsyfb7+Id9Cm84tbo+HQ1nVjjTOzwX5PIMA/nXbg7Qo55aVt6ZhRQcp2+4tu2v43/pOTr/8/wc2ihaYOAMbQuG0o+nT7d/Cmj1jIIsp7/2G0CwzcxNAxP5c8ZF/HL/BWd0rdNViL/2wl550HSsaDdQJqcpMFJqNJ0lJGgSQjSYd3/dXy/3MePkA/OzbLfdwhzz86jFWmHBTzzrewFMMX6Dv1KiLa8RV/36PH7lltw4QQh/qZ7coN1L6NasG6HWUPIceWxKr7w+0YlKlv6obJjrGBF85x7Iek9PU5SSTRjas5xOr93e49qMvHDFU2gxIKLG16iOPPzJUrUyAHEOO+dFnYdLdfHNnm8AaBWhBRHeoKkkrDSf7Hjhcb3W1XUdS3vyzlSov+Wki/vWpSLF08NlL/DZ3ilCq0uV6TgKhpIyP5dIqdF0lpCgSQhRL3rElU3eVfGjuM7v6Z0tf5VxFUONfwEw3PgH9l9fA2DTYe/irioXGv8E4KvQm3x6OU6lskKKK9xaNXAOrMZoMDKwhZZsvPLIygrHApQ4teTpgxkFeu+P3emucFzvVmEAFGIjxa3l5rRXjlR5/KkEWIyASgTeqtO1P9tsaHutnQfLDNGNa6f15H21+ytUVdVrXbXx5DMFNC8tarny8ErcqptuzbrRJrR6yflnu0K9wGVp0JR8MJNrXt9CqKUZoGK0HiXCGzT5N5PhubOEBE1CiDqXklGoByih5PG79e9st93CHcaKa23VJm9nzUjDRp/tygHf9c+6KAeJUbIoVqzc8/fba3QPQyW5T96ZdGSnADCkhTZEV9W6axsPZJLw4PcMfX45bR6qekHbWWWWKtmpxgPQwZCCBQfFpxE0OVwqARRjVTz1ggLOPGiymX0/Vl67XmvzYdWTgJ2dwsiEkfiZ/Dicf5htGdv49zfabLE2Bi0wMESWVu725oJ5hzmbgkIqFric+O569h0v4HiG9n0y2I4Qb/WUZQhoJjWazhISNAkh6txVb5Suv/aM+V3CFe3D4h7T/yCv5kUZq6Ps0iIdPLk/jzhuBsCU9he4S4OMCwx/ApAbO5CAgMqrSVfFXcmw2BHVE3zkaPcd2GIgBsXAnuw9KKbsCsc/WS63q3yyuFdkmZls3qDpcfMH7LJNoseR+TVqN4Dd5S4dAjL5gaXqKtvVFRHgO9suyGZmQv+WpKtaLxn5qfiZ/PQgaPGBxZ4j1dJyA83ae9pnZ90xbcZjUwqa9FpNZUoOFDlcALiLtaDIaDuiD73abcFSo+ksIUGTEKLOeXN2jLgYVabXx6o4YXvd9DZ9vlELWCw4iEWbfbbU1Zsi1YLBkQ+Ze+kcGwzAMKM2xTu8xyU1vo+rkg4evVcl9yi4nIRYQ/QFfE2BOyqeUM6O1LxKt1tMBjpEa4nQu9zxPvvGHvkvHEmu5Kyq2Z3u0qG5WuhlAnj7xt50jg3m/Zv76tvC/C2kq6HaG0+QPLLVSMAbNKlEkk2IUgiKQS8sujF1I0XOIiL9IukU7rsOXWOmL6Viz6+wz+UJmgy2o4S4td7ZVINBajSdJSRoEkLUmwQlFYOiUqBaeddT8JCMvXVyr9nLtcKPccpxjJ57phHG7+527Ld1hpI8QvzMNCOHnop2rKnjqBrfx5vE7JXYLIDjhOBUzKC6IE8bcvL2lFQnaKosMdzrmXHdANiqtqq4c/5Enx60U7E73Rhwc8wcD+EVC1ueji7NQ1j0f4O5sEOUvs1iMpQGTflaIdHBcYPxM/lxtOAoBtth2nqG5ghL0BfQLTs015RqE+WrlSeCQ2lPk8GajlHVAtpDqlYhPC4orkl9HxojCZqEEPUmwbMY7n41lv1qrLYxq25m0HlHzVoqWs/GQTUGUJjgeIgLsx/hsH9H1u7L4HzDFoyKymZ3AoTEVXm9qrSPDuKdG/vo7w0KqBjINnuChmytx+uCuAu4tPWlOLL7+pwfSTbXG5cR4lmYtTknyMvNrvJ+QVatQvdetQUvOf7Gb+6O3O+4Hbti1QK01E2oqkquPfeUbS9xuvhdbc+TiR/CpLrLL7OaDKThGZ7L034Hyg7RmYM36zPnvENzqqqy8rCWOD84bnCdta0h5KqeIcySij1NqjOYAGMYiqKyx6LN7jvs0IKnuMCa/36K2iVBkxCi3niDpgNqDAc8tXvUjH11fE8taMr1837gKFzSPZb7v9Bm0/U27AIgpvvw077HRZ2jifUUShzWUQuWMkye2kSevKa2YW35d/8ncOZ38Tl3ruU/PG2ew0XGZEYYkllj+wcjfxhCc05Uei9DmQV0Z7mu4lr7DL5wXcAeizZ8tf3gCsZ/P54HVz54ynZnFWoJ4FZj3X4UaD1NvkETlA7RmYK20EpfKFkbmtuVtYvD+YcxG8wkxSbVafvqW7E+e65i0AQQZdVmCW6zWMAWwoE87XcoLkiCpoYmQZMQok6VOF366zhFCwRS1CgOeoImd+b+Gg0p1VQrT9CU2L4bd16gfRhFB9v0Ktu9DVohwchOZ5ZovOyfQ/ntoeG0itCSqU8YfXuaAHKLHRXOW+LSeqn+ZZrP300LADC7CrnCuLrS+1Q1OHPUqCUI++ceY2fmTlYdWcUf6X+ctM2zlmnPXnIaM+9qwmoylg7PFWeDQys3MajFIFS3GYMlE7efZx2+sARKXCX8e/W/AS2J3t/sX/GijZg1QMulq2x4DiDS4snp8rNBSLy+Tl+XZl0qPV7UHwmahBB1quzkshaeoOmoGkGqGo5bVTCqDiisvFelNsQr2rIpzeLbY/XUVMop0oIXf4rppHgKXMb3P6P7+FtMRAfbsHmKXZbOoEvRjzmSXVThvB/cWiHNSCWHvp5eL6i4zpyXvbLMc2BdjtaT0yo3jSvaXgHAf5P/W2V7C+1O/fW+E5V/eNeWAKuRHAJKF6r15DX5m/1x5GglCeZHZ/NZUCCbzAamLpvK9szthFnDeLj/w3XatoawK8vzP0XZBXvD/EpfW3sD8KufjayQFmzL0NZq7BNdOgwsGkaDBk3PPPMMffv2JSgoiKioKK644gp27tzpc0xxcTFTpkwhIiKCwMBAxo0bR1qa7xTllJQUxo4di7+/P1FRUdx///04nU6EEA2v7JR8b6/PYTUSJyaO4yl4mXuk1u/bMUabZdbSEzQZwxP0fd5lO3oa9mBUVIr8W0BwbK3c1xuQrc/yTN/PLg2a3l1VcShylxrHH+62Fbb3NuzCQMUAqXWzQOLD/Sps36/GaC8y9nJXz7swG8z8nv47OzIrD77eXFHaFm+eVF0J9jMDChkGT8VxzxCdqqrYT4zA7QjmhFnhyWbhTPzrv6w7tg6jYuTZwc8SExBTp21rCJWVHCjLT21FoMNMkcHAa6ZCXKqLFoEtmuT3orFp0KBpxYoVTJkyhXXr1rF06VIcDgcjR46koKD0r5577rmHBQsW8MUXX7BixQqOHj3KVVddpe93uVyMHTsWu93OmjVr+OCDD5g7dy4zZsxoiEcSQpTjLTlkwK3nF+1RtaGkY6pn+nRu5YvWngktVlNpZfD0YoUlsHir7x9cvRWtZyczvGet3Xf9fm3Yr7SYY+nw3KLNpfk8T1zuHWpRuM7+MHfa/49FhgsZU/IMuao/QUoRfWyHmXJhG0L9zbx/k5ZAbjEZWHHfhRXuqyfWZ+wlyi+SC+O1Y77d822l7dybXvqBfV7L0NN51Grz9vCdUDw/7zwtf2nx1jRUZzAh+ydwf0YWLR1OFBQuanURn13yGee3OL9O29VQ9JIDnkTwYoeLw1mlvZBvrthHn3ytV+7zIq0ntHd07/ptpKhUgwZNP/74IzfddBNdunShR48ezJ07l5SUFJKTtVojOTk5zJkzh5deeolhw4bRu3dv3n//fdasWcO6dVrBsyVLlrBt2zY+/vhjevbsyZgxY3jiiSeYPXs2dru9IR9PCEFpT1ML5ThWxUGJauaoZ+gqVfX0PNRB0FTidBFJNlZKtNo/IfEV1mfz5jPZWtdeovHNAxMBOORZ5kTNOYSrkp7vG5ISmH/7AACKsfKDuz93Fd7GdrUVG93aDLL+hp3cP6ojf84YyYUdS6fwl00G9zqkRuFSFXAUQF4ql7e9HIDv932Pw1Uxl+r7zcf013ddULGnqzZ513g7XmYG3ZfJh7njY+3f+vPUY9yYm8cCVyQbJ27kpQteokN4h6ou12h5ez8Lyi2j4q0pVtYVuUUoZX5fB8QOqPsGilM6q3KacnK0Ql7h4dpfI8nJyTgcDkaMGKEf07FjR1q2bMnatWsBWLt2Ld26dSM6Olo/ZtSoUeTm5rJ169ZK71NSUkJubq7PlxCibhzx/AXtXVesODhBC2Io29NU+8NzxQ63PjRHSByYLPhZfBdofdI5gaODniGi59hau29iM21Y7hgROFQjisvOpFe+rbTKd2Xr1gEsc/dioas/RwxVL5lRfqFgByYOedd3y9zL+c3Pp5lfM7JKslh1pPLlW7xC/M0n3X+mvD1NaZ4ZdGruMf75Renixd0NWq0uQ4veWIyWOm1LQ7q6j1aQNKljS22DvYBv/zzCjG+1zyozTtophxlo2Mxw90H+lqf1RAWZgxgaP7RB2ix8nTVBk9vt5u6772bgwIF07doVgNTUVCwWC6GhoT7HRkdHk5qaqh9TNmDy7vfuq8wzzzxDSEiI/hUfH1/pcUKIM/f2Si13prUnaAqJ78zOJ8cwrGMUqd6gKedwrd+3xOnSc6gISwBgZGffnJDn7ryG5iPuqrXCjgBmz/R9NwYOe3rU1IzdZBdV7O2xlJvqHxWk1e/5xDWCqY7/Y6Ol6sTf6/ppH7wDWofrlc31vKYTuzEZTFzSWqtw/s2eb07/gWqBdz26VM8Muq9X+VYu72Hw5Fc171Wfzap33v7B77Z7Fop2FHD3/N/1/c+Z32Kp9QE+sTwDwG25Jv6v5z94fcTrBFuC67m1ojJnTdA0ZcoUtmzZwvz5NV8/qaamT59OTk6O/nXoUMWuUSFE7fAOz3lnsRGWgNlowGhQKs37qS0lTjctDd57akNmNyb5VtEOsNR+ArTZWDp0tlVNAKCbsp9XftrFRZ21P+gm9NcCHmu5niZzuSDKZKy6+vMDozvw5sRevHVDHx66WKvRdMAbNHkKhl7eRhuiW3l4JemF6af5RGfOOzx3zBUKQDRZ+j4DbroqngKnLZp20JSWp5VayKc0kd8frfq7CScXGUqDyX3uGP4X8xC39riNnlE967WdompnRdA0depUFi5cyC+//EJcXGnxrpiYGOx2O9nZ2T7Hp6WlERMTox9Tfjad9733mPKsVivBwcE+X0KIumH0LPsQq2RqG0K0nl2TQdF7Ysg+WKv3VFWVYoerdHjO09PkbzFiDl+FOXwlGIorDHHVhrKBz2a31oPV3bCPD9YeZOk27d+mdlHaosDlh+d6xof6XstQ9T/RNrOR0V1jCfEzE2jTgr8U7/Bc1gFAK6jZM7InLtXFl7u+rPQ6Q9tHVu/BzoA3ODziDZqU0qCptXKUQKUYzAEQ2bHO29KQthzRephKMOP2fPwGoAVSPZU92vcBuKrkMYbZX2KnX88GaaeoWoMGTaqqMnXqVL7++mt+/vlnEhMTffb37t0bs9nMsmXL9G07d+4kJSWFpCQtcTMpKYnNmzeTnl76V9TSpUsJDg6mc+fO9fMgQogqDW6vBUbNPTWavEuVGA1KaQ5O3jFwVKxhVF0rdh1n0nvr9TpITreKWy2tQE5EG892J9ZmP2OLXoTJfy9mU+2v41U2aPImdA81bCKQQn17eKA2DFc2aLq0R3OevKKrz7UcVdRkKs/fk6ulB02ZpUvTjO84HoAPtn2g9zaVLTjqqiTXqrZ5n/OYOxSAqDJBUx9vbarmPcFQ+0Hs2cSuFxFV9PXnAjyB0mDjFgAWuAbwu6r93rjVuv/ZiJpp0KBpypQpfPzxx3z66acEBQWRmppKamoqRUXaP3whISFMnjyZe++9l19++YXk5GRuvvlmkpKSGDBAm0kwcuRIOnfuzA033MCmTZtYvHgxjzzyCFOmTMFqtTbk4wkhKC32nWDy9jRpQdOizcfIJIhc1Y8FAf5c9u2V3PPLPWzP2F7je0x6bz0rdh3noa82A5Cao30Q6TlNnpyl31J/QzEW4XYG4szvREyw7QyerHLGMjPbktX27HPHEKCUMNiwWd/u7+nhKpvT1L1FCGEBvknQ1S06GeqnJXKneKqsk3UAVJWcQgc5x7tgcSZQ4Cjg2fX/AaCwpDRo8uZR1SXv8Jw3ETxY+f/27ju8ijJ74Ph3Zm5N750QOgGSgJQAgoCAoKLi4mLBRbCiIuvaflZQV0XdxYLrLuu6grrWdVEsiAqoiNJ77z2FUNLbvXfm98ckNwkECJDO+TxPnueWKe/cKPfkfc+cU4QPxbRS0nnR+ra5UUK/Oh9HQyv1VARB5bWafCkCDC5VzdymRXqydxuXR4KmxqZBg6Z//OMf5OTkMHDgQKKjo70/n3zyiXebV199lREjRjBq1CguueQSoqKimD17tvd9TdP4+uuv0TSNPn36cPPNNzN27FieffbZhrgkIcQJ3LqOnVIC9LLk17KgyZzgUHjbP4LHI8LYU3CI+fvnM27eOA7knVuOU3pOEbuy8nlj4Q4CKCBUMRudli/P/Zb2mzmmvE5MHtGlHjrGKyzUzYrXA9WKu8XKZ4YqzzS5zqOVTERZ8Le/vOxASS7kH2bGol08/vkmju+/CsNQ+WHf9/yW9luVc00dlXTO562p8usswOmdYYlQjjPH9lTFRt3H1fk4GlpppXY15bWafCmhq7KLJHUvxYaVhZ5u3m3uvKT2blAQtaPBl+eq+xk3bpx3G4fDwZtvvsmxY8coKChg9uzZJ+UqtWzZkrlz51JYWEhWVhZ//etfsVjqtsKtEOLMcopc/N//NhCtmAUfsfqCI8j7vsV/AzPDzb+mB/u1omNIRwrdhUz5bQq6cfZBhN2iMXjaz3y68mBF4rlvONjN+jjrDpuBy7Srr+XWfq1OdZjzdlulYy/WzaBkuLaciLIEaGc1QdM/fjJvu//6vnObcbl7YBtKsFUs0WVt9R5TL4nFddxMaXhzzZveL2+bRfXOAtWlyrNv5bNN3ZUdBCjmkuUCvxEQEFPn42hoMYEVM5vlM00+SjE9VLMTxhKlK0fLquTPf+ASeiaE1P8gxWk1ikRwIUTzdOd7KwGIKQ+aAuOgbHZHseTiiDaTk2/KyWNSXgSvDnwVp8XJiowVvLPxnbM+X1ql3m4nJoEXu4vZfMzs4dU1vOs5XE3NVQ6GftW7sEWPJ1Ap5G7Ll4DZpw6qLs+VJ0v7VmppkhQbWONzXtPVDDp2GmZtp5KMqsucpUcGYlcdrD+ynt/SFpvn1Or/K+BwWdB0nbYIMO8Se9v/nnofR0NwVcofKyybafKjiJSyOlWF4Sne99tG+Nfv4ESNSNAkhKgzy/aYeUwVQVNFscbhfXahaMX4FwXx0LHj5O5eTZx/HJO6TQLg9dWvM2/vvLM639GCii4AJwZNm45uwq27CXeGE+t36qKRteHWiytmmlxYeMV9HQDDtBWA4V2eUxTFW4bg83suBiAh1Me77/u39arxOY8XmHWgdpUFTR/PnV/lfcPjz+DYawH4ZIcZkJ6quGZdyiQIgD6aGcDO8VxMpRSrZq3y3ZFHMe/ajlSO01Uxg6Y038SGGJY4CxI0CSHqXAyVZpowl+bX55hf6pZjqVgpK35pGNyUeBPXtTeDjFkbZ53x2IWl1TfnPjFoWnt4LQAp4Sl1nssU7m/nwaHtvc8X6cnkGw5ilGOkKLuqVCb/19ge7H3xSlqEmMGSoijsffFK9r54JUE+Na+O3SPBnMHZoZtBUzulapV1X4roWtweTdHYnrMJxZbVMEFT2UxTuZVGe0preJdgU3f3gDbex7vK+i8O11bQQs0CReWAT5dT7SoaCQmahBB1rqLcgFmj6VD+IXJdRzEMjcy8XuiGYua3FGShKir3dbsPq2pl09FNbDpSfTukch8trz5pvMUJQdO6LDOfqb4KBVaOy0qw8aNunvdybQV+9rooqqkyqEO4txlyW7Win58fhXxte5wbl99Gbx/zd2ANWNsgQVP58iGA21BZp7ehxHVhBE2Vg+Wduvl78pZciEpGt/k2xLDEWZCgSQhR57zLcwHmF+aGI+bt93pxNCWGb0W7kSPmF0iII4TLEi4D4IMtH5z22MWuE9d2DILIo4NaFkyFtMEwDG/QlFIpb6QuZeaWVHk+z2MutSWpe3HUQVFNgACn1TuDEaFkE4BZsuAuy9e0Us3yC1emmZ+xNXCNd5mwPi3RO5t3+AGzPf3Jx+eCmWmqbLF+wqxS55FMHNSOcH87EwfVbQNlce4kaBJC1LmKauBm0LQ+az0AniKzncjusi/60szt3n1uTrwZgG/3fMvRoqOnPPahSsnfvhSx1zGGtY67iFSycaNBREcO5h3kWPExrKqVTqH1U/S2cgFJgIV6V64oeYEJypN1ds4gp5V8fEgr6+nXVjlEOMe5XZvr3WbI8UxsWFFtx8g2NpzqUHXmoBHO7a6HOJb6CE+6bwWq3orf3C180Gy8e5wA/lD6KBv1BDLjhkPve4kKdLD88cE8NKxDA49SnIoETUKIOmZUlBwIMHOaTgyaymdHNq9b5t2rS1gXOoV2wm24WbB/AacSG1TRx6unurXKe8UDp4AzmDVZawBIDE3EptU8T+h8jL+4akmDIhxsNhLIq8Os57UHzVpYO8vymtqqh5hg+RqnUsoqvR0z3cNwGgZJx802Ltn2s0u0Px+Vq53/qHcjv9efKMUsyllyAQVNrcP9vI9/0ZMZUfoCweM+Aov532Xd1w4T50OCJiFEnfKnyNtTi4AYSj2lbDlm3g7vKTLza9brZoChpa2qsu+whGEALDyw8JTH7xRT0TsyWaloH/Kkazx+A/8IwMoMs/RB98ju53MpZyUxOoB1Uy6jf7uwejunUdZ2ozxvKFnZzUjNLC/wqc+NLNPNu7P+ePwYJUcGUHRgXL2NLfiEpHatUjPiyncMXmjuH9KuQXLLxLmR35QQos7YLap3likHf7D5sOXYFly6iwBbEIbLXEZabbQDoKOxG1zF3v0HxJlLGSvSV1DoKqRalTpNdFN3ADDZdQsjbquoNr0iYwUAPSN71s6F1VCg01ovxSPLleco/VJWUPNmywJClTxyDR/2BaWyQjeXfbopB3Bm9SfSr+Z1oM7XiRMoFlXhswl9uKxTJK/f0K36nS4ADZFXJs6dBE1CiDqjKBX5TFlqKFCxNNchqAtgfpMeMCLIMgKxKR5IX+vdv3Vga2L9YinVS72Bz4kqGs4adC0rErhWb0tqKzMgS89P52D+QTRFo1tE/X853zWg/lph9CqrIP2LnsRRo6I4or39pSzdm8NRAtmtmx0Vuqk7+b/hHettbCdSFYUeCSG8NbaHt9zChWJsn5bex/UZVIvzJ0GTEKLWvb90H7e/u5Jil04f1SwZkKWYQdOGLDP5uENQ50p7KKzVy+4YSltDsctDWnYRiqLQL9ZsK7Lo4KJqz1XeCT6cbIKVfDyGwsjLhnpzQ1ZmmktznUI74Wfzq/YYdalnQgg3pcbXy7lu7m1+Gbux8IlnkPd1e6fLvY/XlM3q9VC3cW23ui3yWVnHqKoVri3qhZu7U/lzl6W5pkV+W0KIWvfUFxuZv8W8xX2oauYpbdXMYo/rj5gzTe2qBE2wUU8wH6StJXHyPPq+uJCER78hQjNnhxYdWuTN2amsfKJpUKg5o7XPiGR/XkVicfkMVY+oHrVwZecm3M/uffzxnb3r7Dz+Dqv38Qz3CBZ6uvKNOhCSRnvbrCz2mAnZEy1zUA4sq+4wdaJyAjRQZ2UXmgJrpfY1tgZoZSPOnfy2hBB1JpzjtFHTAZhnu4wjRUc4lH8IBYVBCRVJ2X3bhLLRSADAk7aOyrHRC7Nd2DU7GQUZ7MnZw4nKA6nWZXWIdhvRuDwnB031nc9UWZh/RdDUu3VonZ2ncvHEXPw4cvV/uOyJz8Fi46VRyQDM1VMrlu5WvF1nYzkT+wU8w1L52u3WC/dzaIrktyWEqDPl1Y63kcCTNwz25jO1CWpDsDOAHc9fzu4XruCqlBi26ObSknJ0BxYqtUYxrMT7mLNSS9KXnHQOT1nQFKWbFcAPGBHEBptlCBo6n6nc9T1aMOqiOKbfWL9jGJwY4Z3VcFg1eiYEU4KNe11/5HttAHQaWa/jqUy9gJfnKi/JyUxT0yK/LSFErfpg2T7v457qNgDa9xxKUlygN2gqr8pt1VRUVcHHppFOCC6sqIabKOV4lWNu2Gk2tf0t7beTzle+PBepmzNNB40wuseb/c3K85kSQxIbJJ+pnM2iMm10ClenxNTredUTbllbsdf8XJfqnbiz4C5IHFGv4xGmyr+XE39HonGToEkIUWsMw+CJzzeWP/MmgSvxZh5PeT5TUlhSlf18bBYMVLK0cADilKwq73sKzOTlFRkrcHlcJ50TINxjBk03Xdaf1LIlMO/SXFTDLc01pMb2hTx5RP1UY2/sIgIqlmtzi12n2VI0NhI0CSFqzRsLd3ofD1TXkqgeoFSxQ+uBeHQPG4+YAVVyeHKV/XzLcnEyFDNoisVs8JugpLPXcRMveuYQaAumyF3k7SFXrvzuuTC3GTS1aZfofa8xJIHXt35tK4ppqo3sX/jxFyfw6OUdef+2Xg09lAZlt2gM7xxFXLCTwR0jG3o44iw0sv+lhBBN2Ss/VPSOu9vyFQDZXcaBbxg7s3dS5C7C1+pL68CqtYt87BbA7EsGFTNNT1jMZr2jLb8Q6zbrC52Y16TrYKeUIL1sSS/YzI0qz2dSFZWLIi6qxats3B68rL33sY/NUuW9WeMrZtzqs1J5OUVRmDCgDf3bhdf7uRubGX/ozuL/u5RAH+uZNxaNhgRNQoha11nZS6q6FZehYe17D4B3hqhLWBc0tert5uVVkQ/o5hd5rHIEBZ2h2mrvNt1LzaWmpWlLq+zrMQxiFXNmCps/OIIAWJFpzjJ1CmmY+kwNpVt8MM9f24W/3dQN7YRk64EdIvjzNZ1pH+nHzHEX5pKlEOdDgiYhRK0ZdZHZkPcKzQxsvtN7YAsxXytPyq5u1qc8aNrrNnOR4pQsWiqZVbYZmGe2Y9l4dCMHcg94XzcMgwgl23ziH+Xt11EeXKVGp573dTU1Y1JbMiK5+qTzP/RJ4Ps/DcAid20Jcdbk/xohRK0pcpmlAvqrZtXvhZ5uOKwahmGwKtMsclld09zyZaQ9ZUFTCyWLzop5F16eYZYP6JGzhosje6EbOv9c/0/vvroBYeSYT/wiyl7TWZpuBk19YvrU6jUKIS5cEjQJIWrN3A0ZhJBLF2UvYPZA01SFg/kHOVx4GItiOSkJHMCvLKdpv2EmxcYoR0gu6yP3lacPG/UEVMPNvQFmkvfXu7/mQJ4527Rk11HClLKgydfMlfnl4C9kFWXhb/Wna0TXurpcIcQFRoImIUSt+Ga9Wfm7v7oeVTHYrLckC7Ne0pI0M3k7KTwJp8V50r7lxf4OE0SRYUNTDIaoZj7TFiOeFXoHAAo37EYp6ojH8PDvDf9G1w2+XJdGePnynF8kRe4iXl7xMgCj2o/CrtlPOp8QQpwLCZqEELXi3g/NIKezai6rLdM7et8rL0rZN6bvGY6isLdstqm8/cp2vQU7DDMvquDgJvIzzUa0c3bOIaPATAAPIxeAIp9gXlz+Ivvz9hPpE8mdyXfWwpUJIYTJcuZNhBCi5torBwHYbsQR6mvDpbtYlm42hu0X2++M+6/T25ComktvB40wNhit0HUzubudcgi9qCXBWhuOe3bxwabZQByhSg5pFo1b0r4iw5UHwJQ+U/C3+dfBFQohLlQy0ySEqJHDecW8+eNO8kvcp92urXoIgPtvvIpFjwxi3eF15LvyCbIHkRiSeNp9Ab7XKwpRjit9hEIc7DBiAWihZuGkmDYOc7Zp5vpPAQOblsvdkRFkuPIIdYTybN9n6R/X/xyvVAghqidBkxCiRvpOXchfvttGlynfnfTe5jRzecyXIuLKaiZFtk7B127h0+2fAjAgbsBJ9Zmqs1Dvxsuu0XzfaSovTRgNQDb+HDECAGijpNHK2Q+H5kCzH0Zz7uVvUSXstlmJsAfx4ZUfcm27a2vlmoUQojIJmoQQNeIu74xbjSum/wJAW8WcZcIvEnxCOJR/iO/3fg/AmMQxpz3+/w0vz4FS+LtnJDEXj6F7y2Dv+zvLZps6qftwWny5LOEyAHwS/skWp4qfrvOv3n8mxq9+m+IKIS4cEjQJIWpNe9XMZyLcDICmr56Ox/DQO7o3iaGnX5q7Mim6ynOLVrWa9TLd3P9q9TfcHoNJ3SahuwIBcOo6f846SuvIlNq4DCGEqJYETUKIs6afYtbJO9MU3pHFhxYzd89cVEXl/ovuP+Mx7daq/xxZTmgBMttjJpH30zYRvO87LEYQBbsewLH3Rr47kMaQolJvCxUhhKgLEjQJIc7ajW/OB93jfd4l1sw3alcWNOWFtuKZJc8AcFPHm+gc1vmMxwxwVG1capwQl+0zoljkSQJgQuYU3pj6EAnBgYQXBxKs6+AT6m2hIoQQdUGCJiHEGZW4KwKki9UN/PvIzbhf7wY5ZpDkW9YGpbf/YQDeLthFRkEGLfxbcF+3+2p0DqetapJ4dXNZ090VCd5PW9+jT9EiQhSzxAC+YTW9HCGEOCcSNAkhzuiLNWZwpKAz1fI2fkoxlpx9GItfBaDY5SGAAnwK0ziiqXyY9hMAj/R8BB+rzzmd88SZJoCVRkfuKr3f+3yA+9eKvnM+oed0HiGEqCkJmoQQZ3S0oBSAS9QNxKtZ3tcLN3wFhkFhqYdEZT8AM8PjKPaUkByWzIC4Aed8Tj9H9bV3v9N7MapkCgDd1W10U3eYb0ScuQaUEEKcDwmahBBnFBdszhaN0eYD8KH7UooMG77FGZCxniKXh07qXo6qKp86zbyiu7vejXIeOUaxQSf3qCu30WiFy9AIV3K5XvvJfDHhzNXGhRDifEjQJIQ4o5zCUkLIZXBZE91/ey7nF91Mys5eM4eDx4tIVPbzdlAAxRh0Du3MxTEXn/P5EqMDTvt+CTa2GPEAOBQXWH2g1bnPagkhRE00aNC0aNEirrrqKmJiYlAUhS+++KLK+4ZhMHnyZKKjo3E6nQwZMoQdO3ZU2ebYsWOMGTOGgIAAgoKCuO2228jPz6/HqxCi+XtqziZ6qlvRFIOtegt2GbH8oHcHIHPlFwAE2/fycYDZ621St0nnNctk1c6871q9bcWTlBvAGXTO5xNCiJpo0KCpoKCAlJQU3nzzzWrff/nll5k+fTozZsxg2bJl+Pr6MmzYMIqLi73bjBkzhk2bNvHDDz/w9ddfs2jRIu68UzqbC1Fb3B4dgF7qNgBsrc0ZpJ88ZiHJdp7dhJPNl6GFuBWF/hE96Bvb97zOWTngahXmW+02X3t6VzzpPv68zieEEDXRoEHT5ZdfznPPPce1157cJ8owDF577TWefPJJrrnmGpKTk3nvvfdIS0vzzkht2bKFefPm8fbbb5Oamkq/fv144403+Pjjj0lLS6vnqxGiedqVVQBAP3UDAK17DOPabrFkEcwWvQWqYnC130f85OtENQweTH38vM8Z6mvzPv7g9lTG9U3wPi9vrbLcSOT6kqcYU/oYRCef9zmFEOJMGm1O0549e8jIyGDIkCHe1wIDA0lNTWXJkiUALFmyhKCgIHr0qOiKPmTIEFRVZdmyZac8dklJCbm5uVV+hBDVy8gtJpqjdFAPgqJC64GMuigOgDmeiykFVkWay+a/M3xpE9LunM/1jzEX0TMhmD+P7OJ9LSbIydNXd2b+AwNY9vhg/ntXH3ommIHTMiORX8tyq4QQoq412qApIyMDgMjIyCqvR0ZGet/LyMggIiKiyvsWi4WQkBDvNtWZOnUqgYGB3p8WLVrU8uiFaB4OHi/klneWc4m23nwhtgf4hHhne7709OLZsBB22WyEeDz8Mbz3aY52ZpcnRfPfCX2rvXOubYQfkQEOVFVhZLdY7+sn9qwTQoi60miDprr02GOPkZOT4/05cOBAQw9JiAbzzuI9vPrDdr5al4bnhJ5yU+duBWCAus58oa0586tpHvwjF5LT5n3m+PuhGAaTjxwjKP7c75g7G5VbrnyzIb1ezimEENVXj2sEoqKiAMjMzCQ6uuIvyczMTLp27erd5vDhw1X2c7vdHDt2zLt/dex2O3a7vfYHLUQTM39zJs9+vdn7/LNVB3n31l7e599sSEfDQz91o/lC28FkFmTy0M8PQchaVED12HjgcCk9ogZAxxH1Mu6CErf38TVdY+rlnEII0Whnmlq1akVUVBQLFizwvpabm8uyZcvo06cPAH369CE7O5tVq1Z5t1m4cCG6rpOamlrvYxaiMdp4KIeFWzOrfe/291ZWef7z9qyTtumq7CRAKcRwBnMkOJ4xc8ewNmsthsdBcdoocnY+wZTsF9Fu/ABs59Yy5WxFBFT80fPsNV1Os6UQQtSeBp1pys/PZ+fOnd7ne/bsYe3atYSEhBAfH8/999/Pc889R7t27WjVqhVPPfUUMTExjBw5EoDExESGDx/OHXfcwYwZM3C5XEycOJEbbriBmBj561MIj24w4o3FAPz7lh58syGd2asPEeRjZeljg73bXaRs53Xrm6w02oN7KFhsrNp3DIABmrk052k9iEcWP0pmYSYtA1qyafXvMVwVTXJ9T2i4W5ciAxzexz71eF4hxIWtQYOmlStXMmjQIO/zBx54AIBbbrmFWbNm8cgjj1BQUMCdd95JdnY2/fr1Y968eTgcFf9gfvDBB0ycOJHBgwejqiqjRo1i+vTp9X4tQjRGi3ZUzBzd9m7FrJKl8AiDn3ofCGe4upxXrX/HqZTSgixY+x/ocSuj/mHepTpANZPAX/NVWZGxHB+LD9MHTWdhGDz3zRbvMc+nmOXZ6hDpT1JsIHHBTqxao50wF0I0M4phVNdL/MKSm5tLYGAgOTk5BAScvn2DEE1JwqPfeB8PVNcwSvsFgGHqCmyKh116NG3UdEoUeCcwgA12OxG2AEZc+S+uey2DEHL5ymci7wf580GgWe37lYGvMLTlUNYfzObqv/0KwGvXd61yR1t9MAyjXgM1IUTjU9/f3402EVwIUXtu1n7gGcssNKXq30ht1HTyFIXfR3TkkE9B2asu/vfdOJwtW2JXjzPcUbHUPbHrRIa2HApAclwQL1ybRIsQJ/3bhdfXpXhJwCSEqG8SNAnRTJVPIg9U1/KcdSYAv3o6k0Ugu/UYPvJcSk/rclbErabYkY3hsTPyuIJmP8Lnfv5YfPaRD6iGQVd7GHdc8hz9YvtVOcdNqfH1fVlCCNFgJGgSopnalpkHwG3aXAA+dg/kcfftPDgskT0ZeRzdupqf41aj2rIJdYSxf/NNlLi38xfrW1x6zIe7HFfwjPJfhhblEDL2nxBbPzWYhBCisZIMSiGaoWnfb2P4a78Qp2TRXzNrLP3NM5LIQB/uHdSWUf1yCGv/Fqotm5YBLfnPFe+jl8TwnacnxYaVAfpBJuQe4fqC44T4hEP8+VX6FkKI5kCCJiGaoTcWmqU8fq/9DMA6WzcOGhF8eHsq72x8h0kLJ1HkLqRXVC/+c/l/iPM3e8nl4su3ulnc8n7LbPNgna4BVW7rF0IICZqEaKY0PPxe+wmApBETWfnkIN7eNpVXV72KgcHo9qOZMXQGQY4gAF78ndn49r+eAVUPlDS6/gYthBCNmOQ0CdFEGYbBLTNXEB/i5LmRSVVeB3OWKUY5RoktmNK2g3h08SSWpS9DUzQe7fUoN3S8ocrxjuSXALBE78RKvT091O3Q+Vpo0bP+LkoIIRoxmWkSool697e9LNqexX+W7mfp7qPe11s9NpcACnjY8gkA+f0nMm7+nSxLX4bT4uSNS984KWACGNIpEgADlZtKn+Cqkufgd2/Xz8UIIUQTIEGTEE3U019VNNrdsC+LYpeHSR+tAeA+y+eEKnnkh7VnwvGlbD++nTBnGLOGz6J/XP9qj9cxKgC1rPRRKVY2GK1Bk8loIYQoJ0GTEPXIMAye+HwDM3/d433tcF4xh7KLOJfi/Co6f7a8w60/92bhC9cwf91uOir7Ga/NwwX8KS6erce3EeIIYeawmXQK7XTa4y19vKIf3ZDEyLMejxBCNGfyZ6QQ9Wj1/uN8sGw/AAM7RNAyxIc3Fuzk/aX7ANj5/OVYTtNLzTAMbp21gh+3mT3l/myZyRjLAgCuMH6hu30DbjQ0ReeJtikszdmO0+Lk70P+TkJgwhnHF+HvYM1TQ/lqfRpXp0jTayGEqEyCJiHq0eHcEu/jQX/9iTByOIo/FnQAtmfm0ynm1P2TDueVeAOmIeoqxlgW4DEU3vNcxrXaYiKVbAD+EhzBV57jaIrGtAHT6BzaucZjDPa1MbZPwtlfnBBCNHOyPCdEPTpwvND7+D5tNisdd7PdfgvL7fdwmbqSjNyiU+5rGAapL5izSnHKYV6x/h2Atz1X8Iz7FkaXTuY3Tyd2JF3L+0FOACb3mXzKHCYhhBBnR4ImIerRrF/3AtBV2cmD1s8AsCoeQpR8hmirSc8pPuW+y/YcA0BBZ5p1BgFKEe7YXgyf9DcAthsteCnqr7QbNYtpA6dxX7f7+F2739XtBQkhxAVElueEqEcxQU7ScoqZaPkcgM16S37Qu7NJS2SBqyNPufVT7lue9zRGW0CqupUCw47PqLdoGRJC95bBbE3PZcbNFwEwtOXQur8YIYS4wEjQJEQ9KnJ56KzsZYi2Bo+hcK9rEnuMaFqHF+BJ13h9wQ7GXdyq2n1DfGzYKeV+y/8A+DLsDm4MMbf9z22pFLs8BPva6u1ahBDiQiPLc0LUMcMwvOUENqXlco/lCwC0pFHsMaKwhf7E4cDnsASsJaDoAO65/wcr36lyDLdH5/2l+7hCXUaYkgsBsdx4zzPe9502TQImIYSoYzLTJEQd2pKey+Wv/wLArPE9SVT2cbm6AoDSiydxU+QnfLV7HgCa4yB9Co5hWf42BLeCi8axfF82o/+5xHu8Qdpa80GPW6XwpBBC1DPFOJeKes1Mbm4ugYGB5OTkEBBw6tu9hTgbpW6d9k9+C0AUR5lk+ZzrtR/RFIOcDsO5L8jOmsNr0BSNgvQRuI73wUkxyx334k8Rn3d+gz+tCiWAfK7QlvOxZxAAu273RYtOAt+whrw8IYRocPX9/S1/qgpRywpK3Lz6w3beXrwHBZ2btfk8YvkEf8UsJ7BdjecFf5U1h9fgb/Vn2sBp3DjdvDOuCAefuS9hvOU7kje8wMuW9lypLcVXKWGfEcngy69Da9u6IS9PCCEuWBI0CVGLdN2g85TvABisruIhy6ckqgcAWK235SX39cRfdpRV++biZ/Vj5vCZdAjpwB96b/TeHfe2+wqu1n6jjZpOGzUdgC16PCo613aLbZgLE0IIIUGTELVp/CwzX+kKdSnTrX/DoujkGU58Ln+G7MARJOW8yyfb5pqVugdOo0NIBwAmX9WJEcnRXP/WUg4RzrWlz3K39iUhSh7JV0/i0WWhdIsPJtTP3pCXJ4QQFzQJmoSoJUfzS/h5exaD1VW8bn0Ti6Izx9OXp11jebdNZ95cMontx7cDMKXPFPrG9PXua9VUUluHclNqPB8u28/oof3RfQeTq6lE92jBnJ4NdVVCCCHKSSI4TTsRfPmeY7yxcAcvX5dMdKCzoYdzwfpp22HGzVxBGDnMtz9EkFKAnjSaT+MfZFPxZ8zZ/SkGBkH2IJ7o/QTDE4af8lge3UBTlXocvRBCNE2SCH6B8egG+cVuAn2sp91O1w1+3HaYDlH+xAY58egG6w6at6OnKDv5/C9/o5VPMZePngBtB9fT6EW5cTPNZblnrDMJUgogKpmfuo/mXyvu5XDhYQCubnM1D/V4iGBH8GmPJQGTEEI0ThI01bPZqw/ywtwt/OW6FNYeyOb1BTuwU8r//tCGLp2SQDn5C3PexnTeX7qPX3ceBczeYynKbjQ8vGqdz7Xar+aGpZDz4Xx2XHQjuV2uJcIvmjZBbXBaqs5Abc3IZVtGHtd0laTic7F8zzFG/3MJDqvK5meG49LN1if3aF9wpbacDIuVl1q2Y/7PDwDQwr8Fk/tMpnd074YcthBCiPMky3PU7/Re58nzKCj14KCEhy2f0lfdSIKSiVMp5YCjPSFXTMY3aUSV4Cnh0W8ACCOHl6xv0Uvd6r19HeCAZuFV345s9i3ikMNV5XyqopIUlkRSWBJtAtvy9Ur4aaNKrJHDMG0lT4y/Dq3twPO6Jo9ucP8nazEMgzdu7IZSTeDXHEz8cDVfr08nnGxut3xDL3UbxYaNg0YYNsXNYMsSPg3w462wCAp0FxbFwrgu47gr+S4cFkdDD18IIZqd+l6ek6CJuv/Q84pduD0GmqaQ/PT3dFb28Lr1TdqqaVW2O6KpfBDgT2FIW4w2A/EoCrsyXfy2M5cQo5DfaYtwaIW4UChQNHJVK9sdTvZadQwqfo3RLg9hHjcHrFaytWo65RgQ43bT1uWiS0kJye2uJmnoVAJsZ3ftC7dmcuuslQCo6HRU9jOoRzIPj+rPLzuyuOv9Vcwa34terUIY+srPHDheSGJ0AI8O70hq69Cz/yCBwlI3czdksPbAcR4e1pFA5+mXNavj9ugs33OMrvFB+NhqNtn6+Ocb+HDZPkaqvzLF+h7BSj4FisJWm42dNisb7Tbm+/qQr5qfd3JYMpP7TPbeHSeEEKL2SdDUAOryQ9d1g9aPzwXMwGKC9hV/snyGVfGQaQThvvQZbp1XRJYRxHXO//FRwrZzOk9qVCr79rdn59544vUCXrX+nYvUnaRrGv+0d+ZHazQ2RxpF9mxytOpngloHtiYlPIWk8CTaBbWjc1hnrOrJQYnbo2PRVO8MmIrODOurXKatAuC4EsTXrh685bkSOy5S1c2UWvNJsxqojjSsWiGDUoaQ1Plq2gW3w6H58MoP2+jdOpT+7cJr9FkmKbvpFlREm16XM+W7/Xx4eyp92565QnZBidtbR8lBCSnKbm7sHkmLlq2Z8L+9OJUS7u3fAofNyob0Aq7vEcecdVtZtW0Z/azLCXTsZYvNymq7HwetwAkfZavAVtza5Vauan0VmqqdcTxCCCHOnQRNDaAuP/QDxwrp//KPJCu7eNY6k67qbgCWOfqTN+RlhvTohGEYXP/WUlbs30+LsP8xXF2Dv1ECKGwjknA1C48KOMLYF9SPI8VWhnWKw2FxkBCQQEp4CpG+kQAcLyjl1fnb+WDJbiZZZjNR+wJNqforPuIfxQ8Jo5i8Ezr5/IbLmcEB68nBUaA9kEEtBjEkfgh9Y/pi1azeQCnQaSWnyFwKfNjyMfdavgRANxQ8isEWu42lDgdLnQ422G0Uq9X3hlZQ8JSEYnic+CglhOolXBqTgG/IxQzqdAltg9ti1+zkFLlIeeZ7Asjnaet7/E5bDEC+4WCpnkimEUiAJYtsiwe1QxcKo1rgCGlNuG8Ekc5YdqU5GJaYQNLT32PBzb3aHO62fImmuMhXVQpUhRxVY7fNwi6r1fyxWcmwWHCdZrkxzBFBh5D2tA9px8UxF9MzqieqIn2whRCiPkjQ1ADq4kMvdnl4df52/vmzmbD9o+0B4tUscg0n6hV/wa/XzSclfe87WsCAv/xEJMd4zvoOQ7XVFW92GgnXzgBrzcoKvL9kL0/N2URnZS+TLLNJUndz0AjneLvRDLvhXrA6eei/6/hs1QFesLzNcNvPrLfb+dkewlq7DwccBiVqqfd4QfZgRra9hr99GYpRGg4YdFAOcJfla0Zqi9lttfKwdSjbfQux+OxDVz1VxmMxILJUJaTEiVNXUW1Z7LZZOGw5/fKYpqiEWONJOxxCMPmkWDfjUV3kKyo5qgW3alCsKGSrKsYZcqnsbgtOjwWbWoxL9ZCvqqcNiCrz9xgEqA46RCbRMaYXiSGJdAnrQphT+r8JIURDkaCpAdTFh24YBq0em+t9PkRdxcuJuyka+DSxLRJOuU/qCws4nFcCGFyqrqGjsp+JN/8en45Dq72z7nTKZ4XuHdSGh4d1POl9M2g6iIaHByz/5XZtLnbFDYAbWOEXxHdxyXzvySbPne3dL6LYThs9jyDdnKVZZ7eRq1VdijI8DgKNDozqPJj+LXqzfo+VAe0j2Zyex6SP1pCs7OJx64e0t2xju81KoapSaNhYpcZxzF5Eri2fHTYrOdpZLHEZ4HDbiXbrdHDngqKTYbGw12Ij23KGz86w4m/1o11Ia/yUWPq27EL74LbE+MYQ5gzDbpFK3EII0dhI0NQA6upDv++jNXy1zkz2/vCOVPq2ObtZifwSN3aLirW6ZO5a4PLotHviWwBiAh0U5Byhm7qTbuoOrlSXeRPVjxtOfvZxMj9A4xenA72a4M1pcZIclswlcZeQFNKTCGc8sUG+J213KLuIi19cWPbMoKeyjWjlGLcO701e+EX84d21PDysA59/v4AJli/pY13GNoeFHTYrmgH20ESCet2GiyAe/nQbd1+SyNUpLQlxhBBkDyLteCmvLdjOL6s38bz13948q2xUPte6cEj149Ie3QnvfAV+Qa3wsfrga/XFokr1DSGEaGokaGoAdfWhG4bB7iMFtAr1RW0CBQuLXR5W7z/OTf9ahoLOpeoaHrV8TDv1kHebTE1jni2GT43e7FRCsVvtfDT2etqHtK82afxEhmFw1/ur0A3419ju6IbZfiQioOot+f9Zuo8nv9hILFn8wTKfS1o66DBoDFqbgTWacSufZYvkGL/dmUC2M55L39rGy9clM6xz1Nl9MEIIIRolCZoaQFNuo1IXCkrc3DprBUcLSrEYbqLzNjBuQAceXpDHEbeT6Td1p1WYL89+tZlXru9KbFDdtG85nFfMl2vTGNc3ActZzrZ9vuYgf/pkHV/cezFdWwTVyfiEEEI0LAmaGoAETUIIIUTTU9/f383m3ug333yThIQEHA4HqampLF++vKGHJIQQQohmpFkETZ988gkPPPAAU6ZMYfXq1aSkpDBs2DAOHz7c0EMTQgghRDPRLIKmV155hTvuuIPx48fTqVMnZsyYgY+PD++8805DD00IIYQQzUSTD5pKS0tZtWoVQ4YM8b6mqipDhgxhyZIl1e5TUlJCbm5ulR8hhBBCiNNp8kHTkSNH8Hg8REZGVnk9MjKSjIyMaveZOnUqgYGB3p8WLVrUx1CFEEII0YQ1+aDpXDz22GPk5OR4fw4cONDQQxJCCCFEI9fkyyCHhYWhaRqZmZlVXs/MzCQqqvoihna7Hbtd2mIIIYQQouaa/EyTzWaje/fuLFiwwPuarussWLCAPn36NODIhBBCCNGcNPmZJoAHHniAW265hR49etCrVy9ee+01CgoKGD9+fEMPTQghhBDNRLMImq6//nqysrKYPHkyGRkZdO3alXnz5p2UHC6EEEIIca6kjQrSRkUIIYRoiqSNihBCCCFEIyRBkxBCCCFEDUjQJIQQQghRA80iEfx8lad1STsVIYQQouko/96ur/RsCZqAvLw8AGmnIoQQQjRBeXl5BAYG1vl55O45zGKYaWlp+Pv7oyhKrR130aJFXHXVVbV2PCGEEKKpev7555k4cWKtHtMwDPLy8oiJiUFV6z7jSGaaAFVViYuLq/Xj+vr61voxhRBCiKbI4XDUSVmA+phhKieJ4EIIIYQQNSBBkxBCCCFEDUjQVIfi4+MbeghCCCFEo9C1a9eGHsJ5k0RwIYQQQogakJkmIYQQQogakKBJCCGEEKIGJGgSQgghhKgBCZqEEEIIIWqg2RS3rM1K3kIIIYRo/s72XjiZaRJCCCGEqAEJmoQQQgghaqBZBE2bN29u6CEIIYQQoplrFkHTu+++29BDEEIIIUQz1yyCJiGEEEKIutYsgqZbbrmloYcghBBCiCZGURRGjx5d8+2bS+85KTkghBBCiLMRFRXFwoULSUxMrNH2EjQJIYQQ4oIkdZqEEEIIIepAs6kI3kwmzIQQQgjRSMlMkxBCCCFEDUjQJIQQQghRAxI0CSGEEELUgARNQgghhBA1IEGTEEIIIUQNSNAkhBBCCFEDEjQJIYQQQtSABE1CCCGEEDUgQZMQotEbN24ciqKgKApWq5XIyEiGDh3KO++8g67rNT7OrFmzCAoKqruBCiGaNQmahBBNwvDhw0lPT2fv3r18++23DBo0iD/+8Y+MGDECt9vd0MMTQlwAJGgSQjQJdrudqKgoYmNjueiii3j88ceZM2cO3377LbNmzQLglVdeISkpCV9fX1q0aME999xDfn4+AD/99BPjx48nJyfHO2v19NNPA1BSUsJDDz1EbGwsvr6+pKam8tNPPzXMhQohGi0JmoQQTdall15KSkoKs2fPBkBVVaZPn86mTZt49913WbhwIY888ggAffv25bXXXiMgIID09HTS09N56KGHAJg4cSJLlizh448/Zv369fz+979n+PDh7Nixo8GuTQjR+CiGdLoVQjRy48aNIzs7my+++OKk92644QbWr1/P5s2bT3rvs88+Y8KECRw5cgQwc5ruv/9+srOzvdvs37+f1q1bs3//fmJiYryvDxkyhF69evHCCy/U+vUIIZomS0MPQAghzodhGCiKAsD8+fOZOnUqW7duJTc3F7fbTXFxMYWFhfj4+FS7/4YNG/B4PLRv377K6yUlJYSGhtb5+IUQTYcETUKIJm3Lli20atWKvXv3MmLECO6++26ef/55QkJCWLx4MbfddhulpaWnDJry8/PRNI1Vq1ahaVqV9/z8/OrjEoQQTYQETUKIJmvhwoVs2LCBP/3pT6xatQpd15k2bRqqaqZrfvrpp1W2t9lseDyeKq9169YNj8fD4cOH6d+/f72NXQjR9EjQJIRoEkpKSsjIyMDj8ZCZmcm8efOYOnUqI0aMYOzYsWzcuBGXy8Ubb7zBVVddxa+//sqMGTOqHCMhIYH8/HwWLFhASkoKPj4+tG/fnjFjxjB27FimTZtGt27dyMrKYsGCBSQnJ3PllVc20BULIRobuXtOCNEkzJs3j+joaBISEhg+fDg//vgj06dPZ86cOWiaRkpKCq+88govvfQSXbp04YMPPmDq1KlVjtG3b18mTJjA9ddfT3h4OC+//DIAM2fOZOzYsTz44IN06NCBkSNHsmLFCuLj4xviUoUQjZTcPSeEEEIIUQMy0ySEEEIIUQMSNAkhhBBC1IAETUIIIYQQNSBBkxBCCCFEDUjQJIQQQghRAxI0CSGEEELUgARNQgghhBA1IEGTEEIIIUQNSNAkhBBCCFEDEjQJIYQQQtSABE1CCCGEEDUgQZMQQgghRA38P+pMBmkvrPmNAAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Plot the moving average chart\n",
+ "df['MA_50'] = df['Close'].rolling(window=50).mean()\n",
+ "df['MA_200'] = df['Close'].rolling(window=200).mean()\n",
+ "\n",
+ "plt.plot(df['Date'], df['Close'], label='Close')\n",
+ "plt.plot(df['Date'], df['MA_50'], label='MA 50')\n",
+ "plt.plot(df['Date'], df['MA_200'], label='MA 200')\n",
+ "plt.xlabel('Date')\n",
+ "plt.ylabel('Price')\n",
+ "plt.title('SBIN Stock Price with Moving Averages')\n",
+ "plt.legend()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This chart shows the closing price of the stock (blue line) along with its 20-day moving average (red line) and two standard deviations plotted above (green line) and below (orange line) it. The Bollinger Bands are used to identify volatility in the stock price"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAHHCAYAAACiOWx7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC1xUlEQVR4nOydd5gUVdaH36rOk2GAGeIQJUlQRBkRUUQQMWNCVFDUXUVcw2fACJhdFROyriKYdU2sIhJkBUHAgIIISFBgUBjy5JmO9f1R3dVd3T0wA5M57/PMM1X33qq6Vd1Qvznn3HMUTdM0BEEQBEEQhIOi1vYEBEEQBEEQ6gMimgRBEARBECqAiCZBEARBEIQKIKJJEARBEAShAohoEgRBEARBqAAimgRBEARBECqAiCZBEARBEIQKIKJJEARBEAShAohoEgRBEARBqAAimgShHnPaaadx7LHH1tr127Zty5gxY2rt+pVBURQmTpxY4bE333xz9U6okowZM4a2bdua2qLvaebMmSiKwtatW2t0bg2diRMnoihKbU9DqAOIaBJqlTVr1nDxxReTlZWF0+mkZcuWnHnmmbz44oumcW3btkVRFOPH6XTSqVMn7rzzTvbv328aG/oPbu/evUbbmDFjUBSFnj17Eq9yUEVfkh6Ph+eff57jjjuOlJQU0tLS6N69OzfccAO//fabMW7ZsmVMnDiRvLy8Sj6RmiP0TEI/KSkp9OrVi2eeeQa3213b06t2qusz2rp1q+m5hp5t7969eemll/D7/VV6vYZESPRF/jRr1ozTTz+dL7/8sranJwhYa3sCwtHLsmXLOP3002nTpg3XX389mZmZbN++nRUrVvD8888zfvx40/jevXtzxx13AFBWVsbKlSt57rnnWLx4Md9//32FrrlmzRo++eQTRowYcVhzHjFiBF9++SUjR47k+uuvx+v18ttvvzF79mxOPvlkunTpYtzbpEmTGDNmDGlpaYd1rZrA4XDw2muvAZCXl8fHH3/M//3f//HDDz/w/vvvH/L4DRs2oKr142+v0tJSrNbwf3nV/RmNHDmSs88+G4D8/HzmzJnD+PHj2bZtG//85z+r/HoAV111FZdffjkOh6Nazl9TTJ48mXbt2qFpGrt27WLmzJmcffbZfP7555xzzjm1PT3hKEZEk1BrPProo6SmpvLDDz/EvLR2794dM75ly5ZceeWVxv51111HUlISTz/9NJs2baJTp04HvZ7L5aJ169ZMnjyZiy66qNLm9h9++IHZs2fz6KOPcu+995r6XnrppTptVSoPq9VqeqY33XQTJ510Eh988AHPPvssLVq0iDlG0zTKyspwuVz16uXsdDpr9HrHH3983Gf77rvvVptoslgsWCyWajl3VVFcXExiYuJBxwwbNowTTjjB2B87diwZGRm89957IpqEWqV+/IkoNEh+//13unfvHvev/GbNmlXoHJmZmQAmC0J5qKrK/fffzy+//MKnn35aqbmCPl+A/v37x/RZLBbS09MB3T145513AtCuXTvDzRCKM/H5fDz88MN06NABh8NB27Ztuffee+O6xL788ksGDhxIcnIyKSkp9O3bl3ffffeg85w/fz4JCQmMHDkSn89XqXtUVZXTTjsNwJhv27ZtOeecc5g3bx4nnHACLpeLV155xeiLjmnKy8vjtttuo23btjgcDlq1asXVV19tcpe63W4eeughOnbsiMPhoHXr1tx1112HdAu+8MILWCwWk0B95plnUBSF22+/3Wjz+/0kJydz9913G22R8T+H+oxCzJo1i2OPPRaHw0H37t2ZO3fuoR5huSiKQkZGRtzv6ssvv0z37t1xOBy0aNGCcePGHZYIjxfTFPr8li5dyoknnojT6aR9+/a8+eabMcf/8ssvDBw4EJfLRatWrXjkkUeYMWNG3Gfz5ZdfMmDAABITE0lOTmb48OGsXbvWNGbMmDEkJSXx+++/c/bZZ5OcnMyoUaMqfV9paWm4XK6YZ/f0009z8sknk56ejsvlok+fPnz00Ucxx4fc7xX5PJcuXUrfvn1xOp106NDB+K5Hs2DBAk455RTS0tJISkqic+fOMX9MCQ0PsTQJtUZWVhbLly/n119/rVAws9frNV68ZWVl/Pzzzzz77LOceuqptGvXrkLXvOKKK3j44YeZPHkyF154YaWsTVlZWQC888479O/fv1yhdtFFF7Fx40bee+89pkyZQpMmTQBo2rQpoFvI3njjDS6++GLuuOMOvvvuOx5//HHWr19vEnMzZ87k2muvpXv37kyYMIG0tDR+/vln5s6dyxVXXBH32rNnz+biiy/msssu4/XXXz8sq0NIHIZEIOhuuJEjR/K3v/2N66+/ns6dO8c9tqioiAEDBrB+/XquvfZajj/+ePbu3ctn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dxw333wz55xzDna7HdDd0Y888girVq0yxcPF+8PiUM9gz549lJaWxl1Q0rlzZ+MPHoDLLruM1157jeuuu4577rmHM844g4suuoiLL7643qwmFQ4PEU1CncBut9O3b1/69u3LMcccwzXXXMOHH37IQw89dNDjzjjjDAC++eabCosm0K1NodimCy644LDm3Lx5cy6//HJGjBhB9+7d+c9//sPMmTMrFJRelYnymjdvTvPmzZkzZw4//vij6WVzKCwWi+nFXh6Rf9EfKYFAgB49evDss8/G7W/duvVBjz/llFPwer0sX76cJUuWGBaUAQMGsGTJEn777Tf27NljsqwcDuXFg1XGOhnNGWecwUsvvcQ333xDjx49Dvs8laUq7yVkWXnrrbeMhRiRRH//HQ7HEQsJVVU5/fTTef7559m0aRPdu3dnyZIlnHfeeZx66qm8/PLLNG/eHJvNxowZM+IulqjKZ+Byufjmm2/4+uuv+eKLL5g7dy4ffPABgwYNYv78+XV+BaNw+IhoEuocoZf+zp07Dzk2tDqsqKioUtcIWZvGjBnDf//738pPMgKbzUbPnj3ZtGkTe/fuJTMzs1xRlJWVRSAQYNOmTXTt2tVo37VrF3l5eUaweciN8Ouvv8b8pR+N0+lk9uzZDBo0iLPOOovFixcbwb01TYcOHfj1118POWb16tWcccYZhyUeTzzxROx2O0uWLGHJkiXGKrhTTz2VV199lYULFxr7B6M2MjxHf19Dn/eGDRto3769Mc7j8bBly5YKCdqqIisri82bN8e0R7eFvpvNmjWr0flFP7uPP/4Yp9PJvHnzTMHqM2bMOKzzN23aFJfLZVjSItmwYUNMm6qqnHHGGZxxxhk8++yzPPbYY9x33318/fXXNfpchJpF7IhCrfH111/H/SsvZAYvb4VWJCHXUq9evSp9/SuvvJKOHTsyadKkCo3ftGkTOTk5Me15eXksX76cRo0aGS6nUB6a6DinULLD5557ztQesrqEVvwMGTKE5ORkHn/8ccrKykxj4z2z1NRU5s2bR7NmzTjzzDMN915NM2LECMPNGk1o3pdeeil//fUXr776asyY0tJSiouLD3oNp9NJ3759ee+998jJyTFZmkpLS3nhhRfo0KEDzZs3P+h5yvuMqpPo7+vgwYOx2+288MILps91+vTp5Ofnx6wAq06GDh3K8uXLWbVqldG2f/9+3nnnnZhxKSkpPPbYY3i93pjz7Nmzp8rn5vV6mT9/Pna73fhjw2KxoCiKKcP61q1bD7r68mBYLBaGDh3KrFmzTP/O169fz7x580xjo6sQAEYs2NGQTf9oRixNQq0xfvx4SkpKuPDCC+nSpQsej4dly5bxwQcf0LZtW6655hrT+L/++suIGQrFQL3yyis0adKkUq65EBaLhfvuuy/mOuWxevVqrrjiCoYNG8aAAQNo3Lgxf/31F2+88QY7duzgueeeM8zyffr0AeC+++7j8ssvx2azce6559KrVy9Gjx7Nv//9b/Ly8hg4cCDff/89b7zxBhdccAGnn346oMeFTJkyheuuu46+fftyxRVX0KhRI1avXk1JSQlvvPFGzPyaNGli5I4ZPHgwS5cupWXLlpV+LkfCnXfeyUcffcQll1zCtddeS58+fdi/fz+fffYZ//rXv+jVqxdXXXUV//nPf/j73//O119/Tf/+/fH7/fz222/85z//MfJBHYwBAwbwxBNPkJqaari5mjVrRufOndmwYUOF6uGV9xkdKvFiRfnpp5+M72thYSELFy7k448/5uSTT2bIkCGAbt2YMGECkyZN4qyzzuK8885jw4YNvPzyy/Tt2zdmiX11ctddd/H2229z5plnMn78eCPlQJs2bdi/f79hmUtJSWHatGlcddVVHH/88Vx++eU0bdqUnJwcvvjiC/r3789LL710RHP58ssvjbJEu3fv5t1332XTpk3cc889RszU8OHDefbZZznrrLO44oor2L17N1OnTqVjx4788ssvh3XdSZMmMXfuXAYMGMBNN92Ez+fjxRdfpHv37qZzTp48mW+++Ybhw4eTlZXF7t27efnll2nVqhWnnHLKEd27UMeptXV7wlHPl19+qV177bValy5dtKSkJM1ut2sdO3bUxo8fr+3atcs0NjrlgKqqWrNmzbSRI0ealhFr2qFTDkTi9Xq1Dh06VCjlwK5du7QnnnhCGzhwoNa8eXPNarVqjRo10gYNGqR99NFHMeMffvhhrWXLlpqqqqYl216vV5s0aZLWrl07zWazaa1bt9YmTJiglZWVxZzjs88+004++WTN5XJpKSkp2oknnqi99957Rn9kyoEQmzdv1po3b6517dr1oEuiy3sm0WRlZWnDhw8vty8y5YCm6cvUb775Zq1ly5aa3W7XWrVq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jcDxLl26cN1119XofQuCIAh1iAbknlO0w4kYbmAUFBSQmppKfn4+KSkppr6ysjK2bNlCu3btJC6nniOfpSAIQs3T8d45+AIayycMonmqq0rPfbD3d3VQq+65tm3boihKzM+4ceMA/SU3btw40tPTSUpKYsSIEezatct0jpycHIYPH05CQgLNmjXjzjvvlGSKgiAIglBHaEgpB2pVNP3www/s3LnT+FmwYAEAl1xyCQC33XYbn3/+OR9++CGLFy9mx44dppVZfr+f4cOH4/F4WLZsGW+88QYzZ87kwQcfrJX7EQRBEATBTMihVf8lUy3HNDVt2tS0/8QTT9ChQwcGDhxIfn4+06dP591332XQoEGAvty9a9eurFixgn79+jF//nzWrVvHV199RUZGBr179+bhhx/m7rvvZuLEidjt9tq4LUEQBEEQgiRqJWiAQv2PBqozq+c8Hg9vv/021157LYqisHLlSrxeL4MHDzbGdOnShTZt2rB8+XIAli9fTo8ePcjIyDDGDB06lIKCAtauXVvutdxuNwUFBaYfQRAEQRCqFk3TWOq4hV+d12HN+6O2p3PE1BnRNGvWLPLy8hgzZgwAubm52O32mFxCGRkZ5ObmGmMiBVOoP9RXHo8//jipqanGT+vWravuRgRBEARBAPTEloaFSakzkuOwqTN3MH36dIYNG0aLFi2q/VoTJkwgPz/f+Nm+fXu1X1MQBEEQjjY0wEIAALUBiKY6kadp27ZtfPXVV3zyySdGW2ZmJh6PJyZz9a5du8jMzDTGfP/996ZzhVbXhcbEw+Fw4HA4qvAOBEEQBEGIRtM01KClSbFUvBRYXaVOyL4ZM2bQrFkzhg8fbrT16dMHm83GwoULjbYNGzaQk5NjZLPOzs5mzZo17N692xizYMECUlJS6NatW83dgCAIgiAIMQQ0DNGEWv9FU61bmgKBADNmzGD06NFYreHppKamMnbsWG6//XYaN25MSkoK48ePJzs7m379+gEwZMgQunXrxlVXXcVTTz1Fbm4u999/P+PGjRNLkiAIgiDUMhoaatA9p4h77sj56quvyMnJ4dprr43pmzJlCqqqMmLECNxuN0OHDuXll182+i0WC7Nnz+bGG28kOzubxMRERo8ezeTJk2vyFgRBEARBiIOmERZNav0XTbV+B0OGDEHTNI455piYPqfTydSpU9m/fz/FxcV88sknMbFKWVlZzJkzh5KSEvbs2cPTTz9tslgdrZx22mnceuutMe0zZ86MWZFYl9i6daspO7zdbqdjx4488sgjRFb8mThxomlcamoqAwYMYPHixbU4e0EQBCESTQOLEoxpagDuuVoXTcLRid/vJxAIlNv/1VdfsXPnTjZt2sSkSZN49NFHef31101junfvbmSTX758OZ06deKcc84hPz+/uqcvCIIgVABNC/8/3xDcc/X/DoQjYsyYMVxwwQVMmjSJpk2bkpKSwt///nc8Ho8x5rTTTuPmm2/m5ptvJjU1lSZNmvDAAw+YLD9ut5v/+7//o2XLliQmJnLSSSexaNEioz9k4frss8/o1q0bDoeDnJyccueVnp5OZmYmWVlZjBo1iv79+/PTTz+ZxlitVjIzM8nMzKRbt25MnjyZoqIiNm7cWHUPSBAEQThsAgG/sa1a6r8XqP7fQU2jaeAtqZ1r2xKgGgoeLly4EKfTyaJFi9i6dSvXXHMN6enpPProo8aYN954g7Fjx/L999/z448/csMNN9CmTRuuv/56AG6++WbWrVvH+++/T4sWLfj0008566yzWLNmDZ06dQKgpKSEJ598ktdee4309HSaNWtWofn9+OOPrFy5kquvvrrcMW63mxkzZpCWlkbnzp2P4GkIgiAIVYUWIZoaQnJLEU2VxVsCj1V/As643LsD7IlVflq73c7rr79OQkIC3bt3Z/Lkydx55508/PDDqMHAvdatWzNlyhQURaFz586sWbOGKVOmcP3115OTk8OMGTPIyckxkpP+3//9H3PnzmXGjBk89thjAHi9Xl5++WV69ep1yDmdfPLJqKqKx+PB6/Vyww03xIimNWvWkJSUBOiCLDk5mQ8++ICUlJSqfDyCIAjCYWJyz6n1v2SviCaBXr16kZCQYOxnZ2dTVFTE9u3bycrKAqBfv34oEVau7OxsnnnmGfx+P2vWrMHv98cE87vdbtLT0419u91Oz549KzSnDz74gK5du+L1evn1118ZP348jRo14oknnjDGdO7cmc8++wyAwsJCPvjgAy655BK+/vprTjjhhMo/CEEQBKHqWPQEib/OMnZVtf5Ljvp/BzWNLUG3+NTWtStISkpK3IDovLw8UlNTq3JWFBUVYbFYWLlyJZaojK8hSxCAy+UyCa+D0bp1azp27AhA165d+f3333nggQeYOHEiTqcTwFhZF+K4445j1qxZPPfcc7z99ttHeluCIAjCkbDocSLfCA0hEFxEU2VRlGpxkVU1nTt3Zv78+THtP/30U4xFaPXq1ZSWluJyuQBYsWIFSUlJpkLG3333nemYFStW0KlTJywWC8cddxx+v5/du3czYMCAargbPSeXz+fD4/EYoqm8caWlpdUyB0EQBOHwkUBwoc5y44038tJLL3HLLbdw3XXX4XA4+OKLL3jvvff4/PPPTWM9Hg9jx47l/vvvZ+vWrTz00EPcfPPNRjwTQE5ODrfffjt/+9vf+Omnn3jxxRd55plnADjmmGMYNWoUV199Nc888wzHHXcce/bsYeHChfTs2dNUHqei7Nu3j9zcXHw+H2vWrOH555/n9NNPN8Ur+Xw+cnNzgbB7bt26ddx9992H88gEQRCEaqQhJLcU0dRAad++Pd988w333XcfgwcPxuPx0KVLFz788EPOOuss09gzzjiDTp06ceqpp+J2uxk5ciQTJ040jbn66qspLS3lxBNPxGKx8I9//IMbbrjB6J8xYwaPPPIId9xxB3/99RdNmjShX79+nHPOOYc1/8GDBwO65ah58+acffbZptV8AGvXrqV58+YAJCQk0KFDB6ZNm3bQVXaCIAhCDRCRkiaEotT/5JaKpsW5s6OMgoICUlNTyc/Pj1l5VVZWxpYtW2jXrt1B3UL1lTFjxpCXl8esWbPKHXPaaafRu3dvnnvuuRqbV3XQ0D9LQRCEOoO3DB7NMLdNrPrEwwd7f1cH9d9WJgiCIAhC3cLvNu9q9T/dAIhoEgRBEAShqvF5TLuBBiI3JKbpKGfmzJmHHBNZDkUQBEEQDomvzLRrU/zlDKxfNAzpJwiCIAhCneGP3P21PYVqQUSTIAiCIAhVyvebd9b2FKoFEU2CIAiCIFQpasBz6EH1EBFNgiAIgiBUKWrU6rmGgogmQRAEQRCqFEvAC0Ch5mKBvw8jPffV8oyqBlk9JwiCIAhClRKyNG3RMrnee0ctz6bqEEuTIAiCIAhVSu4BPfu3B1stz6RqEdHUQBkzZgwXXHBBbU+j0owZMwZFUYyf9PR0zjrrLH755RfTuMgxVquVNm3acPvtt+N2N0w/uiAIQn0i4NX/L3ZrIpoE4YjxeMpfWXHWWWexc+dOdu7cycKFC7FarXEL/86YMYOdO3eyZcsWXn75Zd566y0eeeSR6py2IAjC0Yemgd9Xfv+BbTDvPijeZzRZg6vnPMEooBPbNq7WKdYUIpqOUhYvXsyJJ56Iw+GgefPm3HPPPfh8+j+K2bNnk5aWht+vZ3BdtWoViqJwzz33GMdfd911XHnllcb+0qVLGTBgAC6Xi9atW3PLLbdQXFxs9Ldt25aHH36Yq6++mpSUFG644YZy5+ZwOMjMzCQzM5PevXtzzz33sH37dvbs2WMal5aWRmZmJq1bt+acc87h/PPP56effqqS5yMIgiAEee9yeOE48JTE7//P1bD8Jfj4WqMpza4BYfecxx+o9mnWBCKaKommaZR4S2rlR9O0KrmHv/76i7PPPpu+ffuyevVqpk2bxvTp0w0rzYABAygsLOTnn38GdIHVpEkTUzmVxYsXc9pppwHw+++/c9ZZZzFixAh++eUXPvjgA5YuXcrNN99suu7TTz9Nr169+Pnnn3nggQcqNNeioiLefvttOnbsSHp6ernjNm7cyP/+9z9OOumkSjwJQRAE4ZBsnAv5ObBlcfz+nav03znfGU3HNLEDYUuT2jDq9crqucpS6ivlpHdr58X83RXfkWBLOOLzvPzyy7Ru3ZqXXnoJRVHo0qULO3bs4O677+bBBx8kNTWV3r17s2jRIk444QQWLVrEbbfdxqRJkygqKiI/P5/NmzczcOBAAB5//HFGjRrFrbfeCkCnTp144YUXGDhwINOmTcPpdAIwaNAg7rjj0KsoZs+eTVJSEgDFxcU0b96c2bNno6pmjT9y5EgsFgs+nw+3280555zDhAkTjvj5CIIgCEECERaiwCHqxzmSjU0luHrOjS6eFKVhqCaxNB2FrF+/nuzsbNOXuH///hQVFfHnn38CMHDgQBYtWoSmaSxZsoSLLrqIrl27snTpUhYvXkyLFi3o1KkTAKtXr2bmzJkkJSUZP0OHDiUQCLBlyxbjGieccEKF5nf66aezatUqVq1axffff8/QoUMZNmwY27ZtM42bMmUKq1atYvXq1cyePZuNGzdy1VVXHenjEQRBEAC+uAMmNwrva4cQTc4UY1P1B2OaNN020zAkk1iaKo3L6uK7K7479MBqunZNcdppp/H666+zevVqbDYbXbp04bTTTmPRokUcOHDAsDKB7kL729/+xi233BJznjZt2hjbiYmJFbp2YmIiHTt2NPZfe+01UlNTefXVV02B3pmZmca4zp07U1hYyMiRI3nkkUdMxwuCIAiHwQ+vmfcDcYLBi3aHt52p4W3D0qTHNP247UBVz65WENFUSRRFqRIXWW3StWtXPv74YzRNM6xN3377LcnJybRq1QoIxzVNmTLFEEinnXYaTzzxBAcOHDC52Y4//njWrVtXbUJFURRUVaW0tPSg4ywWC8AhxwmCIAgHYfNX+L64K1YgeIpjx+auCW+r4fQCSpRoaiiIaGrA5Ofns2rVKlNbeno6N910E8899xzjx4/n5ptvZsOGDTz00EPcfvvtRtxQo0aN6NmzJ++88w4vvfQSAKeeeiqXXnopXq/XZGm6++676devHzfffDPXXXcdiYmJrFu3jgULFhjHVga3201ubi4ABw4c4KWXXqKoqIhzzz3XNC4vL4/c3FwCgQCbNm1i8uTJHHPMMXTt2rXS1xQEQRCCvD0ivjjwxvmDtGBHeNtXZmwa7rngmZKdDUNuNIy7EOKyaNEijjvuOFPb2LFjee2115gzZw533nknvXr1onHjxowdO5b777/fNHbgwIGsWrXKWCXXuHFjunXrxq5du+jcubMxrmfPnixevJj77ruPAQMGoGkaHTp04LLLLjusec+dO5fmzZsDkJycTJcuXfjwww+NeYS45pprAN0SlZmZyamnnspjjz2G1Spfa0EQhConQhSFCPz4ejg42h/Ov6cEt39NPoDVvwqrr28NTLD6UbSqWsdejykoKCA1NZX8/HxSUlJMfWVlZWzZsoV27doZq8CE+ol8loIgCBVgYmr89tPvg4F3mZo2PnsWxxQs13cat4db9FQ1G6ZdQdK+uZzVuiUARZvuZcsjI6t8qgd7f1cHsnpOEARBEASDklanxO+IY2n6/UBEcLjPbGnKtYSt/qojt8rmV5uIaBIEQRAEweDXnD3xO3yxtT0TiRBSEaJqX34hByxhiaFYyskmXs8Q0SQIgiAIgoEdLwBL/d05vuxfvO07Q++IEwieoEQIqZK98OXd8MciAmWF5EWKJrVhFFMX0SQIgiAIgoEjKJqm+c9jPyn8pTXVOw5laQL47l/w5vn0t6zFE5HS0mr1Vtt8axIRTRVE4uXrP/IZCoIgHBo7epySR9NzLBm5lnxxLE3RoikCb0TViaZpcRJj1kNqXTT99ddfXHnllaSnp+NyuejRowc//vij0a9pGg8++CDNmzfH5XIxePBgNm3aZDrH/v37GTVqFCkpKaSlpTF27FiKioqqZH6hhIkej+cQI4W6TugzDH2mgiAIQiwORbcKhXIshX5HphQIkaiU73bzRdROKbH8WnUTrEVqNaHNgQMH6N+/P6effjpffvklTZs2ZdOmTTRqFK5189RTT/HCCy/wxhtv0K5dOx544AGGDh3KunXrjGXjo0aNYufOnSxYsACv18s111zDDTfcwLvvvnvEc7RarSQkJLBnzx5sNltM0VihfhAIBNizZw8JCQmSx0kQBOEghNxzoWK7YUtTrGhKUCpmafJZdpc7rj5Rq2+PJ598ktatWzNjxgyjrV27dsa2pmk899xz3H///Zx//vkAvPnmm2RkZDBr1iwuv/xy1q9fz9y5c/nhhx+MgrAvvvgiZ599Nk8//TQtWrQ4ojkqikLz5s3ZsmVLTMFYoX6hqipt2rRpMNW2BUEQqoNQIHjIwuTVyrE0uYtI4CCWpoiYJoVA1U6ylqhV0fTZZ58xdOhQLrnkEhYvXkzLli256aabuP766wHYsmULubm5DB482DgmNTWVk046ieXLl3P55ZezfPly0tLSDMEEMHjwYFRV5bvvvuPCCy+Mua7b7cbtDn/QBQUFB52n3W6nU6dO4qKr59jtdrEUCoIgHIKQpakoMQebfRPuPN3iZBJNJfvhjfMOeh5vxN+nPs1nqndaX6lV0fTHH38wbdo0br/9du69915++OEHbrnlFux2O6NHjzbqj2VkZJiOy8jIMPpyc3Np1qyZqd9qtdK4cWNjTDSPP/44kyZNqtRcVVWVLNKCIAhCw0bTsONDA0pbz8IJ5JUNggDh1XNLn4OvHjrkqXxRAsmn+bAp9buAb63+2R0IBDj++ON57LHHOO6447jhhhu4/vrr+de//lWt150wYQL5+fnGz/bt26v1eoIgCIJQLwj4UBWNdfawuHGrwZXHIUtTBQQTgJco0RSo/yvoalU0NW/enG7dupnaunbtSk5ODgCZmZkA7Nq1yzRm165dRl9mZia7d5sDzHw+H/v37zfGRONwOEhJSTH9CIIgCMJRTzCr9/S0cP05I9+S3wNxUrdsCLQytgs0V/hUUZ44EU1HSP/+/dmwYYOpbePGjWRlZQF6UHhmZiYLFy40+gsKCvjuu+/Izs4GIDs7m7y8PFauXGmM+d///kcgEOCkk06qgbsQBEEQhAZCcIVcY7/faPKowSBunzsmGPz7QGeu995h7Bsr7TCvnoOGIZpqNabptttu4+STT+axxx7j0ksv5fvvv+ff//43//73vwF95dqtt97KI488QqdOnYyUAy1atOCCCy4AdMvUWWedZbj1vF4vN998M5dffvkRr5wTBEEQhKOGgB/y9FXiZRE2Fa8aFFB+b0wplUs9ZledL0JWRMc0+TU/9Z1atTT17duXTz/9lPfee49jjz2Whx9+mOeee45Ro0YZY+666y7Gjx/PDTfcQN++fSkqKmLu3LmmoOx33nmHLl26cMYZZ3D22WdzyimnGMJLEARBEIQK8NG18OrpAJSo4STAe5svYX6CC/xuk2haH2gdcwqfZmG2vx8A+0gw9zUAS5OiSW0JCgoKSE1NJT8/X+KbBEEQhKOTieE4pvHNmrAo0Sx61uQWwnUL4cXjATiu7F8cQH9nbnVeAcBCa3OuK30Iu9+J0vIDbClrjePnXDSH1smxQutIqOn3tyStEQRBEATBRGm8nHYBPyUleomyPVqqIZhCbLNaubW1jcQOz+DGjqKY3XENwdIk9SQEQRAEQTBRGi8JZcBPaXERCUCZZo/p/s6lh80oFjcQgKBoGtxmMMPbD6dZQrOYY+obYmkSBEEQBAES0o3NsqBo8hb00LsCAQj42LFnPwClwbp0KF4Ssl7mpvQsc6EUxWuIpqFthzI4azCJtsRqv4XqRkSTIAiCIAimgrylqi6aAm69IkdLnw8CPt5fpqcJKsUBgMW1FUtCDktSNF71DzOOV1SPIZqsasNxaoloEgRBEAQBn7fM2C5VdHmg+XWXW0DfwRbQV88dUGzYGi1HsYVrt25Xk8MnUz1GTJNNrd+lUyJpOPJPEARBEITDwufzY9W8xn5Z0NKkBXTR5A9mBXcERdMnjQM40/5rOodiKQ5vi6VJEARBEISGyK68QmNbA0qCMU23DtJjmvzBuPCRgdkAfJ3mjjlHpGgiQjQ1JEuTiCZBEARBOMrRvGER5FEgEBRNSfYkIGxpauvfxlp7fBGkWCMsTYoHJRgaLpYmQRAEQRAaDv6waArFMwEkWvUVb/6IDASF8XI4Ub57TixNgiAIgiA0HCJEUyjdgFW1YrPoqQUi0wmUJxwsztyIQV6JaRIEQRAEoeERiHDPraEVAC6LC4ui16DzRyS7LIuX+DIKsTQJgiAIglA/WT5Vry23aUHc7pBoOqAl8TffeAAcVge2YOHeyIIongqIJpRwygGxNAmCIAiCUH+Yd6/++52LY/sCAdR9GwHwYNVda4DT4kSNY2lyV8jS5MZq0QCwWcTSJAiCIAhCQ2DBA7T56u+AXlNOUYKiyerEGrQ0lWDn10BboGKWJkviH/jRrVdWRSxNgiAIgiDUB/zeg/cvf8nYLMNusjR5fcFTAI/4rgQqZmmyJv5ubIulSRAEQRCE+kE5cUzxcGNDUXSlZLfYKSgNRjMpATyabjE6mGhy7x0Y0yaB4IIgCIIg1A/K8sPbjtSDD8VurHqzW+xGTJOiBPBiFk0nNT8p5njNnxjTJqJJEARBEIS6S8FO+Pkd8HmgcGe43ZF00MPcmg2CliabasMSjGkC8AYlQ0g0tU9tz0fnfsTAVmHrUpLLF3NOEU2CIAiCINRd3rsM/nsTLH4SinaF2/2egx5Wht1IFWBTbVgIiyZPMFN4KBDcaXHSuXFnjml0jDFm5AkdY84ZKbzqOyKaBEEQBKGhsXO1/nvdLLTCiEzdvoOLpjMtPxmWpkj3HIQtTWWqYvQDnN/xfJLtyVzY8UJu6nMVIzqNqKq7qHM0nHWAgiAIgiDAsvBqOBQLq9f9Ru/QfkS5lBAFmosUpRSAb/w9TJm8bZawTPAGi/aG3HMOiwOArJQsFl+6GKtqRVEUJp48kT/y/+Dn3T9X7X3VAcTSJAiCIAgNifn3hbdVC735Lbwfxz3nRG97zTeMG723ht1zFhtOq90YF1D0ZJWlQdGUYEsw+mwWG0rEqrok28Fjp+orIpoEQRAEoaGS/5d5XwuAPyJYO+DHHhRJU33nU4zLFAh+Yrt0NM0cAF6i6vsuq6vcyzZyNqqqO6hTiGgSBEEQhIaKOz+2LdJF5yszNssIWpUiA8FVBYKiqUBx8Q/PTayiNXBw0ZRoi0090BAQ0SQIgiAIDQhvWvuDDyjZD2s+Anchew+ERZU7KJpCyS1tFpsexaSFgsED/DdwCgcUJwAJ1gTK47TWpwGgKg1LZkgguCAIgiA0IHYdKKBVVNLub/3dyVbXoSoaPHes3tj6JPad8jxNAI9mIRCyo0RYmhRFMUSTovjRAFQ9Bupglqbs5tk8d9pzdEnvUoV3VvuIaBIEQRCEBkQosDuSEhx4FJu5b/t32IP7hmsOwhnBVTuqAhqqbnEKtitB0RQZCB6NoiickXXGkd1IHaRh2c0EQRAE4SgnnmgqxYGmRTXaErFp+lh3hGgKrZ4LpRCwKEH7ihII9h/a0tRQEdEkCIIgCA0IB96YtlLNgUuJElMtjkPz6vmZyrRgPJOlyOSeA2iWHLQoBdtD7rmDxTQ1VMQ9JwiCIAgNBb8PW0jcRFCCI+5wzRMUTdixNVqOM/O/Rp/Noosmm6pLBQU/4EdR9UBxsTQJgiAIglBvKSsrjt8eGbMUwlNIIGhpcmMzCSYIW5qMgrtKANSwFetgMU0NFRFNgiAIgtBAyNm1P257iRbH0uQp5tvf/gTii6qQWHJa9BQD1qSNKKqe48miWMJi6ihCRJMgCIIgNBACQXdbNKXx3HOeYv7acwCAMi1WAIVEUbqrMQD29G9Q7XsBPZ4psmzK0YKIJkEQBEFoIITcbQHNLGjiu+eK6ZGhi6kdVktMd5lfzxaeZA9n97Y3+Qo4OuOZQESTIAiCIDQYQqvh8jCXMSnRHHzt7wVg/MZTRGO7nrDy4bZ5MedKd6YDmNxw1sQtALhsR6doktVzgiAIgtBACHh061Cx5iKJUqMYbykObvGOZ6B/Nd8FuvCDZRxoAayeQrZb40uBnk17AtA8qXlM39GYbgBq2dI0ceJEFEUx/XTpEk65XlZWxrhx40hPTycpKYkRI0awa9cu0zlycnIYPnw4CQkJNGvWjDvvvBOfzxd9KUEQBEFo+AQL8JZhNwQT6KKpkARmB7LJI9lot3nz2G+JLwVSHakAjOk+JqYvlI7gaKPW3XPdu3dn586dxs/SpUuNvttuu43PP/+cDz/8kMWLF7Njxw4uuugio9/v9zN8+HA8Hg/Lli3jjTfeYObMmTz44IO1cSuCIAiCUKtEphCIpDRi9ZwXCz5Nf/3bPXl4ywnoDhXbTbYnM+v8Waa+A2UHqmrK9Ypad89ZrVYyMzNj2vPz85k+fTrvvvsugwYNAmDGjBl07dqVFStW0K9fP+bPn8+6dev46quvyMjIoHfv3jz88MPcfffdTJw4Ebs9TuCbIAiCIDRUvGFLUyQ2xYdeR0UBFMqwk0QZLvc+9ldgFVxGQoZpf3vh9qqacb2i1i1NmzZtokWLFrRv355Ro0aRk5MDwMqVK/F6vQwePNgY26VLF9q0acPy5csBWL58OT169CAjI/xhDh06lIKCAtauXVvuNd1uNwUFBaYfQRAEQajvKMEVb2WajTwtHAz+U8ZaEtpPAUVPTlkaFFVZeStiiq5c1+O6GMtSkj2p2uZcn6hV0XTSSScxc+ZM5s6dy7Rp09iyZQsDBgygsLCQ3Nxc7HY7aWlppmMyMjLIzc0FIDc31ySYQv2hvvJ4/PHHSU1NNX5at25dtTcmCIIgCLXA/9bohgc3dk5wT2Oy9yoGup/GkrYKi2M3lsTfASiLdNdFWJoe7v8w/zj+H3RI6xBz7hR7irE9ssvI6rqFOk2tuueGDRtmbPfs2ZOTTjqJrKws/vOf/+ByVd9yxgkTJnD77bcb+wUFBSKcBEEQhHrPvvwCsEEZNnxYed0/DGvqSow3akB/7Ue67zxB0XRS5klc0PGCcs/ttDgpQPfM3HnCndUx/TpPrbvnIklLS+OYY45h8+bNZGZm4vF4yMvLM43ZtWuXEQOVmZkZs5outB8vTiqEw+EgJSXF9CMIgiAI9R0nHkC3NIWwN1pmGuNoNpuPUsM2k5ClyWo5uB0lcsWcrJ6rAxQVFfH777/TvHlz+vTpg81mY+HChUb/hg0byMnJITs7G4Ds7GzWrFnD7t27jTELFiwgJSWFbt261fj8BUEQBKE2CYmm75JLsST9BoCvqLPRb3HlYE9fyrtNtOBI8Aa9c3b14IunWia1rPL51jdqVTT93//9H4sXL2br1q0sW7aMCy+8EIvFwsiRI0lNTWXs2LHcfvvtfP3116xcuZJrrrmG7Oxs+vXrB8CQIUPo1q0bV111FatXr2bevHncf//9jBs3DocjTp0dQRAEQWjAOBQv6+025mTsIaH1TACjyC6AYgunCihTdbXkQf99qAK8j57yKP2a9+OF01+o4lnXH2o1punPP/9k5MiR7Nu3j6ZNm3LKKaewYsUKmjZtCsCUKVNQVZURI0bgdrsZOnQoL7/8snG8xWJh9uzZ3HjjjWRnZ5OYmMjo0aOZPHlybd2SIAiCINQaTjzMSopc6aahWMJFfFVbeLW4HsukGe65Q7ncMhMzeXXIq1U53XpHrYqm999//6D9TqeTqVOnMnXq1HLHZGVlMWfOnKqemiAIgiDUO45Jt+GMrIqh+MBSFt615hnb7qBYCommQ7nnhDoW0yQIgiAIwuHjwINTC4QbFC+KGmFpsofdcyHRFFo9Z7eIaDoUIpoEQRAEoYFgCbjRIvYV1Yei+iL2Pca2xxBN+v6hYpoEEU2CIAiC0GCw+t2GGAL0DOBKdM5vnTKxNFUaEU2CIAiC0ECwam58hEWTonpR1PiiySOiqdKIaBIEQRCEBoIt4KmwpWkbjQH4A33FugSCH5paXT0nCIIgCELVYQuUmUSTonpRFF/csRP81/AvdyN2aoux8ItYmiqAWJoEQRAEoYHg0EqNDN+AbmUqxz2H4uN3rSWBYL/LWn01XxsKIpoEQRAEoSHgLaO5b0eMpYlyLE0ht11ygt6f4pA6rIdCRJMgCIIgNAC00gOoBHBHBIKjulEULe74UCqCACUApNhFNB0KEU2CIAiCUNfZtRYWPwU+T7lDbn/zGwBKlHC+JUUtK2+4YWkqCxQBkGpPrYKJNmwkEFwQBEEQ6jrTTtZ/O9PgpBv0bW8ZWGygWgDY9tcOcECJEn61R9adi0YJiqbQGLE0HRqxNAmCIAhCfWHjXP33/j/gnx3g078bXWdYfgLApriNNkfTr8o/l+IH/EaWcIlpOjRiaRIEQRCE+kIguBLuty/AUwRr/sN/2jzIa0v/YL71MyBcgPeQKH6TJSrJllTVs21wiKVJEARBEOoL/tBKuLAwuufjVai71xn7e5TECp1KUX0QFE1JtiQsQTefUD4imgRBEAShvhAIiqaIRJSJlDHXcY+xvzmY4fuQKD4UVeKZKoO45wRBEAShvhHhguuubjV1+VV/hU5hb/Qd1oTfAYlnqihiaRIEQRCE+kJILPnDqQfGWWaZhgTKS2YZB9WxF4BEW8Vcekc7IpoEQRAEob7hC6+Qy1J2mboCoaSV3ornXRLRVDFENAmCIAhCfcMfrifXQtln6tKCteQS1ArGNgGJVhFNFUFEkyAIgiDUG0LuubClyaoEjG0N0IKWpkEdulT4rAm2hCqZXUNHRJMgCIIg1DPyi4rjtnsBgiKqQ6N2FT6f5GiqGCKaBEEQBKGesWT9X3HbS9Xwa71VUqu4Y6459pqYNolpqhgimgRBEAShLqNpMU1ud2wh3u8CXXjQfwUANtVG9ybd455uQMsBMW3inqsYIpoEQRAEoS4TEfQdSjlgIzatwFWeCXyunQCAy+oiKyUr7unaJLfhveHvmdrE0lQxRDQJgiAIQl0mECuQtGDKgX1aMgD/8NyEBxuqcyegi6bySHelc2yTYxmQca7RJqKpYohoEgRBEIS6TMAb0xSyNE3xXUzbsnf5b+AUAFwtdQvSrpJdMceEsKp6MZCnBt0b0yYcHBFNgiAIglCXCUSWRdHdc3Z9nRyeQ1RDe3LAk7isLl4a9BLXdL+G5057zuhLtCWSbNctVZ3SOlXplBsqIi0FQRAEoS4TGdOk6QLKHrQ0ebWDv8bPbn82Q9sOxaJaGNh6oKlPURReHfIqpd5S2qa2rdIpN1RENAmCIAhCXSYypim4bQ/Wl/NgixgYtkilOsIlVCyqpdxTd0+Pv8JOiI+IJkEQBEGoy8QRTaGYJi8WwIdiKQM1XMT3g3M+qMkZHjWIaBIEQRCEuowWLpOCuxAAR4SlKbnr/QCU7rgEgKyULFomtazZOR4lSCC4IAiCINRlIkXT/j9g67ckWvS2QluJ0WVLXQlAujO9Rqd3NCGiSRAEQRDqMqbVc8AXt2MLrp7bl7LVaLYm/gFAkl3qyFUXIpoEQRAEoS6jRYkmRwpWzctdTdPZ1+SXmOGSqLL6ENEkCIIgCHWZaEvTn99j1bx8mRRfHCXZxNJUXYhoEgRBEIS6TLSlqVl3rPg4r7AIgGFth6Np4bQCIpqqjzojmp544gkUReHWW2812srKyhg3bhzp6ekkJSUxYsQIdu0yp4bPyclh+PDhJCQk0KxZM+688058vtg6PYIgCIJQL4m2NHmLsWtetGB28M6NO6Mo4TEOq6MmZ3dUUSdE0w8//MArr7xCz549Te233XYbn3/+OR9++CGLFy9mx44dXHTRRUa/3+9n+PDheDweli1bxhtvvMHMmTN58MEHa/oWBEEQBKF6iFw9B1B6ACs+vLpmwmm1m7oL3AU1NLGjj1oXTUVFRYwaNYpXX32VRo0aGe35+flMnz6dZ599lkGDBtGnTx9mzJjBsmXLWLFiBQDz589n3bp1vP322/Tu3Zthw4bx8MMPM3XqVDweT3mXFARBEIR6g9+ve08KNZfeUJaPXfHjUXTVZFNt5R0qVDG1LprGjRvH8OHDGTx4sKl95cqVeL1eU3uXLl1o06YNy5cvB2D58uX06NGDjIwMY8zQoUMpKChg7dq15V7T7XZTUFBg+hEEQRCEuojPr7veCkgwtXuDoslusZNsSzbalWC7UPXUqmh6//33+emnn3j88cdj+nJzc7Hb7aSlpZnaMzIyyM3NNcZECqZQf6ivPB5//HFSU1ONn9atWx/hnQiCIAhC9ZBXVApAqebAr4UFUaSl6cUzXjTaLz3m0pqd4FHEEYkmj8fDhg0bDivwevv27fzjH//gnXfewel0Hsk0Ks2ECRPIz883frZv316j1xcEQRCEivLeii0A+FEpIfy+DMU02S12+mT0YfXVq1l6+VLap7WvjWkeFRyWaCopKWHs2LEkJCTQvXt3cnJyABg/fjxPPPFEhc6xcuVKdu/ezfHHH4/VasVqtbJ48WJeeOEFrFYrGRkZeDwe8vLyTMft2rWLzMxMADIzM2NW04X2Q2Pi4XA4SElJMf0IgiAIQl1kT6FuaQqgUkJ4ZZwn+AoPxTSpikqqI7XmJ3gUcViiacKECaxevZpFixaZrESDBw/mgw8qVln5jDPOYM2aNaxatcr4OeGEExg1apSxbbPZWLhwoXHMhg0byMnJITs7G4Ds7GzWrFnD7t27jTELFiwgJSWFbt26Hc6tCYIgCEKdwoK+es6PSokWIZokELzGsR7OQbNmzeKDDz6gX79+poCz7t278/vvv1foHMnJyRx77LGmtsTERNLT0432sWPHcvvtt9O4cWNSUlIYP3482dnZ9OvXD4AhQ4bQrVs3rrrqKp566ilyc3O5//77GTduHA6H5KkQBEEQaojf5oDNCR0GVfmpmyfboBACKBTjMtrdEYHgQs1wWKJpz549NGvWLKa9uLi4SqP2p0yZgqqqjBgxArfbzdChQ3n55ZeNfovFwuzZs7nxxhvJzs4mMTGR0aNHM3ny5CqbgyAIgiAclKI98P5IffuBvWCpWstPhyYu2KG75wq1yJgmsTTVNIclmk444QS++OILxo8fD4SXN7722muG6+xwWLRokWnf6XQydepUpk6dWu4xWVlZzJkz57CvKQiCIAhHROHO8HbxHkhpUbXnD5ZR+cUFisdBf01vNtxzVSzShPI5LNH02GOPMWzYMNatW4fP5+P5559n3bp1LFu2jMWLF1f1HAVBEASh7lK8J2J7b9WLpkCAdXYb/2zhBfZylb6YDi9iaappDisQ/JRTTmHVqlX4fD569OjB/PnzadasGcuXL6dPnz5VPUdBEARBqLsUhRcj4XNX/fm1AH/YwsIoVFTFSDmgSkxTTXFYliaADh068Oqrr1blXARBEASh/rDsRdi/BXxl4TZ/NZTw0vw09YcL8u5XVZoEAvjEPVfjHJZomjNnDhaLhaFDh5ra582bRyAQYNiwYVUyOUEQBEGos8y/P7atGkSTogVMbqFdVgtNPAGxNNUCh+Weu+eee/BHqN4QmqZxzz33HPGkBEEQBKFOU54brjosTQE/WsRuvsWCHwhVVJGYpprjsETTpk2b4iaP7NKlC5s3bz7iSQmCIAhCnaasnELv1WJp8hNppihUFGPlHEiepprksERTamoqf/zxR0z75s2bSUxMPOJJCYIgCEKdxl1zognNjxYhkkpU1XDNgViaapLDEk3nn38+t956qyn79+bNm7njjjs477zzqmxygiAIgnBYlOyHF0+Az/9RPecvTxz5vVV+KSUQMFbMAZSoCh7CqsmqHvaaLqGSHJZoeuqpp0hMTKRLly60a9eOdu3a0bVrV9LT03n66aereo6CIAiCUDk2zoV9m2DlzOo5f3kxTQdLOVCwA5a9BN6y8sfEQ/ObRNNPtA2vnFNtVVqJQzg4hyVPU1NTWbZsGQsWLGD16tW4XC569uzJqaeeWtXzEwRBEITK4y4Mb2saVLWwiLIo7dFSaarkH9w9N3M47P9DT4Z55qSKX0sLEIiwLM3RerPEcynwmsQz1TCHbdNTFIUhQ4YwZMiQqpyPIAiCIBw5WsR6M78HrFVbxH3r7gO0jdjfo6UdWjTtD8YCr3qnUqJJwU8gQvMFVB97lWQSkXimmqbCoumFF17ghhtuwOl08sILLxx07C233HLEExMEQRCEw8Yf4Sbze6tcNM1dtY2/R+zv1VLC1zoUlY1BCgRMKQdQPaD4AMnRVNNU+JObMmUKo0aNwul0MmXKlHLHKYoiokkQBEGoXbyl4W0tNq/gkWJTwud8wDuGrkqOvlMh0VQ565CiBUwpBxTVA8HrSzbwmqXComnLli1xtwVBEAShzuEtCW8Hql40qQFdHP0YOIa3/EOYaJ2pd0S65zbO06/d5eyogyu5BksL4I+IyVLUMpSgpUncczVLpVfPeb1eOnTowPr166tjPoIgCIJw5PgixEs1iKb8oiIAPJoVFA95lqADLeQWLMuHdy+F90fCmo/MB1fSPadgzgiuqGViaaolKi2abDYbZWWVXC4pCIIgCDVJpMWnGtxz7uB70IuVhDavMb39BnZYLYZ7LrAvwiPz8VhzYHplRVPAnHIAS6khmiSmqWY5rDxN48aN48knn8Tn81X1fARBEAThyIkUTYGqf1c5gu4xDzYsCXo80zKX07jusqULy59PZQPBNc0kmiyOPSiquOdqg8NKOfDDDz+wcOFC5s+fT48ePWJKp3zyySdVMjlBEIQ6wee3wr7NMOojsDlrezZCRYgUSqUHILVVlZ6+d4sE+B3cEbYHq4Yhjk5ZP9l8QMm+8La1ct8hRfMTiMozpVjzAXHP1TSHZWlKS0tjxIgRDB06lBYtWpCammr6EQRBaCiszdkNK2fA1iWwaX5tT6d2yf0V3h4BO36u7ZkcmkjLzr9OqfLTL9u4E4ASxWK0WdDKXz339WOHfS1FM5dRAVAduwBwWKo2lYJwcCplaQoEAvzzn/9k48aNeDweBg0axMSJE3G5XNU1P0EQhFrl5mmf8XXovVS8p1bnUuu8fwXkbYM/f4R7ttX2bA5OdJLJ3euhWdcqO70a8IIFipWw7UGJsDTF8PNb4e1KxlgpmjkQHEC1699FiWmqWSplaXr00Ue59957SUpKomXLlrzwwguMGzeuuuYmCIJQ60wKLSUHc2mOo5G8oFAqy6vVaVSIaIvPga1VenobuvuvOCJ9gEdRdNGkaXg13QJ1ref/Yg+ubIyVFjBlBAdQLHpKBbE01SyVEk1vvvkmL7/8MvPmzWPWrFl8/vnnvPPOOwQC0YZDQRCEhsGpljXhnYOVyBDqFtGiqWBHlZ7eFgwEzw9753Arin7d0gNG8stlge6sD7QxH1zJd6aCufYcgGLRk3dK7bmapVKiKScnh7PPDifpGjx4MIqisGNH1X4ZBUEQap3ivXr8TiS+ozDdSsl+PR7nz5W1PZNK4fXq+ZJKtKAlpnR/lZ7fFszRvd0ZLtfiDlmagm7cIs1JGQ5aKVFu3cNwz0XLrJClSURTzVIp0eTz+XA6zVH/NpsNr7cCaeMFQRDqE9//GzZ/ZW7zueOPbcjMvQcWPwmvDQq3uRrV3nwqiMetC9z9JOsN7kIo3FU1brr8P+ncSGG/qvJt011Gc5katDR59MSXeSQBkKyUmo+vbLLNqJQDgJFyQNxzNUulAsE1TWPMmDE4HOEPqaysjL///e+mtAOSckAQhHrPzl9i245G0bRtWWybt+5b3HbuL6QjsE9LoZWyF2/RfiyvDEB1F8E/VkNS08M78e718HI2g9B4JN0sHo2YJk8xELZy7dVSaKIUhAceTiC4Er/PWcn0BcKRUSnRNHr06Ji2K6+8ssomIwiCUGfQ4sSd+I9C0WRLiG3zlepxOZWtoVaDuN1loMIBTbc0ff/TT/S3BK1CeTmHLZp2rv6K5sG1bA7NvKatLFo0oQuaKz33MtdxT3hgJS1NqhYb0xRiw/4NlTqXcGRUSjTNmDGjuuYhCIJQpygJWAnJhd8Dzemg7jw6LU2utPjtvlKwJ8bvqwOEVrftC7rnstSwG63cgP6CnZDUDFRL/H7g1aXbeDCoX5KiAro9oUDwoGgq1nTRtFFrxdpAFt3V4OrDeIL8YMTJ0xSiS+MulTuXcETU3T8TBEEQapE/durBu3d4/s4b/iF649EYCO5Mi99ehwWkpmlYg4Ha+7UUAFope8MDfKWxB21bBs92gVk3HvTcFl+xse2NytJtWJq8epB2KXqQdgCVcz2Pco77EX1gJS1NCuGUA9F5ma7rcV2lziUcGSKaBEEQ4qAEX6yl2HEHX351WShUF4HyMlyX114HWLU9D3swJUChFs+9GOdzXD5V//3LBwc9d1JEULc36DKzKLrTxohpCj4bX4QzJ4Aa3q9knqbI1XOWKCtYQjz3qVBtiGgSBEGIQ6Kiu3DKsJOvBd1QpQdqcUa1w5o//ozfURdzVv3+NXw1Ec1bZrjn9hKntJc3jqWpUdvw9nsjdVddHJIIWxtDliaHqn8/yhQFfB5DFPkICRx93x965VY6EDyAFhRo/Vv0N9p/vPLHSp1HOHIOq2CvIAhCQydB0a0FpTgoCFkrinbX4oxqB0egNP6f14E6aGl66wIAmrsdhmj6IdCZ1YH29FL/CI+LI5oCjpTwbW6Yo/8e+V7MuCTCx3qCLjOnJZESf76Rp2lTbh6dAB8q1qS1OFu+i3v3cAJ5WcGLVd495w9eK9WRyprRaw5+gFBtiKVJEAQhDqpffzmWaXb2hawVxXsPckTDJCk6x1AIfyVLgVQ3nnCskaNsrxHT5MXCa76zyx0bYvUfUZalA/Fr6yUqkaJJVzJOi25pCommj77fAujuOVuj71FUP87MzyIsTZXMCB4RCK4q8tquTeTpC4IgRLF9fwmaJxTM62BfMJgYT2F8104DJpFygt/rmnsuN2x9UWxO7PjQALe1iC1ahnmsJ7aG4LrtUVm70zvEvUxy0NJ0l/d6PgmcDIDLGhRNqgLuAi61LALAp6mo9rDQNkRTZS1Nmt9wz4loql3k6QuCIETx9optOPEQAPJSNlNo9eAJFmA92qxNiUGRcL/3Gt72ncG+YN6jOuGe++4VeOsi0DR++u9LRrPFr8c0fZScSFHH6Wxqup4nvZezQ2usD3AXxZzKpkUFh0evlCzeB0V7DMtbvpZEQNHtP66gpckTFDYdVN1qVWDRUO37jFP4QxkqKxPTFAhwXNE3YmmqI0hMkyAIQhQWBVy4uS6zGcWu+SQxn51/NCKLvbDjJ0hrXdtTrBl8buzBwrOf+U/mbc7kF609E4e1JyGlZS3PzQNf3qVvv3k++3YXEYq7VrzFWBSNyU3SAbCnL+WV/H+Q4C9jvHVWXPecTfOCAr8E2tFT3WIWVqUH4MXjwe+lpaKvpCzEhRJ8Nk6rS59SVAqC+U33mfZ91uB1K2Np2v6dfkjw1CKaahd5+oIgCFG43W6sSoAfXOESFbNt7fSNPRtraVY1T2FBeLVgcTC79X/8p5PXdhjk/wl522tramiRBXi3LCZFCQshJY4oSmz/PCXBZJOh2nCR2IOWJpMrNsSyl6AsD7zFZCr6MynWnBBMa+CyhEST+Zz5VrM1ztM0WJKmEikHPMV5+iHBfRFNtUutPv1p06bRs2dPUlJSSElJITs7my+//NLoLysrY9y4caSnp5OUlMSIESPYtWuX6Rw5OTkMHz6chIQEmjVrxp133onPV8cCFAVBqFd4yvSXaiN/2CKwK5RUMF5ixAbKjj26MHFrNvyE8wMtnXEvvHo6rJxZSzODnzf8Ydpvp+Qa24pPj0fLLjV/VoUE66a6Y2OabJoeo7WflPCYxf+EjfNgydMx44twQdDS5ApZmqJKneS6zNcPOEKWJw2iSrCUx5erturHBs+tlFNORagZalU0tWrViieeeIKVK1fy448/MmjQIM4//3zWrl0LwG233cbnn3/Ohx9+yOLFi9mxYwcXXXSRcbzf72f48OF4PB6WLVvGG2+8wcyZM3nwwQdr65YEQWgAHN/cSQA4YAkLhV324B9j8YrVBipZFqOeoPr1e3VjM7XvcgcFpLsg+pCaYecvHD97mKmpmZJnbKte3dL0g9NczDY/mIQynqXJSVA0hWK2DmyFrx+Bdy+NGbvdamF3lxexJurCzRBNEXpmd8R3J1DcDQDNtYPvnUHhVkEXXc4uXWjlaE0AsCjll3gRqp9aFU3nnnsuZ599Np06deKYY47h0UcfJSkpiRUrVpCfn8/06dN59tlnGTRoEH369GHGjBksW7aMFStWADB//nzWrVvH22+/Te/evRk2bBgPP/wwU6dOxeOpYys7BEGoNzhwUxBVjDbPGnzJBUtkGGz/Hp5sC9+/WjOTq0HsWjjBZyRFmi4ScBfq2a9//x+U1aCAWvDAQbuV4GcUHWOUF4rijRMI7gjm5TLccwfh6uaZpn2XNSHmetts4ZBhzRtOsPlIejAYvYLB4F536F7076O452qXOvP0/X4/77//PsXFxWRnZ7Ny5Uq8Xi+DBw82xnTp0oU2bdqwfPlyAJYvX06PHj3IyAgvJx06dCgFBQWGtSoebrebgoIC048gCEIIxVtq5OAJURQSTdFL7T+5Adz5MOf/amh2NYcv+MIu0mw4Mj/B0fwjAApDpYxXvwcfXAlvXQgLJ+tti56EGcPjusCqjF3rDtqtBmOaHFEWwDxbMMYojqXJQVA0cWjR1NpnjlVKsOki0hvhOgt9f7o27oq/pL3R7gy55SpoacovLAqeW7cwiWiqXWr96a9Zs4akpCQcDgd///vf+fTTT+nWrRu5ubnY7XbS0tJM4zMyMsjN1X3Xubm5JsEU6g/1lcfjjz9Oamqq8dO69VGyEkYQhIrhKzGyPYcosQRflJF1y3weOLCl5uZVw/iDOanuaeHE3uh77Gk/Yk9fFLY0AWycq//+cbpudVr0GGxbCmtnVdu8SssOXjg5FNNkD+kTt/5e2J8YjImNZ2kKuucOhNxzUczxn2hsp0XpnUSbnnIg0j1XFhRNdoudJuoJePP6AOAMJbasoKUp5Db0IZamukCtP/3OnTuzatUqvvvuO2688UZGjx7NunUH/yviSJkwYQL5+fnGz/bttbcCRBCEOoamMWzFVTGWJrcljqWp4K8anFjNE3CXogHrXeFn4Wg2l0JcsYO1AOzdFHFw9eVxyvcdPK4nFNMUWqZvt+siq6DRer0hTnJLO+ECvz4t9tX4jO8SY3uvxfzdSLTFphwIfX8cFgevjz4Jb2F3fUzIGlVBS1PIAuYV0VQnqPWnb7fb6dixI3369OHxxx+nV69ePP/882RmZuLxeMjLyzON37VrF5mZuj85MzMzZjVdaD80Jh4Oh8NYsRf6EQRBAKBI/z/EGyWavGqsaFrz68/hAao5WLohEPCWEi19Au4mFGpxRFNaFvz0Rni/mur0ef0BEtCtffd6x5r6bvHcDIRFU2h9Ws9mnY0xm222+Hma8FGoKOSm/8qfwRilSHZrjYztPVazaDNimiLa3BGWps6ZyfxjUBd9TOh7VcFSKpnOoGiSmKY6QZ17+oFAALfbTZ8+fbDZbCxcuNDo27BhAzk5OWRnZwOQnZ3NmjVr2L07/I9zwYIFpKSk0K1btxqfuyAIDYB9vwPhl14IX0g0Rbjn1s6PEAnOhvfHl+YppUw1PwfFvo8Dqj12sLcENof/v6ZwZ+yYKqCo1GMUzV3g78MBLQmAP7UmrNb02CElmAcpJJruy77bOP7zpARd+PqC4nfNRwS+n45N8fNc4zT2N13J3zPTYq5rxHEBxVHCxabqq/Q0RSFkPwrXpdP7rKoeGO4NPc4K5mrq3kg/Y1lwBaOIptqlVjOCT5gwgWHDhtGmTRsKCwt59913WbRoEfPmzSM1NZWxY8dy++2307hxY1JSUhg/fjzZ2dn069cPgCFDhtCtWzeuuuoqnnrqKXJzc7n//vsZN24cDoejNm9NEIT6SjBpouFeUR24A278wZw8/PG1kWPncuui8HHxUhHUczRfmSEeLYoFn8+KYnHzhyWJf/nOYb+WzIpANz5zPADuIrYUqrQLvdMLy48rPRIKC/NppOjPv4AE7vdey43Wz7jD+3fKNLOYC9lykmxJtHAcyw73r+FsU54iUFLg47GoQHMFPktqBcBfdrMwGabeiKvVG2w4kMQx/iJKooRkmjPJ2D6AiyaUmixNANv26d+Pyrrn7B49maY7+LoW0VS71Kpo2r17N1dffTU7d+4kNTWVnj17Mm/ePM4880wApkyZgqqqjBgxArfbzdChQ3n55ZeN4y0WC7Nnz+bGG28kOzubxMRERo8ezeTJk2vrlgRBqO8ExU+ojliyPRV32W40NYCfYKWO5VNxH3MOpj/NvCW6mIqyUNV59v2ulwgBmJhv6gp4SikLvqQdFgdetxPF4kZRy3jCcwUAjQiuPvaVkqhEPJHqiPfy+/Ds0XMjeTULbmx8EejHFx79D+mUiFxNAAElXOT2xMx+zNr2KzstoRxThZS43UQ64qLj2ACGux8jp8O7WG0F/EPryn/3/4A/alyH9KbG9omel/jDPtYQTQ6L/ky27tUtlIbbtyKB4JqGJW8rqFAmoqlOUKuiafr06QftdzqdTJ06lalTp5Y7Jisrizlz5lT11ARBOEr5ZWsuPYHf0V+EKfZk9pbpIQBuRSFB02Dxk8xaW8JlpiM13e1jrWdW7pUzwtveMrA5TfuhVWBOq5NCvx7LpFjCuaqKI4LCIxNM4q2CzOmzbtJdfqdPgN6jYFp/Ou7dAAQzckcs8Vfsewi0e4F/FqZx5359HpE5t5u4mgGw0xqMPfMUUVzsNYmmpECAAos5XqkQF6pNF4bbXaXc5LsR+MI0Js2RZmwH0PjKfxwlylYgbGm6qHdr1q2KiGmqiKVpzUcco+ri0xN8XUtyy9pFJKsgCEIEH32nrwD7U0kDIMURjlUKCQjcBVz216MArA+0CR8cnfiyPuCPCPUuMrvULJ4Ck8VEC+gCQFHDwfAerHi1OC/yqhBNq97R5/T5P/SVeUHBBHBAc6G6tpHc9R6Su95DYrvnUFQvb6aGP6+QaFJQaOzQk0oesARfe+4iLGXh2nqALohD0w/+LtQiRKQS4H/ExsuGMoIDKIqf67138Kp/KBC2NDVKCJVaCU2uAqJp1o3GpifoWJQyKrWLiCZBEIQIQnlxSoIlNxJsLrSAvh0dHA6wW0sLL1Gvj3FNkXmndv9m6rK6DxiB4E6rE4IxQ9aUNaCGRJFCCXGsa0comlZt22NuyP3F2AwAN7V2kdh2mtGmqLEiJORGs6gWXMG0AGWh156nEK1kv2m8MxAWTfuDFqfiiPglRfGiqG6iURQFLSQclQAaKp7gZUKiyWnVn13Y0lSB1XONsozN0mAguEUVS1NtIqJJEAQhAmfQxlAW/MveYXFgUfQX3m2+62PG7yc5XGakXlqaIvJOvXcZfDjG2P1zx19h95zFaViabClrUO17jXFF8fI2RWdOryTfr99m2s//c72xXaiq/BVnAV8kka45VVFJsOnixR0SQaV5ULzPdExkmok8i8prqSk4Oj9mtCkWN4pFT1fQLKEZZ7U9i8cHPB68YPB1GlowoOg2pZB7zmHVhbeRALMClibNpac5eN53EV5FLE11ARFNgiAIEfTM1F+upWo4ADqg6GJoY+OcmPFlmp3SkGjy1T9LU15hVHbstZ8aLjuXz+yeO7NLRPWEQFi1RK5aKwjlcPLFWmQqw859eab9hd/9ZGwXqQcXDnu1ZCIliYpKYjBWqzQkOg5sNXJyhYi0JJYpCs83Tos5t63R9wCkO9P558B/ck77c/QOw9KkX1kJiqZQygHD0mSsnjt0ygF3sR6YvyLQlZAMlJim2kVEkyAIQgQuxcNGm43FTfX4npB7BcCb9mvMeD8qbsPSVAVxPDXM8o07YhsPbAUgTSk2LE0Oq4OM5HCJEU0LJ/NsooRX3W3RmusbAa+RmuFwsGlmAdrOlmdsR+dJimYnyUQ6v1RVDdeHCx1ash9L4Z+m4yJF089a27jntibrdU0TbOYEmCH3nBK6smq2NDltIfdc8IAKBIIXFujPtURzgKKfV6lvqzMbGCKaBEEQIrAG3DyZHs7+HHrplYcXK6VaUFjVQ9FkJ47Fo1h3vaUqRSb3XORyd80fFg2pStgt+YD3mvB5DsdFV7QHti6licMc83OcPxzTtAo9n1KrpFaMaDEp5hRLEhKMdAOgW2eSHKFSJ8Hzegr5Y4ueyHSvpgePeyP0yMOBy+PPL+iGC9Wbi24PueUURbfWhWOadJHpVxTdZlQB95zVp7sCi3BxQlYj416E2kNEkyAIQgRWf5kpHibBmoB79xAA/KUtTWNLFIUPmuWzMrk+iyb95W4qSVKyD1Z/QEtlH0VBN2WSPYnTWp8GgOZLMLnnItmgRbjwDsNFp/1rAMwczun8ELf/Ge/FTAiMBnThckv/ITFjpmV62BOROkBBISloadKU4Mo4dxHeUr0G3W6tERpmS5OieND8YStjpu04vT1oQUq0RommgCPYHxSKUTFNLlv4efmgQoHgCejWtvykraze/y0geZpqG3n6giAIEdgCZVgjZFOSPYl+rXoBYHH9RT/bTQxzP86l7gcYmXYif6Xu4NFmQWuNrx6KpuDLPU9L5Cu/LgzI3w6f3gDoQdcAybZkTm5xMq+c+QolOdcR+frwa7rY2BrIMPIJ6R2VL9qrFOnlVzqtfSFufyFOVKvutmriakLjhCQaOxvHjFvmCqcKsKgWkh3hYHWPooC70BAle7UUfOhlUAxUr+ESmztiLk2UE0znT7Ynm/YtoWB4S2n4eMKWJntEbUKfohza0uTz4Ah+Nu5Wn4enJaKpVpGnLwiCEEFx3l7TfrI9mRtO6RrubzWb9VoW32td2eSMOrheWpr0F7MHG3kEhcBv4eSNhmgKioSTW5xMwN0i2KsBGpd5HmCJ/1iu896BhhrO2+SvpKXpEDFQG2w2Pj7mG5wtPgagVbLupvv3mf+OGbvWEbbsqKikOsPuxDJFgc0L6KFuBeBnrVNMOglF8YatRaodC+YYpsj8XQC9WuqxXAmt38SassoIBA+JJpslLCZ1S9MhRJOnKG6ziKbaRZ6+IAhCBI2UQgIRy7qbuJqQmdQo/mAl6sVXL0WTbhHxYCVPC7qcti4x+qNFk4FaRmKHf+Js/iE/al24ynsvm7VWxrmAyrvndq+L2/y67ywA3kw1z6FVsFZc58adWTN6DamOVKPvgBp+vamKiqIoKFow31bU6rv5/j484L8q6v48KMEadzbVhhIwp1VIsZtFU0bEd8TZ/KMY95zdUjlLk3//Vv13VLsEgtcuIpoEQRAiSFcKSI6IN+mb2ZfGrmj3T2glU9QrLWc5LP5nvUpyGWlpipdvqVAN1eAzCxZrwu+o9v3Y0n4C/NgaLSO56z1Yk3/BE0zEWGn33M5fYprOdj9GQdDK08xvft4hS5OxnxTePxAR0xSyzgSCSUrLooRHMU5mBfqZ2hRLWADbLXY0v9msGCnQwJw/SQs4wikHrPpxVlVFC7oxfQqHTDmgfTURgNKouUogeO0iokkQBCGI1+enEYWoQTfROe3PobGzMal28wsSNSSKwuJKA/jlA/j6EXg0A/ZsrJ5JlubFFReHS8jS5NYs7NcSYvp/UfTgd7No0rCnLzb2krvehzPzMwBcrd7FG7I0Te0LE1Nhe/yg7mh27dWzgG8JZFCouZjhG8o6rS0FQQtYoWp+ZWUkZJj2r+8RTj6aFyyXoqAY1hnFon9ukaLppbRU9nV5HnvTr0znUlSzaGqWlGbqb+pqatr3RKwUVK3FRmxTyNKkKIqRy8mHckj3nHWr/nxL1Wi3oViaahMRTYIgCEFKCg9gVQKUBF/OJ2aeCMSWrjCsEEpYNEVbBPjfw1U7OU3Ta7A9mQWvDICt31bJae2KDz+wvfU8PunwPbsjLDRty95hj6rH5CTbwqLJ1XoGloTYRJ8hPNG14H/5oEJzmfm1ngPpx0Bnerv/zSRfcJUc+vMuiBBNDouDY5scazr+jKwzOL/FXQDkqElAfMvM6ISz+C2gr/J7pZEuiO1pP5rG2BuvMI63qlb+cXoPU3+zhGamfU/AnF5BterpAhxqRImZYFoCn3Jo0eRp1AmAcRnm64ilqXYR0SQIghDEu1NPXlkYrDsXk4sniGIpRbEUotrCSR3zo6wgVZ0d3LfjF1g5M9yw5sMjPufugjLseJmTlIA7cQeKpYxfggHURZoTUAzrTKSlqamzZbzTGbgjEl8C8MOrsPr9Q84nUdHFUREu/ITFQSiNQegZP3rKo/x45Y9xrS6ZCbqLTrPo8VTxxhRoSTioWA6pkKWoZarZRRtt5fKW44qMTI5K8J68FXDPuRP1YPv1DnNqB1Ve27WKPH1BEIQggb16ssOS4P+MkaJpaNZZxrZiKSUh6xXTsfmWqP9O1SjhcIR8u2yJucEavXSv8mjoMU2fJCUZbbnBGmnFBGNxrLGiadbIxzijxYWc1/68uOfdo8Qp4Pvp3w45n8RgCoDQtUOz/Iqu3Oq5ie9UvYBtjLs0grwis5Ur0jLj3nOmvqG62a7pFhzXIfIlhUSPVTWfNzqmqWOjjnGPNyVHNbnnDi6aCosKibeWUFbP1S7y9AVBaPgU7gJ/BWp97dOLxO5V9YDoyFIZjw54xNhOaDMd1WFOTZBriXJJlZj7j5Q/c343NxTpZV4IBOA/V8MHV1YoYWIkqqJgx0sgwhjzpdYLt2bldu+NQICAEiuaGick8dyZk3l0wKO0sQ2KOe/6cix0FOw86HxCoqlEc6Lad2FvOh97+v9I7PwIs5OS8AatR+mu9HLPsXWXWWpEWpraN9aFkqKWco83GP8UMAu8NEeaaT9S9Hxx4Rck25O5qfdNMRascb3HcWXXK41yKiHMlib9letX0MvMHITd+/NiAtZBRFNtI09fEIQGi6ZpFM+8GJ45Br5+9JDjV61ZA0Bp8F2VYA2LJofFgbewW7nH/mWLijUpPkLRtHE+vJwNH+mZuksP6IJjt5am95fm6b/3/wHr/gvrP4edP1fqEloggEPxYYvQGT/Qnu7u1/k20APFWmi0x6QcCHJM02YxbdObF8e/YFSB3GgSggJtv2ohscMUHE3+h6PZAgBcLd9Hsei5i+Ilswwx7rRjjVVqYLY0JQXFnKK62UET2pa9S3HAnDqgVVIrBqVONPbtalg0tUlpw7KRy7ix140x1022J3P3iXfjL25vajdbmoKr+CoQCO7ES3GcwsQ2S9VaMIXKIaJJEIQGy8xPZpO4VX/psvTZQ45v5NVf6h5VVxHRRVmHdGkbc0yKRY/vCRWRNURNOZYmrz/A4o17KHIfwvKlqHreol16cPSFlqUAbNEy9f6yPP137urwMYW5Bz9nFAGfHtdTElk+RPXiQ8Xi+gPVGS7mW14Nvm4ZsaIp3xq2eD3pjajh9u+B4CmJGR8iKWhpWtJqTdx+RdWFxsFE03FtGqNq4dQJkZYZq6J/ntakzRByfilmi4+qqJzRqZOxf7Brxb1+K3Osk9nSpD/nABzSPefCTVEcq5LTcuRuWeHwEdEkCEKDZd1P35gbDvbXfWke3dVt+IFA8OUcHQiuqOHg7sknT2bN6DU0d+irqkIZpcOiJj9unqIXF25iwutzuPH1b2L6TKQGcw4V7oTd60lXCilWFGYlJeoiJ2hp0rYtDx9TyeSagWDyybJIi4bixZb2Awlt/01C6zcOeY7IJI9XHBNe8h960tP85/F9oHP4gB9eLfdcCUoZ37icFDjzyx2TZEsych+Vh6aGhVmkaLrwuBbGtmLN03+r5gSc3oCXMzuHRVOaM+2g14qmXXpYZFlVa9TKS/05+ysQCO5UPBRHLy4AHNY48WJCjSGiSRCEmmfXOig9UO2XSSXKTfT7/2IH7VwNi55Em3oSjZQiU+qAaNHUo2l42fmFnS4EwKboFhhP8LicQDOjFhsl+2Mu9/13S1jkuI2/7bhfb9i2HL5/NbaEiCtN/+0ugL16zqd/paUyO2MPt2Q01S1NezagRIqQSmbg1oJJOL0RiRktzh3Ym3xd4XNEvsTH9gpblTp4X6Vt2bsAeLSIeK+ogOpIUtQyliTEJtiMpImrSYXnBmbRdHq7Psa27nrUQDWvotPQcFnDc0h3lh8/FY/IY31RwkgLRLrnDiGa8BiJRSMxpTAQahwRTYIg1CwrZ8K0bHiyLcy7D/5YVG2XckYvK//P1bHWpldOhUWPoQQDq0N/3VsUiymeBeCCjhdwZdcr+fDc8HJ/a3CMW1HQgHVOle3BHEHxhGHfwGrsip9TLGth928w4yyY83+wZbF5YMjCoQVg/xYA3g6WEfnO5dQtWV/eZT6msgWDgwkZI+uuWVx/otryTMNu6nVTuaeIFBVNXU0N15hiCVt7XErE53CQQOZE3Ib4PL5pdtwxWtw1ZWZuOPZmY9sWsYqxWUIzAl79GdrSVppKpYT4s/BPAM7M0lfaDWk75JDXiyQyDi4azWRpOnRMU3QyTxBLU20jokkQhOqnNE8vL7J/C2xaEG5f/hK8eX61XdapRIkmbwlMbgxrZ+n7cV5cn2vHA3o8U/QKqSauJtx94t10adzFaLOpYUvTty4nH7X+g2tapemdcUSTP/IdHRnUGxRG4ROHXVCBb57Wj42wCKEFwsHgxv1VLjdUyD3nOUSW6ejitJH0a9GPCzteyOSTJ6MoClZCwdZhAZdAhAXMW35MUwKlhlAY0PrEuGPap7aP2x7JWe3DK/ps0akfgqvl7I2+w9HsS8CcuPOMNmcA8NSpTzH7wtn0b9H/kNeLxGU7iKXMCATn4CVmAgEcijc2jQUS01TbiGgSBKH6mTtBLy/yQm/4bXaNXdYRLBGSEzCXvOBDPdN0vMDpJx19gfKTFUZjjXDPLQq6lvZagyIkFKwdOadAWNiUvBkRJB0VaO3xhYOpVY++ik2L1jbR7r9KWpq0Coqm8lbOgS5KJvefbLgrFS1YNiTo9rI1+pab22hssQXdcuUJu5/eJJ18I+t388TmjOwyMmbY0wOfPuhcwbxiLnq1WWSqCHsjPet3u9R2zL5wNuN6j2PSyZMAPR4pKyWr0mVLDmZpMmKaDuWeCyZGzQvGQ0UGo4ulqXYR0SQIQvWz5RBBz9WBpnGRRU8I+WlggDkYGfRVXKWxMUfOTF3UlfkrZrUJrSorUGwEonL+xLM0uQifNyE/oj5dSPDs2QCeYl5d8ofpuM/8cdxV+VGlTHwVy3Jt4NVFkzcoDJ4dOCXuMKtSfhxSNIqmPwNHxhckd70HZ+bn7LYpvJccFF7xLE2eEvhsPGAuEHzvSfeyZvQa7jnxHlxWFzOGzih3FV8kkXFM0ZYmR1nfmPFtU9uSlZLF33v9PaZkTmUpL4t8cGYAel6sg4im3Qf0701IQPZv0R+LYiHdmX4IUSZUNyKaBEGofg71IjpEfMdhsXM16YpuoSnT7FzqeZB1gaxwf8neGEvNaM8dlb5MKO5psdad/3jPMNoDEOs+AxK00uCcotxG7kLI+Q6mngjvXMJL/9vMPP8JRvdk7yjT8Mg0lhsDwbImlSzdovlDliZ9v0fTYw1X1UnNTzLG9Wzas8LndHv1z9riNCey3E2rcue4IyJxZ34wUDzSujWq6yhWXLGCEzJPiDk2HpHCJzou7c0LHqWd5WJTW1UmjIyuSWdCi0w5UP53fvlvfwF6virQRd1/L/gvH5zzQUxmcqFmEdEkCEL1E/Ef/WJ/T2NVlYGnnGSIR8KBcIyQFR+gMNpzd7i/ZD9rNutjvgt0oW3Zu3yjhK1R9510X4Uuk2TXY0x8CngIW5pKFCWue64puhXh82jLkbsQfnpT3972LYoC47y34Nas7NQak243W5WKIlZW7dOCJT38lbM0aV63nmIhaGlyWBwsu2IZa0av4ZXBr/Dsac/y7zP/TavkVhU+p9cb/6W+0x+0wMRxz6379jMA9mtJ/KnoYikyzggqJ2wO5p7rltGcz658yNTWuVGUFfIIOCEjLOwGtxkc1Vux1XOKXxfWB4JZ5lPtqWSlZJGRmFHuMULNIJJVEITqJ8Klshf9Bd+5bCYbnGP0Rk8ROMsPNj4sIpbwNw5anPaQxv3ea3j4vG4oyc35Yf3H9ADytUTAhyVxE6DHpVze5fI4J40lMSiaUHxE2n+KVJWksoKY8c2VfUBEPqcQS54x7do0DyVYGez5J/laEsWuXUQ6ZgpVlZSgtWIfwWdXSUvT3vwCMiJidiJdXxbVYqwgqwxatAUtSIkl+Gyi3XPr/svgLU8BsDrQHiz6MztYHNWhOJh7LsR/L/gvH2/8mDRHGld0veKwrxVNgi2BpZcvZclfSzi11anmTi1y9Vw5MXMHtlFSkAeEY5qi69wJtYeIJkEQqp+EcCCrN1iby42dQs1FslJa6aSMFSLi5fxjoBOWxA0EPE1523sm9x43lAS7ldzde8AGhSTgaDYXe7qedfugLpYonMHAXEX1oahh60GJqujWoyhComlldIxVFAnePPJJZ7umWxecaStN/V9ovbkBvW1PyNJUyZgmNeAxXHMQ68o6LAJhkZLmSMOzZyglKR9Qagm6o6KF3cKHjc1fLY1RlDzgyESTydJUjmhqn9qeO/veedjXOBipjlTOaX9OTLtGxOq5KEvT5t1FrH/3bs7Ne5tzEnTLXn4wpulgqxeFmkXcc4IgVDtewi8umxKO5SgLtVeHaAqW6/BqFuanWEhoMwNXq7cBKPXoc0hS9OsWai5DMFUWwzqjeE2JEotUFdxRma19bpoquiVlo9aS09zP8ILvgrjnTVfMx1qT1pv2PybsBtqnHZ6lSfV7jCBwoEriZdQIF2W6M507B+spHMpCgjL6sw4u0d9jUfl3u3Dwe2SSyMoSGdNUnmiqFQxLU2ztuUnTP+TcPP37mVSi54oqtOjjo4sIC7WHiCZBEKqd33fsNraXB8JFb90EBUclX/YVoaRYFyf/DfTHkqAHGlucO4AApV79hZVMKV5gaaMCtEBYMCTZkip8nVDKAUXxoUTkhSpW4liaCvQA3zLNxgGS2ao1Z2OgddzzhoLYQwT85lVZu9Vwvp4DBK0ylcwIHvCGk0naVXull9fHQyVsrWqV3IqsRnq6h/yEA6xy2GNFU7Akyq8O88rDI5lLpKWpKoO8j5zyLU32wu0xo0Nxa+KeqzvUpW+TIAgNFM2tV6ef5z+Bj/z9Uex7AH1VG1AtlqZft+irt0o0B0TG2ahllAVFU6bTw5ykRL5rssPkWht33LgKX0cJWctUH6jhOJViVYXomKa0LPqVvcgIz0RCOXuKCFtUJnuv4hu/XqqlMQVYEn7H2epNFNtelKCFTvPpgq7IojHKM4EznFewvMUv7LWo4K9kGRWfG09wHhVZyl8Rzu3R1tjObpFNZmI4dmtSk8axMU2uRgAst1bcJXooIoXSkaYQqFKCyS39EJPcMhHzHw5lioIneBupdhFNdQURTYIgVDuuYEboV3zn4Gz1LkkdnsGatJayarQ0bdiuJ64swREM0tZRrMV8+KPu/ki3eljhMmdYnnPhHE5peUqFr9MsWbcAqbY8bClrjPZiVY21NKkWcklnrdbOaCrUwqJpnZbF/qDVqLFSgLPlu9iS1+FoshCCxYI7NMoK3kcR3wZ6sLv5UvYk7WZ2YmLlLU2+CEtTFYmmTs3C8Wsd0zrSMqmlsa9qxIim/fv1ZJNfW7KoKiItTQ5LXUoGqT9rTVFiBG6SYv43UBBRzufguZ+EmkREkyAI1U5i8IVQjANb8joAbOlLwqLpSC1N+X/pyRF3rTWa1GCyyFLNYWSnBlAtxbzyzR/sLyjmxLJvaeYzu0kaORtV6tI9WsQv6Fqgqnqx3UOQR9gVWKAlsD8Yn9REKUC16qkYrMnrUSz6S/aY4PJ4W+pPEFGH7S+btdLis+eGF4yYpqqK/YmMRUpzpKEqKj2ShwPQyuczYs1C7Nqju26LrWHLy5EKnUjrUl0UTX6IEbiJmP8NuCPSQFSF21SoGkQ0CYJQ7SQEXQ95qeEkhgTs4QSPR2pp+vRveo6jf59uNLkU/aVUgsOw0gDYmyxkQKcmzH9bX+auRdRzu6HnDSTZKx7PBOXXAjtgibU0hdyCkWzVMtkUaMmmQEt+11qwNyiaGhNxrOo13HOd03oE2zwmC5oGcZNplsvG+Th8hcbquaqyNEU+j1AsTgtXJyAoBKIsTcnBYHy3JSwipg2edkRziHTPVdV9VQmRteeivvOhRQkhIkWTUHeQlAOCIFQrHq8PF7qlpyyi7pemWavO0rTzF/13hMsjVCS2ULFiTYxIdJm0iSTnN1y+/TkgHGx7U6+buLH3jZW+dHkv5X0WC3jz9diVYILFwrLYhIZ+LAzxPImVAIHELfzg2oe/CPqoGwn9F61ErDjs2eQ4vc1SgqKG79eHAvv/gIIdkNLi0BPPymZzoAVl6FnRqyTdAOYA7hS7LgBDaRniiaYUivEBHpf+3fjPOf+ha3rXI5pDZNkXTdMOMrJmCQl0v6LEpIdIioppclexmBWqBrE0CYJQrQQ8JaiK/uLy2cPL6G3J6yiliixNlti//0LWrT8TYl1kB0oWG9vrFD1Q+XDjRsqzBOQFY1JY9ITRtrsw+j592NK+B2s+PmsxCW2m81vTTXyWlEhHdUfMOV1WF05VFyKKEsCR8YXRl6umgOaHFS9XaN5uSwLnex7mSt9dQNW9nD0RWclDrrpEm2598iiKnrV8/v2w4EEIBEiijOlp4TxE7VLbcaRECrfjM44/4vNVGQexNDVzmAPDPWJpqpPUqmh6/PHH6du3L8nJyTRr1owLLriADRs2mMaUlZUxbtw40tPTSUpKYsSIEezatcs0Jicnh+HDh5OQkECzZs2488478fkOUkFaEIQaIxBcObfdakFN+t3U90KrYO23I7U0xYnHaWTXrTMFNv3/gjOzzqRPymUAuIvzjHFraQ5QabdciARb/AKqxSHRtORp+G0OBPzM+HarPl3HDhT7HhKy/o2z+SckZL2GI+Mz49jf7PEFTLI9mU5Nw4HWttSfje3fSdM3dqyq0LzfWZFDMS7DihVdbuRwiRQ9IfGS5tKfUVlIzCx7Eb59Hm3vRlRFCwtMwGmN7+6sLB+f9zGP9H+Es9qeVSXnqxqCq+cUYmKaEsqJaRJLU92iVkXT4sWLGTduHCtWrGDBggV4vV6GDBlCcXG4DtVtt93G559/zocffsjixYvZsWMHF110kdHv9/sZPnw4Ho+HZcuW8cYbbzBz5kwefPDB2rglQRCi0IKBvzdmxNbNynV6gkGxR2hpihMo6wpamvwu/S/4VsmtyNmt/9VeoFr5LtCFW7w3EHDqbqHDtTSVlwdolxIhpt4fCfPv56OV+qo9V5vpJHV4BkuCXk9Ote/D4gj/MVgYTBBp8enn8BzQi+cm25Jx2S3cdtxdMdcrCAU/F+6M6YvHym16DbxQXFRVuedOyDiBe068h5lnzTTaEoJCyB31OeV/cjsAjoDefkHHC6pkDgDHNDqG8zueX7eCqI2CvYrpO+/1B7B4ikxDxdJUN6lV0TR37lzGjBlD9+7d6dWrFzNnziQnJ4eVK/XSAPn5+UyfPp1nn32WQYMG0adPH2bMmMGyZctYsWIFAPPnz2fdunW8/fbb9O7dm2HDhvHwww8zdepUPJ7KlRQQBKHq0YIvg13W+PlydlitVZCnKfbFaA+UsceikpOsZ9JukdgCn1cXBjuUJC7z3MfCtt+j2vKAyiW0jOaa7tdgV+28OuRV/nbM4wD8rjThHX9EwVbDbaahWGLvV7HvM7b3q8HSLIou+G47LSiagqVFrj52ZMzxbjVY223f5grN+Ys1QXEVzE9VVRYNRVEY1XUUfTL6GG2h+nxlqvmVk5b7LQD7rfrn1yqp4oWB6yO2YMb16NVzc1as5jTLatPYqk4FIVQNdSqmKT9fj3do3Fg3P69cuRKv18vgweH/eLp06UKbNm1Yvnw5AMuXL6dHjx5kRPwVO3ToUAoKCli7di3xcLvdFBQUmH4EQageCvLzAGjm0+OahjZ+AM+BE43+nMNYKl8RnFoZZ7UK5whKsafgCrrSFNWNvcn/UO37jf6MhMOvIH9bn9v4btR39Gvejx7NmxvXyAk0NY2z4gPVjaIETO0BbwqKEg5YLglarwKq7jp7fe2rQFg0xSt34rN4CQQtGWxbXuG5h9xzVWVpikeiXY9tirY0hdhl0QV1RuLhfwb1gW4t9HQWPkWBPevhzx9Zu/Adzl9wmjHmKs89/Kk14eNANiCiqa5RZ0RTIBDg1ltvpX///hx77LEA5ObmYrfbSUtLM43NyMggNzfXGJMRZfYP7YfGRPP444+Tmppq/LRuHb+MgSAIR86clXocUyhZ39iTe7D42heN/hJFqZaM4E7ceNTwS7p/y/70aK5nnVZUD46mC03jWyRVYMVZOSiKYgiZ5GBslKJ6+NhvrnL/pO3fqJZwKoGTmukpEhSrOTVBqaoQAAJBcXVcM33FXGRQczO1r3kS1sJw1qYdP1Nhgu65qoppikeSPb57LsTuoBWyMoWS6yOhpJu+0GN47Qy6L7nJNGZJoCenuF9ggdYLEPdcXaPOiKZx48bx66+/8v7771f7tSZMmEB+fr7xs317bM0fQRCqBsWrxygWhUpCOFLJTEkgBb0GnVtRqtbSFFxi7tLC50ywJpDqSGVU32P0BtWNvzTsCrqs82XlBnRXlhRnonGNvaTQruxto2+EZSk9bLoFvGVSS67s/DcAk5UJoFhVwkHTwO19bueDcz7gmu7XGG2ntm9vOkZRNK5L1xNfMv++Cs1VsebhzNQD0MvLN1UVJAaL8noi7mmB/3h2a2lowE6rLjgzEzLjHd5g8AbVki+OOxkwSugARlkfEU11izohmm6++WZmz57N119/TatW4f/IMjMz8Xg85OXlmcbv2rWLzMxMY0z0arrQfmhMNA6Hg5SUFNOPIAjVg9VfilsBX/B/m5CLyRLM0eSuakvT7/8Dvxeb4qdTMK7xsQGPAZCZlAaAYilFsepu+feHv8/9/e6vssunOYKWJiUAih8N1fQyTLPqGbAbORqRVI5Q2+70mqwynRp1olt6N1Om6+Mze8Uc92NqMAdSBVcCOjNnGdvV6QZKduqiya9AaF3zfi2FnwMdKVYUY6VhZJ26hsjeQv3uPw+cFNP3L9+5jPP+I9ygVG2smVA11Kpo0jSNm2++mU8//ZT//e9/tGtnzs/Rp08fbDYbCxeGzegbNmwgJyeH7Gzd35udnc2aNWvYvTtcRX3BggWkpKTQrVs3BEGoXc4t+8yI0QHd6gNgVfSXQZl65JYmdyDiL/ft3+Er04PPQ/abUJB3misN0AWNatNFU9MEc9zRkZLiCAuWUPLJKb6Lw20WfW5pzjSSHWbRlOFqbmyfrdwK6OVN4q3QO7vd2XGv7wO9fEukEN26FH79xNj1+nW3nzX5N6Otqpb6xyPZHj53yNq0jxTu917Lu4GwCzOyBEtDJBDM07SVZhzQzML2Od9FFJJA6FurKGJpqovUqmgaN24cb7/9Nu+++y7Jycnk5uaSm5tLaan+jz01NZWxY8dy++238/XXX7Ny5UquueYasrOz6devHwBDhgyhW7duXHXVVaxevZp58+Zx//33M27cOBwO+bIJQq1SeoDGeb8a9c0sisWwluwr1F8OVWFpKiqKWMzxzdNY/9lWv3xQbIRePC6rCy0QDqJWFZV0Z/zacYeL3WpFCwTjg4Ki6WetEx/6dHHgt+gCsbGzcYxoapvaxtjea9ePLc9tZlEtXNjxQsNyF+KHkJUpbzulHj/LViyHmcPho2vQZunxM8Vu/YUccDcJz7s6LU0R9xlyOx7QkthDGo/7LwWOjhprgUDwlav48UQU5DihbBplOHC1eoPkrhOwJPxe5akghKqhVkXTtGnTyM/P57TTTqN58+bGzwcffGCMmTJlCueccw4jRozg1FNPJTMzk08+Cf/FZLFYmD17NhaLhezsbK688kquvvpqJk+eXBu3JAhCJFv1JeXe4LswsihsmVf/78etKFCyD6YPgQUPHdZl7EQks9XCJUdCLq5IC4YSCL/AmzibmFxeVYUWCKYMiEgtUBrMveSz6qKpkaMRiXYHmhYWCsn2ZHzFHQFQbfpq4oNZgCadPInFly02tf1qDRYcztvGJ//7lpPnhpM7KqvegZL9eP1acJ7h5xJZeqSqcdqsaJr+nEOWpmKC167ilAd1GUM0EUAlvIJyL6ko1gKswfQYCVmvGgsVjobnUp+o1dpzFakJ5HQ6mTp1KlOnTi13TFZWFnPmzKnKqQmCUAV48nOxE35RmlZoBS0+bkWB3ev0tu3fwaD7jVptFcUWKZoiKAuunosUHnecdD3PrHwGqL7VWumOTA74N2NL/RF3WQtAoTQYw+W16HFWac40HFYLBGwQbEu0JXJ6h04syd2M6tQXqBzMPaMoCjbF/Kz+sAQD0fNyWLXkN0ZFP8r9W/AkdQseHxaY2wurb0GMRVX0z9viN74LJZo5F1V1BqLXFZLsdgoAFD+WCNGEWkZSp8fiHiPuubpFnQgEFwShYTL7ez1mZk7gBMBsadI0fTtmGXqReWFHRbDij9teFier8phjx3Beh/MAOL3N6ZW+VkVobNPdbPbGy/XacmAUJw4ELStJtiQcVhVNC1sSku3JHN9Mf1ahIsMViTW69JhLje3ZTfRg8EDJAZKI4/Zc8gwen/7CVtRwvbPImnHVgabpIjkkmkKWt6Mr4Fm3timKHzWcIAJHk6/KPaKqVnUKVYOIJkEQqo2du3UBVBgUDJGiaXAXPfFkWbRoKqhYGRCDQABrVLJIAC/BJILEBhg/3P9hll6+lBt63lC5a1WQU9p2NrZtaT8APsqClpVA0LrjtDr1/E5KWCwk2hLJbn2s6VwVsTRMOGkCp2QMN7WpXz/MQ7a3AHjXNwhv0D3Ghi/CoskSDsAfc+yYit3c4aKFLIt6qPPGZr+Q2P5p1GCOqqPBotIsKfQ9DJhEkyVpQ/wDODoscPUJEU2CIFQbIUtHYVAYRFoTUpz6X9Du6JVhBX9V6hpl7vCL/2t/eBl+pAUr2lqjKiqpjtRKXacy9GvV09i2uP4kseNT5Fn0l6Q/mOU7JOTaNW5kjE1zpJEZlRW7ImLCqlp5sP8dxn60zagQF2O84Xp1/qK9ekyNoj+7t4a9ZSTQrDYiLE3brFb2NtqE6tiLq7Uu7I4G0TSws55SQbEWUxj83nsBi2NPucdUR8ydcPiIaBIEodpIVfTElqECtJGWJpcllCU66qCCHZW6xqc/bjW2b/TeysXuB/m751Z6eKYBoKDU+Aqk/i36k+UMZ+xWbQX8muhhsb8nhcEYpJBoilwxlu5Kp5EzLKJu6n0TU06fUqFrZiY1QQ1as/6ymcNVizQX3wZ6kKfp8U5Nv3+cdY6rIOiea5dqTvdSHYRWLXoUhTubNYnpPxpEU5Jdv0dr0kbOateYPFTGOs43+k9yTYg5Js+dV1PTEyqAiCZBEKqNxuiul3x0gRQpmpxW/QXijiriSmHlRFNxadjS5MPCj1oX5gZONFZlhdxgNYmiKLS2nGlqWx9oy2jvPexRdOEScrtszgsX2O3ZtCeqonJjrxtpldSKS465hMbOxhW+pkvVA9v/tJpFU2il2k5NP5dr92pKLeFnkmhLrMztHR5aOPC/VI39PI4G0RRtNepnvZMVVv0za+RoxOV9jok5ZmjboTUyN6Fi1OrqOUEQGjaNlaBoUnSBEOmecwVdZqGYpgItgRSlBMoqV0B7X0Gxse0j/FKq7VVZfr9ZBIRkghq07oRchqqiEtAC2FU7LZP0OK+bet/ETb3NNckqQqo1k2LvdrZHiaYf0vaSmPYk+3YGIABJeb8ZY1xWV9wCwFVOUDR5FYUWPh/bbOZlfUdDIHh0WgefquFqNg+Ai4+5mOw2XUlzNKKJK523hr1Fqa+0ypOvCkeGWJoEQag2Giu6ACpUYt1zIdGwjpY86B3N876L9A5PUAQFIlbE+eOnFABoFNREHs0CETW9LEkbAXBYa8eCcX6vDuaGYKLLgKJHHIXcc2OPHYuqqDx16lNHfM2SEj1O688o99zWZmtR7Qe4MSssKv1AojuZ9qnmGnbVRdvGermqHBoZCwMiORosTdHiVHWEFz3YLDYSbYksvOQr3h3+Lkn2JBFMdRARTYIgVA+aRnrQPRdv9ZwrKGbyFAdv+odSFEp26CmG+Q/AU+3go7Hw+lnweEv48fW4l+nRXA8o90UYzq3Jv+LM+AIIl22pac465ljaJIdjhUIr1ZQoS9P448az6NJFnJF1xhFf0xJIA2CfJSyOiqJck7uCfW19PjpsPY/3z6n+IukArmAplcf9l/ELWTH9R8PS+mjRZHGFc2Nd2PFCQLe4NfRyMvUZEU2CIFQPhTtxKF622KwUp+nJKyOTWyaE6pEF8/SEkh3iKYJlL0BZPvz6EeQs12vTzb4t7mWUoBUq0jVnb/I/Y7u2XkAW1cIXF31Gc4YBoKhlgAZBt2FkIHhk8PeRYEMvoZIXjBN7yzeYMxMuM41Z4AqvGvTZaq5YuS24glJTfWhKrOUwxd7wC6fHWJqCWd97Nu3Z4IsVNxRENAmCUPWU7IdnuwJwXqsWqIlbgWhLU0g0eHFk/JdFx3yuW0U8RZW6lBZMyliKFUfG51hTf8DiDAeTlx1hMeAjpW+bFvqGpQwUH4qipx6ojlirrhl6wd9f1Qw+9/fjEd+V7LebExBstYQtOlef3qPK51AeqXZ9xZxizTOK0Z6ZFQ6WT3EcBaIpKqZJseYBtWcNFSqPiCZBEKqcn+ZMj9seb/WcYinG3ng5KBpPpDcCd2H5J45XesmvW24ea5qIvfG3uFp8bOreV7avkrOvWo5truddsqf9iMUZzkFVkUzfleXCXvrqqzyLwnjvLXgsXqxJelZ2f5ku3nIjAq6H9elS5XMoj67puqtSte8zrIuD2ww2+itSVqu+E716Tgnm7KqR1YtClSCiSRCEKqdk9adx2yPdc6FM2IolbAlR4eB5muKVWAn42Keq/C85fr06fyB+iZWaIsmWZGy7Wr9BI3smzRKaVcuKtbapoeSJRaC4STrmYVSrbrlr5dCTVx6IeG+rrupL8BlN7xZ6YLzFtd1IB9EhrcPBDmlwlPeZi6Wp/iCiSRCEqqVkP8eqW+N2Rbqk2jZOi+n3Kgp49dppBZqLtmXvmgeU5sWe1O/FHSfvT4hOjTodasbVSpuUNsa2Yinl84s+YuElC6vlWq1TM9E0FUXxk9D2ZVPffYPOBeCXJF84Y7i15pb5h1aCqbZ8FIv+Gdstdu7uezfHNzueSztferDDGwSRltZIjoYg+IaCiCZBEKqOwl3wVDvSgpnAz3M/bOqOXFae7IgN0I5c6RXautc7NjwgXrxTwIOfWNHUs2lPhrUbxtMDn67EDVQ9PZr0oG1KeBXdhCWxWZ+rCqtqRfPprh6L02yVO7HF8cb2V4k1/5KOTG2gBGsFOiwOrux2JW8Me4Mmrtgs4Q0NixK/JIpYmuoPIpoEQag6dq0x7f5CG9N+ZGbueHl5iiKyg9vRY5Xe9Z/Bb4HWemM80eT34YtjaDq5xck8depTtZ7rRlVU3hsetpgVe4sPMvrI0fzxX8Auqwt/qZ4880+rlTItvtWjunBZXQS8aaa2oyGhZSQBLbawNIDLJikG6gsimgRBqDK0kv2m/ZAbJkSBO5ztO55oKotws/2qha0zJcHadbhjRZMS8OKLY2naX7o/pq22SLKH45q8AW/1XixKDDVyNOKtYXpRXF9xZwDmql0Y6K5YTbuqpG2KOYbpaLOwtEhqEbc90SqB4PUFEU2CIFQZ3/6y0di+0D0JxRK2qrRIbMGEk8KuqXjV24uV8H9J3wfCK7uKtFDiy3juOW9cS1PfzL6xjXWAqsrJVO75HWY319tnv03vZr0B0Lz6sv6NyXnsUmtesKQlmgXj0ZbEsTzRJDFN9QcRTYIgVBkrf/sdgLd9Z/Cz1smwNLVPbc+8i+eRbE82jQ8l9Ouc2hPQi7mGcBO2mBQTqpUSzz0XtjS1SGzBZxd8xmOnPFbnCp0+M/AZjk0/lrv73l2t1+nZwpwkMfKZ3zxQj2tSLGVkdHqnWucRj1NanmLar+lCynWBRZcu4pPzPjG1Rf+7EOouIpoEQagyGlFIsaLwabP9WBI2oVhKAUh1xF/aPu2MaVzX4zquOOYGAEoj3HNlWjDeRfFREhJNcdxz+MOWJqtqpV1qO87tcG6deyEPaTuE9855z7SarjoY28ucATzyhXxW527Gdom6iZm/zqzWuURzfc/rje3IVAxHE+mu9JgVnSKa6g81UNpaEISjheMblTKHBDam7iMhdTr+Mj1DdZ47L+74jo068o9G/+DHPzcDUBYhdMqwY09fhL3JV6zdkckIL3EtTVZfEb7gcfFcfkcbHdM6mvYjcwO1TzMX5123b12NzCneXP6/vTuPjqJK9Dj+rerudGcPWchGkB1ZJIAsghsqKAoIbogPB2R8LjjM4DCIyqiP58YbHXkI8uToKLjgNo4DrhEFFXWQYRFQAQdkJwsJIQlJSNLb+6OgQxOWZiArv885feyqulV9qz1Jftx7614FhWpnwxIyTYVamkTkzPD7SazYQba9+g+jzWWt4n6yAb/Nwq1Wh4OmyeHniypx4GyehWF6+CDl0GrwVWWQ+wPs+Efg3F4/Ps7hlcxqY8LIxibOFUfflL7HPOYwHdzV7a7Ads/knscsV5uubXstwFkxL9OJJLgSAu/jnHH1VxE5JfoNIyJnxge/I8W9i1Kz5kDnO7vdecJTEyOru2oqDIMIv7+6ew7wmIeW2Nj5HXx3aNLGe3+EQ0uRHG5pOnptr7PVC1e+wOLti+mW1K3GsQk9JtA6tjXf7vmW4e2G13ndJveazOBWg2uMbzrbfHz9x9z9+d30TulNelR6fVdHQqTfMCJyZqx5FYBis2YDdpeELic8NdpZ3RJ10DAI9/vZ76heXiUwu032muqT8n7E5/NiUh2ajjfj8tnGNEwGtx583OND2gxhSJshdVijas1czbi4xcX18tkNSYQjglevfrW+qyGnSN1zIhKaqnL4YCL8a3HNY+6DgbdHhya7aad5RPMTXto0TPw+K/BUmAYLoyJZ3eazwHGf6WOv7ajxSiXZePM3A6h7TkTqhEKTiIRm9TxYPR/euAn2rA4+tn974O0OM3hQ64AWA0J6ks3vs7rjyg2T55rVfNpupeuoyTAriigptJYKWeyzFqPVQHARqU0KTSISktKSouqN5XOCDxZuBWC9rzW7TOupKNOw0TXhPGYMmBHaB/is8UmlptU9dzT30cGr8gCLV22yzjk0Y7jGNIlIbVJoEpGQvPH1T9UbJTlBx/Zk7wIgz98sMKHl34e/x5tD3wh5viS/15od+infcMo9NQeTu4++TFU5sYcWBi4zrK49dc+JSG1SaBKRkKQYR6zlVpYfdGzekvUAlODCsFUAp/4Ydatm1iPYK41zyK7sUON41dHhq6qMOKx5m8qxuvYUmkSkNik0iUhIgkLTvs1QURzYjDasgeAFhqt63ylOXtgqPgkAw14KZvWTc+4D1izW7qMX5V37Ov1t1uSMJTbrV5lCk4jUJoUmEQlJKoXBO/56W+BtNFaX3OZw6zk2u2k/5cf/fX7rXFfyxxiHQtNjFz6G32tNR7CbeAA+8vYJOm9+TDQ5SWsBcNqOGiwuInIGKTSJyMn5fDQ39gfv+2UpzOkLFcVkRHpZ5XLyadp2ADw+T81rnMTmoiOW9DArAQi3h4PPaj16x3chN1c+zOfe84POeyahevyTQpOI1CaFJhE5qcoDe3EaHnx+gw4Vr1QfyN8Ea14lxihn1dFTApyiQa0GBd6bDiughdvDwW9NI1Bh2FgVHsaSjHX87Dh2K5bL7jrmfhGRM0GhSURO6vMVawHYRwxVOHjZc8Rs00U7cXlLKTOqf508duFjp/wZE7pPCLw3HSWAtWad32+1NBmGl/CMefgjdnNj887HvIZamkSkNik0ichJmQesKQZ+sMXhiP+KJ5z9mOYeYx08kEumex1lpjVQ+57MexjRbsQpf0ZUWBTeirSgfc1czeBQaMLwYJiHuv3C9uPz15zKwGVTS5OI1B49aiIiJ5Vq7scP/DEdXPZPANi15dDaZVs+B6Ds0PIpEY6IY10iJIcHfR8W74oPdM9heIOOmUbNCTCddrU0iUjtUUuTiJxURMF6Ck2TUnt1UPlnu49Y43SC23pyrvzQPEqnFZp81WOVIuwRxDnjjuieO/ngcnXPiUhtqtfQtGzZMoYNG0ZaWhqGYbBw4cKg436/n0ceeYTU1FTCw8MZOHAgmzdvDipTWFjI6NGjiYmJIS4ujttvv53S0tI6vAuRps/ctYJce82G6ccSq59c227GAac+P1OQQ+vPgdU1ZxhGdUuTGdzSNNveu8bpCeEJ//5ni4icRL2GprKyMjIzM5kzZ84xjz/11FPMmjWLuXPnsmLFCiIjI7nqqquoqKgIlBk9ejQ//fQTn332GR9++CHLli3jzjvvrKtbEGny3B4PGUY+uXYrvCQ5WwSOhfuqW54OHPptcqozgR/J769uadpbvheAtGgrCNkitgSVfSEjj/fIDNqXFhk8JkpE5Eyq19B09dVX8/jjj3PdddfVOOb3+5k5cyYPPfQQw4cPp1u3brz66qtkZ2cHWqQ2btxIVlYWf/nLX+jbty8XXXQRs2fP5q233iI7O7uO70akadqxbTNOw022zWpp6p7Sid4R9wJQcsQM3GU2K0CdTmg6PCcTgNvnBuCZEdbYKdNeXqP4/RH9grbTohSaRKT2NNgxTdu2bSM3N5eBAwcG9sXGxtK3b1+WL18OwPLly4mLi6NXr16BMgMHDsQ0TVasWHHca1dWVlJSUhL0EpFj8Ptpt+ACALaGWYEmJTKFa8+1fuZy7Db8gB+otFljjk4nNE3sN6LGvu4p7Y5b3haxPfB+0DmDSHCpe05Eak+DDU25ubkAJCcnB+1PTk4OHMvNzaV58+ZBx+12O/Hx8YEyxzJ9+nRiY2MDr4yMjDNce5FGZOcK+PFvUJIDu1eDv7rLbce/1gFWKMqKsMYvXZB6AVd0sBbUrTKh2DQpNQz8xum3NN1zwZAa+45eTy7eFR94b3NZLcodmnVgxoAZ1hgoEZFa0mBDU2168MEHKS4uDrx27dpV31USqR97VsPLV8K7v4YZ58JfLofNnwUOr/90HgCvRCVQardakvqk9CHaGQ7eSAA2m9F8ZFohKiYs5rRn5W7mtMJZtKN6QPlbQ96idWxrXhj0An8d9ldSw9sCYDqKAp8rIlLbGmxoSklJASAvLy9of15eXuBYSkoKe/fuDTru8XgoLCwMlDkWp9NJTExM0Eukyaoqh40fwIoXwBv82P4vS16uWX7bV4G3mQUf8bPDwTNJkYF9h0OR122FmlH+e3m0ufUzlB6VftrV/b+B/0fvlN68eOWLgX1dErvw/oj36ZfWj+YRzekXPyronFhn7Gl/rojIyTTY0NS6dWtSUlJYsmRJYF9JSQkrVqygXz9r8Ge/fv0oKipi9erVgTJLly7F5/PRt2/fOq+zSINTVUbls+fD27fCJ/fBujfg4H6rNSl7Lfu2rKx5zv7t1n/zf6almU9WVPW8S4/2fzTw3u+xQpNhL8Xmsv5xE+M8/X+AdE3systXvUyXxC7HLdMyLjFoW6FJROpCvc4IXlpaypYt1Y8Rb9u2jbVr1xIfH0/Lli259957efzxx2nfvj2tW7fm4YcfJi0tjREjRgDQqVMnBg8ezB133MHcuXNxu91MmDCBUaNGkZamp2hEPD8uxFl2xJOk7//Weh3Sx4RddjvjfHeRUhHD62HTIfcHAH75+m3aAl86EwAPHZt1ZHi74YFz/Ye65wxbGX6vE8NWyQO9H6iL2yIjJilo+8iuPBGR2lKvoWnVqlVcdtllge1JkyYBMHbsWObPn8+UKVMoKyvjzjvvpKioiIsuuoisrCxcruoxEwsWLGDChAlcccUVmKbJDTfcwKxZs+r8XkQaou2bvuf4z55Z7kpJIs/xASU7RoEPKNkDFcW0Xf8MVcCWcKtL79ELH8U8YlHei1q3ZkXhWlzJHwf21dUj/z3Sg7sBHTbHcUqKiJw59RqaBgwYgN9fc/2owwzD4NFHH+XRRx89bpn4+HjeeOON2qieSKO3ceMPtLbBJOdljHP/SHdfPmt9bXjWP4inHS9iB3Y5rMBRGr+OqnwbYT4PvuXPYwILo6MC12ob1zbo2r3SOrOi8O9B+05nCZVT0Sw8Lmh7QMaAOvlcETm7NdgxTSJy+loYBcyPjWZp2i/8R2IXOsaO5FdtPaxq9wmXt2zBClf1Wm226I28Gn4OAEWr3gFg8aF5j3qn9K6xrtuQ9hfW0V3UZDft3JN5DwATe04kMynzJGeIiJw+hSaRpsjvx//ln+hhbuGTSGvskS1yK2Hx31UXMWBycvDYoNcTrHmO4st+oQpY57KWTvnP8/6zxke0iG7BLefeQqwzlnhXfNAg8bowvvt4fhj7wzHrJiJSG+q1e05EasnuVRhfPgmA5xjzPUaaiZT5CgLbneI7s7FwA0V2L1VAGLDa5aTC7iEpPIneyTUXxzUMg6l9pzK179RaugkRkYZFLU0iTdBHC18HrHHdO+3Bg6QHnTOI5bcu5ZlLngXAZXPxp0v+B587Gq/pY+2hLruNzjAAeib31EBrERHU0iTS+O37BSIS4IjB0cbeDWCDD2ztcJtVQcU7NuuIYRhc2fpyVrdcjc/vw2V3YVZlgGMDWx0O+lRUssVhhaYOzTrU5d2IiDRYamkSacyypsLsnjCjE1SWBna3MXJ4JzqKh1pagcnA4Jzoc+gU34n/6PQfgXJhtrDADN8XZHQCqluYtjusf1O1jm1dJ7ciItLQqaVJpCFxV4AjtLXbvO5KbN/NOXReOez8DtoPxLdjBeeau3gkunopoXhXPB9e/+EJrxeJFY5WO2LxU8jmMKubrlVMq1O/DxGRJkgtTSJ1rbwQinYG79v6FczuBW+PDvkyf3/vzeAd+ZugrICVL/0OgNwjpgjonVJzIPfRRve0lh7a4fLSP2Y4FabVQtUypmXIdRIRacoUmkTqkt8P866BmefB1i+r90cmwr7NsP1b8FSe/DpeDzdunIgfKDatH2P3z59R9FQ3+pqbWOsMY7/dmjj22rbX8odefzjpJXumtg+8L034HrBm+D56fiYRkbOVQpNIHfLs2w75G62NV4dDZSkFn/8v7peH4LeFgecg7N1w4mu4q/C8b7UmvRETxUXntCArMgLHji+JM8rwAL9Ks7rmEsMTeeKiJ0iJTDnBFS0200bn+K5B++Jd8ad8jyIiTZVCk0gd+vlfG4N3TE8n8ZtpOCr3Y3gPPeVWvOe453sry/A9kYZ93QIA/ifBCjUPJFkzd38YGUGP1tXdabd1ue2U6vf6Na/yh/PvD2x3Tuh8SueLiDRlGgguUocq92cf99hufyItjAIozTtuGfcbo3HhBuD9qMjAfq9hcMAweCkuJrDvkhaXMKbzmFOqn8Pm4Laut9IntSfv//I+E3tOPKXzRUSaMoUmkTpUvNcaAL7I25+ffS2Y4niHFS4n99uGMKQyh/s8BVC+75jnej0eXDu+AGCTL4OpiSYG1Qte92+VEXj/UN+HuLbdtRjGMaYDD0HnhM5qZRIROYq650Tq0O6d2yg3DN5MKmde+l46RI1jbPjV7Gu+inWRVgsSZfnHPPe7VSsB2Bjm4PrwEfi94QC0imkTVK5js47cfO7NhNvDa+9GRETOQgpNInWorauEv0dH8lNsIfbIrTiTluCIWwOAzR1nFfrp78c8d+33K8m12RiZnootbRGmvRyAl656kRQuD5Qb2XFkrd6DiMjZSt1zInUooWoPn0ccex03X2WS9aYsH9wHwRHcUjSs5A1+PDRb92HpUek0j2jO4jEz2VS4iY2FGxnednit1F1E5GynliaR2uSuwP3aSHwLbsa/fzvpnl3st9kAuKvbXYR50wHwuWNZVT6g+rzs76vfe91U7t1Cy4Mb2eWo/ndOelQ69/W6DwDDMOiU0Inr21+PzbTV+m2JiJyN1NIkUovWffUemb98am08m0WUATvtzQA4L/E8vrx1LJsKNzFy9jb8/kg+9fbiKtsq+NencE5/VmQtoOfy3+I0vPiAb8Ot1qfxmeO5p/s99XRXIiJnJ4UmkVrg9/vZuXk9md+MJ9dm477micR5vfw5v4CddifgIy0qjeiw6ENLnPyCI+6fvGikctVB4NuZVHz7PH2pZElkOLl2G4WGixXh1rp0HeM71uftiYiclRSaRM6w/M0r2f/aWDqY1iSV82JjWOuyliLpFdkS8AFW99phZvgeXKnv8TOwZbeDdm43TirZYbczNTGJ8qN63C5Mu7AubkVERI6g0CRyBlUU55O0YCCRNoM7k5Nw+fx8HR7F4aB0WEpkChGOiMD2lEsH89zW+QBc1yKVgWXlfBMeToVZc56lOVfMwWV31eZtiIjIMSg0iZxBr/z5D/ynDYa2SCXffvjHywpM95w3mZyDv7CpcBMTekwIOu+ui7vw3Nbq7c8jI4KOt3FdQpFvMxdn9OHi9Itr8xZEROQ4FJoaO78fCv5lvU/SOJd6U3mA4ldGcZftG16MjTkiMFlaRLVgfM+xJ7zE05c+zX1f3RfYzozvT4Irmd7pHbi18621Um0REQmdQlNj4vdDyR6ITgXTBn4/3/z5Ji4q+8w63GkYxoAHIblL/dbzLLT2nSfonv0Na51hzIqPA+CWjrfQNfYKPst+gxs6XHfSawxuNZhL0i9h8Y7FXNriUpq5mtVyrUVE5FQYfr/ff/JiTVtJSQmxsbEUFxcTExNz8hNOg69oN+4P78OZ3g0iEzlYWUVRQQ6pzaLgwok1JjQ8rKKyiv1zriC1ZH1gX05sD8IOrGNichL9Dlbwm6Ji/DYnxm++g/g2x7yOnCHlhZD3I8SkQ0Jb/vlIH7bF7uHxxHgAWka35IPrPsA0NBWaiEhtqcu/36CWpjq39m9P0XPXx7DlYwDCD70AKNgMN75U45zF7zzPhT9NI9WoIM9mI8Lnw2cY7KrcwJuJ8axzOVnncvJmTBSz8/LpvmgCnmHP4bCZ0KxVjet98eEbeL5/g4GplRjdRkKfO/79GyrcBpFJEBZpzWQdFgVhESc/r5HyeH08/8IcRub+mWSjCL8jgvJR79HH/JknY1IC5R698FEFJhGRJkYtTdRRUvX7wTD45ZFzaWvmAPBVuIt7k5No5Xbz+8IiLjlYYZVN6wm3/g0i4vGUF1Pyp87EG6Xssdu4Lj2VFLeB1/Sw01FzOY4kj5fFu/ZUp+GRr0HnawEoytvFjjnX0sG2jVnNYnH6/UzYX4z9pvnQ5eTdRzXs+AfMuxpf0rl8kxfGJeahVrAp28AVBxsXQdK50LwTVR4f7vIiIqPiYOdysDuhRa9T/0wAnw9y10HlAWh1MRg1nzA70/yeSt6ddiMDw75hrcvJZoeDDc4wfl9YRJVhsMnpYGpSIgCLRiyiTaxa+kREaptampqgnKVzSfp2Gu64NrQ1c8gKj+S5uObscHkB2BIWxm9SmnPBwYPcVFLKldlrYNnTMHg67736LCONUrY67FyfnorXMNjmBLACk2nYuK7dCNpGn8dTa6aRb7dxact0OlS5eaBwPx3f+RX7+0ymsLAA39av8Ybv4aKUFlQdepQ9w+3hhkUToM1lEB4X2g1t+RxiM1j7bRbdATN/E5cc2aiyaAL/PBBPn+zX8JguDlzxJGuzXuEy27rqMqYDJq6D2HROxe78Qspfvo4OB9daO675M3S8xgphkYkhXaNwzSLKvvhfYrtdQ8ylvwG7yxojlrcBvFWQmlkjiC2YeT9Dwr7hxvQU9h4xyHvJUU+5dWzWUYFJRKSJUksTtZtU3R4vBY+1w2YvZovDQYeqKq7MaIH7iJDhrUjD5soObE/et5+xJQco7zuRyu9eYmO4h7tTmuM/qkFlbOexTOo1KdAN9MfFr7No90wMWyUAGW43L+XsJcXrZavDzuawMO5rHhwsOld4eDMnm6prX8DVdajVzXYCnp8XY3/zpsC2D/g63MVOh4OXYmPoWlXF3fuL6VpVRYlpUGaYpHq9gfIHDIP1Lif9DlZgDpgKA+6ndPeP/PzCbZxvbsYXlYI5/DloP6jGZx8s2MHWWcPoYu4I2u/1G9gMP2W97iGs0zU4Es6BuJbHrH/B7n+R+JfeHDAMwvDjwyDbbqON24MHKwQlVYSzx9aefDe0Tkthe042A2xreD4ulqwo6/txGYlU+AtqXP+3PX7Lnd3uPOF3KCIiZ0ZdtzQpNFG7X/qPG36i0zv9uTIjLaiFAiAjqjVD2w5mfOZ4Hlr6PAu3vo0ZVkisB+bm5bLdYad9lZu7U5IpsFvBqE10Z4oqC+mS1J7HL3qceFd80DXL3eW8uOojXtjwDKa9jPZVVcR7fYHlNw57pNez/Pc/J2OYbp7eW8DgsnJ82PC2v4qSgmwS9q+F/r+DKx8LOm/eQyMZZ/80sP1mdBRPJgbXAeC53L3MjI9jS1gYAC3cbg4Sxn47+Aw/0/L3cUNpWaD81+EupiXGc1n5Qf64bz/bU6/hHDMP8/oXIaEtORv+gfftX7EhsowpzRNJrgjn/qJsLq8oZXFEOIuio+h9sIJYn4+LD3qI6jISl93A33c8W4vc5C2bR8+yr3EVbaHAZnJtehoHbNXJtW1VFb8cquuJmIbJ61e/znlJ57EydyUb9m3g+vbXs6lwE2v3rmVsl7GE2U5+HREROX0KTfWgNr70CreXW/+ygjF5U4gP38z4lOZBx//Y94+MOndU0L7dRcUMXngJhhE8ezRAvCue90e8T6wzNqTP//jnNUxZfhuGUf2/1+8Nw7BVcVe3u5jQYwJXvzqF3f5PAGhV5aa9282dRcXstNupMgyGlpXD/dvxOGLYsuxN2kV72fLB0+yOKuDd6CgeL9jHA0mJNQJZKDpWeBl9oIhtDgeXl5czMTmJQpu1Vkia28MFFRWMLS6hTetBvLC7Bb8uf5F/hLv4XXIS3iO6zo4Vdpw+Hz0qK5lcWETHKjcFpslLcTF0rayijdvNyPTUkOtp9xmYgN9vJ9wVze3dxvLrrr8+5fsVEZEzT6GpHtTWl97qgY8YmvIYXzWzWlTaxrbj0haXYjNNxncfj8OsOZB7wCu3sY/VAPjcMZiOEqId0bx41Yt0STi1+ZeGv/YkW31vAjCu6zgmnT+J0qpSosKiAHjwk3f5cO9/H/f8j3Zl0ywshZ2uc+lS+Hlg/3mtra6vK0vLWBnuYr/NxmtXv0anhE7sLslm2FsTsEXsBCApPImJPe9l2e5vKKzIJ8pM58ucRSHVP8HjZeGeHIpNk7tSmrPHUd1SZ1a2wufcHlTeU9oemysbw2593ykeD5P37eeJxHj2245avA3omXQB3RK70zetJ69//w9KjPXc0OFa2sWeS3pMMonhoY2REhGR+qHQVA9q60uf9+02Zn9/L+5oa32Mhy94mJEdR57wnOzSbF7b8BpD2gyha2JXCisKsRm2kFuYjlbhqcDn9wWtc3bYQc9B+r42AL9ZTkZER7bvK8UWvidw3PD7GVpaThh+vogIp9IwGFxazt9iooKuYzfsfDf6O5w2a1Hacnc59399P3lleTx72bOkRlW37OwpLmbwwouOWdehrW7g54KdpEYn8FX2p0GtZIe5bC4WDFlAs7AkRi2cQEREGXd2u50hbYZgGiYV7ire27iMJ1Y+hGkvO8anWKb2ncot595y4i9PREQaNIWmelCbX7rf7+f5dc+zt3wvD/R5oMEttLqteBv7Du7j/OTz8eNnfd5GJmY9S6GxPORrNI9ozpKbloRc/sa/3sv2gysY0/UWxncfz6rcVZS6S7ks4zLsptWa9N5P3/Lw8imYjpLAeXdn3s2N7W8kOTL5pJ9x7rNjccStAaBNbBteHDSPqUufxeUq4/JW/bm+/fUh11dERBomhaZ6UNdfekNXVFHEdQtvpspXRbfYKyis2E+psZnKKpO8yl9qlG8Z3ZKPrv/olD7D7/djnGR+pQp3JStyVpMSlUCb2DY4bDW7M4/ng00reHjFBNKjUnnsomn0TO55SvUTEZGGT6GpHig01eT2uTExsZnBY4GytmWxYOMCHuz7IPsO7uPx7x5nWv9p9EvrV081PT6vz1uj/iIi0nQoNP2b5syZw9NPP01ubi6ZmZnMnj2bPn36hHSuQpOIiEjjU9d/v5vE4lhvv/02kyZN4r/+679Ys2YNmZmZXHXVVezdu7e+qyYiIiJNRJMITTNmzOCOO+5g3LhxdO7cmblz5xIREcHLL79c31UTERGRJqLRh6aqqipWr17NwIEDA/tM02TgwIEsX37sJ8AqKyspKSkJeomIiIicSKMPTQUFBXi9XpKTgx9DT05OJjc395jnTJ8+ndjY2MArIyOjLqoqIiIijVijD03/jgcffJDi4uLAa9euXfVdJREREWng7Ccv0rAlJiZis9nIy8sL2p+Xl0dKSsoxz3E6nTidzrqonoiIiDQRjb6lKSwsjPPPP58lS6pnpPb5fCxZsoR+/Rre3EEiIiLSODX6liaASZMmMXbsWHr16kWfPn2YOXMmZWVljBs3rr6rJiIiIk1EkwhNN998M/n5+TzyyCPk5ubSvXt3srKyagwOFxEREfl3NZkZwU+HZgQXERFpfDQjuIiIiEgDpNAkIiIiEgKFJhEREZEQKDSJiIiIhKBJPD13ug6PhdcadCIiIo3H4b/bdfVMm0ITcODAAQCtQSciItIIHThwgNjY2Fr/HE05gDWDeHZ2NtHR0RiGccauu2zZMoYNG3bGriciItJYPfHEE0yYMOGMXtPv93PgwAHS0tIwzdofcaSWJsA0TVq0aHHGrxsZGXnGrykiItIYuVyuWplLqS5amA7TQHARERGRECg0iYiIiIRAoakWtWzZsr6rICIi0iB07969vqtw2jQQXERERCQEamkSERERCYFCk4iIiEgIFJpEREREQqDQJCIiIhKCJjO55ZmcyVtERESavlN9Fk4tTSIiIiIhUGgSERERCUGTCE0bNmyo7yqIiIhIE9ckQtMrr7xS31UQERGRJq5JhCYRERGR2tYkQtPYsWPruwoiIiLSyBiGwciRI0Mv31TWntOUAyIiInIqUlJSWLp0KZ06dQqpvEKTiIiInJU0T5OIiIhILWgyM4I3kQYzERERaaDU0iQiIiISAoUmERERkRAoNImIiIiEQKFJREREJAQKTSIiIiIhUGgSERERCYFCk4iIiEgIFJpEREREQqDQJCIN3m233YZhGBiGgcPhIDk5mUGDBvHyyy/j8/lCvs78+fOJi4urvYqKSJOm0CQijcLgwYPJyclh+/btfPLJJ1x22WVMnDiRoUOH4vF46rt6InIWUGgSkUbB6XSSkpJCeno6PXv2ZOrUqSxatIhPPvmE+fPnAzBjxgzOO+88IiMjycjI4J577qG0tBSAL7/8knHjxlFcXBxotZo2bRoAlZWVTJ48mfT0dCIjI+nbty9ffvll/dyoiDRYCk0i0mhdfvnlZGZm8t577wFgmiazZs3ip59+4pVXXmHp0qVMmTIFgP79+zNz5kxiYmLIyckhJyeHyZMnAzBhwgSWL1/OW2+9xfr167npppsYPHgwmzdvrrd7E5GGx/BrpVsRaeBuu+02ioqKWLhwYY1jo0aNYv369WzYsKHGsXfffZe7776bgoICwBrTdO+991JUVBQos3PnTtq0acPOnTtJS0sL7B84cCB9+vThySefPOP3IyKNk72+KyAicjr8fj+GYQDw+eefM336dDZt2kRJSQkej4eKigrKy8uJiIg45vk//PADXq+XDh06BO2vrKwkISGh1usvIo2HQpOINGobN26kdevWbN++naFDhzJ+/HieeOIJ4uPj+eabb7j99tupqqo6bmgqLS3FZrOxevVqbDZb0LGoqKi6uAURaSQUmkSk0Vq6dCk//PADv//971m9ejU+n49nnnkG07SGa77zzjtB5cPCwvB6vUH7evTogdfrZe/evVx88cV1VncRaXwUmkSkUaisrCQ3Nxev10teXh5ZWVlMnz6doUOHMmbMGH788UfcbjezZ89m2LBhfPvtt8ydOzfoGq1ataK0tJQlS5aQmZlJREQEHTp0YPTo0YwZM4ZnnnmGHj16kJ+fz5IlS+jWrRtDhgyppzsWkYZGT8+JSKOQlZVFamoqrVq1YvDgwXzxxRfMmjWLRYsWYbPZyMzMZMaMGfzpT3+ia9euLFiwgOnTpwddo3///tx9993cfPPNJCUl8dRTTwEwb948xowZwx/+8Ac6duzIiBEjWLlyJS1btqyPWxWRBkpPz4mIiIiEQC1NIiIiIiFQaBIREREJgUKTiIiISAgUmkRERERCoNAkIiIiEgKFJhEREZEQKDSJiIiIhEChSURERCQECk0iIiIiIVBoEhEREQmBQpOIiIhICBSaRERERELw/wFi6ov9HTYRAAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Plot the Bollinger Bands chart\n",
+ "df['MA_20'] = df['Close'].rolling(window=20).mean()\n",
+ "df['Upper_BB'] = df['MA_20'] + 2*df['Close'].rolling(window=20).std()\n",
+ "df['Lower_BB'] = df['MA_20'] - 2*df['Close'].rolling(window=20).std()\n",
+ "\n",
+ "plt.plot(df['Date'], df['Close'], label='Close')\n",
+ "plt.plot(df['Date'], df['Upper_BB'], label='Upper BB')\n",
+ "plt.plot(df['Date'], df['Lower_BB'], label='Lower BB')\n",
+ "plt.xlabel('Date')\n",
+ "plt.ylabel('Price')\n",
+ "plt.title('SBIN Stock Price with Bollinger Bands')\n",
+ "plt.legend()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ " This chart shows the RSI of the stock (blue line) along with two horizontal lines at 30 (red line) and 70 (green line). The RSI is used to identify overbought (above 70) and oversold (below 30) conditions.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAHHCAYAAACiOWx7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADCBklEQVR4nOydd5gUxdaHfz2zszkRd5ecJeeMoAgKCEbErIA5forpilkMGK7K1auiXkW815wVFURAAckoOee8xN1l8+5Mf3/Mzkx3T1d3de6ZrdeHx9nu6qrT1dVVp0+dOsXxPM+DwWAwGAwGg6GIx2kBGAwGg8FgMGIBpjQxGAwGg8FgUMCUJgaDwWAwGAwKmNLEYDAYDAaDQQFTmhgMBoPBYDAoYEoTg8FgMBgMBgVMaWIwGAwGg8GggClNDAaDwWAwGBQwpYnBYDAYDAaDAqY0MRgMV3D22Wejc+fOjpXfokULTJgwwbHytcBxHJ566inqtHfddZe1AjEYtQSmNDEYJrF+/XpcdtllaN68OZKTk9G4cWOce+65eOONN0TpWrRoAY7jwv+Sk5PRtm1bPPjggzh58qQo7VNPPQWO43D8+PHwsQkTJoDjOHTt2hVyuyDRDpKVlZX417/+hR49eiAzMxPZ2dno1KkTbrnlFmzZsiWcbsmSJXjqqadQUFCgsUbsI1QnoX+ZmZno1q0bXnnlFVRUVDgtnuVY9Yz27NkjqlePx4O6deti1KhRWLp0qew1ixcvxqhRo9C4cWMkJyejWbNmuOCCC/DJJ5+I0jFljhGLJDgtAIMRDyxZsgRDhw5Fs2bNcPPNNyM3Nxf79+/HsmXL8K9//Qt33323KH337t1x//33AwDKy8uxevVqTJs2DX/88QdWrFhBVeb69evxzTffYOzYsbpkHjt2LH755RdcddVVuPnmm1FVVYUtW7Zg1qxZGDhwINq3bx++t6effhoTJkxAdna2rrLsICkpCf/5z38AAAUFBfj666/xwAMPYOXKlfjss89Ur9+6dSs8ntj4jiwrK0NCQqT7tvoZXXXVVTj//PPh9/uxbds2vPXWWxg6dChWrlyJLl26hNN9+eWXuOKKK9C9e3fcc889qFOnDnbv3o2FCxfivffew9VXX226bAyGnTClicEwgeeeew5ZWVlYuXJl1KB19OjRqPSNGzfGtddeG/77pptuQnp6Ov75z39i+/btaNu2rWJ5KSkpaNq0KaZMmYJLL70UHMdpknflypWYNWsWnnvuOTzyyCOic//+979dbVUikZCQIKrTO+64A/369cPnn3+OV199FY0aNYq6hud5lJeXIyUlBUlJSXaKa4jk5GRby+vZs6eobgcPHoxRo0bh7bffxltvvRU+/tRTT6Fjx45YtmwZEhMTRXnIvQcMRqwRG59VDIbL2blzJzp16iT7ld+wYUOqPHJzcwFAZEEg4fF48Nhjj2HdunX49ttvNckKBOUFgEGDBkWd83q9qFevHoDgIPjggw8CAFq2bBmeptmzZw8AoLq6Gs888wxat26NpKQktGjRAo888ojslNgvv/yCs846CxkZGcjMzESfPn2ipmyk/Prrr0hNTcVVV12F6upqTffo8Xhw9tlnA0BY3hYtWmDMmDGYM2cOevfujZSUFLzzzjvhc1KfpoKCAkyaNAktWrRAUlISmjRpguuvv140XVpRUYEnn3wSbdq0QVJSEpo2bYqHHnpIdVrw9ddfh9frFSmor7zyCjiOw3333Rc+5vf7kZGRgX/84x/hY0KfJrVnFOK7775D586dkZSUhE6dOmH27NlqVUhk8ODBACLtKMTOnTvRp0+fKIUJoH8PGAw3wyxNDIYJNG/eHEuXLsWGDRuonJmrqqrCA295eTn+/vtvvPrqqxgyZAhatmxJVebVV1+NZ555BlOmTMEll1yiydrUvHlzAMDHH3+MQYMGERW1Sy+9FNu2bcOnn36K1157DfXr1wcANGjQAEDQQjZz5kxcdtlluP/++7F8+XJMnToVmzdvFilzH374IW644QZ06tQJkydPRnZ2Nv7++2/Mnj2bOGUza9YsXHbZZbjiiivwwQcfwOv1Ut9fiNCgHlICgeA03FVXXYVbb70VN998M8444wzZa4uLizF48GBs3rwZN9xwA3r27Injx4/jhx9+wIEDB1C/fn0EAgFceOGFWLx4MW655RZ06NAB69evx2uvvYZt27bhu+++I8o2ePBgBAIBLF68GGPGjAEALFq0CB6PB4sWLQqn+/vvv1FcXIwhQ4bI5qP2jICgn9E333yDO+64AxkZGXj99dcxduxY7Nu3T1Q3tIQUsjp16oiON2/eHPPmzcOBAwfQpEkTzfkyGK6HZzAYhvn11195r9fLe71efsCAAfxDDz3Ez5kzh6+srIxK27x5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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Plot the RSI chart\n",
+ "delta = df['Close'].diff(1)\n",
+ "up, down = delta.copy(), delta.copy()\n",
+ "up[up < 0] = 0\n",
+ "down[down > 0] = 0\n",
+ "roll_up = up.rolling(window=14).mean()\n",
+ "roll_down = down.rolling(window=14).mean().abs()\n",
+ "RS = roll_up / roll_down\n",
+ "RSI = 100.0 - (100.0 / (1.0 + RS))\n",
+ "\n",
+ "plt.plot(df['Date'], RSI, label='RSI')\n",
+ "plt.axhline(y=30, color='red', linestyle='--')\n",
+ "plt.axhline(y=70, color='green', linestyle='--')\n",
+ "plt.xlabel('Date')\n",
+ "plt.ylabel('RSI')\n",
+ "plt.title('SBIN Stock Price with RSI')\n",
+ "plt.legend()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "This chart shows the correlation between the open, high, low, close, and volume of the stock. The correlation is measured on a scale of -1 to 1, where 1 means perfect positive correlation and -1 means perfect negative correlation."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe4AAAGzCAYAAADpB/R/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAydUlEQVR4nO3da3RUZZb/8V8lmgoQqgAxCWAgXHoQRMgQIB34K6CRiMhIO7YodhOiovYCG4yOgo0EwTYoNgPTXL3C6mUGRka0FQQ1GBg1LZiYXngBRVHSYIWLQwoCJFB1/i+QkpqcYFWqkjqVfD9rnRd5ci67irWy2ft5zjk2wzAMAQCAqBAT6QAAAEDgSNwAAEQREjcAAFGExA0AQBQhcQMAEEVI3AAARBESNwAAUYTEDQBAFCFxAwAQRUjcaPZWrVolm82mb7/9Nmzn/Pbbb2Wz2bRq1aqwnTPajRgxQiNGjIh0GECzR+JGg3z99de699571aNHD8XHx8vhcGjYsGFavHixTp48GenwwqawsFCLFi2KdBh+Jk2aJJvNJofDYfpdf/XVV7LZbLLZbHrmmWeCPv+BAwc0Z84clZeXhyFaAOF2UaQDQPTZsGGDfv3rX8tut2vixInq16+famtr9f777+vf/u3f9Nlnn+nZZ5+NdJhhUVhYqE8//VTTp0/3G+/WrZtOnjypiy++OCJxXXTRRTpx4oTeeOMN3XrrrX6/e/nllxUfH69Tp0416NwHDhzQ448/rtTUVKWlpQV83Ntvv92g6wEIDokbQdm7d69uu+02devWTVu2bFGnTp18v5syZYr27NmjDRs2hHwdwzB06tQptWrVqs7vTp06pbi4OMXERK5hZLPZFB8fH7Hr2+12DRs2TP/5n/9ZJ3EXFhZqzJgx+u///u8mieXEiRNq3bq14uLimuR6QEtHqxxBefrpp3X8+HG98MILfkn7nF69emnatGm+n8+cOaN58+apZ8+estvtSk1N1aOPPqqamhq/41JTU3XjjTdq8+bNGjRokFq1aqWVK1equLhYNptNa9as0axZs9SlSxe1bt1abrdbkvTRRx/p+uuvl9PpVOvWrTV8+HB98MEHP/s5Xn/9dY0ZM0adO3eW3W5Xz549NW/ePHk8Ht8+I0aM0IYNG/Tdd9/5Ws+pqamS6p/j3rJli6666iq1adNG7dq100033aQvvvjCb585c+bIZrNpz549mjRpktq1ayen06nc3FydOHHiZ2M/Z8KECXrrrbd09OhR39iOHTv01VdfacKECXX2/+GHH/TQQw/pyiuvVEJCghwOh0aPHq2///3vvn2Ki4s1ePBgSVJubq7vc5/7nCNGjFC/fv1UWlqqq6++Wq1bt9ajjz7q+935c9w5OTmKj4+v8/mzs7PVvn17HThwIODPCuAnVNwIyhtvvKEePXpo6NChAe1/9913a/Xq1brlllv04IMP6qOPPlJBQYG++OILrV+/3m/f3bt36/bbb9e9996ryZMnq3fv3r7fzZs3T3FxcXrooYdUU1OjuLg4bdmyRaNHj1Z6erry8/MVExOjl156Sddcc43+53/+R0OGDKk3rlWrVikhIUF5eXlKSEjQli1bNHv2bLndbi1YsECS9Ic//EFVVVX6xz/+oX//93+XJCUkJNR7znfffVejR49Wjx49NGfOHJ08eVJ//vOfNWzYMJWVlfmS/jm33nqrunfvroKCApWVlen5559XYmKinnrqqYC+25tvvln33XefXn31Vd15552Szlbbl19+uQYOHFhn/2+++Uavvfaafv3rX6t79+6qrKzUypUrNXz4cH3++efq3Lmz+vTpo7lz52r27Nm65557dNVVV0mS37/3kSNHNHr0aN122236zW9+o6SkJNP4Fi9erC1btignJ0clJSWKjY3VypUr9fbbb+svf/mLOnfuHNDnBPB/GECAqqqqDEnGTTfdFND+5eXlhiTj7rvv9ht/6KGHDEnGli1bfGPdunUzJBmbNm3y2/e9994zJBk9evQwTpw44Rv3er3GL37xCyM7O9vwer2+8RMnThjdu3c3rrvuOt/YSy+9ZEgy9u7d67ff/3XvvfcarVu3Nk6dOuUbGzNmjNGtW7c6++7du9eQZLz00ku+sbS0NCMxMdE4cuSIb+zvf/+7ERMTY0ycONE3lp+fb0gy7rzzTr9z/upXvzIuueSSOtf6v3Jycow2bdoYhmEYt9xyi3HttdcahmEYHo/HSE5ONh5//HFffAsWLPAdd+rUKcPj8dT5HHa73Zg7d65vbMeOHXU+2znDhw83JBkrVqww/d3w4cP9xjZv3mxIMp544gnjm2++MRISEoxx48b97GcEUD9a5QjYufZ027ZtA9p/48aNkqS8vDy/8QcffFCS6syFd+/eXdnZ2abnysnJ8ZvvLi8v97WEjxw5osOHD+vw4cOqrq7Wtddeq23btsnr9dYb2/nnOnbsmA4fPqyrrrpKJ06c0K5duwL6fOf7/vvvVV5erkmTJqlDhw6+8f79++u6667zfRfnu++++/x+vuqqq3TkyBHf9xyICRMmqLi4WC6XS1u2bJHL5TJtk0tn58XPrQvweDw6cuSIEhIS1Lt3b5WVlQV8Tbvdrtzc3ID2HTVqlO69917NnTtXN998s+Lj47Vy5cqArwWgLlrlCJjD4ZB0NtEF4rvvvlNMTIx69erlN56cnKx27drpu+++8xvv3r17vef6v7/76quvJJ1N6PWpqqpS+/btTX/32WefadasWdqyZUudRFlVVVXvOetz7rOc394/p0+fPtq8ebOqq6vVpk0b33jXrl399jsX6//+7//6vuufc8MNN6ht27Zau3atysvLNXjwYPXq1cv0nnWv16vFixdr2bJl2rt3r998/iWXXBLQ9SSpS5cuQS1Ee+aZZ/T666+rvLxchYWFSkxMDPhYAHWRuBEwh8Ohzp0769NPPw3qOJvNFtB+ZivI6/vduWp6wYIF9d6yVN989NGjRzV8+HA5HA7NnTtXPXv2VHx8vMrKyvTII49csFIPp9jYWNNxwzACPofdbtfNN9+s1atX65tvvtGcOXPq3ffJJ5/UY489pjvvvFPz5s1Thw4dFBMTo+nTpwf1mS/072Tmk08+0cGDByVJO3fu1O233x7U8QD8kbgRlBtvvFHPPvusSkpKlJmZecF9u3XrJq/Xq6+++kp9+vTxjVdWVuro0aPq1q1bg+Po2bOnpLP/mcjKygrq2OLiYh05ckSvvvqqrr76at/43r176+wb6H86zn2W3bt31/ndrl271LFjR79qO5wmTJigF198UTExMbrtttvq3W/dunUaOXKkXnjhBb/xo0ePqmPHjr6fA/3MgaiurlZubq769u2roUOH6umnn9avfvUr38p1AMFjjhtBefjhh9WmTRvdfffdqqysrPP7r7/+WosXL5Z0to0rqc6TxxYuXChJGjNmTIPjSE9PV8+ePfXMM8/o+PHjdX5/6NCheo89V+meX9nW1tZq2bJldfZt06ZNQK3zTp06KS0tTatXr/a7PevTTz/V22+/7fsuGsPIkSM1b948LVmyRMnJyfXuFxsbW6eaf+WVV7R//36/sXP/wTj/czTUI488on379mn16tVauHChUlNTlZOTU+d2QACBo+JGUHr27KnCwkKNHz9effr08Xty2ocffqhXXnlFkyZNkiQNGDBAOTk5evbZZ33t6e3bt2v16tUaN26cRo4c2eA4YmJi9Pzzz2v06NG64oorlJubqy5dumj//v1677335HA49MYbb5geO3ToULVv3145OTn6/e9/L5vNpr/85S+mLer09HStXbtWeXl5Gjx4sBISEjR27FjT8y5YsECjR49WZmam7rrrLt/tYE6n84It7FDFxMRo1qxZP7vfjTfeqLlz5yo3N1dDhw7Vzp079fLLL6tHjx5++/Xs2VPt2rXTihUr1LZtW7Vp00YZGRkXXINgZsuWLVq2bJny8/N9t6e99NJLGjFihB577DE9/fTTQZ0PwI8iu6gd0erLL780Jk+ebKSmphpxcXFG27ZtjWHDhhl//vOf/W6nOn36tPH4448b3bt3Ny6++GIjJSXFmDlzpt8+hnH2drAxY8bUuc6528FeeeUV0zg++eQT4+abbzYuueQSw263G926dTNuvfVWo6ioyLeP2e1gH3zwgfHLX/7SaNWqldG5c2fj4Ycf9t269N577/n2O378uDFhwgSjXbt2hiTfrWFmt4MZhmG8++67xrBhw4xWrVoZDofDGDt2rPH555/77XPudrBDhw75jZvFaeb828HqU9/tYA8++KDRqVMno1WrVsawYcOMkpIS09u4Xn/9daNv377GRRdd5Pc5hw8fblxxxRWm1zz/PG632+jWrZsxcOBA4/Tp0377PfDAA0ZMTIxRUlJywc8AwJzNMIJYCQMAACKKOW4AAKIIiRsAgChC4gYAIIqQuAEA+NG2bds0duxYde7cWTabTa+99trPHlNcXKyBAwfKbrerV69edd4aGG4kbgAAflRdXa0BAwZo6dKlAe2/d+9ejRkzRiNHjlR5ebmmT5+uu+++W5s3b260GFlVDgCACZvNpvXr12vcuHH17vPII49ow4YNfo+Cvu2223T06FFt2rSpUeJq8geweL1eHThwQG3btg3roxUBAI3PMAwdO3ZMnTt39r1trjGcOnVKtbW1IZ/HMIw6ucZut8tut4d8bkkqKSmp89jl7OxsTZ8+PSznN9PkifvAgQNKSUlp6ssCAMKooqJCl112WaOc+9SpU+revbtcLlfI50pISKjzWOT8/PywPc3Q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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Plot the heatmap\n",
+ "corr_matrix = df[['Open', 'High', 'Low', 'Close', 'Volume']].corr()\n",
+ "plt.imshow(corr_matrix, cmap='hot', interpolation='nearest')\n",
+ "plt.title('Correlation Matrix')\n",
+ "plt.colorbar()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "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.12.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/.ipynb_checkpoints/candlestick_chart.html b/.ipynb_checkpoints/candlestick_chart.html
new file mode 100644
index 0000000..0d35fcb
--- /dev/null
+++ b/.ipynb_checkpoints/candlestick_chart.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
\ No newline at end of file
From 12b5b75c9dcd0a0b0f9ee7ef9569ca737241716f Mon Sep 17 00:00:00 2001
From: Shristi Rawat
Date: Mon, 7 Oct 2024 19:26:02 +0530
Subject: [PATCH 11/76] Matched feature names in model prediction
---
.../Stock_Price_Prediction-checkpoint.ipynb | 4681 ++++++++++++
Stock_Price_Prediction.ipynb | 6398 ++++++++++++-----
2 files changed, 9307 insertions(+), 1772 deletions(-)
create mode 100644 .ipynb_checkpoints/Stock_Price_Prediction-checkpoint.ipynb
diff --git a/.ipynb_checkpoints/Stock_Price_Prediction-checkpoint.ipynb b/.ipynb_checkpoints/Stock_Price_Prediction-checkpoint.ipynb
new file mode 100644
index 0000000..afca730
--- /dev/null
+++ b/.ipynb_checkpoints/Stock_Price_Prediction-checkpoint.ipynb
@@ -0,0 +1,4681 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {
+ "id": "qCDSjVhXLr_Z"
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.impute import SimpleImputer\n",
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn.svm import SVR\n",
+ "from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor, GradientBoostingRegressor, DecisionTreeRegressor\n",
+ "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error\n",
+ "from sklearn.neighbors import KNeighborsRegressor\n",
+ "from tensorflow.keras.models import Sequential\n",
+ "from tensorflow.keras.layers import Dense,LSTM"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from google.colab import drive\n",
+ "drive.mount('/content/drive')\n",
+ "df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "Sc4id6VxL8BS",
+ "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Date \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Adj Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 01-01-1996 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 12.409931 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 02-01-1996 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 12.014931 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 03-01-1996 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 11.694577 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 04-01-1996 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 11.654142 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 05-01-1996 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 11.588827 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Date Open High Low Close Adj Close \\\n",
+ "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
+ "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
+ "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
+ "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
+ "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
+ "\n",
+ " Volume \n",
+ "0 43733533.0 \n",
+ "1 56167280.0 \n",
+ "2 68296318.0 \n",
+ "3 86073880.0 \n",
+ "4 76613039.0 "
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Load the dataset\n",
+ "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "id": "7LaYGXsfN-8y"
+ },
+ "outputs": [],
+ "source": [
+ "# Drop the 'Date' and 'Adj Close' columns\n",
+ "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
+ },
+ "id": "pqbTBdnBOKJc",
+ "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Open High Low Close Volume\n",
+ "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
+ "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
+ "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
+ "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
+ "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "id": "dydEPoNeM6eN"
+ },
+ "outputs": [],
+ "source": [
+ "# Handle missing values\n",
+ "imputer = SimpleImputer(strategy='mean')\n",
+ "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "id": "OQ3cGqgTMBwt"
+ },
+ "outputs": [],
+ "source": [
+ "# Select features and target variable\n",
+ "X = df[['Open', 'High', 'Low', 'Volume']]\n",
+ "y = df['Close']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "id": "9Oz-bwJOMEWD"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "id": "ugapDyXODtn3"
+ },
+ "outputs": [],
+ "source": [
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "997ZEgibCZIO",
+ "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(5659, 4)"
+ ]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "bmtt76RuCeyG",
+ "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(1415, 4)"
+ ]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "CeJkUJ92Ciqd",
+ "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(5659,)"
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "7HGC7VuTCjWc",
+ "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(1415,)"
+ ]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Function to evaluate and print RMSE, MAE, and MAPE\n",
+ "def evaluate_model(model, X_test, y_test):\n",
+ " predictions = model.predict(X_test)\n",
+ " rmse = np.sqrt(mean_squared_error(y_test, predictions))\n",
+ " mae = mean_absolute_error(y_test, predictions)\n",
+ " mape = mean_absolute_percentage_error(y_test, predictions)\n",
+ "\n",
+ " print(f\"RMSE: {rmse}\")\n",
+ " print(f\"MAE: {mae}\")\n",
+ " print(f\"MAPE: {mape}\\n\")\n",
+ " \n",
+ " return rmse, mae, mape\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "metrics = {\n",
+ " \"Model\": [],\n",
+ " \"RMSE\": [],\n",
+ " \"MAE\": [],\n",
+ " \"MAPE\": []\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "c6Ek8jRlO2_I"
+ },
+ "source": [
+ "## 1. LINEAR REGRESSION"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "id": "RdZ1SpzdMHAJ"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a linear regression model\n",
+ "model1 = LinearRegression()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "mPM035IzMY04",
+ "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "5286 257.350006\n",
+ "3408 129.464996\n",
+ "5477 279.350006\n",
+ "6906 588.500000\n",
+ "530 21.644367\n",
+ "Name: Close, dtype: float64"
+ ]
+ },
+ "execution_count": 55,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_train.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 142,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "qBhQ9HbYMI3d",
+ "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "LinearRegression()"
+ ]
+ },
+ "execution_count": 142,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model1.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {
+ "id": "X269co2kMS4z"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 1.6881364651923558\n",
+ "MAE: 0.9433353486266928\n",
+ "MAPE: 0.006085435968276741\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model1, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Linear Regressor\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "GxtMzlg-gR2P"
+ },
+ "source": [
+ "## 2. SVR"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "id": "0xQewd7QWTtq"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an SVR model\n",
+ "model2 = SVR()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 144,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "22SaCsQmfhgP",
+ "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "SVR()"
+ ]
+ },
+ "execution_count": 144,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model2.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {
+ "id": "OQ1nL4oYfkAC"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 17.574809673127547\n",
+ "MAE: 6.278157692070486\n",
+ "MAPE: 0.09040265035344064\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model2, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"SVR\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "hcIfVMWdgcKt"
+ },
+ "source": [
+ "## 3. Random Forest"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {
+ "id": "f7raXT_hf2ij"
+ },
+ "outputs": [],
+ "source": [
+ "model3 = RandomForestRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 146,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "fF002Yepgk55",
+ "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "RandomForestRegressor()"
+ ]
+ },
+ "execution_count": 146,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model3.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {
+ "id": "8nRU_pzEgnCt"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 2.2053909891328036\n",
+ "MAE: 1.2608162799481166\n",
+ "MAPE: 0.008015308194076972\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model3, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Random Forest\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "mZsLwLivhLGH"
+ },
+ "source": [
+ "## 4. Gradient Boosting Models (GBM)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {
+ "id": "TI8idoxOg6jF"
+ },
+ "outputs": [],
+ "source": [
+ "model4 = GradientBoostingRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 148,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
+ },
+ "id": "2gpbDxshhexj",
+ "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "GradientBoostingRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "GradientBoostingRegressor()"
+ ]
+ },
+ "execution_count": 148,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model4.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {
+ "id": "Jj9DXdUPhh9V"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 2.6985863368468084\n",
+ "MAE: 1.692542658558929\n",
+ "MAPE: 0.011883244132236716\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model4, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"GBM\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "d8nSGoyuh9dx"
+ },
+ "source": [
+ "## 5. Extreme Gradient Boosting (XGBoost)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {
+ "id": "DyhhdlZAhx94"
+ },
+ "outputs": [],
+ "source": [
+ "import xgboost as xgb\n",
+ "# Create an XGBoost model\n",
+ "model5 = xgb.XGBRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 150,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
+ },
+ "id": "RAIwxIp5iH9Z",
+ "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressoriFitted XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
+ ],
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
+ ]
+ },
+ "execution_count": 150,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model5.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 2.733930065274145\n",
+ "MAE: 1.502457380471909\n",
+ "MAPE: 0.010026410639661481\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model5, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"XGBoost\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "A_J776rtiovq"
+ },
+ "source": [
+ "## 6. AdaBoostRegressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 97,
+ "metadata": {
+ "id": "HNq66cXRiYPJ"
+ },
+ "outputs": [],
+ "source": [
+ "model6 = AdaBoostRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 152,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "P0oB5wjQivBr",
+ "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "AdaBoostRegressor()"
+ ]
+ },
+ "execution_count": 152,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model6.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 105,
+ "metadata": {
+ "id": "Bf1m5ukOi2VM"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 9.175482477551942\n",
+ "MAE: 7.527617905792734\n",
+ "MAPE: 0.1858930099598583\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model6, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"AdaBoost Regressor\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Q9DzOt3CkWFX"
+ },
+ "source": [
+ "## 7. Decision Tree"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 108,
+ "metadata": {
+ "id": "23DZ2biSjF9a"
+ },
+ "outputs": [],
+ "source": [
+ "model7 = DecisionTreeRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 154,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "6mQEQf-ykc9F",
+ "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "DecisionTreeRegressor()"
+ ]
+ },
+ "execution_count": 154,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model7.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 112,
+ "metadata": {
+ "id": "BFJ9q_tvkgRC"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 3.12966540689625\n",
+ "MAE: 1.6497286032971983\n",
+ "MAPE: 0.010286427942970355\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model7, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Decision Tree\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "LH-B-Xd6k5UD"
+ },
+ "source": [
+ "## 8. KNeighborsRegressor(KNN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 115,
+ "metadata": {
+ "id": "JVDSed7yktFY"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a KNN model\n",
+ "model8 = KNeighborsRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 156,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
+ },
+ "id": "9fn64o-ZlBka",
+ "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
+ ],
+ "text/plain": [
+ "KNeighborsRegressor()"
+ ]
+ },
+ "execution_count": 156,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model8.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 119,
+ "metadata": {
+ "id": "hbfbbjcSlDn7"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 3.0274590148039873\n",
+ "MAE: 1.7525904376439672\n",
+ "MAPE: 0.013668115353592272\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model8, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"KNN\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "X5XtlzMXljps"
+ },
+ "source": [
+ "## 9. Artificial Neural Networks (ANN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create an ANN model\n",
+ "model9 = Sequential()\n",
+ "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
+ "model9.add(Dense(16, activation='relu'))\n",
+ "model9.add(Dense(1, activation='linear'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 124,
+ "metadata": {
+ "id": "ZIf94WLMlv04"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model9.compile(loss='mean_squared_error', optimizer='adam')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 126,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "FX5DTKqslxWf",
+ "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 126,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 128,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "OVW2qpNsmGVq",
+ "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
+ },
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step\n",
+ "RMSE: 2.801001091255311\n",
+ "MAE: 1.7605365826618848\n",
+ "MAPE: 0.0126215060590655\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model9, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"ANN\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "vjSMQNcOnFPJ"
+ },
+ "source": [
+ "## 10. LSTM(Long Short term Memory)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 131,
+ "metadata": {
+ "id": "uACvajfImrbB"
+ },
+ "outputs": [],
+ "source": [
+ "# Reshape the input data for LSTM\n",
+ "n_features = X_train_scaled.shape[1]\n",
+ "n_steps = 10\n",
+ "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
+ "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
+ "\n",
+ "# Reshape the input data\n",
+ "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
+ "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create an LSTM model\n",
+ "model = Sequential()\n",
+ "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
+ "model.add(Dense(1))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 135,
+ "metadata": {
+ "id": "YpSfHu6gov35"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model.compile(loss='mean_squared_error', optimizer='adam')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 137,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "0vHjcluaoxzP",
+ "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 137,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model10, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"LSTM\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create a DataFrame for metrics\n",
+ "metrics_df = pd.DataFrame(metrics)\n",
+ "\n",
+ "# Plot RMSE, MAE, and MAPE for each model\n",
+ "plt.figure(figsize=(15, 5))\n",
+ "\n",
+ "# RMSE Plot\n",
+ "plt.subplot(1, 3, 1)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['RMSE'], color='lightblue')\n",
+ "plt.xlabel('RMSE')\n",
+ "plt.title('RMSE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# MAE Plot\n",
+ "plt.subplot(1, 3, 2)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['MAE'], color='lightgreen')\n",
+ "plt.xlabel('MAE')\n",
+ "plt.title('MAE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# MAPE Plot\n",
+ "plt.subplot(1, 3, 3)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['MAPE'], color='salmon')\n",
+ "plt.xlabel('MAPE')\n",
+ "plt.title('MAPE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Using of LightGBM and CatBoost For Optimizing the model accuracy and time complexity"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Import necessary libraries\n",
+ "import lightgbm as lgb\n",
+ "from catboost import CatBoostRegressor\n",
+ "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, accuracy_score, precision_score, confusion_matrix, recall_score, f1_score\n",
+ "\n",
+ "# Function to train and evaluate a model\n",
+ "def train_and_evaluate_model(model, X_train, X_test, y_train, y_test):\n",
+ " model.fit(X_train, y_train)\n",
+ " pred = model.predict(X_test)\n",
+ " rmse = np.sqrt(mean_squared_error(y_test, pred))\n",
+ " mae = mean_absolute_error(y_test, pred)\n",
+ " mape = mean_absolute_percentage_error(y_test, pred)\n",
+ " accuracy = accuracy_score(y_test > pred, y_test > pred.round())\n",
+ " precision = precision_score(y_test > pred, y_test > pred.round())\n",
+ " confusion = confusion_matrix(y_test > pred, y_test > pred.round())\n",
+ " recall = recall_score(y_test > pred, y_test > pred.round())\n",
+ " f1 = f1_score(y_test > pred, y_test > pred.round())\n",
+ " return rmse, mae, mape, accuracy, precision, confusion, recall, f1\n",
+ "\n",
+ "# Train and evaluate LightGBM model for from this directly print accuracy \n",
+ "model_lightgbm = lgb.LGBMRegressor()\n",
+ "metrics_lightgbm = train_and_evaluate_model(model_lightgbm, X_train, X_test, y_train, y_test)\n",
+ "print(\"LightGBM Metrics:\", metrics_lightgbm)\n",
+ "\n",
+ "# Train and evaluate CatBoost model\n",
+ "model_catboost = CatBoostRegressor(verbose=0)\n",
+ "metrics_catboost = train_and_evaluate_model(model_catboost, X_train, X_test, y_train, y_test)\n",
+ "print(\"CatBoost Metrics:\", metrics_catboost)"
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.12.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/Stock_Price_Prediction.ipynb b/Stock_Price_Prediction.ipynb
index b6205f9..01ad953 100644
--- a/Stock_Price_Prediction.ipynb
+++ b/Stock_Price_Prediction.ipynb
@@ -1,1848 +1,4702 @@
{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {
- "id": "qCDSjVhXLr_Z"
- },
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "import numpy as np\n",
- "import matplotlib.pyplot as plt\n",
- "from sklearn.model_selection import train_test_split\n",
- "from sklearn.impute import SimpleImputer\n",
- "from sklearn.preprocessing import MinMaxScaler\n",
- "from sklearn.linear_model import LinearRegression\n",
- "from sklearn.svm import SVR\n",
- "from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor, GradientBoostingRegressor, DecisionTreeRegressor\n",
- "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error\n",
- "from sklearn.neighbors import KNeighborsRegressor\n",
- "from tensorflow.keras.models import Sequential\n",
- "from tensorflow.keras.layers import Dense,LSTM"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 22,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "SOQbXSiB-g5G",
- "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
- ]
- }
- ],
- "source": [
- "from google.colab import drive\n",
- "drive.mount('/content/drive')\n",
- "df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 23,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "Sc4id6VxL8BS",
- "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Date \n",
- " Open \n",
- " High \n",
- " Low \n",
- " Close \n",
- " Adj Close \n",
- " Volume \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 01-01-1996 \n",
- " 18.691147 \n",
- " 18.978922 \n",
- " 18.540184 \n",
- " 18.823240 \n",
- " 12.409931 \n",
- " 43733533.0 \n",
- " \n",
- " \n",
- " 1 \n",
- " 02-01-1996 \n",
- " 18.894005 \n",
- " 18.964767 \n",
- " 17.738192 \n",
- " 18.224106 \n",
- " 12.014931 \n",
- " 56167280.0 \n",
- " \n",
- " \n",
- " 2 \n",
- " 03-01-1996 \n",
- " 18.327892 \n",
- " 18.568489 \n",
- " 17.643839 \n",
- " 17.738192 \n",
- " 11.694577 \n",
- " 68296318.0 \n",
- " \n",
- " \n",
- " 3 \n",
- " 04-01-1996 \n",
- " 17.502312 \n",
- " 17.832542 \n",
- " 17.223972 \n",
- " 17.676863 \n",
- " 11.654142 \n",
- " 86073880.0 \n",
- " \n",
- " \n",
- " 4 \n",
- " 05-01-1996 \n",
- " 17.738192 \n",
- " 17.785366 \n",
- " 17.459852 \n",
- " 17.577793 \n",
- " 11.588827 \n",
- " 76613039.0 \n",
- " \n",
- " \n",
- "
\n",
- "
\n",
- "
\n",
- "
\n"
- ],
- "text/plain": [
- " Date Open High Low Close Adj Close \\\n",
- "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
- "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
- "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
- "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
- "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
- "\n",
- " Volume \n",
- "0 43733533.0 \n",
- "1 56167280.0 \n",
- "2 68296318.0 \n",
- "3 86073880.0 \n",
- "4 76613039.0 "
- ]
- },
- "execution_count": 23,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Load the dataset\n",
- "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
- "df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 24,
- "metadata": {
- "id": "7LaYGXsfN-8y"
- },
- "outputs": [],
- "source": [
- "# Drop the 'Date' and 'Adj Close' columns\n",
- "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 25,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 206
- },
- "id": "pqbTBdnBOKJc",
- "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- " \n",
- "
\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " Open \n",
- " High \n",
- " Low \n",
- " Close \n",
- " Volume \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 18.691147 \n",
- " 18.978922 \n",
- " 18.540184 \n",
- " 18.823240 \n",
- " 43733533.0 \n",
- " \n",
- " \n",
- " 1 \n",
- " 18.894005 \n",
- " 18.964767 \n",
- " 17.738192 \n",
- " 18.224106 \n",
- " 56167280.0 \n",
- " \n",
- " \n",
- " 2 \n",
- " 18.327892 \n",
- " 18.568489 \n",
- " 17.643839 \n",
- " 17.738192 \n",
- " 68296318.0 \n",
- " \n",
- " \n",
- " 3 \n",
- " 17.502312 \n",
- " 17.832542 \n",
- " 17.223972 \n",
- " 17.676863 \n",
- " 86073880.0 \n",
- " \n",
- " \n",
- " 4 \n",
- " 17.738192 \n",
- " 17.785366 \n",
- " 17.459852 \n",
- " 17.577793 \n",
- " 76613039.0 \n",
- " \n",
- " \n",
- "
\n",
- "
\n",
- "
\n",
- "
\n"
- ],
- "text/plain": [
- " Open High Low Close Volume\n",
- "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
- "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
- "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
- "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
- "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
- ]
- },
- "execution_count": 25,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 26,
- "metadata": {
- "id": "dydEPoNeM6eN"
- },
- "outputs": [],
- "source": [
- "# Handle missing values\n",
- "imputer = SimpleImputer(strategy='mean')\n",
- "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 27,
- "metadata": {
- "id": "OQ3cGqgTMBwt"
- },
- "outputs": [],
- "source": [
- "# Select features and target variable\n",
- "X = df[['Open', 'High', 'Low', 'Volume']]\n",
- "y = df['Close']"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 28,
- "metadata": {
- "id": "9Oz-bwJOMEWD"
- },
- "outputs": [],
- "source": [
- "# Split the data into training and testing sets\n",
- "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {
- "id": "ugapDyXODtn3"
- },
- "outputs": [],
- "source": [
- "# Scale the features using Min-Max scaling\n",
- "scaler = MinMaxScaler()\n",
- "X_train_scaled = scaler.fit_transform(X_train)\n",
- "X_test_scaled = scaler.transform(X_test)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 29,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "997ZEgibCZIO",
- "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(5659, 4)"
- ]
- },
- "execution_count": 29,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "X_train.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 30,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "bmtt76RuCeyG",
- "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1415, 4)"
- ]
- },
- "execution_count": 30,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "X_test.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 31,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "CeJkUJ92Ciqd",
- "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(5659,)"
- ]
- },
- "execution_count": 31,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "y_train.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 32,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "7HGC7VuTCjWc",
- "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "(1415,)"
- ]
- },
- "execution_count": 32,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "y_test.shape"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Function to evaluate and print RMSE, MAE, and MAPE\n",
- "def evaluate_model(model, X_test, y_test):\n",
- " predictions = model.predict(X_test)\n",
- " rmse = np.sqrt(mean_squared_error(y_test, predictions))\n",
- " mae = mean_absolute_error(y_test, predictions)\n",
- " mape = mean_absolute_percentage_error(y_test, predictions)\n",
- "\n",
- " print(f\"RMSE: {rmse}\")\n",
- " print(f\"MAE: {mae}\")\n",
- " print(f\"MAPE: {mape}\\n\")\n",
- " \n",
- " return rmse, mae, mape\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "metrics = {\n",
- " \"Model\": [],\n",
- " \"RMSE\": [],\n",
- " \"MAE\": [],\n",
- " \"MAPE\": []\n",
- "}"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "c6Ek8jRlO2_I"
- },
- "source": [
- "## 1. LINEAR REGRESSION"
- ]
- },
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 161,
+ "metadata": {
+ "id": "qCDSjVhXLr_Z"
+ },
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.impute import SimpleImputer\n",
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn.svm import SVR\n",
+ "from sklearn.ensemble import RandomForestRegressor, AdaBoostRegressor, GradientBoostingRegressor\n",
+ "from sklearn.tree import DecisionTreeRegressor\n",
+ "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error\n",
+ "from sklearn.neighbors import KNeighborsRegressor\n",
+ "from tensorflow.keras.models import Sequential\n",
+ "from tensorflow.keras.layers import Dense,LSTM"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 179,
+ "metadata": {},
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 33,
- "metadata": {
- "id": "RdZ1SpzdMHAJ"
- },
- "outputs": [],
- "source": [
- "# Create a linear regression model\n",
- "model1 = LinearRegression()"
- ]
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Running in local system\n"
+ ]
+ }
+ ],
+ "source": [
+ "try:\n",
+ " import google.colab\n",
+ " In_colab=True\n",
+ "except:\n",
+ " In_colab=False\n",
+ "\n",
+ "if(In_colab):\n",
+ " print(\"Running in google colab\")\n",
+ " from google.colab import drive\n",
+ " drive.mount('/content/drive')\n",
+ " df = pd.read_csv('drive/My Drive/Colab Notebooks/Stock Price Prediction RNN/SBIN.csv')\n",
+ "else:\n",
+ " print(\"Running in local system\")\n",
+ " path=r'C:\\Users\\SHRISTI\\OneDrive\\Desktop\\GitHub\\Stock-Price-Prediction\\Data\\SBIN.csv'\n",
+ " df=pd.read_csv(path)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
},
+ "id": "Sc4id6VxL8BS",
+ "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 34,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "mPM035IzMY04",
- "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- "5286 257.350006\n",
- "3408 129.464996\n",
- "5477 279.350006\n",
- "6906 588.500000\n",
- "530 21.644367\n",
- "Name: Close, dtype: float64"
- ]
- },
- "execution_count": 34,
- "metadata": {},
- "output_type": "execute_result"
- }
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Date \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Adj Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 01-01-1996 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 12.409931 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 02-01-1996 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 12.014931 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 03-01-1996 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 11.694577 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 04-01-1996 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 11.654142 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 05-01-1996 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 11.588827 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
],
- "source": [
- "y_train.head()"
+ "text/plain": [
+ " Date Open High Low Close Adj Close \\\n",
+ "0 01-01-1996 18.691147 18.978922 18.540184 18.823240 12.409931 \n",
+ "1 02-01-1996 18.894005 18.964767 17.738192 18.224106 12.014931 \n",
+ "2 03-01-1996 18.327892 18.568489 17.643839 17.738192 11.694577 \n",
+ "3 04-01-1996 17.502312 17.832542 17.223972 17.676863 11.654142 \n",
+ "4 05-01-1996 17.738192 17.785366 17.459852 17.577793 11.588827 \n",
+ "\n",
+ " Volume \n",
+ "0 43733533.0 \n",
+ "1 56167280.0 \n",
+ "2 68296318.0 \n",
+ "3 86073880.0 \n",
+ "4 76613039.0 "
]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Load the dataset\n",
+ "#df = pd.read_csv('/content/SBIN.NS.csv')\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {
+ "id": "7LaYGXsfN-8y"
+ },
+ "outputs": [],
+ "source": [
+ "# Drop the 'Date' and 'Adj Close' columns\n",
+ "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 206
},
+ "id": "pqbTBdnBOKJc",
+ "outputId": "21da8a7f-4f3e-4f4f-e32b-3b90c230ce55"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 35,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "qBhQ9HbYMI3d",
- "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "LinearRegression()"
- ]
- },
- "execution_count": 35,
- "metadata": {},
- "output_type": "execute_result"
- }
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Volume \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 18.691147 \n",
+ " 18.978922 \n",
+ " 18.540184 \n",
+ " 18.823240 \n",
+ " 43733533.0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 18.894005 \n",
+ " 18.964767 \n",
+ " 17.738192 \n",
+ " 18.224106 \n",
+ " 56167280.0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 18.327892 \n",
+ " 18.568489 \n",
+ " 17.643839 \n",
+ " 17.738192 \n",
+ " 68296318.0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 17.502312 \n",
+ " 17.832542 \n",
+ " 17.223972 \n",
+ " 17.676863 \n",
+ " 86073880.0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 17.738192 \n",
+ " 17.785366 \n",
+ " 17.459852 \n",
+ " 17.577793 \n",
+ " 76613039.0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
],
- "source": [
- "# Train the model\n",
- "model1.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 36,
- "metadata": {
- "id": "X269co2kMS4z"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model1, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"Linear Regressor\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "GxtMzlg-gR2P"
- },
- "source": [
- "## 2. SVR"
+ "text/plain": [
+ " Open High Low Close Volume\n",
+ "0 18.691147 18.978922 18.540184 18.823240 43733533.0\n",
+ "1 18.894005 18.964767 17.738192 18.224106 56167280.0\n",
+ "2 18.327892 18.568489 17.643839 17.738192 68296318.0\n",
+ "3 17.502312 17.832542 17.223972 17.676863 86073880.0\n",
+ "4 17.738192 17.785366 17.459852 17.577793 76613039.0"
]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {
+ "id": "dydEPoNeM6eN"
+ },
+ "outputs": [],
+ "source": [
+ "# Handle missing values\n",
+ "imputer = SimpleImputer(strategy='mean')\n",
+ "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {
+ "id": "OQ3cGqgTMBwt"
+ },
+ "outputs": [],
+ "source": [
+ "# Select features and target variable\n",
+ "X = df[['Open', 'High', 'Low', 'Volume']]\n",
+ "y = df['Close']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {
+ "id": "9Oz-bwJOMEWD"
+ },
+ "outputs": [],
+ "source": [
+ "# Split the data into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {
+ "id": "ugapDyXODtn3"
+ },
+ "outputs": [],
+ "source": [
+ "# Scale the features using Min-Max scaling\n",
+ "scaler = MinMaxScaler()\n",
+ "X_train_scaled = scaler.fit_transform(X_train)\n",
+ "X_test_scaled = scaler.transform(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
},
+ "id": "997ZEgibCZIO",
+ "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 40,
- "metadata": {
- "id": "0xQewd7QWTtq"
- },
- "outputs": [],
- "source": [
- "# Create an SVR model\n",
- "model2 = SVR()"
+ "data": {
+ "text/plain": [
+ "(5659, 4)"
]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
},
+ "id": "bmtt76RuCeyG",
+ "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 42,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "22SaCsQmfhgP",
- "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "SVR()"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model2.fit(X_train, y_train)"
+ "data": {
+ "text/plain": [
+ "(1415, 4)"
]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
},
+ "id": "CeJkUJ92Ciqd",
+ "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 43,
- "metadata": {
- "id": "OQ1nL4oYfkAC"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model2, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"SVR\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
+ "data": {
+ "text/plain": [
+ "(5659,)"
]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_train.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
},
+ "id": "7HGC7VuTCjWc",
+ "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75"
+ },
+ "outputs": [
{
- "cell_type": "markdown",
- "metadata": {
- "id": "hcIfVMWdgcKt"
- },
- "source": [
- "## 3. Random Forest"
+ "data": {
+ "text/plain": [
+ "(1415,)"
]
+ },
+ "execution_count": 46,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_test.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Function to evaluate and print RMSE, MAE, and MAPE\n",
+ "def evaluate_model(model, X_test, y_test):\n",
+ " predictions = model.predict(X_test)\n",
+ " rmse = np.sqrt(mean_squared_error(y_test, predictions))\n",
+ " mae = mean_absolute_error(y_test, predictions)\n",
+ " mape = mean_absolute_percentage_error(y_test, predictions)\n",
+ "\n",
+ " print(f\"RMSE: {rmse}\")\n",
+ " print(f\"MAE: {mae}\")\n",
+ " print(f\"MAPE: {mape}\\n\")\n",
+ " \n",
+ " return rmse, mae, mape\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 50,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "metrics = {\n",
+ " \"Model\": [],\n",
+ " \"RMSE\": [],\n",
+ " \"MAE\": [],\n",
+ " \"MAPE\": []\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "c6Ek8jRlO2_I"
+ },
+ "source": [
+ "## 1. LINEAR REGRESSION"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {
+ "id": "RdZ1SpzdMHAJ"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a linear regression model\n",
+ "model1 = LinearRegression()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
},
+ "id": "mPM035IzMY04",
+ "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 46,
- "metadata": {
- "id": "f7raXT_hf2ij"
- },
- "outputs": [],
- "source": [
- "model3 = RandomForestRegressor()"
+ "data": {
+ "text/plain": [
+ "5286 257.350006\n",
+ "3408 129.464996\n",
+ "5477 279.350006\n",
+ "6906 588.500000\n",
+ "530 21.644367\n",
+ "Name: Close, dtype: float64"
]
+ },
+ "execution_count": 55,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_train.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 163,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
},
+ "id": "qBhQ9HbYMI3d",
+ "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 48,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "fF002Yepgk55",
- "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "RandomForestRegressor()"
- ]
- },
- "execution_count": 48,
- "metadata": {},
- "output_type": "execute_result"
- }
+ "data": {
+ "text/html": [
+ "LinearRegression() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
],
- "source": [
- "# Train the model\n",
- "model3.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 49,
- "metadata": {
- "id": "8nRU_pzEgnCt"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model3, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"Random Forest\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
+ "text/plain": [
+ "LinearRegression()"
]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "mZsLwLivhLGH"
- },
- "source": [
- "## 4. Gradient Boosting Models (GBM)"
- ]
- },
+ },
+ "execution_count": 163,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model1.fit(X_train_scaled, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {
+ "id": "X269co2kMS4z"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 52,
- "metadata": {
- "id": "TI8idoxOg6jF"
- },
- "outputs": [],
- "source": [
- "model4 = GradientBoostingRegressor()"
- ]
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 1.6881364651923558\n",
+ "MAE: 0.9433353486266928\n",
+ "MAPE: 0.006085435968276741\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model1, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Linear Regressor\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "GxtMzlg-gR2P"
+ },
+ "source": [
+ "## 2. SVR"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {
+ "id": "0xQewd7QWTtq"
+ },
+ "outputs": [],
+ "source": [
+ "# Create an SVR model\n",
+ "model2 = SVR()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 165,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
},
+ "id": "22SaCsQmfhgP",
+ "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 54,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 248
- },
- "id": "2gpbDxshhexj",
- "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) "
- ],
- "text/plain": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...)"
- ]
- },
- "execution_count": 54,
- "metadata": {},
- "output_type": "execute_result"
- }
+ "data": {
+ "text/html": [
+ "SVR() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
],
- "source": [
- "# Train the model\n",
- "model4.fit(X_train, y_train)"
+ "text/plain": [
+ "SVR()"
]
- },
- {
- "cell_type": "code",
- "execution_count": 55,
- "metadata": {
- "id": "Jj9DXdUPhh9V"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model4, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"GBM\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "d8nSGoyuh9dx"
- },
- "source": [
- "## 5. Extreme Gradient Boosting (XGBoost)"
- ]
- },
+ },
+ "execution_count": 165,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model2.fit(X_train_scaled, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {
+ "id": "OQ1nL4oYfkAC"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 58,
- "metadata": {
- "id": "DyhhdlZAhx94"
- },
- "outputs": [],
- "source": [
- "import xgboost as xgb\n",
- "# Create an XGBoost model\n",
- "model5 = xgb.XGBRegressor()"
- ]
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 17.574809673127547\n",
+ "MAE: 6.278157692070486\n",
+ "MAPE: 0.09040265035344064\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model2, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"SVR\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "hcIfVMWdgcKt"
+ },
+ "source": [
+ "## 3. Random Forest"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {
+ "id": "f7raXT_hf2ij"
+ },
+ "outputs": [],
+ "source": [
+ "model3 = RandomForestRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 167,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
},
+ "id": "fF002Yepgk55",
+ "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 60,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 248
- },
- "id": "RAIwxIp5iH9Z",
- "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressor XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...) "
- ],
- "text/plain": [
- "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
- " colsample_bylevel=None, colsample_bynode=None,\n",
- " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
- " enable_categorical=False, eval_metric=None, feature_types=None,\n",
- " gamma=None, grow_policy=None, importance_type=None,\n",
- " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
- " max_cat_threshold=None, max_cat_to_onehot=None,\n",
- " max_delta_step=None, max_depth=None, max_leaves=None,\n",
- " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
- " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
- " num_parallel_tree=None, random_state=None, ...)"
- ]
- },
- "execution_count": 60,
- "metadata": {},
- "output_type": "execute_result"
- }
+ "data": {
+ "text/html": [
+ "RandomForestRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
],
- "source": [
- "# Train the model\n",
- "model5.fit(X_train, y_train)"
+ "text/plain": [
+ "RandomForestRegressor()"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model5, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"XGBoost\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "A_J776rtiovq"
- },
- "source": [
- "## 6. AdaBoostRegressor"
- ]
- },
+ },
+ "execution_count": 167,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model3.fit(X_train_scaled, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {
+ "id": "8nRU_pzEgnCt"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 64,
- "metadata": {
- "id": "HNq66cXRiYPJ"
- },
- "outputs": [],
- "source": [
- "model6 = AdaBoostRegressor()"
- ]
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 2.2053909891328036\n",
+ "MAE: 1.2608162799481166\n",
+ "MAPE: 0.008015308194076972\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model3, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Random Forest\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "mZsLwLivhLGH"
+ },
+ "source": [
+ "## 4. Gradient Boosting Models (GBM)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {
+ "id": "TI8idoxOg6jF"
+ },
+ "outputs": [],
+ "source": [
+ "model4 = GradientBoostingRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 169,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
},
+ "id": "2gpbDxshhexj",
+ "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 66,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "P0oB5wjQivBr",
- "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "AdaBoostRegressor()"
- ]
- },
- "execution_count": 66,
- "metadata": {},
- "output_type": "execute_result"
- }
+ "data": {
+ "text/html": [
+ "GradientBoostingRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
],
- "source": [
- "# Train the model\n",
- "model6.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 67,
- "metadata": {
- "id": "Bf1m5ukOi2VM"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model6, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"AdaBoost Regressor\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "Q9DzOt3CkWFX"
- },
- "source": [
- "## 7. Decision Tree"
+ "text/plain": [
+ "GradientBoostingRegressor()"
]
- },
+ },
+ "execution_count": 169,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model4.fit(X_train_scaled, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {
+ "id": "Jj9DXdUPhh9V"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 70,
- "metadata": {
- "id": "23DZ2biSjF9a"
- },
- "outputs": [],
- "source": [
- "model7 = DecisionTreeRegressor()"
- ]
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 2.6985863368468084\n",
+ "MAE: 1.692542658558929\n",
+ "MAPE: 0.011883244132236716\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model4, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"GBM\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "d8nSGoyuh9dx"
+ },
+ "source": [
+ "## 5. Extreme Gradient Boosting (XGBoost)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {
+ "id": "DyhhdlZAhx94"
+ },
+ "outputs": [],
+ "source": [
+ "import xgboost as xgb\n",
+ "# Create an XGBoost model\n",
+ "model5 = xgb.XGBRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 171,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 248
},
+ "id": "RAIwxIp5iH9Z",
+ "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 72,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "6mQEQf-ykc9F",
- "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "DecisionTreeRegressor()"
- ]
- },
- "execution_count": 72,
- "metadata": {},
- "output_type": "execute_result"
- }
+ "data": {
+ "text/html": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. XGBRegressoriFitted XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...) "
],
- "source": [
- "# Train the model\n",
- "model7.fit(X_train, y_train)"
+ "text/plain": [
+ "XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
+ " colsample_bylevel=None, colsample_bynode=None,\n",
+ " colsample_bytree=None, device=None, early_stopping_rounds=None,\n",
+ " enable_categorical=False, eval_metric=None, feature_types=None,\n",
+ " gamma=None, grow_policy=None, importance_type=None,\n",
+ " interaction_constraints=None, learning_rate=None, max_bin=None,\n",
+ " max_cat_threshold=None, max_cat_to_onehot=None,\n",
+ " max_delta_step=None, max_depth=None, max_leaves=None,\n",
+ " min_child_weight=None, missing=nan, monotone_constraints=None,\n",
+ " multi_strategy=None, n_estimators=None, n_jobs=None,\n",
+ " num_parallel_tree=None, random_state=None, ...)"
]
- },
- {
- "cell_type": "code",
- "execution_count": 73,
- "metadata": {
- "id": "BFJ9q_tvkgRC"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model7, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"Decision Tree\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "LH-B-Xd6k5UD"
- },
- "source": [
- "## 8. KNeighborsRegressor(KNN)"
- ]
- },
+ },
+ "execution_count": 171,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model5.fit(X_train_scaled, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 94,
+ "metadata": {},
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 76,
- "metadata": {
- "id": "JVDSed7yktFY"
- },
- "outputs": [],
- "source": [
- "# Create a KNN model\n",
- "model8 = KNeighborsRegressor()"
- ]
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 2.733930065274145\n",
+ "MAE: 1.502457380471909\n",
+ "MAPE: 0.010026410639661481\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model5, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"XGBoost\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "A_J776rtiovq"
+ },
+ "source": [
+ "## 6. AdaBoostRegressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 97,
+ "metadata": {
+ "id": "HNq66cXRiYPJ"
+ },
+ "outputs": [],
+ "source": [
+ "model6 = AdaBoostRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 173,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
},
+ "id": "P0oB5wjQivBr",
+ "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 78,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/",
- "height": 74
- },
- "id": "9fn64o-ZlBka",
- "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
- ],
- "text/plain": [
- "KNeighborsRegressor()"
- ]
- },
- "execution_count": 78,
- "metadata": {},
- "output_type": "execute_result"
- }
+ "data": {
+ "text/html": [
+ "AdaBoostRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
],
- "source": [
- "# Train the model\n",
- "model8.fit(X_train, y_train)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 79,
- "metadata": {
- "id": "hbfbbjcSlDn7"
- },
- "outputs": [],
- "source": [
- "rmse, mae, mape = evaluate_model(model8, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"KNN\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
+ "text/plain": [
+ "AdaBoostRegressor()"
]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "X5XtlzMXljps"
- },
- "source": [
- "## 9. Artificial Neural Networks (ANN)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 84,
- "metadata": {
- "id": "vd1fDjQiltP4"
- },
- "outputs": [],
- "source": [
- "# Create an ANN model\n",
- "model9 = Sequential()\n",
- "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
- "model9.add(Dense(16, activation='relu'))\n",
- "model9.add(Dense(1, activation='linear'))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 85,
- "metadata": {
- "id": "ZIf94WLMlv04"
- },
- "outputs": [],
- "source": [
- "# Compile the model\n",
- "model9.compile(loss='mean_squared_error', optimizer='adam')"
- ]
- },
+ },
+ "execution_count": 173,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model6.fit(X_train_scaled, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 105,
+ "metadata": {
+ "id": "Bf1m5ukOi2VM"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 86,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "FX5DTKqslxWf",
- "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 86,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
- ]
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 9.175482477551942\n",
+ "MAE: 7.527617905792734\n",
+ "MAPE: 0.1858930099598583\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model6, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"AdaBoost Regressor\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Q9DzOt3CkWFX"
+ },
+ "source": [
+ "## 7. Decision Tree"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 108,
+ "metadata": {
+ "id": "23DZ2biSjF9a"
+ },
+ "outputs": [],
+ "source": [
+ "model7 = DecisionTreeRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 175,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
},
+ "id": "6mQEQf-ykc9F",
+ "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 87,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "OVW2qpNsmGVq",
- "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "45/45 [==============================] - 0s 1ms/step\n"
- ]
- }
+ "data": {
+ "text/html": [
+ "DecisionTreeRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
],
- "source": [
- "rmse, mae, mape = evaluate_model(model9, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"ANN\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "id": "vjSMQNcOnFPJ"
- },
- "source": [
- "## 10. LSTM(Long Short term Memory)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 92,
- "metadata": {
- "id": "uACvajfImrbB"
- },
- "outputs": [],
- "source": [
- "# Reshape the input data for LSTM\n",
- "n_features = X_train_scaled.shape[1]\n",
- "n_steps = 10\n",
- "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
- "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
- "\n",
- "# Reshape the input data\n",
- "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
- "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 93,
- "metadata": {
- "id": "r066pVYpnXH5"
- },
- "outputs": [],
- "source": [
- "# Create an LSTM model\n",
- "model = Sequential()\n",
- "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
- "model.add(Dense(1))\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 94,
- "metadata": {
- "id": "YpSfHu6gov35"
- },
- "outputs": [],
- "source": [
- "# Compile the model\n",
- "model.compile(loss='mean_squared_error', optimizer='adam')\n"
+ "text/plain": [
+ "DecisionTreeRegressor()"
]
- },
+ },
+ "execution_count": 175,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model7.fit(X_train_scaled, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 112,
+ "metadata": {
+ "id": "BFJ9q_tvkgRC"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 95,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "0vHjcluaoxzP",
- "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
- },
- "outputs": [
- {
- "data": {
- "text/plain": [
- ""
- ]
- },
- "execution_count": 95,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Train the model\n",
- "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
- ]
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 3.12966540689625\n",
+ "MAE: 1.6497286032971983\n",
+ "MAPE: 0.010286427942970355\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model7, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"Decision Tree\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "LH-B-Xd6k5UD"
+ },
+ "source": [
+ "## 8. KNeighborsRegressor(KNN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 115,
+ "metadata": {
+ "id": "JVDSed7yktFY"
+ },
+ "outputs": [],
+ "source": [
+ "# Create a KNN model\n",
+ "model8 = KNeighborsRegressor()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 177,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 74
},
+ "id": "9fn64o-ZlBka",
+ "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": 96,
- "metadata": {
- "colab": {
- "base_uri": "https://localhost:8080/"
- },
- "id": "gEE06_TjozYv",
- "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4"
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "44/44 [==============================] - 0s 4ms/step\n"
- ]
- }
+ "data": {
+ "text/html": [
+ "KNeighborsRegressor() In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org. "
],
- "source": [
- "rmse, mae, mape = evaluate_model(model10, X_test_scaled, y_test)\n",
- "metrics[\"Model\"].append(\"LSTM\")\n",
- "metrics[\"RMSE\"].append(rmse)\n",
- "metrics[\"MAE\"].append(mae)\n",
- "metrics[\"MAPE\"].append(mape)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Create a DataFrame for metrics\n",
- "metrics_df = pd.DataFrame(metrics)\n",
- "\n",
- "# Plot RMSE, MAE, and MAPE for each model\n",
- "plt.figure(figsize=(15, 5))\n",
- "\n",
- "# RMSE Plot\n",
- "plt.subplot(1, 3, 1)\n",
- "plt.bar(metrics_df['Model'], metrics_df['RMSE'], color='lightblue')\n",
- "plt.xlabel('RMSE')\n",
- "plt.title('RMSE for Different Models')\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# MAE Plot\n",
- "plt.subplot(1, 3, 2)\n",
- "plt.bar(metrics_df['Model'], metrics_df['MAE'], color='lightgreen')\n",
- "plt.xlabel('MAE')\n",
- "plt.title('MAE for Different Models')\n",
- "plt.tight_layout()\n",
- "plt.show()"
+ "text/plain": [
+ "KNeighborsRegressor()"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# MAPE Plot\n",
- "plt.subplot(1, 3, 3)\n",
- "plt.bar(metrics_df['Model'], metrics_df['MAPE'], color='salmon')\n",
- "plt.xlabel('MAPE')\n",
- "plt.title('MAPE for Different Models')\n",
- "plt.tight_layout()\n",
- "plt.show()"
- ]
- },
+ },
+ "execution_count": 177,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model8.fit(X_train_scaled, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 119,
+ "metadata": {
+ "id": "hbfbbjcSlDn7"
+ },
+ "outputs": [
{
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Using of LightGBM and CatBoost For Optimizing the model accuracy and time complexity"
- ]
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RMSE: 3.0274590148039873\n",
+ "MAE: 1.7525904376439672\n",
+ "MAPE: 0.013668115353592272\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model8, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"KNN\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "X5XtlzMXljps"
+ },
+ "source": [
+ "## 9. Artificial Neural Networks (ANN)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create an ANN model\n",
+ "model9 = Sequential()\n",
+ "model9.add(Dense(32, activation='relu', input_shape=(X_train.shape[1],)))\n",
+ "model9.add(Dense(16, activation='relu'))\n",
+ "model9.add(Dense(1, activation='linear'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 124,
+ "metadata": {
+ "id": "ZIf94WLMlv04"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model9.compile(loss='mean_squared_error', optimizer='adam')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 126,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
},
+ "id": "FX5DTKqslxWf",
+ "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Import necessary libraries\n",
- "import lightgbm as lgb\n",
- "from catboost import CatBoostRegressor\n",
- "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, accuracy_score, precision_score, confusion_matrix, recall_score, f1_score\n",
- "\n",
- "# Function to train and evaluate a model\n",
- "def train_and_evaluate_model(model, X_train, X_test, y_train, y_test):\n",
- " model.fit(X_train, y_train)\n",
- " pred = model.predict(X_test)\n",
- " rmse = np.sqrt(mean_squared_error(y_test, pred))\n",
- " mae = mean_absolute_error(y_test, pred)\n",
- " mape = mean_absolute_percentage_error(y_test, pred)\n",
- " accuracy = accuracy_score(y_test > pred, y_test > pred.round())\n",
- " precision = precision_score(y_test > pred, y_test > pred.round())\n",
- " confusion = confusion_matrix(y_test > pred, y_test > pred.round())\n",
- " recall = recall_score(y_test > pred, y_test > pred.round())\n",
- " f1 = f1_score(y_test > pred, y_test > pred.round())\n",
- " return rmse, mae, mape, accuracy, precision, confusion, recall, f1\n",
- "\n",
- "# Train and evaluate LightGBM model for from this directly print accuracy \n",
- "model_lightgbm = lgb.LGBMRegressor()\n",
- "metrics_lightgbm = train_and_evaluate_model(model_lightgbm, X_train, X_test, y_train, y_test)\n",
- "print(\"LightGBM Metrics:\", metrics_lightgbm)\n",
- "\n",
- "# Train and evaluate CatBoost model\n",
- "model_catboost = CatBoostRegressor(verbose=0)\n",
- "metrics_catboost = train_and_evaluate_model(model_catboost, X_train, X_test, y_train, y_test)\n",
- "print(\"CatBoost Metrics:\", metrics_catboost)"
+ "data": {
+ "text/plain": [
+ ""
]
+ },
+ "execution_count": 126,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Train the model\n",
+ "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 128,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
},
+ "id": "OVW2qpNsmGVq",
+ "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a"
+ },
+ "outputs": [
{
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step\n",
+ "RMSE: 2.801001091255311\n",
+ "MAE: 1.7605365826618848\n",
+ "MAPE: 0.0126215060590655\n",
+ "\n"
+ ]
}
- ],
- "metadata": {
+ ],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model9, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"ANN\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "vjSMQNcOnFPJ"
+ },
+ "source": [
+ "## 10. LSTM(Long Short term Memory)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 131,
+ "metadata": {
+ "id": "uACvajfImrbB"
+ },
+ "outputs": [],
+ "source": [
+ "# Reshape the input data for LSTM\n",
+ "n_features = X_train_scaled.shape[1]\n",
+ "n_steps = 10\n",
+ "n_samples_train = X_train_scaled.shape[0] - n_steps + 1\n",
+ "n_samples_test = X_test_scaled.shape[0] - n_steps + 1\n",
+ "\n",
+ "# Reshape the input data\n",
+ "X_train_reshaped = np.array([X_train_scaled[i:i+n_steps, :] for i in range(n_samples_train)])\n",
+ "X_test_reshaped = np.array([X_test_scaled[i:i+n_steps, :] for i in range(n_samples_test)])\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create an LSTM model\n",
+ "model = Sequential()\n",
+ "model.add(LSTM(64, activation='relu', input_shape=(n_steps, n_features)))\n",
+ "model.add(Dense(1))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 135,
+ "metadata": {
+ "id": "YpSfHu6gov35"
+ },
+ "outputs": [],
+ "source": [
+ "# Compile the model\n",
+ "model.compile(loss='mean_squared_error', optimizer='adam')\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 137,
+ "metadata": {
"colab": {
- "provenance": []
- },
- "kernelspec": {
- "display_name": "Python 3 (ipykernel)",
- "language": "python",
- "name": "python3"
+ "base_uri": "https://localhost:8080/"
},
- "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.9.16"
+ "id": "0vHjcluaoxzP",
+ "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933"
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 137,
+ "metadata": {},
+ "output_type": "execute_result"
}
+ ],
+ "source": [
+ "# Train the model\n",
+ "model.fit(X_train_reshaped, y_train[n_steps-1:], epochs=100, batch_size=32, verbose=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "rmse, mae, mape = evaluate_model(model10, X_test_scaled, y_test)\n",
+ "metrics[\"Model\"].append(\"LSTM\")\n",
+ "metrics[\"RMSE\"].append(rmse)\n",
+ "metrics[\"MAE\"].append(mae)\n",
+ "metrics[\"MAPE\"].append(mape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Create a DataFrame for metrics\n",
+ "metrics_df = pd.DataFrame(metrics)\n",
+ "\n",
+ "# Plot RMSE, MAE, and MAPE for each model\n",
+ "plt.figure(figsize=(15, 5))\n",
+ "\n",
+ "# RMSE Plot\n",
+ "plt.subplot(1, 3, 1)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['RMSE'], color='lightblue')\n",
+ "plt.xlabel('RMSE')\n",
+ "plt.title('RMSE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# MAE Plot\n",
+ "plt.subplot(1, 3, 2)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['MAE'], color='lightgreen')\n",
+ "plt.xlabel('MAE')\n",
+ "plt.title('MAE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# MAPE Plot\n",
+ "plt.subplot(1, 3, 3)\n",
+ "plt.bar(metrics_df['Model'], metrics_df['MAPE'], color='salmon')\n",
+ "plt.xlabel('MAPE')\n",
+ "plt.title('MAPE for Different Models')\n",
+ "plt.tight_layout()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Using of LightGBM and CatBoost For Optimizing the model accuracy and time complexity"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Import necessary libraries\n",
+ "import lightgbm as lgb\n",
+ "from catboost import CatBoostRegressor\n",
+ "from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, accuracy_score, precision_score, confusion_matrix, recall_score, f1_score\n",
+ "\n",
+ "# Function to train and evaluate a model\n",
+ "def train_and_evaluate_model(model, X_train, X_test, y_train, y_test):\n",
+ " model.fit(X_train, y_train)\n",
+ " pred = model.predict(X_test)\n",
+ " rmse = np.sqrt(mean_squared_error(y_test, pred))\n",
+ " mae = mean_absolute_error(y_test, pred)\n",
+ " mape = mean_absolute_percentage_error(y_test, pred)\n",
+ " accuracy = accuracy_score(y_test > pred, y_test > pred.round())\n",
+ " precision = precision_score(y_test > pred, y_test > pred.round())\n",
+ " confusion = confusion_matrix(y_test > pred, y_test > pred.round())\n",
+ " recall = recall_score(y_test > pred, y_test > pred.round())\n",
+ " f1 = f1_score(y_test > pred, y_test > pred.round())\n",
+ " return rmse, mae, mape, accuracy, precision, confusion, recall, f1\n",
+ "\n",
+ "# Train and evaluate LightGBM model for from this directly print accuracy \n",
+ "model_lightgbm = lgb.LGBMRegressor()\n",
+ "metrics_lightgbm = train_and_evaluate_model(model_lightgbm, X_train, X_test, y_train, y_test)\n",
+ "print(\"LightGBM Metrics:\", metrics_lightgbm)\n",
+ "\n",
+ "# Train and evaluate CatBoost model\n",
+ "model_catboost = CatBoostRegressor(verbose=0)\n",
+ "metrics_catboost = train_and_evaluate_model(model_catboost, X_train, X_test, y_train, y_test)\n",
+ "print(\"CatBoost Metrics:\", metrics_catboost)"
+ ]
+ }
+ ],
+ "metadata": {
+ "colab": {
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
},
- "nbformat": 4,
- "nbformat_minor": 0
+ "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.12.4"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
}
From fd013b1f1d1d2e55ba3e6b894869142b6aa26684 Mon Sep 17 00:00:00 2001
From: Ayushi Sha <124066968+AYUSHI-SHA@users.noreply.github.com>
Date: Mon, 7 Oct 2024 20:05:44 +0530
Subject: [PATCH 12/76] Updated graphs
---
README.md | 7 +++----
.../085ee2d1-3544-4bed-a558-5b0b801e806b.jpeg | Bin 0 -> 34062 bytes
.../6c9ebb5b-a8ed-44de-8842-bf8f5c25990f.jpeg | Bin 0 -> 32177 bytes
.../f23e9194-72de-438d-bd69-744667680d3e.jpeg | Bin 0 -> 31498 bytes
4 files changed, 3 insertions(+), 4 deletions(-)
create mode 100644 images/085ee2d1-3544-4bed-a558-5b0b801e806b.jpeg
create mode 100644 images/6c9ebb5b-a8ed-44de-8842-bf8f5c25990f.jpeg
create mode 100644 images/f23e9194-72de-438d-bd69-744667680d3e.jpeg
diff --git a/README.md b/README.md
index 50519e6..5e8c229 100644
--- a/README.md
+++ b/README.md
@@ -54,16 +54,15 @@ The sequence of all the algorithms used is as follows:
10. LSTM(Long Short term Memory)
The **Root Mean Square Error (RMSE)** of all the following 10 Regression Algorithms is provided below:
-
-![image](https://github.com/rohitinu6/Stock-Price-Prediction/assets/113301503/5c3d986f-ef0f-453e-8f5a-e43193489174)
+![image](images\f23e9194-72de-438d-bd69-744667680d3e.jpeg)
The **Mean Absolute Error (MAE)** of all the following 10 Regression Algorithms is provided below:
-![image](https://github.com/rohitinu6/Stock-Price-Prediction/assets/113301503/50b9a8ae-72c6-4927-8356-18af1f1cacfb)
+![image](images\085ee2d1-3544-4bed-a558-5b0b801e806b.jpeg)
The **Mean Absolute Percentage Error (MAPE)** of all the following 10 Regression Algorithms is provided below:
-![image](https://github.com/rohitinu6/Stock-Price-Prediction/assets/113301503/4ddab02c-6fa4-414e-b14b-6642dbe6183b)
+![image](images\6c9ebb5b-a8ed-44de-8842-bf8f5c25990f.jpeg)
diff --git a/images/085ee2d1-3544-4bed-a558-5b0b801e806b.jpeg b/images/085ee2d1-3544-4bed-a558-5b0b801e806b.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..ee6f90d1ed9f42f65f429ba6dd9626b7591a46e8
GIT binary patch
literal 34062
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