diff --git a/Python File/.Stock_Price_Prediction.ipynb.swo b/Python File/.Stock_Price_Prediction.ipynb.swo new file mode 100644 index 0000000..b8097e0 Binary files /dev/null and b/Python File/.Stock_Price_Prediction.ipynb.swo differ diff --git a/Python File/.Stock_Price_Prediction.ipynb.swp b/Python File/.Stock_Price_Prediction.ipynb.swp new file mode 100644 index 0000000..e244ef9 Binary files /dev/null and b/Python File/.Stock_Price_Prediction.ipynb.swp differ diff --git a/Python File/.Stock_Price_Prediction_BASE_19716.ipynb.swp b/Python File/.Stock_Price_Prediction_BASE_19716.ipynb.swp new file mode 100644 index 0000000..16afd7a Binary files /dev/null and b/Python File/.Stock_Price_Prediction_BASE_19716.ipynb.swp differ diff --git a/Python File/.Stock_Price_Prediction_BASE_20502.ipynb.swp b/Python File/.Stock_Price_Prediction_BASE_20502.ipynb.swp new file mode 100644 index 0000000..405352b Binary files /dev/null and b/Python File/.Stock_Price_Prediction_BASE_20502.ipynb.swp differ diff --git a/Python File/.Stock_Price_Prediction_LOCAL_19716.ipynb.swp b/Python File/.Stock_Price_Prediction_LOCAL_19716.ipynb.swp new file mode 100644 index 0000000..607249a Binary files /dev/null and b/Python File/.Stock_Price_Prediction_LOCAL_19716.ipynb.swp differ diff --git a/Python File/.Stock_Price_Prediction_LOCAL_20502.ipynb.swp b/Python File/.Stock_Price_Prediction_LOCAL_20502.ipynb.swp new file mode 100644 index 0000000..40e505f Binary files /dev/null and b/Python File/.Stock_Price_Prediction_LOCAL_20502.ipynb.swp differ diff --git a/Python File/.Stock_Price_Prediction_REMOTE_19716.ipynb.swp b/Python File/.Stock_Price_Prediction_REMOTE_19716.ipynb.swp new file mode 100644 index 0000000..987f9cd Binary files /dev/null and b/Python File/.Stock_Price_Prediction_REMOTE_19716.ipynb.swp differ diff --git a/Python File/.Stock_Price_Prediction_REMOTE_20502.ipynb.swp b/Python File/.Stock_Price_Prediction_REMOTE_20502.ipynb.swp new file mode 100644 index 0000000..a230f83 Binary files /dev/null and b/Python File/.Stock_Price_Prediction_REMOTE_20502.ipynb.swp differ diff --git a/Python File/Stock_Price_Prediction.ipynb b/Python File/Stock_Price_Prediction.ipynb index 5312833..c542367 100644 --- a/Python File/Stock_Price_Prediction.ipynb +++ b/Python File/Stock_Price_Prediction.ipynb @@ -17,181 +17,52 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "SOQbXSiB-g5G", - "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e" + "outputId": "55ee6ec8-9146-4ebf-c2fe-b4b06bc3a5c4" }, - "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')\n", - "df = pd.read_csv('SBIN.csv')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Data Analysis and Visualization" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Print first 5 rows of dataset\n", - "df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# basic dataset features information\n", - "df.info()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Summary of numerical columns\n", - "df.describe()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Checking for null values\n", - "df.isnull().sum()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# Drop the 'Date' and 'Adj Close' columns\n", - "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], + "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": [ - "df.head()" + "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": 5, + "execution_count": 6, "metadata": { - "id": "dydEPoNeM6eN" + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "Sc4id6VxL8BS", + "outputId": "78207ea2-5b80-47a2-a1b1-0548765b6455" }, - "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": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Checking for null values\n", - "df.isnull().sum()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Adding Indicators" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### SMA" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Its the avg of stock price over a specific time period\n", - "\n", - "SMA = (sum of closing price os past n days) / n\n", - "\n", - "It helps identify trends by filtering out shortterm fluctuations\n", - "\n", - "Price above SMA indicate Uptrend and price below SMA indicate lowertrend" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "df[\"SMA_10\"] = df[\"Close\"].rolling(window=10).mean()\n", - "df[\"SMA_50\"] = df[\"Close\"].rolling(window=50).mean()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "df.dropna(subset=['SMA_10', 'SMA_50'], inplace=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, "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", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\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 \n", - "49 20.537146 \n", - "50 20.603004 \n", - "51 20.680184 \n", - "52 20.777649 \n", - "53 20.875870 " + " 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": 8, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "# Print first 5 rows of dataset\n", "df.head()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### RSI" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It is a momentum indicator used to measure the speed and change of price movements. It ranges from 0 to 100 and helps identify whether a stock is overbought or oversold. \n", - "\n", - "RSI > 70: Overbought \n", - "RSI < 30: Oversold" - ] - }, { "cell_type": "code", - "execution_count": 9, - "metadata": {}, + "execution_count": 7, + "metadata": { + "id": "7LaYGXsfN-8y" + }, "outputs": [], "source": [ - "delta = df['Close'].diff(1)\n", - "\n", - "gain = delta.where(delta > 0, 0)\n", - "loss = -delta.where(delta < 0, 0)\n", - "\n", - "avg_gain = gain.rolling(window=14).mean()\n", - "avg_loss = loss.rolling(window=14).mean()\n", - "\n", - "rs = avg_gain / avg_loss # Relative Strength\n", - "df['RSI'] = 100 - (100 / (1 + rs))\n", - "\n", - "df.dropna(subset=['RSI'], inplace=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Representing RSI Graphically" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAMWCAYAAADs4eXxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUZcLG4SeBEGqCICSgNEVFsCBIyWJFBBELih0FFcGCvaN8YFtxdVdXFNuqYC/YZVVARFSKAgqLgAiIgkIoIonUtPn+eD05Z2bOTGYm0/O7ryvX6WfeSSaQ57wtw+PxeAQAAAAAAKIuM9EFAAAAAAAgXRG6AQAAAACIEUI3AAAAAAAxQugGAAAAACBGCN0AAAAAAMQIoRsAAAAAgBghdAMAAAAAECOEbgAAAAAAYoTQDQAAAABAjBC6AQCowT7//HNlZGTorbfeSsjrT5o0SRkZGfr5558T8voAAMQaoRsAgDhbsmSJzjrrLLVp00Z169bVPvvsoxNPPFGPPfaY13n333+/3nvvvcQUMgQ///yzMjIyKr9q1aql1q1b64wzztCiRYsSXTwAAJJChsfj8SS6EAAA1BRz5szR8ccfr9atW2vo0KHKz8/XunXrNG/ePK1evVqrVq2qPLdhw4Y666yzNGnSpJiV5/PPP9fxxx+vyZMn66yzzgrr2p9//lnt2rXT+eefr5NPPlnl5eVavny5nnzySe3Zs0fz5s1T586dg96jvLxcpaWlys7OVkZGRjXeCQAAyal2ogsAAEBN8ve//125ubmaP3++Gjdu7HVs06ZNiSlUNXXp0kUXXnhh5XavXr102mmn6cknn9TTTz/tes2OHTvUoEED1apVS7Vq1YpXUQEAiDualwMAEEerV69Wp06d/AK3JDVv3rxyPSMjQzt27NALL7xQ2Xz74osvrjz+3XffqX///srJyVHDhg11wgknaN68eX733LZtm2644Qa1bdtW2dnZ2nfffTVkyBBt2bIlYBn37NmjU045Rbm5uZozZ07Y77F3796SpDVr1kiy+23PmjVLV111lZo3b659993X65hvn+6PP/5Yxx57rBo1aqScnBx169ZNr776qtc5X3/9tU466STl5uaqfv36OvbYYzV79uywywsAQCxR0w0AQBy1adNGc+fO1ffff69DDjkk4HkvvfSSLrvsMnXv3l0jRoyQJO2///6SpKVLl+roo49WTk6Obr31VmVlZenpp5/Wcccdp1mzZqlHjx6SpO3bt+voo4/W8uXLdemll6pLly7asmWLPvjgA/3666/ae++9/V53165dOv3007VgwQJ9+umn6tatW9jvcfXq1ZKkpk2beu2/6qqr1KxZM40ZM0Y7duwIeP2kSZN06aWXqlOnTho1apQaN26s7777Tp988okuuOACSdJnn32m/v37q2vXrho7dqwyMzM1ceJE9e7dW19++aW6d+8edrkBAIgFQjcAAHF08803q3///urcubO6d++uo48+WieccIKOP/54ZWVlVZ534YUX6oorrtB+++3n1XRbkkaPHq3S0lJ99dVX2m+//SRJQ4YM0UEHHaRbb71Vs2bNkiQ99NBD+v777/XOO+/ojDPO8LrebUiX7du365RTTtHSpUv12WefVdkf27Jz505t2bJF5eXl+uGHH3TDDTdIks4++2yv85o0aaIZM2YEbU5eVFSka6+9Vt27d9fnn3+uunXrVh6zyuzxeHTFFVfo+OOP18cff1zZF/zyyy9Xp06dNHr0aE2bNi2ksgMAEGs0LwcAII5OPPFEzZ07V6eddpoWL16sBx98UP369dM+++yjDz74oMrry8vLNW3aNA0cOLAycEtSixYtdMEFF+irr75ScXGxJOntt9/W4Ycf7hW4Lb6DlhUVFalv37764Ycf9Pnnn4ccuCVp7NixatasmfLz83Xcccdp9erV+sc//qEzzzzT67zhw4dX2X97+vTp+vPPP3X77bd7BW5nmRctWqSVK1fqggsu0O+//64tW7Zoy5Yt2rFjh0444QR98cUXqqioCLn8AADEEjXdAADEWbdu3fTOO++opKREixcv1rvvvqtHHnlEZ511lhYtWqSOHTsGvHbz5s3auXOnDjroIL9jBx98sCoqKrRu3Tp16tRJq1ev1qBBg0Iq0/XXX6/du3fru+++U6dOncJ6PyNGjNDZZ5+tzMxMNW7cWJ06dVJ2drbfee3atavyXlbT9GBN71euXClJGjp0aMBzioqKtNdee1X5egAAxBqhGwCABKlTp466deumbt266cADD9Qll1yiyZMna+zYsXEvy+mnn67XX39dDzzwgF588UVlZobeGO6AAw5Qnz59qjyvXr161SliJasW+6GHHgpYI9+wYcOovBYAANVF6AYAIAkceeSRkqQNGzZU7nObt7pZs2aqX7++VqxY4Xfshx9+UGZmplq1aiXJDLz2/fffh/T6AwcOVN++fXXxxRerUaNGevLJJyN5G9VmDRb3/fffq3379kHPycnJCSnsAwCQSPTpBgAgjmbOnOk6iNlHH30kSV7Nxhs0aKBt27Z5nVerVi317dtX77//vtc0Wxs3btSrr76qo446Sjk5OZKkQYMGVTZf9+VWhiFDhmj8+PF66qmndNttt0Xy9qqtb9++atSokcaNG6fdu3d7HbPK3LVrV+2///765z//qe3bt/vdY/PmzXEpKwAAoaCmGwCAOLrmmmu0c+dOnXHGGerQoYNKSko0Z84cvfHGG2rbtq0uueSSynO7du2qTz/9VA8//LBatmypdu3aqUePHrrvvvs0ffp0HXXUUbrqqqtUu3ZtPf3009qzZ48efPDByutvueUWvfXWWzr77LN16aWXqmvXrtq6das++OADPfXUUzr88MP9ynf11VeruLhYd955p3Jzc3XHHXfE5ftiycnJ0SOPPKLLLrtM3bp10wUXXKC99tpLixcv1s6dO/XCCy8oMzNTzz77rPr3769OnTrpkksu0T777KPffvtNM2fOVE5Ojj788MO4lhsAgEAI3QAAxNE///lPTZ48WR999JGeeeYZlZSUqHXr1rrqqqs0evRoNW7cuPLchx9+WCNGjNDo0aO1a9cuDR06VD169FCnTp305ZdfatSoURo3bpwqKirUo0cPvfzyy5VzdEumX/OXX36psWPH6t1339ULL7yg5s2b64QTTtC+++4bsIx33HGHioqKKoP3yJEjY/kt8TNs2DA1b95cDzzwgO69915lZWWpQ4cOlVORSdJxxx2nuXPn6t5779Xjjz+u7du3Kz8/Xz169NDll18e1/ICABBMhsetfRkAAAAAAKg2+nQDAAAAABAjhG4AAAAAAGKE0A0AAAAAQIwQugEAAAAAiBFCNwAAAAAAMULoBgAAAAAgRpinW1JFRYXWr1+vRo0aKSMjI9HFAQAAAAAkOY/Hoz///FMtW7ZUZmbg+mxCt6T169erVatWiS4GAAAAACDFrFu3Tvvuu2/A44RuSY0aNZJkvlk5OTkJLg0AAAAAINkVFxerVatWlXkyEEK3VNmkPCcnh9ANAAAAAAhZVV2UGUgNAAAAAIAYIXQDAAAAABAjhG4AAAAAAGKEPt0hqqioUElJSaKLgTjIyspSrVq1El0MAAAAAGmA0B2CkpISrVmzRhUVFYkuCuKkcePGys/PZ952AAAAANVC6K6Cx+PRhg0bVKtWLbVq1SropOdIfR6PRzt37tSmTZskSS1atEhwiQAAAACkMkJ3FcrKyrRz5061bNlS9evXT3RxEAf16tWTJG3atEnNmzenqTkAAACAiFFtW4Xy8nJJUp06dRJcEsST9YCltLQ0wSUBAAAAkMoI3SGib2/Nws8bAAAAQDQQugEAAAAAiBFCdw2XkZGh9957L9HFCNtxxx2n66+/PtHFAAAAAICgCN1prLCwUNdcc432228/ZWdnq1WrVjr11FM1Y8aMRBet0l133aWMjAxlZGSodu3aatu2rW644QZt37496HXvvPOO7r333jiVEgAAAAAiw+jlaernn39Wr1691LhxYz300EM69NBDVVpaqqlTp2rkyJH64YcfEl3ESp06ddKnn36qsrIyzZ49W5deeql27typp59+2u/ckpIS1alTR02aNElASQEAAAAgPNR0p6mrrrpKGRkZ+uabbzRo0CAdeOCB6tSpk2688UbNmzcv4HVLlixR7969Va9ePTVt2lQjRozwqnX+/PPP1b17dzVo0ECNGzdWr1699Msvv1Qef//999WlSxfVrVtX++23n+6++26VlZUFLWvt2rWVn5+vfffdV+eee64GDx6sDz74QJKpCe/cubOeffZZtWvXTnXr1pXk37x8z549uu2229SqVStlZ2erffv2eu655yqPf//99+rfv78aNmyovLw8XXTRRdqyZUtY31MAAAAACBc13WHyeKSdOxPz2vXrS6EMqr1161Z98skn+vvf/64GDRr4HW/cuLHrdTt27FC/fv1UUFCg+fPna9OmTbrssst09dVXa9KkSSorK9PAgQM1fPhwvfbaayopKdE333xTOdL3l19+qSFDhmj8+PE6+uijtXr1ao0YMUKSNHbs2JDfZ7169VRSUlK5vWrVKr399tt65513As6ZPWTIEM2dO1fjx4/X4YcfrjVr1lSG6m3btql379667LLL9Mgjj2jXrl267bbbdM455+izzz4LuVwAAAAAEC5Cd5h27pQaNkzMa2/fLrlkaD+rVq2Sx+NRhw4dwrr/q6++qt27d+vFF1+sDOuPP/64Tj31VP3jH/9QVlaWioqKdMopp2j//feXJB188MGV19999926/fbbNXToUEnSfvvtp3vvvVe33npryKF74cKFevXVV9W7d+/KfSUlJXrxxRfVrFkz12t+/PFHvfnmm5o+fbr69OlT+dqWxx9/XEcccYTuv//+yn3PP/+8WrVqpR9//FEHHnhgSGUDAAAAgHARutOQx+OJ6Lrly5fr8MMP96od79WrlyoqKrRixQodc8wxuvjii9WvXz+deOKJ6tOnj8455xy1aNFCkrR48WLNnj1bf//73yuvLy8v1+7du7Vz507Vr1/f9XWXLFmihg0bqry8XCUlJRowYIAef/zxyuNt2rQJGLgladGiRapVq5aOPfZY1+OLFy/WzJkz1dDlacnq1asJ3QAAAABihtAdpvr1TY1zol47FAcccIAyMjJiMljaxIkTde211+qTTz7RG2+8odGjR2v69Onq2bOntm/frrvvvltnnnmm33VWX2w3Bx10kD744APVrl1bLVu2VJ06dbyOuzWRd6pXr17Q49u3b6+srfdlPTAAAAAAgFggdIcpIyO0Jt6J1KRJE/Xr108TJkzQtdde6xdat23b5tqv++CDD9akSZO0Y8eOymtmz56tzMxMHXTQQZXnHXHEETriiCM0atQoFRQU6NVXX1XPnj3VpUsXrVixQu3btw+rvHXq1An7GqdDDz1UFRUVmjVrVmXzcqcuXbro7bffVtu2bVW7Nh95AAAAIJlt3Wq69ebmSo0aJbo01cfo5WlqwoQJKi8vV/fu3fX2229r5cqVWr58ucaPH6+CggLXawYPHqy6detq6NCh+v777zVz5kxdc801uuiii5SXl6c1a9Zo1KhRmjt3rn755RdNmzZNK1eurOzXPWbMGL344ou6++67tXTpUi1fvlyvv/66Ro8eHdP32rZtWw0dOlSXXnqp3nvvPa1Zs0aff/653nzzTUnSyJEjtXXrVp1//vmaP3++Vq9eralTp+qSSy5ReXl5TMsGAAAAIDy33y61aiWNH5/okkQHoTtN7bfffvr22291/PHH66abbtIhhxyiE088UTNmzNCTTz7pek39+vU1depUbd26Vd26ddNZZ52lE044obJ/df369fXDDz9UTkE2YsQIjRw5UpdffrkkqV+/fpoyZYqmTZumbt26qWfPnnrkkUfUpk2bmL/fJ598UmeddZauuuoqdejQQcOHD9eOHTskSS1bttTs2bNVXl6u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l4Zfhl69TG33wQeHf22qInQDAAAAQA0QjZru8nLpzz8jL0NOjrm+JtWSE7oBAAAAIE2VlUnnny91724GTfOVGWaH4/Ly6pcp2JRi6Yg+3QAAAACQ5P73PzPw2H33hXfd559Lb70l3Xpr9Gq6ER5CNwAAAAAkucMPN8v/+7/wrvN47PW33vI/Xp3Q3aRJeNfWVIRuAAAAAEhiv/4anfu8/77/vkhC94EHmvXnnqt+mWoCQjcAAAAAJLGff4782oqKqBVDkgndVj/wxo2je+90RegGAAAAgCRWnZG+S0qCH//998DHunf337dzpz1Pd926kZerJiF0AwAAAEASy8qK/Nply4IfX7068DG3eb1r15bWrDHr2dmRl6smIXQDAAAAQBKYNUtavNh/f22fiZ6dg6NV5fbbIy+P20jl27fb69R0h4Z5ugEAAAAgwX79VTruOLNeUWGmB7NYzbktZWXVq/0OlVtNt1NNm287UtR0AwAAAECCrVplr0+d6n3s0Ue9t6sKw9FS1euEO/J5TUXoBgAAAIAEcwbcH3/0PjZ9uvd2OM3L3QZDC5VV8x5Iy5aR37smIXQDAAAAQII5Q/euXd7HfGuU//wz9PsefHDkZbrnHumOOwIfzyRNhoRvEwAAAAAkWGmpvb57t/cx39D9yCOR3TdczZtLf/975NfDIHQDAAAAQII5B0tr08b72LBh3tubNoV+3+qEbkQHoRsAAAAAEmzrVnu9Th3vY82aeW/71oQHU1IS/PgZZ4R+L6enn47supqI0A0AAAAACXb55fa67/zYFRXe287Q/d130oYNge/7ww/++yZNstdfeSXkInpp0iSy62oi5ukGAAAAgCTiG7p9a6ut0L1okdSli1kvLZVqu6S7FSv89110kdSokdStm1SvXmRlrFs3sutqImq6AQAAACCJ+Ibum27y3p42zSyPOsre9/jjod8/M1M680ypVavIyidJ2dmRX1vTELoBAAAAIIk4Q/fOnYGP79hh7/vkE//znNOQVceSJWb6sGeesfdR0x06mpcDAAAAQBJx9tl+8033czwe7223ObOLi/337btv+OU55BDzNXmyvY/QHTpqugEAAAAgidxyi70+frz7Obt2eW+79d3ets0s69e39519duTlco6qTvPy0BG6AQAAACCBgg2c9t137tf4Nh3fssX/nKIis8zNld56Sxo4UBozJuJier1GVlbk96lpaF4OAAAAAAnkW2vdvXvV15SWem+7NSW39uXkSIMGma/q2LPHXvdt3o7AElrTfddddykjI8Prq0OHDpXHd+/erZEjR6pp06Zq2LChBg0apI0bN3rdY+3atRowYIDq16+v5s2b65ZbblFZtEYMAAAAAIAY8x0szTmq+PHHu1/jG7rdWDXmsWgKfvDB0b9nukp4TXenTp306aefVm7Xdkwud8MNN+i///2vJk+erNzcXF199dU688wzNXv2bElSeXm5BgwYoPz8fM2ZM0cbNmzQkCFDlJWVpfvvvz/u7wUAAAAAwuUbuqdMsdebNHG/JpTQbZ0Trabg++9vr2dkROeeNUHCQ3ft2rWVn5/vt7+oqEjPPfecXn31VfXu3VuSNHHiRB188MGaN2+eevbsqWnTpmnZsmX69NNPlZeXp86dO+vee+/Vbbfdprvuukt1nD39AQAAACAJrV3rvb1njxnBvG5d7ybdTt9847/P4/EOw9EO3X37So8+KnXuHJ371RQJH0ht5cqVatmypfbbbz8NHjxYa//6xC1cuFClpaXq06dP5bkdOnRQ69atNXfuXEnS3LlzdeihhyovL6/ynH79+qm4uFhLly6N7xsBAAAAgAj8/rv/PiswOwdVczrrrMDX+G7XjlJVa0aGdO210jHHROd+NUVCa7p79OihSZMm6aCDDtKGDRt099136+ijj9b333+vwsJC1alTR40bN/a6Ji8vT4WFhZKkwsJCr8BtHbeOBbJnzx7tcTwyKnYbdQAAAAAA4sAtWFsDlQWq6XZTWuo9rVe0a7oRmYSG7v79+1euH3bYYerRo4fatGmjN998U/Xq1YvZ644bN0533313zO4PAAAAAKH65BP/fdY0YoFqut0EqukmdCdWwpuXOzVu3FgHHnigVq1apfz8fJWUlGibNaP7XzZu3FjZBzw/P99vNHNr262fuGXUqFEqKiqq/Fq3bl103wgAAAAAhGjSJP99VugOp6bbN6ATupNDUoXu7du3a/Xq1WrRooW6du2qrKwszZgxo/L4ihUrtHbtWhUUFEiSCgoKtGTJEm3atKnynOnTpysnJ0cdO3YM+DrZ2dnKycnx+gIAAACAZHHppdK771LTnQ4S2rz85ptv1qmnnqo2bdpo/fr1Gjt2rGrVqqXzzz9fubm5GjZsmG688UY1adJE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yTjVESK3fr10111m/aCDpF69pFWr7ONlZVJ2dkKKlrIChe7cXGnYsPiWJRhn6H7//cB9oa0a7kAP3P73v8heM1YI3QgXHxUAAJAQv/7qvj9QDThSk7P5eN++0kcfeR+npju6nnsuOvfZsqX693A+QNtvP7tJfDg13b/9Jl17beivGY9+7YRuhIuPCgAASAjnyMZOvlMhIbX5hiDfWm1Cd/hiPR/1889LzZpJ99xTvfs4m3oXFZmRxiWpQQPv84LVdC9bFt5rxjN0M083QkXoBgAAcffLL9Jll7kfe/DB+JYFseUbgoYM8d4mdCcf63dz7Njq3cf5sz33XHs6r0aNvM8LVtNdv777vZcscd9PTTeSER8VAAAQd0cdlegSIF58Q9C2bd7bhO7APB73EBnrmu5o3T/Ugd18a7qXLjVzb3/+uV077uuAA9z3x2M0/EB904FA+KgAAIC4C9SfG+mnqppHQndgAwaY5vi+wTOcUBwotMZDoNDtO26Db033wIHSl19Kxx8v/fCD+z2ys/2bqUvUdCM58VEBAABJZ8aMRJcA0ULojtzHH5vv3957R36P6obu+fMjvzbQz/bYY723fWu6CwvtY851STrrLOmRR8z6d9/535vQjWTERwUAACSdPn38myEjNS1eHPw4odsMOLZ5c+DjvtPo+dZ0v/pq4Frl6s7d3b174NrmqgR67datvbd9a7qdYda3ufjkydL115v1du387x2P5uWEboSLjwoAAEioxYul/ff3379xY/zLgugbPDj48SeeqNnBu7RUqltXat7cu9tFsCbkvsfOOsuuLfZV3dAt+U/zFqpI+3QHC91OVlh3inVN9+efSyNGmHVCN0KV0I/Kk08+qcMOO0w5OTnKyclRQUGBPv7448rju3fv1siRI9W0aVM1bNhQgwYN0kaf/4HXrl2rAQMGqH79+mrevLluueUWlbnNNwAAAJLSYYdJq1b57y8qin9ZEH9PP12zR6yfPdte//RTez3UGtvcXDu0ujVDj0bozs8PfnzJEumaa6Q1ayJ77XBquqsS69B9/PH2OqEboUroR2XffffVAw88oIULF2rBggXq3bu3Tj/9dC1dulSSdMMNN+jDDz/U5MmTNWvWLK1fv15nnnlm5fXl5eUaMGCASkpKNGfOHL3wwguaNGmSxowZk6i3BAAAQtCkiVkG+2M+GmEBqeG99xJdgsRxNh131mAHC4/O8/7v/+z1k0/2Pzcav0e+zdt9HX+89Pjj0o03eu+fPj20+/vWdDvnv3aG7rvuqvpe8ejTbSF0I1QJ/aiceuqpOvnkk3XAAQfowAMP1N///nc1bNhQ8+bNU1FRkZ577jk9/PDD6t27t7p27aqJEydqzpw5mjdvniRp2rRpWrZsmV5++WV17txZ/fv317333qsJEyaohP+pAQBIWj16mOW4cYHPqclNjtNJbm7V5yxYYM/hXNM4P+fOP1+DNdx0hm5n0G3Y0P/caPxJXNXv4u+/m+V773mH3gULzPLII4NfH0pN98iRoc0bHo8+3RbnwwEgmKR5PlNeXq7XX39dO3bsUEFBgRYuXKjS0lL16dOn8pwOHTqodevWmjt3riRp7ty5OvTQQ5WXl1d5Tr9+/VRcXFxZWw4AAJKP9Yd5rVr2vosu8j6H0J0ejj46tPPcamlrgj177PU2bez1UHpL1qvnHfysAcacRo+OuGiVAv0ulpVJ//qX974//jBL5/vKyZGaNg18f+vfgd9+Mw8U3EJ348ahlZWabiSjhH9UlixZooYNGyo7O1tXXHGF3n33XXXs2FGFhYWqU6eOGvv8huXl5anwr7kDCgsLvQK3ddw6FsiePXtUXFzs9QUAAOLHLXTfe6/3OYTu9FBV02RLPGsok8nZZ9vrzu+Bb3h01m4HGmTtgAP890WjBUGg38Xnn5duvtl7386dZmnVfktmPu1gAdU5b3dxsff7C3ekcEI3klHCPyoHHXSQFi1apK+//lpXXnmlhg4dqmXLlsX0NceNG6fc3NzKr1atWsX09QAAgDe30O3bDJnQnR7cQveRR0onnhj/siSL3bul11+Xpkzx3u/8zPt+35zHrFDq1rz5H/+oXtms0BzotZ2WLPHfZ80L7gzdFRVmhPZAune3131DsxW6nf9WBEPoRjJK+EelTp06at++vbp27apx48bp8MMP16OPPqr8/HyVlJRom88knRs3blT+X6Ou5Ofn+41mbm3nBxmZZdSoUSoqKqr8WrduXXTfFAAACMr6I945zZFv81FCd3rwDY8HHCB9803ozYXT0dix0vnnS6ee6r3f+Zn37Sm5a5e9Hix0Bwu3objtNv99Tz3lfq7bNGVWrbWzIWlpqRmlvl496cUX/a9xTv1VVhZeTbfVLcEK7vFsMUHoRqiS7qNSUVGhPXv2qGvXrsrKytKMGTMqj61YsUJr165VQUGBJKmgoEBLlizRpk2bKs+ZPn26cnJy1LFjx4CvkZ2dXTlNmfUFAADixxrcqU6dwOcQutODNZiW5eCDTVisVy8x5UkGr7zivr+0VHruOfP14Yfex5x9pIP529+qV7Znn/Xf55yK7L77pIICU6PtFrqtPt3O0F1WJvXvL/35p//YDZL3wwPfgd+smutAAffDD6Vt26ROnbzPjwdCN0LlMqV8/IwaNUr9+/dX69at9eeff+rVV1/V559/rqlTpyo3N1fDhg3TjTfeqCZNmignJ0fXXHONCgoK1LNnT0lS37591bFjR1100UV68MEHVVhYqNGjR2vkyJHKzs5O5FsDAABBWAEi2H/XoYTu+fOlSy+VHnpIOumk6JQN0fPLL/b6mDHS6tXSP/9ptgOF7l9/NSGsRQvp/fdNDeY++8S+rPH022/u+zdtch8MTQq9efmRR0qffy4dd1xkZXPrDuB8HWuKsv/8xz109+sn/e9/0pw59r7Wrc0ylCbizz3nvV1VTXdmpumaYt07nqGb0csRqoSG7k2bNmnIkCHasGGDcnNzddhhh2nq1Kk68a9OPo888ogyMzM1aNAg7dmzR/369dMTTzxReX2tWrU0ZcoUXXnllSooKFCDBg00dOhQ3XPPPYl6SwAAIATRquk+5xzp559NLVqgwaWQOH/+aa937Srdfbe97dYMevduqWNHc92TT0pXXmmaoVu1p+luxYrAx0IN3ZJ07LGRl+Gii6SXXvLe53x4Ypk927RacPN//2cemFgeeij013/nHWnzZns71IHUEhG6a+rgfwhfQkP3c76PsnzUrVtXEyZM0IQJEwKe06ZNG3300UfRLhoAAIihaNV0+wz9giTjDEDNm3sfq1/f//w1a+ygfscdZun2M/Z4zEBdzmbP6eDJJwMfc/t9CFbTeued0t//Hn4Z2rY1yxYtpIEDTZk2bpS+/lrq0cM+7623pKOOcr+HxyN17iwtWmRaNITzc/rf/7y3Qx1IbcsWs/z229BfKxK1a9vTuUVjDnTUDPREAAAAcWf9sVrd0E2fyuTmDN1/9Q6stO++/uf//LO9Hqx2OzNTatYsOtNhpQq3mu5grrkmtPM9HtNNw3rYYfXFPucc6fLL7fMee8z/2q++MsvcXO+HKh98YJq5Syb8V0dVfbotb79tls4a9lhwzp/OuBMIFf9VAQCAuHrvPbtPKwOppTcrMFl9ep3cgqA1EnWoUrUff8uWoZ135plSXp5ZD6d5ueT9u+UMir7eftv0mz/6aLP96KNm+dRT7q0R3Dz9tPdc25I9IJvPRENhc5vpIFFmzvTepqYboSJ0AwCAuHn1VemMM+ztSGu6ly83QW7r1uiVDdHnNh+7Zf786L5GKnEbrMzN9u12eA63eblzGq5g36OXXzbLxYu99+fkeIdujydwyGzeXOrWzf1Ydfs9J1PofvNN720eDCJUhG4AABAXHo80eLD3vmBhINgftFddJa1bF51yIXasGla30N20aXRe45lnonOfeNq5M7Tzpk0zU3NJ7vN0B+M793Ugvg+++vQxy7vukho0sPeXl5vR1d3Uqyc9+KD3Pqsf98CBVZc1mFBD97/+Vb3XCYXvAwRCN0JF6AYAAHHh9od/ixaBz//uO+mEE7ynHrLQrDM1BKvpDoczZPoGzhkzqnfvaFm71nu09kDKy0Ov6e7SxW7N4Rz5PZTm5c7vebDQ7dvFwwq39et713RnZgaeK7x+ff8m89bAZqHOx96mjfv+Tz/1LlcgffuapfNBQbT5/tzWr4/dayG9ELoBAEBcuP3hn5PjvX3jjfb6u+9Kn30m9erlfx3z46aGYKE7nGbHzimrfK9Lhubla9ea0Gj1vw7Gt++zJN10kzRypPTDD97hc/Roe93t4UI0mpf7hm7nz8x5rH37wA8L6tcP3HIh1Adk//2v+37rNb/5Jvj11mcsWJeV6vJ9gLB8eexeC+mF0A0AAOIilHD00EPSgAHux779VsrPlz76iFHLU8WGDWbpFrqDDaLnyzkSt2+T3mQI3V9+aZbOJuCBWM2369QxIfv996V//EN6/HHpoIOk/fe3z/UNubNnm2UozcudvyPBgq/z5+Dx+D8oue46s/z888BNuOvVC1yj7TtqfSCBarotVk12INb7jeXc2c7R9SXprLNi91pIL/yXBQAA4iJYE1eLNRWUm65dzUjIAwYQulPFhReapVvt7i23SB06hHafKVPsdd/PUTKEbudDBd95osvKTI10RoZpKr5ggdlfUmJC9mmneV/vXPcdnd0K7KE0L3d6443Ax5w1w7t3+4du6/iXX0oTJ7rfw2qGvmWLd4gPFsYD3SMQtxYvTlZ5Y/V52LXLf4q6ZBjcDamB/7IAAEBchBK6pdAGJwqlpg/R9d13Zrq3UDl/jmvW+B/fe+/Imuf6fj5iWbMZKmdT7uef9z7mbBZ95ZVV38sZpOvVk44/3t7evdv7sx9q6L7hhsDHnGX/88/AodtXo0b2uhWYmzaVDjzQ3p+bG1r5pKofpFV13CpvrD4P//tfbO6LmoHQDQAA4sI3dDv/OA92nhu3AYwI4rHVpYuZ7u3000MbfTuUptahOvFEs/zpJ//gnww13U6+4dDZtPurr6q+ftEie71OHemCC7yPP/FEZJ/1QE3MnQ8xduwILXR36SI98IB3OS3Omu1wQndVqhqMz/q+x+LzsH27dNll/vv794/+ayE9EboBAEBcWGG6Th1p1SppyRL386oa2fmAA+yRkd3uj9j64ANp3Liqz7OmuoqG0lIzXdX++0uXXup9LBlCtzO4+jY5dn4fQhnt2jktV2amdMgh3sevvjr85uWS9Mcf7q/14Yf29m23hRa6s7OlU0+1t31r5y3RDN2JrOn+v/+Tvv/e3v7lF9PlwXcKRCAQQjcAAIgL55zN++8feCAt3xrSI47w3l650n3qIkJ3/Hz9ddXzpIc6F3Uoysq8R/J2Sobm5c7psnxDarg1/v36eW/37Cm99JL7ueGEbrffmYMO8m76P3lyaKG7Th2pVSsTRNeu9T7m7JudLjXd//63vb7vvlLr1mZsCWZRQKgI3QAAIC6sP4adfUjd+IaU776Tzj3X/ZwuXex9ofQFR3RMn26CR7Dmtc7Qbc21HKnSUv+Roy2JqOn2eAL3rfZt+h1obutA3nhDmjTJe87vCy/0HnRu9erw7im5Ny/fts1/n1Uzb8137fZwzPod7tTJhG8nZ013oNYsofCt2U50n27Lr7/G9v5IT4RuAAAQF1ZNdFWhe++9/fe9+ab7ubfdZq9//XVk5ULkPvkk8DErdLdtK51wQvVeZ+1aE/TdxDt0ezzS0UdLxxxjB2xn0PMtT1XdJXzl5kpDh0oNG3rvt6Ylk6RRo8wynJrWrVu9twP1Cy8uNsucHLOsW9f/nGC/w877hjpHtxvfZvqh1nT7PhABkgGhGwAAxEWooXv8eDM10rXXVn1P5wjKVc3ji/iy+hBHY1ola75vN/FuXr5pk5kv+6uv7LEFnEH7oYdMGLYGRPMdzdzSvn14r+t8GLXPPmZZVej+4AN73RnaJfdA3LatHbqt3y23n1+w32FnS5XWrYOXz9d995ll587e85VLodd0S9H/TIQ67RkQCKEbAADExWOPmeXmzcHP23dfU6vpO2qzG9+5fZNhUC0Y111nlitXxvZ14j1nu7MbgxVc3UKeNRbBnDn+x448Upo5M/zX7tnTLPPzQzv/1FOlJk3cr3EL3U2b2s3arZput2AfrNbZWbN/662hldNy553me/ntt/7N2sOZUiza/w44f75VzScOuCF0AwCAuHj66fDODzQ/sFNenve2c4RhxN/MmdKNN5p+zD/+GPl9jj029HOrajkRbc6+6tu3m2nM7rwztGuPOMI0154xwzxcCtfhh5ul1e86lOblVp/yDz+U/vtfM1DbunXufc0XLrTXrdDdrp3/ecG+587Qfd55VZfPV0aG+Qq3hUSsaro9Hu/vVSj/LgG+CN0AACAphfLHrW9wCXfQKlSPb//73r2lRx4xwfKYY8y+Aw4I/77hBK6q+vpGmzN0b9pk5pufPz+0a7/5xjRJtwJtuKxaVqsMoYRuK6C/8YZ0yinStGnSDTdU/bti9eW2atedQg3d1RndO9DsBoHEqqbbd1YEQjciQegGAABJqXHjqs+xRli2bN8ek6IggC1bpKeecj/WvLlZXn99+Pc96KDQz4136HbOu33MMeEFvNq1/T+z4bD6FoczHdt++5lljx72vo0bvZuXT57sf50zMI8f730sWFPvcAeOC2T2bHvdbXBFX87PQTRDt28zfEI3IkHoBgAASalp06rP8a1Jo093/F15pfv+t94yS7fRr6vyf/8nDR5sjwOQLBYu9J9HO5iffrLXb7ih+q9v1XRb/a5DqUm+9FKzPPhge19+vl3TvddeUteuwe/h21zb+eDB1yWXmOVRR1VdtlDdeGPV5zgfBESzeblvi4Bwa+ABidANAADiwPlH8LffhnZNJH/c+jYFRXT4TjcVjrVrw78mL096+WXTXN3JbUR752fr8celf/wj/NcLVa9ewQOnL+cDiauuqv7rW4OhWSOjhxK6rab6kybZ+/bZx67BrVPHf3Ru39YDBQXe28GmArvpJmnqVNN/PFqcZQ8kXjXdhG5EgtANAABiztnkNJI+vm6soLBmjb2P0B0bvqNQn3GG9/b330uLF7tfe+654b2Wsxm077Raw4fbg4lZrNBdViZdc410++3Szz+H95qhCnfMgGnT7HVrFPHq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9y+/2OtjxtjryTK6d7ByBKvp9hVsmjQAAJA4CQ3dO3bs0OGHH64JEya4Hn/wwQc1fvx4PfXUU/r666/VoEED9evXT7sdj/4HDx6spUuXavr06ZoyZYq++OILjRgxIl5vAQCQAJdfbq87/wtZtUr67jvplVfsfW4jmEvS8uWxKVu4AvXblqR99gl87LDDvLenTo1OeQAAQHQlNHT3799f9913n8444wy/Yx6PR//+9781evRonX766TrssMP04osvav369ZU14suXL9cnn3yiZ599Vj169NBRRx2lxx57TK+//rrWr18f53cDANHBQGpV27DBXh8wwF5v1Urq3Nl8Wazm5L4OPzwWJQtfsNDdvbv01FPSp59KF15o9ll9ta+7ziwPPji25QMAANWTtKOXr1mzRoWFherTp0/lvtzcXPXo0UNz586VJM2dO1eNGzfWkY65Vvr06aPMzEx9/fXXcS8zACD2Skvt9b/+O/DTsaO9/s477uckOqxaDwtuuCH4eZdfLp1wgvT449Lf/y59+aXZf8klplZ//vzYlhMAAFRP0g6kVlhYKEnKy8vz2p+Xl1d5rLCwUM195kypXbu2mjRpUnmOmz179mjPnj2V28XW/DEAgKRnzbMtSV27hnaNx+M9KFnLlu5zeMfT5MnS4sWmNjsUubnSHXfY2xkZdo3+3/5m93GX7BHaAQBA4iVtTXcsjRs3Trm5uZVfrVq1SnSRAKASA6kFdu653vNyB2uafddd9vq0ad59uFeulGon+LFzvXpSz55mzu3qOuEE7+0OHap/TwAAEB1JG7rz8/MlSRs3bvTav3Hjxspj+fn52uQzUWlZWZm2bt1aeY6bUaNGqaioqPJr3bp1US49ACDaioqkN98M/fzbb7fXTzrJrhXPy5Pq149u2RLN+SBCCjzvNwAAiL+kDd3t2rVTfn6+ZsyYUbmvuLhYX3/9tQoKCiRJBQUF2rZtmxYuXFh5zmeffaaKigr16NEj4L2zs7OVk5Pj9QUAySLdB1KbN880737lFem556S77w7tutWrvbdPOSX4+dnZ7uHa51luWvAN3dGoPQcAANGR0MZ127dv16pVqyq316xZo0WLFqlJkyZq3bq1rr/+et1333064IAD1K5dO/3f//2fWrZsqYEDB0qSDj74YJ100kkaPny4nnrqKZWWlurqq6/Weeedp5YtWybo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xowZoxYtWqhevXrq06ePVq5c6XXO1q1bNXjwYOXk5Khx48YaNmyYtm/f7nXO//73Px199NGqW7euWrVqpQcffDDWb61GGzdunLp166ZGjRqpefPmGjhwoFasWOF1zu7duzVy5Eg1bdpUDRs21KBBg7Rx40avc9auXasBAwaofv36at68uW655RaVlZV5nfP555+rS5cuys7OVvv27TVp0qRYv70a7cknn9Rhhx2mnJwc5eTkqKCgQB9//HHlcX6u6eGBBx5QRkaGrr/++sp9/GxT01133aWMjAyvrw4dOlQe5+ea2n777TddeOGFatq0qerVq6dDDz1UCxYsqDzO31Gpp23btn6/sxkZGRo5cqQkfmf9eJBwr7/+uqdOnTqe559/3rN06VLP8OHDPY0bN/Zs3Lgx0UXDXz766CPPnXfe6XnnnXc8kjzvvvuu1/EHHnjAk5ub63nvvfc8ixcv9px22mmedu3aeXbt2lV5zkknneQ5/PDDPfPmzfN8+eWXnvbt23vOP//8yuNFRUWevLw8z+DBgz3ff/+957XXXvPUq1fP8/TTT8frbdY4/fr180ycONHz/fffexYtWuQ5+eSTPa1bt/Zs37698pwrrrjC06pVK8+MGTM8CxYs8PTs2dPzt7/9rfJ4WVmZ55BDDvH06dPH891333k++ugjz9577+0ZNWpU5Tk//fSTp379+p4bb7zRs2zZMs9jjz3mqVWrlueTTz6J6/utST744APPf//7X8+PP/7oWbFiheeOO+7wZGVleb7//nuPx8PPNR188803nrZt23oOO+wwz3XXXVe5n59taho7dqynU6dOng0bNlR+bd68ufI4P9fUtXXrVk+bNm08F198sefrr7/2/PTTT56pU6d6Vq1aVXkOf0elnk2bNnn9vk6fPt0jyTNz5kyPx8PvrC9CdxLo3r27Z+TIkZXb5eXlnpYtW3rGjRuXwFIhEN/QXVFR4cnPz/c89NBDlfu2bdvmyc7O9rz22msej8fjWbZsmUeSZ/78+ZXnfPzxx56MjAzPb7/95vF4PJ4nnnjCs9dee3n27NlTec5tt93mOeigg2L8jmDZtGmTR5Jn1qxZHo/H/ByzsrI8kydPrjxn+fLlHkmeuXPnejwe80AmMzPTU1hYWHnOk08+6cnJyan8Wd56662eTp06eb3Wueee6+nX7//Zu+4wKYq0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xWjYsCFat25tpYvFYrj44ouxaNEi3HLLLejWrRvWrl2Lf/zjH/j1118xffp0AMArr7yCOXPmYOzYsViyZAlSUlLw73//G9999x3ee+89oVp3eXk5li9fjttvv136G1lzR3YcidC9e3dkZWVh8eLFwjGroKCgoJAgaAoKCgoKCgnAxIkTNQDa7NmztcOHD2u7d+/Wpk6dquXk5GgZGRna7t27rbTnnHOOdvLJJ2slJSXWvVgspg0aNEjr1KmTdW/u3LkaAG3u3LnWvaKiIlfZzz33nBYKhbSdO3da9+68806Nt80B0MaPH2/9vvrqq7UmTZpokUjEurd//34tHA5rzzzzjO96s1BUVKR16dJFA6C1bdtWGzdunPb2229rBw8edKXl1X379u0aAK1u3braoUOHHM9k62b20/Dhw7VYLGbdv//++7WUlBQtNzdX0zRNO3DggJaamqpdeumljnKeeuopDYA2duxY696UKVNc/WSibdu2GgBtwYIF1r1Dhw5pGRkZ2oMPPshpLRsAtDvvvNP6bY6Jbt26aaWlpdb9V155RQOgrV27VtM0TSsrK9OaNGmi9erVy5HuP//5jwZAGzJkiHXvvffe08LhsLZw4UJH2W+++aYGQFu8eLF1b+bMmRoA7dlnn9W2bdum1a5d29VGLGzZskUDoP3zn/90PRs7dqxWq1Yt7fDhw9rhw4e1LVu2aC+++KIWCoW0nj17OvrJzzgaP368BkA7fPiw61nnzp21Cy64wLPeCgoKCgrxQ6mXKygoKCgkFMOHD0dOTg5at26NK664ArVq1cKMGTPQqlUrAMCxY8cwZ84cXHnllThx4gSOHDmCI0eO4OjRoxgxYgQ2b94s9HaelZVlXRcWFuLIkSMYNGgQNE3DqlWrAtV5zJgxOHTokEMleurUqYjFYhgzZkzC6r1s2TI8/PDDAHS17JtuugnNmzfH3Xff7VBj9sLll1+OnJwc63eQut1yyy0OKemZZ56JaDSKnTt3AgC+//57RCIR3HHHHY737r77bul6mujevbtlZgAAOTk56NKli0Nt2i9uuOEGhx27mb+Z54oVK3Do0CHcdtttjnTjxo1DvXr1HHlNmTIF3bp1Q9euXa22O3LkCM4++2wAwNy5c6205513Hm699VY888wzuOyyy5CZmYl///vfnvU9evQoAKfUmkRhYSFycnKQk5ODk046CQ899BDOOOMMfP75545+StQ4atCggcOruYKCgoJC8qCYbgUFBQWFhOK1117DrFmzMHXqVFx44YU4cuQIMjIyrOdbtmyBpml44oknLCbD/Bs/fjwA4NChQ9z8d+3ahXHjxqFhw4aoXbs2cnJyLLXwvLy8QHU+//zzUa9ePYdq9SeffIJevXqhc+fOCak3ANSrVw8TJkzAjh07sGPHDrz99tvo0qUL/vWvf+HPf/6zdH3bt2/v+B2kbm3atHH8NpnB48ePA4DFfJ900kmOdA0bNuQyjjzQZZnlmWUFgWz9O3Xq5EiXlpaGDh06OO5t3rwZ69evd7Wd2fd027344oto2LAhVq9ejVdffRVNmjSRrremacz7mZmZmDVrFmbNmoWJEyeiW7duOHTokOOQyUQixpGmaYFU0xUUFBQU/EPZdCsoKCgoJBT9+/e3vJdfeumlGDx4MK655hps2rQJtWvXRiwWAwA89NBDGDFiBDMPmtEzEY1Gce655+LYsWN49NFH0bVrV9SqVQt79+7FuHHjrLz9IiMjA5deeimmTZuG119/HQcPHsTixYvx17/+1UoTT71ZaNu2LW688UaMGjUKHTp0wAcffIBnn31W6l2aEQtSt5SUFGY6HlMYD5JRViLzjMViOPnkk/HSSy8xn5P23wCwatUqixFfu3Ytrr76as8yGjVqBADcg4aUlBQMHz7c+j1ixAh07doVt956q9BRX9BxdPz4cdeBhIKCgoJCcqCYbgUFBQWFpCElJQXPPfcchg0bhn/961947LHHLCljWlqag8mQwdq1a/Hrr7/inXfewfXXX2/dZ3lh9ivFGzNmDN555x18//332LhxIzRNs1TLAcRVbxEaNGiAjh07Ojyk+617MupmOuzasmWLQ7J+9OhRF+NYFSWmZv03b95sqYkDukOz7du349RTT7XudezYEWvWrME555zj+S2FhYW44YYb0L17dwwaNAgTJkzAqFGj0K9fP+F7bdq0QVZWFrZv3y5V/+bNm+P+++/H008/jaVLl+L0008XpmeNIx4ikQh2796Niy++WKouCgoKCgrxQamXKygoKCgkFUOHDkX//v3x8ssvo6SkBE2aNMHQoUPx73//G/v373elp8NWkTClm6Q0U9M0vPLKK660tWrVAgDk5uZK1XP48OFo2LAhPvnkE3zyySfo37+/g9mMp94A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6qqrUFpaCpvNhjVr1sjOM8bw0EMPoaSkBKmpqaipqcGBAwdkaU6ePIlZs2YhKysLOTk5uPXWW3HmzBlZmj179mDMmDFISUlBWVkZlixZYvWldWgWL16M4cOHIzMzE4WFhZg2bRrq6upkac6fP4/a2lrk5+cjIyMDM2bMwLFjx2RpDh8+jKlTpyItLQ2FhYW477770NraKkuzadMmXHzxxfB4POjZsydWrlxp9eV1aJYtW4ZBgwYhKysLWVlZqK6uxltvveU/T+2aHDz++OOw2Wy4++67/ceobROTn/3sZ7DZbLJPnz59/OepXRObr776CjfeeCPy8/ORmpqKgQMHYseOHf7zNI9KPLp16xb0ztpsNtTW1gKgdzYIRsScVatWMbfbzV544QW2b98+9oMf/IDl5OSwY8eOxbpqhJc333yT/fjHP2avvfYaA8BWr14tO//444+z7OxstmbNGvbhhx+yq6++mlVUVLBz587500yePJlVVlayrVu3svfff5/17NmTXX/99f7zp0+fZkVFRWzWrFls79697JVXXmGpqansV7/6VbQus8MxadIktmLFCrZ37162e/dudsUVV7CuXbuyM2fO+NPMmzePlZWVsQ0bNrAdO3awkSNHslGjRvnPt7a2sgEDBrCamhq2a9cu9uabb7KCggK2cOFCf5qDBw+ytLQ0ds8997D9+/ezZ599ljkcDrZ27dqoXm9H4vXXX2d///vf2SeffMLq6urYgw8+yFwuF9u7dy9jjNo1Gdi+fTvr1q0bGzRoELvrrrv8x6ltE5NFixax/v37s6NHj/o/J06c8J+ndk1cTp48ycrLy9ncuXPZtm3b2MGDB9m6devYp59+6k9D86jE4/jx47L3df369QwA27hxI2OM3lklJHTHASNGjGC1tbX+/9va2lhpaSlbvHhxDGtFqKEUutvb21lxcTF78skn/cdOnTrFPB4Pe+WVVxhjjO3fv58BYP/617/8ad566y1ms9nYV199xRhj7Je//CXLzc1lFy5c8Kd54IEHWO/evS2+IsLH8ePHGQC2efNmxpjUji6Xi7366qv+NB9//DEDwLZs2cIYkxZk7HY7q6+v96dZtmwZy8rK8rfl/fffz/r37y8ra+bMmWzSpElWXxLBkZuby377299SuyYBjY2NrFevXmz9+vVs3LhxfqGb2jZxWbRoEausrBSe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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "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", - "ax1.plot(df['Close'], label='Close Price', color='blue')\n", - "ax1.set_title('Stock Price')\n", - "ax1.set_ylabel('Price')\n", - "ax1.legend()\n", - "\n", - "# rsi graph\n", - "ax2.plot(df['RSI'], label='RSI', color='orange')\n", - "ax2.axhline(70, color='red', linestyle='--') # Overbought line\n", - "ax2.axhline(30, color='green', linestyle='--') # Oversold line\n", - "ax2.set_title('Relative Strength Index (RSI)')\n", - "ax2.set_ylabel('RSI')\n", - "ax2.legend()\n", - "\n", - "plt.tight_layout()\n", - "plt.show()\n" + "# Drop the 'Date' and 'Adj Close' columns\n", + "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)" ] }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "pqbTBdnBOKJc", + "outputId": "42ed663c-ae0f-43d7-a7bd-18bb37dfef6f" + }, "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", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" ], "text/plain": [ - " Open High Low Close Volume SMA_10 \\\n", - "62 21.700979 22.031212 21.700979 21.814201 14674821.0 21.633046 \n", - "63 21.814201 23.116261 21.856661 22.177458 15454878.0 21.592002 \n", - "64 22.314266 22.408621 22.031212 22.210480 21249133.0 21.594833 \n", - "65 21.700979 22.927555 21.700979 22.809616 40137428.0 21.715604 \n", - "66 23.120977 23.871077 22.517124 23.531408 53712115.0 21.967523 \n", - "\n", - " SMA_50 RSI \n", - "62 21.567471 40.418486 \n", - "63 21.662955 45.076147 \n", - "64 21.754948 51.133774 \n", - "65 21.846659 57.684634 \n", - "66 21.948936 59.348024 " + " 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": 10, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -502,54 +710,23 @@ "df.head()" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Correlations" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "corr = df.corr()\n", - "corr" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, + "execution_count": 9, + "metadata": { + "id": "dydEPoNeM6eN" + }, "outputs": [], "source": [ - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "plt.figure(figsize=(10,8))\n", - "sns.heatmap(corr, annot=True, linewidths=0.5)\n", - "plt.show()" + "# 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": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 17, + "execution_count": 10, "metadata": { "id": "OQ3cGqgTMBwt" }, @@ -562,7 +739,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 11, "metadata": { "id": "9Oz-bwJOMEWD" }, @@ -574,7 +751,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 12, "metadata": { "id": "ugapDyXODtn3" }, @@ -589,60 +766,104 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "997ZEgibCZIO", - "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76" + "outputId": "879af72c-3e7c-4b8c-ba28-452fa8ba3cd6" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(5659, 4)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "X_train.shape" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "bmtt76RuCeyG", - "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1" + "outputId": "855f34ec-4914-4e1f-c9b1-6f8753612100" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(1415, 4)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "X_test.shape" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "CeJkUJ92Ciqd", - "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917" + "outputId": "21c5949c-e787-40df-b816-7cc9e830e401" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(5659,)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "y_train.shape" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7HGC7VuTCjWc", - "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75" + "outputId": "cbda22d6-bec9-45d7-80ac-c74ad14b7c0d" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(1415,)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "y_test.shape" ] @@ -658,7 +879,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 17, "metadata": { "id": "RdZ1SpzdMHAJ" }, @@ -670,31 +891,513 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "colab": { - "base_uri": "https://localhost:8080/" + "base_uri": "https://localhost:8080/", + "height": 241 }, "id": "mPM035IzMY04", - "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac" + "outputId": "084d9520-1d31-4287-a9d1-6f9eeea60f9b" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Close
5286257.350006
3408129.464996
5477279.350006
6906588.500000
53021.644367
\n", + "

" + ], + "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": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "y_train.head()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 74 + "height": 80 }, "id": "qBhQ9HbYMI3d", - "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470" + "outputId": "daac2bc7-a480-4013-8e06-717bb8c1fa65" }, - "outputs": [], + "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": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Train the model\n", "model1.fit(X_train, y_train)" @@ -702,7 +1405,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 20, "metadata": { "id": "X269co2kMS4z" }, @@ -714,7 +1417,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 21, "metadata": { "id": "QK8GvDYPOd0Y" }, @@ -733,15 +1436,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "dEi49xtEOtne", - "outputId": "0000b074-3187-41de-fbac-4ae75cbda6bd" + "outputId": "60b53406-81c4-4531-cbb0-77b9ffde8890" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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", @@ -765,30 +1485,33 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 23, "metadata": { "id": "o7K9r7EXWRjQ" }, "outputs": [], "source": [ - "from sklearn.svm import SVR" + "from sklearn.svm import SVR\n", + "from sklearn.model_selection import GridSearchCV" ] }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 24, "metadata": { "id": "0xQewd7QWTtq" }, "outputs": [], "source": [ "# Create an SVR model\n", - "model2 = SVR()" + "model2 = SVR()\n", + "param_grid = {'C':[0.1, 1], 'epsilon':[0.01, 0.1, 0.5], 'kernel':['sigmoid']}\n", + "GV_SVR = GridSearchCV(model2, param_grid = param_grid, scoring = 'accuracy', n_jobs = -1)" ] }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 25, "metadata": { "id": "DuNes3s6U2IV" }, @@ -804,65 +1527,543 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 74 + "height": 191 }, "id": "22SaCsQmfhgP", - "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189" - }, - "outputs": [], - "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" + "outputId": "7867aa8e-a7dc-49e4-d0aa-310423e9c696" }, - "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())" - ] - }, - { + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/sklearn/model_selection/_search.py:1103: UserWarning: One or more of the test scores are non-finite: [nan nan nan nan nan nan]\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "
GridSearchCV(estimator=SVR(), n_jobs=-1,\n",
+              "             param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n",
+              "                         'kernel': ['sigmoid']},\n",
+              "             scoring='accuracy')
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": [ + "GridSearchCV(estimator=SVR(), n_jobs=-1,\n", + " param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n", + " 'kernel': ['sigmoid']},\n", + " scoring='accuracy')" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "GV_SVR.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "id": "OQ1nL4oYfkAC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2 = GV_SVR.predict(X_test)\n" + ] + }, + { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, - "id": "656J5oz5fzq6", - "outputId": "ce67d2d8-0bc8-4e6d-d6b5-6b78e7e1c59b" + "id": "U6-EppR68Jsu", + "outputId": "cfa67a46-ab8c-478d-c13e-fe884ef7ebae" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'C': 0.1, 'epsilon': 0.01, 'kernel': 'sigmoid'}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GV_SVR.best_params_" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "id": "nRYTwydsfpjb" }, "outputs": [], "source": [ - "# Print the evaluation metrics\n", + "# Calculate evaluation metrics with grid search\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": 30, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "656J5oz5fzq6", + "outputId": "c62c2076-2a10-43da-935d-c593c2d7be79" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 158.5191296342117\n", + "MAE: 127.61818666535594\n", + "MAPE: 2.6724681150799072\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 0.9970457902511078\n", + "Confusion Matrix:\n", + " [[738 2]\n", + " [ 0 675]]\n", + "Recall: 1.0\n", + "F1 Score: 0.9985207100591716\n" + ] + } + ], + "source": [ + "# Print the evaluation metrics with grid search\n", "print(\"RMSE:\", rmse2)\n", "print(\"MAE:\", mae2)\n", "print(\"MAPE:\", mape2)\n", @@ -873,6 +2074,512 @@ "print(\"F1 Score:\", f12)" ] }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "tIlc-wCE8Jsv", + "outputId": "fc6a39f5-b546-444e-a522-8bbcf889be14" + }, + "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": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#fitting without grid search\n", + "model2.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "id": "f3u1h6Dk8Jsv" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2_1 = model2.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "F-NgJx2d8Jsv" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics without grid search\n", + "rmse2_1 = np.sqrt(mean_squared_error(y_test, pred2_1))\n", + "mae2_1 = mean_absolute_error(y_test, pred2_1)\n", + "mape2_1 = mean_absolute_percentage_error(y_test, pred2_1)\n", + "accuracy2_1 = accuracy_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "precision2_1 = precision_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "confusion2_1 = confusion_matrix(y_test > pred2_1, y_test > pred2_1.round())\n", + "recall2_1 = recall_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "f12_1 = f1_score(y_test > pred2_1, y_test > pred2_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_BB1EERE8Jsv", + "outputId": "11c94daf-d2db-4447-a5b9-b753e648b56c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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 without grid search\n", + "print(\"RMSE:\", rmse2_1)\n", + "print(\"MAE:\", mae2_1)\n", + "print(\"MAPE:\", mape2_1)\n", + "print(\"Accuracy:\", accuracy2_1)\n", + "print(\"Precision:\", precision2_1)\n", + "print(\"Confusion Matrix:\\n\", confusion2_1)\n", + "print(\"Recall:\", recall2_1)\n", + "print(\"F1 Score:\", f12_1)" + ] + }, { "cell_type": "markdown", "metadata": { @@ -884,7 +2591,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 35, "metadata": { "id": "f7raXT_hf2ij" }, @@ -897,7 +2604,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 36, "metadata": { "id": "TadNM7MEU7fh" }, @@ -913,16 +2620,434 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 74 + "height": 80 }, "id": "fF002Yepgk55", - "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53" + "outputId": "4ff3a76e-04be-452e-8927-a7739bc306fb" }, - "outputs": [], + "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": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Train the model\n", "model3.fit(X_train, y_train)" @@ -930,7 +3055,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 38, "metadata": { "id": "8nRU_pzEgnCt" }, @@ -942,7 +3067,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 39, "metadata": { "id": "4aKEXGVUgsry" }, @@ -961,15 +3086,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "8pPzsCY1g305", - "outputId": "72c4ea56-2610-41c6-f286-4c8289d3f0ac" + "outputId": "bc5eeab1-5d75-4be3-b26f-70c4fe533a47" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.2227552163641375\n", + "MAE: 1.2618627107561857\n", + "MAPE: 0.008011786688180922\n", + "Accuracy: 0.8537102473498234\n", + "Precision: 0.8575624082232012\n", + "Confusion Matrix:\n", + " [[624 97]\n", + " [110 584]]\n", + "Recall: 0.8414985590778098\n", + "F1 Score: 0.8494545454545455\n" + ] + } + ], "source": [ "# Print the evaluation metrics\n", "print(\"RMSE:\", rmse3)\n", @@ -993,7 +3135,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 41, "metadata": { "id": "TI8idoxOg6jF" }, @@ -1006,7 +3148,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 42, "metadata": { "id": "7r9xJDtOVBEA" }, @@ -1022,16 +3164,464 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 248 + "height": 254 }, "id": "2gpbDxshhexj", - "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470" + "outputId": "2cdbacc9-909a-43c9-cf04-cc4f70015e43" }, - "outputs": [], + "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.
" + ], + "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": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Train the model\n", "model4.fit(X_train, y_train)" @@ -1039,7 +3629,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 44, "metadata": { "id": "Jj9DXdUPhh9V" }, @@ -1051,7 +3641,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 45, "metadata": { "id": "TdH60Sllhn5O" }, @@ -1070,15 +3660,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "qpnLeFyZhwB3", - "outputId": "4dcac062-ec60-4b2c-ab4b-dcda1b0f2341" + "outputId": "1637d31a-e785-4414-dfe5-f7fa4fd282e9" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\n" + ] + } + ], "source": [ "# Print the evaluation metrics\n", "print(\"RMSE:\", rmse4)\n", @@ -1102,7 +3709,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 47, "metadata": { "id": "DyhhdlZAhx94" }, @@ -1115,7 +3722,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 48, "metadata": { "id": "Z_AD0lVOVHwB" }, @@ -1131,16 +3738,464 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 49, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 248 + "height": 254 }, "id": "RAIwxIp5iH9Z", - "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f" + "outputId": "cc66ca33-11cc-4e5d-e7e1-f39b41466c28" }, - "outputs": [], + "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.
" + ], + "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": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Train the model\n", "model5.fit(X_train, y_train)" @@ -1148,7 +4203,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 50, "metadata": { "id": "XmJds5fYiKT3" }, @@ -1160,7 +4215,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 51, "metadata": { "id": "lZ1A0-L8iNCM" }, @@ -1179,15 +4234,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 52, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7IkE-RAmiWNo", - "outputId": "cf4c1d84-412b-4a18-f70c-65ce637772ea" + "outputId": "d69e485e-0462-409a-f9aa-59e5ca7c4bef" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\n" + ] + } + ], "source": [ "# Print the evaluation metrics\n", "print(\"RMSE:\", rmse5)\n", @@ -1211,7 +4283,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 53, "metadata": { "id": "HNq66cXRiYPJ" }, @@ -1224,7 +4296,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 54, "metadata": { "id": "qPHH6rG0VW4V" }, @@ -1240,16 +4312,434 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 55, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 74 + "height": 80 }, "id": "P0oB5wjQivBr", - "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c" + "outputId": "827e151d-e13e-4924-ef50-c5e1d13f6161" }, - "outputs": [], + "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": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Train the model\n", "model6.fit(X_train, y_train)" @@ -1257,7 +4747,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 56, "metadata": { "id": "Bf1m5ukOi2VM" }, @@ -1269,7 +4759,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 57, "metadata": { "id": "oFWSqC4ai6gd" }, @@ -1288,54 +4778,618 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 58, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BsajWJGBjC80", + "outputId": "076cff01-ff0a-449b-d86c-df9f1363fecd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 10.504089217159294\n", + "MAE: 8.746118088217727\n", + "MAPE: 0.20512996006219347\n", + "Accuracy: 0.9943462897526502\n", + "Precision: 0.9939879759519038\n", + "Confusion Matrix:\n", + " [[911 3]\n", + " [ 5 496]]\n", + "Recall: 0.9900199600798403\n", + "F1 Score: 0.992\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": 59, + "metadata": { + "id": "23DZ2biSjF9a" + }, + "outputs": [], + "source": [ + "from sklearn.tree import DecisionTreeRegressor\n", + "# Create a Decision Tree model\n", + "model7 = DecisionTreeRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "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": 61, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "6mQEQf-ykc9F", + "outputId": "78dc7661-96e4-46af-b65a-c705018c58a3" + }, + "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": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model7.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "id": "BFJ9q_tvkgRC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred7 = model7.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "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": 64, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, - "id": "BsajWJGBjC80", - "outputId": "1af1194f-9a33-40af-8578-c99832509c1b" + "id": "AnZXMYb8kooV", + "outputId": "93527d46-9366-49ce-b895-7a12ae87f742" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 3.136698143876249\n", + "MAE: 1.6416165234385407\n", + "MAPE: 0.010224639636659394\n", + "Accuracy: 0.8600706713780919\n", + "Precision: 0.8687845303867403\n", + "Confusion Matrix:\n", + " [[588 95]\n", + " [103 629]]\n", + "Recall: 0.8592896174863388\n", + "F1 Score: 0.864010989010989\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)" + "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": "Q9DzOt3CkWFX" + "id": "LH-B-Xd6k5UD" }, "source": [ - "## 7. Decision Tree" + "## 8. KNeighborsRegressor(KNN)" ] }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 65, "metadata": { - "id": "23DZ2biSjF9a" + "id": "JVDSed7yktFY" }, "outputs": [], "source": [ - "from sklearn.tree import DecisionTreeRegressor\n", - "# Create a Decision Tree model\n", - "model7 = DecisionTreeRegressor()" + "from sklearn.neighbors import KNeighborsRegressor\n", + "from sklearn.model_selection import GridSearchCV\n", + "# Create a KNN model\n", + "model8 = KNeighborsRegressor()\n", + "param_grid = {'n_neighbors':[3, 5, 7, 9, 11, 15, 20, 23, 25, 30, 60, 70, 150]}\n", + "GV_KNN = GridSearchCV(model8, param_grid, cv=5, scoring='neg_mean_squared_error')" ] }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 66, "metadata": { - "id": "Ajo2RAVAVb7H" + "id": "XJHb5SxrVgVp" }, "outputs": [], "source": [ @@ -1349,182 +5403,1045 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 67, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 74 + "height": 80 }, - "id": "6mQEQf-ykc9F", - "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169" + "id": "9fn64o-ZlBka", + "outputId": "bc388b6b-cf36-4a91-eb52-8fe7a861308b" }, - "outputs": [], + "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": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Train the model\n", - "model7.fit(X_train, y_train)" + "model8.fit(X_train, y_train)" ] }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 68, "metadata": { - "id": "BFJ9q_tvkgRC" + "id": "hbfbbjcSlDn7" }, "outputs": [], "source": [ "# Make predictions on the test set\n", - "pred7 = model7.predict(X_test)" + "pred8 = model8.predict(X_test)" ] }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 69, "metadata": { - "id": "9IxfYZbYkjv1" + "id": "hnWyNv3blHdL" }, "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" + "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": null, + "execution_count": 70, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, - "id": "AnZXMYb8kooV", - "outputId": "273fa9ed-d6f2-4c4d-fb0e-a643f5ef5732" + "id": "IPoDRkcMlMAr", + "outputId": "5aee40b5-c7c1-4fad-f419-37d08a504146" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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:\", 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)" + "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", + "cell_type": "code", + "execution_count": 71, "metadata": { - "id": "LH-B-Xd6k5UD" + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "5qW5X1Xe8Js7", + "outputId": "6abf26c0-873e-42e2-9aab-c2bd93a5ae84" }, + "outputs": [ + { + "data": { + "text/html": [ + "
KNeighborsRegressor(n_neighbors=150)
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(n_neighbors=150)" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "## 8. KNeighborsRegressor(KNN)" + "GV_KNN.fit(X_train, y_train)\n", + "pred8_1 = GV_KNN.predict(X_test)\n", + "GV_KNN.best_estimator_" ] }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 72, "metadata": { - "id": "JVDSed7yktFY" + "id": "voNSUlHk8Js7" }, "outputs": [], "source": [ - "from sklearn.neighbors import KNeighborsRegressor\n", - "# Create a KNN model\n", - "model8 = KNeighborsRegressor()" + "# Calculate evaluation metrics with grid search\n", + "rmse8_1 = np.sqrt(mean_squared_error(y_test, pred8_1))\n", + "mae8_1 = mean_absolute_error(y_test, pred8_1)\n", + "mape8_1 = mean_absolute_percentage_error(y_test, pred8_1)\n", + "accuracy8_1 = accuracy_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "precision8_1 = precision_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "confusion8_1 = confusion_matrix(y_test > pred8_1, y_test > pred8_1.round())\n", + "recall8_1 = recall_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "f18_1 = f1_score(y_test > pred8_1, y_test > pred8_1.round())" ] }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 73, "metadata": { - "id": "XJHb5SxrVgVp" + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VMnot_fX8Js8", + "outputId": "71c354e6-71e6-4d31-ee2f-2a03f65d24fe" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 137.20694663964096\n", + "MAE: 101.08872313712585\n", + "MAPE: 1.7323302969000884\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 1.0\n", + "Confusion Matrix:\n", + " [[865 0]\n", + " [ 2 548]]\n", + "Recall: 0.9963636363636363\n", + "F1 Score: 0.9981785063752276\n" + ] + } + ], "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)" + "# Print the evaluation metrics with grid search\n", + "print(\"RMSE:\", rmse8_1)\n", + "print(\"MAE:\", mae8_1)\n", + "print(\"MAPE:\", mape8_1)\n", + "print(\"Accuracy:\", accuracy8_1)\n", + "print(\"Precision:\", precision8_1)\n", + "print(\"Confusion Matrix:\\n\", confusion8_1)\n", + "print(\"Recall:\", recall8_1)\n", + "print(\"F1 Score:\", f18_1)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 74, "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 74 + "height": 524 }, - "id": "9fn64o-ZlBka", - "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f" + "id": "Swebseye8Js8", + "outputId": "c501acf3-094c-4ba6-f0d7-1a0901cdb2e0" }, - "outputs": [], - "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": [], + "outputs": [ + { + "data": { + "image/png": "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umw2mxYtWhRynf7vOQSobvLaa69p7ty5mj9/vrZv365Ro0YpNzdXlZWVZpcWdTZv3qz8/Hxt3bpVhYWFamlp0eTJk1VfXx9sM2fOHK1Zs0ZvvPGGNm/erPLyct10000mVh193n//ff32t7/V5ZdfHnKdvu85X331la6++mrFxsbqrbfeUmlpqX71q1/pvPPOC7Z55pln9MILL2jp0qV67733lJiYqNzcXDU2NppYeXT45S9/qSVLlmjx4sX6+OOP9ctf/lLPPPOMfvOb3wTb0P/dp76+XqNGjdKLL77Y4f1w+vr222/X7t27VVhYqLVr1+qdd97R/fff31sfIaKdrv+PHTum7du36/HHH9f27dv1xz/+UXv37tX3vve9kHb0/9k70+//gNWrV2vr1q0aPHhwu3v0fw8y0C3Gjx9v5OfnB9/7fD5j8ODBxsKFC02sqm+orKw0JBmbN282DMMwampqjNjYWOONN94Itvn4448NSUZRUZFZZUaVuro64+KLLzYKCwuNb33rW8aDDz5oGAZ939PmzZtnfPOb3+z0vt/vN9LT041nn302eK2mpsZwuVzGH/7wh94oMarl5eUZ99xzT8i1m266ybj99tsNw6D/e5IkY/Xq1cH34fR1aWmpIcl4//33g23eeustw2azGV988UWv1R4NTu3/jhQXFxuSjAMHDhiGQf93p876//PPPzfOP/98o6SkxLjggguM5557LniP/u9ZjEB1g+bmZm3btk2TJk0KXrPb7Zo0aZKKiopMrKxvqK2tlSSlpqZKkrZt26aWlpaQn8ell16qoUOH8vPoJvn5+crLywvpY4m+72l//vOfNXbsWP3gBz9QWlqarrzySr388svB+2VlZfJ4PCH9n5KSogkTJtD/3eAb3/iG1q9fr08++USS9NFHH+ndd9/Vd7/7XUn0f28Kp6+LiorUr18/jR07Nthm0qRJstvteu+993q95mhXW1srm82mfv36SaL/e5rf79edd96phx56SF//+tfb3af/e1aM2QVEgyNHjsjn82nQoEEh1wcNGqQ9e/aYVFXf4Pf7NXv2bF199dUaMWKEJMnj8cjpdAb/EA8YNGiQPB6PCVVGl1WrVmn79u16//33292j73vW/v37tWTJEs2dO1c/+clP9P777+uBBx6Q0+nUtGnTgn3c0Z9F9P+5e+SRR+T1enXppZfK4XDI5/PpF7/4hW6//XZJov97UTh97fF4lJaWFnI/JiZGqamp/Dy6WWNjo+bNm6fbbrtNbrdbEv3f0375y18qJiZGDzzwQIf36f+eRYBCRMvPz1dJSYneffdds0vpEw4dOqQHH3xQhYWFiouLM7ucPsfv92vs2LF66qmnJElXXnmlSkpKtHTpUk2bNs3k6qLf66+/rldffVUrV67U17/+de3YsUOzZ8/W4MGD6X/0WS0tLfqXf/kXGYahJUuWmF1On7Bt2zY9//zz2r59u2w2m9nl9ElM4esGAwYMkMPhaLfT2OHDh5Wenm5SVdFv5syZWrt2rTZu3KghQ4YEr6enp6u5uVk1NTUh7fl5nLtt27apsrJSo0ePVkxMjGJiYrR582a98MILiomJ0aBBg+j7HpSRkaHs7OyQa5dddpkOHjwoScE+5s+invHQQw/pkUce0a233qqRI0fqzjvv1Jw5c7Rw4UJJ9H9vCqev09PT223k1Nraqurqan4e3SQQng4cOKDCwsLg6JNE//ekv/3tb6qsrNTQoUODfxcfOHBA//7v/65hw4ZJov97GgGqGzidTo0ZM0br168PXvP7/Vq/fr1ycnJMrCw6GYahmTNnavXq1dqwYYOysrJC7o8ZM0axsbEhP4+9e/fq4MGD/DzO0be//W3t2rVLO3bsCL7Gjh2r22+/Pfhr+r7nXH311e227P/kk090wQUXSJKysrKUnp4e0v9er1fvvfce/d8Njh07Jrs99K9Nh8Mhv98vif7vTeH0dU5OjmpqarRt27Zgmw0bNsjv92vChAm9XnO0CYSnTz/9VH/961/Vv3//kPv0f8+58847tXPnzpC/iwcPHqyHHnpIb7/9tiT6v8eZvYtFtFi1apXhcrmM5cuXG6Wlpcb9999v9OvXz/B4PGaXFnVmzJhhpKSkGJs2bTIqKiqCr2PHjgXbTJ8+3Rg6dKixYcMG44MPPjBycnKMnJwcE6uOXm134TMM+r4nFRcXGzExMcYvfvEL49NPPzVeffVVIyEhwVixYkWwzdNPP23069fPePPNN42dO3caN954o5GVlWU0NDSYWHl0mDZtmnH++ecba9euNcrKyow//vGPxoABA4yHH3442Ib+7z51dXXGhx9+aHz44YeGJOPXv/618eGHHwZ3eQunr6dMmWJceeWVxnvvvWe8++67xsUXX2zcdtttZn2kiHK6/m9ubja+973vGUOGDDF27NgR8ndxU1NT8Bn0/9k70+//U526C59h0P89iQDVjX7zm98YQ4cONZxOpzF+/Hhj69atZpcUlSR1+Fq2bFmwTUNDg/Fv//ZvxnnnnWckJCQY//zP/2xUVFSYV3QUOzVA0fc9a82aNcaIESMMl8tlXHrppcbvfve7kPt+v994/PHHjUGDBhkul8v49re/bezdu9ekaqOL1+s1HnzwQWPo0KFGXFycceGFFxo//elPQ/7BSP93n40bN3b4Z/20adMMwwivr7/88kvjtttuM5KSkgy3223cfffdRl1dnQmfJvKcrv/Lyso6/bt448aNwWfQ/2fvTL//T9VRgKL/e47NMNocoQ4AAAAA6BRroAAAAAAgTAQoAAAAAAgTAQoAAAAAwkSAAgAAAIAwEaAAAAAAIEwEKAAAAAAIEwEKAAAAAMJEgAIAAACAMBGgAAAAACBMBCgAAAAACBMBCgAAAADC9P8D/+8PbuAfWTAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "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())" + "import matplotlib.pyplot as plt\n", + "results = GV_KNN.cv_results_\n", + "mse = -results['mean_test_score']\n", + "k_values = results['param_n_neighbors'].data\n", + "plt.figure(figsize=(10, 6))\n", + "plt.plot(k_values, mse, marker='o', linestyle='-')\n", + "plt.show()" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "IPoDRkcMlMAr", - "outputId": "9892f42f-e65f-46c0-eeed-77ce32f6a7eb" + "id": "3aOBO56I8Js8" }, - "outputs": [], "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)" + "The code shows that the elboq point occurs around n=30." ] }, { @@ -1538,7 +6455,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 75, "metadata": { "id": "bJk1-9VhlRL6" }, @@ -1551,7 +6468,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 76, "metadata": { "id": "sZVPMR9Wlo7-" }, @@ -1567,11 +6484,24 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 77, "metadata": { - "id": "vd1fDjQiltP4" + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vd1fDjQiltP4", + "outputId": "54545c64-073b-41c5-d03a-cc9cbff204f2" }, - "outputs": [], + "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", @@ -1582,7 +6512,7 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 78, "metadata": { "id": "ZIf94WLMlv04" }, @@ -1594,15 +6524,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 79, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "FX5DTKqslxWf", - "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8" + "outputId": "d2353bcd-1508-469b-e4a4-9344af25a2cc" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Train the model\n", "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)" @@ -1610,15 +6551,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 80, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OVW2qpNsmGVq", - "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a" + "outputId": "36e4620e-9823-4b12-d6d2-509c0bcf2a88" }, - "outputs": [], + "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" + ] + } + ], "source": [ "# Make predictions on the test set\n", "pred9 = model9.predict(X_test_scaled).flatten()" @@ -1626,7 +6575,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 81, "metadata": { "id": "CqRmjMj2maJY" }, @@ -1645,15 +6594,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 82, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "5zuwkC1emmh3", - "outputId": "5d6a0e05-3112-4d27-f5fb-ed665867b22d" + "outputId": "3154af15-1dba-4edc-9b4e-f012f6ff6886" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.7525331773064208\n", + "MAE: 1.7070852219826735\n", + "MAPE: 0.011166669166884299\n", + "Accuracy: 0.901060070671378\n", + "Precision: 0.9446640316205533\n", + "Confusion Matrix:\n", + " [[558 42]\n", + " [ 98 717]]\n", + "Recall: 0.8797546012269939\n", + "F1 Score: 0.9110546378653113\n" + ] + } + ], "source": [ "# Print the evaluation metrics\n", "print(\"RMSE:\", rmse9)\n", @@ -1677,7 +6643,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 83, "metadata": { "id": "nCoyUanhnDKw" }, @@ -1690,7 +6656,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 84, "metadata": { "id": "ThcXESVEVv0U" }, @@ -1706,7 +6672,7 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 85, "metadata": { "id": "uACvajfImrbB" }, @@ -1725,11 +6691,24 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 86, "metadata": { - "id": "r066pVYpnXH5" + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "r066pVYpnXH5", + "outputId": "faddb972-58cc-43a7-eb04-4829ec65f019" }, - "outputs": [], + "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": [ "# Create an LSTM model\n", "model = Sequential()\n", @@ -1739,7 +6718,7 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 87, "metadata": { "id": "YpSfHu6gov35" }, @@ -1751,15 +6730,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 88, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "0vHjcluaoxzP", - "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933" + "outputId": "8ca3e888-84d1-4c79-e045-cfa9d3e76d5f" }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 88, + "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)" @@ -1767,15 +6757,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 89, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "gEE06_TjozYv", - "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4" + "outputId": "5a39a4df-0a56-45f5-ac4b-c2b00f0f15d0" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m44/44\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step\n" + ] + } + ], "source": [ "# Make predictions on the test set\n", "y_pred = model.predict(X_test_reshaped).flatten()" @@ -1783,7 +6781,7 @@ }, { "cell_type": "code", - "execution_count": 113, + "execution_count": 90, "metadata": { "id": "7k6C8DrxpB_Q" }, @@ -1802,15 +6800,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 91, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "i_6-UUDhpi0c", - "outputId": "3dcc5761-03b6-4b52-dfe6-08dece835c8d" + "outputId": "af51da10-aedc-479d-80ca-96880408422c" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 11.43451426022395\n", + "MAE: 9.387460991819042\n", + "MAPE: 0.1689158970124316\n", + "Accuracy: 0.9957325746799431\n", + "Precision: 0.9965277777777778\n", + "Recall: 0.9930795847750865\n", + "F1 Score: 0.9948006932409013\n", + "Confusion Matrix:\n", + " [[826 2]\n", + " [ 4 574]]\n" + ] + } + ], "source": [ "# Print evaluation metrics\n", "print(\"RMSE:\", rmse10)\n", @@ -1825,24 +6840,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 92, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "qpWPtph9CGip", - "outputId": "c099cb8d-96af-4223-f499-743040aecdf1" + "outputId": "746d4c8b-bd76-4873-d9b3-b21e078b15bd" }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABE9klEQVR4nO3deXhM9+LH8c8kZBFJrNmKiKWiqP0GRauClqqtiqvXllu9FbXVbWmLul2Utm6L4rYlVENUieqGNIq217XH0qo1liJBySIIkvP7w2N+HQkyMjGT0/freeZ5mu85c84nyan55DvnnLEYhmEIAADApNycHQAAAKAoUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAOM2rr74qi8WiM2fOFPm+Vq5cqQYNGsjLy0sWi0VpaWlFvs/ibN68ebJYLDp8+LCzowCFRtkBisD1F4o/PgICAtSmTRt9++23dz3Pl19+qc6dOyswMFAeHh4qV66cWrdurXfffVcZGRl3Pc/d9vvvv+vJJ5+Ut7e3PvjgAy1YsEA+Pj63fd7MmTNlsVgUERFxF1ICKColnB0AMLN//etfCgsLk2EYSk1N1bx589SxY0d9+eWXeuyxx4p8/7m5uYqKitK8efNUr149DRkyRJUrV1ZmZqY2bNigV155Rd98840SExOLPIszbd68WZmZmXrttdcUGRlZ4OfFxsaqatWq2rRpkw4cOKAaNWoUYUrX8re//U29e/eWp6ens6MAhUbZAYrQo48+qiZNmli/joqKUmBgoBYtWuSQspObm6vLly/Ly8sr3+VTpkzRvHnzNHLkSL377ruyWCzWZcOHD9fJkyf1ySefFGofxcGpU6ckSWXKlCnwc5KTk/Xf//5Xy5Yt0zPPPKPY2FhNmDChiBIWTlZWVoFmquzh7u4ud3d3h24TcBbexgLuojJlysjb21slStj+nfHOO++oRYsWKl++vLy9vdW4cWN9/vnneZ5vsVg0dOhQxcbGqk6dOvL09NTKlSvz3deFCxc0efJk1alTR2+//bZN0bkuODhYL774YoH3cSc5a9WqJS8vLzVu3Fjr16/PN2taWpoGDBigMmXKyN/fXwMHDtSFCxfy/yHeYMmSJWrcuLG8vb1VoUIFPfXUUzp+/Lh1+UMPPaT+/ftLkpo2bSqLxaIBAwbcdruxsbEqW7asOnXqpCeeeEKxsbE3zT5y5EhVrVpVnp6eqlSpkvr162dzHtKlS5f06quv6t5775WXl5eCg4PVvXt3HTx4UJK0du1aWSwWrV271mbbhw8flsVi0bx586xjAwYMUOnSpXXw4EF17NhRvr6+6tu3ryTphx9+UM+ePVWlShV5enqqcuXKGjlypC5evJgn96+//qonn3xSFStWlLe3t2rVqqWXX37Zuvxm5+x8++23atWqlXx8fOTr66tOnTrp559/tlknJSVFAwcOVKVKleTp6ang4GB16dKF83/gNMzsAEUoPT1dZ86ckWEYOnXqlKZPn67z58/rqaeeslnv/fff1+OPP66+ffvq8uXLiouLU8+ePfXVV1+pU6dONuuuWbNGn332mYYOHaoKFSqoatWq+e77xx9/VFpamkaPHm33X+g324c9OdetW6fFixdr2LBh8vT01MyZM/XII49o06ZNqlu3rs26Tz75pMLCwjRp0iRt27ZNH3/8sQICAjR58uRb5pw3b54GDhyopk2batKkSUpNTdX777+vn376Sdu3b1eZMmX08ssvq1atWvrwww+tbytWr179tj+D2NhYde/eXR4eHurTp49mzZqlzZs3q2nTptZ1zp8/r1atWmnPnj0aNGiQGjVqpDNnzmjFihX67bffVKFCBeXk5Oixxx5TYmKievfureHDhyszM1MJCQnavXt3gbLc6OrVq+rQoYNatmypd955R6VKlZJ0rfhduHBBzz77rMqXL69NmzZp+vTp+u2337RkyRLr83fu3KlWrVqpZMmSGjx4sKpWraqDBw/qyy+/1BtvvHHT/S5YsED9+/dXhw4dNHnyZF24cEGzZs1Sy5YttX37dutx0qNHD/3888967rnnVLVqVZ06dUoJCQk6evToTY9XoEgZABwuJibGkJTn4enpacybNy/P+hcuXLD5+vLly0bdunWNhx9+2GZckuHm5mb8/PPPt83w/vvvG5KM5cuX24xfvXrVOH36tM0jNze3QPuwJ6ckY8uWLdaxI0eOGF5eXka3bt2sYxMmTDAkGYMGDbJ5frdu3Yzy5cvf8vu7fPmyERAQYNStW9e4ePGidfyrr74yJBnjx4+3jl3/fWzevPmW27xuy5YthiQjISHBMAzDyM3NNSpVqmQMHz7cZr3x48cbkoxly5bl2cb1n+nc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ffvtt6pYsaL279+vsmXLWteZMmWKpk2bpvnz5yssLEzjxo1Thw4d9MsvvzDbBAAACvZxEWFhYQXbmMWiQ4cOFTrUdWPGjNFPP/2kH374Id/lhmEoJCREzz//vEaPHi1JSk9PV2BgoObNm6fevXsXaD98XMTdVVxvZ06uvIrjMeaquSSOsRu5ai6JY8xexeLjIm48T+duWbFihTp06KCePXtq3bp1uueeezRkyBA9/fTT1lwpKSmKjIy0Psff318RERHasGHDTctOdna2srOzrV9nZGQU7TcCAACcxmH32SkKhw4d0qxZs1SzZk2tWrVKzz77rIYNG6b58+dLklJSUiRdu8fPHwUGBlqX5WfSpEny9/e3PipXrlx03wQAAHAqu6/GkqTffvtNK1as0NGjR3X58mWbZVOnTnVIMEnKzc1VkyZN9Oabb0qSGjZsqN27d2v27Nnq37//HW937NixGjVqlPXrjIwMCg8AACZld9lJTEzU448/rmrVqunXX39V3bp1dfjwYRmGoUaNGjk0XHBwsO677z6bsdq1a2vp0qWSpKCgIElSamqqgoODreukpqbe8gaHnp6e8vT0dGhWAADgmux+G2vs2LEaPXq0du3aJS8vLy1dulTHjh3Tgw8+qJ49ezo03AMPPJDnIyj27dun0NBQSddOnA4KClJiYqJ1eUZGhjZu3KjmzZs7NAsAACimDDuVLl3aOHDggGEYhlGmTBlj9+7dhmEYRlJSkhEaGmrv5m5p06ZNRokSJYw33njD2L9/vxEbG2uUKlXK+PTTT63rvPXWW0aZMmWML774wti5c6fRpUsXIywszLh48WKB95Oenm5IMtLT0x2a3zAM49o56M55FMdczsxGrj/HMeaquTjGik8ujjHH57pTBX39tvttLB8fH+t5OsHBwTp48KDq1KkjSTpz5owje5iaNm2q+Ph4jR07Vv/6178UFham9957T3379rWu88ILLygrK0uDBw9WWlqaWrZsqZUrV3KPHQAAIKmA99n5o65du6pTp056+umnNXr0aH3xxRcaMGCAli1bprJly+q7774rqqxFhvvs3F23O+Jc9T4Q5MqrOB5jrppL4hi7kavmkjjG7GVf0yg4h95nR5LOnj2rcuXKaerUqTp//rwkaeLEiTp//rwWL16smjVrOvRKLAAAAEcocNkJCQlR165dFRUVpXbt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mze/23EBAIALcumZnejoaC1cuFBffPGFfH19refh+Pv7y9vbW/7+/oqKitKoUaNUrlw5+fn56bnnnlPz5s0LfCUWAAAwN5cuO7NmzZIkPfTQQzbjMTExGjBggCTp3//+t9zc3NSjRw9lZ2erQ4cOmjlz5l1OCgAAXFWxus9OUeE+O3dXcb0PBLnyKo7HmKvmkjjGbuSquSSOMXtxnx0AAIAiRNkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmZpqy88EHH6hq1ary8vJSRESENm3a5OxIAADABZii7CxevFijRo3ShAkTtG3bNtWvX18dOnTQqVOnnB0NAAA4mSnKztSpU/X0009r4MCBuu+++zR79myVKlVKc+fOdXY0AADgZMW+7Fy+fFlbt25VZGSkdczNzU2RkZHasGGDE5MBAABXUMLZAQrrzJkzysnJUWBgoM14YGCgfv3113yfk52drezsbOvX6enpkqSMjIyiC+oErvrtkMs+rppLct1s5LIPueznqtn+bLmuv24bhnHL9Yp92bkTkyZN0sSJE/OMV65c2Qlpio6/v7MT5I9c9nHVXJLrZiOXfchlP1fN9mfNlZmZKf9b7KTYl50KFSrI3d1dqampNuOpqakKCgrK9zljx47VqFGjrF/n5ubq7NmzKl++vCwWS5HmLaiMjAxVrlxZx44dk5+fn7Pj2HDVbOSyj6vmklw3G7nsQy77uWo2V81lGIYyMzMVEhJyy/WKfdnx8PBQ48aNlZiYqK5du0q6Vl4S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y5fl7u6uoKAgl/l8KgD/j7ID/AmcP39eixcv1rPPPqtOnTpp3rx5edb58ssv1bRpU3l5ealChQrq1q2bdVl2drZefPFFVa5cWZ6enqpRo4bmzJkjSZo3b57KlCljs63ly5fLYrFYv3711VfVoEEDffzxxwoLC5OXl5ckaeXKlWrZsqXKlCmj8uXL67HHHtPBgwdttvXbb7+pT58+KleunHx8fNSkSRNt3LhRhw8flpubm7Zs2WKz/nvvvafQ0NB8P+n6qaee0sWLF7V06VKb8eTkZK1du1ZRUVE6ePCgunTposDAQJUuXVpNmzbVd999Z7N+1apV9dprr6lfv37y8/PT4MGD87yNlZOTo6ioKIWFhcnb21u1atXS+++/n89vR5o4caIqVqwoPz8//eMf/7hlGczOztbo0aN1zz33yMfHRxEREVq7dq11+ZEjR9S5c2eVLVtWPj4+qlOnjr755pubbg/4M6DsAH8Cn332mcLDw1WrVi099dRTmjt3rv54i62vv/5a3bp1U8eOHbV9+3YlJibqL3/5i3V5v379tGjRIk2bNk179uzRf/7zH7vvOnvgwAEtXbpUy5YtsxaCrKwsjRo1Slu2bFFiYqLc3NzUrVs3a1E5f/68HnzwQR0/flwrVqzQjh079MILLyg3N1dVq1ZVZGSkYmJibPYTExOjAQMGyM0t7z9vFSpUUJcuXTR37lyb8Xnz5qlSpUpq3769zp8/r44dOyoxMVHbt2/XI488os6dO+vo0aM2z3nnnXdUv359bd++XePGjcuzr9zcXFWqVElLlizRL7/8ovHjx+ull17SZ599ZrNeYmKi9uzZo7Vr12rRokVatmyZJk6ceNOf49ChQ7VhwwbFxcVp586d6tmzpx555BHt379fkhQdHa3s7GytX79eu3bt0uTJk7lDMODEDyEFcJe0aNHCeO+99wzDMIwrV64YFSpUML7//nvr8ubNmxt9+/bN97l79+41JBkJCQn5Lo+JiTH8/f1txuLj440//vMyYcIEo2TJksapU6dumfP06dOGJGPXrl2GYRjGf/7zH8PX19f4/fff811/8eLFRtmyZY1Lly4ZhmEYW7duNSwWi5GcnHzTfaxcudKwWCzGoUOHDMO49inOoaGhxiuvvHLT59SpU8eYPn269evQ0FCja9euNuskJycbkozt27ffdDvR0dFGjx49rF/379/fKFeunJGVlWUdmzVrllG6dGkjJyfHMAzbT6Q/cuSI4e7ubhw/ftxmu23btjXGjh1rGIZh1KtXz3j11VdvmgH4M2JmBzC5vXv3atOmTerTp48kqUSJEurVq5f1bShJSkpKUtu2bfN9flJSktzd3fXggw8WKkdoaKgqVqxoM7Z//3716dNH1apVk5+fn6pWrSpJ1lmUpKQkNWzYUOXKlct3m127dpW7u7vi4+MlXZuhadOmjXU7+WnXrp0qVapknRFKTEzU0aNHNXDgQEnXZpNGjx6t2rVrq0yZMipdurT27NmTZ2anSZMmt/2eP/jgAzVu3FgVK1ZU6dKl9eGHH+bZTv369VWqVCnr182bN9f58+d17NixPNvbtWuXcnJydO+999p8rtO6deusb/8NGzZMr7/+uh544AFNmDBBO3fuvG1OwOwoO4DJzZkzR1evXlVISIhKlCihEiVKaNasWVq6dKnS09MlSd7e3jd9/q2WSZKbm5vNW2KSdOXKlTzr+fj45Bnr3Lmzzp49q48++kgbN27Uxo0bJf3/Ccy327eHh4f69eunmJgYXb58WQsXLtSgQYNum3fAgAGaP3++cnNzFRMTozZt2qhatWqSpNGjRys+Pl5vvvmmfvjhByUlJalevXp5zqPJ7/v5o7i4OI0ePVpRUVFavXq1kpKSNHDgwEKdnH3+/Hm5u7tr69atSkpKsj727NljPR/o73//uw4dOqS//e1v2rVrl5o0aaLp06ff8T4BM6DsACZ29epVffLJJ3r33XdtXhx37NihkJAQLVq0SJJ0//33KzExMd9t1KtXT7m5uVq3bl2+yytWrKjMzExlZWVZxwpyr5nff/9de/fu1SuvvKK2bduqdu3aOnfunM06999/v5KSknT27Nmbbufvf/+7vvvuO82cOVNXr15V9+7db7vvgQMH6tixY1q2bJni4+MVFRVlXfbTTz9pwIAB6tatm+rVq6egoCAdPnz4ttu80U8//aQWLVpoyJAhatiwoWrUqJHn5GtJ2rFjh83VYf/73/9UunRpVa5cOc+6DRs2VE5Ojk6dOqUaNWrYPIKCgqzrVa5cWf/4xz+0bNkyPf/88/roo4/szg+YCWUHMLGvvvpK586dU1RUlOrWrWvz6NGjh/WtrAkTJmjRokWaMGGC9uzZYz2xVbp25VH//v01aNAgLV++3Hrl0vUTbSMiIlSqVCm99NJLOnjwoBYuXJjv1V43Klu2rMqXL68PP/xQBw4c0Jo1azRq1Cibdfr06aOgoCB17dpVP/30kw4dOqSlS5dqw4YN1nVq166tZs2a6cUXX1SfPn1uOxskSWFhYXr44Yc1ePBgeXp62hSkmjVrWk+i3rFjh/7617/me2XX7dSsWVNbtmzRqlWrtG/fPo0bN06bN2/Os97ly5cVFRWlX375Rd98840mTJigoUOH5nuC9b333qu+ffuqX79+WrZsmZKTk7Vp0yZNmjRJX3/9tSRpxIgRWrVqlZKTk7Vt2zZ9//33ql27tt35ATOh7AAmNmfOHEVGRsrf3z/Psh49emjLli3auXOnHnroIS1ZskQrVqxQgwYN9PDDD2vTpk3WdWfNmqUnnnhCQ4YMUXh4uJ5++mnrTE65cuX06aef6ptvvlG9evW0aNEivfrqq7fN5ubmpri4OG3dulV169bVyJEj9fbbb9us4+HhodWrVysgIEAdO3ZUvXr19NZbb8nd3d1mvaioKF2+fPm2b2Hd+Jxz587pr3/9q/VSeEmaOnWqypYtqxYtWqhz587q0KGDGjVqVODtXvfMM8+oe/fu6tWrlyIiIvT7779ryJAhedZr27atatasqdatW6tXr156/PHHb/nzi4mJUb9+/fT888+rVq1a6tq1qzZv3qwqVapIunbJe3R0tGrXrq1HHnlE9957r2bOnGl3fsBMLMaNb7YDQDHz2muvacmSJZyMCyBfzOwAKLbOnz+v3bt3a8aMGXruueecHQeAi6LsACi2hg4dqsaNG+uhhx6y6y0sAH8uvI0FAABMjZkdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgav8H/GzqtXu8YtUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "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", + "accuracies = [accuracy1*100, accuracy2*100, accuracy2_1*100, accuracy3*100, accuracy4*100, accuracy5*100, accuracy6*100, accuracy7*100, accuracy8*100, accuracy8_1*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", + "labels = ['1', '2', '2_1', '3', '4', '5', '6', '7', '8', '8_1', '9', '10']\n", "\n", "# Plotting the bar graph\n", "plt.bar(labels, accuracies, color='blue')\n", @@ -1854,24 +6880,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 93, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "RFaaCNH6Cfoa", - "outputId": "67a8f358-e3ce-4ad2-9c78-ebc75902beb4" + "outputId": "e624dad4-1663-4a68-90ec-b569e5b0b46a" }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIKElEQVR4nO3dfVxUZf7/8fdwN+ANICh3BUpmqWlKoGZZ3lHepWmYeZPhzdpWWqmblbumZW2k3Wi5pNaWZGm2Vpq1SZqpVOIdhltmZqlpJmipIBoocP3+8Mv8HEEDBWY4vZ6Px3k8mutcc53PnDkO785cZ47NGGMEAABgUR6uLgAAAKAqEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAWM7jjz8um82mX3/9tcq3lZqaqtatW8vX11c2m01Hjx6t8m0CqBjCDlCDpKSkyGazOS0hISHq3Lmzli9fXu31fPjhh+rdu7dCQ0Pl4+OjoKAg3XjjjXr++eeVm5tb7fVUt99++00DBgyQn5+fkpOT9eabb6p27dpl9j37vfPy8tIll1yiYcOGaf/+/aX6d+rUSTabTU2aNClzvJUrVzrGevfdd53Wff311+rfv78aNmwoX19fXXLJJbrppps0a9Ysp36NGjUqdTyVLN27d7/AvQK4Hy9XFwCg4qZOnaro6GgZY5Sdna2UlBT17NlTH374oW655ZYq335xcbFGjhyplJQUtWzZUvfdd58iIyN17Ngxpaena9KkSfr444+1atWqKq/FlTZt2qRjx47pySefVHx8fLmeU/Le5efna/369UpJSdEXX3yhb775Rr6+vk59fX199cMPP2jjxo1q27at07oFCxbI19dX+fn5Tu3r1q1T586dFRUVpVGjRiksLEz79u3T+vXr9eKLL+r+++936t+6dWv97W9/K1VnREREuV4PUBMQdoAaqEePHoqLi3M8HjlypEJDQ/X2229XStgpLi7WyZMnS/3xLTF9+nSlpKRo3Lhxev7552Wz2RzrHnzwQR04cEDz58+/qG3UBAcPHpQkBQYGlvs5Z753f/nLX1S/fn1NmzZNy5Yt04ABA5z6Nm7cWIWFhXr77bedwk5+fr6WLFmiXr166b333nN6zj//+U8FBARo06ZNpeoqqfdMl1xyie68885y1w/URHyNBVhAYGCg/Pz85OXl/P8vzz33nK677joFBwfLz89PsbGxpb7ykCSbzaYxY8ZowYIFuuqqq2S325Wamlrmtk6cOKFp06bpqquu0rPPPusUdEqEh4frkUceKfc2LqTOK6+8Ur6+voqNjVVaWlqZtR49elTDhg1TYGCgAgICNHz4cJ04caLsnXiWxYsXKzY2Vn5+fqpfv77uvPNOp6+bOnXqpMTERElSmzZtZLPZNGzYsHKNfaYbbrhBkvTjjz+WuX7QoEF65513VFxc7Gj78MMPdeLEiVLhqGScq666qswAFhISUuH6ACsg7AA1UE5Ojn799VcdOnRI27Zt07333qu8vLxS/4f+4osvKiYmRlOnTtXTTz8tLy8v3X777frvf/9baszPPvtM48aN0x133KEXX3xRjRo1KnPbX3zxhY4ePapBgwbJ09OzQnWfaxsVqXPt2rUaO3as7rzzTk2dOlW//fabunfvrm+++aZU3wEDBujYsWNKSkrSgAEDlJKSoieeeOIP60xJSdGAAQPk6emppKQkjRo1Su+//746dOjgmID8j3/8Q3fffbek019Nvfnmm/rrX/9aof0hSXv27JEk1atXr8z1gwcP1oEDB7RmzRpH28KFC9W1a9cyw0vDhg2VkZFR5v4oy6lTp/Trr7+WWn7//fcKvxbAbRkANca8efOMpFKL3W43KSkppfqfOHHC6fHJkydNixYtTJcuXZzaJRkPDw+zbdu2P6zhxRdfNJLM0qVLndoLCwvNoUOHnJbi4uJybaMidUoymzdvdrT99NNPxtfX1/Tr18/RNmXKFCPJjBgxwun5/fr1M8HBwed9fSdPnjQhISGmRYsW5vfff3e0f/TRR0aSmTx5sqOt5P3YtGnTecc8s++nn35qDh06ZPbt22feffdd06BBA2O3282+ffuc+nfs2NFcddVVxhhj4uLizMiRI40xxhw5csT4+PiYN954w6xevdpIMosXL3Y8b8WKFcbT09N4enqa9u3bm4cffth88skn5uTJk6VqatiwYZnHkySTlJT0h68JqCk4swPUQMnJyVq5cqVWrlypt956S507d9Zf/vIXvf/++079/Pz8HP995MgR5eTk6IYbbtCWLVtKjdmxY0c1b978D7ddcpVVnTp1nNq//vprNWjQwGn57bffyrWNitTZvn17xcbGOh5HRUXp1ltv1SeffKKioiKnvvfcc4/T4xtuuEG//fbbea8U27x5sw4ePKj77rvPaT5Rr1691LRp0zLPNlVEfHy8GjRooMjISPXv31+1a9fWsmXLdOmll57zOYMHD9b777+vkydP6t1335Wnp6f69etXZt+bbrpJ6enp6tOnj7Zu3arp06erW7duuuSSS7Rs2bJS/du1a+c4ls5cBg0adFGvE3AnTFAGaqC2bds6TVAeNGiQYmJiNGbMGN1yyy3y8fGRJH300Ud66qmnlJmZqYKCAkf/subZREdHl2vbdevWlSTl5eU5tV9++eVauXKlJGn+/Pl68803y72NitRZ1qXYV1xxhU6cOKFDhw4pLCzM0R4VFeXUr+SroiNHjsjf37/MWn766SdJ0pVXXllqXdOmTfXFF1+U+bzySk5O1hVXXKGcnBy9/vrrSktLk91uP+9zBg4cqIceekjLly/XggULdMsttzjeh7K0adPGEY62bt2qJUuWaMaMGerfv78yMzOdAmf9+vXLfSUZUFNxZgewAA8PD3Xu3FkHDhzQzp07JUmff/65+vTpI19fX7388sv6+OOPtXLlSg0ePFjGmFJjnHl25XyaNm0qSaXmhNSpU0fx8fGKj4/XZZddVuZzy9pGReusiHPNKbrYcS9G27ZtFR8fr4SEBC1btkwtWrTQ4MGDS4XHM4WHh6tTp056/vnnlZaWpsGDB5drWz4+PmrTpo2efvppzZ49W6dOndLixYsr66UANQZhB7CIwsJCSf//jMt7770nX19fffLJJxoxYoR69OhRKf8Hf8MNNyggIECLFi1yukLoQlW0zpIwd6bvv/9etWrVUoMGDS66noYNG0qSduzYUWrdjh07HOsrQ8kE6F9++UX/+te/ztt38ODB+vzzz+Xv76+ePXtWeFslZwIPHDhwQbUCNRlhB7CAU6dOacWKFfLx8VGzZs0knf5DarPZnOax7NmzR0uXLr2obdWqVUsPP/ywvvnmGz366KNlniWpyJmTitaZnp7uNJdn3759+uCDD3TzzTdX+OqwssTFxSkkJERz5sxx+kpt+fLl2r59u3r16nXR2zhTp06d1LZtW82cObPUDwSeqX///poyZYpefvllx9eUZVm9enWZ+//jjz+WVPbXc4DVMWcHqIGWL1+u7777TtLpH4pbuHChdu7cqUcffdQxF6VXr1564YUX1L17dw0ePFgHDx5UcnKyLr/8cv3vf/+7qO0/+uij2r59u5599lmtWLFCCQkJuvTSS3XkyBFt2bJFixcvVkhISLl+MLCidbZo0ULdunXTAw88ILvdrpdfflmSynVJeXl4e3tr2rRpGj58uDp27KhBgwYpOzvbcan8uHHjKmU7Z5owYYJuv/12paSklJpUXSIgIECPP/74H451//3368SJE+rXr5+aNm2qkydPat26dXrnnXfUqFEjDR8+3Kn//v379dZbb5Uap06dOurbt++FvBzA/bjyUjAAFVPWpee+vr6mdevWZvbs2U6XehtjzGuvvWaaNGli7Ha7adq0qZk3b57jsuwzSTKjR4+ucD1LliwxPXv2NA0aNDBeXl4mMDDQdOjQwTz77LPm6NGj5d5GRet86623HP1jYmLM6tWrnfqVPPfQoUNO7SX7b/fu3X/42t555x0TExNj7Ha7CQoKMkOGDDE///xzmeNV5NLzsvoWFRWZxo0bm8aNG5vCwkJjjPOl5+dS1qXny5cvNyNGjDBNmzY1derUMT4+Pubyyy83999/v8nOznZ6/vkuPW/YsOEfviagprAZ48KZegBQATabTaNHj/7D+S0AcCbm7AAAAEsj7AAAAEsj7AAAAEvjaiwANQZTDAFcCM7sAAAASyPsAAAAS+NrLEnFxcX65ZdfVLdu3TJvPAgAANyPMUbHjh1TRESEPDzOff6GsCPpl19+UWRkpKvLAAAAF2Dfvn269NJLz7mesCOpbt26kk7vrJKf2gcAAO4tNzdXkZGRjr/j50LYkRxfXfn7+xN2AACoYf5oCgoTlAEAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKW5NOykpaWpd+/eioiIkM1m09KlS0v12b59u/r06aOAgADVrl1bbdq00d69ex3r8/PzNXr0aAUHB6tOnTpKSEhQdnZ2Nb4KAADgzlwado4fP65WrVopOTm5zPU//vijOnTooKZNm2rNmjX63//+p8cee0y+vr6OPuPGjdOHH36oxYsXa+3atfrll1902223VddLAAAAbs5mjDGuLkI6/euHS5YsUd++fR1tAwcOlLe3t958880yn5OTk6MGDRpo4cKF6t+/vyTpu+++U7NmzZSenq5rr722XNvOzc1VQECAcnJy+AVlAABqiPL+/XbbOTvFxcX673//qyuuuELdunVTSEiI2rVr5/RVV0ZGhk6dOqX4+HhHW9OmTRUVFaX09PRzjl1QUKDc3FynBQAAWJPbhp2DBw8qLy9PzzzzjLp3764VK1aoX79+uu2227R27VpJUlZWlnx8fBQYGOj03NDQUGVlZZ1z7KSkJAUEBDgW7ngOAIB1uW3YKS4uliTdeuutGjdunFq3bq1HH31Ut9xyi+bMmXNRY0+cOFE5OTmOZd++fZVRMgAAcENue9fz+vXry8vLS82bN3dqb9asmb744gtJUlhYmE6ePKmjR486nd3Jzs5WWFjYOce22+2y2+1VUjcAAHAvbntmx8fHR23atNGOHTuc2r///ns1bNhQkhQbGytvb2+tWrXKsX7Hjh3au3ev2rdvX631AgAA9+TSMzt5eXn64YcfHI93796tzMxMBQUFKSoqShMmTNAdd9yhG2+8UZ07d1Zqaqo+/PBDrVmzRpIUEBCgkSNHavz48QoKCpK/v7/uv/9+tW/fvtxXYv2Z2Z6wuWS7ZopbXAAIAPiTcGnY2bx5szp37ux4PH78eElSYmKiUlJS1K9fP82ZM0dJSUl64IEHdOWVV+q9995Thw4dHM+ZMWOGPDw8lJCQoIKCAnXr1k0vv/xytb8WAADgntzmd3Zc6c/6Ozuc2QEA1GQ1/nd2AAAAKgNhBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWJqXqwsAALg32xM2l23bTDEu2zasgzM7AADA0gg7AADA0vgaC27HVafMOV0OANbEmR0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBpLg07aWlp6t27tyIiImSz2bR06dJz9r3nnntks9k0c+ZMp/bDhw9ryJAh8vf3V2BgoEaOHKm8vLyqLRwAANQYLg07x48fV6tWrZScnHzefkuWLNH69esVERFRat2QIUO0bds2rVy5Uh999JHS0tJ09913V1XJAACghvFy5cZ79OihHj16nLfP/v37df/99+uTTz5Rr169nNZt375dqamp2rRpk+Li4iRJs2bNUs+ePfXcc8+VGY4AAMCfi1vP2SkuLtbQoUM1YcIEXXXVVaXWp6enKzAw0BF0JCk+Pl4eHh7asGHDOcctKChQbm6u0wIAAKzJrcPOtGnT5OXlpQceeKDM9VlZWQoJCXFq8/LyUlBQkLKyss45blJSkgICAhxLZGRkpdYNAADch9uGnYyMDL344otKSUmRzWar1LEnTpyonJwcx7Jv375KHR8AALgPtw07n3/+uQ4ePKioqCh5eXnJy8tLP/30k/72t7+pUaNGkqSwsDAdPHjQ6XmFhYU6fPiwwsLCzjm23W6Xv7+/0wIAAKzJpROUz2fo0KGKj493auvWrZuGDh2q4cOHS5Lat2+vo0ePKiMjQ7GxsZKkzz77TMXFxWrXrl211wwAANyPS8NOXl6efvjhB8fj3bt3KzMzU0FBQYqKilJwcLBTf29vb4WFhenKK6+UJDVr1kzdu3fXqFGjNGfOHJ06dUpjxozRwIEDuRILAABIcvHXWJs3b1ZMTIxiYmIkSePHj1dMTIwmT55c7jEWLFigpk2bqmvXrurZs6c6dOigV155papKBgAANYxLz+x06tRJxphy99+zZ0+ptqCgIC1cuLASqwIA1AS2Jyr34pWKMFPK/7cLrue2E5QBAAAqA2EHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYmkvDTlpamnr37q2IiAjZbDYtXbrUse7UqVN65JFH1LJlS9WuXVsRERG666679MsvvziNcfjwYQ0ZMkT+/v4KDAzUyJEjlZeXV82vBAAAuCuXhp3jx4+rVatWSk5OLrXuxIkT2rJlix577DFt2bJF77//vnbs2KE+ffo49RsyZIi2bdumlStX6qOPPlJaWpruvvvu6noJAADAzXm5cuM9evRQjx49ylwXEBCglStXOrX961//Utu2bbV3715FRUVp+/btSk1N1aZNmxQXFydJmjVrlnr27KnnnntOERERVf4aAACAe6tRc3ZycnJks9kUGBgoSUpPT1dgYKAj6EhSfHy8PDw8tGHDhnOOU1BQoNzcXKcFAABYU40JO/n5+XrkkUc0aNAg+fv7S5KysrIUEhLi1M/Ly0tBQUHKyso651hJSUkKCAhwLJGRkVVaOwAAcJ0aEXZOnTqlAQMGyBij2bNnX/R4EydOVE5OjmPZt29fJVQJAADckUvn7JRHSdD56aef9NlnnznO6khSWFiYDh486NS/sLBQhw8fVlhY2DnHtNvtstvtVVYzAABwH259Zqck6OzcuVOffvqpgoODnda3b99eR48eVUZGhqPts88+U3Fxsdq1a1fd5QIAADfk0jM7eXl5+uGHHxyPd+/erczMTAUFBSk8PFz9+/fXli1b9NFHH6moqMgxDycoKEg+Pj5q1qyZunfvrlGjRmnOnDk6deqUxowZo4EDB3IlFgAAkOTisLN582Z17tzZ8Xj8+PGSpMTERD3++ONatmyZJKl169ZOz1u9erU6deokSVqwYIHGjBmjrl27ysPDQwkJCXrppZeqpX4AAOD+XBp2OnXqJGPMOdefb12JoKAgLVy4sDLLAgAAFuLWc3YAAAAuFmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYWqWEnaNHj1bGMAAAAJWuwmFn2rRpeueddxyPBwwYoODgYF1yySXaunVrhcZKS0tT7969FRERIZvNpqVLlzqtN8Zo8uTJCg8Pl5+fn+Lj47Vz506nPocPH9aQIUPk7++vwMBAjRw5Unl5eRV9WQAAwKIqHHbmzJmjyMhISdLKlSu1cuVKLV++XD169NCECRMqNNbx48fVqlUrJScnl7l++vTpeumllzRnzhxt2LBBtWvXVrdu3ZSfn+/oM2TIEG3btk0rV67URx99pLS0NN19990VfVkAAMCivCr6hKysLEfY+eijjzRgwADdfPPNatSokdq1a1ehsXr06KEePXqUuc4Yo5kzZ2rSpEm69dZbJUnz589XaGioli5dqoEDB2r79u1KTU3Vpk2bFBcXJ0maNWuWevbsqeeee04REREVfXkAAMBiKnxmp169etq3b58kKTU1VfHx8ZJOh5OioqJKK2z37t3KyspyjC9JAQEBateundLT0yVJ6enpCgwMdAQdSYqPj5eHh4c2bNhQabUAAICaq8Jndm677TYNHjxYTZo00W+//eY4M/PVV1/p8ssvr7TCsrKyJEmhoaFO7aGhoY51WVlZCgkJcVrv5eWloKAgR5+yFBQUqKCgwPE4Nze3ssoGAABupsJndmbMmKExY8aoefPmWrlyperUqSNJOnDggO67775KL7AqJCUlKSAgwLGUfC0HAACsp8Jndry9vfXQQw+Vah83blylFFQiLCxMkpSdna3w8HBHe3Z2tlq3bu3oc/DgQafnFRYW6vDhw47nl2XixIkaP36843Fubi6BBwAAi7qg39l588031aFDB0VEROinn36SJM2cOVMffPBBpRUWHR2tsLAwrVq1ytGWm5urDRs2qH379pKk9u3b6+jRo8rIyHD0+eyzz1RcXHzeydJ2u13+/v5OCwAAsKYKh53Zs2dr/Pjx6tGjh44ePeqYlBwYGKiZM2dWaKy8vDxlZmYqMzNT0ulJyZmZmdq7d69sNpvGjh2rp556SsuWLdPXX3+tu+66SxEREerbt68kqVmzZurevbtGjRqljRs36ssvv9SYMWM0cOBArsQCAACSLiDszJo1S6+++qr+8Y9/yNPT09EeFxenr7/+ukJjbd68WTExMYqJiZEkjR8/XjExMZo8ebIk6eGHH9b999+vu+++W23atFFeXp5SU1Pl6+vrGGPBggVq2rSpunbtqp49e6pDhw565ZVXKvqyAACARVV4zs7u3bsd4eRMdrtdx48fr9BYnTp1kjHmnOttNpumTp2qqVOnnrNPUFCQFi5cWKHtAgCAP48Kn9mJjo52fO10ptTUVDVr1qwyagIAAKg0FT6zM378eI0ePVr5+fkyxmjjxo16++23lZSUpH//+99VUSMAAMAFq3DY+ctf/iI/Pz9NmjRJJ06c0ODBgxUREaEXX3xRAwcOrIoaAQAALliFw450+uabQ4YM0YkTJ5SXl1fqV4wBAADcxQWFnRK1atVSrVq1KqsWAACASlfhsBMdHS2bzXbO9bt27bqoggAAACpThcPO2LFjnR6fOnVKX331lVJTUzVhwoTKqgsA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AAAALlK5w07r1q315ptvSpI+//xzZWdnq0uXLo71P/74oyIiIiq/QgAAgItQ7gnKkydPVo8ePfSf//xHBw4c0LBhw5xuvrlkyRJdf/31VVIkAADAharQ7+xkZGRoxYoVCgsL0+233+60vnXr1mrbtm2lFwgAAHAxKnQj0GbNmqlZs2Zlrrv77rsrpSAAAIDKVO6wk5aWVq5+N9544wUXAwAAUNnKHXY6derkuPHnue4dWlNvBAoAAKyr3GGnXr16qlu3roYNG6ahQ4eqfv36VVkXAABApSj3pecHDhzQtGnTlJ6erpYtW2rkyJFat26d/P39FRAQ4FgAAADcSbnDjo+Pj+644w598skn+u6773T11VdrzJgxioyM1D/+8Q8VFhZWZZ0AAAAXpNxh50xRUVGaPHmyPv30U11xxRV65plnlJubW9m1AQAAXLQKh52CggItXLhQ8fHxatGiherXr6///ve/CgoKqor6AAAALkq5Jyhv3LhR8+bN06JFi9SoUSMNHz5c//nPfwg5AADArZU77Fx77bWKiorSAw88oNjYWEnSF198Uapfnz59Kq86AACAi1ShX1Deu3evnnzyyXOu53d2AACAuyl32CkuLq7KOgAAAKrEBV2NdS6///57ZQ4HAABw0Sol7BQUFOj5559XdHR0ZQwHAABQacoddgoKCjRx4kTFxcXpuuuu09KlSyVJ8+bNU3R0tGbOnKlx48ZVVZ0AAAAXpNxzdiZPnqy5c+cqPj5e69at0+23367hw4dr/fr1euGFF3T77bfL09OzKmsFAACosHKHncWLF2v+/Pnq06ePvvnmG1199dUqLCzU1q1bHXdDBwAAcDfl/hrr559/dvy+TosWLWS32zVu3DiCDgAAcGvlDjtFRUXy8fFxPPby8lKdOnWqpCgAAIDKUu6vsYwxGjZsmOx2uyQpPz9f99xzj2rXru3U7/3336/cCgEAAC5CucNOYmKi0+M777yz0osBAACobOUOO/PmzavKOgAAAKpEpf6CMgAAgLtx+7Czf/9+3XnnnQoODpafn59atmypzZs3O9YbYzR58mSFh4fLz89P8fHx2rlzpwsrBgAA7sStw86RI0d0/fXXy9vbW8uXL9e3336r559/XvXq1XP0mT59ul566SXNmTNHGzZsUO3atdWtWzfl5+e7sHIAAOAuyj1nxxWmTZumyMhIp/lCZ95/yxijmTNnatKkSbr11lslSfPnz1doaKiWLl2qgQMHVnvNAADAvbj1mZ1ly5YpLi5Ot99+u0JCQhQTE6NXX33VsX737t3KyspSfHy8oy0gIEDt2rVTenr6OcctKChQbm6u0wIAAKzJrcPOrl27NHv2bDVp0kSffPKJ7r33Xj3wwAN64403JElZWVmSpNDQUKfnhYaGOtaVJSkpSQEBAY4lMjKy6l4EAABwKbcOO8XFxbrmmmv09NNPKyYmRnfffbdGjRqlOXPmXNS4EydOVE5OjmPZt29fJVUMAADcjVuHnfDwcDVv3typrVmzZtq7d68kKSwsTJKUnZ3t1Cc7O9uxrix2u13+/v5OCwAAsCa3DjvXX3+9duzY4dT2/fffq2HDhpJOT1YOCwvTqlWrHOtzc3O1YcMGtW/fvlprBQAA7smtr8YaN26crrvuOj399NMaMGCANm7cqFdeeUWvvPKKJMlms2ns2LF66qmn1KRJE0VHR+uxxx5TRESE+vbt69riAQCAW3DrsNOmTRstWbJEEydO1NSpUxUdHa2ZM2dqyJAhjj4PP/ywjh8/rrvvvltHjx5Vhw4dlJqaKl9fXxdWDgAA3IVbhx1JuuWWW3TLLbecc73NZtPUqVM1derUaqwKAADUFG49ZwcAAOBiEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAICl1aiw88wzz8hms2ns2LGOtvz8fI0ePVrBwcGqU6eOEhISlJ2d7boiAQCAW6kxYWfTpk2aO3eurr76aqf2cePG6cMPP9TixYu1du1a/fLLL7rttttcVCUAAHA3NSLs5OXlaciQIXr11VdVr149R3tOTo5ee+01vfDCC+rSpYtiY2M1b948rVu3TuvXr3dhxQAAwF3UiLAzevRo9erVS/Hx8U7tGRkZOnXqlFN706ZNFRUVpfT09HOOV1BQoNzcXKcFAABYk5erC/gjixYt0pYtW7Rp06ZS67KysuTj46PAwECn9tDQUGVlZZ1zzKSkJD3xxBOVXSoAAHBDbn1mZ9++fXrwwQe1YMEC+fr6Vtq4EydOVE5OjmPZt29fpY0NAADci1uHnYyMDB08eFDXXHONvLy85OXlpbVr1+qll16Sl5eXQkNDdfLkSR09etTpednZ2QoLCzvnuHa7Xf7+/k4LAACwJrf+Gqtr1676+uuvndqGDx+upk2b6pFHHlFkZKS8vb21atUqJSQkSJJ27NihvXv3qn379q4oGQAAuBm3Djt169ZVixYtnNpq166t4OBgR/vIkSM1fvx4BQUFyd/fX/fff7/at2+va6+91hUlAwAAN+PWYac8ZsyYIQ8PDyUkJKigoEDdunXTyy+/7OqyAACAm6hxYWfNmjVOj319fZWcnKzk5GTXFAQAANyaW09QBgAAuFiEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGmEHQAAYGluH3aSkpLUpk0b1a1bVyEhIerbt6927Njh1Cc/P1+jR49WcHCw6tSpo4SEBGVnZ7uoYgAA4E7cPuysXbtWo0eP1vr167Vy5UqdOnVKN998s44fP+7oM27cOH344YdavHix1q5dq19++UW33XabC6sGAADuwsvVBfyR1NRUp8cpKSkKCQlRRkaGbrzxRuXk5Oi1117TwoUL1aVLF0nSvHnz1KxZM61fv17XXnutK8oGAABuwu3P7JwtJydHkhQUFCRJysjI0KlTpxQfH+/o07RpU0VFRSk9Pb3MMQoKCpSbm+u0AAAAa6pRYae4uFhjx47V9ddfrxYtWkiSsrKy5OPjo8DAQKe+oaGhysrKKnOcpKQkBQQEOJbIyMiqLh0AALhIjQo7o0eP1jfffKNFixZd1DgTJ05UTk6OY9m3b18lVQgAANyN28/ZKTFmzBh99NFHSktL06WXXupoDwsL08mTJ3X06FGnszvZ2dkKCwsrcyy73S673V7VJQMAADfg9md2jDEaM2aMlixZos8++0zR0dFO62NjY+Xt7a1Vq1Y52nbs2KG9e/eqffv21V0uAABwM25/Zmf06NFauHChPvjgA9WtW9cxDycgIEB+fn4KCAjQyJEjNX78eAUFBcnf31/333+/2rdvz5VYAADA/cPO7NmzJUmdOnVyap83b56GDRsmSZoxY4Y8PDyUkJCggoICdevWTS+//HI1VwoAANyR24cdY8wf9vH19VVycrKSk5OroSIAAFCTuP2cHQAAgItB2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJbm9jcCBQAAlcP2hM0l2zVT/vim3lWJMzsAAMDSOLMD4E/nz/p/t8CfFWd2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApRF2AACApXm5ugAAwGm2J2wu2a6ZYlyyXaC6EHaAGs5VfyCl8/+RdNe6gKrGse9+LBN2kpOT9eyzzyorK0utWrXSrFmz1LZtW1eXBQvhAwwAaiZLhJ133nlH48eP15w5c9SuXTvNnDlT3bp1044dOxQSEuLS2vgDCQCAa1ligvILL7ygUaNGafjw4WrevLnmzJmjWrVq6fXXX3d1aQAAwMVqfNg5efKkMjIyFB8f72jz8PBQfHy80tPTXVgZAABwBzX+a6xff/1VRUVFCg0NdWoPDQ3Vd999V+ZzCgoKVFBQ4Hick5MjScrNza38AvMrf8jy+sPX46LaqKvizlsbdZXiru8ldVVcjTzG3LUuyX2PsYsc15g/mLZharj9+/cbSWbdunVO7RMmTDBt27Yt8zlTpkwxklhYWFhYWFgssOzbt++8WaHGn9mpX7++PD09lZ2d7dSenZ2tsLCwMp8zceJEjR8/3vG4uLhYhw8fVnBwsGw2100oPltubq4iIyO1b98++fv7u7ocB+qqGOqqOHetjboqxl3rkty3NuqqGGOMjh07poiIiPP2q/Fhx8fHR7GxsVq1apX69u0r6XR4WbVqlcaMGVPmc+x2u+x2u1NbYGBgFVd64fz9/d3q4CpBXRVDXRXnrrVRV8W4a12S+9ZGXeUXEBDwh31qfNiRpPHjxysxMVFxcXFq27atZs6cqePHj2v48OGuLg0AALiYJcLOHXfcoUOHDmny5MnKyspS69atlZqaWmrSMgAA+POxRNiRpDFjxpzza6uaym63a8qUKaW+cnM16qoY6qo4d62NuirGXeuS3Lc26qoaNmP+6HotAACAmqvG/6ggAADA+RB2AACApRF2AACApRF2AACApRF2KsGwYcNks9lks9nk7e2t6OhoPfzww8rP//83ISlZv379eqfnFhQUOH65ec2aNY72tWvXqkuXLgoKClKtWrXUpEkTJSYm6uTJk5KkNWvWOMY8e8nKypIk9e3b16k9ODjYpXWNHj1a+fn5evXVV3XDDTc42tu0aaONGzdWyz4p2Xa9evVUr149xcfHO237j97L999/32nczMzMaqm7c+fOTu12u129evVy+TF25v7y8vKSzWZTkyZNXF5Xhw4dSq3z8vJyeV2SNHjwYKd13t7e6t+/v8trCwsLK3N99+7dXVLXnj17Sm3XbrcrMjJS48aNU35+fpW/VzNnztSVV14pPz8/p+1Kf/xZkZaW5jTu0qVLq3R/nVlHhw4dFB0dLV9fX7Vq1colx9O2bduUkJCgRo0ayWazaebMmSpLcnKyGjVqJF9fX7Vr187p87gyEXYqSffu3XXgwAHt2rVLM2bM0Ny5czVlyhSnPpGRkZo3b55T25IlS1SnTh2ntm+//Vbdu3dXXFyc0tLS9PXXX2vWrFny8fFRUVGRU98dO3bowIEDTktISIgkqbCwUI0aNdLs2bPVoEED9e3bt9rq6tevnzp37qytW7dq8+bNev311/XWW29pypQpWrNmjQYNGiRJCg8PV25urm6++Wbt37+/yvdJybZXr16t9PR0RUZGOm1bOv97efz4cUlSUFCQzlaVddvtdsXExGjt2rVKS0vTnXfeqY8//lh33XVXlb+X56urZH9t3LhR9evXV7NmzbRnzx6XH/uS5Onp6XT81apVy+V1nTx5UitWrFCDBg30wQcf6Msvv9SUKVP0ySefuLy2zp07O/2bffHFFyVJHh7Ofyaqoq4bbrjB6b2qW7euXn75ZUnSwoULJUnBwcFKSEjQa6+9pnfeeUd///vfq3R/LFy4UI8++qimTJmi7du3O223RHk+K+rXr6+zVWbdAwYMUOfOnbV//37t2rVLMTExWrdunWJjY/Xtt9/q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5vTk6Xr16hm73W4uu+wy889//tMUFha6vLaSeWGSzIoVKxzPdVVd9957r2nQoIE5evSokU5PlvX19TWRkZHmvvvuc3yFUlX749SpU+bxxx83jRs3LnO7f/RZ8fHHH5c5fmJiYpXWvWbNGtOsWTPj6elpbDabGThwoEuOp927d5e5vmPHjk7bnzVrlomKijI+Pj6mbdu2Zv369WXWebFsxpRxPg4AAMAimLMDAAAsjbAD/J/PP//cMXenrAUApNM/yHe+z4q9e/e6ukScha+xgP/z+++/O90j62wlk+oA/LkVFhY63aj0bI0aNXJMEoZ7IOwAAABL42ssAABgaYQdAABgaYQdAABgaYQdACjD448/rtatW1foOTabTUuXLj3n+j179shmsykzM/OiagNQMYQdAE6GDRsmm80mm80mb29vRUdH6+GHHy71s/AlfdavX+/UXlBQoODgYNlsNq1Zs8bRvnbtWnXp0kVBQUGqVauWmjRposTERJ08eVKStGbNGseYZy9n3kqgREZGRpnbL9G1a1fddtttF7wfHnroIaf79gCouQg7AErp3r27Dhw4oF27dmnGjBmaO3eupkyZUqpfZGSk5s2b59S2ZMmSUr9L9O2336p79+6Ki4tTWlqavv76a82aNUs+Pj4qKipy6rtjxw4dOHDAaQkJCSm17djYWLVq1Uqvv/56qXV79uzR6tWrNXLkyAq/dmOMCgsLVadOHQUHB1f4+QDcD2EHQCl2u11hYWGKjIxU3759FR8fr5UrV5bql5iYqEWLFjnd5fn1119XYmKiU78VK1YoLCxM06dPV4sWLdS4cWN1795dr776qvz8/Jz6hoSEKCwszGk5192tR44cqXfeeafUnbFTUlIUHh6u7t27680331RcXJzq1q2rsLAwDR48WAcPHnT0LTmjtHz5csXGxsput+uLL74o9TXWpk2bdNNNN6l+/foKCAhQx44dtWXLllI1HThwQD169JCfn58uu+wyvfvuu+fe0ZK++eYb9ejRQ3Xq1FFoaKiGDh2qX3/91bH+3XffVcuWLeXn56fg4GDFx8dX6t2ngT8Dwg6A8/rmm2+0bt06+fj4lFoXGxurRo0a6b333pN0+pdl09LSNHToUKd+YWFhOnDggNLS0iq1tiFDhqigoMApUBhj9MYbb2jYsGHy9PTUqVOn9OSTT2rr1q1aunSp9uzZo2HDhpUa69FHH9Uzzzyj7du36+qrry61/tixY0pMTNQXX3yh9evXq0mTJurZs6eOHTvm1O+xxx5TQkKCtm7dqiFDhmjgwIHavn17mfUfPXpUXbp0UUxMjDZv3qzU1FRlZ2drwIABkk4Hp0GDBmnEiBHavn271qxZo9tuu038PBpQQVVye1EANVZiYqLx9PQ0tWvXNna73UgyHh4e5t1333Xqp/+7k/LMmTNN586djTHGPPHEE6Zfv36l7qRcWFhohg0b5rh7dd++fc2sWbNMTk6OY7ySOynXrl3baWnevPl56x04cKDTnZRXrVplJJmdO3eW2X/Tpk1Gkjl27JjTdpcuXerUb8qUKaZVq1bn3G5RUZGpW7eu+fDDD532yT333OPUr127dubee+81xvz/O0F/9dVXxhhjnnzySXPzzTc79d+3b5+RZHbs2GEyMjKMJLNnz57z7gMA58eZHQCldO7cWZmZmdqwYYMSExM1fPhwJSQklNn3zjvvVHp6unbt2qWUlBSNGDGiVB9PT0/NmzdPP//8s6ZPn65LLrlETz/9tK666iodOHDAqe/nn3+uzMxMx/Lxxx+ft9YRI0YoLS1NP/74o6TTX6N17NjRcXuPjIwM9e7dW1FRUapbt646duwoSaXuXxQXF3fe7WRnZ2vUqFFq0qSJAgIC5O/vr7y8vFLjtG/fvtTjc53Z2bp1q1avXu10X6WmTZtKkn788Ue1atVKXbt2VcuWLXX77bfr1Vdf1ZEjR85bJ4DSCDsASqldu7Yuv/xyxwTgDRs26LXXXiuzb3BwsG655RaNHDlS+fn56tGjxznHveSSSzR06FD961//0rZt25Sfn685c+Y49YmOjtbll1/uWBo2bHjeWrt27aqoqCilpKQoNzdX77//vmNi8vHjx9WtWzf5+/trwYIF2rRpk5YsWSJJjqvAznzN55OYmKjMzEy9+OKLWrdunTIzMxUcHFxqnIrIy8tT7969ncJdZmamdu7cqRtvvFGenp5auXKlli9frubNm2vWrFm68sortXv37gveJvBnRNgBcF4eHh76+9//rkmTJjlNRD7TiBEjtGbNGt11113y9PQs17j16tVTeHj4RU+29fDw0PDhw/XGG29o4cKF8vHxUf/+/SVJ3333nX777Tc988wzuuGGG9S0aVOnyckV8eWXX+qBBx5Qz549ddVVV8lutztNJC5x9qXw69evV7Nmzcoc85prrtG2bdvUqFEjp4B3+eWXO8KXzWbT9ddfryeeeEJfffWVfHx8HIENQPkQdgD8odtvv12enp5KTk4uc3337t116NAhTZ06tcz1c+fO1b333qsVK1boxx9/1LZt2/TII49o27Zt6t27t1PfgwcPKisry2k5derUeesbPny49u/fr7///e8aNGiQ4wqvqKgo+fj4aNasWdq1a5eWLVumJ5988gL2gNSkSRO9+eab2r59uzZs2KAhQ4aUupJMkhYvXqzXX39d33//vaZMmaKNGzdqzJgxZY45evRoHT58WIMGDdKmTZv0448/6pNPPtHw4cNVVFSkDRs26Omnn9bmzZu1d+9evf/++zp06NA5wxOAshF2APwhLy8vjRkzRtOnTy/zTIzNZlP9+vXLvGJLktq2bau8vDzdc889uuqqq9SxY0etX79eS5cudcyhKXHllVcqPDzcacnIyDhvfVFRUYqPj9eRI0ec5gw1aNBAKSkpWrx4sZo3b65nnnlGzz333AXsAem1117TkSNHdM0112jo0KF64IEHyvz9nyeeeEKLFi3S1Vdfrfnz5+vtt99W8+bNyxwzIiJCX375pYqKinTzzTerZcuWGjt2rAIDA+Xh4SF/f3+lpaWpZ8+euuKKKzRp0iQ9//zz5/2qEEBpNmO4hhEAAFgXZ3YAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAICl/T/87OzQb65QZQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "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", + "rmse_values = [rmse1, rmse2, rmse2_1, rmse3, rmse4, rmse5, rmse6, rmse7, rmse8, rmse8_1, 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", + "labels = ['RMSE1', 'RMSE2', 'RMSE2_1', 'RMSE3', 'RMSE4', 'RMSE5', 'RMSE6', 'RMSE7', 'RMSE8', 'RMSE8_1', 'RMSE9', 'RMSE10']\n", "\n", "# Plotting the bar graph\n", "plt.bar(labels, rmse_values, color='green')\n", @@ -1883,24 +6920,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 94, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "nrZu-K-KDCJ2", - "outputId": "69165581-da05-4554-a464-a606eb87a734" + "outputId": "d0dd5f18-77bd-41f4-c21b-09e71322b318" }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/MUlEQVR4nO3deVxUZf//8fcACogCorIlKuW+pOYWmbdLFK6pueR2h2JqqZl5l+l9m2V5Z1qZS6RZKFmCS6mlpUWYW+GuZUmuuAuWKYomopzfH36dX3MDCjoww+n1fDzO4+Fc5zrn+swMMm/Ouc4Zi2EYhgAAAEzKxdEFAAAAFCbCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDoC/hVdeeUUWi0W///57oY+1evVqNWjQQB4eHrJYLDp37lyhjwkgb4QdoJiLjY2VxWKxWfz9/dW6dWutWrWqyOtZsWKFOnXqpICAAJUsWVJ+fn76xz/+obffflvnz58v8nqK2pkzZ9SzZ095enoqOjpaH3/8sby8vHLt+9f3buPGjTnWG4ahkJAQWSwWdezYMdd9nDt3zhqqkpOTc+3Tv3//HD8jNxYPD4/bf7JAMeHm6AIA2Merr76q0NBQGYahtLQ0xcbGqn379lqxYkWeH5T2lJ2drYEDByo2Nlb16tXT0KFDFRISogsXLigpKUnjxo3TV199pcTExEKvxZG2bt2qCxcu6LXXXlN4eHi+tvHw8FBcXJwefPBBm/Z169bp+PHjcnd3z3PbJUuWyGKxKDAwUAsWLNDEiRNz7efu7q4PP/wwR7urq2u+agSKM8IOYBLt2rVT48aNrY8HDhyogIAAxcfH2yXsZGdn68qVK3keCZgyZYpiY2P13HPP6e2335bFYrGue/bZZ3Xq1CnNnz//jsYoDk6fPi1J8vX1zfc27du315IlSzRjxgy5uf3/X8txcXFq1KjRTU+9ffLJJ2rfvr0qV66suLi4PMOOm5ub+vXrl++aADPhNBZgUr6+vvL09LT58JSkt956Sw888IDKlSsnT09PNWrUSJ9++mmO7S0Wi4YPH64FCxaoTp06cnd31+rVq3Md69KlS5o8ebLq1KmjN9980ybo3BAUFKQXX3wx32PcTp01atSQh4eHGjVqpPXr1+da67lz59S/f3/5+vrKx8dHAwYM0KVLl3J/Ef/HkiVL1KhRI3l6eqp8+fLq16+fTpw4YV3fqlUrRUZGSpKaNGkii8Wi/v3733K/vXv31pkzZ5SQkGBtu3Llij799FP16dMnz+2OHj2qDRs2qFevXurVq5dSUlL0ww8/5Ou5AH8nHNkBTCI9PV2///67DMPQ6dOnNXPmTGVkZOT4a3769Ol69NFH1bdvX125ckULFy5Ujx49tHLlSnXo0MGm75o1a7R48WINHz5c5cuXV5UqVXIde+PGjTp37pyef/75Ap8WyWuMgtS5bt06LVq0SCNGjJC7u7vee+89tW3bVlu2bFHdunVt+vbs2VOhoaGaNGmSduzYoQ8//FD+/v6aPHnyTeuMjY3VgAED1KRJE02aNElpaWmaPn26vv/+e+3cuVO+vr76z3/+oxo1amjOnDnW04r33HPPLV+DKlWqKCwsTPHx8WrXrp0kadWqVUpPT1evXr00Y8aMXLeLj4+Xl5eXOnbsKE9PT91zzz1asGCBHnjggVz753aEqGTJkvL29r5ljUCxZgAo1ubNm2dIyrG4u7sbsbGxOfpfunTJ5vGVK1eMunXrGm3atLFpl2S4uLgYv/zyyy1rmD59uiHJWL58uU371atXjd9++81myc7OztcYBalTkrFt2zZr25EjRwwPDw+ja9eu1raXX37ZkGRERUXZbN+1a1ejXLlyN31+V65cMfz9/Y26desaf/75p7V95cqVhiRj/Pjx1rYb78fWrVtvus//7fvuu+8aZcqUsT7vHj16GK1btzYMwzAqV65sdOjQIcf29erVM/r27Wt9/O9//9soX768kZWVZdMvMjIy158RSUZERMQt6wSKO05jASYRHR2thIQEJSQk6JNPPlHr1q315JNPaunSpTb9PD09rf8+e/as0tPT1aJFC+3YsSPHPlu2bKnatWvfcuwbV1mVLl3apn337t2qUKGCzXLmzJl8jVGQOsPCwtSoUSPr40qVKqlz5876+uuvde3aNZu+Tz31lM3jFi1a6MyZMze9Umzbtm06ffq0hg4dajOfqEOHDqpZs6a+/PLLPLfNr549e+rPP//UypUrdeHCBa1cufKmp7B++ukn7d69W71797a29e7dW7///ru+/vrrHP09PDysPx9/Xd544407rh1wdpzGAkyiadOmNhOUe/furYYNG2r48OHq2LGjSpYsKUla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8+fP2ywAAMCcnDbspKamSpICAgJs2gMCAqzrUlNT5e/vb7Pezc1Nfn5+1j65mTRpknx8fKxLSEiInasHAADOwmnDTmEaO3as0tPTrcuxY8ccXRIAACgkTht2AgMDJUlpaWk27WlpadZ1gYGBOn36tM36q1ev6o8//rD2yY27u7u8vb1tFgAAYE5OG3ZCQ0MVGBioxMREa9v58+e1efNmhYWFSZLCwsJ07tw5bd++3dpnzZo1ys7OVrNmzYq8ZgAA4HwcejVWRkaGDhw4YH2ckpKiXbt2yc/PT5UqVdLIkSM1ceJEVatWzXrpeXBwsLp06SJJqlWrltq2batBgwZp9uzZysrK0vDhw9WrVy+uxAIAAJIcHHa2bdum1q1bWx+PGjVKkhQZGanY2FiNHj1aFy9e1ODBg3Xu3Dk9+OCDWr16tfUeO5K0YMECDR8+XA899JBcXFzUrVs3zZgxo8ifCwAAcE4WwzD+9ndGOn/+vHx8fJSenv73mb/jzDfjclRt3CQMyJ2z/p905t9jKBL5/fx22jk7AAAA9kDYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApubUYefatWt66aWXFBoaKk9PT91zzz167bXXZBiGtY9hGBo/fryCgoLk6emp8PBw7d+/34FVAwAAZ3LHYefatWvatWuXzp49a496bEyePFmzZs3Su+++q+TkZE2ePFlTpkzRzJkzrX2mTJmiGTNmaPbs2dq8ebO8vLwUERGhy5cv270eAABQ/BQ47IwcOVIxMTGSrgedli1b6r777lNISIjWrl1r1+J++OEHde7cWR06dFCVKlXUvXt3PfLII9qyZYuk60d1pk2bpnHjxqlz58669957NX/+fJ08eVLLly+3ay0AAKB4KnDY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e8l32AkLC9OZM2esj729vXXo0CHr43Pnzql37972rQ4AAOAO5TvsGIZx08d5tQEAADiSXefsWCwWe+4OAADgjjn9BOUTJ06oX79+KleunDw9PVWvXj1t27bNut4wDI0fP15BQUHy9PRUeHi49u/f78CKAQCAMynQF4Hu2bNHqampkq6HjF9//VUZGRmSpN9//93uxZ09e1bNmzdX69attWrVKlWoUEH79+9X2bJlrX2mTJmiGTNm6KOPPlJoaKheeuklRUREaM+ePfLw8LB7TQAAoHgpUNh56KGHbObldOzYUdL101eGYdj9NNbkyZMVEhKiefPmWdtCQ0Ot/zYMQ9OmTdO4cePUuXNnSdL8+fMVEBCg5cuXq1evXnatBwAAFD/5DjspKSmFWUeuvvjiC0VERKhHjx5at26d7rrrLg0dOlSDBg2y1pSamqrw8HDrNj4+PmrWrJmSkpLyDDuZmZnKzMy0Pj5//nzhPhEAAOAw+Q47lStXvmWfn3/++Y6K+V+HDh3SrFmzNGrUKP373//W1q1bNWLECJUsWVKRkZHWU2oBAQE22wUEBFjX5WbSpEmaMGGCXWsFAADO6Y4nKF+4cEFz5sxR06ZNVb9+fXvUZJWdna377rtPr7/+uho2bKjBgwdr0KBBmj179h3td+zYsUpPT7cux44ds1PFAADA2dx22Fm/fr0iIyMVFBSkt956S23atNGmTZvsWZuCgoJUu3Ztm7ZatWrp6NGjkqTAwEBJUlpamk2ftLQ067rcuLu7y9vb22YBAADmVKCwk5qaqjfeeEPVqlVTjx495O3trczMTC1fvlxvvPGGmjRpYtfimjdvrr1799q07du3z3pKLTQ0VIGBgUpMTLSuP3/+vDZv3qywsDC71gIAAIqnfIedTp06qUaNGvrpp580bdo0nTx5UjNnzizM2vTcc89p06ZNev3113XgwAHFxcVpzpw5GjZsmKTrV4GNHDlSEydO1BdffKHdu3friSeeUHBwsLp06VKotQEAgOIh3xOUV61apREjRujpp59WtWrVCrMmqyZNmmjZsmUaO3asXn31VYWGhmratGnq27evtc/o0aN18eJFDR48WOfOndODDz6o1atXc48dAAAgqQBhZ+PGjYqJiVGjRo1Uq1Yt/fOf/yyS+9h07NjRej+f3FgsFr366qt69dVXC70WAABQ/OT7NNb9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denSRT///HMer6p9meY+O87mvvvu08GDB7V06VL17dtX0vUjDZUqVVJoaKhN34yMDC1atEjbtm1TamqqYmNj9e9//zvHPsuVK5fn931VqVJF06dPlySbvxqdobZp06apf//+qlixog4ePKgGDRqoWrVqWrFihZKTkwt13L96/fXX9fnnn2vFihVq2LBhnq/PDe3atdOiRYsUGhqqzz//XJs2bdLjjz8uqXBfr4YNG9rUV6VKFS1dulQbNmzQ4MGDre1F/T7e8NRTT6lPnz5ydXXNcbTLkXX5+/vf8mtfirq21atXa926dTp06JD8/PwkXX8/HV2Xj4+PzS32ly9frrNnz+a463xR15WUlKTSpUurZcuWOnjwoFJTUzVkyBBNnjy50MetUqWKRowYIUkKDQ21jpsfTZo0UePGjXXu3Dl99dVX2r17t3VdYdb98ccfa8iQIdbfS3fffbdee+01paamKiQkxKk+f6ZPn662bdvqhRdekCS99tprSkhI0LvvvqvZs2fnuo09cWSnEEVFRWnevHnWx3Pnzs31KywWL16smjVrqkaNGurXr5/mzp1766+rL6a13Rj3woUL8vPzK9LXJDs72zru7VizZo3130VZ986dO/XDDz+oZcuWOdYV9fs4b948HTp0SC+//PJN+zni56tBgwYKCgrSww8/rO+//94pavviiy/UuHFjTZkyRXfddZeqV6+u559/3uYvbkfU9b9iYmIUHh6uypUrO7SusLAwXbx4UWlpaRowYIDef/99ffrpp2rfvn2hj3vs2DF99dVXMgxDaWlp1nELqnTp0tq8ebP1cWHWnZmZKQ8PD5s2Nzc3nT17VpGRkU71+ZOUlKTw8HCbtoiICCUlJdl9rNwQdgpRv379tHHjRh05ckRHjhzR999/r379+uXoFxMTY21v27at0tPTtW7duhz9HnjgAZUuXdpmKW619evXT+vWrVN6errCwsKK9DV56623lJGRoZ49e+bZ52aSk5OL9PWqWLGi3N3d1bhxYw0bNkxPPvlkjj5F+T7u379fY8aM0SeffCI3t5sfFC7KuoKCgjR79mx99tln+uyzzxQSEqJWrVppx44dDq/t0KFD2rhxo37++WctW7ZM06ZN06effqqhQ4c6tK6/OnnypFatWpXrz1dR19W8eXP94x//0NatWzV69Ght2LBBJUqU0OjRowt93AULFujxxx9XyZIlFRgYKB8fH0VHR+f6mtyMl5eXUlJSiuT1ioiI0Icffqjt27fLMAxt27ZN+/btk2EYatu2rVN9/qSmpub4CqeAgIAcc+sKC6exClGFChXUoUMHxcbGyjAMdejQwTr/44a9e/dqy5YtWrZsmaTrqfzxxx9XTEyMWrVqZdN30aJFqlWrVrGuLSEhQYZhqEuXLlqxYkWRjRsXF6cJEybo888/z3UuR340atSoSF+vDRs2KCMjQ5s2bdKYMWNUtWpV9e7d26ZPUb2P165dU58+fTRhwgRVr179pnUXZV2SVKNGDZs5MA888IAOHjyod955Rx9//LFDa8vOzpbFYtGCBQusp42mTp2q7t2767333pOnp6dD6vqrjz76SL6+vurSpUuu64uyrj179mjLli2qWbOm4uLiNHToUO3evVs9evQo9HGfffZZjR8/XhERETp16pReeOEFPfXUU4qJicl1m7y4urqqdu3aRfJ6vfTSS0pNTdX9998vwzAUEBCgqlWr6ueff3bqzx9HIOwUsqioKOt3duX2V0JMTIyuXr2q4OBga5thGHJ3d9e7775rc149JCREVatWLba1nThxQk8++aTGjRunjz76SOvXry+ScRcuXKgnn3xSS5YsyXEYtSAeeughxcbGSiqa1+vGufV69eopLS1Nr7zySo6wIxXN+3jhwgVt27ZNO3futI6VnZ0twzDk5uamb775Rm3atCnyuvLStGlTbdy4Mc/1RVVbUFCQ7rrrLpv+tWrVkmEYOn78uKpVq+aQuv667dy5c/XPf/5TJUuWzLNfUdU1adIk+fv7q2rVqrr33ns1duxYDRo0SLt27dK//vWvQh23efPm1vkk9957r7y8vNSiRQtNnDhRQUFBeb42uWnatGmR/K7w9PTU3Llz9f777ystLU1BQUF68MEH5ebmpgoVKjjV509gYKDS0tJs2tLS0m45F89eOI1VyNq2basrV64oKytLERERNuuuXr2q+fPn6+2339auXbusy48//qjg4GDFx8ebpraUlBTt2LFD8fHxeumll4ps3Pj4eA0YMEDx8fG5XlZZEA0bNnTYe5mdnW1zNdhfFcX76O3trd27d9vs46mnnlKNGjW0a9cuNWvWzCF15WXXrl03/YAqqtqaN2+ukydPKiMjw9q2b98+ubi4qGLFig6r64Z169bpwIED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0W/v3r3asmWLevfuLUlyc3PT448/rpiYmBx9Fy1apF27dtksNxMVFaWUlBR99913kq4f1alSpYratGkjSdq/f7969+6tu+++W97e3qpSpYok5Tgi07hx45uOk5GRoeeff161atWSr6+vSpcureTk5Bz7CQsLy/E4OTk5133++OOPOnDggMqUKWP9biU/Pz9dvnxZBw8elJ+fn/r376+IiAh16tRJ06dP16lTp25aJ4Bb48t/ABRIVFSUhg8fLkl5zk+JiYnR1atXFRwcbG0zDEPu7u5699135ePjY20PCQlR1apV8z1+tWrV1KJFC82bN0+tWrXS/PnzNWjQIOupnk6dOqly5cr64IMPFBwcrOzsbNWtW1dXrlyx2Y+Xl9dNx3n++eeVkJCgt956S1WrVpWnp6e6d++eYz8FkZGRoUaNGmnBggU51lWoUEHS9fA2YsQIrV69WosWLdK4ceOUkJCg+++//7bHBf7uCDsACuTG/BKLxZLrXJerV69q/vz5evvtt/XII4/YrOvSpYvi4+NzvYS9IAYOHKinn35ajz76qE6cOGG97P3MmTPau3evPvjgA7Vo0UKStHHjxtsa4/vvv1f//v3VtWtXSdeDSm5fHvu/l8lv2rRJtWrVynWf9913nxYtWiR/f395e3vnOXbDhg3VsGFDjR07VmFhYYqLiyPsAHeA01gACsTV1VXJycnas2ePXF1dc6xfuXKlzp49q4EDB6pu3bo2S7du3XKcyjpz5oxSU1NtlsuXL9+0hh49eqhEiRIaMmSIHnnkEYWEhEiSypYtq3LlymnOnDk6cOCA1qxZo1GjRt3W86xWrZqWLl2qXbt26ccff1SfPn1yTHKWroeiKVOmaN++fYqOjtaSJUv07LPP5rrPvn37qnz58urcubM2bNiglJQUrV27ViNGjNDx48eVkpKisWPHKikpSUeOHNE333yj/fv35xmeAOQPYQdAgXl7e+d5ZCImJkbh4eE2p6pu6Natm7Zt26affvrJ2hYeHq6goCCb5VZ3HC5VqpR69eqls2fPKioqytru4uKihQsXavv27apbt66ee+45vfnmm7f1HKdOnaqyZcvqgQceUKdOnRQREZHrTQv/9a9/adu2bWrYsKEmTpyoqVOn5nrE60bd69evV6VKlfTYY4+pVq1aGjhwoC5fvixvb2+VKlVKv/76q7p166bq1atr8ODBGjZsmIYMGXJbzwHAdRbDuMNrQQEAAJwYR3YAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICp/T+WRF7HOqAsCAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "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", + "mae_values = [mae1, mae2, mae2_1, mae3, mae4, mae5, mae6, mae7, mae8, mae8_1, 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", + "labels = ['MAE1', 'MAE2', 'MAE2_1', 'MAE3', 'MAE4', 'MAE5', 'MAE6', 'MAE7', 'MAE8', 'MAE8_1', 'MAE9', 'MAE10']\n", "\n", "# Plotting the bar graph\n", "plt.bar(labels, mae_values, color='orange')\n", @@ -1912,27 +6960,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 100, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "_c4Pe76fDNM-", - "outputId": "0e3d2f74-9042-4e2d-92c6-5ce61e967bd4" + "outputId": "c1784b34-6746-42fd-9f66-b7c1cfd50a21" }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA930lEQVR4nO3deVwV9f7H8fcB9QAKuCDigopLmrtiFtxSLBMRt25XDTM3sjK9pXazbNGWX6GVqaVplso1U9zSyjXSXErKXFMzywpxAbVUEE1AmN8fPjzXIwflKHgO0+v5eMzj4XznOzOfMwfl7cx3ZiyGYRgCAAAwCQ9XFwAAAFCUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcASryXXnpJFotFf/zxR7Hva/Xq1WrRooW8vLxksVh0+vTpYt8nAOcQbgA3Fh8fL4vFYjcFBgaqffv2WrVq1U2v5/PPP1fXrl1VpUoVlSlTRhUrVlTbtm01YcIEZWRk3PR6brY///xTvXr1kre3t6ZOnaqPPvpIZcuWddj38u/u66+/zrfcMAwFBwfLYrGoS5cuDrdx+vRpW4jat2+fwz4DBgyw+/nw8/NT8+bNNWHCBGVlZdn6XQqABU1paWnXcUQA91TK1QUAuLZXXnlFISEhMgxDx44dU3x8vDp37qzPP/+8wF+MRSkvL0+xsbGKj49X06ZN9fjjjys4OFhnzpxRUlKSXnjhBa1cuVJr164t9lpc6fvvv9eZM2f06quvqkOHDoVax8vLS/PmzdOdd95p175hwwYdPnxYVqu1wHUXLVoki8WioKAgffzxx/q///s/h/2sVqs+/PBDSRcD0ZIlS/Sf//xH33//vRISEuz6Tps2TeXKlcu3jfLlyxfq8wAlAeEGKAGioqLUunVr23xsbKyqVKmi+fPnF0m4ycvLU3Z2try8vBwuf+ONNxQfH68RI0ZowoQJslgstmVPPvmkUlNTNWfOnBvaR0lw/PhxSc4Fgc6dO2vRokV65513VKrU//7JnTdvnkJDQ696KW3u3Lnq3LmzatWqpXnz5hUYbkqVKqW+ffva5h9//HHdfvvtWrBggd5++21Vq1bNtuxf//qXAgICCl0/UBJxWQoogcqXLy9vb2+7X5aS9NZbbyk8PFyVKlWSt7e3QkNDtXjx4nzrWywWDRs2TB9//LEaN24sq9Wq1atXO9zXuXPnNH78eDVu3FhvvvmmXbC5pGrVqnrmmWcKvY/rqbNBgwby8vJSaGioNm7c6LDW06dPa8CAASpfvrz8/f01cOBAnTt3zvFBvMKiRYsUGhoqb29vBQQEqG/fvjpy5IhteUREhPr37y9Juu2222SxWDRgwIBrbjcmJkZ//vmnEhMTbW3Z2dlavHix+vTpU+B6KSkp2rRpkx544AE98MAD+v3337V58+ZCfRYPDw9FRERIkpKTkwu1DmAmnLkBSoD09HT98ccfMgxDx48f17vvvqvMzEy7/61L0uTJk9WtWzc9+OCDys7OVkJCgnr27Knly5crOjraru+6deu0cOFCDRs2TAEBAapdu7bDfX/99dc6ffq0/vOf/8jT09OpugvahzN1btiwQQsWLNATTzwhq9Wq9957T506ddKWLVvUpEkTu769evVSSEiI4uLitH37dn344YcKDAzU+PHjr1pnfHy8Bg4cqNtuu01xcXE6duyYJk+erG+++UY7duxQ+fLl9fzzz6tBgwaaMWOG7TJh3bp1r3kMateurbCwMM2fP19RUVGSpFWrVik9PV0PPPCA3nnnHYfrzZ8/X2XLllWXLl3k7e2tunXr6uOPP1Z4ePg19ylJv/76qySpUqVKdu0nT57M17dUqVJcloK5GADc1uzZsw1J+Sar1WrEx8fn63/u3Dm7+ezsbKNJkybG3XffbdcuyfDw8DD27t17zRomT55sSDKWLVtm137hwgXjxIkTdlNeXl6h9uFMnZKMrVu32toOHjxoeHl5Gffdd5+tbezYsYYkY9CgQXbr33fffUalSpWu+vmys7ONwMBAo0mTJsZff/1la1++fLkhyRgzZoyt7dL38f333191m1f2nTJliuHr62v73D179jTat29vGIZh1KpVy4iOjs63ftOmTY0HH3zQNv/cc88ZAQEBRk5Ojl2//v37G2XLlrV9BwcOHDBef/11w2KxGM2aNbP1u3SMHE0NGjS45ucBShIuSwElwNSpU5WYmKjExETNnTtX7du318MPP6xPPvnErp+3t7ftz6dOnVJ6erruuusubd++Pd8227Vrp0aNGl1z35fugrpyEOru3btVuXJlu+nPP/8s1D6cqTMsLEyhoaG2+Zo1a6p79+5as2aNcnNz7fo+9thjdvN33XWX/vzzz6veybV161YdP35cjz/+uN14oOjoaDVs2FArVqwocN3C6tWrl/766y8tX75cZ86c0fLly696SeqHH37Q7t27FRMTY2uLiYnRH3/8oTVr1uTrf/bsWdt3UK9ePT333HMKCwvT0qVL8/VdsmSJ7Wfp0jR79uwb/oyAO+GyFFACtGnTxm5AcUxMjFq2bKlhw4apS5cuKlOmjCRp+fLl+r//+z/t3LnT7jZgR+NkQkJCCrVvX19fSVJmZqZde7169WzjSObMmaOPPvqo0Ptwps769evna7vlllt07tw5nThxQkFBQbb2mjVr2vWrUKGCpIsBys/Pz2EtBw8elCQ1aNAg37KGDRs6vI3bWZUrV1aHDh00b948nTt3Trm5ufrXv/5VYP+5c+eqbNmyqlOnjg4cOCDp4l1XtWvX1scff5zv0p2Xl5c+//xzSRfvnAoJCVGNGjUcbrtt27YMKIbpEW6AEsjDw0Pt27fX5MmT9csvv6hx48batGmTunXrprZt2+q9995T1apVVbp0ac2ePVvz5s3Lt43Lz55cTcOGDSVJe/bsUffu3W3t5cqVs90OXVAAcLQPZ+t0RkFjggzDuKHtFoU+ffpo8ODBSktLU1RUVIFjXAzD0Pz583X27FmHZ72OHz+uzMxMuzNpnp6ehb41Hfg7INwAJdSFCxck/e+MypIlS+Tl5aU1a9bYPTvlRi853HXXXfL391dCQoJGjx4tD48bu5rtbJ2//PJLvraff/5ZPj4+qly58g3VIkm1atWSJO3fv19333233bL9+/fblt+o++67T48++qi+/fZbLViwoMB+l55/88orr+jWW2+1W3bq1Ck98sgjWrZsWb7B5AD+hzE3QAmUk5OjL774QmXKlLH9AvT09JTFYrEbh5KcnKxly5bd0L58fHw0atQo7dmzR88++6zDsyDOnBlxts6kpCS7sTiHDh3Sp59+qo4dOzp995YjrVu3VmBgoKZPn253iWzVqlXat29fvktA16tcuXKaNm2aXnrpJXXt2rXAfpcuST399NP617/+ZTcNHjxY9evX18cff1wkNQFmxZkboARYtWqVfvrpJ0kXL0vMmzdPv/zyi5599lnbWJLo6Gi9/fbb6tSpk/r06aPjx49r6tSpqlevnn744Ycb2v+zzz6rffv26c0339QXX3yh+++/XzVq1NCpU6e0fft2LVq0SIGB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XX5+fkVWe0lT+9kVri5ByeOiXV0CAKCEcOb3t1uNuUlPT5ckVaxYscA+SUlJ6tChg11bZGSkkpKSHPbPyspSRkaG3QQAAMzLbcJNXl6ehg8frn/84x9q0qRJgf3S0tJUpUoVu7YqVaooLS3NYf+4uDj5+/vbpuDg4CKtGwAAuBe3CTdDhw7Vnj17lJCQUKTbHT16tNLT023ToUOHinT7AADAvZRydQGSNGzYMC1fvlwbN25UjRo1rto3KChIx44ds2s7duyYgoKCHPa3Wq2yWq1FVisAAHBvLj1zYxiGhg0bpqVLl2rdunUKCQm55jphYWFau3atXVtiYqLCwsKKq0wAAFCCuPTMzdChQzVv3jx9+umn8vX1tY2b8ff3l7e3tySpX79+ql69uuLi4iRJTz75pNq1a6cJEyYoOjpaCQkJ2rp1q2bMmOGyz4Hi4Q53dEnc1QUAJY1Lz9xMmzZN6enpioiIUNWqVW3TggULbH1SUlKUmppqmw8PD9e8efM0Y8YMNW/eXIsXL9ayZcuuOggZAAD8fbj0zE1hHrGzfv36fG09e/ZUz549i6EiAABQ0rnN3VIAAABFgXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMpZSrCwAA/L3VfnaFq0tQ8rhoV5eAIsSZGwAAYCqEGwAAYCpOh5tDhw7p8OHDtvktW7Zo+PDhmjFjRpEWBgAAcD2cDjd9+vTRV199JUlKS0vTvffeqy1btuj555/XK6+8UuQFAgAAOMPpcLNnzx61adNGkrRw4UI1adJEmzdv1scff6z4+Piirg8AAMApToebnJwcWa1WSdKXX36pbt26SZIaNmyo1NTUoq0OAADASU6Hm8aNG2v69OnatGmTEhMT1alTJ0nS0aNHValSpSIvEAAAwBlOh5vx48fr/fffV0REhGJiYtS8eXNJ0meffWa7XAUAAOAqTj/ELyIiQn/88YcyMjJUoUIFW/sjjzwiHx+fIi0OAADAWdf1nBvDMLRt2za9//77OnPmjCSpTJkyhBsAAOByTp+5OXjwoDp16qSUlBRlZWXp3nvvla+vr8aPH6+srCxNnz69OOoEAAAoFKfP3Dz55JNq3bq1Tp06JW9vb1v7fffdp7Vr1xZpcQAAAM5y+szNpk2btHnzZpUpU8auvXbt2jpy5EiRFQYAAHA9nD5zk5eXp9zc3Hzthw8flq+vb5EUBQAAcL2cDjcdO3bUpEmTbPMWi0WZmZkaO3asOnfuXJS1AQAAOM3py1ITJkxQZGSkGjVqpPPnz6tPnz765ZdfFBAQoPnz5xdHjQAAAIXmdLipUaOGdu3apYSEBP3www/KzMxUbGysHnzwQbsBxgAAAK7gdLiRpFKlSqlv375FXQsAAMANczrczJkz56rL+/Xrd93FAAAA3Cinw82TTz5pN5+Tk6Nz587ZnlBMuAEAAK7k9N1Sp06dspsyMzO1f/9+3XnnnQwoBgAALndd75a6Uv369TVu3Lh8Z3UAAAButiIJN9LFQcZHjx4tqs0BAABcF6fH3Hz22Wd284ZhKDU1VVOmTNE//vGPIisMAADgejgdbnr06GE3b7FYVLlyZd19992aMGFCUdUFAABwXZwON3l5ecVRBwAAQJEosjE3AAAA7qBQZ25GjhxZ6A2+/fbb110MAADAjSpUuNmxY0ehNmaxWJza+caNG/Xmm29q27ZtSk1N1dKlS/ON6bnc+vXr1b59+3ztqampCgoKcmrfAADAnAoVbr766qti2fnZs2fVvHlzDRo0SP/85z8Lvd7+/fvl5+dnmw8MDCyO8gAAQAl0XS/OLCpRUVGKiopyer3AwECVL1++6AsCAAAl3nWFm61bt2rhwoVKSUlRdna23bJPPvmkSAq7mhYtWigrK0tNmjTRSy+9dNXn62RlZSkrK8s2n5GRUez1AQAA13H6bqmEhASFh4dr3759Wrp0qXJycrR3716tW7dO/v7+xVGjTdWqVTV9+nQtWbJES5YsUXBwsCIiIrR9+/YC14mLi5O/v79tCg4OLtYaAQCAazl95ub111/XxIkTNXToUPn6+mry5MkKCQnRo48+qqpVqxZHjTYNGjRQgwYNbPPh4eH69ddfNXHiRH300UcO1xk9erTd3V4ZGRkEHAAATMzpMze//vqroqOjJUllypTR2bNnZbFYNGLECM2YMaPIC7yWNm3a6MCBAwUut1qt8vPzs5sAAIB5OR1uKlSooDNnzkiSqlevrj179kiSTp8+rXPnzhVtdYWwc+fOYj9jBAAASg6nL0u1bdtWiYmJatq0qXr27Kknn3xS69atU2Jiou655x6ntpWZmWl31uX333/Xzp07VbFiRdWsWVOjR4/WkSNHNGfOHEnSpEmTFBISosaNG+v8+fP68MMPtW7dOn3xxRfOfgwAAGBShQ43e/bsUZMmTTRlyhSdP39ekvT888+rdOnS2rx5s+6//3698MILTu1869atdg/luzQ2pn///oqPj1dqaqpSUlJsy7Ozs/XUU0/pyJEj8vHxUbNmzfTll186fLAfAAD4eyp0uGnWrJluu+02Pfzww3rggQckSR4eHnr22Weve+cREREyDKPA5fHx8Xbzo0aN0qhRo657fwAAwPwKPeZmw4YNaty4sZ566ilVrVpV/fv316ZNm4qzNgAAAKcVOtzcddddmjVrllJTU/Xuu+8qOTlZ7dq10y233KLx48crLS2tOOsEAAAoFKfvlipbtqwGDhyoDRs26Oeff1bPnj01depU1axZU926dSuOGgEAAArN6XBzuXr16um5557TCy+8IF9fX61YsaKo6gIAALgu1/3izI0bN2rWrFlasmSJPDw81KtXL8XGxhZlbQAAAE5zKtwcPXpU8fHxio+P14EDBxQeHq533nlHvXr1UtmyZYurRgAAgEIrdLiJiorSl19+qYCAAPXr10+DBg2ye88TAACAOyh0uCldurQWL16sLl26yNPTszhrAgAAuG6FDjefffZZcdYBAABQJG7obikAAAB3Q7gBAACmQrgBAACmQrgBAACmUuhw8/jjjyszM9M2P3/+fJ09e9Y2f/r0aXXu3LloqwMAAHBSocPN+++/r3PnztnmH330UR07dsw2n5WVpTVr1hRtdQAAAE4qdLgxDOOq8wAAAO6AMTcAAMBUCDcAAMBUnHpx5pgxY+Tj4yNJys7O1muvvSZ/f39JshuPAwAA4CqFDjdt27bV/v37bfPh4eH67bff8vUBAABwpUKHm/Xr1xdjGQAAAEXDqctSGRkZ+u6775Sdna02bdqocuXKxVUXAADAdSl0uNm5c6c6d+6stLQ0SZKvr68WLlyoyMjIYisOAADAWYW+W+qZZ55RSEiIvvnmG23btk333HOPhg0bVpy1AQAAOK3QZ262bdumL774Qq1atZIkzZo1SxUrVlRGRob8/PyKrUAAAABn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rVpVdevWdZvv3FENWVlZatGixVX7uLLO2rVrF/qzuPp4rlixQrfffrs8PT1lsVgUEhLiNjWuX7++wH8H/vnPf7pNnZL0888/q3v37goICJCfn5+qVKnidt/5pX9/atSoofLly6tSpUp65JFHlJmZ6Va/cxxJSUlRdHS0fHx8FBgYqKeffloXLlxw2LeoEG5uQHBwsBISEvTXX3/Z2s6fP6958+apZs2a+frPnDlT//73v7Vx40YdPXrU4Ta//PJLpaamas2aNcrMzFRUVJROnz5tWz548GClpqbaTW+88YZteXZ2tnr27KkhQ4a4VZ29evVSjRo1lJCQoF27dikvL0/vv/++tm/frtzcXHl4eGj79u039Xj99NNPtjr27t2riRMnavr06Xruuecc7uvKY5mbmytvb28NGTJEnp6e8vb2vinH8srvvH379lq4cKH279+vJUuW6MyZMypTpozLv/Mr67xk1KhRtsenBwUFuWWdr7zyisOfXXeqc8mSJXrooYc0cOBAde/eXUFBQTp+/Ljb1BgeHp5vWf369eXp6al169a5TZ2S1KVLF124cEHr1q3Ttm3bVKFCBVksFs2fP99t6jx37pwsFotOnDihDRs2aPXq1dq7d68eeught/udc7nc3FxFR0crOztbmzdv1n//+1/Fx8drzJgxDvsXGQPXpX///kb37t2NJk2aGHPnzrW1f/zxx0azZs2M7t27G/3797e1nzlzxihXrpzx008/Gb179zZee+01u+39/vvvhiRjx44dtrZvvvnGkGSsXr3aMAzDaNeunfHkk08Wqr7Zs2cb/v7+blPntepo3LixUa5cOZcdr0veeOMNIyQkxOGyq32GChUqGEFBQS79zi+5++67DUlG48aN3e5nc+XKlUbDhg2NvXv3GpKMiIgIl/9sXqlWrVrGxIkTbfPu8nfocjk5OUb16tWNDz/80G1rvFJ2drZhtVqNhg0bulWdJ06cMCQZGzdutLX16dPHkGTUrl3bbeoMCwszypQpY3fsfvjhB0OS0bBhQ5d/x5d+51xp5cqVhoeHh5GWlmZrmzZtmuHn52dkZWUVatvXgzM3N2jQoEGaPXu2bX7WrFm2V0dcbuHChWrYsKEaNGigvn37atasWdd8bfulMwEFXSYpiXUWVEdOTo7dQ6NcdbzS09NVsWJFpz9DvXr18vVzxWc4efKkfvvtN1WsWFGxsbFu8Z1fcuzYMQ0ePFgfffSRfHx8bO3u8rN5uXHjxqlSpUpq2bKl9uzZI8Mw3KrO7du368iRI/Lw8FDLli21YMECJSUlKSoqym1qvNJnn32mrKws1axZ062OZaVKldSgQQPNmTNHZ8+e1YULF7R//36VKVNGDz/8sNvUeekM9+XH7tI2WrZs6ZKaCiMpKUlNmza1vXVAkiIjI5WRkaG9e/cW2X7yKbbYZHKX/qd0/Phxw2q1GsnJyUZycrLh5eVlnDhxIl+KDg8PNyZNmmQYxsX/dQUEBBhfffWVbfmVKfrUqVPGfffdZ5QrV86WeNu1a2eULl3aKFu2rN10+f8sLrnyzI2r6yxVqpQRGhrqsI7vvvvOKFWqlBEWFuay42UYhvHLL78Yfn5+xowZMxwuv9qx7N27d74zNzfzM4waNcrw8fExJBkBAQFGVFSUy7/zy+vMy8szOnXqZLz66qt224yIiHCrOg3DMCZMmGB89dVXxq5du4xp06YZpUuXNurWretWdc6fP9+QZNSsWdNYvHix0aVLF6N69epGhQoV3KbGK0VFRRnVq1d3i3+Prqzz0KFDRmhoqGGxWAxPT0/D29vb7X42u3fvblgsFmPMmDGG1Wo1du3aZXTq1MmQZDz//PMu/44LOnMzePBgo2PHjnZtZ8+eNSQZK1euzNe/qLjF6xdKssqVKys6Olrx8fEyDEPR0dEKCAiw67N//35t2bJFS5culSSVKlVKvXv31syZMxUREWHXNzw8XB4eHjp79qzq1KmjBQsW2CXeBx98UM8//7zdOpcvd9c6R40apezs7Hx13H333erTp4+qVaumW265xWXH68iRI+rUqZN69uypwYMHO30svby8btqxdPQZnn76acXGxurgwYPq27evtm/froCAALf52Xz33Xd15swZjR49ulDH05V/h0aOHGn7c7NmzfTRRx8pKSlJfn5+blNnXl6eJOn555/X/fffr88//1ytWrVSUlKSGjVq5BY1Xu7w4cNas2aN2rZtK8m9vnPDMDR06FAFBgZq06ZN8vb2Vp8+ffTtt9/qwoULblNn+fLl1apVK73//vvKyspSq1at1KZNG1mtVvn6+rqkJndGuCkCgwYNsr0ba+rUqfmWz5w5UxcuXLANopQu/oWyWq2aMmWK3SvcFyxYoEaNGqlSpUoOR577+/s7vATi7nX6+fnZBqldqiM3N1e5ubm65557lJ6eflPqcOTo0aNq3769wsPDC/12+SuP5cKFC+2W3+zPEBAQoICAAN1yyy1q27atFi9erG+//dZtfjbXrVunpKSkfO+rWb9+vfr37+82dTpSuXJlGYah5ORkt6mzatWqkqRGjRrZ2jw8PFSnTh3Vrl1b8fHxLq/xcrNnz1alSpUUHBysjIwMSe7z7+a6deu0fPlynTp1Sn5+fpKkO+64Q4cPH9Z///tft6lTkmrUqKGtW7dq7ty5euGFF3T06FFlZ2erTp06SkpKcklN1xIUFKQtW7bYtR07dsy2rLgw5qYIdOrUSdnZ2crJyVFkZKTdsgsXLmjOnDmaMGGCdu7caZt27dqlatWqaf78+Xb9g4ODVbdu3QJvqTNDnZ06ddJff/2l1NRU3XnnnZo9e7YsFstNr0O6eMYmIiJCoaGhmj17tt0b6K/1GdzhWF5NVlaW29T5zjvvaNeuXbZ9rFy5UpJ022236bXXXnObOh05efKkJCkwMNBt6gwNDZXVatX+/fttbXl5eUpOTlb79u3dosZLDMPQ7Nmz1a9fP7u/X+5yLM+dOydJDv/u5+XluU2dl4uJiVFOTo4yMjLk5eWle++91+U1FSQsLEy7d+/W8ePHbW2JiYny8/OzC+dFjTM3RcDT01P79u2z/flyl/5HEBsba5eWJen+++/XzJkzHT5LoSDnzp1TWlqaXZvValWFChUkXXyewMmTJ5WSkqLc3FydPHlSZ86cUWZmpsqVK+eyOv/66y/l5ORIktLS0lS2bFk1bNhQb7/9tk6cOKHz58/rr7/+uqnH61KwqVWrlt566y2dOHHC1uda/6O49J3/9NNP2r17t06ePKmcnBydPHlS77777k37DN99952+//573XnnnapQoYJ+/fVXbdiwQT4+PgoLC3Obn80rb1MtV66cJKls2bKqUaOGJLlFnUlJSfruu+/Uvn17+fr6KikpSVu2bFFwcLDt75g71Onn56fHHntMY8eOVXBwsNLT07Vr1y5JUu/evdWnTx+X13jJunXr9Pvvv+vhhx/WuHHjbO3u8rMZFhamChUqqH///hozZoy8vb21detWnTt3TtHR0W5TpyT99ttv2r59u8qVK6cRI0boxRdf1Pjx4+2Ciat/5+zcuVOSVK9ePZUrV04dO3ZUo0aN9NBDD+mNN95QWlqaXnjhBQ0dOrR43zxebKN5TO7S4NKCXBrc1aVLF6Nz584O+3z33XeGJGPXrl0Ob8u7Urt27QxJ+abIyEi7uhz1uXwgmavqDAwMNAzj4sAzR8sl3dTjdbU6HHH0ndeqVcvh+jfrM/zwww9G+/btjYoVKxpWq9WoXbu2ccstt9j9TFzJVT+bl7t8QLE71blt2zbj9ttvN/z9/Q0vLy/j1ltvNVq1amV07drVreo0jIu3Vj/11FNGYGCgUapUKaNy5crGnj173KpGwzCMmJgYIzw83DAM9/138/vvvzc6duxoVKxY0fD19TUCAgKMO+64w63q7N+/v1GjRg2jYsWKRpkyZYxmzZoZc+bMcfmxK8zvnOTkZCMqKsrw9vY2AgICjKeeesrIyckpcL9FwWIY17g3DAAAoARhzA0AADAVwg1QgKioKJUrV87h9Prrr7u6PABAAbgsBRTgyJEjdu+VuVzFihWv+SRjAIBrEG4AAICpcFkKAACYCuEGAACYCuEGAACYCuEGACRZLBYtW7as0P1feukltWjR4qp9BgwYoB49etxQXQCcR7gB/uYGDBggi8Xi8JHsQ4cOlcVi0YABA/ItS0pKkqenp6Kjo/MtS05OlsVisU2VKlVSx44dtWPHDlufiIgIuz6XpoIeDd+1a1d16tTJ4bJNmzbJYrHohx9+KOSnzi81NVVRUVHXvT4A90G4AaDg4GAlJCTY3fp+/vx5zZs3L997oS6ZOXOm/v3vf2vjxo06evSowz5ffvmlUlNTtWbNGmVmZioqKsr2dnhJGjx4sFJTU+2mN954w+G2YmNjlZiYqMOHD+dbNnv2bLVu3VrNmjVz4lNflJ2dLeni+8SK9V03AG4awg0AtWrVSsHBwfrkk09sbZ988olq1qypli1b5uufmZmpBQsWaMiQIYqOjlZ8fLzD7VaqVElBQUFq3bq13nrrLR07dkzfffedbbmPj4+CgoLsJj8/P4fb6tKliypXrpxvX5mZmVq0aJFiY2P1559/KiYmRtWrV5ePj4+aNm2a7y3IERERGjZsmIYPH66AgADbm56vvCz1zDPP6JZbbpGPj4/q1KmjF1980fby18u9//77Cg4Olo+Pj3r16qX09HSH9UsX3zIdFxenkJAQeXt7q3nz5lq8eLFt+alTp/Tggw+qcuXK8vb2Vv369TV79uwCtwfAMcINAEnSoEGD7H6Rzpo1SwMHDnTYd+HChWrYsKEaNGigvn37atasWbrWI7O8vb0l/e9MibNKlSqlfv36KT4+3m5fixYtUm5urmJiYnT+/HmFhoZqxYoV2rNnjx555BE99NBD2rJli922/vvf/6pMmTL65ptvNH36dIf78/X1VXx8vH788UdNnjxZH3zwgSZOnGjX58CBA1q4cKE+//xzrV69Wjt27NDjjz9e4GeIi4vTnDlzNH36dO3du1cjRoxQ3759tWHDBknSiy++qB9//FGrVq3Svn37NG3aNAUEBFzX8QL+1or1tZwA3N6lNzUfP37csFqtRnJyspGcnGx4eXkZJ06csL1t+HLh4eHGpEmTDMMwjJycHCMgIMDuLcBXvnH41KlTxn333WeUK1fOSEtLMwzj4huHS5cubZQtW9Zumjt3boG17tu3L98bh++66y6jb9++Ba4THR1tPPXUU7b5du3aGS1btszXT5KxdOnSArfz5ptvGqGhobb5sWPHGp6ensbhw4dtbatWrTI8PDyM1NRUwzDs34J9/vx5w8fHx9i8ebPddmNjY42YmBjDMAyja9euxsCBAwusAUDhlHJxtgLgJipXrmy7xGQYhqKjox2eNdi/f7+2bNmipUuXSrp4RqV3796aOXOmIiIi7PqGh4fLw8NDZ8+eVZ06dbRgwQJVqVLFtvzBBx/U888/b7fO5cuv1LBhQ4WHh2vWrFmKiIjQgQMHtGnTJr3yyiuSpNzcXL3++utauHChjhw5ouzsbGVlZcnHx8duO6Ghodc8HgsWLNA777yjX3/9VZmZmbpw4UK+S2Y1a9ZU9erVbfNhYWHKy8vT/v37FRQUZNf3wIEDOnfunO6991679uzsbNulvyFDhuj+++/X9u3b1bFjR/Xo0UPh4eHXrBWAPcINAJtBgwZp2LBhkqSpU6c67DNz5kxduHBB1apVs7UZhiGr1aopU6bI39/f1r5gwQI1atRIlSpVUvny5fNty9/fX/Xq1XOqxtjYWP373//W1KlTNXv2bNWtW1ft2rWTJL355puaPHmyJk2apKZNm6ps2bIaPnx4vkthZcuWveo+kpKS9OCDD+rll19WZGSk/P39lZCQoAkTJjhV6+UyMzMlSStWrLALRJJsA5mjoqJ08OBBrVy5UomJibrnnns0dOhQvfXWW9e9X+DviDE3AGw6deqk7Oxs5eTk2AbaXu7ChQuaM2eOJkyYoJ07d9qmXbt2qVq1avkG7wYHB6tu3boOg8316tWrlzw8PDRv3jzNmTNHgwYNksVikSR988036t69u/r27avmzZurTp06+vnnn53ex+bNm1WrVi09//zzat26terXr6+DBw/m65eSkmJ3p9i3334rDw8PNWjQIF/fRo0ayWq1KiUlRfXq1bObgoODbf0qV66s/v37a+7cuZo0aZJmzJjhdP3A3x1nbgDYeHp6at++fbY/X2n58uU6deqUYmNj7c7QSNL999+vmTNnFvicGkfOnTuntLQ0uzar1aoKFSoUuE65cuXUu3dvjR49WhkZGXbP4Klfv74WL16szZs3q0KFCnr77bd17NgxNWrUqNA1XdpOSkqKEhISdNttt2nFihW2y3CX8/LyUv/+/fXWW28pIyNDTzzxhHr16pXvkpR0cYDyf/7zH40YMUJ5eXm68847lZ6erm+++UZ+fn7q37+/xowZo9DQUDVu3FhZWVlavny5br31VqdqB8CZGwBX8PPzK/B27JkzZ6pDhw75go10Mdxs3brVqQfpffDBB6patardFBMTc831YmNjderUKUVGRtpdHnvhhRfUqlUrRUZGKiIiQkFBQdf1hOBu3bppxIgRGjZsmFq0aKHNmzfrxRdfzNevXr16+uc//6nOnTurY8eOatasmd57770Ct/vqq6/qxRdfVFxcnG699VZ16tRJK1asUEhIiCSpTJkyGj16tJo1a6a2bdvK09NTCQkJTtcP/N1ZDOMa928CAACUIJy5AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApvL/s2EKz3IU2acAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "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", + "mape_values = [mape1, mape2, mape2_1, mape3, mape4, mape5, mape6, mape7, mape8, mape8_1, 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", + "labels = ['MAPE1', 'MAPE2', 'MAPE2_1', 'MAPE3', 'MAPE4', 'MAPE5', 'MAPE6', 'MAPE7', 'MAPE8', 'MAPE2_1', 'MAPE9', 'MAPE10']\n", "\n", "# Plotting the bar graph\n", - "plt.bar(labels, mape_values, color='purple')\n", + "plt.bar(labels, mape_values)\n", "plt.xlabel('MAPE Variables')\n", "plt.ylabel('MAPE Values')\n", "plt.title('Bar Graph of MAPE')\n", @@ -1941,24 +7000,60 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 99, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bCF5ZehcARcw", + "outputId": "ed3103b5-2636-48c5-82ba-60f8b3dfd729" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Length of labels: 12\n", + "Length of mape_values: 10\n" + ] + } + ], + "source": [ + "print(\"Length of labels:\", len(labels))\n", + "print(\"Length of mape_values:\", len(mape_values))" + ] + }, + { + "cell_type": "code", + "execution_count": 97, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "ZDPV0M5rDTi6", - "outputId": "9db63164-3f42-47be-d302-d80d381d9b91" + "outputId": "2b5b43fb-f025-41ff-dc55-6193541132e0" }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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6dMHffr00Xv8lStXom7duliwYAEAoHHjxjh69CgWLVqEoKCgyiqTiIiIqqAqdU5OUlISAgMDtYYFBQUhKSnJRBURERGRuTLpnhxDpaenw93dXWuYu7s7srOzce/ePdjY2JSZJj8/H/n5+dL77OzsSq+TiIiITK9K7cmpiOjoaDg6OkovLy8vU5dEpSkUpnsRUdXCbQUZqEqFHA8PD2RkZGgNy8jIgIODg869OAAwdepUZGVlSa+rV68+iVLND8MEEdHThdv9qnW4KiAgAN98843WsPj4eAQEBJQ7jUqlgkqlquzSiMhcmXKDK4Tplk1Ept2Tk5OTg9OnT+P06dMA7l8ifvr0aaSmpgK4vxcmLCxMGn/s2LH4888/8e677+L8+fNYvnw5Nm/ejMmTJ5uifCIiIjJjJt2T8/PPP6Nbt27S+4iICABAeHg4YmJikJaWJgUeAKhbty727t2LyZMnY8mSJahduza++OILXj5ORGRMptr7xT1fZGQKIZ6uXpWdnQ1HR0dkZWXBwcHB1OU8Oea6y95c6yL5YB8znLmGHHOty1zJrO9X5Pe7Sp14TERERKQvhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlS1MXQEREVKXJ7GnfcsI9OURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkS5amLoCIDKRQmGa5Qjz8c3Oti4ieWtyTQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJsBEhGZgqlungjwBor01OCeHCIiIpIl7skxNt7anoiIyCxwTw4RERHJEvfkEOnC8yWIiKo87skhIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZMnnIWbZsGXx8fKBW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tRAREREZjV4hZ9euXejTpw+srKywa9euh477wgsvGKUwIiIioseh1yXkSqUS6enpcHNzg1JZ/rnKCoUCxcXFRi3Q2HgJuQlUxUsczbUugH3sQeZaF8A+ZijWZbiq2scqoCK/33rtydFoNDr/TURERGSuDL6EXJfbt28bYzZERERERmNwyJk3bx5iY2Ol94MGDYKLiwtq1aqFM2fOGLU4IiIioooyOOSsXLkSXl5eAID4+HgcOnQI+/fvR58+ffDOO+8YvUAiIiKiijD4EvL09HQp5OzZsweDBw9Gr1694OPjg/bt2xu9QCIiIqKKMHhPjrOzM65evQoA2L9/PwIDAwEAQgizv7KKiIiInh4G78l58cUXMXToUDRo0AA3b95Enz59AAC//PILfH19jV4gERERUUUYHHIWLVoEHx8fXL16FR9//DHs7OwAAGlpaRg3bpzRCyQiIiKqCL1uBignvBmgCVTFm1WZa10A+9iDzLUugH3MUKzLcFW1j1VApd0MkI91ICIioqqGj3UwNv5Po6yq+D8Nc60LYB97kLnWBbCPGYp1Ga6q9rEK4GMdiIiIiP6fUR7rQERERGRuDA45b7zxBj799NMyw5cuXYo333zTGDURERERPTaDQ862bdvQqVOnMsM7duyIrVu3GqUoIiIiosdlcMi5efMmHB0dywx3cHDAjRs3jFIUERER0eMyOOT4+vpi//79ZYbv27cP9erVM0pRRERERI/L4DseR0REYMKECcjMzET37t0BAAkJCViwYAEWL15s7PqIiIiIKsTgkPPKK68gPz8fH374IebMmQMA8PHxwYoVKxAWFmb0AomIiIgq4rEe65CZmQkbGxvp+VVVAW8GaAJV8WZV5loXwD72IHOtC2AfMxTrMlxV7WMVUJHf7wrdJ6eoqAiHDh1CXFwcSjLStWvXkJOTU5HZERERERmdwYerrly5gt69eyM1NRX5+fno2bMn7O3tMW/ePOTn52PlypWVUScRERGRQQzekzNp0iS0adMG//77L2xsbKThAwcOREJCglGLIyIiIqoog/fkHDlyBD/88AOsra21hvv4+OCff/4xWmFEREREj8PgPTkajUbnk8b//vtv2NvbG6UoIiIiosdlcMjp1auX1v1wFAoFcnJyEBkZib59+1aoiGXLlsHHxwdqtRrt27fH8ePH9Zpu06ZNUCgUGDBg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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "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", + "precision_values = [precision1, precision2, precision2_1, precision3, precision4, precision5, precision6, precision7, precision8, precision8_1, 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", + "labels = ['Precision1', 'Precision2', 'Precision2_1', 'Precision3', 'Precision4', 'Precision5', 'Precision6', 'Precision7', 'Precision8', 'Precision8_1', 'Precision9', 'Precision10']\n", "\n", "# Plotting the bar graph\n", "plt.bar(labels, precision_values, color='red')\n", @@ -1970,24 +7065,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 98, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 472 }, "id": "39LBleNeDeuw", - "outputId": "3c6c40bc-f1da-44fb-da14-25ec6d6cf278" + "outputId": "66c1cd08-96bb-46bb-afd3-7792e2b71345" }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFVUlEQVR4nO3df3zO9eL/8ee1za7NMD83msUwSjKaH01Gq62hRDkSObZZOYo4dnxEYeQci/Krg/TD73OKQh3FEc1RiSizQsjv0WHzc2Njy/b+/uG767hs2DWba3t73G+363Zr773f1+u59/V2Xc/evy6LYRiGAAAATMLF2QEAAABKEuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGQLk1btw4WSwWnTp1qtTHWrNmjVq0aCEPDw9ZLBadO3eu1McsLRaLRePGjbP9vGDBAlksFh0+fNhpmYCSRLkByqD8D5urHz4+PgoLC9O///3v257n888/V9euXeXr6yt3d3dVr15dHTp00JQpU5SRkXHb89xup0+f1jPPPCNPT0/NmjVLixcvlpeXV6HzXvvaubm5yc/PT9HR0frtt99uc3LgzuTm7AAAru/1119XQECADMNQamqqFixYoC5duujzzz/XE088Uerj5+XlKTY2VgsWLND999+vl156Sf7+/jp//rw2b96s0aNHa/Xq1UpMTCz1LM70ww8/6Pz585owYYLCw8OLtEz+a3fp0iV9//33WrBggTZu3KidO3fKw8OjlBMDdzbKDVCGde7cWa1atbL9HBsbK19fX3300UclUm7y8vKUk5Nz3Q/byZMna8GCBRo2bJimTJkii8Vi+93QoUN1/PhxLVq06JbGKA/S0tIkSVWrVi3yMle/ds8//7xq1qypSZMmaeXKlXrmmWdKIyaA/4/DUkA5UrVqVXl6esrNzf7/S9566y21a9dONWrUkKenp4KDg7Vs2bICy1ssFg0ePFj//Oc/dd9998lqtWrNmjWFjpWVlaVJkybpvvvu05tvvmlXbPLVqVNHr7zySpHHKE7OJk2ayMPDQ8HBwfrmm28KzXru3DlFR0eratWq8vb2VkxMjLKysgpfidf45JNPFBwcLE9PT9WsWVN9+/a1O3z08MMPKyoqSpLUunVrWSwWRUdHF+m5rxYaGipJOnDggN30PXv26A9/+IOqV68uDw8PtWrVSitXriz0bxw2bJjq168vq9WqunXrql+/frbzjXJycjR27FgFBwfL29tbXl5eCg0N1X/+8x+HswLlHXtugDIsPT1dp06dkmEYSktL09///ndduHBBffv2tZtvxowZevLJJ/Xcc88pJydHS5YsUc+ePfXFF1/o8ccft5t3/fr1+vjjjzV48GDVrFlT9evXL3TsjRs36ty5cxo+fLhcXV0dyn29MRzJ+fXXX2vp0qUaMmSIrFarZs+erU6dOmnr1q1q1qyZ3bzPPPOMAgIClJCQoKSkJH3wwQfy8fHRpEmTbphzwYIFiomJUevWrZWQkKDU1FTNmDFD3333nbZv366qVavqtddeU5MmTfTee+/ZDjU1bNjQofUhyXaybrVq1WzTdu3apYceekh+fn4aOXKkvLy89PHHH6t79+5avny5nnrqKUnShQsXFBoaqt27d6t///564IEHdOrUKa1cuVLHjh1TzZo1lZGRoQ8++EC9e/fWCy+8oPPnz2vu3LmKjIzU1q1b1aJFC4czA+WWAaDMmT9/viGpwMNqtRoLFiwoMH9WVpbdzzk5OUazZs2MRx55xG66JMPFxcXYtWvXTTPMmDHDkGR89tlndtMvX75snDx50u6Rl5dXpDEcySnJ+PHHH23Tjhw5Ynh4eBhPPfWUbVp8fLwhyejfv7/d8k899ZRRo0aNG/59OTk5ho+Pj9GsWTPj4sWLtulffPGFIckYO3asbVr+6/HDDz/c8Dmvnverr74yTp48aRw9etRYtmyZUatWLcNqtRpHjx61zfvoo48a999/v3Hp0iXbtLy8PKNdu3ZGYGCgbdrYsWMNScaKFSsKjJe/7i9fvmxkZ2fb/e7s2bOGr69vgfUjyYiPjy+Q+dChQzf9+4DygMNSQBk2a9YsrVu3TuvWrdM//vEPhYWF6fnnn9eKFSvs5vP09LT999mzZ5Wenq7Q0FAlJSUVeM6OHTuqadOmNx07/yqoSpUq2U3fsWOHatWqZfc4ffp0kcZwJGdISIiCg4NtP999993q1q2bvvzyS+Xm5trNO3DgQLufQ0NDdfr06RteyfXjjz8qLS1NL730kt35QI8//rjuuecerVq16rrLFkV4eLhq1aolf39//eEPf5CXl5dWrlypunXrSpLOnDmj9evX65lnntH58+d16tQpnTp1SqdPn1ZkZKT27dtnOzy2fPlyBQUF2fbkXC3/cKGrq6vc3d0lXTnP6cyZM7p8+bJatWpV6PoFzIzDUkAZ1qZNG7sTinv37q2WLVtq8ODBeuKJJ2wfZl988YX++te/Kjk5WdnZ2bb5CztPJiAgoEhjV65cWdKVQyJXa9SokdatWydJWrRokRYvXlzkMRzJGRgYWGBa48aNlZWVpZMnT6p27dq26XfffbfdfPmHfs6ePasqVaoUmuXIkSOSpCZNmhT43T333KONGzcWulxRzZo1S40bN1Z6errmzZunb775Rlar1fb7/fv3yzAMjRkzRmPGjCn0OdLS0uTn56cDBw6oR48eNx1z4cKFmjJlivbs2aPff//dNr2orzlgFpQboBxxcXFRWFiYZsyYoX379um+++7Tt99+qyeffFIdOnTQ7NmzVadOHVWoUEHz58/Xhx9+WOA5rt57ciP33HOPJGnnzp3q1q2bbXqlSpVsl0NfrwAUNoajOR1xvXOCDMO4pee9FVcX0+7du6t9+/bq06eP9u7dq0qVKikvL0+SNHz4cEVGRhb6HI0aNSryeP/4xz8UHR2t7t276//+7//k4+MjV1dXJSQkFDiJGTA7yg1Qzly+fFnS//aoLF++XB4eHvryyy/t9gzMnz//lsYJDQ2Vt7e3lixZolGjRsnF5daOYjuac9++fQWm/frrr6pYsaJq1ap1S1kkqV69epKkvXv36pFHHrH73d69e22/Lwn5JSMsLEwzZ87UyJEj1aBBA0lShQoVbnrvnIYNG2rnzp03nGfZsmVq0KCBVqxYYbcnLD4+/tb/AKCc4ZwboBz5/ffftXbtWrm7u+vee++VdOWD02Kx2J2HcvjwYX322We3NFbFihU1YsQI7dy5UyNHjix0L4gje0Yczbl582a7c0WOHj2qf/3rX3rsscccvnqrMK1atZKPj4/mzJljd4js3//+t3bv3l3g6q1b9fDDD6tNmzaaPn26Ll26JB8fHz388MN69913dfz48QLznzx50vbfPXr00E8//aRPP/20wHz5r0H+Orn6NdmyZYs2b95con8HUB6w5wYow/79739rz549kq6cf/Hhhx9q3759GjlypO1ckscff1xTp05Vp06d1KdPH6WlpWnWrFlq1KiRfv7551saf+TIkdq9e7fefPNNrV27Vj169FDdunV19uxZJSUl6ZNP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g5WYmGiblpeXp8TERIWEhBSY/5577tGOHTuUnJxsezz55JMKCwtTcnIye2QAAIDj3y1V0uLi4hQVFaVWrVqpTZs2mj59ujIzMxUTEyNJ6tevn/z8/JSQkCAPDw81a9bMbvmqVatKUoHpAADgzuT0ctOrVy+dPHlSY8eO1YkTJ9SiRQutWbPGdpJxSkqKXFycuoMJAACUI8X+4szyii/OvP3K4xe7ldVcEtvYtcpqLoltzFHkclx53caK47Z8cSYAAEBZRLkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmUibKzaxZs1S/fn15eHiobdu22rp163Xnff/99xUaGqpq1aqpWrVqCg8Pv+H8AADgzuL0crN06VLFxcUpPj5eSUlJCgoKUmRkpNLS0gqdf8OGDerdu7f+85//aPPmzfL399djjz2m33777TYnBwAAZZHFMAzDmQHatm2r1q1ba+bMmZKkvLw8+fv76+WXX9bIkSNvunxubq6qVaummTNnql+/fjedPyMjQ97e3kpPT1eVKlVuOf+1LCX+jEVzsxfRWbmkG2cjV0Fl9bUkl+PYxhxDLseV122sOBz5/HbqnpucnBxt27ZN4eHhtmkuLi4KDw/X5s2bi/QcWVlZ+v3331W9evVCf5+dna2MjAy7BwAAMC+nlptTp04pNzdXvr6+dtN9fX114sSJIj3HK6+8orvuusuuIF0tISFB3t7etoe/v/8t5wYAAGWX08+5uRVvvPGGlixZok8//VQeHh6FzjNq1Cil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burRo4d27dqlrKwsRURE2M2fk5Ojli1bSpKSk5MVGhpq+z+Va6Wmpmr06NHasGGD0tLSlJubq6ysLKWkpDicLSoqSkePHi31bJmZmbZxAwMDFRYWpgYNGqhz586Srpxkd+24+ScQxsfHa9OmTaW6Tq62c+dOdevWTfHx8dq/f7/Dr2VWVpaM/39D79J8La/ONXHiROXm5qpfv34aNmyYU7exsLAw+fv767ffflOdOnXk5uamjh072tZNWdn281/Lu+66S5MnT3b6OmvevLmmTp2qiIgI3X333Ro1apTat2+vDh06KDIy0nZo73bnunp9nTlzRp9//rkeffRRvffee05/r7h48aLthPrGjRvr3nvv1aJFi9StW7dS24YuXryo2NhYPfTQQ/roo4+Um5urt956S4mJierYsaPefffdIr9XXLx40fZt2iX5OoaFhem1115TWFiYunbtKh8fH02YMEHZ2dl68803FRoaKkm2PSPffvutgoODSzxHeUC5cZCXl5caNWok6cpu1KCgIM2dO9f2xZ2rVq2Sn5+f3TL5h0A8PT1v+NxRUVE6ffq0ZsyYoXr16slqtSokJKTAuR5FydatWzdNnjy51LPl5eXZjTt48GDFx8dr6dKltmWvHnffvn3q27ev+vTpo9GjR6tHjx6luk7y/fLLL3r00Uc1YMAAjR49WtHR0Q6/ls8995ztd6X5Wl6d66OPPlJQUJBOnjypESNGaODAgVq0aJGaN29ut8zt2Ma8vLyUlJSkHTt2SLpyrsG8efNsv+/Ro4fGjBlz23PlZ7v2tXzkkUeUmpoqyXn/Lr28vGzbzAcffKDHH3/cbhsbNGhQgZPEb1euq9dXzZo15e/vr3r16kly7nvFd999pylTpmjz5s1ycXGR1WqVr6+vKlaseMMP2lvdhj788EMdPnzYNm7+tIoVKyojI8Oh94oRI0YoMzPzltZXYbm9vLxUv359SdK4ceMUFRWluXPnqkePHnrzzTe1bNkyNWnSRMeOHVPnzp318ccfq3Xr1iWeo7hq165t+zeZL//n/HOxSgrl5ha4uLjo1VdfVVxcnH799VdZrValpKTY/m/2Ws2bN9fChQv1+++/F9qev/vuO82ePVtdunSRJB09etR23NZR+ZeCjx49ulSz5V+WmC9/nQwdOlTSlf+DyB93165dio6OVmxsrO3yv9uxTnbt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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "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", + "recall_values = [recall1, recall2, recall2_1, recall3, recall4, recall5, recall6, recall7, recall8, recall8_1, 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", + "labels = ['Recall1', 'Recall2', 'Recall2_1', 'Recall3', 'Recall4', 'Recall5', 'Recall6', 'Recall7', 'Recall8', 'Recall8_1', 'Recall9', 'Recall10']\n", "\n", "# Plotting the bar graph\n", "plt.bar(labels, recall_values, color='cyan')\n", @@ -1999,7 +7105,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 98, "metadata": { "id": "13cZXvb0DsvK" }, @@ -2009,7 +7115,8 @@ ], "metadata": { "colab": { - "provenance": [] + "provenance": [], + "toc_visible": true }, "kernelspec": { "display_name": "Python 3 (ipykernel)", @@ -2026,7 +7133,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.1" + "version": "3.12.2" } }, "nbformat": 4, diff --git a/Python File/Stock_Price_Prediction_BACKUP_19716.ipynb b/Python File/Stock_Price_Prediction_BACKUP_19716.ipynb new file mode 100644 index 0000000..c58750d --- /dev/null +++ b/Python File/Stock_Price_Prediction_BACKUP_19716.ipynb @@ -0,0 +1,7974 @@ +{ + "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", +<<<<<<< HEAD + "execution_count": 4, +======= + "execution_count": 2, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SOQbXSiB-g5G", + "outputId": "55ee6ec8-9146-4ebf-c2fe-b4b06bc3a5c4" + }, +<<<<<<< HEAD + "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')" +======= + "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')\n", + "df = pd.read_csv('SBIN.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Analysis and Visualization" +>>>>>>> upstream/main + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "Sc4id6VxL8BS", + "outputId": "78207ea2-5b80-47a2-a1b1-0548765b6455" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateOpenHighLowCloseAdj CloseVolume
001-01-199618.69114718.97892218.54018418.82324012.40993143733533.0
102-01-199618.89400518.96476717.73819218.22410612.01493156167280.0
203-01-199618.32789218.56848917.64383917.73819211.69457768296318.0
304-01-199617.50231217.83254217.22397217.67686311.65414286073880.0
405-01-199617.73819217.78536617.45985217.57779311.58882776613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "execution_count": null, + "metadata": {}, + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Print first 5 rows of dataset\n", + "df.head()" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 7, + "metadata": { + "id": "7LaYGXsfN-8y" + }, +======= + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# basic dataset features information\n", + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Summary of numerical columns\n", + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Checking for null values\n", + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, +>>>>>>> upstream/main + "outputs": [], + "source": [ + "# Drop the 'Date' and 'Adj Close' columns\n", + "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "pqbTBdnBOKJc", + "outputId": "42ed663c-ae0f-43d7-a7bd-18bb37dfef6f" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolume
018.69114718.97892218.54018418.82324043733533.0
118.89400518.96476717.73819218.22410656167280.0
218.32789218.56848917.64383917.73819268296318.0
317.50231217.83254217.22397217.67686386073880.0
417.73819217.78536617.45985217.57779376613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "execution_count": null, + "metadata": {}, + "outputs": [], +>>>>>>> upstream/main + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 9, +======= + "execution_count": 5, +>>>>>>> upstream/main + "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", +<<<<<<< HEAD + "execution_count": 10, +======= + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Checking for null values\n", + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Adding Indicators" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SMA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Its the avg of stock price over a specific time period\n", + "\n", + "SMA = (sum of closing price os past n days) / n\n", + "\n", + "It helps identify trends by filtering out shortterm fluctuations\n", + "\n", + "Price above SMA indicate Uptrend and price below SMA indicate lowertrend" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "df[\"SMA_10\"] = df[\"Close\"].rolling(window=10).mean()\n", + "df[\"SMA_50\"] = df[\"Close\"].rolling(window=50).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "df.dropna(subset=['SMA_10', 'SMA_50'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolumeSMA_10SMA_50
4922.64921822.73413522.27652722.63506539637704.023.10257920.537146
5022.17273922.36144321.83779022.11612939109363.022.92944320.603004
5122.09254122.18689221.88968322.08310527429706.022.75725020.680184
5222.07366922.68695821.96044722.61147727421227.022.63506520.777649
5322.69167522.88981422.46523122.58788936343129.022.62657320.875870
\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 \n", + "49 20.537146 \n", + "50 20.603004 \n", + "51 20.680184 \n", + "52 20.777649 \n", + "53 20.875870 " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RSI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is a momentum indicator used to measure the speed and change of price movements. It ranges from 0 to 100 and helps identify whether a stock is overbought or oversold. \n", + "\n", + "RSI > 70: Overbought \n", + "RSI < 30: Oversold" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "delta = df['Close'].diff(1)\n", + "\n", + "gain = delta.where(delta > 0, 0)\n", + "loss = -delta.where(delta < 0, 0)\n", + "\n", + "avg_gain = gain.rolling(window=14).mean()\n", + "avg_loss = loss.rolling(window=14).mean()\n", + "\n", + "rs = avg_gain / avg_loss # Relative Strength\n", + "df['RSI'] = 100 - (100 / (1 + rs))\n", + "\n", + "df.dropna(subset=['RSI'], inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Representing RSI Graphically" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAMWCAYAAADs4eXxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUZcLG4SeBEGqCICSgNEVFsCBIyWJFBBELih0FFcGCvaN8YFtxdVdXFNuqYC/YZVVARFSKAgqLgAiIgkIoIonUtPn+eD05Z2bOTGYm0/O7ryvX6WfeSSaQ57wtw+PxeAQAAAAAAKIuM9EFAAAAAAAgXRG6AQAAAACIEUI3AAAAAAAxQugGAAAAACBGCN0AAAAAAMQIoRsAAAAAgBghdAMAAAAAECOEbgAAAAAAYoTQDQAAAABAjBC6AQCowT7//HNlZGTorbfeSsjrT5o0SRkZGfr5558T8voAAMQaoRsAgDhbsmSJzjrrLLVp00Z169bVPvvsoxNPPFGPPfaY13n333+/3nvvvcQUMgQ///yzMjIyKr9q1aql1q1b64wzztCiRYsSXTwAAJJChsfj8SS6EAAA1BRz5szR8ccfr9atW2vo0KHKz8/XunXrNG/ePK1evVqrVq2qPLdhw4Y666yzNGnSpJiV5/PPP9fxxx+vyZMn66yzzgrr2p9//lnt2rXT+eefr5NPPlnl5eVavny5nnzySe3Zs0fz5s1T586dg96jvLxcpaWlys7OVkZGRjXeCQAAyal2ogsAAEBN8ve//125ubmaP3++Gjdu7HVs06ZNiSlUNXXp0kUXXnhh5XavXr102mmn6cknn9TTTz/tes2OHTvUoEED1apVS7Vq1YpXUQEAiDualwMAEEerV69Wp06d/AK3JDVv3rxyPSMjQzt27NALL7xQ2Xz74osvrjz+3XffqX///srJyVHDhg11wgknaN68eX733LZtm2644Qa1bdtW2dnZ2nfffTVkyBBt2bIlYBn37NmjU045Rbm5uZozZ07Y77F3796SpDVr1kiy+23PmjVLV111lZo3b659993X65hvn+6PP/5Yxx57rBo1aqScnBx169ZNr776qtc5X3/9tU466STl5uaqfv36OvbYYzV79uywywsAQCxR0w0AQBy1adNGc+fO1ffff69DDjkk4HkvvfSSLrvsMnXv3l0jRoyQJO2///6SpKVLl+roo49WTk6Obr31VmVlZenpp5/Wcccdp1mzZqlHjx6SpO3bt+voo4/W8uXLdemll6pLly7asmWLPvjgA/3666/ae++9/V53165dOv3007VgwQJ9+umn6tatW9jvcfXq1ZKkpk2beu2/6qqr1KxZM40ZM0Y7duwIeP2kSZN06aWXqlOnTho1apQaN26s7777Tp988okuuOACSdJnn32m/v37q2vXrho7dqwyMzM1ceJE9e7dW19++aW6d+8edrkBAIgFQjcAAHF08803q3///urcubO6d++uo48+WieccIKOP/54ZWVlVZ534YUX6oorrtB+++3n1XRbkkaPHq3S0lJ99dVX2m+//SRJQ4YM0UEHHaRbb71Vs2bNkiQ99NBD+v777/XOO+/ojDPO8LrebUiX7du365RTTtHSpUv12WefVdkf27Jz505t2bJF5eXl+uGHH3TDDTdIks4++2yv85o0aaIZM2YEbU5eVFSka6+9Vt27d9fnn3+uunXrVh6zyuzxeHTFFVfo+OOP18cff1zZF/zyyy9Xp06dNHr0aE2bNi2ksgMAEGs0LwcAII5OPPFEzZ07V6eddpoWL16sBx98UP369dM+++yjDz74oMrry8vLNW3aNA0cOLAycEtSixYtdMEFF+irr75ScXGxJOntt9/W4Ycf7hW4Lb6DlhUVFalv37764Ycf9Pnnn4ccuCVp7NixatasmfLz83Xcccdp9erV+sc//qEzzzzT67zhw4dX2X97+vTp+vPPP3X77bd7BW5nmRctWqSVK1fqggsu0O+//64tW7Zoy5Yt2rFjh0444QR98cUXqqioCLn8AADEEjXdAADEWbdu3fTOO++opKREixcv1rvvvqtHHnlEZ511lhYtWqSOHTsGvHbz5s3auXOnDjroIL9jBx98sCoqKrRu3Tp16tRJq1ev1qBBg0Iq0/XXX6/du3fru+++U6dOncJ6PyNGjNDZZ5+tzMxMNW7cWJ06dVJ2drbfee3atavyXlbT9GBN71euXClJGjp0aMBzioqKtNdee1X5egAAxBqhGwCABKlTp466deumbt266cADD9Qll1yiyZMna+zYsXEvy+mnn67XX39dDzzwgF588UVlZobeGO6AAw5Qnz59qjyvXr161SliJasW+6GHHgpYI9+wYcOovBYAANVF6AYAIAkceeSRkqQNGzZU7nObt7pZs2aqX7++VqxY4Xfshx9+UGZmplq1aiXJDLz2/fffh/T6AwcOVN++fXXxxRerUaNGevLJJyN5G9VmDRb3/fffq3379kHPycnJCSnsAwCQSPTpBgAgjmbOnOk6iNlHH30kSV7Nxhs0aKBt27Z5nVerVi317dtX77//vtc0Wxs3btSrr76qo446Sjk5OZKkQYMGVTZf9+VWhiFDhmj8+PF66qmndNttt0Xy9qqtb9++atSokcaNG6fdu3d7HbPK3LVrV+2///765z//qe3bt/vdY/PmzXEpKwAAoaCmGwCAOLrmmmu0c+dOnXHGGerQoYNKSko0Z84cvfHGG2rbtq0uueSSynO7du2qTz/9VA8//LBatmypdu3aqUePHrrvvvs0ffp0HXXUUbrqqqtUu3ZtPf3009qzZ48efPDByutvueUWvfXWWzr77LN16aWXqmvXrtq6das++OADPfXUUzr88MP9ynf11VeruLhYd955p3Jzc3XHHXfE5ftiycnJ0SOPPKLLLrtM3bp10wUXXKC99tpLixcv1s6dO/XCCy8oMzNTzz77rPr3769OnTrpkksu0T777KPffvtNM2fOVE5Ojj788MO4lhsAgEAI3QAAxNE///lPTZ48WR999JGeeeYZlZSUqHXr1rrqqqs0evRoNW7cuPLchx9+WCNGjNDo0aO1a9cuDR06VD169FCnTp305ZdfatSoURo3bpwqKirUo0cPvfzyy5VzdEumX/OXX36psWPH6t1339ULL7yg5s2b64QTTtC+++4bsIx33HGHioqKKoP3yJEjY/kt8TNs2DA1b95cDzzwgO69915lZWWpQ4cOlVORSdJxxx2nuXPn6t5779Xjjz+u7du3Kz8/Xz169NDll18e1/ICABBMhsetfRkAAAAAAKg2+nQDAAAAABAjhG4AAAAAAGKE0A0AAAAAQIwQugEAAAAAiBFCNwAAAAAAMULoBgAAAAAgRpinW1JFRYXWr1+vRo0aKSMjI9HFAQAAAAAkOY/Hoz///FMtW7ZUZmbg+mxCt6T169erVatWiS4GAAAAACDFrFu3Tvvuu2/A44RuSY0aNZJkvlk5OTkJLg0AAAAAINkVFxerVatWlXkyEEK3VNmkPCcnh9ANAAAAAAhZVV2UGUgNAAAAAIAYIXQDAAAAABAjhG4AAAAAAGKEPt0hqqioUElJSaKLgTjIyspSrVq1El0MAAAAAGmA0B2CkpISrVmzRhUVFYkuCuKkcePGys/PZ952AAAAANVC6K6Cx+PRhg0bVKtWLbVq1SropOdIfR6PRzt37tSmTZskSS1atEhwiQAAAACkMkJ3FcrKyrRz5061bNlS9evXT3RxEAf16tWTJG3atEnNmzenqTkAAACAiFFtW4Xy8nJJUp06dRJcEsST9YCltLQ0wSUBAAAAkMoI3SGib2/Nws8bAAAAQDQQugEAAAAAiBFCdw2XkZGh9957L9HFCNtxxx2n66+/PtHFAAAAAICgCN1prLCwUNdcc432228/ZWdnq1WrVjr11FM1Y8aMRBet0l133aWMjAxlZGSodu3aatu2rW644QZt37496HXvvPOO7r333jiVEgAAAAAiw+jlaernn39Wr1691LhxYz300EM69NBDVVpaqqlTp2rkyJH64YcfEl3ESp06ddKnn36qsrIyzZ49W5deeql27typp59+2u/ckpIS1alTR02aNElASQEAAAAgPNR0p6mrrrpKGRkZ+uabbzRo0CAdeOCB6tSpk2688UbNmzcv4HVLlixR7969Va9ePTVt2lQjRozwqnX+/PPP1b17dzVo0ECNGzdWr1699Msvv1Qef//999WlSxfVrVtX++23n+6++26VlZUFLWvt2rWVn5+vfffdV+eee64GDx6sDz74QJKpCe/cubOeffZZtWvXTnXr1pXk37x8z549uu2229SqVStlZ2erffv2eu655yqPf//99+rfv78aNmyovLw8XXTRRdqyZUtY31MAAAAACBc13WHyeKSdOxPz2vXrS6EMqr1161Z98skn+vvf/64GDRr4HW/cuLHrdTt27FC/fv1UUFCg+fPna9OmTbrssst09dVXa9KkSSorK9PAgQM1fPhwvfbaayopKdE333xTOdL3l19+qSFDhmj8+PE6+uijtXr1ao0YMUKSNHbs2JDfZ7169VRSUlK5vWrVKr399tt65513As6ZPWTIEM2dO1fjx4/X4YcfrjVr1lSG6m3btql379667LLL9Mgjj2jXrl267bbbdM455+izzz4LuVwAAAAAEC5Cd5h27pQaNkzMa2/fLrlkaD+rVq2Sx+NRhw4dwrr/q6++qt27d+vFF1+sDOuPP/64Tj31VP3jH/9QVlaWioqKdMopp2j//feXJB188MGV19999926/fbbNXToUEnSfvvtp3vvvVe33npryKF74cKFevXVV9W7d+/KfSUlJXrxxRfVrFkz12t+/PFHvfnmm5o+fbr69OlT+dqWxx9/XEcccYTuv//+yn3PP/+8WrVqpR9//FEHHnhgSGUDAAAAgHARutOQx+OJ6Lrly5fr8MMP96od79WrlyoqKrRixQodc8wxuvjii9WvXz+deOKJ6tOnj8455xy1aNFCkrR48WLNnj1bf//73yuvLy8v1+7du7Vz507Vr1/f9XWXLFmihg0bqry8XCUlJRowYIAef/zxyuNt2rQJGLgladGiRapVq5aOPfZY1+OLFy/WzJkz1dDlacnq1asJ3QAAAABihtAdpvr1TY1zol47FAcccIAyMjJiMljaxIkTde211+qTTz7RG2+8odGjR2v69Onq2bOntm/frrvvvltnnnmm33VWX2w3Bx10kD744APVrl1bLVu2VJ06dbyOuzWRd6pXr17Q49u3b6+srfdlPTAAAAAAgFggdIcpIyO0Jt6J1KRJE/Xr108TJkzQtdde6xdat23b5tqv++CDD9akSZO0Y8eOymtmz56tzMxMHXTQQZXnHXHEETriiCM0atQoFRQU6NVXX1XPnj3VpUsXrVixQu3btw+rvHXq1An7GqdDDz1UFRUVmjVrVmXzcqcuXbro7bffVtu2bVW7Nh95AAAAIJlt3Wq69ebmSo0aJbo01cfo5WlqwoQJKi8vV/fu3fX2229r5cqVWr58ucaPH6+CggLXawYPHqy6detq6NCh+v777zVz5kxdc801uuiii5SXl6c1a9Zo1KhRmjt3rn755RdNmzZNK1eurOzXPWbMGL344ou6++67tXTpUi1fvlyvv/66Ro8eHdP32rZtWw0dOlSXXnqp3nvvPa1Zs0aff/653nzzTUnSyJEjtXXrVp1//vmaP3++Vq9eralTp+qSSy5ReXl5TMsGAAAAIDy33y61aiWNH5/okkQHoTtN7bfffvr22291/PHH66abbtIhhxyiE088UTNmzNCTTz7pek39+vU1depUbd26Vd26ddNZZ52lE044obJ/df369fXDDz9UTkE2YsQIjRw5UpdffrkkqV+/fpoyZYqmTZumbt26qWfPnnrkkUfUpk2bmL/fJ598UmeddZauuuoqdejQQcOHD9eOHTskSS1bttTs2bNVXl6u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l4Zfhl69TG33wQeHf22qInQDAAAAQA0QjZru8nLpzz8jL0NOjrm+JtWSE7oBAAAAIE2VlUnnny91724GTfOVGWaH4/Ly6pcp2JRi6Yg+3QAAAACQ5P73PzPw2H33hXfd559Lb70l3Xpr9Gq6ER5CNwAAAAAkucMPN8v/+7/wrvN47PW33vI/Xp3Q3aRJeNfWVIRuAAAAAEhiv/4anfu8/77/vkhC94EHmvXnnqt+mWoCQjcAAAAAJLGff4782oqKqBVDkgndVj/wxo2je+90RegGAAAAgCRWnZG+S0qCH//998DHunf337dzpz1Pd926kZerJiF0AwAAAEASy8qK/Nply4IfX7068DG3eb1r15bWrDHr2dmRl6smIXQDAAAAQBKYNUtavNh/f22fiZ6dg6NV5fbbIy+P20jl27fb69R0h4Z5ugEAAAAgwX79VTruOLNeUWGmB7NYzbktZWXVq/0OlVtNt1NNm287UtR0AwAAAECCrVplr0+d6n3s0Ue9t6sKw9FS1euEO/J5TUXoBgAAAIAEcwbcH3/0PjZ9uvd2OM3L3QZDC5VV8x5Iy5aR37smIXQDAAAAQII5Q/euXd7HfGuU//wz9PsefHDkZbrnHumOOwIfzyRNhoRvEwAAAAAkWGmpvb57t/cx39D9yCOR3TdczZtLf/975NfDIHQDAAAAQII5B0tr08b72LBh3tubNoV+3+qEbkQHoRsAAAAAEmzrVnu9Th3vY82aeW/71oQHU1IS/PgZZ4R+L6enn47supqI0A0AAAAACXb55fa67/zYFRXe287Q/d130oYNge/7ww/++yZNstdfeSXkInpp0iSy62oi5ukGAAAAgCTiG7p9a6ut0L1okdSli1kvLZVqu6S7FSv89110kdSokdStm1SvXmRlrFs3sutqImq6AQAAACCJ+Ibum27y3p42zSyPOsre9/jjod8/M1M680ypVavIyidJ2dmRX1vTELoBAAAAIIk4Q/fOnYGP79hh7/vkE//znNOQVceSJWb6sGeesfdR0x06mpcDAAAAQBJx9tl+8033czwe7223ObOLi/337btv+OU55BDzNXmyvY/QHTpqugEAAAAgidxyi70+frz7Obt2eW+79d3ets0s69e39519duTlco6qTvPy0BG6AQAAACCBgg2c9t137tf4Nh3fssX/nKIis8zNld56Sxo4UBozJuJier1GVlbk96lpaF4OAAAAAAnkW2vdvXvV15SWem+7NSW39uXkSIMGma/q2LPHXvdt3o7AElrTfddddykjI8Prq0OHDpXHd+/erZEjR6pp06Zq2LChBg0apI0bN3rdY+3atRowYIDq16+v5s2b65ZbblFZtEYMAAAAAIAY8x0szTmq+PHHu1/jG7rdWDXmsWgKfvDB0b9nukp4TXenTp306aefVm7Xdkwud8MNN+i///2vJk+erNzcXF199dU688wzNXv2bElSeXm5BgwYoPz8fM2ZM0cbNmzQkCFDlJWVpfvvvz/u7wUAAAAAwuUbuqdMsdebNHG/JpTQbZ0Trabg++9vr2dkROeeNUHCQ3ft2rWVn5/vt7+oqEjPPfecXn31VfXu3VuSNHHiRB188MGaN2+eevbsqWnTpmnZsmX69NNPlZeXp86dO+vee+/Vbbfdprvuukt1nD39AQAAACAJrV3rvb1njxnBvG5d7ybdTt9847/P4/EOw9EO3X37So8+KnXuHJ371RQJH0ht5cqVatmypfbbbz8NHjxYa//6xC1cuFClpaXq06dP5bkdOnRQ69atNXfuXEnS3LlzdeihhyovL6/ynH79+qm4uFhLly6N7xsBAAAAgAj8/rv/PiswOwdVczrrrMDX+G7XjlJVa0aGdO210jHHROd+NUVCa7p79OihSZMm6aCDDtKGDRt099136+ijj9b333+vwsJC1alTR40bN/a6Ji8vT4WFhZKkwsJCr8BtHbeOBbJnzx7tcTwyKnYbdQAAAAAA4sAtWFsDlQWq6XZTWuo9rVe0a7oRmYSG7v79+1euH3bYYerRo4fatGmjN998U/Xq1YvZ644bN0533313zO4PAAAAAKH65BP/fdY0YoFqut0EqukmdCdWwpuXOzVu3FgHHnigVq1apfz8fJWUlGibNaP7XzZu3FjZBzw/P99vNHNr262fuGXUqFEqKiqq/Fq3bl103wgAAAAAhGjSJP99VugOp6bbN6ATupNDUoXu7du3a/Xq1WrRooW6du2qrKwszZgxo/L4ihUrtHbtWhUUFEiSCgoKtGTJEm3atKnynOnTpysnJ0cdO3YM+DrZ2dnKycnx+gIAAACAZHHppdK771LTnQ4S2rz85ptv1qmnnqo2bdpo/fr1Gjt2rGrVqqXzzz9fubm5GjZsmG688UY1adJE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yTjVESK3fr10111m/aCDpF69pFWr7ONlZVJ2dkKKlrIChe7cXGnYsPiWJRhn6H7//cB9oa0a7kAP3P73v8heM1YI3QgXHxUAAJAQv/7qvj9QDThSk7P5eN++0kcfeR+npju6nnsuOvfZsqX693A+QNtvP7tJfDg13b/9Jl17beivGY9+7YRuhIuPCgAASAjnyMZOvlMhIbX5hiDfWm1Cd/hiPR/1889LzZpJ99xTvfs4m3oXFZmRxiWpQQPv84LVdC9bFt5rxjN0M083QkXoBgAAcffLL9Jll7kfe/DB+JYFseUbgoYM8d4mdCcf63dz7Njq3cf5sz33XHs6r0aNvM8LVtNdv777vZcscd9PTTeSER8VAAAQd0cdlegSIF58Q9C2bd7bhO7APB73EBnrmu5o3T/Ugd18a7qXLjVzb3/+uV077uuAA9z3x2M0/EB904FA+KgAAIC4C9SfG+mnqppHQndgAwaY5vi+wTOcUBwotMZDoNDtO26Db033wIHSl19Kxx8v/fCD+z2ys/2bqUvUdCM58VEBAABJZ8aMRJcA0ULojtzHH5vv3957R36P6obu+fMjvzbQz/bYY723fWu6CwvtY851STrrLOmRR8z6d9/535vQjWTERwUAACSdPn38myEjNS1eHPw4odsMOLZ5c+DjvtPo+dZ0v/pq4Frl6s7d3b174NrmqgR67datvbd9a7qdYda3ufjkydL115v1du387x2P5uWEboSLjwoAAEioxYul/ff3379xY/zLgugbPDj48SeeqNnBu7RUqltXat7cu9tFsCbkvsfOOsuuLfZV3dAt+U/zFqpI+3QHC91OVlh3inVN9+efSyNGmHVCN0KV0I/Kk08+qcMOO0w5OTnKyclRQUGBPv7448rju3fv1siRI9W0aVM1bNhQgwYN0kaf/4HXrl2rAQMGqH79+mrevLluueUWlbnNNwAAAJLSYYdJq1b57y8qin9ZEH9PP12zR6yfPdte//RTez3UGtvcXDu0ujVDj0bozs8PfnzJEumaa6Q1ayJ77XBquqsS69B9/PH2OqEboUroR2XffffVAw88oIULF2rBggXq3bu3Tj/9dC1dulSSdMMNN+jDDz/U5MmTNWvWLK1fv15nnnlm5fXl5eUaMGCASkpKNGfOHL3wwguaNGmSxowZk6i3BAAAQtCkiVkG+2M+GmEBqeG9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3y23n1+w32FnS5XWrYOXz9d995ll587e85VLodd0S9H/TIQ67RkQCKEbAADExWOPmeXmzcHP23dfU6vpO2qzG9+5fZNhUC0Y111nlitXxvZ14j1nu7MbgxVc3UKeNRbBnDn+x448Upo5M/zX7tnTLPPzQzv/1FOlJk3cr3EL3U2b2s3arZput2AfrNbZWbN/662hldNy553me/ntt/7N2sOZUiza/w44f75VzScOuCF0AwCAuHj66fDODzQ/sFNenve2c4RhxN/MmdKNN5p+zD/+GPl9jj029HOrajkRbc6+6tu3m2nM7rwztGuPOMI0154xwzxcCtfhh5ul1e86lOblVp/yDz+U/vtfM1DbunXufc0XLrTXrdDdrp3/ecG+587Qfd55VZfPV0aG+Qq3hUSsaro9Hu/vVSj/LgG+CN0AACAphfLHrW9wCXfQKlSPb//73r2lRx4xwfKYY8y+Aw4I/77hBK6q+vpGmzN0b9pk5pufPz+0a7/5xjRJtwJtuKxaVqsMoYRuK6C/8YZ0yinStGnSDTdU/bti9eW2atedQg3d1RndO9DsBoHEqqbbd1YEQjciQegGAABJqXHjqs+xRli2bN8ek6IggC1bpKeecj/WvLlZXn99+Pc96KDQz4136HbOu33MMeEFvNq1/T+z4bD6FoczHdt++5lljx72vo0bvZuXT57sf50zMI8f730sWFPvcAeOC2T2bHvdbXBFX87PQTRDt28zfEI3IkHoBgAASalp06rP8a1Jo093/F15pfv+t94yS7fRr6vyf/8nDR5sjwOQLBYu9J9HO5iffrLXb7ih+q9v1XRb/a5DqUm+9FKzPPhge19+vl3TvddeUteuwe/h21zb+eDB1yWXmOVRR1VdtlDdeGPV5zgfBESzeblvi4Bwa+ABidANAADiwPlH8LffhnZNJH/c+jYFRXT4TjcVjrVrw78mL096+WXTXN3JbUR752fr8celf/wj/NcLVa9ewQOnL+cDiauuqv7rW4OhWSOjhxK6rab6kybZ+/bZx67BrVPHf3Ru39YDBQXe28GmArvpJmnqVNN/PFqcZQ8kXjXdhG5EgtANAABiztnkNJI+vm6soLBmjb2P0B0bvqNQn3GG9/b330uLF7tfe+654b2Wsxm077Raw4fbg4lZrNBdViZdc410++3Szz+H95qhCnfMgGnT7HVrFPHq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9y+/2OtjxtjryTK6d7ByBKvp9hVsmjQAAJA4CQ3dO3bs0OGHH64JEya4Hn/wwQc1fvx4PfXUU/r666/VoEED9evXT7sdj/4HDx6spUuXavr06ZoyZYq++OILjRgxIl5vAQCQAJdfbq87/wtZtUr67jvplVfsfW4jmEvS8uWxKVu4AvXblqR99gl87LDDvLenTo1OeQAAQHQlNHT3799f9913n8444wy/Yx6PR//+9781evRonX766TrssMP04osvav369ZU14suXL9cnn3yiZ599Vj169NBRRx2lxx57TK+//rrWr18f53cDANHBQGpV27DBXh8wwF5v1Urq3Nl8Wazm5L4OPzwWJQtfsNDdvbv01FPSp59KF15o9ll9ta+7ziwPPji25QMAANWTtKOXr1mzRoWFherTp0/lvtzcXPXo0UNz586VJM2dO1eNGzfWkY65Vvr06aPMzEx9/fXXcS8zACD2Skvt9b/+O/DTsaO9/s477uckOqxaDwtuuCH4eZdfLp1wgvT449Lf/y59+aXZf8klplZ//vzYlhMAAFRP0g6kVlhYKEnKy8vz2p+Xl1d5rLCwUM195kypXbu2mjRpUnmOmz179mjPnj2V28XW/DEAgKRnzbMtSV27hnaNx+M9KFnLlu5zeMfT5MnS4sWmNjsUubnSHXfY2xkZdo3+3/5m93GX7BHaAQBA4iVtTXcsjRs3Trm5uZVfrVq1SnSRAKASA6kFdu653vNyB2uafddd9vq0ad59uFeulGon+LFzvXpSz55mzu3qOuEE7+0OHap/TwAAEB1JG7rz8/MlSRs3bvTav3Hjxspj+fn52uQzUWlZWZm2bt1aeY6bUaNGqaioqPJr3bp1US49ACDaioqkN98M/fzbb7fXTzrJrhXPy5Pq149u2RLN+SBCCjzvNwAAiL+kDd3t2rVTfn6+ZsyYUbmvuLhYX3/9tQoKCiRJBQUF2rZtmxYuXFh5zmeffaaKigr16NEj4L2zs7OVk5Pj9QUAySLdB1KbN880737lFem556S77w7tutWrvbdPOSX4+dnZ7uHa51luWvAN3dGoPQcAANGR0MZ127dv16pVqyq316xZo0WLFqlJkyZq3bq1rr/+et1333064IAD1K5dO/3f//2fWrZsqYEDB0qSDj74YJ100kkaPny4nnrqKZWWlurqq6/Weeedp5YtWybo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xowZoxYtWqhevXrq06ePVq5c6XXO1q1bNXjwYOXk5Khx48YaNmyYtm/f7nXO//73Px199NGqW7euWrVqpQcffDDWb61GGzdunLp166ZGjRqpefPmGjhwoFasWOF1zu7duzVy5Eg1bdpUDRs21KBBg7Rx40avc9auXasBAwaofv36at68uW655RaVlZV5nfP555+rS5cuys7OVvv27TVp0qRYv70a7cknn9Rhhx2mnJwc5eTkqKCgQB9//HHlcX6u6eGBBx5QRkaGrr/++sp9/GxT01133aWMjAyvrw4dOlQe5+ea2n777TddeOGFatq0qerVq6dDDz1UCxYsqDzO31Gpp23btn6/sxkZGRo5cqQkfmf9eJBwr7/+uqdOnTqe559/3rN06VLP8OHDPY0bN/Zs3Lgx0UXDXz766CPPnXfe6XnnnXc8kjzvvvuu1/EHHnjAk5ub63nvvfc8ixcv9px22mmedu3aeXbt2lV5zkknneQ5/PDDPfPmzfN8+eWXnvbt23vOP//8yuNFRUWevLw8z+DBgz3ff/+957XXXvPUq1fP8/TTT8frbdY4/fr180ycONHz/fffexYtWuQ5+eSTPa1bt/Zs37698pwrrrjC06pVK8+MGTM8CxYs8PTs2dPzt7/9rfJ4WVmZ55BDDvH06dPH891333k++ugjz9577+0ZNWpU5Tk//fSTp379+p4bb7zRs2zZMs9jjz3mqVWrlueTTz6J6/utST744APPf//7X8+PP/7oWbFiheeOO+7wZGVleb7//nuPx8PPNR188803nrZt23oOO+wwz3XXXVe5n59taho7dqynU6dOng0bNlR+bd68ufI4P9fUtXXrVk+bNm08F198sefrr7/2/PTTT56pU6d6Vq1aVXkOf0elnk2bNnn9vk6fPt0jyTNz5kyPx8PvrC9CdxLo3r27Z+TIkZXb5eXlnpYtW3rGjRuXwFIhEN/QXVFR4cnPz/c89NBDlfu2bdvmyc7O9rz22msej8fjWbZsmUeSZ/78+ZXnfPzxx56MjAzPb7/95vF4PJ4nnnjCs9dee3n27NlTec5tt93mOeigg2L8jmDZtGmTR5Jn1qxZHo/H/ByzsrI8kydPrjxn+fLlHkmeuXPnejwe80AmMzPTU1hYWHnOk08+6cnJyan8Wd56662eTp06eb3Wueee6+nX7//Zu+4wKYq0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xWjYsCFat25tpYvFYrj44ouxaNEi3HLLLejWrRvWrl2Lf/zjH/j1118xffp0AMArr7yCOXPmYOzYsViyZAlSUlLw73//G9999x3ee+89oVp3eXk5li9fjttvv136G1lzR3YcidC9e3dkZWVh8eLFwjGroKCgoJAgaAoKCgoKCgnAxIkTNQDa7NmztcOHD2u7d+/Wpk6dquXk5GgZGRna7t27rbTnnHOOdvLJJ2slJSXWvVgspg0aNEjr1KmTdW/u3LkaAG3u3LnWvaKiIlfZzz33nBYKhbSdO3da9+68806Nt80B0MaPH2/9vvrqq7UmTZpokUjEurd//34tHA5rzzzzjO96s1BUVKR16dJFA6C1bdtWGzdunPb2229rBw8edKXl1X379u0aAK1u3braoUOHHM9k62b20/Dhw7VYLGbdv//++7WUlBQtNzdX0zRNO3DggJaamqpdeumljnKeeuopDYA2duxY696UKVNc/WSibdu2GgBtwYIF1r1Dhw5pGRkZ2oMPPshpLRsAtDvvvNP6bY6Jbt26aaWlpdb9V155RQOgrV27VtM0TSsrK9OaNGmi9erVy5HuP//5jwZAGzJkiHXvvffe08LhsLZw4UJH2W+++aYGQFu8eLF1b+bMmRoA7dlnn9W2bdum1a5d29VGLGzZskUDoP3zn/90PRs7dqxWq1Yt7fDhw9rhw4e1LVu2aC+++KIWCoW0nj17OvrJzzgaP368BkA7fPiw61nnzp21Cy64wLPeCgoKCgrxQ6mXKygoKCgkFMOHD0dOTg5at26NK664ArVq1cKMGTPQqlUrAMCxY8cwZ84cXHnllThx4gSOHDmCI0eO4OjRoxgxYgQ2b94s9HaelZVlXRcWFuLIkSMYNGgQNE3DqlWrAtV5zJgxOHTokEMleurUqYjFYhgzZkzC6r1s2TI8/PDDAHS17JtuugnNmzfH3Xff7VBj9sLll1+OnJwc63eQut1yyy0OKemZZ56JaDSKnTt3AgC+//57RCIR3HHHHY737r77bul6mujevbtlZgAAOTk56NKli0Nt2i9uuOEGhx27mb+Z54oVK3Do0CHcdtttjnTjxo1DvXr1HHlNmTIF3bp1Q9euXa22O3LkCM4++2wAwNy5c6205513Hm699VY888wzuOyyy5CZmYl///vfnvU9evQoAKfUmkRhYSFycnKQk5ODk046CQ899BDOOOMMfP75545+StQ4atCggcOruYKCgoJC8qCYbgUFBQWFhOK1117DrFmzMHXqVFx44YU4cuQIMjIyrOdbtmyBpml44oknLCbD/Bs/fjwA4NChQ9z8d+3ahXHjxqFhw4aoXbs2cnJyLLXwvLy8QHU+//zzUa9ePYdq9SeffIJevXqhc+fOCak3ANSrVw8TJkzAjh07sGPHDrz99tvo0qUL/vWvf+HPf/6zdH3bt2/v+B2kbm3atHH8NpnB48ePA4DFfJ900kmOdA0bNuQyjjzQZZnlmWUFgWz9O3Xq5EiXlpaGDh06OO5t3rwZ69evd7Wd2fd027344oto2LAhVq9ejVdffRVNmjSRrremacz7mZmZmDVrFmbNmoWJEyeiW7duOHTokOOQyUQixpGmaYFU0xUUFBQU/EPZdCsoKCgoJBT9+/e3vJdfeumlGDx4MK655hps2rQJtWvXRiwWAwA89NBDGDFiBDMPmtEzEY1Gce655+LYsWN49NFH0bVrV9SqVQt79+7FuHHjrLz9IiMjA5deeimmTZuG119/HQcPHsTixYvx17/+1UoTT71ZaNu2LW688UaMGjUKHTp0wAcffIBnn31W6l2aEQtSt5SUFGY6HlMYD5JRViLzjMViOPnkk/HSSy8xn5P23wCwatUqixFfu3Ytrr76as8yGjVqBADcg4aUlBQMHz7c+j1ixAh07doVt956q9BRX9BxdPz4cdeBhIKCgoJCcqCYbgUFBQWFpCElJQXPPfcchg0bhn/961947LHHLCljWlqag8mQwdq1a/Hrr7/inXfewfXXX2/dZ3lh9ivFGzNmDN555x18//332LhxIzRNs1TLAcRVbxEaNGiAjh07Ojyk+617MupmOuzasmWLQ7J+9OhRF+NYFSWmZv03b95sqYkDukOz7du349RTT7XudezYEWvWrME555zj+S2FhYW44YYb0L17dwwaNAgTJkzAqFGj0K9fP+F7bdq0QVZWFrZv3y5V/+bNm+P+++/H008/jaVLl+L0008XpmeNIx4ikQh2796Niy++WKouCgoKCgrxQamXKygoKCgkFUOHDkX//v3x8ssvo6SkBE2aNMHQoUPx73//G/v373elp8NWkTClm6Q0U9M0vPLKK660tWrVAgDk5uZK1XP48OFo2LAhPvnkE3zyySfo37+/g9mMp94AsGbNGqYN7c6dO7FhwwZ06dIlcN3jrRsL55xzDlJTU/HGG2847v/rX/9ypfVb34pA3759kZOTgzfffNMRu3rSpEmuel555ZXYu3cv3nrrLVc+xcXFKCwstH4/+uij2LVrF9555x289NJLaNeuHcaOHetpS52Wloa+fftixYoV0t9w9913Izs7G88//7x1z8844mHDhg0oKSnBoEGDpOuioKCgoBAcStKtoKCgoJB0PPzwwxg9ejQmTZqE2267Da+99hoGDx6Mk08+GTfffDM6dOiAgwcPYsmSJdizZw/WrFnDzKdr167o2LEjHnroIezduxd169bFp59+ylTZ7dOnDwDgnnvuwYgRI5CSkoKrrrqKW8e0tDRcdtll+Pjjj1FYWIgXX3zRlSZovQFdGj9+/HhcfPHFOP3001G7dm1s27YN//vf/1BaWmrFDQ9S93jrxkLTpk1x77334u9//zsuvvhinH/++VizZg2++eYbNG7c2CER7tWrF1JSUvC3v/0NeXl5yMjIwNlnn+3L1jnRSEtLw7PPPotbb70VZ599NsaMGYPt27dj4sSJLpvu3//+95g8eTJuu+02zJ07F2eccQai0Sh++eUXTJ48GTNnzkTfvn0xZ84cvP766xg/fjxOO+00AHr4tqFDh+KJJ57AhAkThHW65JJL8Kc//Qn5+flS8bQbNWqEG264Aa+//jo2btyIbt26+RpHPMyaNQvZ2dk499xzPdMqKCgoKCQAleM0XUFBQUGhpsEMRbV8+XLXs2g0qnXs2FHr2LGjFZZr69at2vXXX681a9ZMS0tL01q2bKn97ne/06ZOnWq9xwoZtmHDBm348OFa7dq1tcaNG2s333yztmbNGg2ANnHiRCtdJBLR7r77bi0nJ0cLhUKOEFygQoaZmDVrlgZAC4VCjhBnJGTqzcK2bdu0J598Ujv99NO1Jk2aaKmpqVpOTo42cuRIbc6cOY60vLqbIcNeeOGFwHXj9ROrrSORiPbEE09ozZo107KysrSzzz5b27hxo9aoUSPttttuc7z/1ltvaR06dNBSUlIc+bRt21YbOXKkq65DhgxxhO3iAZyQYVOmTHGkM9uGHAOapmmvv/661r59ey0jI0Pr27evtmDBAmbZZWVl2t/+9jetR48eWkZGhtagQQOtT58+2tNPP63l5eVp+fn5Wtu2bbXTTjtNKy8vd7x7//33a+FwWFuyZInwWw4ePKilpqZq7733nuO+GTKMha1bt2opKSlWiDY/44gXMmzAgAHaddddJ6yrgoKCgkLiENK0JHhMUVBQUFBQUKiRyM3NRYMGDfDss8/iT3/6U2VXp9rhpptuwq+//oqFCxdWSvmrV6/Gaaedhp9++gm9evWqlDooKCgo/NagbLoVFBQUFBQUmCguLnbde/nllwHotvoK/jF+/HgsX74cixcvrpTyn3/+eVxxxRWK4VZQUFCoQChJt4KCgoKCggITkyZNwqRJk3DhhReidu3aWLRoET766COcd955mDlzZmVXT0FBQUFBoVpAOVJTUFBQUFBQYOKUU05BamoqJkyYgPz8fMu5mmw8cQUFBQUFBQUl6VZQUFBQUFBQUFBQUFBQSBqUTbeCgoKCgoKCgoKCgoKCQpKgmG4FBQUFBQUFBQUFBQUFhSRBMd0KCgoKCgoKCgoKCgoKCkmCcqQGIBaLYd++fahTpw5CoVBlV0dBQUFBQUFBQUFBQUGhikPTNJw4cQItWrRAOMyXZyumG8C+ffvQunXryq6GgoKCgoKCgoKCgoKCQjXD7t270apVK+7zSmW6FyxYgBdeeAErV67E/v37MW3aNFx66aXWc03TMH78eLz11lvIzc3FGWecgTfeeAOdOnWy0hw7dgx33303vvjiC4TDYVx++eV45ZVXULt2bel61KlTB4DeWHXr1k3Y9ykoKCgoKCgoKCgoKCjUTOTn56N169YWP8lDpTLdhYWFOPXUU3HjjTfisssucz2fMGECXn31Vbzzzjto3749nnjiCYwYMQIbNmxAZmYmAODaa6/F/v37MWvWLJSXl+OGG27ALbfcgg8//FC6HqZKed26dRXTraCgoKCgoKCgoKCgoCANLxPlKhOnOxQKOSTdmqahRYsWePDBB/HQQw8BAPLy8tC0aVNMmjQJV111FTZu3Iju3btj+fLl6Nu3LwDg22+/xYUXXog9e/agRYsWUmXn5+ejXr16yMvLU0y3goKCgoKCgoKCgoKCgidk+cgq6718+/btOHDgAIYPH27dq1evHgYMGIAlS5YAAJYsWYL69etbDDcADB8+HOFwGMuWLePmXVpaivz8fMefgoKCgoKCgoKCgoKCgkKiUWWZ7gMHDgAAmjZt6rjftGlT69mBAwfQpEkTx/PU1FQ0bNjQSsPCc889h3r16ll/yomagoKCgoKCgoKCgoKCQjJQZZnuZOLxxx9HXl6e9bd79+7KrpKCgoICkL8ZODivsmvhjaI9wJfdgXV/qeyaKCgoKCgoKChUeVRZprtZs2YAgIMHDzruHzx40HrWrFkzHDp0yPE8Eong2LFjVhoWMjIyLKdpynmagoJClcGXnYHvhwG56yq7JmLs+xrI3wj8/H+VXRMFBQUFBQUFhSqPKst0t2/fHs2aNcP3339v3cvPz8eyZcswcOBAAMDAgQORm5uLlStXWmnmzJmDWCyGAQMGVHidFRQUFBKC42squwZilJ+o7BooJANFe4BIUWXXQkFBQUFBocahUkOGFRQUYMuWLdbv7du3Y/Xq1WjYsCHatGmD++67D88++yw6depkhQxr0aKF5eG8W7duOP/883HzzTfjzTffRHl5Oe666y5cddVV0p7LFRQUFKocPMJOuFB2HPjlFaDdtUDdTsmpkwNVIuiFQiJRsA2Y0RHIbAJcdtA7vYKCgoKCgoI0KpXpXrFiBYYNG2b9fuCBBwAAY8eOxaRJk/DII4+gsLAQt9xyC3JzczF48GB8++23VoxuAPjggw9w11134ZxzzkE4HMbll1+OV199tcK/RUFBQaHSsPxOYOdHwIbngatKkl8eGWlS0/wfEihUPeyfqf8vOSROp6CgoKCQWMQiQChF7aU1HJXKdA8dOhSiMOGhUAjPPPMMnnnmGW6ahg0b4sMPP0xG9RQUFBSqBw4v1v/HSiu+bC2mEwsKCgoKCgoKThTs0P2gdLgBSM1yP48UA190BOqfAgz7tsKrp1BxqFSmW0FBQeE3g/xNQFZLIK22ROKqftpNHpbGACimW0FBQUGBgUixLsFNyfROWxPxVXcgWgwU7gB6T3A/PzgHKN6v/ynUaFRZR2oKCgoKlY6y405V6qA4sgz4siswpQ5wYHb8+VU6SPXyWOVVQ0FBQUGh6iIW0ZnOGScBUY4m1oE5wJwRul+Jmohosf7/4JzKrUd1wJxzgS+7JYbuqoJQTLeCgoICC3u+AKY2BL7tE39eu6fa1/MvkXihiku6tRrIdO/4ENg5ubJrUXmooUSOgoJCJaI8X5fwFu/lM9VzzgEOfAcsvrZCq1Z1oNZeAEDRXl0okf8LkFvFI7gEhGK6qxvK82vuaaCCQlXCqof0/8dXASVH4syMWGrD6XHmVdVQA5jusuPAD9cCi8cA0QpwRKegoKDwW4DjUNbjMLmkmqpXR0slaYQqfphe2SjPt69r6D6smO7qhu8G6Wo6eRsruyYKCtUDeRt0e2q/OPGrfV12PL46hIiltn4PifRVfHPe9LJ9XRMk3ZFC+5qnAqmgoKCg4BPk/lBDJbrfDQSmt5Swya7i+3plg9yHa6jmlWK6qxvy1gPQgMMLK7smCgpVH5FC4Kseuj11rDx4PuG0+OoRK7Ovs9tIvFDFN+cSIo5zTWC6He1dMzd7hSqCwl3Alv+qwx2F3wY0P0x3Fd/3WCg9qmvDxcqAYz9Vdm2qN0zbdwA1QoOOAcV0VycU7ravQ3EyAQrBEA/jplDxKD1qX8ejrhSv5DkWsa/T68eXFwuVKhmvAptj6VGg+KB3Oh5ITYQacYgQAGTYt3jaUkGMmf2AH28GNhBejI+t1J0H7fmi8uqloJAMkOup59paDZnufEIjzmtvr+oabJUNkulWkm6FSsfnhIQsxYj1p2nAwsuBJeMqpUq/Kez9CphcB9g2qbJroiALkpGI58BEi8ZXj3rdE5cXCxW9QdVqW3ll09A04NPGwLRmTvW0wPlFvNPURJAEY7So0qpR41FySP+/72v73oJRuvOgBRdXTp0UFFgoPgAcXR5nJn6Y7iqK4gPAzNOBrRPdzzSCrmDtheTBv4IYDsFINR0rHlBMd3VF2GAmCncCuz8Dtr+j1NUSCdbiOf93QKwUWHpDxddHIX7E4pgfsTgZ5eW3EXnVAKauVnv7urIJKZJBPLElWB7kN9SE/gkC8rsru09rKkiikiTWIwUVXxcFBS9MbwnM7B+fDyHHWuKxrlRVSfCaPwJHlwHLbnQ/c+wXjO9b8yfiRxX9vqoCx/qoJN0KVQkswvC3KqFJNLZOBKa1UPY5NQGkdPv4z8HziUc6TR+GyeTll/iocGLFByGVbJQTDEtQbQayT36r66ijDZKgjaHg9O2Q1dK+JjVyFBSqCkyG+cjS+PMAJBipKsqUluXyn2keh5Vb/k38qKLfV1WgbLoVqixM4jKc6r6nEB+W3QiUHACWjmM/T61VodVRiAOkFPTHW4LnEw8TQobBACSZuiq+OTsYtEreHI+vsq+D1sVBGP5GGU4H8fgbbYNkgxxndU6yrxXTrVCVEYqHVahCB7SBQdS7aI9T6JVoDaFkS3jXPw/88nJyy/ALLQYcXQGUn3Deq4FQTHd1hUkgOWxWy9hpqzI0DVj7DLDx75VdE3mkN6rsGijIYst/7OuiXfLv0RtfPEwIPS8rajPRtOQ5xIpVIaZ7+R32dWApdUD18uKDwIHZNUMVTkm6+YgUAT/eDuybGWdGvHFSxQ/ZSKx6GJh1JhCthvSGQkDEsb7VBEdq5Po+vTUw5xzimYd6ee0O9rWURloS95LiA8Cax4Gf7q9a83fdn3UHkyvvJm7WgD2VAcV0V1dsnOC+F4+ke88M4PDi4O8HxaH5wNrxwKqH4vMunQyEMzgPKpHJKNqre7it6kR+eX7VqGPR3oAv0kx3HCrHLgZGpl0SQHysfVp3Lvbra/HnRcPxTUmcD1oMWHApsPpxfpomZ9nXm18PVk7Mh3r5oUXA5+11x4ozOgBzzgV2fxqs3IpCwTbgpwfF88FLTfK3jM2vA1veBOadH18+3HatJu2dvwnY+CJweBGwV3larzBs+Bvw422Vt6fGU64fpruq2nTT9T60gHjmsW6S4UZDqe7ngLN9tZi+H/FU2kuP6b6c/KJwl67BaaEKrTnrn3Pfq6F7kGK6qyvyN+n/HQ6AAp5cFewAFlwCzBocd7V8o/SwfV3VHMGF09n3K3Mx+KKz7uF2xweVVwcvHF4CTKkHzGgPbH27cuvS+vJg79F9HI/kz5VXBY2fdU/r/1fclfi8K4pBO7QA2PM5sOF5fpqsFva1n3kRKQZy1xoED0kYejDdc4YDhTt0x4qm+QLpiboqYs65wC8v6QcYPBTtsa+TLeku2qMfBFQXlB5JTD68uVJdCMzNhH2qMmerOKx+TLcNPrai4sokGcF4okKY3vqB6ivpZjGox9fo9A05D1jfR4b3rd3e/dwFDZhzNjC1AZC/2f3400bA5+2c7eqFgu3A522Bb3qL61ppYBzqVAWhTRKgmO5qD2JgBt0Ei4NKAxMBYpGtaurxPDumylysqgORv3a8/r9wJ7DsD+yNo6IQ5pwseyGRTLdrw5bYTOI98TcP5ZKFirLpltF+8auFsHuaHqLpi07A16fo0R/8qFazvOBXKQKGAZPBFRHt6/9qXyeT6dY0XUVzRke3v4OqiGiZfkCTEJASLUq6VR3gx0RHIfFIREhEaRDj06H26xOzzyR+EOM8WuY2f6oukm4A+KaXTt/s/JhM6E5Hqpdnt5Yry5Skb3/X+ayYkFTnrvPOy8SB79nlVBUw61KF6pdAKKa7uiMRku7KHAYkcVfVmG4uqsBiUJWlDKSDIMCpzVDRCOxYK+r+XbBD//MLOtxYIje7WIR9Inx8deLKYCEe9fKNfwc+7wAU7vb3Hi9sm98QX8tuAvZMtw8bt/0vASHDasCpfHYr+zqpBBnRVkHUJCsai8cAv76amLy44ZOq4PiJFAIntjrvaVW8zjUeFdjmyVgDyDy/7aObP+X/mvhyRNg1FVh+p891XtDuB+cQyViSboK+lqLbiLLoQ4gfb2Xn6wVm2ipAx1pQkm6FaoMESLrJCem10K64V/9L1IQg61xdmO6qcEJYlcMaZTZz/o7L82mcCCyxo/o4UqSry89oH8D3QABJtwwihcD0VmyVYZ7tmAzKC7y1E+KRdK96CCjcTsUvlcCO9zh18TkXyo5T78ec31O43SMDhjSmKqwJ8aLJMPs6qZJu8oCjCh8emtgzPXF58exbqyKB+UUn4IuTqAO8GjDOWTi6XHfIWHq0smsiRkWOk6SsaUT98wxJrcMfRgVIuheN1n00JMoPh9deSN4rkXBs6siDop3yiXjp8TLdFbFnxaLAtnfdh3fuyrBeTkaNKh2K6a7uSISk28F0C4itSJF+4v/rq0CB1ySSBEkwVzkCjLMBVAXPvoEdhFUA0upQNyqT6U5ACCkAKDtGXOfFl5cU4SRBfOz7Wt/E985w3i/Liy882lc9gC876zZrPCRCvVyGWSa1JI4uZ6eJd93QYs5vWH6nOD1LBbImMN0x4jApWWvcz+OB6UR8alPapGm6g6AaD837OtlaKrIo3q//30OsLzxtExkc/xn4siuw+Jr46pUMzOwPbH5DPxCsTtA0YPHVwPIk+O1IBtNTlWy6I0XeaaRA0jceTLcMjU6mp/caknbwFWaQxXRXAB279b/A0rH64Z0IXocVNQiK6a72SLSkWzARyWe0tCgoSBWfXZONe+XAvJFsj4YVCZ59UVVYDI5xGJCqANoBXWVKuoMSDkLnZxymueQQsPV/7s3cNacSNX5C7OtVDzoPCfxA02y7zX3fCNIlgOmWGRdHf7SvefZwcds5UpJuT3MIVr2roKTSLxz7R5LWuHXPUI6VjPX/h+t0B0GHFiW2vOM/Ax+GgKU3JDbfoOBKuol9MI+QZlUJkLbn5ez7XijcBXxzqu5rYudHAU04KgBV5cCDC6rNC7bpNsWbX0t8myZDqs7cK3ww2iWHEhcGk+coNx542SZLaWUJ2t1BS/iRdFfSQfGh+XG8XAP2VAYU011dYYYhSLRNt/D0i+MEJh6Qm/iGv+n/d03VpXhr/piYMhKNqsB0V2XQY6MynaMEPc1l2XR7YdEY3V54BSUpTZak25mpfUkyqn5BqtKmNxAUl4iQYRLfWP8U+5r0Ug7oxNeScXy1c1nQkm7SthnQPTbv/syWxDIPC2oAgVAZcbpNRn/nh/p/kZf6IPjmVP3/tkmJzTcwOEw3eeARTZQELkEgQxcFjTAy60znb4fzKQ72fqWHuatIBj2rlXeaqgRyLUp4yFVifAaNAiLKkwURrRAtBT5rqtuBJ2JMJIouiZywr70ktjLrqiMPqo6k6ZMvYUYlqZcnKr57DYJiuqsr6vXU/2sVKenmqcbFAcfiaSww0UR5ipVA3gZg/sXAsZ8YD3mS7qqmBk9gx8fAzslyabVYkmzE6DxrgHq5zAn1oXn6fxeBHyBkmBRBwEnDIkjoMjdMAH552Z1ux4f2Nc10F++3w0oFlXQ7pHgS38hytLjyPl1FdfFVwPZ35Mvm4eAcZzntfm9fF+8Hlt8GLLxcl8QemFN59nHJhl/i0ES0RF8/g6wl9FpaE9pRBEcbcQ7MN7+p+1WoKtj0sr0/kp77/fQ37fXcPGAXYf7v9DB3FRl2MuxHZbeCIKK7whn2daIPaxxqzgnaw5eMc98LcTS2aBz5wb4mGd3ASIYwwEu93KekW9TufvokNZtxM6YfJO/4OH4TrV2f6mEpSe/qQJzreQ04yGZAMd3VFRYT4Fd1hQFZppt3Sh8tBXZP92/rCjgnu7X4VqBkdM5wYO8XwOyh8u8k/EQ5QSgvAH64Wve2W7RPnDZSrDvKWTQ68fWgF9qq4kgtI8fHi9Q3eMXilK2DfsPf+zxwiRXWxk/UoeQQsPpR4Kf73aGQSEcvKVnE+zFgWgs91FOk0Ek8+GkPUhVcRkLNYro3vaKrqJqHHAkBx46OVl1f92ew16caQCDIHKRoMbdp0ZzzdE/EQZgjFxFaA9pRCM4eSuLYCuDHmyumOrL49Z/6/0Q5Oy3z4bAsUf5jpFAFQ1aJHO6Ra1Wi6ZJkHIDFE56WDHsV9Fsd7eejr2UPmFjpHOuqBI0uknST8ENXkXu5VU5UP0j+4WrgK0OIV7QX2PCCf/PRRVcAB2YDqx6myohjDJlh02oYFNNdXWFO5IRIuonT3a968j0NFpKn1cRkWvMnYOEoYP5I/2WTi1Cj0436kBtJQHU2WZjOYpgnp1VwAxaBZBC8iJr9M3V7sER58HSAJgyqiKTbz/ygNwsHsemX6Q4g6Y5n7DFV3IiNn7Q5p4kAUp0bnLYr2uPM78gS+brRdnRemzvNdCdLEkqe0DuIJHospyAp3suPrdJ9WEQrMYKDjKR7/sXA1Ia6rbSJwwv1/1v+rf8vPaarBZNpuGVGqDGQRKa7KngIl43NLaN+XaEwtdAC7Mes7/TDNFWXqCZJg0DS7RhPiTYJSdBam1rbI4GkpJscR4GdoCV5DfC06farXi4A6dQwfxPw00NOfxleeZL3Thhh22YPBVY/omuTBYHrUCWO9qbNvGoIFNNdnZBCqIjEWJLuBKg9F+8Dlt/OfkaqhJGL/fZ39f+HF/svjyT6W11iXBALL6lSVNE4tiK+90uPAl+dDKxPsJ0iD2T/0xJMV1pK8mkePiSmItTvJB9erLxfV1tjEtXE/CjPld+s6c2RJPz8Ejf0hmducK50fjcoH47+ZOtcpxP7HYdmS4nz2fLb5PIGbF8UrHxZIMv56X6gJEkx3w98xy6TJjxDKRw1zjiJuW9P031YbHo5vnziggRxuO8r/f/mN/jZrLhLVws27amFRZYD654lyk0m0x2AiUh0fVgOGcsToSorQPkJYM8XcUpCjbXGDPMEyK8prMPOZsP56Y8uB/Z9S7xfgUx3pTr95EDWCWCimW5ZiasXaAeYonkoNKsi3pvZL1hdRJ7BE4Kg6uWcgxXheCTbYwDwy991m3fWYSdrbLD6oWCL/p+MPe4HB+fShQTLB0jCIVLVQBVcYRT4YKiSk8xSUEk3Ldk+MIvtEdi056TrkpLhSiqNGMsbquTJZ7IRIezqghBfv7ykEylrHk9cnURwOOPxsosn+u+zprrqsBejLgtXWyWZkN70sm7be2KL+zkd4mbjC/L5OvIh1cv9Mt1Ueq66ZDxMt4cEjet9nZ5fPMkJeSq+JY4N0ec30uVMa8ZOFy9Icwyeh2mAH6YlURJ4UZi2ZMOXIzVBP/o5rIwU6o4zLSTRpjuQ+VWi1y7G2OJJp0Q4ukL3RyKDRVcCCy7WtQ+Cgun9WLI9WUxzvR789DP7A/MuIMqpSA0FAb2RtwH4+hTdfjUodk8DprX056V/x/v2tWhvTbQWkEzEDinQml702iJJ45HfXnY82LhIts+IwI7UeP0oKfkvJ0w7WYedTKZbsMZnNOY/84N42tusX8khXSsziPlqFYRiuqsTWKpEpJQgKNP90/3ue9tZ9pYc26J4Qi+wbEMr09s1D0GYjGSf0NOnpg5pLIcgMvuNtRh6hkqSBZX37unAvpnxZXl4MbDqUffBgMO8gtXeVF2kw/EI1Mu9YtXSp9OyG09QlS4XBJLuWMSD+Cbbk/hOUkqmRYIz3S6v8B6EU0Wddu/7klMmw1Si+fnu9xNFzCVK0lZ6FFj7Z6Bwp+55XQYOIi4O6avIHpxGyUGnk63ctcHL9UKQ/THRDB/5fUH3u9KjuqTvKwHjSmK/ITXe8h9/5TjAqKNse7LWZfPbNQ3Y8ZG43yuTHohFdC2BkiPAD9fq9Vx0RfD8Fl6maxPOY6whgZBE9XKRmY2vfBhMNzc/SUk3EOwQzdFGSRhX9LeWHLbNbwB+nQ/Mtq/JcLD02K9/Mr8sIbwO4ulniVr34sjHpD9+fgKY0RHY9GpiqlTJUEx3tQJJEBuTl1QpDupIjSUVZS3gR5ezn8fDdLPifpIT/td/Bc87kQiyoYVS7WvawURgEItw/ibnIy9nX2W5uvO0nx5iP08UwU8v2Guf1IkML2ZVhFmDgY0TgI0v0oVxrs1bNPMsqWJJv+dgOj2ITZc0VHJzNJ0V6ZnIvcOCSL18x/vAnmnEA4G9OTnmN0xg5wcAWS3t69x1wJ4Zgrr5dCrnd941Octfeq8yWZJuZii1RDnHS6CX4LVP6qGaFkqG+yG/e9kfvBLr//I3i/Pxuh+jbIRLEhSDl1l+FZB0b3qF+BHwoKZod7D34mJe45B0s0yXzLGw/zvgh2t0CbKfspMGqqxf/6VrCcwaBJTnJ66YRPmqkfUREASOQ5V4JJbUHIpFnHUlxyVJM3nmE0TIlGRJN53/wlHUY86cIenc+Rfxsw8aYYKZVsR0JyhMX1zMu1E/s59p07RqCsV0VyswTjVDxEAMKumWZcDisWvlgekFmahPUhx9BUAgpptgvlzMYkCQqvxhaoPSWG1J4NfXdNXmX/7O+Z5ELQe8hdZcRKPAj7cD29/npBPAdNbEKkvGljmoTff6v9jXX/XwkATSku4gY0eC0CTTeHmeNp8XUgS7UF2RyHP/N+z8AKBOR/v665OBBZc4D+h477F+0/B7UEP6vfCDTEJtXaRerkXYjoESJRngqa/7hWmj7odBc9geSjIFuZL2gwCb4Ey2o0yv8j3hs18PLdAltzy0IojwwOEMNfZ1RUO2PZdc775nfvvxVRIZJJnpFtn5mloiJxiHS77L4YSL85cJ/3fCJd0kPcEZZ/mbGXa8NFiSbs7YER06BgnjKcqD7mtNAxZfDay4l/Wi//wBt58jv31E7weO/H2MIb9+XuINIWYXEserpnaeyXQLDmSqEao8092uXTuEQiHX35133gkAGDp0qOvZbbf5cOxTneAgBo0FpyXhMTzwRGEx3R4DPFFqOiyb7qroQMG14EssJokioB3lCuwuvRZk0gFUUm2beBu04UBsz2fAljeBJb/3n7Uw5IiEpFs2lqlX+5DhS2hkNPSXFxCQeCaZbo8TcOueh709bwzRYWsc3tAZ/h/y1jPqCzcT7TXXE+EcUgYO/w0CR2r7vubM6yqmXs4bc6I1KVHrLle9nMV0V2D4xRObvNPQ8LNOajFg9hBdcluwjZ3G0b8sHyZSBXGuk4iDc4Hc9VQYQcm5yWKs/Yy1IBL6oj1AwXa5tKI+Tq1FVsR/PUiQ+13g/Ve0fida0k3OV07eX3YGvj9bHKmAqV7OY7pFNFMCJN2ids/boEcN+DUeNWYvzS2fBwWpdfj5+1qbGPNN5BPCT9uKIm4kwqbbrEtISborBMuXL8f+/futv1mzZgEARo+24wvffPPNjjQTJkzgZVfNwVAvJx0eBJZ0MyakF8OYMAKNIZ1NtrOLIKAXS5nvTzrTLXBQ4hmmxefJpx/w+u9rIxZk6bHElANQzKqH93IAaDZCMl+PMciKe2mCVqeUYrrjbHuvAxdeHUTq+rzxdGSxN9PNdTgmOihiwDdTFpAJ4TnKY2oBsVRtEyXpThRhwamPUH2T+NZ63f0XeWwFsPHvcI2/8gLdpwPLYVhFeqY+vtr/OzyNDRZI9ePyAnYa0n+K19hnzSv9Rfk8aMQiwJwRwKpH/L1XsEVfv0lTtECaA9bL+j8phtons6vFgOmtgRkdgGIJcwXHmkSTxBxnlYcW6CZPfsbUjg/k0/IgWme+7Rt//o6yPDTnSLA0XnjvunyCkOrlokNB2lQsyPgTOCkjTc+COoP1E41DBmkU0y3SwhKWy0gr4hf8HHYfWykqWD4f16tRZ12UennFICcnB82aNbP+vvzyS3Ts2BFDhgyx0mRnZzvS1K1btxJrnESwHKk51LMDMt0sFU4viYvfxaPkMNs7toOZrcKS7m0Tnb9lFjw/6jCxKFAkkuLCkDCKVF89FmRyrDBjsXO+KXcdsP0DH4yFR7qELp4+1culYz96Md0+/BjIjGfXBiizNHPUy1nMDU/STarNA+w1Rq+gfUn7WWAy3Zyx71e9XFb9uIMRVico80uuQ6VHiPvUOGjQi1NGPMQF8W5Wi+D5OPLkjF/R3CM94Nbv5ZE/53tXPeQ+dJp/ke7T4YuTGPnEudYX7QPmng/s/ZL9vI19OI86nf3nf3SZfFpyfZVZ+732kA2cSAueB408hHR11wPf6VEc4j0oikcF1ZfZiF+mm8h7jiA0GSu9rFR99hC9Leec669uiUYy43Tn/0Lk7TFW/UiotSifYRbSnVQ+B+f6H8Miz+AxwWEr6ehMOn/Wc58HBSL18nhtukVrlJ8DDVG0ikQ44DPropjuikdZWRnef/993HjjjQgRi+MHH3yAxo0bo2fPnnj88cdRVCRWIS0tLUV+fr7jr3qAXGAjzv9AgiXdqXpYhiM/sieOn3iHxQeAz5roYaloOCRMRjkOla5Khvmde7+iHkgw3X4k3QsuBaa30h3LeNWFVweRWizglCqxPJXzFvGvTwaWXGfH6PWC10KbLKZbRr2c/MaifcCiq4BDC+GC14b2/dm6R1upKkqMFdrDtMzYIeedl+d583tYYdW4KuVEG4iIZJbKPm9D923TLSnpDpu+DoIy3UQ99ky3DxLo9qrVHr49wXqWTbx74Ds5hqQ8HzhGqO1qMXs8xqLwLek+scUZPz6ekGE0Ds0TZBMno7DiTmD/TL7zIXIeBVJH9UF8+rYxNfuds39y7YjjkHSTTk+5knRJxOVsyUe9/aqXk/sPGVecm15kKqcJnsF5QFchCCiBDYINfyOK8WK6w0DBDn0/PfKj8xlLQs0Stpj58EDn88PVurmPHwg9dgtM96Th0U5+pfMuWiqBkm4R++dHgCe06efUMVrm7V/HpV6ubLorHNOnT0dubi7GjRtn3bvmmmvw/vvvY+7cuXj88cfx3nvv4brrrhPm89xzz6FevXrWX+vWrZNc8wSAxzyQkqDAhB/jvUPzgakNge8GsE/5/CxKh+br/8tzGUUz7IYykxSLNwisiV/Gvi8Ci3EqOQLsnOyW4JkhixzebTl14f6m7G5pbHnTvmZ5YvUi9oVqRJx6sECq0G5/H5g5gIoBT+cnICx4ToU0TZfmuzY5om4/3grs+gSYfRYjX4m5tFHWjMVUpRQstyWUdDBRtr0mtKiuabKD4bzO4SCREzKs/Dg/b5N4J9MnTL1cUtJttV+CiFCT2abDKcbKOOMxHpMYIr/Di4DNr3m/8k1v4NvT7LV54WXAZznA4R+An+7jv0cfhmz8u67FQoeTkmWo4g3ntPl19z0/5ifFB8TPHc7hfKqyx6Jux4Mi5BPhCKVMSrzGPkMzDIhD0g3K+WKc/hJkx4jLLhX2t0tJwvyOMZ9zUZrp5kBWCpoQeDDd8YTmzF0HbHvX7hOHxpRHO4RS9IP5XZ/oNKMDDNqV3JcPLXDmwwWjDrKCACsLhl8ksl4WAq7niVYvl/W54pkNy8+LYP76OaBkORa1yiAPwAjNic/bApNrs7VfrXdN9XJT0q2Y7grH22+/jQsuuAAtWtgS01tuuQUjRozAySefjGuvvRbvvvsupk2bhq1bWeqzOh5//HHk5eVZf7t3BwzBUZFwxWQ2JkXxPuJmAqQ8Jrb+175mqe75WjwEm6bGkHRXlHMYwPv0bL/uQ8Dlzddc/HZ+Amx+E0yw8v5+KLB4DLD2KV6F9H9Fe4Btk5xOKrwYFj+bBtP7dqI2DI/+I1Wzl/weOPqjO3Y0+d17BSGoeJLuLf/W1VnXPU0lJ76xkOPsiE7Hg+zGZLZbRo7+n2kPTi3FUky3D2JUizrjIZNwMCNEG25/174uPcrPO1qiMyhkPjzbZN+Sbkmm25xrCfPmbLQtzajFyiClUeEH9Ls7PvR+x3TUtXOy/n/P5/r/Ta+IwyySWibb39PVwZdcx4gtX4kmPhEfMcJJJnLPDPe65iCyfTKZCy6WOwAB9PH//dnscrnwGKtNz+Y8iMN7ueNQLc6wQLLr30m3MOoRJ/0glFjGwXQHOUSKR8X88BLgwxDweTs5+3MadP+vvCd4Xb4+GVg61o4YU0g4omOablESalId3ZGOZdNNjL0y4pAtbyO48CutZeZB9PW6P/OfBY4skGD1chHT7WsOeZgbup75WCvTREw3UYYZDlLTgJIDADT+mAEIptsUWiTBR1IloNow3Tt37sTs2bPxhz+I44cOGKCfsm3ZwlCjNJCRkYG6des6/qo8XJPVsO9NhGt/r8mbXk/8jsgLIiDeyFiSbnJhyW4FlOWx1WJNrH/ebf8WKeTYLdN1o21mqEXODJVES9zM7198FbD8dra3WpYatenVeefH4np92xdYegOw4TnipsCGm37utfizpD6enqQTxHSz4rqTxPLSG4BPMoCfx+u/vcaXVSxR7tqnOWnIdhEtfxKbbkqmXF3MMs3xIOOcS2qD8UEgrrhHj9POguNgh6jbMR9OpKLFzjGVKPVynrSPRkuOenG8oL+Dx3QfnBNHIfR4iEd67CWRIr5n1cPEfWq8xcuQVRiItlpwCbDwCuo5Ken2uVf6UV098gO/XB48nTVmcB4E9VgdohiLeJnuON73w9S4wnhNB6bUsw+a4skboL6DEUYqmZg1SP9fuJMRDpMB17eJJKEBcXAe46aXv5Qw+OsWw6abHHthYpznDBJUjNEXvg9JiO9wRdgIytASSLSk25U+qHo5S9ItqIuftUG0DpD7N81EA+L+s9KZ/6sNuypEtfmKiRMnokmTJhg5cqQw3erVqwEAzZs3r4BaVSBYkyBGeYEM7ETIYyFIYxxKmO8sGStRgGhisWJBEt9RtEe3df6iE5DPCPlSegxY8ziw+hEn4/ZFF13SSdo9MqsmioMI23uyS72cSlfCsKkVegrmtbnRVuap4J7p/HdkvZf/cB3wHbWZscYTnf/x1cBa4jRYdpH3GocsKSjZD9sm6f/XPSNTGPuat5g7pBqC5U/K0U9Ij8nLklCQnvh/vNVIbn43ox3TqTBjMowXGebKCwe+A1bcxX7Gk3T7gRalpNKcthURESzwCGsa1kFOoryIG+1Pj9VYeWIIWxL0fPFDSPolOsk1qYQct34l3UlkRmLl8nsZ/f1mfHITWhxMtx/wNKFEsCQ4vLWKk0c8cbpJO3ERsSyTr6zmgF+C3wWqfRaO0te+BZdy0sejXi74btJ3RYPe/sqQASnxtarjk6kOajLg0IBg+NHw8n4dEjDdLJtuUohCxrLObCqoYyIk3bI23QGZ26iHnwS/B1VLrqecJSfQppumAUmax89aSeZDOwIl7bZpdXEAYt6AlnRXG3ZViGrxFbFYDBMnTsTYsWORmmoTDVu3bsWf//xnrFy5Ejt27MCMGTNw/fXX46yzzsIpp5xSiTVOAliTtWg3nBtMUILZY/KGGRI9LaYv1KQKKhciSTepXs6QdAM2c8GynSIZBvLajOdMMq3MqtFMN0UMmBJulk23Y6NiLVKCdpVd1EhnN3Td9lP2W6wFORbRQ5UcWeJdPt3u3/QG1j7Jf86FaGPTgJ+fcN8PuqCyJMqA8/TckZ48ZY1T0r1xgh6T97uBjHKM+brvW9vJmSk1ZbVjNuVXQoaZMpl5WfC8jMY4km4SXl7ftagc8+5X0i0CS2MiYcyg0f5tKMkpT9IdF6g29zUXfDLdPK/7rnXQgzhMpgTwyy66GU4iQO6biQ5Ppmm6n4vyE+5DOt48Ig+wg6qi7ppM/PDJYC67kchftAdJ9K8sA8Gc43FIuj3Li4Pppt/Nbmlfk175XYfzkmYwIoTTdUeqhYQZkKfzVKqfgmgfaBqlIi+pzq9RTDePpmEJB+YSoTtlDmv1F923/NINorHh8F4ekAFd8yeP8jn9U6sd/51dU4j3JW26XYc1jDlIf9fc8/j5ieA4FCDX2yiQu8b+bUq9yTRCx3mK6a40zJ49G7t27cKNN97ouJ+eno7Zs2fjvPPOQ9euXfHggw/i8ssvxxdffFFJNU0iWJN11yfUJKxAW2gt6mFrS0CoQsLyYukzDIr1eoBQPq6JTJ/Kmkw3tUBpMedCxjwQCKC+Q7eVQ1JD5eeyV2bYdJNhgBx1YzHdXgxQAiTdhxex1ZYD2+swVC1LjwKFOzjpyW+QUG0SeVo324u0fbOeGf1L+lwwmUSZ0GYyTA3LMWEQOIgeRrmRQrGjO0Cvv8OpI2cs+WW6U7L5z8z27PMKrL5MFDNo9lG9ns77XEdqAGYPczsk81OWhZBexrKbgV8ZNsWkOYDIxIEFUnIvihJxYBZbs8gv/DhFM6HFdOdKstomwryIdS7Rku69M3QzoJn93ev5xhd1LTAXwyFJNAP8ubHpZSJNHONdKOmWkdTHwXTzQhgmAn77mYyfTX837/CWrncixlbBVp0Z/byt3a+ejiepejAPIj0QKwMOfu+RiNFPDkl3Cv9Qi2XTzYMf7+X6C/z0TFCmi478OYcviVw3eHO6YR/+O459XkAPOsrxMkWEux+CmkiRa2zJId38o/gAcHiBM12Z4YxVZM5BwvIjU7OY7mrhDu68886DxthcWrdujfnz5yeuoMJCIIVB/KekAJmZznQ8hMNAVlawtEVF/E20mHIQUwqgOAoUlQCmNlBRqV5eKARkE8RqcTEQk2SYyuCmBYpK9HxLAJjNoEWB3XPtsk2Q31vLJOpCdr50exQa9c+AvTCUlLrzJb8vO9tmTsvK7LSFBUDUaE/zXpT4mLIyoJxaQEs0wLwVIxjpiPFXWKj/FVN1ipQB6TE77YqngY6EjSQAFBbp76TDPt4y842WA7t/AI4uBU662c47QvR/xKif2WbF+c46kPxgJGKXZ5ZdWAgU5+r3UmHP9ij0sUa3cUEBkFEIpKcDmqEWFIPed4DeV3T/paXp6QEgGgVKStxtZSIV9kJK5gsAO2YBfYy86frGYs78yDqUF+j9lwZ97mgaMO0UdvkAUEoWGiLay8iz/ASwdSKQ2USvX3a6vemKoleVUA9P5On9Xlhgv5edpl+HjXqaY7iw0Nl3AFBYrN8XrRF0fULQ55H1reDTtGTaWJm9RhRRfXdsNzC9jT3vAXsuh8L2nC04oduMm2uENZdL9HFhfVehM3+SGKDTAkC0NlBijMUM2Ht0OYDyiD6Wiw3V9hIAxRH3GlFaqs8PqxyqLVjzs+AEkF4IFBVT877EvUaY2DVP/2t+rf47M9PeT1hrj4nyAr09rToYYzjXCHfUcpwz/ZaX7OtYmrNNiyPuNcLc0qIASqL2WG96FbD1bf26qEz/FnKNmNoVGEOZMFjrlNFv0RL3XCaxc7YzX1FawDnvy3KBqOBQIY1YAB3rFLE+FBrjIgX2PNY0fR6ZyNuo+5Ho8Ueg1cVAaiqQYUwODfo8ImHmv2GSXmb+LzZBaLbPr5/o/3MuA5obsaJTUpxEd1G5MfeL3WMyDCdxSn6TY504AUTTxXSEmT4FejtZ0fUifJojWqZ/N7me0LSBuceYqEUc4pA0hzmHGg8EmpwBbHjROe9p2sC1zhKEeUkJfy8AgKK1wCxD86gc+jjm0WDmGrHmcTttcZkzfRFnDz/wszOvwhNAmlHPrCx93Qac855FK5HzPm+Xneb4HiCjoT6/zHvpsMdEebmeN72eZtfX72Vk6OOYTMtDmBjgUQDF5e58zbGanm7Pu+1TCdqzRN87zKHkSKs55+eJE+62MOd9KGzTETR2fu+mDTSIaWySPonFdBrHzLrd5dS8ouyPzWcH5rjrmwKb/iLXiMb93XM1DL3vAL3/WPUtLnenNd836V4AKI7ZZdFtRP4syHdqNRVTaUsBFBQy5hrcdISILwmFnOtUGYBZo4D0+sCgd535zxsHdBhrr8Nl0Ne+NE499kzT/2sxPW1RGb+vybWHRUeQENEG8aSV5bE0BS0vL08DoOXZZLvz78ILnS9kZ7PTAZo2ZIgzbePG/LR9+zrTtm3LT9u1k6Z9AE37KEP/35KTDtDzIdG3Lz9t48aa9nkHPc8PoGndBPlmwE73yz81rZcgLTm0dk3TtP4ead+Gpq15Uk9/aR9x2kOH7LxvvUGc9qs77bQPPSROu26dppXl6d93mUd9F3yhaZFiPe3VHmn/ZLRZLKZpYz3SPjdAr+sH0LRbPNLeQ7Tx5MnitLcQffeQR77/+pem7f1GT/snj7QTJth1+PFHcdrLoGm7p+v5/s0j35FGXTVN02Y+Ik473Eh7cIE+NkRpzyfmxnSPcdYfmjalgd1uorQXXmin+wDiNaIbNC0aSfwa0RLOOojWiMZEuqMrxGtEHSpfmTVi1zS9vhdeKG63w0vsb7viCnHat4k6nOnRH+Qacccd4rQvE/mO9Mj3n601bdFVcmvEjz/adZgwQZz2T0Qd7jpJnPbP3ey0z1wsTnsPke89HvX1s0Y8eLq9TnmtEVcT+T7jkfYyIu3K+eK0Dz2kad+dqad92SPf4dC0DS/odfZaI8aOtb/tbY98+xt13TdTbo0w9+8PoGmZYX7abtC09cTamow14tgaTevenZ+WXCM+gKZ1EHxb48bOOpx1Fj9tBjRt8bV6unV/9aYjfnpEfo34pJ3/NeIDY3yI0r4M+TVi3Tq7vuPHi9M+Q+R7cwdx2j9B0z4M6/n+61/itF9+addh4kRx2vffkl8jJk6085WhIzRN0z6pI79GrLhfjo4w6ztlnDjtQw/Z9d2+XZz29yPsfHeuFac9k6iD7BrxATTtYwFdAOhzgZxzGYK0A7ra3/YB9H2al7ZHK2e+jQVpzTXChGiNaNtW0+ZfKrdG1DHyLNovT0domqZ9O0Ce15BZIwoK7LRjx4rT+qAj8n7+WQOg5eXlaSLUDHn9bwl+Y9Wd2OodhL5ZAFsO0iGLF2TVQszT76Mr/deHn6nP5JI2ppoGKRW8IHnLglZ9TSSSFhMxzri+Qkj0deFO4ofEuBSpl9NIq+ejLgl2xkWCGZJMgKhI9BgQ0vOoEkNTBYIWrM6JsPk04YiHXoO3cE1iPvux9y3Pl0tXcliubEc9ZPc4P2PHZx38It443SIUe5mjJMmm22+/VTck2okjkFwHg3oB8kl3vO8z7wSuf0GdlPkqI5FRIfyM9STOC79+BEw1c1kkqy8qCSFNq+mrlDfy8/NRr1495O3bxw4fVhXUy09sBeacqhP22S2BQxuAIV8COz8Cths2Sd0eBE552qle/qGh2j1yk/5e7npg5gDdBudKw9533X12XG6WejkAdHsA2PI2kGK80/EmYOPb7rSkOqKp8rHnC2D2xXpaWl1x1lnAsZ90dZaefwJOfRZ4J6SrOdHocg/Q669OlY+8PcCnhhOqi7cCWYb3y0+M2IG9HgNOM8JusVQ8P21mO2obFwXKjwOfNrZVR3v8Eej5R2DVY874t5dvBrKbAlPq2mnpb9v4EvDzk7Zq2phS4IMMp0oqALQdo8f7BoB2FwFnz9D7LQIguzNwwU/6s4KdwFc97PdOfgjoZ4RKi0SALZ/onsoBoN/rQIfr9XHz9alu9XLWPjtspq7+l54OHF8KzD7LqRZ20i1An5ec77DUy39+Atj4D3f+qdC/bcHFbDVTs/0+qW3X9xoNWPtXYDnhoGTUbiC9gX5dlgvMaKWrep0zD2hyFjBRsBGnABhrzLGZg4C9S5xlfzcQOL5Wvw4DqNfSdsonUi+/phj4qpWtPn/2GqBOR2Dbu8DyO5xpwwB+X2KHBCostMeriaFfAU2HuNeIg+uArOa6LS89Jk21sNRauh22rHr5OfOAuv119aifn9THLQ2WenlqLX1DjBYDI9fp3oRPbNHTDp4MtBntVvXa9E9g9eP277M/BNpdrV/TaQu2A1+dbP+m1cvNpP1e0x1U/fB7oPEg4JzvxGphn7VwMmAs9fJh3wJNBgNb3gJW3m+nbdAWaNwH2P2ZW73chDmWSPXyZfcB61/Rr0fnOg+1So8CX7e169DwLGAfYQ93xRGn7fbcM4H8Vfp1t6eBzg/a46f1KGD3NDstrV6e1RnI/9V4VseO+NDjj8Cmv7rXCHpNM8vpPBYYPElfp0Qq40O/BhZdGEy9/OJdQIj26k8gLQ1YcB5waL4zX7LOs4foh7gpALrcAJz+P32PJdXLZ51pR7k4eTyw4Wmg+516jG4NbvXykeuA1Y8Ce7+y1UGHfac7IqLXiAFv2eM7JQWYVssmIuucCZz9DVC4G/iym/O9MIB+zwE9HtN/W+YvBcBnzex0l2zX9yERHWH2WWot3buyOe/PWwpkn8ymOcpPANOai9XLAeDcxUDDU/VrUsVz3lh97QOAtlfpITJPeVZf81Y9DHQeAwz+GFj/HLD8jzZtoGnA5DrOMk57DOhl7OElJcCMbkDBDv23i57oCRQZz8w1gk5jwlwjPgzZadPrA6OIA4PF1+nOWFlrBIlLd+nq4ABbvTxWDkxp4HxnTAEwrbadb4Mzgf0L9etzFwINe+vr1GeGR2izDtdotsp43i+6XwETne8Aek/wp15evhf4uot+HQXQ4irg9P/qceeP/Kjfb9QPGD7XqV7+XsimI874CFh8tfPbzLSfZAPlxYBWV/+eIZ8D8y9x1oGc92Miej+XHQemUQ5G6bRNzwfKYkDP8fY4JEGrl+9fqftgAIBOtwKn/d1Ou/sT4Keb9OuLdwChxu592QRPvbz5ecBZn9npPqntVBkPpQAXM/zsLBrjXE9MlADo8zJwkhEqmdy7BrwB9LhNv/4w5Fx7Ot8F9H7e/v3Li8Cmp+zfpQB6PGHHKif3ApM2uDqmzw8v9fJllwP7v9V/k2vEOfPcDjFv1HQadccHetqhs4Ccgex2zoQ+1r/tCxxYCQz+TG9fFqqAenl+eTnqNWiAvLw8YRjqamHTXWGoVcvZeaJ0fvKUBWmHTSNizPBwqh72JQNAdgaQmWITxFlp7PLSAUR3A7U6A7sWGumjdlrypJPnhyMtor9nJt36Njst73vNtJGdQL3u9v0MjbATN2ZrGpz2yiZ2vgqc8QqVb5r9fnYmkG2Ub96LEcRVerq9AJvIDNkbaDhsSyLMhT0jpn9TZsjJeIRDdn3NtPS3Z6U439Gizg3DRHaGnS6VYBhTAWSl2vlGqDqQ+aSm6vbH9FiIZjjfAfQNg+W3LL0MKN0EZPe2HZuFYb+fGRaP55QUo63S3GWaMBcwMl8T5gJH3w9T97LSgUyjHmllxFjR2O/zECb6x/yuWnUAMjQ06ZhGlG9mpnNj2v4SMHCSPiZZ75ESr1q13GlqZbnb+vBi4PvBQMN+wPk/useXCbPveD6AaMRKbaI9M9W7/cwmSUvVvyMCfQz3vB1Y9aCRp/F9mVRm6VFn/ivvtpkSOm1UMI7INSI7C0gz2jn1BLD/A6D15UBGI/15RoZtowvoaw7Pb585P835k5XurEMoZp/ss+YywJ4jJdvtfA59BnS8wX6WUuQU2KRRfZCVBqQReYYJzmfjeODUPxLzXtB/KdDXMYv+PmG3Q3a681vMNaJWLX1cm/OWtU6x5rKJWpnOfEVpaYQgv3+S+ZLvpMfs+2aItFDImaZWbcDcJjY/rY+rza/ZdaDru/pG4OiP1H1j7tNpM1PssmjtqCyzHlmcNiHWEzOPcmr+lKwHGrZ1vkbSESWH7PRpKc7DVi3CpznKIu71g7nfM9ap0qPAvnftcg9+rF/XytKZ7kzA4UjNzNcca17rbGaKvWfTZZNS8TQATfvJjSFrPckFClfqh7eAvv/T9WHu4Vn2nkTCpDkiRe58sjKd875sD0XLZAPlZez2SEvT/yLU2MlMdX+vmZaHE0QlUgCUbtTzyACx94fc+ZJ0RBa1VpNptZgxPzOBknydjhD1sUlHHJzivVYcNJi9pcv0w0wRwmF9PeLRM44m0tj7MgvkGkHOd8D9vhZ1MnJWOs5engknXU/uXWtut5luuqzC5dQ6SAkiMuCkH1JjQP3OwIlf7TQfhYGrysV8CeCU3pNrRHY6Z+zWs9Pu+Q/Qbji/nc01Mx16PWTmMk1HiEDTBvGkzZfTpKrBumk1DObADqXaqmyxKKWuJlBaMDf7VQ/x8xYhVian5sE6ESNV774+hcrXQQV45+8ukLg0HRwRXNOvr8q/T+ZhworTTXsvj8Jx7F//ZLggiqNNwqGaSKvSEb+P/STO3+HN0njmR/Vn/kXAt32AfV+D3Reyaj6idAJVwcgJ9n263Rwhrsj+96uGxKhLKrXB8EIsMUHUxfIEStSpEyHxDqIyteMj/b/p/Z2bh89lXRTqq2E//nuhFJvB16KUN2xO3ei1xvJQyoA59zwRg9WXuWv1UGoLRnmk94BVT3p9iPHnsSyKdjl/s7yXk6DV/+k2PPKDfNk8iQXv/uHFusRzx4f0C/GVJ/VuIryXk+FsOPn5Ncco2MYohzOmSCKWNZaEYLQd/Q3zfyeOZb/uWeIHtS7EygWmJZLrE8tbtqNMApECIkoFL3/WeIlDjbZ2O3HyMobUce+X9rW06rVHe5mabCRo9X4yCoYWBeYM16XNIrjmF/U7Ughsf1+s0svzLu5H3Vo4V406mZ7gpUP3UXNbFMmCF6XFVRXiO2jayFGvGHBwnlyezkycPxsNYNSB1VYStDsrfxN1u7Hv75mh74fRYvczOlxv7fbuNHPP59fLyodDY/L4ikb9iTQea7xG8Dg1xJSqZnzFbwExgum2ui1GLYyyE5cCGTJDCCL/Br05SViTKMR/7iCKAjAirAWJDNME6CpYgOE5kiJ4vQghM5wSvYBoVNub6s6ONHRbcL5PGC6LaLsl17nrwMvfinkegEHY+TF7LMn2j5DQFhDJOz/m5Ecz3byDGp/jJ4VxaknHpA8JJAQ0HHHCGcSoI/wMVVeSIQfYbZhGqV3y+sPv5iSK053RmP8ezXQ7Qq5wxh19P6u5XL1E2DbJLTk4vJCfXmYcxyjCs05n80H8TLeLAKLqQ3+LI6QbGMSMn/4mxhU5Tnh2s/Mv1iXEP1xLZSPLCMVjjyfxrpe9b0yG6ZaQjAzy2CN5Y8oRjoou32hD7kEII0/WvS1v8utFjrVQCDiJkIytuAv4JEM3CaEhFa4NYPYRK4QioNfdHHN+5pDXoZTwXY9yTNMy3j1Zu3ev+UDGRwd0JknE0Bfv1w9uj6/2Ktj589d/AisfsH//eBuw5Pe66Q83C94BaZSfpizX+Vu0VlvhN409cdnNQPux/PQW6PCpkn1Rlsv3oUF+x57PgC86A0eW6b/J/ohF3UIOGciMVWYIPRHtLugHE7w43wsu0cNYbniOkS9Fe7Py9gwlB8Z+ZN7n0QBE+laXivOOldv1Uky3QoXCHKjhVILQpSZKrFSX8LBiuybEcZMEoeXXUUQyJN00IbbgYv3//Iv1GJj7Zgqyk5R0n9jkjF18iIpJyMqLSwAIJN1+4layFucgjju0GNhSFtm8BP0oIpJ5G6XwRJosVgN+Hi+uGgCs/bNuU0Y6PuMRQH4cqbEYGnIzDROHK3TfpQtsV1n5Awh2iMOAw8EUVYbIoZ6Q6ebUje7LNL7tkzRhHimEP0I8gKTb/M5oSbA5RY77fd9QZdH9SkskqfFOM0TkGPUi/snn5IESr03Kjonz84I08+bz3YLtep3LOdoxVh6kNIeTn8MBIgekSRS7IPbtot3EWkyv1+ZvH9oH8Rz4hMLOA4a89fr/r1laWkQ558wDandg58laN7nzS3PSLq7HmuRhL/G7eD+nLK+6EHUSvSMtlfVJX2W1EPeldD8z6r+J8KdiOiZj0SfcPEKMOtBMN7UubH5dkL/xriltLzsm1nCyqkEfPkqsu2XHgakNgBmc8Up+R+lR3SHwd6cbj8qd6QIxeUFpZHrfJekOGY0DTh+yYM5BR3tymG7A9p/Agx9Jt6bJHc5bz8thfb9iuhUqFKSk2yLoKanLjg90px8r7nK/nwgPgOSGyGNSWJuUkHFkSLp5UnR2Bu736QXH9LS+3yB2N71MvKM5r3lSVfp7F1wKfNPLo2oi9W8CQomTiJngEXHEtV/Pkla+jM1DVt03qKRbizrfNQldevF2ENJkWRqw7hnv+q19Etg7A9j9KZEnR53YD9NN1qXJEHd+IYKB9dSCYBGDtFYGp51LDwsqycBSwr6YzlNEdDoOADmS7sNL9ENAM1/6xD1/E7D5TWDN/7nzl12zTv0r/HnF90EYmfU2Dx/Kjtvxs4Mil4rx6ynpptXLqbXIV6QBcjymsK8TCVnpVGYzxk1O///6uk5Us/Y5V/kSkm7T+aYIjkMxiblJwoyYQJd/ZIlHoZKSblmtg9KjutM5Gqx13TrATtUdOnbmtHUsAuRtcOYR4o1Hgun2w6zT90sO2dekY1Heu8d+0h04yrYdmS4icITrlY8wfSRBTHcCICXppvdFSjskd61E/gwBiRD0mi7RxqbUmtZ2dNWFAdJzuha1Haj6AZ1/qTFWTyFMLmTUy7kHon7MMjhoPMh4hV4bOXmLzFfofEiw6F0tCvzyMlWuAKSku4awqzXjK34LcEi6SRUtcoMg1KIilApjQtzuk4smZ6Ltmsq4KSCIHUyhkX/Dvsyk7CqRjKY5gT0YV65al4DpDiQxlpR0iwhekWRYaDMeh3o5b6x4hZ6jy2ZC8D2ZTamyOaqIPBvkRNiP7vvKeT+U4uOElTQ3MIl0UtItkCwGIrISMac98hQx3Q5JN3UAuMbwNj9rkM4c0e1qotHpwPLbgfV/AY6vcT6TbZPaHeXSWfn6UC+3+o8YtyUH/JXnuz60TTelAeLS/PAzdkimmygnWUy3rKSw3xvue7x+WvNH/f/mN+BJbEqZL0kc2LDMRRwQjCmRdFd/wLkta+IjagPq2fFVgrTka+Yhv1F32vzFxO4pOuM7e5h9r/FATp6EJNv0duwA57A3ckL37MzSOis7rpuXrH7coHkYPlq+7QOsvAfY/h6nTLqexnwqOQIcW8n+FlE+W/8HHBKYtwCGx33BgZQsvZGQ4EOcA1+RpNvLLM+kFRyaNeQaI1PvAOFFSf8MzEMWwVpJzg0tBmx80X/5ZJnFB23/D/VPse+b6/ehhXr0nuM/Mw41OLQC94DEw7afBOvgi6deDnjvw1z1cpakOwbkb7R/k9qiLCj1coVKA7kJWoOPmigkcVa0h5qIAqJAxqZNrwSRHWeiyTq0sLIk8tnyHyNfQV1d5bIk3RRoaaXGYPTN913MEEfSLQNZm25Hujjs1Vj2/UHVy1mbuXnqr2niuMMiQkB0iJCS6fwmy2GgSNJNtmkCmG4aJGPpmQc5P0rd98h8AjHdHoROIuCSdAvGvUu9nKgPzZia2iY0SEdHtLMf2e9LSfe27SXzlJkTLkdqiSBuuYU5f9LEhdfhnZ94y7y5afZzVgv5vGQgGwM+nO627+fOCaKvvTR5ZNTLZYg5x9yVZYath+LyeX3C8rXi1wnTAQmbzIwcRpbEIT/g9n9hOm761VArPrrUuz6hsFvS7tA0i7Lf3fpf3WHcJ1k6XUP7OFh6A7DheWDD3xjfQfQLSxrLbHvjne2TGM84MPM5/AOw7CY93KYX9kzjP5PWUEvAusQzexCqAXuYOi0Z607nmEOc76vVlkjvgxYy5zBJyzI1ODjzlD5cCby3Et9LjnXy0M789tln6b5H5l0AV3s6mG6Bs2Rr/PqoryW0o/qApQUjk7c5Vjvf7bz/M0N7jc5r7VMeeSumW6Gy4FAv50iXSLurlAy5EzIASDdC6/R/S1wHR348G1iGRECoXk7UP1Kgxx0W1ZVW92JJuunFmmaaeIwE3Z5k2kASY0lJ95Z/CzKpDEk3h/hJr6//X3478Ekmn6CLykrE6XKp9uc53SH7b9cU4v04VPK0iB4Dl0Yo7EMKSLSZdShB9lHIeWBGwiWtZBFT1D3Sy27CQJUhMikQ2XS7wFkDRGuUbH+mN4L0YRWtrcFzQGOut5ZDtSSqe/q1OxWZW3gXRlwyNJekzSkkiX1ZSXcoDLfjJEa7lB4DynPl85dRL5caO2QaibnpeGR+h0/V8AKGgzO/eRTu4D8zQTtoBOz1iKsqbtSDtdZzJV8e41yG0Znemv8sfwPjJpEnkw4RHKD4kiLH9Hm49wv71qGFurpzEUfVmXcf8LHeJIPpZngvpw/ZvUyddk9150G2P2/Nqn0S8cMHe5JpHNiRTDfLNIA3xr6ltCuDrvdk/uRBFenPJVLg9EVQvA/ug1dy3gn2SFMFnm7/7Jbs+tXuwBdm8BApBLZ/oGuUsGCOF1p4x3IC6Pcwg7TpriHsas34it8CSBsrS+02xp/kNOMkGuzmpGnUDzjpVlEl7Eveoml5+SUgVJGmFrfDi8R1dXn+lfxGEkd+YDNYLM/EFtPtkTeLMXNtZkFUqojfLS+intF1YizOQSTd+ovuW2ZICfOQYM5wnQimsfW/gmw9JEJkfc02NZl9EyShTUpQt74tyNsDWlQPreFCWEB4ujKxL806OpjpELgq8ywvuq7sqT5JtJoz4O4fVqgRE36Ybt4aQPb3ejrUkOR8TqsNeaabamfegYpZr9WP6P/zWAR9guAipGhinNY+EGj7eBdGZkTcNg91JZluWYaElkryEEqBm+lmjKevKIdmXky3jPdymbFDjl9W+CUZSTfTxpGjUs3Nyq96uUyerHpR6uU08jfx8+MS84x6ku3K07CSRsjtoMtLi4ypgiw4JOFBi+mH0Ruet+/NPkt30jWdwwCJ8q9I9XKXk9jNcPm3cTGwEurM5Seo9pVguh2HJJx5eUWu+x5rnDIP/yX7VMZrNxOkORkhgCLX1cM/uOeIqx+JeqbW5aSBfggVi7rr2/Rsp+8DEyc/Ay4NwsPap/TIOUtv0E0uAN0Hy+ft9ENs81vCjGgwNGTLTKuv/y/YYY8hJelWqFDwbLrJRY0M40A/Ey7wJkMvUqXVwJSMmDBV1ByxeiXAIiCFTDcleXNssjzpLmPx3jjBeEQwVGXHBUy3l10Lx2mE84Y4D4AhpSd+m21rqmG66kqqg8Xc92QRCrEXeNZGKSK+WPBkusn6GuO8bhcqGYcgEanredYrCuykYxHDn6Tb4fWWIekm86LbYSulZZIQW70goCXdHkx3OE5JNzmmDs6lnjHy48VqlVVFpMcwr2/3fa2f7icDLht02u52NfWYYafq+O2HOeD0UcyvpFsSPKY4Z7DzN9N3AuO7Sg7K5W89T5B6uef6L9pfRUycT0bTr3q5VJ4C21dfTvoM8OLGd75T/yPLNX0/AIjfR0XIfajGk7TaCdy3TFrG1xqsiQ996zEcvgkdqVWgevl3jFjS+RvFTDdPJZ1EtBTc+vGYbscewFnTw+m6LxAmiPL8SLpprHpYLp0of5IJJfentDoMe3H6QJ1gmC16j1P3rf9h398wwX2PdH4axGQyYkSLWP8X3UHkvJEEb+Ll9wL+9ipA93RvausopluhQiHjvZyUkNBO1lgbyNIbgS3/JZjuVMHADgEiSbcVdoW1yEqqlwNAyWEIN1+aCZjZ352XzMQuNqSEYZrp5qi4ypzQearHBtggvskAeQAAl8RJREFUWeq3JlFQTBGgjnaLR9JN9bWVJcsxht+F24M4ZaqXc5gOLQZs+59csb0YGxArTxp+bLrJNjMPwOjvIeeub1QAI85ziMOCSNLd4kIqbZgd3km48TPaiMtcM+5vfw/I2+i8R8e6ZxHDgO7Znk6bKMgQrM4Ezp91Ogmee4wRrl2xBOEU5CCI1b/9/wOcuxBoebF9j6VeLnNgWLRb/DxRjtRYds/OggSPBDbdmiZ+15Xep3q5VJ4iSXcApns/IyRnKEVnHrLb2Pf2Uc7U/Er9WXD5b6HMe2iw2s4y04tXA4GAqa3V8Wa5d4IwRH6Qt1EPncnU+DPK92XTzdJiCFOHHqRWg8T38db6UIrTFwhZPtOxLpks3oMdDziYbtKOOwo0NZwNbpsI/Poq/aI7LysCioepIMvMT9PYY8hBgwShDal6Hppnl5PC2Tuank28LrGmh8JAI0Pdn9QcSZazzwpGgBVVoVLAitONGITOuVxOSihsm6j/pRo2XSIGI0Qz3RHGc7A3MV/q5QuB4wwbMxMk0811ACKzsGq6t2RSVZAVMsz6LZFnLOJceBKhXn58lS5NrtuFYLoNG/woffrMkHQHsk3iMN2sRdovcSA83afb32wLzmHG1rfl1LIB3TO6CDyVSFlJd/kJZ1uYdqf09/BsumVQIdJvWtLtwXSTTqLIbzX9RFhpQ8CS6915CD34Gvk17Ae0uUL3ALtoND89DbO8a4w6Fu52xqvt+SSQc0Z8GhLSIOZ14XbnI09bV6pP2o4Bjv/Eft8VjozOi+gjUmvIIpwEKoJBCFaWerl5QFuHsN8MpTD2iQQQyFI23RIIhfSIBLy45cK2Ee1Lfm0ckyHpZq3rHurlfmEy72R+pG0+ED/TzdLQYh3iOiDqE4m6pNbRpX9ea7N5QF6LOHRICNMdsL1MM429MzjZ0ppLdF3pduaZPRD3SU/VUvbEHGFNKMx/5unHKMlMNzdaSdSeA6wQXEy6mT6gF9D6ono48kyJj+mm27RuV5uG5h3Yku2w82Pns4b9WC8AqbX1S9LBnZJ0K1QoSEk3z6abhEvSLaFeHhZJ9agNzXVSaRJMPjcB1sSPMCRiJhyEIm0Xw5F0M51KaMCCUdS9GGMB88G8ejpOC7hBWjGMjbqYaku0Z2DWhhPkxDycyt4EEsJ0exCnXGkQ+dtIQzJQXvBasLn9K8l00+FoWIceJLFAS/FMb8B2Bt5lJgVGuaYpg6ykO0aZs7jGShjYM92dh0g92LLlSgG6PwK0OB98qaSHtDJSCHzexnnvlKflVOJM0NL7hMGrr6k5QxPK5DooiioA8Me55QyHo77vqofk+GR5L7fmIh2yTMKRmh/Q+yN3jkt+i9AhqGh/FUm6fTKarHJIszIane8JlqfDh4wP8EwyzLYjHUolur8RgtDPiayk28/hvUMAIoLxnHQ2RZtKOJJL7qvxHsQeW8HJl9qLPbVzWO1ImziSz+KUdLueadR/Vh0hb25nhfz0Ca7juKgHHSHQEPUUoHDGMKv9SKa7PF9QH15RVJtmNrP3Dp5NN2nPTntIP7ackZ5guh2oGexqzfiK3wI0lnq5wI7SteAZE5PlrdehXi5gumUk3fGql3vBIenm2TZSC0PzEey8yminKzG3HZC5SCeC6Q5KVFhaBNTGfXSp06adtUmKbHIB4Ipj7jBBPKlwLAIcpBZNL+KADAFC1osFWtJthaHhSLplnTQBEqekvJPhsJzDskxK/ZRJuIXsAyU6Xq7UPCDy2vct0KC3xDs+YdbX3EBFp+GhFDicspDfsPMjYPObRFoJm25XXcx1iXiXS4h5MN3HVrHv+zo9j2O7lLL55T2nxubhxdRzog3beGgC8CRMlqQ7i/0cYO8nXmDNUXOPcfQry3t5HJJpgH8o64Is0+2XaLYqYiRhMbcxu3/TGwBdH/CoBCMPWnNCul5mEpF6Oeebm53Lvs81yQgx8mM4j4rXkZqIOfTtvdxjXpKaPp5mDua6Shzy7Xifnz7Zkm4vbJxA+UMIoLVHO/MlIfo+izEWrfUSkm6hFoMHWo8CWvxOLq2zAsQlpWkqWj9YY42WdHNpfVYb8/onbJhwAjgwm53EUmtnFub8GS0m/IHwJN2k2arEuOEx3UrSrVChYDpS85J0M9TLWY5ymDHAKdBELUmM55wBa4H0o14eSF2R3AgkJd2sxar4gLuuv/7TdrDmlScLMpJuT0dFjLayVOCN+pKn5Zv+SWTPkOqImO46nXVCr25X5/30hmAujloE+H4oddOjXS7Z4c6DC4akuyyX359k2A0vpNUVP+cREbLqlbQTMJYvAHJuLR7DTk/Wp3AXsPha4OgK3bHKplfs5/MuYHsnJTHoI9t0RBqMMUaCHL/kelFywP0Ny28n0nLWFUd8X7oqhKTbzoiT2IPp5vajjy0w6KYfLeGrcQLwJgQ9CBVSWyBVJKkGn3AzYxiL3mc5OfQCa/3hSbpde4xJbGpiaS4LsahbldEX0cpAMiTdtCT2tL+L68DKww+RLJunlyO1jjd550vCbDu/jIevMjy8kzP3Xlb7SGqJhcJAeZ5+PYdzCEHXQ9ZRoayvlGSZHO2a4qa1HFJimXFF0adNhtrXQqbbXM9Yktqw879VFsumm3PIJYNYBMhq5rzXsC87LTd/oo2aDhOPfZbGF22Kxl2/iDKFvpWg14Hn6NDEIIEDUXq8RYvh6Q+E1M6VyRMh/6GHqxFqxlf8FsCK0y2y6Xape5rXrI3JlCj5cRpFIkTky5rsHIJYNk4gCZG6oBkjk15YWeVECt1q7FvfBvJ/pcrzI+mmDwEYp8OyIXlIHJitSw1pSTcAxAh1e5YNlojpNgmqoz+6nzG9l7Mcqfnc9IXqxJoenoJE+Qm4xlQsCUw3bx7JLvSb33D+Nvtq+7v8vH4hmGjW+Fo0RveoPrMf8Ms/3M/NGJ08tLsK/m1GjbbmqooRRHgoxVZPXHaTxxyR9C7uqAtD0p1optvPRi5knAXYw3jPIQXxmkNeTDdJwAY0ozD7URT2xRHOT7I/WXHeLUm3l3q5Uddf/wlMbeDPm/zW/wJLx1L58eaC5BwR7o2iPBgMgYnig/DsX0dWjDxEB2vSEkkKDnM2BnwTwAxJt8tsyKeqPa8MR57EtzEFDix1/eN6DG0vTSo/plXWIYakOYtsfPtkmiHRjP/8kf7KpbUtyTEjOnwv2OZOb+XBWDuchRKXcTDd0RJ32laXAmd+6vEiS7u0LZCa5cF0s8YSLemWWL9MTVZeWhn6Xhj6i8qXlHTz/IGIhHmAeyyQzt6cFRPUq/qgZnzFbwE8STfPRoWnXi4iloTq5SKEPNTLOQikPihQcd/4gvnAu5xD89jZd7mX/W6ibLq92pfXP8tvJ07LGVJInv2iMOSTQVCRYVwAQ+1I0qbb76YvJCY0YNskxm2qP01nRiyCngsvZkSgXh4IhqokGUecLuOn+4hnjPGV/0vAsslqBPQuz9tAaUk3iU0v87MN0o6WpJt4lw41ZeXvxXSLojJIwI/GwI+3A9/0se2rWfNG6KSITutD0k32CW3awasLCVGIKKaTQw9sfp1VCPUfbPVys11WGmuyH2/y+79x3zNDz9CQPjj0I60hnwkkVTveg9TeTOfluCfamyQlkq57Xo7UfM5nGUl3IkKGubIk5wZrbDPaZ/1f9djapOOvuMFQLxcmp+YpyQgFlW7zPJVz60DtHaRXelnNP573eNG+tOIOQaaMtUMvzF2veBypxUrdaUMpQOvLxO+xDlMtJ4KCOSOSdPtRL7cEMnHQMyJtDJeku9Rb0u3gWRj1ctFxHKZbSboVKhQOb6KEHaXQo6HHqR+NMJG3CyJmnZB0+7EvCcJ0k98R4zBdMurlPKQZtiTW4iVp38UqJwjTLcyfwxCVnwA+bwesfdKdNiLBdO/72nn/8EJIM91+VQJFTLd5wk2XSZexwjgk8GPT7RlvVmADFQS0IxqAr7INsMeKAwEkxYA3k+VK70O93FcMX6od63SWqAuhgWPi9P8B3R8FGvbxUTb4885rI89orP/v87J8WVve1L2Lm5o3LJDzwHMO+ZB0h0J2yKNBHzGy8lgLhdIYhqQ7u5U4P1EZtKSbZjplnR6xwGNMiln+GRJh0y0h6TbTpDfgFcB4lVSxP87uP2FEiAD7FnmPN8cTIel2lRmnpJt1aEEeOjMl3YLyvNRw/cBqY8l2o5lS2hO2/YP9fulRd4hGUxU+IZA9zCHTkQITAdNdeoxfBssfhAMMm+7yfODDEDDzdB+S7lJ3Wpkx74j2QWmXCsc+J7wXmY+MTwrTJ0c85nL0PGk8kPhB09YRYq0QSbrNcll0JfVdPEm3YroVKhRMR2oeNt1MpxIBJd2eqqNBJN0eDEHPJxk3iW9iSUUBBtPtg/GwpGsGsRGPpNu1QGmU91YWRMyVmR8pIUrV1VdpRy6WpFvgfdokqEx7TrquruJZ7eiX6RZstuuecd+LloI7prycxJHw3GwSLOnWYu5x12GcO13BDiM9S5WarEdQppvRP7XaAj3+KE7P0qYA3OrlsqDr3/V+iZcY4z0zB+j1PFCnC12AR/m8dvXoX5M5DnJYZs0XD7XXRDLdpDNCVp2lnENxQHueBWwv937AsumGQNIdCDwHTqxDv2TbdFNEMy1xFTF+5hha9TAwtSGw5d+sRPz3g9p0e4UM87su8mxxSWz4G/BZc3/5Ogtx3yL3RaYET9B2ln1sAmC1sayklRqnjpjPZBg8Tv9+2hiYQplUmeMuETHAZc0WeBEtRAcAluNYxrhkrh2ALelmCJrW/En/f3SZ+yCChxhDvVxmzJ/YDJzYql8fXqT/LzY0JkRrqyjKg1kPXr+R9bQEMkGZ7pB7faLjjZMo3scom87Sw6bb5ZSZtRfA/5pTRVEzvuK3AJaHcZY0zZGe4UhNyHSn8JlCIePqoV7OW6C9GNna7RnveDlGgXux9CVRN21a05zvmv8738V/9egK/UT1y676IhpI0i2KaW5+F9Ge6/9iS+cdaU0P34INVrgJMBhav5Lu099x35O2VTNQvIdfhh/1cs+QYZwxKuv4xoWYczNpdSnbSdUMY4y7CHLa3tGn1K/X3/jPcgYDp/4FaHs146FRLu9AQ6ReLgTV/iIv2VZVzAMwRjk0Ex9UvdxrXJgq4oE2fAmVY690ZlpL+sOAY04Re4LnAZ9PkDHSSQmsX7AYMJEjtWRDtpzATsAo1VeXXbPZhsb3n/mZ/fyE4WPkF8PB2raJwcoWQei9nKfNwpgPrMNbE6z5SftU2fy6OFxoEDj2CEadReM3o5H+PyuegwADfqKgAG7Jp19JNzNP473F18i/w4PMgTepiRkKsxlLJiSYbno9Lt6vOx3N/Zko3yj713/Z92TpD5akW5Zd2vSq/n/1Y0Zexhj0K+kmNVp/egj4nDAXOuXP7HdNDTUtBjbj6mXeyJAyOw55BOOX60iNtOmOQ9JdQ9jVmvEVvwWwbLrhQ9JtMQCCRVrkSM3T6ZkxwYsPAgtHU+EIgqqXszZJ4psym7mfA3CdJvtx2EZLuunNUqQivNCI+52/Sbd/SpZ6Ob0gsQgjmbAnohis5bnue0xHaoz8TfXJRv0YefhkuqMlCD5+CHjGm00w002H0BLls/dLtnSSJFRz1/srP82wQe7Eso8zxo9py2+qUAOw24F3Ui6QdAulntQ4kbFtFEr/aYIioCaA13vxSLoLtjlD+pEgxwYpLWBh1cPAp42AnZOBnxnaP34k3Z6QJOJZB4CysOol6UgtCGQPekuPyq9JfpwBOZ5RazFXemx8f4sL7HtLb/Cul4zndL95eKqXM+bN16cICmC03QbBwWAQeB6MsdpJ0D6maRbpdTsozPEhKz2nI1OQ66VjHw6gWbh7qvw7PJiHQMLySPo0BNTrKkxugwqR6ngkUC/f+SGw8h7iRsxtsia7pvBsumXAPeAN6L1ciznbOyUb6Pl/Nk1BHiyF47TpDoXd9STHm8jkJ6hNt2vtDIO5XvgyZ6u68PUV+fn5Uunq1q3rnUjBHxzeRI1rmrAn4VLtMdOJmG6BGohosSJtun+6Dyg9oi/s13ipRXoww8wFgvVNFDxtq0XgSbo91G5pRAoYhIwM0x1jL0yhMKxvd9mzik4PBX0gWsTKGXNd1pGa5UCE0X9+VdtEJhR+4NXuXG+fARd6Wr1cxGTOv8hdHj0G9n0ZrB6nvaTH1DUPhABCWmC0CRkTM2KYI/Dss0SS7rS67jj3Jn5+gp8PD0ImxSfTHdibqzmWqXTNzwf2fyt+9ef/0/8GfSiuz4JLxfmYnsXpMHMmeJLuIEy3NJNmrotxSLpJJ4NMCUsy1MuN9adwl1NyJAORY0PhXmZKuhmHSOn14aorueZ4hQUk8xWV7YXjq5z7ipd6uW9Haoz5yXNsFxgB1gDRGDOluaFUoEEv4PjqoBWz94J6PeXS0/4g/KqXM+sQxyEWDZFWg6M8ghbo/SLfJJBEIPVyVvkx3Qs9iRKWTwcGWN7LzbIzm4nz8ct055wJ5G9w3zfXdXpPdezf5U6m29ORmpekm6VxJCnp5qmXk47R9kxzP6bbMhRit2FQWqyKwdfKWb9+fTRo0ID7Zz5XSAJ43svz1nHS0+rlJqMuknwyTrkc+XFftMsqPcJ6mf2al4SBNfE8vVMy7sdj0124HSg5IifpJhFOCybp5jmT0WJAyUG7bqR0knl6KCGJMr/xtJcE75P3OJLu3PVUHF1KXZKEX0l3wphur6Uu0ZJuSr1cdsOIRxOChZQMp+QMYBAuxLebm+Kx5ez8HO1BO74SzLPCnVQ+cUq6TQ/20oizf+l+CWx2YCKBqtMuSbeHRFWIgJLujn/QJTAyMOvlUP3VkFBJNwmHlNBoK9MjeqIgiqssknTX7kCs36ywWhKHlPGqlwPuvuPZn5vwbW5RBZQqmeNJ0D4m0x1OBUb8CFwmcQDCzcsY6+EUoNHp/t93qJcHXDuChGh15eEzTJpV17Curl+nk7/3aXg6UiPfj7nT0SFJeRA5UmsyRPwuV5OFc//wQrZGlHnwsvoRdj7mmCL99ljCooDq5ax5GpNkunnhcEV8BWAf9DvqwKp7zWC6fX3F3Llzk1UPBS844nQbE4Pl7dkET71cyHSHgjPdpC2NiaI9undbVjzOUNi2Z+XCi+nmSbrjsOm2JNrE1Fj7FMF0S9iiAno/0eUuv83NfLDK5/VRnnEa6pIKCSTdopNwcxHreBPw0wPs90mwNu0jS4Elv9evr4roRAWpUubKwyfTDc4hxPb3/GUTSgFaXsT3KH18Dec9vwu9cQBFS7plHaE57HCDqkxT79Jzmma6/UhLSE2PvZ87n/k53BIdXpUcAmYNtiWhrDVp31fO317ty5V0+2C6e/8dWPWg/jtepjuRUieepDsIoyNN0FNMd4cbga4PAl91k3jXqBe5lsbK4R7vCZJ0Z+TohzTRYpuJ5an9B4VXKESAfYi08l6g28PGD5PplgytZCcSFC3rJI5a5zb9Q/9/bCUnfUBHaslEkDVA1D6kpDucpjtxTK1j2533/RewQuDjhVvPAG3hOIjx4Q8is6l9WJ+INWfuCKDjzUCehLkTSYPKONKzIJB0c0OGscpnMN1eaDoMODiXo15u5MXU5iIET4lyPsgDnX/+JncZohCo3R4BNk6QyxuQl3QLIx0Ivp32D8Cz6f4tqpcPGeJxwqOQPDgcmxiLEqme50pPOLEA9HAjgDdRRU+6jByg9LBYtYq32R1aCLRjOGuKRYAUCUmXp6SbtwAk0JEaoNs388J18cCSdB9eLFG8wGTABH1yyDrw8KNezpJQiZzrkCAZr71fAK0vtctk9Z+0MxWzTM4hxJLr5fNo2Ec/Ye/6AJ/pJmOQkvDLXIVTdUK5cDvVXkZb9HlFLGXjOVKLB66N1CSAKEl3GeFRttlwyi+DAdJuO57DLdHJ9+rH3arH3hmKH/PWPT+SbjLutSyz7rc+vmAe8CRQ0n1wjlw62pGa6MCWhpmOXEtjZe595MhS/7GFWQin6vtY0S57/YlbU4HC1rf5z6y+ZvRL0W7KDpWCzCGlOe9+eQXIbELtubLrCKkVp9nMNk+jJGjIsKQipK/zPLqIOecE8zBijD2yv4Z+Dcw+0y7PL1KyAzLdBiOixeCss0f/mgw34O9QlIeDc/U/GTjqKhE2y0SDU433RY7UZNo+Bv9mEEb9YixJt/Gsfk+3uVcoBKFZHfm+LGp3BAq2MvIRfZNHFKFQCnDqswKmm0VzSzLdonDDojrTkm5uyLCawXT7GpGRSASlpc7YuAcPHsTTTz+NRx55BIsWLUpo5Z566imEQiHHX9eutjOGkpIS3HnnnWjUqBFq166Nyy+/HAcPHhTkWI3BUi8vEXyrFnWedpWZJ/teTDc1JFqbzsE2SleVyMysDFU3SRUl1sQjmTxZSTePoRK965jgIULSLalejlAwwnrPNL7JgAXq5JC2lwXgkkSxYH4jc6GVlHST6Sw7cIIQpyFzQu4sAPKEIwNdHwBGLAc3DIVVDGdM+l3oSWaMPBE32zgjx+P9BKuXA3D4XCDrQs/PNY/baTrezM6L5YHdhB/1RdEmTJuosNrEpaYYlOmWVfvneVQNiIRIuo1+cxDBxCFVkPrSoQe5RdPrS0jeWzpL6lWnE1x9+MtLwLIb5fJ01Y9YM0JphNqlMc8TwYCQEGmdiSTdJFjrpQzTHYvo0q6f7gN+oD1TB3CkxgszaR641ekMKdKR9PpdIeF+PPZc5kGyoH1MQQW5RpBmXUHCOGY1C9gWxJ7vCDdYATbd3R7xTsMrz3UAKDNuWtrv0/CTjxbz30ek6jbPe3mPPwHdHwfOJ7VA6PCHgrxFIA8DO3LWPjofU9296dlw7emsd0U0DVNQQvB8Qkm3QMIvGvOu9aZmO1LzNftvvvlm3HOPfSp74sQJ9OvXD6+99hpmzpyJYcOG4euvv05oBXv06IH9+/dbfyRjf//99+OLL77AlClTMH/+fOzbtw+XXXZZQsuvMmCpl4sYGFrSLaNeDrgntIxEh2fLxwsjJmsXxJqou6bY1zx1MdZ9lmMwJhiSbpLplnWk5lDz9IlZZ4mfe9nIAHbZok3ZWsQEcYSzWuin+wCbMY0xVKhF6uUHv9f/txjJr5ejHnHadGuaXS/Rwl+0l33fr0Qsi/Co78hT8qQ/YZJuOqQW6RWdkhaYY4R0FGV6oKchsttNlKTb9e2MfutAeXX2JK44Y0j2oEAU2SEIEhkOi1QBdngvTyKj49KkCSDpJpGajcRKQ4n2Dafa89jcexJh3yoLae/ljPsye6UWtRlE17MAkm5eP5y3BGh7DTD0K++x1fUB98F1shHyYLojhcZ+Qn6rxDzkRmwIKEUN0hbknu9HvZxE0IOmul2CvUdq7dHOO73eI/+T8KOmHkS93GK6BTbdabWBXn8FGp5GPnSn4+UtLD+Nfc2qR4Ne+n/zMCy9of1M5DiU3itrdxTXkXR4KBxDIkm34NuPrqCSh9n7eTIEEpUAXyNy8eLFuPzyy63f7777LqLRKDZv3ow1a9bggQcewAsvvJDQCqampqJZs2bWX+PG+kljXl4e3n77bbz00ks4++yz0adPH0ycOBE//PADli5dmtA6VAmQkm4pz420Tbd5wu+T6ZY5XerzMi8z9m1pybPH8GRKY8s43yi50bEk3aEQrM1ZVr1ci4Pp5kka7Ap5522FdhDZ8JuSbhbTbbxXu73t3ZopKSDvUYcsog3PjIHqBZc6nV8Q74rqc+QH9n2/ku6CbbatKukoKiTLdBvPiyW9rMqCSSxS/eWQDlL1TG8AdL6HcoAm8HLqCUFf0IwC6+DD1ZcBJd2ZlOZBXU5YG0esUb9gEcYJZLpdZcWhXk4SYMJiTEaSCC0Vd0idJDFm4TQG0+3DIZRJ3AYGJen2IwmT2UO0iDPPzf8mnsmOM41zTaD+ycAZHwB1TvKeC+EMKtIBkd7LEZUMWl7MuOmxL657GvimFzB7iL3GmOkzm/LfI2kgUprne7xKHP5yXyWkhSymu243YKSHFpnMQVP//zDK9rkHWkw6qXUj4QDNijFt1JMVnsrKpwLUy2Ml1DPJvPw6UiNBjrXyPHYaMx9zL7YEcqRGm8CmmwZJ03p9o9CRGm9d40mujfqb/iPI9Eq9XMfevXvRqZOt1vf999/j8ssvR7169QAAY8eOxfr1ftVHxdi8eTNatGiBDh064Nprr8WuXbsAACtXrkR5eTmGDx9upe3atSvatGmDJUuWCPMsLS1Ffn6+46/KgwzhIXXKR6mX7/xQjoFxSbo9BnrrK3TGjAVTNY4momVVGENhPdxOu2vZz5lMN8MBhp5YrkyLYYxTvTxRXrdZCIWBYo5k1gJlc8nMR9C3VtsSp5Skww5XOgCH5lNlCjZG2Q3MJZnwCU1CgiNCOM3pbbZeD+93TMcg+0itH+N7vQ6xCrfr/3+8OYCHbgGY8b/pDVrAdA/6COj7ivM+/S1eDELtk4z/HdgEiKWOSjPdLP8PfglXzhiiY4t3fZCdLpRClRmnWmfBDvn3/YBcd4IQ97KHYeb64tDAikPSrT+QLFsC9AGSRaCae5KPA6KBPp02uuoiK+kOGp4w6mQGl99GaD9IjtMThO0ouW/xDqG8+ioUFki6E9DPTKaLOBznIXet7i2aPjRKbwh0f5RTFtG26Q3ta154RB6s+RiE6SbpPsY3hkL2+sqDzAFOen3n75TsAIcLhBq8S9ItYrqNw+qYQNLt25GaX/VyIl+XTxNRmZRmDTNvGUm3jCNVSmvAQauR2musccKoA1eTg4FYBFh6k/t+s+GCvuXYdPPCkrLUy0+6JXmHshUMX7M/MzMTxcW2p7mlS5diwIABjucFBQlwfGJgwIABmDRpEr799lu88cYb2L59O84880ycOHECBw4cQHp6OurXr+94p2nTpjhwQCwleu6551CvXj3rr3Xr1gmrc9LgcKQmyXTTk+7EFglJN5W3l3pttIT/zFJLoTb+hv3EedqV0Z3CDHqf/Zi1KLPUgnhpaaTWst8NU5Ju3zbdcUi6vSB76KJf8NOIbDBJFXEp5hzA1v8aEiRKvfxchq8HaSlcBUm6eQinAtkt7N80USLCljfdZSdcRSoEXMbw7XD0RyoZQ9JNq5dz08MeKw7m3afqfX0jRm23R9h9wQtzxyQUEiTpBoCcwfZ1O9omlqiDywZZEiyp6pxz2Gl7x6spRqiXIywXms0BnxpBDl8jgrFNeioXEWdJAcEAWqqrPphukRRUCqZU1dzD41A/ZSEWcb9baB5sSzLdC0jJMfEOzwzIay2lTaDI9Mkye/BSLydBqzCHUvjrGbn/kes/7XXZu4LGvyDjnLTpJp3JkuYdXmugxJin9/qWv/N36N3sXCcz6Mem21wjrHqymEZq7xKBdWBfiyMgsvIX2TvL0EuCPKRU64n68tZuWmvAsa4QBzObXpGrg4PG95ib+74Ctv3Pfb92R/444Umuec6UWXG6SV8K1Ry+Vr9evXrhvff0U9+FCxfi4MGDOPvss63nW7duRYsWLXiv+8YFF1yA0aNH45RTTsGIESPw9ddfIzc3F5MnT44r38cffxx5eXnW3+7dkpLXyoRDjS+Aerl5T+R8DWAQ216EdQBJ6sq7gTUs518CmGqPzUcQN43va3WJfYvpAANymzEZ25xeiCxm3Id6uadDtKCIh+kmbY8kmWmRdJZmKEgNC3PhzDmD8aLHN5gSFnLjNNXc/cCxEQSRMFDj/6Tb/OehZ2T889h4L1zrM9uw7rGYBk1gMQlggaSbluKwxopfxyZmmC/eJmwRwtRcNf0AOCtE/YyD6W5tmEyl1XPnayKzqbMNZTQeTPhRZfYj7ewwTv/fgLAtdEi6U+RjZ/uF2VcxycPgWm3sa4sop9Ymab8bMiAl3QQRR9dbBjLjXEiQG3WZd6H+v2A7O92JX+Xr5Mg/CnfbM0xGpPOLsa8d8FpL6TmeYEk3EyH5wxR6rRFpEPLmJEv9WVi9eCTdxCHGwbnAjI7A/u9gj/OQd76//EP8HGCMY599dcozxPwmBA88SXdaXfvaYrpFNt0+HKmxDuy9nPg26G1f035NpNXLAzLdba6EU2LuYdNtHcKYY56WdIveJe/5kHSX5XLyTQGXF+D5IBKGVhP4pKnm8DX7n3zySbzyyivo2LEjRowYgXHjxqF5c9tD5bRp0zBo0KCEV9JE/fr10blzZ2zZsgXNmjVDWVkZcnNzHWkOHjyIZs2asTMwkJGRgbp16zr+qjxkiRsTJANpQkTUmDZSftXLRUy3KQWnF4DctcD6Zz3ypfJuf71xQXy7uellNrUZMp56uYzUORYhNmHSHi2ApPv4av/qZ7KQdSICuNvewXxJMNNeDqSYRA7DkZoVi9Z85CUpMcskHOOJbCu5+cUr6U5ztmG7a4HOd/vPxyI6POZTnZOA09/xkS+nb2i16bAE002GcyvexylHgijgwRxTB+ew682TdLMIfz+Sbp6qnYnOd+nq8yPX88dIWl1KWueDCPDDdPshcs01yhEyLAar/ZLqSI0h6RZpzsg4oCo9lJCquUEQfSKCngc/zp+YoMZeea582SZEUQ80hqTbfui/LIctqQ/inX7Ok24na1xqUfn46y5JN+cgEOC3rW9NtgTZdP94i+47ZO4IuA6XRNgzXaIcmv4Lw9cYIg8vSG1Lpk13SHe4Z4KWdCfCkRq9d3itxV0fsEND0mmTbdNNaloC3mrqZn2swx8Zm26WpJtkugPOTRHTzVMvL+Gt96y5mMS9rILh60uGDBmCFStW4J577sHEiRPx1ltvOZ736tULt99+e0IrSKKgoABbt25F8+bN0adPH6SlpeH7720pyKZNm7Br1y4MHDgwaXWoNJDq5TKSbpKBtO4JFpy9M4z8AzhS4yEaL9PJsDHd/w2QZ4QvI1XDTGcQpcfccf8AwQSH7QnZIen2YdNNMziAvzBlfhGPejn5rlCCbRyYpGSIGUV6YywvsMcd2Va0qpQM0QbA4YdAVr2LRM5ZRJ4BvcbShI0ZR9REFqHdwz3lllQvZ3kX9UrvNx3PeznJHLgk5aZ6LnmIETDWcdEedv/zPO4znRfSbSRiuj38K4RTgXZXAdkt+fmE09xMd5Oz2Gld5fuRdPvYks35S4aVIssKKh2QcnRFMd1eh8EOXwCcesUjlSclZnrFiLIJvxRBTH7ideDDkjp5qbnSEGlWaFHGmsHQXpHFL6RaahxMt0OrKsGSblabRork+5elXs47UOftk37HkkwUDe67PO0g84CNZLjiAD3WQ2FjXZREON051yyGkMEs034yfEm6ZdXLaUm3QBMiuzWQmmWXEZTpNueMuY6azum8aOlQmKqvxyGQ1c6EIzUZ7+Wuez6Ybh5t4qo79cwPq8ka679VSTcAdO/eHffeey/GjBmDcNh+vbS0FCdOnMCoUaMSVrmHHnoI8+fPx44dO/DDDz9g1KhRSElJwdVXX4169erhpptuwgMPPIC5c+di5cqVuOGGGzBw4ECcfvrp3plXNzi8l0syXa4FR4L4cw12L4JDsPhZkl7Oxt30bPZ9Ew77FqIe+74xnhMbpqn2/d0ARqxSAEtv5JdjfTMhVXU5UhOol2cyNCuSuUj4Ybp5YS8Acd+a9mrhDH8HL6S9D2nH6WK6vdqH2DwswiIA8dt2jP93SORLqHySfg0G/JeTyAfT7QeydoVS3suJsUJL1ljhavyMCzpmrx9JNytMX5MzqfqJmO5yMdMtk084DY51N5QCaSJXJtayla8f4sRkuol1nTxwDCq1OGcOMHy+OI3ZnqxQliyQWlY8tVxpJ24M9CP8J2gaXGYlNNPt62ArXqabMfb6veEzE8H4jUXcTKjlnTsA0x05QeTD6SsZTSVHGuL6wHf+6yQDr3lGOkEzv+uI4XQ3lCI4MOX1fwzo/2/OMxboddcHCndx2tyHTbcMXAdiYaApx/8EC1nNqbkmsOnWIs5vSqWYbqb3cr+SbioPkVlJrNRZVxeDLrme/nQ/HKFrzXHnuY6E4dTME6lfE//NeofT4NrTXe8yDi0cB/Je9AeP6U7RDy2YttccSTe3CAaTnkytrQqGry8pLS3F448/jr59+2LQoEGYPn06AGDixIlo3749Xn75Zdx///0Jq9yePXtw9dVXo0uXLrjyyivRqFEjLF26FDk5OkH4j3/8A7/73e9w+eWX46yzzkKzZs3w2WefJaz8KgVZ4sYES708KtiUTLvARKqXlxeI0/ixF2fanZgLVJjNDJMOko4tF5RDLCRmOzuYRMI5EUvqRjKXVpbJXCR8qJeLYh6LmKaIwcylZPhjBCOEI0WHpJvua1n1cklJNzefOCUsx1fBre4sCGnFs/k36yFz2p0Mm0empJs4bHL8B9DifOf7Vr2pOTlMUqMjWkpWBsz+5xH4LAlUw9P0uMGX7vEue/Mb8kw3V7qQxiBOJPtJtO66yvFLnIBiuk84nzfzQTCT73lpMWgx4MhSSDtSIxmitDrsNL6dvpHvEvXVYsChefbveCXd5tgf9GHAyjH2P7+mGSLmWYswyvCQdLP8QLjeBZBWn5NGRtJNpMnfKE7vG4zvIsfY+Svcz8l3zHGw/q/6//yNbA05QCzpPukWpx2wCPFIugt3eOx/dESKgHBJun0y82QUA6ZNN22rS9IjxjofE6mXs9TUeRCol9ft5k5OO32jy5dqfwPHV8GmW4y6es35UNh2XFi3q0CqTDHOEUJAYr5zfDWnEJbGQQJMP0Ip+jy5dC8wcgP1jHPIzoWSdFt48skn8cYbb6Bdu3bYsWMHRo8ejVtuuQX/+Mc/8NJLL2HHjh149FFO2IUA+Pjjj7Fv3z6UlpZiz549+Pjjj9GxY0freWZmJl577TUcO3YMhYWF+OyzzzztuastHMSNxCJYvN8dckikWmOGoPLtSE0AL8m6pzMbTggjl9SC4wQlnMZmiGmQ75oxstMIp12OzYPRHkymO5mSbklHeoCbWJOVdJvq5eF0f5Keej2J/Il6stTLf/cLcPpEdj6kmpT5DSKG1eFgj4cAUp+ULOfhDQtSKvsSjtSSGYeyiGBOaZtuTdMlkSSRQY9zlno5QkDz8+x8RKDXImY7cA6KmOrlABqfbqs+lp9gpwGAg/PcefIgknTTqpHp9eTy9KNeLks01+1qpyWZ7nLi0CuUoqs2nvIsMORLH3WAN3OqRYHvCDMu+jA4uw31AvEsi7dHxxEakNxLyFBFAFC0171nSEuACSlN7Q7eyUkbVas+jAMfWS0RS21ecGjE0mqzH3Jui5h44ln3h/nphAjLM2vNhnunkUGMONjLYDmXjLKvAX39a3MFO1+uTTfDd4kQPqS0ovcddSDVy+PJ2wDTpltUJXqfCNlRawp3OGk0/QV+/rSkWxgyTFK93OVIzVgnWHsKfUBAQ9QW9OFmtJhg4s1+lzhwH/Bf4LR/6NpG3ANg4/6BWfr/gi36/3CGrhFhPmOFkHOFC4WzHE+61UOCnpLOMLcMIulWjtQAAFOmTMG7776LqVOn4rvvvkM0GkUkEsGaNWtw1VVXISWl5jRMlQMp6ZbxmrlxAvA9pb4tYrp5MUS9iAPh5s1x5mU99+PMhqhHmCKgwilAwVbGOx5OwOwM7UvztDuFXDg0fvsA9mbhKDvJku6mw8RJuDbdko7UTJXpsE9Jt8kANOzjvO/anFOAul1sD8w0HOrMLJV/Ap3uYNuh9npepsZi1G4PdLlXVwf9nRGnXERMem3YQqbbh72aF4RMBUW4lB0DptRzno5zT5oTILXj2ify1iCJiAFea5u0pNsH093nFTkpVzLUy0lJu8ORGtkOYSCjIdDzT0B2K/k6AHxptFUObbZC2WdKfbOHBokfOCJFsBzvUeYRgZwiSdSPJa0/thz4sjuVL2POXLDGvm5rmEi1uVL/79AUgfMgUIvA/c2UyQhp3uEHLlt5Sfix4wzqG4KGOeZ4MePpgxkavOgYvH0nqE13UKdQQvVy82ccYUozmzHazaOuLsFJ2HbC+dMDDMaTzo/47ceRmsxcFDlSY81TEY3nKJuBcAbQfiyZmChbUtKNsB6Srut9+nwVOaZkISXDGemDperN0jjgmYGwIGNuwvTf42fMM5j036p6+Z49e9Cnj05M9+zZExkZGbj//vsRqiFBy6s0SIc1myRCP7Ag9NxoLGI0sZTCcBLGeo/5yFx0OASvV3gPh003Q9Ido09RaXCIexrk+DUl3eRpHamqz8qPKU1P4pwIhYG63cVpzFNQEdMtOlCJEpJuP7a7poScJqSCOlIjDzx49ej3GnsMdKe1bgL0iRbTN8tOtwF1OxvZeGye9U9h3DQlEQHjgJqQjhMvAE/Vz5GGehZmSbrNOeH3sJVz8m1u6FmU4x4ZtWMhU+3hvdxRNUabWIcEJGGRonu5veAn7zx9eS+XZVQISSKZP3lNtrGfEGeA21mgC1R7hilJt8vXgAxDHQfTLZJikqrv5rM6neXyJce2zKEAa36vfcqtXk2vZW2vARoQ60Z9o7+0GFB8ADhGqUtnNAaGLzTSRN11OzjPrLT+76RbqUoxvmX3NP4zGl7MHe9gjcbA9/jxekUgw+SZMGkX+oDMhGiMAPz68vYdP2Hn9AKMfwFpAy+b7ngQSgXO+8E9fr36kPbDQH8bLekWMVO0IzWWM1qWbxEuWIetptYci+mWoCd5SMkAdn9KVtR94CCjXu68wU5nznVamyic7vTezzr4NMOg8fYJr/7mjXmW+Zp9wyfTHBMc+ld/+GK6o9Eo0tPtwZqamoratQPEzlXwD4cjtYAQEX/mAkGHufIr8XA8iwJHVwB7OaqN5iLHVdvzYdPNgrQtCUksml67CUbasUCxvD9K3ksUZAkawE2MkWq+Qkm36ZzDp3p5lHTqQcAl6fZiusnN1QxpVcpN7pvoaHMlWxWURqP+jHdHO3/TbczSQvAj6RYRZaQzIBGEhF0A+z+RpJv3TSN+BM5b6pEfAd7hisxBg4gJ2PeVHtWAhEv9WQDzkIV18CeDpDhSI1TwYhxJt+wBWxC4JN2UdLHLPfQLMpkGr0/9k4lsRJJuv9JJn+u4rNaHa02lD0fNQ64osOoRxvthm+GJMSTdm1833ucwGazvWngZuy4seLYjQ0WUhdTsYLb8LAm8uT/wJN2eTDdPwilwpAbIM9HW3Kbm+Cky4VPB+aYEMd2n/kXX6qKlq17rUYsLqRs0001rlgiiTqRQNt3HGQeaXt65XWVz0rG0p7yYblE/5wx2+rMJheyy/aiXi37bFdX/0XQIXW9632l1CSc/H+rlXEk38R5No/i16Y6V+WiL6gdfO7GmaRg3bhwyMvQBW1JSgttuuw21ajmloTXWmVllwlIvj4OZk5F0t7kSWPJ7+7aL6Q7BuSmLvKqWAzP7CZ4b33TyU8DR5XropTWPu+sEUCdpDJtuFmQnOzmhzYWKJPS9mG4WoZXUkzlJgiZaBiEBJXR8ZB4+pPtfMAE3ke/Xe7nDpttUkRT4a/ArPTh9ok7w/fKSOJ0ZTo5EahZwdVQnUut0Ara/bz9r2A84tIhRPz/q5QKwwtOxIJLKcQkgAZg23eYzTr0zm3LmBu/QyPA6TRMnaRK2015E2M9POH8P+9Y7TxPWN5DECVHHnMHAYUafm/DDdMv2CSnpJqXKPAlGosFkuom6Nx0GrPuzzzzjYLqbE47/WISheZi88yNda0Xam73PNpQ93PB0qEjscYcWsJ+TjDm37TiRH0S+TmT6wUtLLSQp3QqnI5B6eSikv0vOLXLvYUq6abt/lokEqyyeTXcC4nSfM8/H/iqQdMerbWqOD1ddjHzbXw9sf1c3CSs5BJQdNx6HdTOu1Y/Zv0lsm+jM1+WcTCDpZtaTFrgIIDIrYh3kWqFOOaELWfPiwrXAge+Bznfq6vR2RYOpl5PgjguOhhn9m9Y28gpnSl437OvWrgEEfUNqgaXqh2JWxAqfku5YOVz74G9V0j127Fg0adIE9erVQ7169XDdddehRYsW1m/zTyEJINXLebZHnnlISLpT0oFBH9j3U6kTZZp5EhEv5bke9TEmcFpdoO+rQNOh1HMPSbeMOpDUZCcmuKkiRC7KBdvsa6bTtCQ5wKrbhX2fJLhFiBSI+0e0kAVWLyfs6hxl+fRebj0nJN1CKa9fokMyPc+uKhQGzpoO9H4BjoONWq05fWNuvIK2TJWIUzx4incaL8iolwPOk3GRWh99yt1qFND2Kj2ECGuM1WovIGRj7rEjNf48iLCiXc7f9Rjea3kwiSXaptuEqbLHrVoS4nSznM0AFDNEPe98t3e+MmMQEBPPrLLlMg3wjgHSMVLpEfdzM0yVxcDKMt0+iT1ZBtIzndEWO953hluzECZ8m0SAvPXifOjvkHEwKqyeB8O5+zO5PYqOCiANxjzxUi8noUWBNX+i6uJT0u3XkRrLrpn0rC9Ct4c9vsnHfGNpYplrLE+9vL0hiAmnU8wnHYmCqsfOj4zbpkkgpa3mm+k2D+Nl1goR083yEyJxuE+jfk+g673uPar0sP4HEP3uU9LtpV7ul+nmMf2sfe28H4BR+xhlcw7baDoplRDW+dHMBAwaQEm6AeihwRQqCZbTsFSgz6vAshv95yFL/JGMNa3GlZLhXDhFTJ1XeV6eLStD0s0qjwTL/oy1mHlJAmTQ9hrdO/OyP1B1C3PshinEPCTdpv068xnpvTyAIzWXZMWvTTfB5Ek5P/JJ5Jt59X0NWHGnv3e9UHLYfc/c5EUbrxUbm/MttTtI2NpKwEvS3eVe/X+PPwF7PtevLaLCg+kOpwFnkZpOjD7r/qhAmsAguHhpvd5LFLyY7mbDgb1f8N83mYF6PSmHXxRaXuyDuOAx3YQHXprpacTQOmrYT3dCaZqdZLeWKz53jfN3IElbHEw2DVJd9GuJOSIt6fbrSC2opJvK27KvBlCex6hX2F5LIoXA0nHsciwCnRpX8TLdXvbMh+YDOWd655OSHmzshEJwjX9SvZwb6sxA7s/ABsrRJm+fE4UM8wWWWY8k093zCWDjC6xKMPL0AIth5Uq6KZV40tzLLJfrlIuRjyt8IovpFo0tsx4SbS+SdAdRL/ezXs2/yL4OatPtpV7uxXQXU0wz76CP5UgtnMZ2vnhgNicPkVkCfTDjBc2d/rcq6VaoRJDey2VVTF15SKiX06AnnotpMBY1FrHm6SiNUpmnFxmHpJtc2GmmW2DTLTPEWe+b6lMAUKej/p8X25S1mJltLUN48BBOA7P+oTDlKZMHDWKmW2AjHSNsswMx3fQizPBeLgLLkZqIsPBLuJn5Z+aI0/nJywRL6mRqTohUpT3bOVHLtYekO72Ruz7WnCPGU/9/89NZRTG+KbW27lWbiZiboOrxODspCWnv5LA9QsvCHLu87+x0BzDwfXBhzomWv2M/N8dE7xfhy5EaHYaNLIuZD+NeOBVodq79uzeLsE8SXMS/JFHb919uXwFkf0SLvAncZDHdMpLutLrufZRuCzLeOs+PgpSGFYdAr8MIJwTozkllnO55ecM/+WlnmEIek0964fcFxjtm6CTa1IEFcn+3suTREQKtHD9ghvUKyXmp5tYhyMEVKwKFh6Tbak+NYbtMfU9DxuGetX9QNCFL0n1gNv+70usbF5Lq5Svu8MiHSg8g4WyRxXT7ten2GHdeTDcNbvkM9XLfEBwY8CTdvDCWmsZIX3NY1ZrzJTUdjjjdAU99ZBypAc5FlY5FS5dtEsinT2KU58V0054t6e/iLKy0qmsyJN1aDDjpNqMaHvb0LALPeoeRd6tR3nUCDCkza4pKbtRkjGsWTGm26BnPkVrPJzllmiE56M3bp4MWliO1UBgYsZz3gjg/XvpEmAZkUuporG8zGVlRbGdmDE2PfIPAS9LNeh5iSLqbn2c8S2Gkg/sZfY9UQTOhMZhu2kMuC14EsBnCrlZbYNCH3vmRKN5rXHAk3eFUoP21ug07C6TJhek0klRJd6ztPlRVt/7XfT//F3f9WHW27qUC/d8ATn4GuHgr/2BRFmaYmoanOe+ztD/8Mi1kGfTBs8trslfeybLpTuObBdmJ5G26AfaBtuzexlNF7fMq0PIid/pYqa5dBYg9vNftDAyerEtgWcgZBBRuJ+pB0ALkoReTwJZByK2qbELGmZ0f3xT0mnbyU/pcP3m8XRcpUFJjgMG0cuAp9fQj6WZ9u/GNXEdqxv+8DdT6TNvrhvSQV678SUk5eZ/hSA0Atk1iVt3qW5nDhqLdQOFO9rM2Y3Q/EKf82RZgdH/cWVcXgtrNmwcXPm26ueUZ3779XSp5itj01I96uV9wNSQA8LQ56nblZKbB9e1K0q1Q4SBtugMz3SKHPsQiVp9SzyO9JLqYbmMRZUmuRDbkgFtSLZJ0O6TeibbpZkmTic2EJ721Xmepl5vvsKRLknZ/4TQwF15pIsVL0k2H9SGfedh0s+JiAwSD4XEK68l0E5s0Kelu1NfpUfzU5+xnnmCowfmNMc3MVuLEud21/Gf2ix7lVBTTLcmwsZ7JtIUZ194hzTMQKwO2vMkviwcvdUPTZKZ2R7kDKxaCEifknOhnfBvJSJFaTLJbcqRAfGDEXHc4/ZreADj5CXcUiVH7BIdcHFy6Bxid5zZLYmo9UWuTrNQulOKctyc/xcjag6kOJOmWQDgVGL5AP4RuNICTZ9ibACf7lhfeSkqVnaNentUUGDLDnTxWZrdNrbbirNuMBk55hvOQKo88gHetuUHVy3lF+2gXmXrQ+Z08Hhi1H6jlIwICYNfZUXdJ9XLuuuBHvZyQVrseeThS47V3ySFn2aTZgyMbimYzQc5DUhvCy3xS5pCBZZZhlZUBDPsG6Pl/wIC3dM2ZU/7srKsLAc1hkqVeTh5qAUa9RQ5UZZjugDSGaN9nSbrbXy/+PlmpfzWEYrqrC075CzDgbf0UnR6AXqpeJlgqVSbIxa9hb+Ds74GLDHUtx6KaAnR7iHjPnOSMoeRl001LkOmJlt2C/V6ibbqbcFTALcaPYrov2clORyJi2Euz1OqkmW6epFty2rrsr6AzHSZEdn0k0w0AdSnHU7xNL8pzpOZzESW9lNI23WS9zdNx33aBAkk3y97LV9bUt/Z8krBpF9XTg8Ax24TuC9/wUC8nVfutVyTji8vMN5F5jGlDbuUnqYnQ4gLxc6tecXj5Dcx0E9ofLOKTNLORJXpy17qdWpJgHaix6izq16zm+iGXF5oNt69TMtjhnFhwMZM+mG5yXDCl8x55BWG6ZQ4FThjaAh3G8sd5ONXbptvBdHOkslKh9Dz8YbT7vfN3tFTSh4YH6LWF7CPH/hdQ0i16RyYEGasvyfdIKT+TiQyyjjCEC9KOEznrjZ/ICKYWijnWGvR258/dtzn13DvDfYjAWlOsfKixTB7GyIxnEzIRLUT0J+2HpPEA+1Ay6Liv151TFke9vOVFQIdx7nQmeFpH5tg96VaqHA9Jt5e9vZlHEPi16e7/H3D34sKdPg4gqh9qzpfUdLS+FOh4o04I0QP8TMkQbaWHBA+pTajZ2bYtM01sOhY8wQbtqV5Oq20TedQ/FWgylF0/MlSK430K4QzvReSsGYxYk4BjoaAPB2q1ATreZCdlOXrK36j/ZxFefiTdTCdvxj1T/Z0HpiORkO7IKqsl0J0R/9V+2aiDQYi4iAyeZ02eTbdPGx2HOhp1sOPYnD1Usrn5G+lZfSGjzuzMzPlTFIpGRKx5EXJmmwybKV81UT6JknSTJ+6mXaUJvw6bSo86f8tGasho5DEfzP6Ow5zA7+GCCVLSTTPdmgaHk0w/xIVfLQ2eenm86PgH9n0zFvqZn7Kfu9YmP5Just5BGKAkSbpLDni/y7THpr6d1EpganGEgbAMk8JRL7ceU3t0pIAoLx7ykHp34LvsZCxVUikI3sld6/066yAjnAKMOqBra5ChUj0PiIm6XLAG6HKfO4YyAGboQYTscHbCMjh9schQ1T+6zDsPcs0BKMaTI+l22XQzK0dchjiHFJRJIF0nQJLpNsqS2VeETLdgbPOeeR3mcPcfjnr5kBlOfxr0nGl6Dic/o/+aj6CKSeXbSQPAtv/Z1yRdSkulg0DEJNOS7tTa+uGsqCw6AoWSdCtUKmSdotAoETDdwpN/StJNphU5M/N0pCaw6T75SYEkzrjvdSJ/dJn3ItLqIk4aQr1cYzgnIhd90WLMkvrIhpUJp4M5Rc16tbrYIwNCvbxBL70ugz7Q42peulsuNEaYJ6Hl9E0sQTbdpLdUq58ZGy7PDvrs791ZssIhJYLpKNjq/E1LH6Q3DC/i02iTWiwbTx+bkjTTzQnZ5wd+N/E91AHiGT7sr0lCmQZpnhMUfiTdYwh/CaRHfxfTTayloSQz3UxTlQSMf14eF64Bzlsi8GERVL2cUmENQiiyYl/zyrIg40hNZoxIqIZ7qpen6Eyi5xgQaKIB7rXqi5Ns1d64JN3Uu6SdO9nPdbsFLCcOjRUA3EOXrKaGTTtRJz8HdQ1OAfr8g5AqE7AYW0oyLBPpJN443IC91rB84ch6L6fRqD+cfcFjuslDdLJOfpluMz+JPhFqAYiYbqoNOt0JtL7MHdLW/SLntkC9XMTwhkJuU08A3IgEoRRdM4kXwpI83CHb/cRmIlGy1MtZ3ykY0y7P6zWHVa05X/JbAm2bJ6NOBYiZ7nbXCV4kJkd5HhzEh8iZmSzTzVK7olV8HeqYmvMej7g58Wt8DA9t0+2QPhBtULSbn20mI+yCLLEcSuNstmZ7eXwb6Uit0x3AFceBxoY9NJ3vsJlAjz8COYOpojhMN48I4IUME6mXNx7ozsfB+FGEo6P9OCrZzc5251m3ix4O69S/2PfoQ5HWl3vbB9OgvUjTJ+y+x2AAR2ojfgSaC1Ssz5pO/JBVLyfvVdBJ8+HF9nWv573VxmXh5QxRCuT65JFPSoatEXTkB7tsF9NN2rqmwhcz4ZfpZpkXycblFtaDQwCn1wcan84fZ6KDXi8fAg6m22ef8sLe+K0HExJMN1PSTachmW7GPmoR8oK9n1z/eWuHiDGJi9ANAR1uJH4TeZFrblYzBGKg42VC6TV68BQqfwZD6gssesKYrwfnEvdCQONBAfIPAGvNYdBN5hx2HZZ7mDzRMZVDITFzKWK6ZelYVj1ZCDy2qWf9/qVr6/i1yabvezLdsuY/nIM0nokAC6QT3aNEJIhkqZfvIyXwDHrfBaVerlCVQA9wWRvUUoYHWROisDzkgC87Rkm6BWEW6I2NtlERhQyjF2BHXpJMN8AO38QEbfvcgWC6Gc7BSPUc0ts7DZb0TXYTT0lnE4ghSabbwbDSXkYpND9PZ0bpuln9QEt5eEx3AEdqDoaQes6K0x1iMN2yNpp9XtYPF0zQquQnPy12MCcDWUl3Vku58DxWPkSb0fVueBow7Gv+u7XaEfl4MfeMzdsivipQzevYSn/pRWOA51XfD/zadNPzjQy/Z65dK+9x5umHuJDVmDHBIkJP/au/PFiQUedljjWBerlQ/ZNSL5eJ407i2E/yacl+bthXZxhZ0icrvSTTTRPgtJSfdGrHCu0ow3QXbIOtXs5pT57HfdE7MgiFdemg9Ztoi55PAjlnAP3fiqOcBDPdba5w/k4ltam81gxWXRj3zDFbesyZTtaxY+vL5dJxEQNW3A0cM5wjOsYqR9JdYJoOcfqo4x/cDDlzjTXfFzDdfg430ht6pwnKdAcd96S/HBKW+RAx51mOVZmH3QKmm0djyRzGtr1a/+9Qb+fUQQYi88FQ2Lk3W+NdZGpHfduhhcHqVQWhmO7qCC+Ghgde+ATAY6KKbFZFNt3UxkYS/oAtfWI5sLDC9Jhlkqf9pvdG43t433/aP9j3ZdDuajtflvfy7o/q3mn7/FPc/iyiyI+kmykFNhkgzvQ1JWwOSYckkcJiFPTM6ITs93nq5a6lhvid2UQPP+PI3mjTwh2EnTjDDtsyNZBQ0WOB7ru02t5ee71Qni8uw0TX+4CR64h0HlIFss1ojQQvMCWDHpLu+qfozl5Ihy2n/UPvr14T/JUfBHu/8JdexHTzNDBkUNsw3/G06aadYVFjPiXDXuu0KLD6j8CW/xDpfXgvByBtl2yCNWb8emBmgVYFZIE1poXq5B4EGdmPMtJ6lodzGThsEbOAyw4DFwiYdlmm27V2U21B1pcVGkuGwC7LhePQlQUr+gMLcUq6eQxFZmPg3EXASX+w03Kz4bWhRN3qdOI/8zpYPfyDdx1EYI1385CMtX/JoOkw//UgoUWBX/9FlC2hXm5qR7LqOXgqcNItcPWfL+/lUXcaIYyyWDbzNEQ23SKbcLIesk4hATuEJi8/8pC0y73uslhjmnWAIVIvB+T2uP7/1v0s8Oguv6DfM0NX6g+pxKYwixPyj5Vf4Y5g9aqCUEx3dYSL6U6AvY9w46OGCenAQWRXTTNCrtN9WlJN5EGHWyFPETVNP/0/vsqZDw0vGyERwREK24tb7s9UPaGHSBuxFOhylwfTzSCKUgjNBIezOApaBKjXk5Wpuz4mTvuH3RcOJ2QBme4sQz2eJpC56uWSkm76dJ+O2Whu9tvfJWJ2CtTLvZz28eBqw5CuatjyIuA8Cec0LPR+waMMzn0vm1aybzztX2nHTCShZ27OXpLukO7spT8RwqtuZ93ZUPeHPcr3CZOxJeE7jrOgTeJhui1bTIZkSPyi+zdJfG6g1h+/Nt1+x3w9htf7hNh0yxBqjO/qaKgfN+yn/9d8SLpJTSNuvFcCprPMWm0h7bDNLItECi+ihAkJW2AZySYrBKezYsY/AdNdtItoU2Kudye02jIZtsdWEXFKuj0PqSTK4caNF+xnppmN6EDCy3kZyRAE0o4RSLpZ+5eJFiMFWcZJroscfFprHPWtlnYk43saDzD2EBmm26RJBEy3H3OZeNXLsziRcQBnO3e+W75OvP3UdCgZZhx8O9qKJelmtYkH083Tfun9on2dVgdo/3vdBMiRtd89lyrbBDl/QmGnTwez3jzbczKNCZa2TzWFYrqrI1gbWLxqn6IF3WQ6TTQZDLQ0nHj1fY3/vosopNJYTHmY+g33okiGpYEGlJ+wf/LU5r3U7kWhiwBg+yQ6Q3Y6EeHK2kjIQwuReiArdAJg32P1ef2TiXcI9XLpDZvaOKw2oglVno2gpE23632q3KJdjKqJJN0e4el4cNUrpG8QQ2bY9u9+0Z7yjyByqOQAEY+cBb9OnRxFkRu+eS0hUWfWIxGHfHSRjHki2pRZoAm6ut1se0lXpAQBzl/hNHkwiSZWnHcRWNJMs+1ZDHMoDH6fMBBUu8NRZgL6suv9wcpp+Ttg5Ebg3AXGDXJMS6iXn/uDbmtJEnTcd8iDSB/wu6+2u9r7XSktCUlGT8SoLLwcOGg4lCTHokwYOPodvwiFnX0uzEswBrmmA4J3Wpyv/xdqvvgItZUw9XKjr4TSzYDaHzKg10cZ9XLrEJ3VfxzNLNb4Nh0Xumy6iTXMix6jYZpY8UJoBvVenogQWiSyDBMOB91ilEE6s5WVdPtRLyfT8NTfSZiCLL/wmt+ktpzFdNcHGp3OeYX6NjK0WjWHYrqrI/wy3Z3vksmU/4g1EYd8rnvobTrEuCEh6aYXZ1rSTS6SKRTDHAoRE1Rz5kWrrVvveCyYXqeltOM5X0SUWQaDqSZVxoVELyeGqYjpzmgMqy8dIcMCSrqtfpWUdMuGDGMxuySYYdzM706gpNvlsCMAYSN0Qgi+ZItuo6M/ivPxJemm3/WjXl5RdttE+ay52O91f9nRBF3fV22ihmv2wEDDPkCrS4hqstpDYpyIHNIxPVKH3E75RBARlXHbf/pAtow5Bqe96nUlNJJkJd1GH+YMdNoNC8GRtHnBcw+hmF4yVm+Q/cJPGlb5/Awl0zkyD/AOp7ygkm6uc6oQkJEjLlskHfMzDvyOGYC9j4Q40mQS3G8CEs90syTdtPaV+Y7oYEGiXuW5Rn4Cm25eeMieTxBFEmWdt1Q38ztzKvs94cGKoM7kfh3vXkj6jyHpFnMMkJJmWZtuL/VyM1wt4KQ/ZWgbPx7kWWUzn4WpepB+Mvqw36H36YaSB4XVAIrpro7wLemW6eYACzrJGDPVy6lFnlbpom2lHc4WGMyqJdXUnExH26tsxxAkSAKIBb8LaiDbLhZRFGZfd33AmUyLgd0vYeq/gbR6QINTib6gHKlJgcOEupg8nzbdno7VqPxYjlIs50GMGL1BpX6yTmxEyGaE8CLh2y6R07YnyBjYcUjsPNXLE7wtMA9Q4JyzLOKCpXIuBEtaaB7KxKFeHuIcPHnCJ9MN2JJJGdD22Dln2tdNzhK/2+oSYPh8+bJEkJpDEuuPI8ySiCjmMJqigwZyj/F7YCWCyzaUlO7KarhA3nzHlZWsf5AA+3vcIcMSIOnmPgsBIzcAZ3zi3vstB6gl7tdM+NkvooJ8uBBIusn9y1wHBryta/ORkTVcWSZ4XWbadFP1tqI+iKSw9AGLqD+pfYs8LOcx3T3+j32/zkl6hAue0EVoM1xRkm7yYJmYqyZ969DGlGS6vbyXk3D4Lqgkphshap0i25fXD15CmuqLmvMlvyX4DekTyQcanOaRZ5ynqDKTgueN2Kx7vW66V9NWozj5mXXU4Fi8w6lAn1eAttc4k3up0XkR4J3vcf7mEpcCIo4ZJoIj4WtH1b/tVZy+Djv/mzjlz2YCo1oJcKTGZTj82nT7lHSLpIukhK/0iHEvQZLuIIdP3R/WfRCc9jL7eTwSLxIlB+3rXhP0DZuUAohQmZJunppn1/uIMhlz0a8tJdNm0fjGkgPB8tQzMvLX3PeErwVgulmOE3kYTEl4HNpBHvU77SVvxtzEBav5z7wOnKzqSOwPA9/T59FZM8TrFW98DnxXonzSz4UECraJn9PqzzKO1BoIvJ+LwJLqy4ZZcjgiCqr15AM8KZzfcriS7rBuj972SrcjPfOdpufo/7NbuR1i+dkvGg/wTuOuIOMWw6bbrEfHG4GzZxkxwn3kSaP+ydI1lPI/IDJ5SjUis7iYW0E9RerlrEgvXR/Q/SiIwGMUhYclkmMuWUy3pQruYQIpVC/3McfouvAQ2Kbboz0d9IdH+7Yf6y2UqcZQTHd1x0hDlUQ06LdNApqd45FRvIM6ARt0KKx7NT3rM046gummJQOZOcAZHxDVkZAAeC1SpIqpniknoYjpZm0YRFuTRCtdn4xGbJs2q704jGo8km6eejnZ3pfu5i+CXJtuuq29mG7BYcOv/7TvbZto1C+oI7UEMN3pDXSnel3vZT/nSdbi2dDr9wCuLABOeUYuvUOq4aEW6Df+syc4308SS8z+9lsPmukO8+eIH5iED+ncKr2e93tBmG46hIsIdTsDDXrbvx0qfJy16rKDwMj1zpBUXhAxiYlUg67bWZ9HrS6CcD/htZ2oDJ4jJy+wYpuTcHlOlyDYez3PuMmYIy0vcv52aLqYhLfkHPF7YAQgfvVyshxBXqLQgDLaQDwtrL7/1J1HnfuDHp6RhNd+QdoXex0+yDIEpulIiCHploGoHNOE0A/TJKNGbZkAMtrAXL9de72gnvRhB/mbRSvJeA/n9Y8olKuXo0bWdbxgHXyTB6UsvzSsNY3lHBGwQ8GZzm9d5XO+uQvhk4NUTfcDP5JuL4/toRAjP8V0K1QqiG6zJpjXxpCAUzDh63G8L3ta75A4eTgIE9k7mvBSpZE9SRSpK7IW/lBI95ze/VHnyTRLBbtuJ6DLfVQGZr14jKpJYAbwXs5VFSO+MbMpPz+epNtLXUiqrX1s5rKoiBPVTI6dHv3NJoEhrVrqQ2rLSstVL/cpDRZJQgE+IciyzSfhl/l3qegSkm4rTQD7TDMEXzgNuOK4/ickhkwwDnS8mG7fRB5RpmMd5fRtZhNvsxs/kJWG+jblETHdnLkulKaS6uUBxgAPQkk3Zx7JhiGi9yfWd1dp9XLyt6BvDs0TZCTBdPP2kvT6QLcHgVqt3eV77RfxmiAwbbrNQ3GS6fazbwn6w9TK87VmEvnxHNaJfMKY39j+et1jfJ9/8tNa+ZXzf4dCephKXh298qYh8lAvmg+kb5W4HRQT5ZAMtukEzjN/Vp8bYzO7lfN24zP0/y1pYZFVGfZth5PigPDSZHHYs3uol2taQI206gHFdFdH1Oum2+81PYcg1L2Y7gSd1vIQzyZFO03jgpR0+3QQxizXI76rNOEg+PbcNcCA/7rv93jMkHiIbACN8vtQ8cZ5cbrN35Z0JgHq5UxHagwJogmuTbdXW/qQdLNQmZJuL/AOleg28CKY6nQOXgcmA8CTdPvc8LykpjymO8xROQtaDxczRdmVAkDBdvn82l2r/+9GhEdLr+8Os8ID/U1tx0gw3T63ZI3DdFeUDZwsUer3IEdUfx7DJPT+Tki6WQ62/GgYkKBtumVUU5kqpYw9xLU+MNaRZDpSi2sMJcgmk/ceqXLsmo8S5neeBy8+6Bkz5B2JX15y37O8lxP183UAJNKoM+ZXvzfkszOdmwH80GymtoWo/1KzgGFf6+FT9cT8tA5nudlA98f0/+ahAemXwqtcL5TnB3vvwCyi/ARKusNpwAWrgBHLbVX6QHS7MQ5oG/ja7fX/ne/k5MXplxYXiOsgA09JN2+v53xf++vjr1MVRc09TgiAwrJCpJS5B09KOAWZqZmOdDyEQ2FkpWUFSltUXgSNw7yGQiFkpxlMYjgNRUO+0adeeZF+Twtb2pUhANnEWC5uci5i0SjX91KtsPkWUFxejBhNJBM/a2XUt65LIiWIxoxNo6zQlX8tog4lMSCamg1EitwViESQrWkIGYtCaaQUERZhFYsBMSBbiyFkLDylMSBCtjFZh7JCZGlA2FhryjSgnGxeLaTX23gvK0SkjZahvLzUmV9Ms9JnpmYixVDPKotFUM7T6mo9BpkNeyNl2R8A6OWXkfWNlttllJcgQwNSjTqUx6Ioi5S4v6u8GAgVIiMWtSZwRANKI+V6/cwxcXgZEI0AMSA9FoNJnkViEZRGOE5GYjGka0CaUYeopqGkrBCIEOOnvBgoLwFierp0Ky1QYrZZNGq3LQBESpGm2WljAIodz4sd35gW02CSVTENKNaMtqLHWTSG1EgpMgymW9OAIg3OsgmkhlORkZphpNVQVFZMjZkiIEV/18+8d6XNbA0U7Tbaq8RRn3AMyAoDyBmsp0W6riFQv5/Rf/a4C8NICwAdxnqvEcRvR9pIif2dZcUIlRchm9iEi2NEM0QirvarlW6rW7rWCC3kXCOI90oiJYgaY9CCmXekzE4bCulrBFloeamjHtlp2eI1otzuy+wQEDLUy0tjgJWy+LDr27LSshA2CIGyaBnKowZh2OdN4NQX9INN4x1uWkAfqFYbFyJTA8zdpKz1lSjXwta8ob4UmSEjbShFXyNYXXz6JGDpOGSEyDVCQ5lZJlm+MVcyUjOQahA8wnkPID0lHWkpaey0Z0wDFo6y04aMNSIURjQWRUmEbz+ZlpKGdKMOUQ36eiJKm5IOIGTPexoptYGyQiItENNiKC4v1vdBmpGJakiNliMDALQYtGgxiuj1OpRutV0qgAyTR281CkWs+hppU3KGINNU6wRQWFYMpBjlR2OOcZ8CIDMlbBGghY51zDnnwqEwsghCtjAGIGbv8TDX+rICez0xUBRjsGcRfZ8JAY55X1RexFdEicUc6wmTNgCsOpH7fXG0FDFiPqK8xEH0k+uJa9478tac64mZNhqz24toZ33eM9aIGJxrUKQE2WYQlMym7vUkFnPMZeG87/ZHIJwFtLrUTmu+StIcsZC9fxl5Z0bL7DXCzLf3y8DK+5ztUFaIzGjESutaI8y1su7JQAzONYK3npTkEmmJNYJsp57PGnuS3pfWvIdgPTH2GjKtNe8JOhXnzQfSmwCX7EVaWra+34fT9LRmfc15EbN/p0XL3POerHMobB30kvSJYz1hzGknbWDQEVH3XuhOq6HIpLno6REpR0qkxKYNGvTS6Qhr7JYRc6TUmRZAITkOTRi0VTgWBXnkVxgx6AzGO2EAWaDmPUlHEOlD5UU2rwHOemKmhclr6CPeWiMcc60MQCoQM9YIY10rLi9GjKQNstsCRTuBNtcCWpiiI8oQFewbjvWE5EsY8KQjAqZlro0MhDQeBfcbQn5+PurVqwc8BoChcXxhpwvx1TVfWb9r/bWWPckoDGk7BPPGzbN+57yQgyNFR5hp+7boi+U32xt2u5fbYWfeTmba7jndsf6O9dbvHq/3wIbDG5hp26YCO9rbv/sd64AVR9kOYRqnAIc7ALjsMJDZGEMnDcX8nfOZabNDQOENnwGtdeJr5Icj8fXmr5lpAUDrZF+P3g9MFZjYFDxeYE2ccdPH4Z0173DTHrrqLeS0Ph+Y3hp3Hg7j9Vz+YN/eDmhncJsPHwZezOXXYV0boIchhHiqxXg8Pf9pbtof//Aj+rXUT7hf+KAXHtmyhpt27ti5GPrDMADAa7nAXZyw4gDwZQtgZC0AoTAmdXsbN3x+Azft5AtewOgtuhRuygngygP8fCeecRvGDddPwb/69Sv87qPfcdP+Kwe4s75+Pa/PVAz7+Apu2gmNgYcbAKjTGcsP/4r+u/l1GN8QeMrQqlrf4+/oOf1BbtqHugzDC7G5AIAd5UD7Hfx87+h7B15rXA5sfQuHI0ATgTBz7KljMenSSQB0Jrr2cxyPqQCu6H4FpoyeYv0OPc0/wXetEX/JRlGkmJl2SOtBmHfF/6z4wjkTGuJIMdt2tG8GsLyN8aPbQ2g3f4p4jahvrAkn3YoeKxby14h6bbHjjtXA1AYAgH67gBUcfqxxdmMcftgetMI1IiUVhf9nE6TSa0TOYIz+eVHi1oj2QM5Fa4ANz+PO5R/h9Tx+vtvv3Y529dsBAB7+7mG8uORFbtp1t69DjyY9AABPzXtKvEZ0aYN+sV0AgBdwGh7Z/BM37dyWwNA/aEDxQbw2sZncGnGNhknvtsYN2/dw006+YjJG9xgNAJiyfgqunHolN+3ESyZiXK9xAHysEfW6Y16P1zDsnWHctBOGT8DDWAXs/AjLyzPRfwefQR8/ZDyeGvoU8FkzrM87iJ67uEnx0MCH8MJ5LwAAduTuQPtX2nPT3nHqdXit6H0gJRuHW12DJrMZ2kcGxtYBJhmR5gqbX4TaC77gpr2i3UBMSVti/Q5t5tf3wmzgq06tgUv1j6r1TEgn7BkY0nYI5nVpC2x/FwCQsw04wqEjHWsEgHbbgZ0c2rB7OrD+958DrS4G4EFHZNbGjkdPWL/7vdUPK/atYKa16AgDQ4v6Yf7e5cy02WnZKPyjTUCP/HsGvi7gh3fyRUd0BGoN/B/Q8Qa5NSIVQO2TcGfKeXh9BT9Eoe81YnZPAMBTR4Gnj/Hr++Olr6DfqbqU94XFL+CR2Y9w084d/gCG7tQl6NJ0BIBJ+cANB/lpJzcDRt9UCKRme68RTYFxdQGc+ld8lXaKPB1RBAzby6/DhOET8PAZDwOrHsbyVS+K6QhzjQCw/tB69HyjJzftQ/WBFwzrLik6YuRrwIehqkNH/DkVRRwGckibMzEvY6H1O2dPQxwpZg+2vhnA8uu/sWLYS/MaH4bQYyewgTM9LV7j7FlAs+Fya0S9nsDItWI6Ii0bhWNeBQxh1cjIMHy9fS67EgC08fZCOnrKaEzdwAkjB590xEOHkFNLH0B3fnWncI34+YafcUrbU5CXl4e6dfkmREq9vCZC2kaagKz6MR2mpjKw94tg6uykc5SqDplTM18mAUHVpmXV0v2qYSXY3IHlhKQyIap/OM1iuPW0km2X8PPRClSl90SC69LqYqBej8Tn6wfkGJBWw/Y5j4oFJ20VgUIBV0yi3+tAz/G6h3IpJLjfrNCHUXEoIf8Z+0vuxwwm0VEE/EIUcssLfppF1lxDuuxqRNam+KBJgnqWloHfNku4s02zHkr51gnBRPJtEppE+aqftUp2rLUZHawuVRxK0g1b0r3v8D7mCUWVUy9npf2iM1C8T087ag+yP7edLBT3n4hY4Q5grSGVaXw6cPZsYPd0YMl1usrH6HwgrQ5bhWyyfYpX68KfgIa9ATDUOCY7T/tc6uXhNLaDsysL5NQ4jPyzG/REaPAU4KtuKA1lIHL5UXcd2v0e6P8GsvZOQ3jJ7wEAZZktUX72POBL4+j8gtV6rEfjPYd6+ZhSlB/6AfiekOC0uBAYPBkApV6+4AqU7/rUXV8AuHg7Mmu3RsrH+mZSrgFlo4mj+u3vActv169HrkPG1z1ttbAxZSiLljm/C9A9EKfWQkbBFqR+2wuAoV7e9z9A+2uAeb/TndP0/y+wfSJweDHSB3+ItHZ6PFOhmumSsUjf86mtFnbpPpSk1gW+7GarS19ZAOSuBb4baKtv1euBaO56lKQ3BEqP6V5jO91m51u0F2lfdbFVvc74BMXNR9rPjfxMpPV5BemrdG/gllpYn1eAjjc509Zqj9SLNiLjxz8AO9631cKuZItDmGphZNtevN1yfBaXenlJriVFxpnTgOa2zajnGrHnC+AHva8c6uWd70bRqc+L14gpBhF30q0o6v2SM635nQP+h1C7McjWyqw6OtTLh34DNHHa1gnVyym4VL1+fgbY8JydwOyb0qOo9UVb/TpnMEoOLnKqmY46AKTZfeO5RpQcAn68GWg/DtkdrtXTLhiF0l3TbfXyhv2A4c4Tc6HqKAVh2s/b2SHsrixA5nf9kGJ4gy3rcBPKT3tFtzOc1sKVb2YISLlWA0qPoXxqI10d9PRJQFYzYMn1QK8XgDaXA5Nr26qj12go/yBkq462uxbYYURw6Pc60P76xKmXF+4CvrIdsDlUR6+KeKuXG+qgUqroKenAtJaIFe1zq5f3fwsw1jGmevm05kD5Cec7tdoh9ZzZyPjyJCCUAi0WdUuYW1wI7NM1Mhzq5S0vQdHAD8BDyr5vkfmDrQlUePkJmxj++UmHbW8KgMysHODyQ3ra9wmiucUFwGBbGhYOhZH10z3AVl0iXxiDHuLt0AI9Qac7gN4TgK96Ily4w1u9vNdzwOrHdXXQkauABr30tOVF0PJ/Bb7p7fq2EIDs6+ycuPPeWFcc6uXn/4xY0R5g3oX6DWo9dqwRG19BlFanNtHgNNTKszVELPXys2c5w+vt+wZYNFpXLx/4DtDheucaMdktidRV0QHUPgmlF65zridTG9i0ypUF/teIjwzagFQvbzYcOGs6sOwmYOcnAIDMq8uRkpLKzvfzNvpeWq8HMGIZMrf9Dyk/6VJxl8r4JTtt51w7P0HG5leRmruGndZE3a5A/i/6enJ1GRBO0+f9hwRDbfZbwVbg61PteX/aS4h0vpu9nuStA2ae7lYvH81XUbDm8ponEF33rK1efupfgC732v3X9iqkDXrHPe83vQqs+aOexlRThkC9nEEfWLTBhyGbjuj3mh7CipcWlHo5Pc5GLENKg1P4dISmAVMM++7eLyCly13OtIuus9d0ExmNgEt2IowQsqba86jwgo2608DCPcBXXR2vhAFkDfsKaKnPRxf/YNa7xQUInTnV5jU+DOnrSVZToJhSl2h9OUK7P9XVy8+ZBzQdYq8RZDsM+ghIrwvMG6mvEQ16Axf8pKf9+Slg4wQ9HTmGAdQKRYEp9QAAJSM3IUpHICBQFdTLy4vL0aB+A09JtzpWIlArvZaj80Tp/OQpC5Kp9p32/9s78zgriqvv/+4++85sMAzDIjsDsgwDsigji7hA0PAoCrjEFzMYffSjgkkkPkZRfJ+8bgSyKMRoJDERYoyCiICasAQCImBGFBRUBlCEGYZltnr/6LtU963e7r19tznfz+d+5k533arqru6qOnVOneNwBpSH6Z1l+1pSnW7AmRI473QD7nTA1sYdk+rJCwN++IUpbnWN7xwAAO4M1TANKXYANgZc+jdgsyIUiuIeeZweeCBwNtP9JuDz30ud+t/7Smntdnj43/vq6vJeY07A9Mhtd8DtyQikSS0IlK1YfHM73HC70+XHnZ6gukr52uFWW7zzZEmhOXIqgVMfwpU/FC4+DxfXLu5M2cKmy+HyT4Jl9XBnSs5LHIHB0WkDnO40qX5Ot5Te5Qbsduk7tzLttDvhdKu8+k63rA4Ou0t6hmX1TJc+sufCDocNSEerdNxXFx9t8muzQ/Fu+OrM/+9LawPSbQBcqVKenuxAWoddahevBsnmS2vgvbPZbFId7Db4p6nuDNXfmnvvM7lnMUWzPkH58veap73ZRB/BgtPy9XGlARcC5u/8pB2eTM36CvsIFVKcKcCA+4H/PI7APfbmbeMGxtTOUh/h46IfAelFqvkK+wh3BVDzjvzYl2vgsSOQ0unSvDa3w+2f0OkRlNZuk78j3Oq/2+EJ9CeitvU7WXLA5ZusulKAzpOAa7nJjuK3Lm5iK3tufO8Kh+Z7ryAobUuGuN6QFpyMvhuG09rsgfeeR3BdgCSkprvTpXFQOd9y2KXnHQBYW6CPKPsecOQ1bxqn8Pr8fYQaLvkYmO7hJpuu1OA8OU13+rTPgNd7BMpXlsNp/dLtkPeRvue49zxg9wLZz9JE7eRKl96NpsN+gRvwziPyBwNZPSTBimeI3IRa9b0XlJfqSpPuOf8+qJDSdTqw6+7gEza7bBwAEOgjPNnyPPmyvP2MrI/QVK4xQX/Sqlp3U30EJ/Th+DtSXpUPA437gb73S+2ulu/E94GPnwT6/8Tbn3CXy7/3gPx+9LpF+vzBJk7rw864+yJ9cdqdcMrmGt483Yr33+ZQ709kbSHhsBkcP+1OKa2/T0uVzzUcTpkTPf9732MO8JFX6O52LfCf/w3Oms9Xpy7+PsKVZiAt10fw110wCug0Iih90H3w99lp0jydT+t0BT+7dpuwTuke79ylVa2vDiyYqc4N7I5AX+lLaweQVgJc4MahXncAZTOAr7zKJu9Y5+8jhjwKfPhj6bsnU3Ic5yvDu3iV6kqVP4PKeUdzYE9YilN7DsUTJJdooCprhJC24XyDoXzi2g5n8eLFGD58ODIzM1FYWIhp06ahrq5Olmb8+PGw2Wyyz7x581RyTGJMeSf3pm3jVtwMmxdppdMzd2kHOqvvAdLFUyAoUu+6FTEBeSc7Ss+zenmrmdBohR/x/Wb8G8CAnwJjX1cm0M9ftV6K+qWXy8+zNuDC8eByDOXt+9/7O1eO/HiQB2Dv79TidCvrqnR2pPxfdC/OeveuikzbQg0ZBijMgCNk1hpWuB2VOvjCsYWNz6O9igAWaRM/dw4wcJF2OUXj5ef6/Hdk6+Av00pzc4U6SRQ+Su0d95/nfiOLy2wEu8r3CBB1k12VdtJrP9VnV1B/I2EldeH7DgPjBd9P8V7/RdYrrQqNPZ+fP73BdrE5gOIJQI+bVc4L8ul8tbG8hfnZZAveunUTYocslrTslELo5fP4Sn0PvhiRGthCA9Cs3sAVe4CKG7XTZfcDRq4AMr0LM1qezg1HgOHgtYG677fivdPzVh0qQe+vMi8DeZdMDL18JeFs8Ri+1KKyuGezcBx33NuGam1pyKhZy2Uax9Cn5ceUdc+p5M45FXM2rn4HlouPJzFxfZWbN29GbW0ttm7divXr16OlpQUTJ05EU5PcHPMHP/gBjh496v8sWbIkRjWOIcoXjX/BGINwcqAVx1C1HK09JjqPk79OIXbKwoFFLS/fcX7ia5cLLnpxuo2GPWnT2PvmC5WQ1gUY9D9AmtK01KbyXQNfPfi2yBkEFF7iPe7tAL/bDTR4F6kMC2zKwdVbljJ8E5/fxG2BdL79kkHxr5XPp9K9prJtBffCa/4p3DccasgwKUPtckPBCuHOlNBtoHx3tvh4tGJkyuLVKhddrBqarBS6lUVx18BpssVpBUL3d+qO1/zwMZ9lQn4Ur9MK+Gvp+X9M/E7t/gqeJyP7UvXSaIW/EfVJZvoppVmpaEHB6Hui9043CjzA+cIahYTdawZ7GOC3f4lQuwabXb09leMFn0eZwPFntPcKX/kfwJkpbQOIFFp7unXnMqL8eKFbbzHL4FxIOhl8iLOu0EQv1KhqkbwZneCddamb+wbB30uzQve4gBM0uPPM/dbotfLPwfHN3O+99yCU0LY+guKkq2B3KZQVGguOdpe8Tfi0/MKiMg9+vq8Mj5bAxLXQvXbtWsydOxf9+/dHZWUlVq5cicOHD2Pnzp2ydGlpaSguLvZ/tOzpkxcTK5V+QSoUp0danbNOx53t3RMY6oRQWF8doVvWAdmB9G5STNayawFnhOJ0azmc0eu0Q5ooCxYULrozOM+6pwPHzmu4L1Wrj6wsRd14LVH+8MB1+gYE5SQn6D4oJhA5AxXpBffCN4jxz4GvDfuqe33VJe4c76g8B6L4wqpoDLB6K95WTFCdggm8XUPojqUDtIjBC906mm7RedFEwxc3t+tM6W+nsYFzyr4ukvDvSHb/yOYtLjDwdcRyyVQTNv2YssL7axNPxG3cMYUPA2Ea4Xm7+DsAYRuoCt0GJsQiyyzDQkkIGjszgkpQed56pZcBHh3hQ2uhRO2c0rybvw8+Py081b9TL1/UH4brKCyrN/D9BqB8Znj5yFARuksmhZadmXFPaemm9TyJxu5L1L1Jy3+rYyGnBj8nEM0ThzxpLB9A8oWjWh8deEfDZucVan2XEtXxW8UC0v87jUWbyTukbQwDfqJRQY26BSlZFEI3fx8vqCzCBQndKZIPpVEv6/chCUS8zTY1OX1asvHPy5M3wMsvv4yCggIMGDAACxcuxNmz4nBePi5cuICGhgbZJ+HResFTSxSrUt4XosetkgA69NnIlKPnQXrsGm+6EL1wijTdqqvkAqGbtUnHL3sbGPOq+HcAMOgRcd5qA02vWvW8gjS4QRXl6mfwvog03bLJn8is0aApZdD99JkiK4VuTutqs+nfqyBNt1KzadM+D0iOgwD5oOrbd9ipWnqeQ8IC83K1/MOh06jI5KOHFUJ3r3mSI6Ghz3DlcM+Esr0jZkqvJEaabpEmW5bW+77wWhblRBcARr0EjP4jUOWbGHITMCs13aklUtsNXx7YxmIlyvt0+fvA95sAd67274QaXSbWBNrdwJWfSNfU+y5g+lFJM/k9fg+9zrugJXSL2jqcbTA+M2MZBqdwRjWNPHrbrzQx8/ypXYNN/VyQptsh/u5D81oEQsyEjdLi0oR3NX5ngE4qizmhoGZerrcwJCK/Cuh2g/H0ygUYzTIFbZ/ezVg5QYv1KtvdlHjyJT8gve8GPIXB51O7BC/sq5HGOewyu1ilNw/T/G0I5uWislXn6BoLe3lDgcpHghVRpV5nt8LtXiaEbn4R64zatilBvbteZ+45TQASxpFae3s77r77bowePRoDBgT2Ct1www0oLy9HaWkp9uzZgwceeAB1dXV47bXXVPNavHgxHn744WhUO3qoCUsAUHQp8N0u7pw3rTNdEkDNFaR+KvMiRTnK84IV6Mv/YbxooQCrZ17O0aQReNFHTiW32qe4p8c2iH/TdYb4eOWj+pNf2Xmj+8gE2me9zt5wSC2lcN2mclyZn+JeBZmJKeoUysJLmtcjP9+Bp5YEvouEFCPI3p140LCq1MGMma0WqcXa560wL3emSR6H1VAKI5wX04gSTbNrkdDt+67UePLnK2ZL8Zl7/yg4T1cWUM7F0ZW9Rxbu6QaA3l5rmq/eiHzeQQi2uTgNCIFGzZEBaRE3q5f0AaT3QrkPU1fjqXHPhZNftT7eQN9/0Xxg/xMGyhCQN9RYOh9j/xreu2JGy6e2b1u5HUz2Gw1Nt+gZMLuQ2Gk0MHWvud+IiGR/ozZmKvf+G2HSVmDfY8bT22ySUPuJd9FUs3/mrtmdJ2ni1dpYSajm5QAwzGvZd+ZzQZXsJkJuhuBnR5hNFITu9IrAvNZvwarWZ4Xgp2DsGsnBYlZvKYoGjxnzciMLQ3FncWgNCXOVtbW12Lt3L1atWiU7fvvtt2PSpEkYOHAgZs2ahRdffBGrV6/GZ599ppITsHDhQpw+fdr/OXLkiNXVtx6RkzEfNhtUBTQjjFnNZ6aervpFoPwGacA2SlqZ8bQisyG9QU02aBsYAJWO13jOHVX/XYpAkOn/oH55/CtoWNPt0+Lzv1XRePloM6g5VK6m+/f9Ku5d3sWKOik7XZ3BU+9aRfFLfYMJ/xzIhLUQnd/I4vbGg9AtuI6MHvrbIfQY8xow8GGg6DLtdLGIlcragKoXpO/Dl0c+dq+faLavwLwcEE+u+PMjVwIzz6loNpVw75FW3xVJojE5CrUMVVNlQbvnDzeQn85kUdauBszLw8G36MhjRVtM2SXFuQ8HU/VSS2sH2s6JTymt3vQ03bGOeR4J1MbMaPXXvEm/p5N6Ov5dG/8WMPoPxsvQmzcYQbiVxA7D84NwtNWyeVgYWvLAwcDX4cukv6P/GDg29P8F/15t/3Moig67UxK4eUShu5TXalcsMhtZyCehO36YP38+3njjDWzcuBFduggGHo6qqioAwKefqnt+9Xg8yMrKkn0SnpErpBi0Y3zxopWagjCE7oKRxn6bMwAY/bJYo+1Scdqktk9JhBFHar4OIneIN3tOoDKyh72N25pg6j5x19FvoTTYGMEWgtAd+HHg60nOz4HQvNzgfmBe6L7qAOcASnGfU4uBaz4Hrj3pPa9nXq7UdAtM5SZsBEqmAFd/BuEA6cuDH1R5jaHhlWwF/H2PCwdUFnnOLZsODHxI/xqj5UiNh7VJnpVvYECvCGn0AaBksvz/oU+L00WCfg9If7teJ/1V03SL3kWZJtxm3DGS7Nm10Lycp+kL6/L2E2L9zQggXQ3st9V1pKbiIEj0vxah9l38fUrram7BWzXLUN//EJyCAhoLJXYpvjgQHCs5aCzX03RrtYWFnsp5MnuF93s183K1/nr619JfkWM5IIRnjruHmts8wphrBs3xQhG6BfO8TpeY374HmBec+b7drHM7vbJ6zQP+qxko5cY02bYJbtvhpO1S9IGrDwXaKkseuztkOo2W/rZw4YHNmJerkhDiaNjEtXk5Ywx33nknVq9ejU2bNqGiokL3N7t37wYAlJSUaCdMNjJ7ApO3cweUHWoYJjN8+lC8ZALq+2ncJsxIRSaCyk595IuSiXuP26T/zTr9aeX9AZiYOPAd+mCTZluBTIz/TolsIi/SdKtoDJTwA7vMCkG0T4vb26lsh6CJgLJOggGwaHwgdNSJfwafF+2LDWePZLQw6wREOBmKpll0LIRui9qx6jfAGu9z3PtuILdSM3lY9LlX8pHhdxjJa7p1Jh2h+iNQE7qtnMC0ntFPEy5G+yslvrCCPHrO67Rw6sSGVQuFA4S/8JE/Evh2q3Yavs173CZpqDuNAU68H3q5Zt9/m0MaNzqNAk78I7heergypIWqwwo/Kza75Afi2u+k74c4Z2hKC4RIaSetxBGmpVLzKfHxMyrb5lJLpEVMwB+zOyxk80AtBUYYPlKUyhlVx64aKPvai37ktRKLgnl5C2fqb7a9jZSlvDY1C8f84cA47wLcpW8Dzd8ZD+Gnh2/MOXOQO6hU8vGWJ2RezhPXV1lbW4uXXnoJf/jDH5CZmYn6+nrU19fj3DlpQP7ss8/wyCOPYOfOnfj888/x+uuvY/bs2Rg7diwGDTLo+r7DEMbqoyy2dQgDhzsvYBqjxGUiFIAR7+UFIyRNmW8PEb9yakTby8dONaWp0IihqQlXf7MOinhBJYNbkBJtNehzj8E8uUm8KQ+uZh2p6a06CwZIvi3TywHYgFz+PY/E5CmCwu3I3wEDFhkzY5URoqPBSBEToduiaxaZ5FqFzSYJ9b73pvkkd07lnrpygPFrgX4LQixUzbzcwkWaaIRvCXUrhXB/q8q90JrkVj4qLZ70vU+7PFkoHGU5ZsZZQd814leB71W/VZz0ObgUOHKL1OTaKFd8JFl5DOfqa7YfveRP0tYXHt/1uHMQ7DNES7MmaleNsUEvXna45EvWl+hxS3j5+CxolDR+EmKGJsdLowsbsvfA5FxT2bdEwrzcv8UwBPNyo3vRffiUS8qQWkbI6ht87BsTPo/U7lX+MKDkcnN10cQXoYa30lT6KAlB0x0XVobWE9ea7mXLJEFt/PjxsuMrVqzA3Llz4Xa78c477+Cpp55CU1MTysrKMGPGDPzkJ2bc3icpZTOAI38Bcr17b8PpCFMKvRpjm0GtHe9IIxeYcSIyq1hC7+URelEnbgP+8wtg8ONc3oo6l2t4UQxZaFAshqSVAWcN+hjgtby8B3VRfFU+lIUW/KAnu369MFN6e7oVg1eejiDKr+CWTA5eNLjqgOTMjZ+cd58D1D0F5A3TzluTCHb83WfrpxERLc2LGjExL4/CQoNV2nQ1Tu/nylZZlPPkAaUhhvwB5A4No6XpjoY57qhXgC03AZUmrIbUUBsjtBaX+j9ozCcHvxAcinm5r78vEzjj5BeklRpAf7sLBKFQvFnLMzeXPLuvNG6eMxiWUo2BD0lekl/1bfczoSgIRdOd5a23cgtKpLnsHeC7f0smzuHQqToy9fFhdpyRLeppjRFhaLqDhLMImJf7zKsNXy9XZtNhc2V78oDp9foWMjxTdgPnvgZyBFaZDXU6P+avKUo6VCYSupXRaHih25lUcbbDJa6FbqbzkpSVlWHz5s1Rqk2CUfU8UDyB288ThqbbZpc6BghCQ+n+1hE5sxFT3stNUjACuGSV4qCi3hUaQlSomm7loGRGu8wLEXwnH879FgnsAPCNnpmjzh5u/jrtLul+a8K9+5cK9seLVk9zB0v72LScCuoRF6utgkmv0T35kSBWjtSSoQzVslUE/nAdPMmiCAi0nolK3pDIeI8GEJKm2yia5uU6jpEAaVz97t8qzg01BEmf+b1I0x1u20dkASzEhRl+/NGMga5Az5GaCHdu+A7jjODKAArHWl+OafQW0jXGdMNjhMlnMWj+o3gWjfjlUdatn9daxehzzfv1Mev1HwBSi8ylz61U3/bU/0HjXuajNXfxjaOybX6KaDZK83J+O4Jv62cHJcFHZkIVdzbQ6w4gxedlMswwCHaneVMbtbLy9QQuFUSabiNCqk8gHfWKufKUA33Dx+ppQ56oKMrwmaIZgXeiIbvPYbzWaoOpXtxk3T3dHHres4HQ72dqiUmzeCVxIHSLFhuNWj9o5SFC5HU/FpruaJjUx1LoDgqx5zsepvadF+ZlfYCVz3EcvCNmUI2NHuF9rka8lyvTePKkfcuiOsqcnyreSZ9TJKGGN8zrCnkBmdd8RcIagjfz5cb+kinaZQtDZooccybYcxwxfNet00ZBSg5+4VxjjLCFoelWWmmcVISgNeJTSFmmP5SowWfy/PHAdyt9gBjBqaIE8RNDTTc/dqVq+NBSzsf4LZwdEBK6OwrRHGBcnDd40QAYqkMR0SqnEeFs+lHgqk+Bbv9lrrwgQVJLmAtRaFC2y8BF0qr4ZYqY4P0WBv82swfQ/8fAxb9QDHRhaHDUrrFAz7RNZ0+3/KSZGllPerfA91gKZv46CJ4lPXP8UOk+V/rLe6NNpj3dQMCss3uYeyrDQU3oDtVhmA81oc9STXeMtz+YxsL+RuZ13ogjNTN1EfTpk/4FDPwZ0Odu7wmRpjvM680OdU84X24E3mc14U1oNaJnXh5j55SRgh+rfJg1j/ct1ustjAQpOVT8RwQRxlZG5fxDKWTzc0uj2AwuMvjwOXNVhsqKBWbe5WhZN/nG6k6jAsfSOovTAMFtykdD6oDEtXk5EUH4yZ2at8tIwb+Aeiv4ZhAJ3ee+1v+dK1PdbFq7QPm/3bT2dIcorKWWyv/P6g3UCLZMqIUbqfx58LFwOl81gatyMbBhPJCj4qBQb0+3/KSBikRxYp9SBDR9Ln03sxfLMgTXnlJoLguj79jAh4GCUZJFzNvehZVYxLS1crFjwruS9kI5MYgHzteH9/sRvwE2XQEMehg4x+cVJYHC5zMkrrFS6NYyaw5z7BNpb/OHSR+tNOFOvkOxaAPkApFmSCmDqPUJer4ZjPZfibgFY9K/JI/2m68KHCuuMZeHM1U/DaCtVY7Wnm7fAkHlY8AXq4C+95rLj8ew9VchMOPbEOeMkUbn/ql5L7cS33uZOxiYuFUR5cafKPDV96xc8zlw+j9A0aWBc5584MK3FlU0PiGhu6NwgfekG83BJoITHiP7eSIJf586X6U9kQhVU5c/XNJUR9LkJpz2VTMbKxoHTN2v7mFdL0637FycCd088TAREz1LZk2+jU4wHG6gy1WSJjatTPIUnGxCt90VnwJ3JMgdBEz3hsnatzhwPFrP8YR3o1NOWFjYl8jCKCksuIRtYKZdDJjzipzneToJk1qOww1c8wUAFnpoUR7ezJdHr68Q9V/C9z8BNd0pBUDnK4FBPwf2eB0GZ/Y0l4d/W5pJ83J+TDFqXh62pts75+u/UPqEhYl+wGyYT8vQe0b5a4rc89ze3o7mZsWWQrd37pcxGDh/3vvda37v+99Hc3sgfXMb0HoecBQBeUXytIOeAz5cIM4jznC5XHA4wp8bkdDdUeBXh9ui+HBHcvIndKRmJRp76pQ4M4GWU6EV0+e/DSQyMWCEJXRrmNBnC0JaqJUZ7r7gaHrwjgeTchkCodtqk2+7C7j6oNSOsdjrGGuP7VYTDSE4aublHO5s/TTRJLs/cHqf/JieP4pwkAndivFJaOVlol0MeeQWhDe6aL7k+PK73UCTxVZtSoxGyQgHoR8EXrMmuFe5g4HhvwS+2RaI9x0PC6yhwltkdTbpDG7I/3q/mDUvF2gvhUTSe3mYY1HhOC6rBGxv3TrzbRKZcbu5uRmHDh1Ce7tiHtJnNdDaJCmfDun0K+12oNty6fsXGv5o2vsH0unlGQfk5OSguLgYtjDuNQndHQVee2blJCSIcPe1ccRS063HpWuBrXMlrXXMCWNwyTC5aq5WZth7uqMohIUaE9gqRAJoOB7ZjRILB2r9HwQ+e0GK85vM9Pqh9WVEzZFaHDPmNeANxV7MNgs9//PvjHJ8MuK9XBMDfjpEvjycacDY14BPfgnsqBX/LpEJ1by81x2SFYBP6E6Wd8SIAHDFXmkRpuTywFYlvYVOLSWHVXu6g8LdhdlGGT0C39O7AWcOhpdf1InuM8oYw9GjR+FwOFBWVga7PcS5JGsDTrVIz2ZOhXba1i7S8+SI8vzeBIwxnD17FsePS9Y3JSUajuN0IKG7oyDT5kVTqxTBTkP0UlbMiVz+SswI3QVVwJUa3s2jSTgrul2vBRoeNudFXVRmIu3pHv4r4P1pklO6uIC79urfAwdfkMwJk5HKR6VrS2ZPwhk9JbNQH8U1QP07kS+HnyRbqdVp/MS6vMNFZEas5YsjXGTxaJVCSpiabiOWVlqx2XvcBny7HSgJIw58PCLcyqWj6RaeS+I+R0lOf0EcaJ0xNk/hr4G/71r9dTjeyyO98Msv0FQ9D/xjJtAnjH3h0abTaO3zEbYQa21txdmzZ1FaWoq0tDCVEZ7BUvvrbleLwFaUKJCaKm3LOH78OAoLC0M2NSehu6MQK6E7oublAqHbyv2ncWWOFCXzcpsdGPhQaL+T/R/unu4okt0HuPI/sa4FB9fWFTdKn2Qm3p6HSKN8N8asBl61wEmPzBrCwnsaze1JZuE1ZcOXS1q90issLI8XupWabkEbmBmvzJqXK9M43ED1SuPlxQ02aI93gnMsBKE7rsZ3k4i8mEeKSduBQy9Jzhl5LnxjMANe6A5X0x0m/Lw3oxswaVtk87eagipgwkYgQ01bHNm5fFubdL/c7ghonWMSetRafAsRLS0tIQvdCdzrEKbgVymjun/SYkdqlg6cfN4x3nPaZZp0rYXj9dPGYn+scqKj2eEaeCZ041MmMVaGzyKiT1Dc2AxryknhHGglskARDvyeUFcWUDZdsDcVBkIgGsSmYV4uml5php0Mypz7qhZrPAb7+K2mu9d6zRfqT4lwfOtgmu4u1wAD/wcYvzaMTFTmCfnDgWFPS041ZcdHGMzXpvLdAKbeDwMI9/8nGEXj1R3YWkQ4e5aTmUjcl+RbiiDEyDTdUZzUhx2rlP9ZlB9XfoBubYpu2Uo8+cD3m4w5k2s5Lf8/KgKsmT3dBuh6LXDkL0CnMeHlk5AkuVOxjkJ+FfDttujFB3dyIZusFMBSS4BzR63LPxxk8Zw1HCRGKu69lqZbJECY8UtiMyt0xyDqgBUMew4oqgFKp4jPi+L88g7cNE2fk0TTbbMBA38aXh5mF+dDeb7M3mPlOxOuRl9v/z9BRBkSujsM/H6caA7OggGw6YvQsop2DGVeI6UWviSaGA3D8u2/5P9f83nEqxKEmT3dRiaedhcw5s/h1SlRIU13cnDZeuld5D3oWok9Slq8/JHAl6utyz9SKN+j1M7Aua+k723nIlMG3+8pfY6I+jlTQrcRLXYSarqd6UDFrODjU/cDh18VR/tw5wJT9+mPke28Uz3S5pnCcPzzCGm60yuA8u+b+72SuItMEmlogT7RSJJemtCF73y04k1HGtGqc/GE0PKyO4FpR6TB1U+UOp1E6ryVpkjRiDnZdlb+v9YA7Y8TSoihgTQpcGUCxZcphGEvaV0sKJAfzkmgCLLoGvRI4HvZ9MgUwY9vQZpu7v8etwbXQT9zPjOVJBHSdHefK/3tF24sZAvJ7iv5G3GpWG5l9wMyumvncfbLyNcrUckZZC59arGxdHy8+vYWc2Xwi/WDHg5/ISkZzMu1SPZQmwaZO3cubDYbbDYbXC4XKioqcP/99+M8F/t78+bNuOyyy5CXl4e0tDT06tULc+bM8ccj37RpE2w2G06dOmVpXUnT3VHghUZXThQLFkz+1AZNI6R1AVojpKUwQ2Nd9MsMlcqfS4NV0+fWOhHiaVDcHy1Nt2iPJRGANN3JT8VsYN9jUvzgSCEznbXSwWSCCPTKhdKKG4GjayVT5JLJkS9PKXQ7OUupEb8GBjxkMo61SfPycPqNEb8BetUCuUNCzyMRqJgN7JgvfW/+LrZ1iTXl3weaTxr3b1B0mbQokzNAO507G+h2I3D2sIYDMBVsBhaazGDJ4mY8QUK3j8mTJ2PFihVoaWnBzp07MWfOHNhsNjzxxBPYv38/Jk+ejDvvvBPPPPMMUlNTceDAAfzlL3/xO4+LFiR0dxT4Abnn7daXV3oF8PWbQLkgXEvx5cDH/zf0vPkJZbRW+syu2MYSTz4wfGl0yzy9T/6/SLvnPxdhZynJBgndyc+ARZKAU3Rp5PKM1v7eRHk+lUK33QVc8kfrylP62yiukcbB7AFS25gSuGHQvJwTUr56Heh2vbkyfNidQP6w0H6bSPALId9ujV094gGbHbjohybS24DBjxlLO+r3odVJWV6oXPo2cOhF4/VNVIxuOewAeDweFBdL1hhlZWWoqanB+vXr8cQTT+Dtt99GcXExlixZ4k/fo0cPTJ5sweKrDiR0dxT4CUjnq6wvr+q3wLc7gM5XBp8rmQhcug7I6hNa3rzQZjiMBRFVDHuQJYKh1eukx+GWnAVGEl4w01r0Cpd4F7pTCiUfHMWXR7fcIPNyBzD+72FkaEDr13Qo8D1vaBhldRASxUqDQFia7pLLpU+yUzxRms9H0mKKh7HgrYPRwpEW8vu6d+9e/POf/0R5ubTVsri4GEePHsV7772HsWPHRrKWpiGhu6PAC93RGHhSS4AuGsJ9ycTQ8+br33wy9HzMkNU3OuUkC5pCN3U7msS7UEPEKdHSdMe5f4urD0mmw2mdo1uuGSdpRjDivbyNcwzWW+BgjCASFVeWfpqOjt0BjHvduvzbzgJ/sijEpR7fP2PKefIbb7yBjIwMtLa24sKFC7Db7XjuuecAANdddx3WrVuHcePGobi4GCNHjsSECRMwe/ZsZGVF9zkjR2odhWSdyLc0RqecbgJvqkSASxSexrU6S9J060CabiIEZIKZhUN7vI8lzrToC9xAsPfysDFgXt4WcBRkqXUDQUSLi38BdLsJKI2+6S+RuFx66aXYvXs3tm3bhjlz5uDmm2/GjBkzAAAOhwMrVqzAl19+iSVLlqBz58547LHH0L9/fxw9Gt3wl6Ry6ijEu3bCLEUTgGMbgB63WVvOuL8BX78F9L3P2nISna4zAt8ze2mnJaFbG/JISoRCtBypKb2CExKWOq9TEbqT3lEU0eEQhYQjYoMjTdI4x6psE6Snp6Nnz54AgBdeeAGVlZV4/vnnceutt/rTdO7cGTfddBNuuukmPPLII7jooouwfPlyPPzwwxGtuhYkdHcUkk3oHvdX4OS/gYJR1pbT+UrxvnTCPIXjgeObgO43x7omcQ4J3UQIRMuRWkZPAOusyz/R8MX/Lp0a4Yz5fkBF6C6/Hmj4OHqx4AmC6DjYbKZMvOMFu92OBx98EPfccw9uuOEGpKYGh6nNzc1FSUkJmpqaolo3Ero7CskmdDvTgcIxsa4FYYbL3gFaTkcnbngiE+/mu0R8Ei2hu/LnQHuzFIKLAK74EGj8FMgfEdl8HamSIN/aBKSXi9PYHUDlo5EtN9nxLZL0uFU/LUEQCcl1112H++67D0uXLkVmZiZ2796N6dOno0ePHjh//jxefPFF7Nu3D88++2xU60VCd0eh733AV38Dul4X65oQHRW7gwRuQ0RC6CZteccjSt7L3TlA1a+tyz/R8ORLn0hjswHj34h8vh2daUckB6xWtBlBEHGB0+nE/PnzsWTJEqxevRoffPAB5s2bh6+//hoZGRno378/1qxZg3HjomslREJ3R6FwDPC9EzTQENZDe5LDg+4fEQrR0nQTRCJjs9E8iCCSiJUrVwqPL1iwAAsWLAAAjB49WjOP8ePHg0Vh7kVCd0cipSDWNSA6AhQLNUzIvJwIAV7odgTvYSMIgiAIInaQ0E0QRGRR87RLGIM03UQopBQDZTMATwGQUhjr2hAEQRAEwUFCN0EQkeX8iVjXIMEhTTcRAjYbMObPsa4FQRAEQRACSCVFEERkaT4Z6xokNqTpJgiCIAiCSCpI6CYIgiAIgiAIgiAIiyChmyAIIp7odQeQVgb0/u/Q83BmRK4+BEEQBEF0CKLhxTsRaW8Pf+tf0uzpXrp0KZ588knU19ejsrISzz77LEaMGBHrahFExyGlGDhfD7iyY12TxMaTB1zzRWhe4Ef8Cjj4O2DATyJfL4IgCIIgkhKXywWbzYYTJ06gU6dOsFEkGgDSIkRzczNOnDgBu90Ot9sdcl42lgRLGn/84x8xe/ZsLF++HFVVVXjqqafw6quvoq6uDoWF+l5cGxoakJ2djdOnTyMrKysKNSaIJOTUPmDPT4CBi4DcwbGuDUEQBEEQBGGQM2fO4MsvvyRtt4C0tDSUlJQIhW6jcmRSCN1VVVUYPnw4nnvuOQCSCUBZWRnuvPNOf2B0LUjoJgiCIAiCIAiiI9PW1oaWlpZYVyOucDgccDqdqtp/o3JkwpuXNzc3Y+fOnVi4cKH/mN1uR01NDbZs2SL8zYULF3DhwgX//w0NDZbXkyAIgiAIgiAIIl5xOBxwOByxrkZSkvCO1L755hu0tbWhqKhIdryoqAj19fXC3yxevBjZ2dn+T1lZWTSqShAEQRAEQRAEQXQwEl7oDoWFCxfi9OnT/s+RI0diXSWCIAiCIAiCIAgiCUl48/KCggI4HA4cO3ZMdvzYsWMoLi4W/sbj8cDj8USjegRBEARBEARBEEQHJuGFbrfbjaFDh2LDhg2YNm0aAMmR2oYNGzB//nxDefh8ydHeboIgCIIgCIIgCMIIPvlRzzd5wgvdAHDPPfdgzpw5GDZsGEaMGIGnnnoKTU1NuPnmmw39vrGxEQBobzdBEARBEARBEARhisbGRmRnZ6ueTwqhe+bMmThx4gQeeugh1NfXY/DgwVi7dm2QczU1SktLceTIEWRmZsY0GHxDQwPKyspw5MgRCl2WRFC7Ji/UtskLtW1yQu2avFDbJifUrslLsrQtYwyNjY0oLS3VTJcUcbqTBYoXnpxQuyYv1LbJC7VtckLtmrxQ2yYn1K7JS0dr2w7pvZwgCIIgCIIgCIIgogEJ3QRBEARBEARBEARhESR0xxEejweLFi2icGZJBrVr8kJtm7xQ2yYn1K7JC7VtckLtmrx0tLalPd0EQRAEQRAEQRAEYRGk6SYIgiAIgiAIgiAIiyChmyAIgiAIgiAIgiAsgoRugiAIgiAIgiAIgrAIEroJgiAIgiAIgiAIwiJI6I4Tli5dim7duiElJQVVVVXYvn17rKtEcLz33nu46qqrUFpaCpvNhjVr1sjOM8bw0EMPoaSkBKmpqaipqcGBAwdkaU6ePIlZs2YhKysLOTk5uPXWW3HmzBlZmj179mDMmDFISUlBWVkZlixZYvWldWgWL16M4cOHIzMzE4WFhZg2bRrq6upkac6fP4/a2lrk5+cjIyMDM2bMwLFjx2RpDh8+jKlTpyItLQ2FhYW477770NraKkuzadMmXHzxxfB4POjZsydWrlxp9eV1aJYtW4ZBgwYhKysLWVlZqK6uxltvveU/T+2aHDz++OOw2Wy4++67/ceobROTn/3sZ7DZbLJPnz59/OepXRObr776CjfeeCPy8/ORmpqKgQMHYseOHf7zNI9KPLp16xb0ztpsNtTW1gKgdzYIRsScVatWMbfbzV544QW2b98+9oMf/IDl5OSwY8eOxbpqhJc333yT/fjHP2avvfYaA8BWr14tO//444+z7OxstmbNGvbhhx+yq6++mlVUVLBz587500yePJlVVlayrVu3svfff5/17NmTXX/99f7zp0+fZkVFRWzWrFls79697JVXXmGpqansV7/6VbQus8MxadIktmLFCrZ37162e/dudsUVV7CuXbuyM2fO+NPMmzePlZWVsQ0bNrAdO3awkSNHslGjRvnPt7a2sgEDBrCamhq2a9cu9uabb7KCggK2cOFCf5qDBw+ytLQ0ds8997D9+/ezZ599ljkcDrZ27dqoXm9H4vXXX2d///vf2SeffMLq6urYgw8+yFwuF9u7dy9jjNo1Gdi+fTvr1q0bGzRoELvrrrv8x6ltE5NFixax/v37s6NHj/o/J06c8J+ndk1cTp48ycrLy9ncuXPZtm3b2MGDB9m6devYp59+6k9D86jE4/jx47L3df369QwA27hxI2OM3lklJHTHASNGjGC1tbX+/9va2lhpaSlbvHhxDGtFqKEUutvb21lxcTF78skn/cdOnTrFPB4Pe+WVVxhjjO3fv58BYP/617/8ad566y1ms9nYV199xRhj7Je//CXLzc1lFy5c8Kd54IEHWO/evS2+IsLH8ePHGQC2efNmxpjUji6Xi7366qv+NB9//DEDwLZs2cIYkxZk7HY7q6+v96dZtmwZy8rK8rfl/fffz/r37y8ra+bMmWzSpElWXxLBkZuby377299SuyYBjY2NrFevXmz9+vVs3LhxfqGb2jZxWbRoEausrBSe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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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", + "ax1.plot(df['Close'], label='Close Price', color='blue')\n", + "ax1.set_title('Stock Price')\n", + "ax1.set_ylabel('Price')\n", + "ax1.legend()\n", + "\n", + "# rsi graph\n", + "ax2.plot(df['RSI'], label='RSI', color='orange')\n", + "ax2.axhline(70, color='red', linestyle='--') # Overbought line\n", + "ax2.axhline(30, color='green', linestyle='--') # Oversold line\n", + "ax2.set_title('Relative Strength Index (RSI)')\n", + "ax2.set_ylabel('RSI')\n", + "ax2.legend()\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolumeSMA_10SMA_50RSI
6221.70097922.03121221.70097921.81420114674821.021.63304621.56747140.418486
6321.81420123.11626121.85666122.17745815454878.021.59200221.66295545.076147
6422.31426622.40862122.03121222.21048021249133.021.59483321.75494851.133774
6521.70097922.92755521.70097922.80961640137428.021.71560421.84665957.684634
6623.12097723.87107722.51712423.53140853712115.021.96752321.94893659.348024
\n", + "
" + ], + "text/plain": [ + " Open High Low Close Volume SMA_10 \\\n", + "62 21.700979 22.031212 21.700979 21.814201 14674821.0 21.633046 \n", + "63 21.814201 23.116261 21.856661 22.177458 15454878.0 21.592002 \n", + "64 22.314266 22.408621 22.031212 22.210480 21249133.0 21.594833 \n", + "65 21.700979 22.927555 21.700979 22.809616 40137428.0 21.715604 \n", + "66 23.120977 23.871077 22.517124 23.531408 53712115.0 21.967523 \n", + "\n", + " SMA_50 RSI \n", + "62 21.567471 40.418486 \n", + "63 21.662955 45.076147 \n", + "64 21.754948 51.133774 \n", + "65 21.846659 57.684634 \n", + "66 21.948936 59.348024 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Correlations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "corr = df.corr()\n", + "corr" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "plt.figure(figsize=(10,8))\n", + "sns.heatmap(corr, annot=True, linewidths=0.5)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 17, +>>>>>>> upstream/main + "metadata": { + "id": "OQ3cGqgTMBwt" + }, + "outputs": [], + "source": [ + "# Select features and target variable\n", + "X = df[['Open', 'High', 'Low', 'Volume']]\n", + "y = df['Close']" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 11, +======= + "execution_count": 18, +>>>>>>> upstream/main + "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", +<<<<<<< HEAD + "execution_count": 12, +======= + "execution_count": 19, +>>>>>>> upstream/main + "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", +<<<<<<< HEAD + "execution_count": 13, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "997ZEgibCZIO", + "outputId": "879af72c-3e7c-4b8c-ba28-452fa8ba3cd6" + }, +<<<<<<< HEAD + "outputs": [ + { + "data": { + "text/plain": [ + "(5659, 4)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "X_train.shape" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 14, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bmtt76RuCeyG", + "outputId": "855f34ec-4914-4e1f-c9b1-6f8753612100" + }, +<<<<<<< HEAD + "outputs": [ + { + "data": { + "text/plain": [ + "(1415, 4)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "X_test.shape" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 15, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CeJkUJ92Ciqd", + "outputId": "21c5949c-e787-40df-b816-7cc9e830e401" + }, +<<<<<<< HEAD + "outputs": [ + { + "data": { + "text/plain": [ + "(5659,)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "y_train.shape" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 16, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7HGC7VuTCjWc", + "outputId": "cbda22d6-bec9-45d7-80ac-c74ad14b7c0d" + }, +<<<<<<< HEAD + "outputs": [ + { + "data": { + "text/plain": [ + "(1415,)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "y_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c6Ek8jRlO2_I" + }, + "source": [ + "## 1. LINEAR REGRESSION" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 17, +======= + "execution_count": 24, +>>>>>>> upstream/main + "metadata": { + "id": "RdZ1SpzdMHAJ" + }, + "outputs": [], + "source": [ + "# Create a linear regression model\n", + "model1 = LinearRegression()" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 18, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "id": "mPM035IzMY04", + "outputId": "084d9520-1d31-4287-a9d1-6f9eeea60f9b" + }, +<<<<<<< HEAD + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Close
5286257.350006
3408129.464996
5477279.350006
6906588.500000
53021.644367
\n", + "

" + ], + "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": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "y_train.head()" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 19, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "qBhQ9HbYMI3d", + "outputId": "daac2bc7-a480-4013-8e06-717bb8c1fa65" + }, +<<<<<<< HEAD + "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": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Train the model\n", + "model1.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 20, +======= + "execution_count": 27, +>>>>>>> upstream/main + "metadata": { + "id": "X269co2kMS4z" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred1 = model1.predict(X_test)" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 21, +======= + "execution_count": 28, +>>>>>>> upstream/main + "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", +<<<<<<< HEAD + "execution_count": 22, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dEi49xtEOtne", + "outputId": "60b53406-81c4-4531-cbb0-77b9ffde8890" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "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": 23, + "metadata": { + "id": "o7K9r7EXWRjQ" + }, + "outputs": [], + "source": [ + "from sklearn.svm import SVR\n", + "from sklearn.model_selection import GridSearchCV" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "id": "0xQewd7QWTtq" + }, + "outputs": [], + "source": [ + "# Create an SVR model\n", + "model2 = SVR()\n", + "param_grid = {'C':[0.1, 1], 'epsilon':[0.01, 0.1, 0.5], 'kernel':['sigmoid']}\n", + "GV_SVR = GridSearchCV(model2, param_grid = param_grid, scoring = 'accuracy', n_jobs = -1)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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", +<<<<<<< HEAD + "execution_count": 26, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 191 + }, + "id": "22SaCsQmfhgP", + "outputId": "7867aa8e-a7dc-49e4-d0aa-310423e9c696" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/sklearn/model_selection/_search.py:1103: UserWarning: One or more of the test scores are non-finite: [nan nan nan nan nan nan]\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "
GridSearchCV(estimator=SVR(), n_jobs=-1,\n",
+              "             param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n",
+              "                         'kernel': ['sigmoid']},\n",
+              "             scoring='accuracy')
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": [ + "GridSearchCV(estimator=SVR(), n_jobs=-1,\n", + " param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n", + " 'kernel': ['sigmoid']},\n", + " scoring='accuracy')" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Train the model\n", + "GV_SVR.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "id": "OQ1nL4oYfkAC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2 = GV_SVR.predict(X_test)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "U6-EppR68Jsu", + "outputId": "cfa67a46-ab8c-478d-c13e-fe884ef7ebae" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'C': 0.1, 'epsilon': 0.01, 'kernel': 'sigmoid'}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GV_SVR.best_params_" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "id": "nRYTwydsfpjb" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics with grid search\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", +<<<<<<< HEAD + "execution_count": 30, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "656J5oz5fzq6", + "outputId": "c62c2076-2a10-43da-935d-c593c2d7be79" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 158.5191296342117\n", + "MAE: 127.61818666535594\n", + "MAPE: 2.6724681150799072\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 0.9970457902511078\n", + "Confusion Matrix:\n", + " [[738 2]\n", + " [ 0 675]]\n", + "Recall: 1.0\n", + "F1 Score: 0.9985207100591716\n" + ] + } + ], + "source": [ + "# Print the evaluation metrics with grid search\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": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "tIlc-wCE8Jsv", + "outputId": "fc6a39f5-b546-444e-a522-8bbcf889be14" + }, + "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": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#fitting without grid search\n", + "model2.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "id": "f3u1h6Dk8Jsv" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2_1 = model2.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "F-NgJx2d8Jsv" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics without grid search\n", + "rmse2_1 = np.sqrt(mean_squared_error(y_test, pred2_1))\n", + "mae2_1 = mean_absolute_error(y_test, pred2_1)\n", + "mape2_1 = mean_absolute_percentage_error(y_test, pred2_1)\n", + "accuracy2_1 = accuracy_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "precision2_1 = precision_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "confusion2_1 = confusion_matrix(y_test > pred2_1, y_test > pred2_1.round())\n", + "recall2_1 = recall_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "f12_1 = f1_score(y_test > pred2_1, y_test > pred2_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_BB1EERE8Jsv", + "outputId": "11c94daf-d2db-4447-a5b9-b753e648b56c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Print the evaluation metrics without grid search\n", + "print(\"RMSE:\", rmse2_1)\n", + "print(\"MAE:\", mae2_1)\n", + "print(\"MAPE:\", mape2_1)\n", + "print(\"Accuracy:\", accuracy2_1)\n", + "print(\"Precision:\", precision2_1)\n", + "print(\"Confusion Matrix:\\n\", confusion2_1)\n", + "print(\"Recall:\", recall2_1)\n", + "print(\"F1 Score:\", f12_1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hcIfVMWdgcKt" + }, + "source": [ + "## 3. Random Forest" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "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": 36, + "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", +<<<<<<< HEAD + "execution_count": 37, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "fF002Yepgk55", + "outputId": "4ff3a76e-04be-452e-8927-a7739bc306fb" + }, +<<<<<<< HEAD + "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": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Train the model\n", + "model3.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "id": "8nRU_pzEgnCt" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred3 = model3.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "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", +<<<<<<< HEAD + "execution_count": 40, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8pPzsCY1g305", + "outputId": "bc5eeab1-5d75-4be3-b26f-70c4fe533a47" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.2227552163641375\n", + "MAE: 1.2618627107561857\n", + "MAPE: 0.008011786688180922\n", + "Accuracy: 0.8537102473498234\n", + "Precision: 0.8575624082232012\n", + "Confusion Matrix:\n", + " [[624 97]\n", + " [110 584]]\n", + "Recall: 0.8414985590778098\n", + "F1 Score: 0.8494545454545455\n" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "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": 41, + "metadata": { + "id": "TI8idoxOg6jF" + }, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "# Create an XGBoost model\n", + "model4 = xgb.XGBRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "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", +<<<<<<< HEAD + "execution_count": 43, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + }, + "id": "2gpbDxshhexj", + "outputId": "2cdbacc9-909a-43c9-cf04-cc4f70015e43" + }, +<<<<<<< HEAD + "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.
" + ], + "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": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Train the model\n", + "model4.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "id": "Jj9DXdUPhh9V" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred4 = model4.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "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", +<<<<<<< HEAD + "execution_count": 46, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qpnLeFyZhwB3", + "outputId": "1637d31a-e785-4414-dfe5-f7fa4fd282e9" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\n" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "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": 47, + "metadata": { + "id": "DyhhdlZAhx94" + }, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "# Create an XGBoost model\n", + "model5 = xgb.XGBRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "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", +<<<<<<< HEAD + "execution_count": 49, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + }, + "id": "RAIwxIp5iH9Z", + "outputId": "cc66ca33-11cc-4e5d-e7e1-f39b41466c28" + }, +<<<<<<< HEAD + "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.
" + ], + "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": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Train the model\n", + "model5.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "id": "XmJds5fYiKT3" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred5 = model5.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "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", +<<<<<<< HEAD + "execution_count": 52, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7IkE-RAmiWNo", + "outputId": "d69e485e-0462-409a-f9aa-59e5ca7c4bef" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\n" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "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": 53, + "metadata": { + "id": "HNq66cXRiYPJ" + }, + "outputs": [], + "source": [ + "from sklearn.ensemble import AdaBoostRegressor\n", + "# Create an AdaBoost model\n", + "model6 = AdaBoostRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "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", +<<<<<<< HEAD + "execution_count": 55, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "P0oB5wjQivBr", + "outputId": "827e151d-e13e-4924-ef50-c5e1d13f6161" + }, +<<<<<<< HEAD + "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": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Train the model\n", + "model6.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "id": "Bf1m5ukOi2VM" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred6 = model6.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "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", +<<<<<<< HEAD + "execution_count": 58, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BsajWJGBjC80", + "outputId": "076cff01-ff0a-449b-d86c-df9f1363fecd" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 10.504089217159294\n", + "MAE: 8.746118088217727\n", + "MAPE: 0.20512996006219347\n", + "Accuracy: 0.9943462897526502\n", + "Precision: 0.9939879759519038\n", + "Confusion Matrix:\n", + " [[911 3]\n", + " [ 5 496]]\n", + "Recall: 0.9900199600798403\n", + "F1 Score: 0.992\n" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "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": 59, + "metadata": { + "id": "23DZ2biSjF9a" + }, + "outputs": [], + "source": [ + "from sklearn.tree import DecisionTreeRegressor\n", + "# Create a Decision Tree model\n", + "model7 = DecisionTreeRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "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", +<<<<<<< HEAD + "execution_count": 61, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "6mQEQf-ykc9F", + "outputId": "78dc7661-96e4-46af-b65a-c705018c58a3" + }, +<<<<<<< HEAD + "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": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Train the model\n", + "model7.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "id": "BFJ9q_tvkgRC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred7 = model7.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "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", +<<<<<<< HEAD + "execution_count": 64, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AnZXMYb8kooV", + "outputId": "93527d46-9366-49ce-b895-7a12ae87f742" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 3.136698143876249\n", + "MAE: 1.6416165234385407\n", + "MAPE: 0.010224639636659394\n", + "Accuracy: 0.8600706713780919\n", + "Precision: 0.8687845303867403\n", + "Confusion Matrix:\n", + " [[588 95]\n", + " [103 629]]\n", + "Recall: 0.8592896174863388\n", + "F1 Score: 0.864010989010989\n" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "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": 65, + "metadata": { + "id": "JVDSed7yktFY" + }, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsRegressor\n", + "from sklearn.model_selection import GridSearchCV\n", + "# Create a KNN model\n", + "model8 = KNeighborsRegressor()\n", + "param_grid = {'n_neighbors':[3, 5, 7, 9, 11, 15, 20, 23, 25, 30, 60, 70, 150]}\n", + "GV_KNN = GridSearchCV(model8, param_grid, cv=5, scoring='neg_mean_squared_error')" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "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", +<<<<<<< HEAD + "execution_count": 67, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "9fn64o-ZlBka", + "outputId": "bc388b6b-cf36-4a91-eb52-8fe7a861308b" + }, +<<<<<<< HEAD + "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": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Train the model\n", + "model8.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "id": "hbfbbjcSlDn7" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred8 = model8.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "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", +<<<<<<< HEAD + "execution_count": 70, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IPoDRkcMlMAr", + "outputId": "5aee40b5-c7c1-4fad-f419-37d08a504146" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "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": "code", + "execution_count": 71, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "5qW5X1Xe8Js7", + "outputId": "6abf26c0-873e-42e2-9aab-c2bd93a5ae84" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
KNeighborsRegressor(n_neighbors=150)
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(n_neighbors=150)" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GV_KNN.fit(X_train, y_train)\n", + "pred8_1 = GV_KNN.predict(X_test)\n", + "GV_KNN.best_estimator_" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "id": "voNSUlHk8Js7" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics with grid search\n", + "rmse8_1 = np.sqrt(mean_squared_error(y_test, pred8_1))\n", + "mae8_1 = mean_absolute_error(y_test, pred8_1)\n", + "mape8_1 = mean_absolute_percentage_error(y_test, pred8_1)\n", + "accuracy8_1 = accuracy_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "precision8_1 = precision_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "confusion8_1 = confusion_matrix(y_test > pred8_1, y_test > pred8_1.round())\n", + "recall8_1 = recall_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "f18_1 = f1_score(y_test > pred8_1, y_test > pred8_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VMnot_fX8Js8", + "outputId": "71c354e6-71e6-4d31-ee2f-2a03f65d24fe" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 137.20694663964096\n", + "MAE: 101.08872313712585\n", + "MAPE: 1.7323302969000884\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 1.0\n", + "Confusion Matrix:\n", + " [[865 0]\n", + " [ 2 548]]\n", + "Recall: 0.9963636363636363\n", + "F1 Score: 0.9981785063752276\n" + ] + } + ], + "source": [ + "# Print the evaluation metrics with grid search\n", + "print(\"RMSE:\", rmse8_1)\n", + "print(\"MAE:\", mae8_1)\n", + "print(\"MAPE:\", mape8_1)\n", + "print(\"Accuracy:\", accuracy8_1)\n", + "print(\"Precision:\", precision8_1)\n", + "print(\"Confusion Matrix:\\n\", confusion8_1)\n", + "print(\"Recall:\", recall8_1)\n", + "print(\"F1 Score:\", f18_1)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 524 + }, + "id": "Swebseye8Js8", + "outputId": "c501acf3-094c-4ba6-f0d7-1a0901cdb2e0" + }, + "outputs": [ + { + "data": { + "image/png": "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umw2mxYtWhRynf7vOQSobvLaa69p7ty5mj9/vrZv365Ro0YpNzdXlZWVZpcWdTZv3qz8/Hxt3bpVhYWFamlp0eTJk1VfXx9sM2fOHK1Zs0ZvvPGGNm/erPLyct10000mVh193n//ff32t7/V5ZdfHnKdvu85X331la6++mrFxsbqrbfeUmlpqX71q1/pvPPOC7Z55pln9MILL2jp0qV67733lJiYqNzcXDU2NppYeXT45S9/qSVLlmjx4sX6+OOP9ctf/lLPPPOMfvOb3wTb0P/dp76+XqNGjdKLL77Y4f1w+vr222/X7t27VVhYqLVr1+qdd97R/fff31sfIaKdrv+PHTum7du36/HHH9f27dv1xz/+UXv37tX3vve9kHb0/9k70+//gNWrV2vr1q0aPHhwu3v0fw8y0C3Gjx9v5OfnB9/7fD5j8ODBxsKFC02sqm+orKw0JBmbN282DMMwampqjNjYWOONN94Itvn4448NSUZRUZFZZUaVuro64+KLLzYKCwuNb33rW8aDDz5oGAZ939PmzZtnfPOb3+z0vt/vN9LT041nn302eK2mpsZwuVzGH/7wh94oMarl5eUZ99xzT8i1m266ybj99tsNw6D/e5IkY/Xq1cH34fR1aWmpIcl4//33g23eeustw2azGV988UWv1R4NTu3/jhQXFxuSjAMHDhiGQf93p876//PPPzfOP/98o6SkxLjggguM5557LniP/u9ZjEB1g+bmZm3btk2TJk0KXrPb7Zo0aZKKiopMrKxvqK2tlSSlpqZKkrZt26aWlpaQn8ell16qoUOH8vPoJvn5+crLywvpY4m+72l//vOfNXbsWP3gBz9QWlqarrzySr388svB+2VlZfJ4PCH9n5KSogkTJtD/3eAb3/iG1q9fr08++USS9NFHH+ndd9/Vd7/7XUn0f28Kp6+LiorUr18/jR07Nthm0qRJstvteu+993q95mhXW1srm82mfv36SaL/e5rf79edd96phx56SF//+tfb3af/e1aM2QVEgyNHjsjn82nQoEEh1wcNGqQ9e/aYVFXf4Pf7NXv2bF199dUaMWKEJMnj8cjpdAb/EA8YNGiQPB6PCVVGl1WrVmn79u16//33292j73vW/v37tWTJEs2dO1c/+clP9P777+uBBx6Q0+nUtGnTgn3c0Z9F9P+5e+SRR+T1enXppZfK4XDI5/PpF7/4hW6//XZJov97UTh97fF4lJaWFnI/JiZGqamp/Dy6WWNjo+bNm6fbbrtNbrdbEv3f0375y18qJiZGDzzwQIf36f+eRYBCRMvPz1dJSYneffdds0vpEw4dOqQHH3xQhYWFiouLM7ucPsfv92vs2LF66qmnJElXXnmlSkpKtHTpUk2bNs3k6qLf66+/rldffVUrV67U17/+de3YsUOzZ8/W4MGD6X/0WS0tLfqXf/kXGYahJUuWmF1On7Bt2zY9//zz2r59u2w2m9nl9ElM4esGAwYMkMPhaLfT2OHDh5Wenm5SVdFv5syZWrt2rTZu3KghQ4YEr6enp6u5uVk1NTUh7fl5nLtt27apsrJSo0ePVkxMjGJiYrR582a98MILiomJ0aBBg+j7HpSRkaHs7OyQa5dddpkOHjwoScE+5s+invHQQw/pkUce0a233qqRI0fqzjvv1Jw5c7Rw4UJJ9H9vCqev09PT223k1Nraqurqan4e3SQQng4cOKDCwsLg6JNE//ekv/3tb6qsrNTQoUODfxcfOHBA//7v/65hw4ZJov97GgGqGzidTo0ZM0br168PXvP7/Vq/fr1ycnJMrCw6GYahmTNnavXq1dqwYYOysrJC7o8ZM0axsbEhP4+9e/fq4MGD/DzO0be//W3t2rVLO3bsCL7Gjh2r22+/Pfhr+r7nXH311e227P/kk090wQUXSJKysrKUnp4e0v9er1fvvfce/d8Njh07Jrs99K9Nh8Mhv98vif7vTeH0dU5OjmpqarRt27Zgmw0bNsjv92vChAm9XnO0CYSnTz/9VH/961/Vv3//kPv0f8+58847tXPnzpC/iwcPHqyHHnpIb7/9tiT6v8eZvYtFtFi1apXhcrmM5cuXG6Wlpcb9999v9OvXz/B4PGaXFnVmzJhhpKSkGJs2bTIqKiqCr2PHjgXbTJ8+3Rg6dKixYcMG44MPPjBycnKMnJwcE6uOXm134TMM+r4nFRcXGzExMcYvfvEL49NPPzVeffVVIyEhwVixYkWwzdNPP23069fPePPNN42dO3caN954o5GVlWU0NDSYWHl0mDZtmnH++ecba9euNcrKyow//vGPxoABA4yHH3442Ib+7z51dXXGhx9+aHz44YeGJOPXv/618eGHHwZ3eQunr6dMmWJceeWVxnvvvWe8++67xsUXX2zcdtttZn2kiHK6/m9ubja+973vGUOGDDF27NgR8ndxU1NT8Bn0/9k70+//U526C59h0P89iQDVjX7zm98YQ4cONZxOpzF+/Hhj69atZpcUlSR1+Fq2bFmwTUNDg/Fv//ZvxnnnnWckJCQY//zP/2xUVFSYV3QUOzVA0fc9a82aNcaIESMMl8tlXHrppcbvfve7kPt+v994/PHHjUGDBhkul8v49re/bezdu9ekaqOL1+s1HnzwQWPo0KFGXFycceGFFxo//elPQ/7BSP93n40bN3b4Z/20adMMwwivr7/88kvjtttuM5KSkgy3223cfffdRl1dnQmfJvKcrv/Lyso6/bt448aNwWfQ/2fvTL//T9VRgKL/e47NMNocoQ4AAAAA6BRroAAAAAAgTAQoAAAAAAgTAQoAAAAAwkSAAgAAAIAwEaAAAAAAIEwEKAAAAAAIEwEKAAAAAMJEgAIAAACAMBGgAAAAACBMBCgAAAAACBMBCgAAAADC9P8D/+8PbuAfWTAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "results = GV_KNN.cv_results_\n", + "mse = -results['mean_test_score']\n", + "k_values = results['param_n_neighbors'].data\n", + "plt.figure(figsize=(10, 6))\n", + "plt.plot(k_values, mse, marker='o', linestyle='-')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3aOBO56I8Js8" + }, + "source": [ + "The code shows that the elboq point occurs around n=30." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "X5XtlzMXljps" + }, + "source": [ + "## 9. Artificial Neural Networks (ANN)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "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": 76, + "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": 77, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vd1fDjQiltP4", + "outputId": "54545c64-073b-41c5-d03a-cc9cbff204f2" + }, + "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": 78, + "metadata": { + "id": "ZIf94WLMlv04" + }, + "outputs": [], + "source": [ + "# Compile the model\n", + "model9.compile(loss='mean_squared_error', optimizer='adam')" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 79, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FX5DTKqslxWf", + "outputId": "d2353bcd-1508-469b-e4a4-9344af25a2cc" + }, +<<<<<<< HEAD + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Train the model\n", + "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 80, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "OVW2qpNsmGVq", + "outputId": "36e4620e-9823-4b12-d6d2-509c0bcf2a88" + }, +<<<<<<< HEAD + "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" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Make predictions on the test set\n", + "pred9 = model9.predict(X_test_scaled).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "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", +<<<<<<< HEAD + "execution_count": 82, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5zuwkC1emmh3", + "outputId": "3154af15-1dba-4edc-9b4e-f012f6ff6886" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.7525331773064208\n", + "MAE: 1.7070852219826735\n", + "MAPE: 0.011166669166884299\n", + "Accuracy: 0.901060070671378\n", + "Precision: 0.9446640316205533\n", + "Confusion Matrix:\n", + " [[558 42]\n", + " [ 98 717]]\n", + "Recall: 0.8797546012269939\n", + "F1 Score: 0.9110546378653113\n" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "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": 83, + "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": 84, + "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": 85, + "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": 86, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "r066pVYpnXH5", + "outputId": "faddb972-58cc-43a7-eb04-4829ec65f019" + }, + "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": [ + "# 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": 87, + "metadata": { + "id": "YpSfHu6gov35" + }, + "outputs": [], + "source": [ + "# Compile the model\n", + "model.compile(loss='mean_squared_error', optimizer='adam')\n" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 88, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0vHjcluaoxzP", + "outputId": "8ca3e888-84d1-4c79-e045-cfa9d3e76d5f" + }, +<<<<<<< HEAD + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "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", +<<<<<<< HEAD + "execution_count": 89, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gEE06_TjozYv", + "outputId": "5a39a4df-0a56-45f5-ac4b-c2b00f0f15d0" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m44/44\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step\n" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "source": [ + "# Make predictions on the test set\n", + "y_pred = model.predict(X_test_reshaped).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "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", +<<<<<<< HEAD + "execution_count": 91, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "i_6-UUDhpi0c", + "outputId": "af51da10-aedc-479d-80ca-96880408422c" + }, +<<<<<<< HEAD + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 11.43451426022395\n", + "MAE: 9.387460991819042\n", + "MAPE: 0.1689158970124316\n", + "Accuracy: 0.9957325746799431\n", + "Precision: 0.9965277777777778\n", + "Recall: 0.9930795847750865\n", + "F1 Score: 0.9948006932409013\n", + "Confusion Matrix:\n", + " [[826 2]\n", + " [ 4 574]]\n" + ] + } + ], +======= + "outputs": [], +>>>>>>> upstream/main + "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", +<<<<<<< HEAD + "execution_count": 92, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "qpWPtph9CGip", +<<<<<<< HEAD + "outputId": "746d4c8b-bd76-4873-d9b3-b21e078b15bd" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABE9klEQVR4nO3deXhM9+LH8c8kZBFJrNmKiKWiqP0GRauClqqtiqvXllu9FbXVbWmLul2Utm6L4rYlVENUieqGNIq217XH0qo1liJBySIIkvP7w2N+HQkyMjGT0/freeZ5mu85c84nyan55DvnnLEYhmEIAADApNycHQAAAKAoUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAOM2rr74qi8WiM2fOFPm+Vq5cqQYNGsjLy0sWi0VpaWlFvs/ibN68ebJYLDp8+LCzowCFRtkBisD1F4o/PgICAtSmTRt9++23dz3Pl19+qc6dOyswMFAeHh4qV66cWrdurXfffVcZGRl3Pc/d9vvvv+vJJ5+Ut7e3PvjgAy1YsEA+Pj63fd7MmTNlsVgUERFxF1ICKColnB0AMLN//etfCgsLk2EYSk1N1bx589SxY0d9+eWXeuyxx4p8/7m5uYqKitK8efNUr149DRkyRJUrV1ZmZqY2bNigV155Rd98840SExOLPIszbd68WZmZmXrttdcUGRlZ4OfFxsaqatWq2rRpkw4cOKAaNWoUYUrX8re//U29e/eWp6ens6MAhUbZAYrQo48+qiZNmli/joqKUmBgoBYtWuSQspObm6vLly/Ly8sr3+VTpkzRvHnzNHLkSL377ruyWCzWZcOHD9fJkyf1ySefFGofxcGpU6ckSWXKlCnwc5KTk/Xf//5Xy5Yt0zPPPKPY2FhNmDChiBIWTlZWVoFmquzh7u4ud3d3h24TcBbexgLuojJlysjb21slStj+nfHOO++oRYsWKl++vLy9vdW4cWN9/vnneZ5vsVg0dOhQxcbGqk6dOvL09NTKlSvz3deFCxc0efJk1alTR2+//bZN0bkuODhYL774YoH3cSc5a9WqJS8vLzVu3Fjr16/PN2taWpoGDBigMmXKyN/fXwMHDtSFCxfy/yHeYMmSJWrcuLG8vb1VoUIFPfXUUzp+/Lh1+UMPPaT+/ftLkpo2bSqLxaIBAwbcdruxsbEqW7asOnXqpCeeeEKxsbE3zT5y5EhVrVpVnp6eqlSpkvr162dzHtKlS5f06quv6t5775WXl5eCg4PVvXt3HTx4UJK0du1aWSwWrV271mbbhw8flsVi0bx586xjAwYMUOnSpXXw4EF17NhRvr6+6tu3ryTphx9+UM+ePVWlShV5enqqcuXKGjlypC5evJgn96+//qonn3xSFStWlLe3t2rVqqWXX37Zuvxm5+x8++23atWqlXx8fOTr66tOnTrp559/tlknJSVFAwcOVKVKleTp6ang4GB16dKF83/gNMzsAEUoPT1dZ86ckWEYOnXqlKZPn67z58/rqaeeslnv/fff1+OPP66+ffvq8uXLiouLU8+ePfXVV1+pU6dONuuuWbNGn332mYYOHaoKFSqoatWq+e77xx9/VFpamkaPHm33X+g324c9OdetW6fFixdr2LBh8vT01MyZM/XII49o06ZNqlu3rs26Tz75pMLCwjRp0iRt27ZNH3/8sQICAjR58uRb5pw3b54GDhyopk2batKkSUpNTdX777+vn376Sdu3b1eZMmX08ssvq1atWvrwww+tbytWr179tj+D2NhYde/eXR4eHurTp49mzZqlzZs3q2nTptZ1zp8/r1atWmnPnj0aNGiQGjVqpDNnzmjFihX67bffVKFCBeXk5Oixxx5TYmKievfureHDhyszM1MJCQnavXt3gbLc6OrVq+rQoYNatmypd955R6VKlZJ0rfhduHBBzz77rMqXL69NmzZp+vTp+u2337RkyRLr83fu3KlWrVqpZMmSGjx4sKpWraqDBw/qyy+/1BtvvHHT/S5YsED9+/dXhw4dNHnyZF24cEGzZs1Sy5YttX37dutx0qNHD/3888967rnnVLVqVZ06dUoJCQk6evToTY9XoEgZABwuJibGkJTn4enpacybNy/P+hcuXLD5+vLly0bdunWNhx9+2GZckuHm5mb8/PPPt83w/vvvG5KM5cuX24xfvXrVOH36tM0jNze3QPuwJ6ckY8uWLdaxI0eOGF5eXka3bt2sYxMmTDAkGYMGDbJ5frdu3Yzy5cvf8vu7fPmyERAQYNStW9e4ePGidfyrr74yJBnjx4+3jl3/fWzevPmW27xuy5YthiQjISHBMAzDyM3NNSpVqmQMHz7cZr3x48cbkoxly5bl2cb1n+nc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ffvtt6pYsaL279+vsmXLWteZMmWKpk2bpvnz5yssLEzjxo1Thw4d9MsvvzDbBAAACvZxEWFhYQXbmMWiQ4cOFTrUdWPGjNFPP/2kH374Id/lhmEoJCREzz//vEaPHi1JSk9PV2BgoObNm6fevXsXaD98XMTdVVxvZ06uvIrjMeaquSSOsRu5ai6JY8xexeLjIm48T+duWbFihTp06KCePXtq3bp1uueeezRkyBA9/fTT1lwpKSmKjIy0Psff318RERHasGHDTctOdna2srOzrV9nZGQU7TcCAACcxmH32SkKhw4d0qxZs1SzZk2tWrVKzz77rIYNG6b58+dLklJSUiRdu8fPHwUGBlqX5WfSpEny9/e3PipXrlx03wQAAHAqu6/GkqTffvtNK1as0NGjR3X58mWbZVOnTnVIMEnKzc1VkyZN9Oabb0qSGjZsqN27d2v27Nnq37//HW937NixGjVqlPXrjIwMCg8AACZld9lJTEzU448/rmrVqunXX39V3bp1dfjwYRmGoUaNGjk0XHBwsO677z6bsdq1a2vp0qWSpKCgIElSamqqgoODreukpqbe8gaHnp6e8vT0dGhWAADgmux+G2vs2LEaPXq0du3aJS8vLy1dulTHjh3Tgw8+qJ49ezo03AMPPJDnIyj27dun0NBQSddOnA4KClJiYqJ1eUZGhjZu3KjmzZs7NAsAACimDDuVLl3aOHDggGEYhlGmTBlj9+7dhmEYRlJSkhEaGmrv5m5p06ZNRokSJYw33njD2L9/vxEbG2uUKlXK+PTTT63rvPXWW0aZMmWML774wti5c6fRpUsXIywszLh48WKB95Oenm5IMtLT0x2a3zAM49o56M55FMdczsxGrj/HMeaquTjGik8ujjHH57pTBX39tvttLB8fH+t5OsHBwTp48KDq1KkjSTpz5owje5iaNm2q+Ph4jR07Vv/6178UFham9957T3379rWu88ILLygrK0uDBw9WWlqaWrZsqZUrV3KPHQAAIKmA99n5o65du6pTp056+umnNXr0aH3xxRcaMGCAli1bprJly+q7774rqqxFhvvs3F23O+Jc9T4Q5MqrOB5jrppL4hi7kavmkjjG7GVf0yg4h95nR5LOnj2rcuXKaerUqTp//rwkaeLEiTp//rwWL16smjVrOvRKLAAAAEcocNkJCQlR165dFRUVpXbt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mze/23EBAIALcumZnejoaC1cuFBffPGFfH19refh+Pv7y9vbW/7+/oqKitKoUaNUrlw5+fn56bnnnlPz5s0LfCUWAAAwN5cuO7NmzZIkPfTQQzbjMTExGjBggCTp3//+t9zc3NSjRw9lZ2erQ4cOmjlz5l1OCgAAXFWxus9OUeE+O3dXcb0PBLnyKo7HmKvmkjjGbuSquSSOMXtxnx0AAIAiRNkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmZpqy88EHH6hq1ary8vJSRESENm3a5OxIAADABZii7CxevFijRo3ShAkTtG3bNtWvX18dOnTQqVOnnB0NAAA4mSnKztSpU/X0009r4MCBuu+++zR79myVKlVKc+fOdXY0AADgZMW+7Fy+fFlbt25VZGSkdczNzU2RkZHasGGDE5MBAABXUMLZAQrrzJkzysnJUWBgoM14YGCgfv3113yfk52drezsbOvX6enpkqSMjIyiC+oErvrtkMs+rppLct1s5LIPueznqtn+bLmuv24bhnHL9Yp92bkTkyZN0sSJE/OMV65c2Qlpio6/v7MT5I9c9nHVXJLrZiOXfchlP1fN9mfNlZmZKf9b7KTYl50KFSrI3d1dqampNuOpqakKCgrK9zljx47VqFGjrF/n5ubq7NmzKl++vCwWS5HmLaiMjAxVrlxZx44dk5+fn7Pj2HDVbOSyj6vmklw3G7nsQy77uWo2V81lGIYyMzMVEhJyy/WKfdnx8PBQ48aNlZiYqK5du0q6Vl4S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y5fl7u6uoKAgl/l8KgD/j7ID/AmcP39eixcv1rPPPqtOnTpp3rx5edb58ssv1bRpU3l5ealChQrq1q2bdVl2drZefPFFVa5cWZ6enqpRo4bmzJkjSZo3b57KlCljs63ly5fLYrFYv3711VfVoEEDffzxxwoLC5OXl5ckaeXKlWrZsqXKlCmj8uXL67HHHtPBgwdttvXbb7+pT58+KleunHx8fNSkSRNt3LhRhw8flpubm7Zs2WKz/nvvvafQ0NB8P+n6qaee0sWLF7V06VKb8eTkZK1du1ZRUVE6ePCgunTposDAQJUuXVpNmzbVd999Z7N+1apV9dprr6lfv37y8/PT4MGD87yNlZOTo6ioKIWFhcnb21u1atXS+++/n89vR5o4caIqVqwoPz8//eMf/7hlGczOztbo0aN1zz33yMfHRxEREVq7dq11+ZEjR9S5c2eVLVtWPj4+qlOnjr755pubbg/4M6DsAH8Cn332mcLDw1WrVi099dRTmjt3rv54i62vv/5a3bp1U8eOHbV9+3YlJibqL3/5i3V5v379tGjRIk2bNk179uzRf/7zH7vvOnvgwAEtXbpUy5YtsxaCrKwsjRo1Slu2bFFiYqLc3NzUrVs3a1E5f/68HnzwQR0/flwrVqzQjh079MILLyg3N1dVq1ZVZGSkYmJibPYTExOjAQMGyM0t7z9vFSpUUJcuXTR37lyb8Xnz5qlSpUpq3769zp8/r44dOyoxMVHbt2/XI488os6dO+vo0aM2z3nnnXdUv359bd++XePGjcuzr9zcXFWqVElLlizRL7/8ovHjx+ull17SZ599ZrNeYmKi9uzZo7Vr12rRokVatmyZJk6ceNOf49ChQ7VhwwbFxcVp586d6tmzpx555BHt379fkhQdHa3s7GytX79eu3bt0uTJk7lDMODEDyEFcJe0aNHCeO+99wzDMIwrV64YFSpUML7//nvr8ubNmxt9+/bN97l79+41JBkJCQn5Lo+JiTH8/f1txuLj440//vMyYcIEo2TJksapU6dumfP06dOGJGPXrl2GYRjGf/7zH8PX19f4/fff811/8eLFRtmyZY1Lly4ZhmEYW7duNSwWi5GcnHzTfaxcudKwWCzGoUOHDMO49inOoaGhxiuvvHLT59SpU8eYPn269evQ0FCja9euNuskJycbkozt27ffdDvR0dFGjx49rF/379/fKFeunJGVlWUdmzVrllG6dGkjJyfHMAzbT6Q/cuSI4e7ubhw/ftxmu23btjXGjh1rGIZh1KtXz3j11VdvmgH4M2JmBzC5vXv3atOmTerTp48kqUSJEurVq5f1bShJSkpKUtu2bfN9flJSktzd3fXggw8WKkdoaKgqVqxoM7Z//3716dNH1apVk5+fn6pWrSpJ1lmUpKQkNWzYUOXKlct3m127dpW7u7vi4+MlXZuhadOmjXU7+WnXrp0qVapknRFKTEzU0aNHNXDgQEnXZpNGjx6t2rVrq0yZMipdurT27NmTZ2anSZMmt/2eP/jgAzVu3FgVK1ZU6dKl9eGHH+bZTv369VWqVCnr182bN9f58+d17NixPNvbtWuXcnJydO+999p8rtO6deusb/8NGzZMr7/+uh544AFNmDBBO3fuvG1OwOwoO4DJzZkzR1evXlVISIhKlCihEiVKaNasWVq6dKnS09MlSd7e3jd9/q2WSZKbm5vNW2KSdOXKlTzr+fj45Bnr3Lmzzp49q48++kgbN27Uxo0bJf3/Ccy327eHh4f69eunmJgYXb58WQsXLtSgQYNum3fAgAGaP3++cnNzFRMTozZt2qhatWqSpNGjRys+Pl5vvvmmfvjhByUlJalevXp5zqPJ7/v5o7i4OI0ePVpRUVFavXq1kpKSNHDgwEKdnH3+/Hm5u7tr69atSkpKsj727NljPR/o73//uw4dOqS//e1v2rVrl5o0aaLp06ff8T4BM6DsACZ29epVffLJJ3r33XdtXhx37NihkJAQLVq0SJJ0//33KzExMd9t1KtXT7m5uVq3bl2+yytWrKjMzExlZWVZxwpyr5nff/9de/fu1SuvvKK2bduqdu3aOnfunM06999/v5KSknT27Nmbbufvf/+7vvvuO82cOVNXr15V9+7db7vvgQMH6tixY1q2bJni4+MVFRVlXfbTTz9pwIAB6tatm+rVq6egoCAdPnz4ttu80U8//aQWLVpoyJAhatiwoWrUqJHn5GtJ2rFjh83VYf/73/9UunRpVa5cOc+6DRs2VE5Ojk6dOqUaNWrYPIKCgqzrVa5cWf/4xz+0bNkyPf/88/roo4/szg+YCWUHMLGvvvpK586dU1RUlOrWrWvz6NGjh/WtrAkTJmjRokWaMGGC9uzZYz2xVbp25VH//v01aNAgLV++3Hrl0vUTbSMiIlSqVCm99NJLOnjwoBYuXJjv1V43Klu2rMqXL68PP/xQBw4c0Jo1azRq1Cibdfr06aOgoCB17dpVP/30kw4dOqSlS5dqw4YN1nVq166tZs2a6cUXX1SfPn1uOxskSWFhYXr44Yc1ePBgeXp62hSkmjVrWk+i3rFjh/7617/me2XX7dSsWVNbtmzRqlWrtG/fPo0bN06bN2/Os97ly5cVFRWlX375Rd98840mTJigoUOH5nuC9b333qu+ffuqX79+WrZsmZKTk7Vp0yZNmjRJX3/9tSRpxIgRWrVqlZKTk7Vt2zZ9//33ql27tt35ATOh7AAmNmfOHEVGRsrf3z/Psh49emjLli3auXOnHnroIS1ZskQrVqxQgwYN9PDDD2vTpk3WdWfNmqUnnnhCQ4YMUXh4uJ5++mnrTE65cuX06aef6ptvvlG9evW0aNEivfrqq7fN5ubmpri4OG3dulV169bVyJEj9fbbb9us4+HhodWrVysgIEAdO3ZUvXr19NZbb8nd3d1mvaioKF2+fPm2b2Hd+Jxz587pr3/9q/VSeEmaOnWqypYtqxYtWqhz587q0KGDGjVqVODtXvfMM8+oe/fu6tWrlyIiIvT7779ryJAhedZr27atatasqdatW6tXr156/PHHb/nzi4mJUb9+/fT888+rVq1a6tq1qzZv3qwqVapIunbJe3R0tGrXrq1HHnlE9957r2bOnGl3fsBMLMaNb7YDQDHz2muvacmSJZyMCyBfzOwAKLbOnz+v3bt3a8aMGXruueecHQeAi6LsACi2hg4dqsaNG+uhhx6y6y0sAH8uvI0FAABMjZkdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgav8H/GzqtXu8YtUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], +======= + "outputId": "c099cb8d-96af-4223-f499-743040aecdf1" + }, + "outputs": [], +>>>>>>> upstream/main + "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, accuracy2_1*100, accuracy3*100, accuracy4*100, accuracy5*100, accuracy6*100, accuracy7*100, accuracy8*100, accuracy8_1*100, accuracy9*100, accuracy10*100]\n", + "\n", + "# List of corresponding labels for each accuracy\n", + "labels = ['1', '2', '2_1', '3', '4', '5', '6', '7', '8', '8_1', '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" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 93, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "RFaaCNH6Cfoa", +<<<<<<< HEAD + "outputId": "e624dad4-1663-4a68-90ec-b569e5b0b46a" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIKElEQVR4nO3dfVxUZf7/8fdwN+ANICh3BUpmqWlKoGZZ3lHepWmYeZPhzdpWWqmblbumZW2k3Wi5pNaWZGm2Vpq1SZqpVOIdhltmZqlpJmipIBoocP3+8Mv8HEEDBWY4vZ6Px3k8mutcc53PnDkO785cZ47NGGMEAABgUR6uLgAAAKAqEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAWM7jjz8um82mX3/9tcq3lZqaqtatW8vX11c2m01Hjx6t8m0CqBjCDlCDpKSkyGazOS0hISHq3Lmzli9fXu31fPjhh+rdu7dCQ0Pl4+OjoKAg3XjjjXr++eeVm5tb7fVUt99++00DBgyQn5+fkpOT9eabb6p27dpl9j37vfPy8tIll1yiYcOGaf/+/aX6d+rUSTabTU2aNClzvJUrVzrGevfdd53Wff311+rfv78aNmwoX19fXXLJJbrppps0a9Ysp36NGjUqdTyVLN27d7/AvQK4Hy9XFwCg4qZOnaro6GgZY5Sdna2UlBT17NlTH374oW655ZYq335xcbFGjhyplJQUtWzZUvfdd58iIyN17Ngxpaena9KkSfr444+1atWqKq/FlTZt2qRjx47pySefVHx8fLmeU/Le5efna/369UpJSdEXX3yhb775Rr6+vk59fX199cMPP2jjxo1q27at07oFCxbI19dX+fn5Tu3r1q1T586dFRUVpVGjRiksLEz79u3T+vXr9eKLL+r+++936t+6dWv97W9/K1VnREREuV4PUBMQdoAaqEePHoqLi3M8HjlypEJDQ/X2229XStgpLi7WyZMnS/3xLTF9+nSlpKRo3Lhxev7552Wz2RzrHnzwQR04cEDz58+/qG3UBAcPHpQkBQYGlvs5Z753f/nLX1S/fn1NmzZNy5Yt04ABA5z6Nm7cWIWFhXr77bedwk5+fr6WLFmiXr166b333nN6zj//+U8FBARo06ZNpeoqqfdMl1xyie68885y1w/URHyNBVhAYGCg/Pz85OXl/P8vzz33nK677joFBwfLz89PsbGxpb7ykCSbzaYxY8ZowYIFuuqqq2S325Wamlrmtk6cOKFp06bpqquu0rPPPusUdEqEh4frkUceKfc2LqTOK6+8Ur6+voqNjVVaWlqZtR49elTDhg1TYGCgAgICNHz4cJ04caLsnXiWxYsXKzY2Vn5+fqpfv77uvPNOp6+bOnXqpMTERElSmzZtZLPZNGzYsHKNfaYbbrhBkvTjjz+WuX7QoEF65513VFxc7Gj78MMPdeLEiVLhqGScq666qswAFhISUuH6ACsg7AA1UE5Ojn799VcdOnRI27Zt07333qu8vLxS/4f+4osvKiYmRlOnTtXTTz8tLy8v3X777frvf/9baszPPvtM48aN0x133KEXX3xRjRo1KnPbX3zxhY4ePapBgwbJ09OzQnWfaxsVqXPt2rUaO3as7rzzTk2dOlW//fabunfvrm+++aZU3wEDBujYsWNKSkrSgAEDlJKSoieeeOIP60xJSdGAAQPk6emppKQkjRo1Su+//746dOjgmID8j3/8Q3fffbek019Nvfnmm/rrX/9aof0hSXv27JEk1atXr8z1gwcP1oEDB7RmzRpH28KFC9W1a9cyw0vDhg2VkZFR5v4oy6lTp/Trr7+WWn7//fcKvxbAbRkANca8efOMpFKL3W43KSkppfqfOHHC6fHJkydNixYtTJcuXZzaJRkPDw+zbdu2P6zhxRdfNJLM0qVLndoLCwvNoUOHnJbi4uJybaMidUoymzdvdrT99NNPxtfX1/Tr18/RNmXKFCPJjBgxwun5/fr1M8HBwed9fSdPnjQhISGmRYsW5vfff3e0f/TRR0aSmTx5sqOt5P3YtGnTecc8s++nn35qDh06ZPbt22feffdd06BBA2O3282+ffuc+nfs2NFcddVVxhhj4uLizMiRI40xxhw5csT4+PiYN954w6xevdpIMosXL3Y8b8WKFcbT09N4enqa9u3bm4cffth88skn5uTJk6VqatiwYZnHkySTlJT0h68JqCk4swPUQMnJyVq5cqVWrlypt956S507d9Zf/vIXvf/++079/Pz8HP995MgR5eTk6IYbbtCWLVtKjdmxY0c1b978D7ddcpVVnTp1nNq//vprNWjQwGn57bffyrWNitTZvn17xcbGOh5HRUXp1ltv1SeffKKioiKnvvfcc4/T4xtuuEG//fbbea8U27x5sw4ePKj77rvPaT5Rr1691LRp0zLPNlVEfHy8GjRooMjISPXv31+1a9fWsmXLdOmll57zOYMHD9b777+vkydP6t1335Wnp6f69etXZt+bbrpJ6enp6tOnj7Zu3arp06erW7duuuSSS7Rs2bJS/du1a+c4ls5cBg0adFGvE3AnTFAGaqC2bds6TVAeNGiQYmJiNGbMGN1yyy3y8fGRJH300Ud66qmnlJmZqYKCAkf/subZREdHl2vbdevWlSTl5eU5tV9++eVauXKlJGn+/Pl68803y72NitRZ1qXYV1xxhU6cOKFDhw4pLCzM0R4VFeXUr+SroiNHjsjf37/MWn766SdJ0pVXXllqXdOmTfXFF1+U+bzySk5O1hVXXKGcnBy9/vrrSktLk91uP+9zBg4cqIceekjLly/XggULdMsttzjeh7K0adPGEY62bt2qJUuWaMaMGerfv78yMzOdAmf9+vXLfSUZUFNxZgewAA8PD3Xu3FkHDhzQzp07JUmff/65+vTpI19fX7388sv6+OOPtXLlSg0ePFjGmFJjnHl25XyaNm0qSaXmhNSpU0fx8fGKj4/XZZddVuZzy9pGReusiHPNKbrYcS9G27ZtFR8fr4SEBC1btkwtWrTQ4MGDS4XHM4WHh6tTp056/vnnlZaWpsGDB5drWz4+PmrTpo2efvppzZ49W6dOndLixYsr66UANQZhB7CIwsJCSf//jMt7770nX19fffLJJxoxYoR69OhRKf8Hf8MNNyggIECLFi1yukLoQlW0zpIwd6bvv/9etWrVUoMGDS66noYNG0qSduzYUWrdjh07HOsrQ8kE6F9++UX/+te/ztt38ODB+vzzz+Xv76+ePXtWeFslZwIPHDhwQbUCNRlhB7CAU6dOacWKFfLx8VGzZs0knf5DarPZnOax7NmzR0uXLr2obdWqVUsPP/ywvvnmGz366KNlniWpyJmTitaZnp7uNJdn3759+uCDD3TzzTdX+OqwssTFxSkkJERz5sxx+kpt+fLl2r59u3r16nXR2zhTp06d1LZtW82cObPUDwSeqX///poyZYpefvllx9eUZVm9enWZ+//jjz+WVPbXc4DVMWcHqIGWL1+u7777TtLpH4pbuHChdu7cqUcffdQxF6VXr1564YUX1L17dw0ePFgHDx5UcnKyLr/8cv3vf/+7qO0/+uij2r59u5599lmtWLFCCQkJuvTSS3XkyBFt2bJFixcvVkhISLl+MLCidbZo0ULdunXTAw88ILvdrpdfflmSynVJeXl4e3tr2rRpGj58uDp27KhBgwYpOzvbcan8uHHjKmU7Z5owYYJuv/12paSklJpUXSIgIECPP/74H451//3368SJE+rXr5+aNm2qkydPat26dXrnnXfUqFEjDR8+3Kn//v379dZbb5Uap06dOurbt++FvBzA/bjyUjAAFVPWpee+vr6mdevWZvbs2U6XehtjzGuvvWaaNGli7Ha7adq0qZk3b57jsuwzSTKjR4+ucD1LliwxPXv2NA0aNDBeXl4mMDDQdOjQwTz77LPm6NGj5d5GRet86623HP1jYmLM6tWrnfqVPPfQoUNO7SX7b/fu3X/42t555x0TExNj7Ha7CQoKMkOGDDE///xzmeNV5NLzsvoWFRWZxo0bm8aNG5vCwkJjjPOl5+dS1qXny5cvNyNGjDBNmzY1derUMT4+Pubyyy83999/v8nOznZ6/vkuPW/YsOEfviagprAZ48KZegBQATabTaNHj/7D+S0AcCbm7AAAAEsj7AAAAEsj7AAAAEvjaiwANQZTDAFcCM7sAAAASyPsAAAAS+NrLEnFxcX65ZdfVLdu3TJvPAgAANyPMUbHjh1TRESEPDzOff6GsCPpl19+UWRkpKvLAAAAF2Dfvn269NJLz7mesCOpbt26kk7vrJKf2gcAAO4tNzdXkZGRjr/j50LYkRxfXfn7+xN2AACoYf5oCgoTlAEAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKW5NOykpaWpd+/eioiIkM1m09KlS0v12b59u/r06aOAgADVrl1bbdq00d69ex3r8/PzNXr0aAUHB6tOnTpKSEhQdnZ2Nb4KAADgzlwado4fP65WrVopOTm5zPU//vijOnTooKZNm2rNmjX63//+p8cee0y+vr6OPuPGjdOHH36oxYsXa+3atfrll1902223VddLAAAAbs5mjDGuLkI6/euHS5YsUd++fR1tAwcOlLe3t958880yn5OTk6MGDRpo4cKF6t+/vyTpu+++U7NmzZSenq5rr722XNvOzc1VQECAcnJy+AVlAABqiPL+/XbbOTvFxcX673//qyuuuELdunVTSEiI2rVr5/RVV0ZGhk6dOqX4+HhHW9OmTRUVFaX09PRzjl1QUKDc3FynBQAAWJPbhp2DBw8qLy9PzzzzjLp3764VK1aoX79+uu2227R27VpJUlZWlnx8fBQYGOj03NDQUGVlZZ1z7KSkJAUEBDgW7ngOAIB1uW3YKS4uliTdeuutGjdunFq3bq1HH31Ut9xyi+bMmXNRY0+cOFE5OTmOZd++fZVRMgAAcENue9fz+vXry8vLS82bN3dqb9asmb744gtJUlhYmE6ePKmjR486nd3Jzs5WWFjYOce22+2y2+1VUjcAAHAvbntmx8fHR23atNGOHTuc2r///ns1bNhQkhQbGytvb2+tWrXKsX7Hjh3au3ev2rdvX631AgAA9+TSMzt5eXn64YcfHI93796tzMxMBQUFKSoqShMmTNAdd9yhG2+8UZ07d1Zqaqo+/PBDrVmzRpIUEBCgkSNHavz48QoKCpK/v7/uv/9+tW/fvtxXYv2Z2Z6wuWS7ZopbXAAIAPiTcGnY2bx5szp37ux4PH78eElSYmKiUlJS1K9fP82ZM0dJSUl64IEHdOWVV+q9995Thw4dHM+ZMWOGPDw8lJCQoIKCAnXr1k0vv/xytb8WAADgntzmd3Zc6c/6Ozuc2QEA1GQ1/nd2AAAAKgNhBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWJqXqwsAALg32xM2l23bTDEu2zasgzM7AADA0gg7AADA0vgaC27HVafMOV0OANbEmR0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBpLg07aWlp6t27tyIiImSz2bR06dJz9r3nnntks9k0c+ZMp/bDhw9ryJAh8vf3V2BgoEaOHKm8vLyqLRwAANQYLg07x48fV6tWrZScnHzefkuWLNH69esVERFRat2QIUO0bds2rVy5Uh999JHS0tJ09913V1XJAACghvFy5cZ79OihHj16nLfP/v37df/99+uTTz5Rr169nNZt375dqamp2rRpk+Li4iRJs2bNUs+ePfXcc8+VGY4AAMCfi1vP2SkuLtbQoUM1YcIEXXXVVaXWp6enKzAw0BF0JCk+Pl4eHh7asGHDOcctKChQbm6u0wIAAKzJrcPOtGnT5OXlpQceeKDM9VlZWQoJCXFq8/LyUlBQkLKyss45blJSkgICAhxLZGRkpdYNAADch9uGnYyMDL344otKSUmRzWar1LEnTpyonJwcx7Jv375KHR8AALgPtw07n3/+uQ4ePKioqCh5eXnJy8tLP/30k/72t7+pUaNGkqSwsDAdPHjQ6XmFhYU6fPiwwsLCzjm23W6Xv7+/0wIAAKzJpROUz2fo0KGKj493auvWrZuGDh2q4cOHS5Lat2+vo0ePKiMjQ7GxsZKkzz77TMXFxWrXrl211wwAANyPS8NOXl6efvjhB8fj3bt3KzMzU0FBQYqKilJwcLBTf29vb4WFhenKK6+UJDVr1kzdu3fXqFGjNGfOHJ06dUpjxozRwIEDuRILAABIcvHXWJs3b1ZMTIxiYmIkSePHj1dMTIwmT55c7jEWLFigpk2bqmvXrurZs6c6dOigV155papKBgAANYxLz+x06tRJxphy99+zZ0+ptqCgIC1cuLASqwIA1AS2Jyr34pWKMFPK/7cLrue2E5QBAAAqA2EHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYmkvDTlpamnr37q2IiAjZbDYtXbrUse7UqVN65JFH1LJlS9WuXVsRERG666679MsvvziNcfjwYQ0ZMkT+/v4KDAzUyJEjlZeXV82vBAAAuCuXhp3jx4+rVatWSk5OLrXuxIkT2rJlix577DFt2bJF77//vnbs2KE+ffo49RsyZIi2bdumlStX6qOPPlJaWpruvvvu6noJAADAzXm5cuM9evRQjx49ylwXEBCglStXOrX961//Utu2bbV3715FRUVp+/btSk1N1aZNmxQXFydJmjVrlnr27KnnnntOERERVf4aAACAe6tRc3ZycnJks9kUGBgoSUpPT1dgYKAj6EhSfHy8PDw8tGHDhnOOU1BQoNzcXKcFAABYU40JO/n5+XrkkUc0aNAg+fv7S5KysrIUEhLi1M/Ly0tBQUHKyso651hJSUkKCAhwLJGRkVVaOwAAcJ0aEXZOnTqlAQMGyBij2bNnX/R4EydOVE5OjmPZt29fJVQJAADckUvn7JRHSdD56aef9NlnnznO6khSWFiYDh486NS/sLBQhw8fVlhY2DnHtNvtstvtVVYzAABwH259Zqck6OzcuVOffvqpgoODnda3b99eR48eVUZGhqPts88+U3Fxsdq1a1fd5QIAADfk0jM7eXl5+uGHHxyPd+/erczMTAUFBSk8PFz9+/fXli1b9NFHH6moqMgxDycoKEg+Pj5q1qyZunfvrlGjRmnOnDk6deqUxowZo4EDB3IlFgAAkOTisLN582Z17tzZ8Xj8+PGSpMTERD3++ONatmyZJKl169ZOz1u9erU6deokSVqwYIHGjBmjrl27ysPDQwkJCXrppZeqpX4AAOD+XBp2OnXqJGPMOdefb12JoKAgLVy4sDLLAgAAFuLWc3YAAAAuFmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYWqWEnaNHj1bGMAAAAJWuwmFn2rRpeueddxyPBwwYoODgYF1yySXaunVrhcZKS0tT7969FRERIZvNpqVLlzqtN8Zo8uTJCg8Pl5+fn+Lj47Vz506nPocPH9aQIUPk7++vwMBAjRw5Unl5eRV9WQAAwKIqHHbmzJmjyMhISdLKlSu1cuVKLV++XD169NCECRMqNNbx48fVqlUrJScnl7l++vTpeumllzRnzhxt2LBBtWvXVrdu3ZSfn+/oM2TIEG3btk0rV67URx99pLS0NN19990VfVkAAMCivCr6hKysLEfY+eijjzRgwADdfPPNatSokdq1a1ehsXr06KEePXqUuc4Yo5kzZ2rSpEm69dZbJUnz589XaGioli5dqoEDB2r79u1KTU3Vpk2bFBcXJ0maNWuWevbsqeeee04REREVfXkAAMBiKnxmp169etq3b58kKTU1VfHx8ZJOh5OioqJKK2z37t3KyspyjC9JAQEBateundLT0yVJ6enpCgwMdAQdSYqPj5eHh4c2bNhQabUAAICaq8Jndm677TYNHjxYTZo00W+//eY4M/PVV1/p8ssvr7TCsrKyJEmhoaFO7aGhoY51WVlZCgkJcVrv5eWloKAgR5+yFBQUqKCgwPE4Nze3ssoGAABupsJndmbMmKExY8aoefPmWrlyperUqSNJOnDggO67775KL7AqJCUlKSAgwLGUfC0HAACsp8Jndry9vfXQQw+Vah83blylFFQiLCxMkpSdna3w8HBHe3Z2tlq3bu3oc/DgQafnFRYW6vDhw47nl2XixIkaP36843Fubi6BBwAAi7qg39l588031aFDB0VEROinn36SJM2cOVMffPBBpRUWHR2tsLAwrVq1ytGWm5urDRs2qH379pKk9u3b6+jRo8rIyHD0+eyzz1RcXHzeydJ2u13+/v5OCwAAsKYKh53Zs2dr/Pjx6tGjh44ePeqYlBwYGKiZM2dWaKy8vDxlZmYqMzNT0ulJyZmZmdq7d69sNpvGjh2rp556SsuWLdPXX3+tu+66SxEREerbt68kqVmzZurevbtGjRqljRs36ssvv9SYMWM0cOBArsQCAACSLiDszJo1S6+++qr+8Y9/yNPT09EeFxenr7/+ukJjbd68WTExMYqJiZEkjR8/XjExMZo8ebIk6eGHH9b999+vu+++W23atFFeXp5SU1Pl6+vrGGPBggVq2rSpunbtqp49e6pDhw565ZVXKvqyAACARVV4zs7u3bsd4eRMdrtdx48fr9BYnTp1kjHmnOttNpumTp2qqVOnnrNPUFCQFi5cWKHtAgCAP48Kn9mJjo52fO10ptTUVDVr1qwyagIAAKg0FT6zM378eI0ePVr5+fkyxmjjxo16++23lZSUpH//+99VUSMAAMAFq3DY+ctf/iI/Pz9NmjRJJ06c0ODBgxUREaEXX3xRAwcOrIoaAQAALliFw450+uabQ4YM0YkTJ5SXl1fqV4wBAADcxQWFnRK1atVSrVq1KqsWAACASlfhsBMdHS2bzXbO9bt27bqoggAAACpThcPO2LFjnR6fOnVKX331lVJTUzVhwoTKqgsA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AAAALlK5w07r1q315ptvSpI+//xzZWdnq0uXLo71P/74oyIiIiq/QgAAgItQ7gnKkydPVo8ePfSf//xHBw4c0LBhw5xuvrlkyRJdf/31VVIkAADAharQ7+xkZGRoxYoVCgsL0+233+60vnXr1mrbtm2lFwgAAHAxKnQj0GbNmqlZs2Zlrrv77rsrpSAAAIDKVO6wk5aWVq5+N9544wUXAwAAUNnKHXY6derkuPHnue4dWlNvBAoAAKyr3GGnXr16qlu3roYNG6ahQ4eqfv36VVkXAABApSj3pecHDhzQtGnTlJ6erpYtW2rkyJFat26d/P39FRAQ4FgAAADcSbnDjo+Pj+644w598skn+u6773T11VdrzJgxioyM1D/+8Q8VFhZWZZ0AAAAXpNxh50xRUVGaPHmyPv30U11xxRV65plnlJubW9m1AQAAXLQKh52CggItXLhQ8fHxatGiherXr6///ve/CgoKqor6AAAALkq5Jyhv3LhR8+bN06JFi9SoUSMNHz5c//nPfwg5AADArZU77Fx77bWKiorSAw88oNjYWEnSF198Uapfnz59Kq86AACAi1ShX1Deu3evnnzyyXOu53d2AACAuyl32CkuLq7KOgAAAKrEBV2NdS6///57ZQ4HAABw0Sol7BQUFOj5559XdHR0ZQwHAABQacoddgoKCjRx4kTFxcXpuuuu09KlSyVJ8+bNU3R0tGbOnKlx48ZVVZ0AAAAXpNxzdiZPnqy5c+cqPj5e69at0+23367hw4dr/fr1euGFF3T77bfL09OzKmsFAACosHKHncWLF2v+/Pnq06ePvvnmG1199dUqLCzU1q1bHXdDBwAAcDfl/hrr559/dvy+TosWLWS32zVu3DiCDgAAcGvlDjtFRUXy8fFxPPby8lKdOnWqpCgAAIDKUu6vsYwxGjZsmOx2uyQpPz9f99xzj2rXru3U7/3336/cCgEAAC5CucNOYmKi0+M777yz0osBAACobOUOO/PmzavKOgAAAKpEpf6CMgAAgLtx+7Czf/9+3XnnnQoODpafn59atmypzZs3O9YbYzR58mSFh4fLz89P8fHx2rlzpwsrBgAA7sStw86RI0d0/fXXy9vbW8uXL9e3336r559/XvXq1XP0mT59ul566SXNmTNHGzZsUO3atdWtWzfl5+e7sHIAAOAuyj1nxxWmTZumyMhI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fNiRpPHjxysxMVFxcXFq27atZs6cqePHj2v48OGuLg0AALiYJcLOHXfcoUOHDmny5MnKyspS69atlZqaWmrSMgAA+POxRNiRpDFjxpzza6uaym63a8qUKaW+cnM16qoY6qo4d62NuirGXeuS3Lc26qoaNmP+6HotAACAmqvG/6ggAADA+RB2AACApRF2AACApRF2AACApRF2KsGwYcNks9lks9nk7e2t6OhoPfzww8rP//83ISlZv379eqfnFhQUOH65ec2aNY72tWvXqkuXLgoKClKtWrXUpEkTJSYm6uTJk5KkNWvWOMY8e8nKypIk9e3b16k9ODjYpXWNHj1a+fn5evXVV3XDDTc42tu0aaONGzdWyz4p2Xa9evVUr149xcfHO237j97L999/32nczMzMaqm7c+fOTu12u129evVy+TF25v7y8vKSzWZTkyZNXF5Xhw4dSq3z8vJyeV2SNHjwYKd13t7e6t+/v8trCwsLK3N99+7dXVLXnj17Sm3XbrcrMjJS48aNU35+fpW/VzNnztSVV14pPz8/p+1Kf/xZkZaW5jTu0qVLq3R/nVlHhw4dFB0dLV9fX7Vq1colx9O2bduUkJCgRo0ayWazaebMmSpLcnKyGjVqJF9fX7Vr187p87gyEXYqSffu3XXgwAHt2rVLM2bM0Ny5czVlyhSnPpGRkZo3b55T25IlS1SnTh2ntm+//Vbdu3dXXFyc0tLS9PXXX2vWrFny8fFRUVGRU98dO3bowIEDTktISIgkqbCwUI0aNdLs2bPVoEED9e3bt9rq6tevnzp37qytW7dq8+bNev311/XWW29pypQpWrNmjQYNGiRJCg8PV25urm6++Wbt37+/yvdJybZXr16t9PR0RUZGOm1bOv97efz4cUlSUFCQzlaVddvtdsXExGjt2rVKS0vTnXfeqY8//lh33XVXlb+X56urZH9t3LhR9evXV7NmzbRnzx6XH/uS5Onp6XT81apVy+V1nTx5UitWrFCDBg30wQcf6Msvv9SUKVP0ySefuLy2zp07O/2bffHFFyVJHh7Ofyaqoq4bbrjB6b2qW7euXn75ZUnSwoULJUnBwcFKSEjQa6+9pnfeeUd///vfq3R/LFy4UI8++qimTJmi7du3O223RHk+K+rXr6+zVWbdAwYMUOfOnbV//37t2rVLMTExWrdunWJjY/Xtt9/q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5vTk6Xr16hm73W4uu+wy889//tMUFha6vLaSeWGSzIoVKxzPdVVd9957r2nQoIE5evSokU5PlvX19TWRkZHmvvvuc3yFUlX749SpU+bxxx83jRs3LnO7f/RZ8fHHH5c5fmJiYpXWvWbNGtOsWTPj6elpbDabGThwoEuOp927d5e5vmPHjk7bnzVrlomKijI+Pj6mbdu2Zv369WXWebFsxpRxPg4AAMAimLMDAAAsjbAD/J/PP//cMXenrAUApNM/yHe+z4q9e/e6ukScha+xgP/z+++/O90j62wlk+oA/LkVFhY63aj0bI0aNXJMEoZ7IOwAAABL42ssAABgaYQdAABgaYQdAABgaYQdACjD448/rtatW1foOTabTUuXLj3n+j179shmsykzM/OiagNQMYQdAE6GDRsmm80mm80mb29vRUdH6+GHHy71s/AlfdavX+/UXlBQoODgYNlsNq1Zs8bRvnbtWnXp0kVBQUGqVauWmjRposTERJ08eVKStGbNGseYZy9n3kqgREZGRpnbL9G1a1fddtttF7wfHnroIaf79gCouQg7AErp3r27Dhw4oF27dmnGjBmaO3eupkyZUqpfZGSk5s2b59S2ZMmSUr9L9O2336p79+6Ki4tTWlqavv76a82aNUs+Pj4qKipy6rtjxw4dOHDAaQkJCSm17djYWLVq1Uqvv/56qXV79uzR6tWrNXLkyAq/dmOMCgsLVadOHQUHB1f4+QDcD2EHQCl2u11hYWGKjIxU3759FR8fr5UrV5bql5iYqEWLFjnd5fn1119XYmKiU78VK1YoLCxM06dPV4sWLdS4cWN1795dr776qvz8/Jz6hoSEKCwszGk5192tR44cqXfeeafUnbFTUlIUHh6u7t27680331RcXJzq1q2rsLAwDR48WAcPHnT0LTmjtHz5csXGxsput+uLL74o9TXWpk2bdNNNN6l+/foKCAhQx44dtWXLllI1HThwQD169JCfn58uu+wyvfvuu+fe0ZK++eYb9ejRQ3Xq1FFoaKiGDh2qX3/91bH+3XffVcuWLeXn56fg4GDFx8dX6t2ngT8Dwg6A8/rmm2+0bt06+fj4lFoXGxurRo0a6b333pN0+pdl09LSNHToUKd+YWFhOnDggNLS0iq1tiFDhqigoMApUBhj9MYbb2jYsGHy9PTUqVOn9OSTT2rr1q1aunSp9uzZo2HDhpUa69FHH9Uzzzyj7du36+qrry61/tixY0pMTNQXX3yh9evXq0mTJurZs6eOHTvm1O+xxx5TQkKCtm7dqiFDhmjgwIHavn17mfUfPXpUXbp0UUxMjDZv3qzU1FRlZ2drwIABkk4Hp0GDBmnEiBHavn271qxZo9tuu038PBpQQVVye1EANVZiYqLx9PQ0tWvXNna73UgyHh4e5t1333Xqp/+7k/LMmTNN586djTHGPPHEE6Zfv36l7qRcWFhohg0b5rh7dd++fc2sWbNMTk6OY7ySOynXrl3baWnevPl56x04cKDTnZRXrVplJJmdO3eW2X/Tpk1Gkjl27JjTdpcuXerUb8qUKaZVq1bn3G5RUZGpW7eu+fDDD532yT333OPUr127dubee+81xvz/O0F/9dVXxhhjnnzySXPzzTc79d+3b5+RZHbs2GEyMjKMJLNnz57z7gMA58eZHQCldO7cWZmZmdqwYYMSExM1fPhwJSQklNn3zjvvVHp6unbt2qWUlBSNGDGiVB9PT0/NmzdPP//8s6ZPn65LLrlETz/9tK666iodOHDAqe/nn3+uzMxMx/Lxxx+ft9YRI0YoLS1NP/74o6TTX6N17NjRcXuPjIwM9e7dW1FRUapbt646duwoSaXuXxQXF3fe7WRnZ2vUqFFq0qSJAgIC5O/vr7y8vFLjtG/fvtTjc53Z2bp1q1avXu10X6WmTZtKkn788Ue1atVKXbt2VcuWLXX77bfr1Vdf1ZEjR85bJ4DSCDsASqldu7Yuv/xyxwTgDRs26LXXXiuzb3BwsG655RaNHDlS+fn56tGjxznHveSSSzR06FD961//0rZt25Sfn685c+Y49YmOjtbll1/uWBo2bHjeWrt27aqoqCilpKQoNzdX77//vmNi8vHjx9WtWzf5+/trwYIF2rRpk5YsWSJJjqvAznzN55OYmKjMzEy9+OKLWrdunTIzMxUcHFxqnIrIy8tT7969ncJdZmamdu7cqRtvvFGenp5auXKlli9frubNm2vWrFm68sortXv37gveJvBnRNgBcF4eHh76+9//rkmTJjlNRD7TiBEjtGbNGt11113y9PQs17j16tVTeHj4RU+29fDw0PDhw/XGG29o4cKF8vHxUf/+/SVJ3333nX777Tc988wzuuGGG9S0aVOnyckV8eWXX+qBBx5Qz549ddVVV8lutztNJC5x9qXw69evV7Nmzcoc85prrtG2bdvUqFEjp4B3+eWXO8KXzWbT9ddfryeeeEJfffWVfHx8HIENQPkQdgD8odtvv12enp5KTk4uc3337t116NAhTZ06tcz1c+fO1b333qsVK1boxx9/1LZt2/TII49o27Zt6t27t1PfgwcPKisry2k5derUeesbPny49u/fr7///e8aNGiQ4wqvqKgo+fj4aNasWdq1a5eWLVumJ5988gL2gNSkSRO9+eab2r59uzZs2KAhQ4aUupJMkhYvXqzXX39d33//vaZMmaKNGzdqzJgxZY45evRoHT58WIMGDdKmTZv0448/6pNPPtHw4cNVVFSkDRs26Omnn9bmzZu1d+9evf/++zp06NA5wxOAshF2APwhLy8vjRkzRtOnTy/zTIzNZlP9+vXLvGJLktq2bau8vDzdc889uuqqq9SxY0etX79eS5cudcyhKXHllVcqPDzcacnIyDhvfVFRUYqPj9eRI0ec5gw1aNBAKSkpWrx4sZo3b65nnnlGzz333AXsAem1117TkSNHdM0112jo0KF64IEHyvz9nyeeeEKLFi3S1Vdfrfnz5+vtt99W8+bNyxwzIiJCX375pYqKinTzzTerZcuWGjt2rAIDA+Xh4SF/f3+lpaWpZ8+euuKKKzRp0iQ9//zz5/2qEEBpNmO4hhEAAFgXZ3YAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAICl/T/87OzQb65QZQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], +======= + "outputId": "67a8f358-e3ce-4ad2-9c78-ebc75902beb4" + }, + "outputs": [], +>>>>>>> upstream/main + "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, rmse2_1, rmse3, rmse4, rmse5, rmse6, rmse7, rmse8, rmse8_1, rmse9, rmse10]\n", + "\n", + "# List of corresponding labels for each RMSE value\n", + "labels = ['RMSE1', 'RMSE2', 'RMSE2_1', 'RMSE3', 'RMSE4', 'RMSE5', 'RMSE6', 'RMSE7', 'RMSE8', 'RMSE8_1', '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" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 94, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "nrZu-K-KDCJ2", +<<<<<<< HEAD + "outputId": "d0dd5f18-77bd-41f4-c21b-09e71322b318" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/MUlEQVR4nO3deVxUZf//8fcACogCorIlKuW+pOYWmbdLFK6pueR2h2JqqZl5l+l9m2V5Z1qZS6RZKFmCS6mlpUWYW+GuZUmuuAuWKYomopzfH36dX3MDCjoww+n1fDzO4+Fc5zrn+swMMm/Ouc4Zi2EYhgAAAEzKxdEFAAAAFCbCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDoC/hVdeeUUWi0W///57oY+1evVqNWjQQB4eHrJYLDp37lyhjwkgb4QdoJiLjY2VxWKxWfz9/dW6dWutWrWqyOtZsWKFOnXqpICAAJUsWVJ+fn76xz/+obffflvnz58v8nqK2pkzZ9SzZ095enoqOjpaH3/8sby8vHLt+9f3buPGjTnWG4ahkJAQWSwWdezYMdd9nDt3zhqqkpOTc+3Tv3//HD8jNxYPD4/bf7JAMeHm6AIA2Merr76q0NBQGYahtLQ0xcbGqn379lqxYkWeH5T2lJ2drYEDByo2Nlb16tXT0KFDFRISogsXLigpKUnjxo3TV199pcTExEKvxZG2bt2qCxcu6LXXXlN4eHi+tvHw8FBcXJwefPBBm/Z169bp+PHjcnd3z3PbJUuWyGKxKDAwUAsWLNDEiRNz7efu7q4PP/wwR7urq2u+agSKM8IOYBLt2rVT48aNrY8HDhyogIAAxcfH2yXsZGdn68qVK3keCZgyZYpiY2P13HPP6e2335bFYrGue/bZZ3Xq1CnNnz//jsYoDk6fPi1J8vX1zfc27du315IlSzRjxgy5uf3/X8txcXFq1KjRTU+9ffLJJ2rfvr0qV66suLi4PMOOm5ub+vXrl++aADPhNBZgUr6+vvL09LT58JSkt956Sw888IDKlSsnT09PNWrUSJ9++mmO7S0Wi4YPH64FCxaoTp06cnd31+rVq3Md69KlS5o8ebLq1KmjN9980ybo3BAUFKQXX3wx32PcTp01atSQh4eHGjVqpPXr1+da67lz59S/f3/5+vrKx8dHAwYM0KVLl3J/Ef/HkiVL1KhRI3l6eqp8+fLq16+fTpw4YV3fqlUrRUZGSpKaNGkii8Wi/v3733K/vXv31pkzZ5SQkGBtu3Llij799FP16dMnz+2OHj2qDRs2qFevXurVq5dSUlL0ww8/5Ou5AH8nHNkBTCI9PV2///67DMPQ6dOnNXPmTGVkZOT4a3769Ol69NFH1bdvX125ckULFy5Ujx49tHLlSnXo0MGm75o1a7R48WINHz5c5cuXV5UqVXIde+PGjTp37pyef/75Ap8WyWuMgtS5bt06LVq0SCNGjJC7u7vee+89tW3bVlu2bFHdunVt+vbs2VOhoaGaNGmSduzYoQ8//FD+/v6aPHnyTeuMjY3VgAED1KRJE02aNElpaWmaPn26vv/+e+3cuVO+vr76z3/+oxo1amjOnDnW04r33HPPLV+DKlWqKCwsTPHx8WrXrp0kadWqVUpPT1evXr00Y8aMXLeLj4+Xl5eXOnbsKE9PT91zzz1asGCBHnjggVz753aEqGTJkvL29r5ljUCxZgAo1ubNm2dIyrG4u7sbsbGxOfpfunTJ5vGVK1eMunXrGm3atLFpl2S4uLgYv/zyyy1rmD59uiHJWL58uU371atXjd9++81myc7OztcYBalTkrFt2zZr25EjRwwPDw+ja9eu1raXX37ZkGRERUXZbN+1a1ejXLlyN31+V65cMfz9/Y26desaf/75p7V95cqVhiRj/Pjx1rYb78fWrVtvus//7fvuu+8aZcqUsT7vHj16GK1btzYMwzAqV65sdOjQIcf29erVM/r27Wt9/O9//9soX768kZWVZdMvMjIy158RSUZERMQt6wSKO05jASYRHR2thIQEJSQk6JNPPlHr1q315JNPaunSpTb9PD09rf8+e/as0tPT1aJFC+3YsSPHPlu2bKnatWvfcuwbV1mVLl3apn337t2qUKGCzXLmzJl8jVGQOsPCwtSoUSPr40qVKqlz5876+uuvde3aNZu+Tz31lM3jFi1a6MyZMze9Umzbtm06ffq0hg4dajOfqEOHDqpZs6a+/PLLPLfNr549e+rPP//UypUrdeHCBa1cufKmp7B++ukn7d69W71797a29e7dW7///ru+/vrrHP09PDysPx9/Xd544407rh1wdpzGAkyiadOmNhOUe/furYYNG2r48OHq2LGjSpYsKUla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8+fP2ywAAMCcnDbspKamSpICAgJs2gMCAqzrUlNT5e/vb7Pezc1Nfn5+1j65mTRpknx8fKxLSEiInasHAADOwmnDTmEaO3as0tPTrcuxY8ccXRIAACgkTht2AgMDJUlpaWk27WlpadZ1gYGBOn36tM36q1ev6o8//rD2yY27u7u8vb1tFgAAYE5OG3ZCQ0MVGBioxMREa9v58+e1efNmhYWFSZLCwsJ07tw5bd++3dpnzZo1ys7OVrNmzYq8ZgAA4HwcejVWRkaGDhw4YH2ckpKiXbt2yc/PT5UqVdLIkSM1ceJEVatWzXrpeXBwsLp06SJJqlWrltq2batBgwZp9uzZysrK0vDhw9WrVy+uxAIAAJIcHHa2bdum1q1bWx+PGjVKkhQZGanY2FiNHj1aFy9e1ODBg3Xu3Dk9+OCDWr16tfUeO5K0YMECDR8+XA899JBcXFzUrVs3zZgxo8ifCwAAcE4WwzD+9ndGOn/+vHx8fJSenv73mb/jzDfjclRt3CQMyJ2z/p905t9jKBL5/fx22jk7AAAA9kDYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApubUYefatWt66aWXFBoaKk9PT91zzz167bXXZBiGtY9hGBo/fryCgoLk6emp8PBw7d+/34FVAwAAZ3LHYefatWvatWuXzp49a496bEyePFmzZs3Su+++q+TkZE2ePFlTpkzRzJkzrX2mTJmiGTNmaPbs2dq8ebO8vLwUERGhy5cv270eAABQ/BQ47IwcOVIxMTGSrgedli1b6r777lNISIjWrl1r1+J++OEHde7cWR06dFCVKlXUvXt3PfLII9qyZYuk60d1pk2bpnHjxqlz58669957NX/+fJ08eVLLly+3ay0AAKB4KnDY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e8l32AkLC9OZM2esj729vXXo0CHr43Pnzql37972rQ4AAOAO5TvsGIZx08d5tQEAADiSXefsWCwWe+4OAADgjjn9BOUTJ06oX79+KleunDw9PVWvXj1t27bNut4wDI0fP15BQUHy9PRUeHi49u/f78CKAQCAMynQF4Hu2bNHqampkq6HjF9//VUZGRmSpN9//93uxZ09e1bNmzdX69attWrVKlWoUEH79+9X2bJlrX2mTJmiGTNm6KOPPlJoaKheeuklRUREaM+ePfLw8LB7TQAAoHgpUNh56KGHbObldOzYUdL101eGYdj9NNbkyZMVEhKiefPmWdtCQ0Ot/zYMQ9OmTdO4cePUuXNnSdL8+fMVEBCg5cuXq1evXnatBwAAFD/5DjspKSmFWUeuvvjiC0VERKhHjx5at26d7rrrLg0dOlSDBg2y1pSamqrw8HDrNj4+PmrWrJmSkpLyDDuZmZnKzMy0Pj5//nzhPhEAAOAw+Q47lStXvmWfn3/++Y6K+V+HDh3SrFmzNGrUKP373//W1q1bNWLECJUsWVKRkZHWU2oBAQE22wUEBFjX5WbSpEmaMGGCXWsFAADO6Y4nKF+4cEFz5sxR06ZNVb9+fXvUZJWdna377rtPr7/+uho2bKjBgwdr0KBBmj179h3td+zYsUpPT7cux44ds1PFAADA2dx22Fm/fr0iIyMVFBSkt956S23atNGmTZvsWZuCgoJUu3Ztm7ZatWrp6NGjkqTAwEBJUlpamk2ftLQ067rcuLu7y9vb22YBAADmVKCwk5qaqjfeeEPVqlVTjx495O3trczMTC1fvlxvvPGGmjRpYtfimjdvrr1799q07du3z3pKLTQ0VIGBgUpMTLSuP3/+vDZv3qywsDC71gIAAIqnfIedTp06qUaNGvrpp580bdo0nTx5UjNnzizM2vTcc89p06ZNev3113XgwAHFxcVpzpw5GjZsmKTrV4GNHDlSEydO1BdffKHdu3friSeeUHBwsLp06VKotQEAgOIh3xOUV61apREjRujpp59WtWrVCrMmqyZNmmjZsmUaO3asXn31VYWGhmratGnq27evtc/o0aN18eJFDR48WOfOndODDz6o1atXc48dAAAgqQBhZ+PGjYqJiVGjRo1Uq1Yt/fOf/yyS+9h07NjRej+f3FgsFr366qt69dVXC70WAABQ/OT7NNb9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denSRT///HMer6p9meY+O87mvvvu08GDB7V06VL17dtX0vUjDZUqVVJoaKhN34yMDC1atEjbtm1TamqqYmNj9e9//zvHPsuVK5fn931VqVJF06dPlySbvxqdobZp06apf//+qlixog4ePKgGDRqoWrVqWrFihZKTkwt13L96/fXX9fnnn2vFihVq2LBhnq/PDe3atdOiRYsUGhqqzz//XJs2bdLjjz8uqXBfr4YNG9rUV6VKFS1dulQbNmzQ4MGDre1F/T7e8NRTT6lPnz5ydXXNcbTLkXX5+/vf8mtfirq21atXa926dTp06JD8/PwkXX8/HV2Xj4+PzS32ly9frrNnz+a463xR15WUlKTSpUurZcuWOnjwoFJTUzVkyBBNnjy50MetUqWKRowYIUkKDQ21jpsfTZo0UePGjXXu3Dl99dVX2r17t3VdYdb98ccfa8iQIdbfS3fffbdee+01paamKiQkxKk+f6ZPn662bdvqhRdekCS99tprSkhI0LvvvqvZs2fnuo09cWSnEEVFRWnevHnWx3Pnzs31KywWL16smjVrqkaNGurXr5/mzp1766+rL6a13Rj3woUL8vPzK9LXJDs72zru7VizZo3130VZ986dO/XDDz+oZcuWOdYV9fs4b948HTp0SC+//PJN+zni56tBgwYKCgrSww8/rO+//94pavviiy/UuHFjTZkyRXfddZeqV6+u559/3uYvbkfU9b9iYmIUHh6uypUrO7SusLAwXbx4UWlpaRowYIDef/99ffrpp2rfvn2hj3vs2DF99dVXMgxDaWlp1nELqnTp0tq8ebP1cWHWnZmZKQ8PD5s2Nzc3nT17VpGRkU71+ZOUlKTw8HCbtoiICCUlJdl9rNwQdgpRv379tHHjRh05ckRHjhzR999/r379+uXoFxMTY21v27at0tPTtW7duhz9HnjgAZUuXdpmKW619evXT+vWrVN6errCwsKK9DV56623lJGRoZ49e+bZ52aSk5OL9PWqWLGi3N3d1bhxYw0bNkxPPvlkjj5F+T7u379fY8aM0SeffCI3t5sfFC7KuoKCgjR79mx99tln+uyzzxQSEqJWrVppx44dDq/t0KFD2rhxo37++WctW7ZM06ZN06effqqhQ4c6tK6/OnnypFatWpXrz1dR19W8eXP94x//0NatWzV69Ght2LBBJUqU0OjRowt93AULFujxxx9XyZIlFRgYKB8fH0VHR+f6mtyMl5eXUlJSiuT1ioiI0Icffqjt27fLMAxt27ZN+/btk2EYatu2rVN9/qSmpub4CqeAgIAcc+sKC6exClGFChXUoUMHxcbGyjAMdejQwTr/44a9e/dqy5YtWrZsmaTrqfzxxx9XTEyMWrVqZdN30aJFqlWrVrGuLSEhQYZhqEuXLlqxYkWRjRsXF6cJEybo888/z3UuR340atSoSF+vDRs2KCMjQ5s2bdKYMWNUtWpV9e7d26ZPUb2P165dU58+fTRhwgRVr179pnUXZV2SVKNGDZs5MA888IAOHjyod955Rx9//LFDa8vOzpbFYtGCBQusp42mTp2q7t2767333pOnp6dD6vqrjz76SL6+vurSpUuu64uyrj179mjLli2qWbOm4uLiNHToUO3evVs9evQo9HGfffZZjR8/XhERETp16pReeOEFPfXUU4qJicl1m7y4urqqdu3aRfJ6vfTSS0pNTdX9998vwzAUEBCgqlWr6ueff3bqzx9HIOwUsqioKOt3duX2V0JMTIyuXr2q4OBga5thGHJ3d9e7775rc149JCREVatWLba1nThxQk8++aTGjRunjz76SOvXry+ScRcuXKgnn3xSS5YsyXEYtSAeeughxcbGSiqa1+vGufV69eopLS1Nr7zySo6wIxXN+3jhwgVt27ZNO3futI6VnZ0twzDk5uamb775Rm3atCnyuvLStGlTbdy4Mc/1RVVbUFCQ7rrrLpv+tWrVkmEYOn78uKpVq+aQuv667dy5c/XPf/5TJUuWzLNfUdU1adIk+fv7q2rVqrr33ns1duxYDRo0SLt27dK//vWvQh23efPm1vkk9957r7y8vNSiRQtNnDhRQUFBeb42uWnatGmR/K7w9PTU3Llz9f777ystLU1BQUF68MEH5ebmpgoVKjjV509gYKDS0tJs2tLS0m45F89eOI1VyNq2basrV64oKytLERERNuuuXr2q+fPn6+2339auXbusy48//qjg4GDFx8ebpraUlBTt2LFD8fHxeumll4ps3Pj4eA0YMEDx8fG5XlZZEA0bNnTYe5mdnW1zNdhfFcX76O3trd27d9vs46mnnlKNGjW0a9cuNWvWzCF15WXXrl03/YAqqtqaN2+ukydPKiMjw9q2b98+ubi4qGLFig6r64Z169bpwIED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0W/v3r3asmWLevfuLUlyc3PT448/rpiYmBx9Fy1apF27dtksNxMVFaWUlBR99913kq4f1alSpYratGkjSdq/f7969+6tu+++W97e3qpSpYok5Tgi07hx45uOk5GRoeeff161atWSr6+vSpcureTk5Bz7CQsLy/E4OTk5133++OOPOnDggMqUKWP9biU/Pz9dvnxZBw8elJ+fn/r376+IiAh16tRJ06dP16lTp25aJ4Bb48t/ABRIVFSUhg8fLkl5zk+JiYnR1atXFRwcbG0zDEPu7u5699135ePjY20PCQlR1apV8z1+tWrV1KJFC82bN0+tWrXS/PnzNWjQIOupnk6dOqly5cr64IMPFBwcrOzsbNWtW1dXrlyx2Y+Xl9dNx3n++eeVkJCgt956S1WrVpWnp6e6d++eYz8FkZGRoUaNGmnBggU51lWoUEHS9fA2YsQIrV69WosWLdK4ceOUkJCg+++//7bHBf7uCDsACuTG/BKLxZLrXJerV69q/vz5evvtt/XII4/YrOvSpYvi4+NzvYS9IAYOHKinn35ajz76qE6cOGG97P3MmTPau3evPvjgA7Vo0UKStHHjxtsa4/vvv1f//v3VtWtXSdeDSm5fHvu/l8lv2rRJtWrVynWf9913nxYtWiR/f395e3vnOXbDhg3VsGFDjR07VmFhYYqLiyPsAHeA01gACsTV1VXJycnas2ePXF1dc6xfuXKlzp49q4EDB6pu3bo2S7du3XKcyjpz5oxSU1NtlsuXL9+0hh49eqhEiRIaMmSIHnnkEYWEhEiSypYtq3LlymnOnDk6cOCA1qxZo1GjRt3W86xWrZqWLl2qXbt26ccff1SfPn1yTHKWroeiKVOmaN++fYqOjtaSJUv07LPP5rrPvn37qnz58urcubM2bNiglJQUrV27ViNGjNDx48eVkpKisWPHKikpSUeOHNE333yj/fv35xmeAOQPYQdAgXl7e+d5ZCImJkbh4eE2p6pu6Natm7Zt26affvrJ2hYeHq6goCCb5VZ3HC5VqpR69eqls2fPKioqytru4uKihQsXavv27apbt66ee+45vfnmm7f1HKdOnaqyZcvqgQceUKdOnRQREZHrTQv/9a9/adu2bWrYsKEmTpyoqVOn5nrE60bd69evV6VKlfTYY4+pVq1aGjhwoC5fvixvb2+VKlVKv/76q7p166bq1atr8ODBGjZsmIYMGXJbzwHAdRbDuMNrQQEAAJwYR3YAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICp/T+WRF7HOqAsCAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], +======= + "outputId": "69165581-da05-4554-a464-a606eb87a734" + }, + "outputs": [], +>>>>>>> upstream/main + "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, mae2_1, mae3, mae4, mae5, mae6, mae7, mae8, mae8_1, mae9, mae10]\n", + "\n", + "# List of corresponding labels for each MAE value\n", + "labels = ['MAE1', 'MAE2', 'MAE2_1', 'MAE3', 'MAE4', 'MAE5', 'MAE6', 'MAE7', 'MAE8', 'MAE8_1', '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" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 100, +======= + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "_c4Pe76fDNM-", + "outputId": "0e3d2f74-9042-4e2d-92c6-5ce61e967bd4" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, +<<<<<<< HEAD + "id": "_c4Pe76fDNM-", + "outputId": "c1784b34-6746-42fd-9f66-b7c1cfd50a21" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA930lEQVR4nO3deVwV9f7H8fcB9QAKuCDigopLmrtiFtxSLBMRt25XDTM3sjK9pXazbNGWX6GVqaVplso1U9zSyjXSXErKXFMzywpxAbVUEE1AmN8fPjzXIwflKHgO0+v5eMzj4XznOzOfMwfl7cx3ZiyGYRgCAAAwCQ9XFwAAAFCUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcASryXXnpJFotFf/zxR7Hva/Xq1WrRooW8vLxksVh0+vTpYt8nAOcQbgA3Fh8fL4vFYjcFBgaqffv2WrVq1U2v5/PPP1fXrl1VpUoVlSlTRhUrVlTbtm01YcIEZWRk3PR6brY///xTvXr1kre3t6ZOnaqPPvpIZcuWddj38u/u66+/zrfcMAwFBwfLYrGoS5cuDrdx+vRpW4jat2+fwz4DBgyw+/nw8/NT8+bNNWHCBGVlZdn6XQqABU1paWnXcUQA91TK1QUAuLZXXnlFISEhMgxDx44dU3x8vDp37qzPP/+8wF+MRSkvL0+xsbGKj49X06ZN9fjjjys4OFhnzpxRUlKSXnjhBa1cuVJr164t9lpc6fvvv9eZM2f06quvqkOHDoVax8vLS/PmzdOdd95p175hwwYdPnxYVqu1wHUXLVoki8WioKAgffzxx/q///s/h/2sVqs+/PBDSRcD0ZIlS/Sf//xH33//vRISEuz6Tps2TeXKlcu3jfLlyxfq8wAlAeEGKAGioqLUunVr23xsbKyqVKmi+fPnF0m4ycvLU3Z2try8vBwuf+ONNxQfH68RI0ZowoQJslgstmVPPvmkUlNTNWfOnBvaR0lw/PhxSc4Fgc6dO2vRokV65513VKrU//7JnTdvnkJDQ696KW3u3Lnq3LmzatWqpXnz5hUYbkqVKqW+ffva5h9//HHdfvvtWrBggd5++21Vq1bNtuxf//qXAgICCl0/UBJxWQoogcqXLy9vb2+7X5aS9NZbbyk8PFyVKlWSt7e3QkNDtXjx4nzrWywWDRs2TB9//LEaN24sq9Wq1atXO9zXuXPnNH78eDVu3FhvvvmmXbC5pGrVqnrmmWcKvY/rqbNBgwby8vJSaGioNm7c6LDW06dPa8CAASpfvrz8/f01cOBAnTt3zvFBvMKiRYsUGhoqb29vBQQEqG/fvjpy5IhteUREhPr37y9Juu2222SxWDRgwIBrbjcmJkZ//vmnEhMTbW3Z2dlavHix+vTpU+B6KSkp2rRpkx544AE98MAD+v3337V58+ZCfRYPDw9FRERIkpKTkwu1DmAmnLkBSoD09HT98ccfMgxDx48f17vvvqvMzEy7/61L0uTJk9WtWzc9+OCDys7OVkJCgnr27Knly5crOjraru+6deu0cOFCDRs2TAEBAapdu7bDfX/99dc6ffq0/vOf/8jT09OpugvahzN1btiwQQsWLNATTzwhq9Wq9957T506ddKWLVvUpEkTu769evVSSEiI4uLitH37dn344YcKDAzU+PHjr1pnfHy8Bg4cqNtuu01xcXE6duyYJk+erG+++UY7duxQ+fLl9fzzz6tBgwaaMWOG7TJh3bp1r3kMateurbCwMM2fP19RUVGSpFWrVik9PV0PPPCA3nnnHYfrzZ8/X2XLllWXLl3k7e2tunXr6uOPP1Z4ePg19ylJv/76qySpUqVKdu0nT57M17dUqVJcloK5GADc1uzZsw1J+Sar1WrEx8fn63/u3Dm7+ezsbKNJkybG3XffbdcuyfDw8DD27t17zRomT55sSDKWLVtm137hwgXjxIkTdlNeXl6h9uFMnZKMrVu32toOHjxoeHl5Gffdd5+tbezYsYYkY9CgQXbr33fffUalSpWu+vmys7ONwMBAo0mTJsZff/1la1++fLkhyRgzZoyt7dL38f333191m1f2nTJliuHr62v73D179jTat29vGIZh1KpVy4iOjs63ftOmTY0HH3zQNv/cc88ZAQEBRk5Ojl2//v37G2XLlrV9BwcOHDBef/11w2KxGM2aNbP1u3SMHE0NGjS45ucBShIuSwElwNSpU5WYmKjExETNnTtX7du318MPP6xPPvnErp+3t7ftz6dOnVJ6erruuusubd++Pd8227Vrp0aNGl1z35fugrpyEOru3btVuXJlu+nPP/8s1D6cqTMsLEyhoaG2+Zo1a6p79+5as2aNcnNz7fo+9thjdvN33XWX/vzzz6veybV161YdP35cjz/+uN14oOjoaDVs2FArVqwocN3C6tWrl/766y8tX75cZ86c0fLly696SeqHH37Q7t27FRMTY2uLiYnRH3/8oTVr1uTrf/bsWdt3UK9ePT333HMKCwvT0qVL8/VdsmSJ7Wfp0jR79uwb/oyAO+GyFFACtGnTxm5AcUxMjFq2bKlhw4apS5cuKlOmjCRp+fLl+r//+z/t3LnT7jZgR+NkQkJCCrVvX19fSVJmZqZde7169WzjSObMmaOPPvqo0Ptwps769evna7vlllt07tw5nThxQkFBQbb2mjVr2vWrUKGCpIsBys/Pz2EtBw8elCQ1aNAg37KGDRs6vI3bWZUrV1aHDh00b948nTt3Trm5ufrXv/5VYP+5c+eqbNmyqlOnjg4cOCDp4l1XtWvX1scff5zv0p2Xl5c+//xzSRfvnAoJCVGNGjUcbrtt27YMKIbpEW6AEsjDw0Pt27fX5MmT9csvv6hx48batGmTunXrprZt2+q9995T1apVVbp0ac2ePVvz5s3Lt43Lz55cTcOGDSVJe/bsUffu3W3t5cqVs90OXVAAcLQPZ+t0RkFjggzDuKHtFoU+ffpo8ODBSktLU1RUVIFjXAzD0Pz583X27FmHZ72OHz+uzMxMuzNpnp6ehb41Hfg7INwAJdSFCxck/e+MypIlS+Tl5aU1a9bYPTvlRi853HXXXfL391dCQoJGjx4tD48bu5rtbJ2//PJLvraff/5ZPj4+qly58g3VIkm1atWSJO3fv19333233bL9+/fblt+o++67T48++qi+/fZbLViwoMB+l55/88orr+jWW2+1W3bq1Ck98sgjWrZsWb7B5AD+hzE3QAmUk5OjL774QmXKlLH9AvT09JTFYrEbh5KcnKxly5bd0L58fHw0atQo7dmzR88++6zDsyDOnBlxts6kpCS7sTiHDh3Sp59+qo4dOzp995YjrVu3VmBgoKZPn253iWzVqlXat29fvktA16tcuXKaNm2aXnrpJXXt2rXAfpcuST399NP617/+ZTcNHjxY9evX18cff1wkNQFmxZkboARYtWqVfvrpJ0kXL0vMmzdPv/zyi5599lnbWJLo6Gi9/fbb6tSpk/r06aPjx49r6tSpqlevnn744Ycb2v+zzz6rffv26c0339QXX3yh+++/XzVq1NCpU6e0fft2LVq0SIGB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XX5+fkVWe0lT+9kVri5ByeOiXV0CAKCEcOb3t1uNuUlPT5ckVaxYscA+SUlJ6tChg11bZGSkkpKSHPbPyspSRkaG3QQAAMzLbcJNXl6ehg8frn/84x9q0qRJgf3S0tJUpUoVu7YqVaooLS3NYf+4uDj5+/vbpuDg4CKtGwAAuBe3CTdDhw7Vnj17lJCQUKTbHT16tNLT023ToUOHinT7AADAvZRydQGSNGzYMC1fvlwbN25UjRo1rto3KChIx44ds2s7duyYgoKCHPa3Wq2yWq1FVisAAHBvLj1zYxiGhg0bpqVLl2rdunUKCQm55jphYWFau3atXVtiYqLCwsKKq0wAAFCCuPTMzdChQzVv3jx9+umn8vX1tY2b8ff3l7e3tySpX79+ql69uuLi4iRJTz75pNq1a6cJEyYoOjpaCQkJ2rp1q2bMmOGyz4Hi4Q53dEnc1QUAJY1Lz9xMmzZN6enpioiIUNWqVW3TggULbH1SUlKUmppqmw8PD9e8efM0Y8YMNW/eXIsXL9ayZcuuOggZAAD8fbj0zE1hHrGzfv36fG09e/ZUz549i6EiAABQ0rnN3VIAAABFgXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMpZSrCwAA/L3VfnaFq0tQ8rhoV5eAIsSZGwAAYCqEGwAAYCpOh5tDhw7p8OHDtvktW7Zo+PDhmjFjRpEWBgAAcD2cDjd9+vTRV199JUlKS0vTvffeqy1btuj555/XK6+8UuQFAgAAOMPpcLNnzx61adNGkrRw4UI1adJEmzdv1scff6z4+Piirg8AAMApToebnJwcWa1WSdKXX36pbt26SZIaNmyo1NTUoq0OAADASU6Hm8aNG2v69OnatGmTEhMT1alTJ0nS0aNHValSpSIvEAAAwBlOh5vx48fr/fffV0REhGJiYtS8eXNJ0meffWa7XAUAAOAqTj/ELyIiQn/88YcyMjJUoUIFW/sjjzwiHx+fIi0OAADAWdf1nBvDMLRt2za9//77OnPmjCSpTJkyhBsAAOByTp+5OXjwoDp16qSUlBRlZWXp3nvvla+vr8aPH6+srCxNnz69OOoEAAAoFKfP3Dz55JNq3bq1Tp06JW9vb1v7fffdp7Vr1xZpcQAAAM5y+szNpk2btHnzZpUpU8auvXbt2jpy5EiRFQYAAHA9nD5zk5eXp9zc3Hzthw8flq+vb5EUBQAAcL2cDjcdO3bUpEmTbPMWi0WZmZkaO3asOnfuXJS1AQAAOM3py1ITJkxQZGSkGjVqpPPnz6tPnz765ZdfFBAQoPnz5xdHjQAAAIXmdLipUaOGdu3apYSEBP3www/KzMxUbGysHnzwQbsBxgAAAK7gdLiRpFKlSqlv375FXQsAAMANczrczJkz56rL+/Xrd93FAAAA3Cinw82TTz5pN5+Tk6Nz587ZnlBMuAEAAK7k9N1Sp06dspsyMzO1f/9+3XnnnQwoBgAALndd75a6Uv369TVu3Lh8Z3UAAAButiIJN9LFQcZHjx4tqs0BAABcF6fH3Hz22Wd284ZhKDU1VVOmTNE//vGPIisMAADgejgdbnr06GE3b7FYVLlyZd19992aMGFCUdUFAABwXZwON3l5ecVRBwAAQJEosjE3AAAA7qBQZ25GjhxZ6A2+/fbb110MAADAjSpUuNmxY0ehNmaxWJza+caNG/Xmm29q27ZtSk1N1dKlS/ON6bnc+vXr1b59+3ztqampCgoKcmrfAADAnAoVbr766qti2fnZs2fVvHlzDRo0SP/85z8Lvd7+/fvl5+dnmw8MDCyO8gAAQAl0XS/OLCpRUVGKiopyer3AwECVL1++6AsCAAAl3nWFm61bt2rhwoVKSUlRdna23bJPPvmkSAq7mhYtWigrK0tNmjTRSy+9dNXn62RlZSkrK8s2n5GRUez1AQAA13H6bqmEhASFh4dr3759Wrp0qXJycrR3716tW7dO/v7+xVGjTdWqVTV9+nQtWbJES5YsUXBwsCIiIrR9+/YC14mLi5O/v79tCg4OLtYaAQCAazl95ub111/XxIkTNXToUPn6+mry5MkKCQnRo48+qqpVqxZHjTYNGjRQgwYNbPPh4eH69ddfNXHiRH300UcO1xk9erTd3V4ZGRkEHAAATMzpMze//vqroqOjJUllypTR2bNnZbFYNGLECM2YMaPIC7yWNm3a6MCBAwUut1qt8vPzs5sAAIB5OR1uKlSooDNnzkiSqlevrj179kiSTp8+rXPnzhVtdYWwc+fOYj9jBAAASg6nL0u1bdtWiYmJatq0qXr27Kknn3xS69atU2Jiou655x6ntpWZmWl31uX333/Xzp07VbFiRdWsWVOjR4/WkSNHNGfOHEnSpEmTFBISosaNG+v8+fP68MMPtW7dOn3xxRfOfgwAAGBShQ43e/bsUZMmTTRlyhSdP39ekvT888+rdOnS2rx5s+6//3698MILTu1869atdg/luzQ2pn///oqPj1dqaqpSUlJsy7Ozs/XUU0/pyJEj8vHxUbNmzfTll186fLAfAAD4eyp0uGnWrJluu+02Pfzww3rggQckSR4eHnr22Weve+cREREyDKPA5fHx8Xbzo0aN0qhRo657fwAAwPwKPeZmw4YNaty4sZ566ilVrVpV/fv316ZNm4qzNgAAAKcVOtzcddddmjVrllJTU/Xuu+8qOTlZ7dq10y233KLx48crLS2tOOsEAAAoFKfvlipbtqwGDhyoDRs26Oeff1bPnj01depU1axZU926dSuOGgEAAArN6XBzuXr16um5557TCy+8IF9fX61YsaKo6gIAALgu1/3izI0bN2rWrFlasmSJPDw81KtXL8XGxhZlbQAAAE5zKtwcPXpU8fHxio+P14EDBxQeHq533nlHvXr1UtmyZYurRgAAgEIrdLiJiorSl19+qYCAAPXr10+DBg2ye88TAACAOyh0uCldurQWL16sLl26yNPTszhrAgAAuG6FDjefffZZcdYBAABQJG7obikAAAB3Q7gBAACmQrgBAACmQrgBAACmUuhw8/jjjyszM9M2P3/+fJ09e9Y2f/r0aXXu3LloqwMAAHBSocPN+++/r3PnztnmH330UR07dsw2n5WVpTVr1hRtdQAAAE4qdLgxDOOq8wAAAO6AMTcAAMBUCDcAAMBUnHpx5pgxY+Tj4yNJys7O1muvvSZ/f39JshuPAwAA4CqFDjdt27bV/v37bfPh4eH67bff8vUBAABwpUKHm/Xr1xdjGQAAAEXDqctSGRkZ+u6775Sdna02bdqocuXKxVUXAADAdSl0uNm5c6c6d+6stLQ0SZKvr68WLlyoyMjIYisOAADAWYW+W+qZZ55RSEiIvvnmG23btk333HOPhg0bVpy1AQAAOK3QZ262bdumL774Qq1atZIkzZo1SxUrVlRGRob8/PyKrUAAAABn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rVpVdevWdZvv3FENWVlZatGixVX7uLLO2rVrF/qzuPp4rlixQrfffrs8PT1lsVgUEhLiNjWuX7++wH8H/vnPf7pNnZL0888/q3v37goICJCfn5+qVKnidt/5pX9/atSoofLly6tSpUp65JFHlJmZ6Va/cxxJSUlRdHS0fHx8FBgYqKeffloXLlxw2LeoEG5uQHBwsBISEvTXX3/Z2s6fP6958+apZs2a+frPnDlT//73v7Vx40YdPXrU4Ta//PJLpaamas2aNcrMzFRUVJROnz5tWz548GClpqbaTW+88YZteXZ2tnr27KkhQ4a4VZ29evVSjRo1lJCQoF27dikvL0/vv/++tm/frtzcXHl4eGj79u039Xj99NNPtjr27t2riRMnavr06Xruuecc7uvKY5mbmytvb28NGTJEnp6e8vb2vinH8srvvH379lq4cKH279+vJUuW6MyZMypTpozLv/Mr67xk1KhRtsenBwUFuWWdr7zyisOfXXeqc8mSJXrooYc0cOBAde/eXUFBQTp+/Ljb1BgeHp5vWf369eXp6al169a5TZ2S1KVLF124cEHr1q3Ttm3bVKFCBVksFs2fP99t6jx37pwsFotOnDihDRs2aPXq1dq7d68eeught/udc7nc3FxFR0crOztbmzdv1n//+1/Fx8drzJgxDvsXGQPXpX///kb37t2NJk2aGHPnzrW1f/zxx0azZs2M7t27G/3797e1nzlzxihXrpzx008/Gb179zZee+01u+39/vvvhiRjx44dtrZvvvnGkGSsXr3aMAzDaNeunfHkk08Wqr7Zs2cb/v7+blPntepo3LixUa5cOZcdr0veeOMNIyQkxOGyq32GChUqGEFBQS79zi+5++67DUlG48aN3e5nc+XKlUbDhg2NvXv3GpKMiIgIl/9sXqlWrVrGxIkTbfPu8nfocjk5OUb16tWNDz/80G1rvFJ2drZhtVqNhg0bulWdJ06cMCQZGzdutLX16dPHkGTUrl3bbeoMCwszypQpY3fsfvjhB0OS0bBhQ5d/x5d+51xp5cqVhoeHh5GWlmZrmzZtmuHn52dkZWUVatvXgzM3N2jQoEGaPXu2bX7WrFm2V0dcbuHChWrYsKEaNGigvn37atasWdd8bfulMwEFXSYpiXUWVEdOTo7dQ6NcdbzS09NVsWJFpz9DvXr18vVzxWc4efKk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5eTk2AbaXu7ChQuaM2eOJkyYoJ07d9qmXbt2qVq1avkG7wYHB6tu3boOg8316tWrlzw8PDRv3jzNmTNHgwYNksVikSR988036t69u/r27avmzZurTp06+vnnn53ex+bNm1WrVi09//zzat26terXr6+DBw/m65eSkmJ3p9i3334rDw8PNWjQIF/fRo0ayWq1KiUlRfXq1bObgoODbf0qV66s/v37a+7cuZo0aZJmzJjhdP3A3x1nbgDYeHp6at++fbY/X2n58uU6deqUYmNj7c7QSNL999+vmTNnFvicGkfOnTuntLQ0uzar1aoKFSoUuE65cuXUu3dvjR49WhkZGXbP4Klfv74WL16szZs3q0KFCnr77bd17NgxNWrUqNA1XdpOSkqKEhISdNttt2nFihW2y3CX8/LyUv/+/fXWW28pIyNDTzzxhHr16pXvkpR0cYDyf/7zH40YMUJ5eXm68847lZ6erm+++UZ+fn7q37+/xowZo9DQUDVu3FhZWVlavny5br31VqdqB8CZGwBX8PPzK/B27JkzZ6pDhw75go10Mdxs3brVqQfpffDBB6patardFBMTc831YmNjderUKUVGRtpdHnvhhRfUqlUrRUZGKiIiQkFBQdf1hOBu3bppxIgRGjZsmFq0aKHNmzfrxRdfzNevXr16+uc//6nOnTurY8eOatasmd57770Ct/vqq6/qxRdfVFxcnG699VZ16tRJK1asUEhIiCSpTJkyGj16tJo1a6a2bdvK09NTCQkJTtcP/N1ZDOMa928CAACUIJy5AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApvL/s2EKz3IU2acAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, mape2_1, mape3, mape4, mape5, mape6, mape7, mape8, mape8_1, mape9, mape10]\n", + "\n", + "# List of corresponding labels for each MAPE value\n", + "labels = ['MAPE1', 'MAPE2', 'MAPE2_1', 'MAPE3', 'MAPE4', 'MAPE5', 'MAPE6', 'MAPE7', 'MAPE8', 'MAPE2_1', 'MAPE9', 'MAPE10']\n", + "\n", + "# Plotting the bar graph\n", + "plt.bar(labels, mape_values)\n", + "plt.xlabel('MAPE Variables')\n", + "plt.ylabel('MAPE Values')\n", + "plt.title('Bar Graph of MAPE')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bCF5ZehcARcw", + "outputId": "ed3103b5-2636-48c5-82ba-60f8b3dfd729" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Length of labels: 12\n", + "Length of mape_values: 10\n" + ] + } + ], + "source": [ + "print(\"Length of labels:\", len(labels))\n", + "print(\"Length of mape_values:\", len(mape_values))" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "ZDPV0M5rDTi6", + "outputId": "2b5b43fb-f025-41ff-dc55-6193541132e0" + }, + "outputs": [ + { + "data": { + "image/png": "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6dMHffr00Xv8lStXom7duliwYAEAoHHjxjh69CgWLVqEoKCgyiqTiIiIqqAqdU5OUlISAgMDtYYFBQUhKSnJRBURERGRuTLpnhxDpaenw93dXWuYu7s7srOzce/ePdjY2JSZJj8/H/n5+dL77OzsSq+TiIiITK9K7cmpiOjoaDg6OkovLy8vU5dEpSkUpnsRUdXCbQUZqEqFHA8PD2RkZGgNy8jIgIODg869OAAwdepUZGVlSa+rV68+iVLND8MEEdHThdv9qnW4KiAgAN98843WsPj4eAQEBJQ7jUqlgkqlquzSiMhcmXKDK4Tplk1Ept2Tk5OTg9OnT+P06dMA7l8ifvr0aaSmpgK4vxcmLCxMGn/s2LH4888/8e677+L8+fNYvnw5Nm/ejMmTJ5uifCIiIjJjJt2T8/PPP6Nbt27S+4iICABAeHg4YmJikJaWJgUeAKhbty727t2LyZMnY8mSJahduza++OILXj5ORGRMptr7xT1fZGQKIZ6uXpWdnQ1HR0dkZWXBwcHB1OU8Oea6y95c6yL5YB8znLmGHHOty1zJrO9X5Pe7Sp14TERERKQvhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlS1MXQEREVKXJ7GnfcsI9OURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkS5amLoCIDKRQmGa5Qjz8c3Oti4ieWtyTQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJsBEhGZgqlungjwBor01OCeHCIiIpIl7skxNt7anoiIyCxwTw4RERHJEvfkEOnC8yWIiKo87skhIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZMnnIWbZsGXx8fKBW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tRAREREZjV4hZ9euXejTpw+srKywa9euh477wgsvGKUwIiIioseh1yXkSqUS6enpcHNzg1JZ/rnKCoUCxcXFRi3Q2HgJuQlUxUsczbUugH3sQeZaF8A+ZijWZbiq2scqoCK/33rtydFoNDr/TURERGSuDL6EXJfbt28bYzZERERERmNwyJk3bx5iY2Ol94MGDYKLiwtq1aqFM2fOGLU4IiIioooyOOSsXLkSXl5eAID4+HgcOnQI+/fvR58+ffDOO+8YvUAiIiKiijD4EvL09HQp5OzZsweDBw9Gr1694OPjg/bt2xu9QCIiIqKKMHhPjrOzM65evQoA2L9/PwIDAwEAQgizv7KKiIiInh4G78l58cUXMXToUDRo0AA3b95Enz59AAC//PILfH19jV4gERERUUUYHHIWLVoEHx8fXL16FR9//DHs7OwAAGlpaRg3bpzRCyQiIiKqCL1uBignvBmgCVTFm1WZa10A+9iDzLUugH3MUKzLcFW1j1VApd0MkI91ICIioqqGj3UwNv5Po6yq+D8Nc60LYB97kLnWBbCPGYp1Ga6q9rEK4GMdiIiIiP6fUR7rQERERGRuDA45b7zxBj799NMyw5cuXYo333zTGDURERERPTaDQ862bdvQqVOnMsM7duyIrVu3GqUoIiIiosdlcMi5efMmHB0dywx3cHDAjRs3jFIUERER0eMyOOT4+vpi//79ZYbv27cP9erVM0pRRERERI/L4DseR0REYMKECcjMzET37t0BAAkJCViwYAEWL15s7PqIiIiIKsTgkPPKK68gPz8fH374IebMmQMA8PHxwYoVKxAWFmb0AomIiIgq4rEe65CZmQkbGxvp+VVVAW8GaAJV8WZV5loXwD72IHOtC2AfMxTrMlxV7WMVUJHf7wrdJ6eoqAiHDh1CXFwcSjLStWvXkJOTU5HZERERERmdwYerrly5gt69eyM1NRX5+fno2bMn7O3tMW/ePOTn52PlypWVUScRERGRQQzekzNp0iS0adMG//77L2xsbKThAwcOREJCglGLIyIiIqoog/fkHDlyBD/88AOsra21hvv4+OCff/4xWmFEREREj8PgPTkajUbnk8b//vtv2NvbG6UoIiIiosdlcMjp1auX1v1wFAoFcnJyEBkZib59+1aoiGXLlsHHxwdqtRrt27fH8ePH9Zpu06ZNUCgUGDBg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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], +======= + "id": "ZDPV0M5rDTi6", + "outputId": "9db63164-3f42-47be-d302-d80d381d9b91" + }, + "outputs": [], +>>>>>>> upstream/main + "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, precision2_1, precision3, precision4, precision5, precision6, precision7, precision8, precision8_1, precision9, precision10]\n", + "\n", + "# List of corresponding labels for each precision value\n", + "labels = ['Precision1', 'Precision2', 'Precision2_1', 'Precision3', 'Precision4', 'Precision5', 'Precision6', 'Precision7', 'Precision8', 'Precision8_1', '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" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 98, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "39LBleNeDeuw", +<<<<<<< HEAD + "outputId": "66c1cd08-96bb-46bb-afd3-7792e2b71345" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFVUlEQVR4nO3df3zO9eL/8ee1za7NMD83msUwSjKaH01Gq62hRDkSObZZOYo4dnxEYeQci/Krg/TD73OKQh3FEc1RiSizQsjv0WHzc2Njy/b+/uG767hs2DWba3t73G+363Zr773f1+u59/V2Xc/evy6LYRiGAAAATMLF2QEAAABKEuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGQLk1btw4WSwWnTp1qtTHWrNmjVq0aCEPDw9ZLBadO3eu1McsLRaLRePGjbP9vGDBAlksFh0+fNhpmYCSRLkByqD8D5urHz4+PgoLC9O///3v257n888/V9euXeXr6yt3d3dVr15dHTp00JQpU5SRkXHb89xup0+f1jPPPCNPT0/NmjVLixcvlpeXV6HzXvvaubm5yc/PT9HR0frtt99uc3LgzuTm7AAAru/1119XQECADMNQamqqFixYoC5duujzzz/XE088Uerj5+XlKTY2VgsWLND999+vl156Sf7+/jp//rw2b96s0aNHa/Xq1UpMTCz1LM70ww8/6Pz585owYYLCw8OLtEz+a3fp0iV9//33WrBggTZu3KidO3fKw8OjlBMDdzbKDVCGde7cWa1atbL9HBsbK19fX3300UclUm7y8vKUk5Nz3Q/byZMna8GCBRo2bJimTJkii8Vi+93QoUN1/PhxLVq06JbGKA/S0tIkSVWrVi3yMle/ds8//7xq1qypSZMmaeXKlXrmmWdKIyaA/4/DUkA5UrVqVXl6esrNzf7/S9566y21a9dONWrUkKenp4KDg7Vs2bICy1ssFg0ePFj//Oc/dd9998lqtWrNmjWFjpWVlaVJkybpvvvu05tvvmlXbPLVqVNHr7zySpHHKE7OJk2ayMPDQ8HBwfrmm28KzXru3DlFR0eratWq8vb2VkxMjLKysgpfidf45JNPFBwcLE9PT9WsWVN9+/a1O3z08MMPKyoqSpLUunVrWSwWRUdHF+m5rxYaGipJOnDggN30PXv26A9/+IOqV68uDw8PtWrVSitXriz0bxw2bJjq168vq9WqunXrql+/frbzjXJycjR27FgFBwfL29tbXl5eCg0N1X/+8x+HswLlHXtugDIsPT1dp06dkmEYSktL09///ndduHBBffv2tZtvxowZevLJJ/Xcc88pJydHS5YsUc+ePfXFF1/o8ccft5t3/fr1+vjjjzV48GDVrFlT9evXL3TsjRs36ty5cxo+fLhcXV0dyn29MRzJ+fXXX2vp0qUaMmSIrFarZs+erU6dOmnr1q1q1qyZ3bzPPPOMAgIClJCQoKSkJH3wwQfy8fHRpEmTbphzwYIFiomJUevWrZWQkKDU1FTNmDFD3333nbZv366qVavqtddeU5MmTfTee+/ZDjU1bNjQofUhyXaybrVq1WzTdu3apYceekh+fn4aOXKkvLy89PHHH6t79+5avny5nnrqKUnShQsXFBoaqt27d6t///564IEHdOrUKa1cuVLHjh1TzZo1lZGRoQ8++EC9e/fWCy+8oPPnz2vu3LmKjIzU1q1b1aJFC4czA+WWAaDMmT9/viGpwMNqtRoLFiwoMH9WVpbdzzk5OUazZs2MRx55xG66JMPFxcXYtWvXTTPMmDHDkGR89tlndtMvX75snDx50u6Rl5dXpDEcySnJ+PHHH23Tjhw5Ynh4eBhPPfWUbVp8fLwhyejfv7/d8k899ZRRo0aNG/59OTk5ho+Pj9GsWTPj4sWLtulffPGFIckYO3asbVr+6/HDDz/c8Dmvnverr74yTp48aRw9etRYtmyZUatWLcNqtRpHjx61zfvoo48a999/v3Hp0iXbtLy8PKNdu3ZGYGCgbdrYsWMNScaKFSsKjJe/7i9fvmxkZ2fb/e7s2bOGr69vgfUjyYiPjy+Q+dChQzf9+4DygMNSQBk2a9YsrVu3TuvWrdM//vEPhYWF6fnnn9eKFSvs5vP09LT999mzZ5Wenq7Q0FAlJSUVeM6OHTuqadOmNx07/yqoSpUq2U3fsWOHatWqZfc4ffp0kcZwJGdISIiCg4NtP999993q1q2bvvzyS+Xm5trNO3DgQLufQ0NDdfr06RteyfXjjz8qLS1NL730kt35QI8//rjuuecerVq16rrLFkV4eLhq1aolf39//eEPf5CXl5dWrlypunXrSpLOnDmj9evX65lnntH58+d16tQpnTp1SqdPn1ZkZKT27dtnOzy2fPlyBQUF2fbkXC3/cKGrq6vc3d0lXTnP6cyZM7p8+bJatWpV6PoFzIzDUkAZ1qZNG7sTinv37q2WLVtq8ODBeuKJJ2wfZl988YX++te/Kjk5WdnZ2bb5CztPJiAgoEhjV65cWdKVQyJXa9SokdatWydJWrRokRYvXlzkMRzJGRgYWGBa48aNlZWVpZMnT6p27dq26XfffbfdfPmHfs6ePasqVaoUmuXIkSOSpCZNmhT43T333KONGzcWulxRzZo1S40bN1Z6errmzZunb775Rlar1fb7/fv3yzAMjRkzRmPGjCn0OdLS0uTn56cDBw6oR48eNx1z4cKFmjJlivbs2aPff//dNr2orzlgFpQboBxxcXFRWFiYZsyYoX379um+++7Tt99+qyeffFIdOnTQ7NmzVadOHVWoUEHz58/Xhx9+WOA5rt57ciP33HOPJGnnzp3q1q2bbXqlSpVsl0NfrwAUNoajOR1xvXOCDMO4pee9FVcX0+7du6t9+/bq06eP9u7dq0qVKikvL0+SNHz4cEVGRhb6HI0aNSryeP/4xz8UHR2t7t276//+7//k4+MjV1dXJSQkFDiJGTA7yg1Qzly+fFnS//aoLF++XB4eHvryyy/t9gzMnz//lsYJDQ2Vt7e3lixZolGjRsnF5daOYjuac9++fQWm/frrr6pYsaJq1ap1S1kkqV69epKkvXv36pFHHrH73d69e22/Lwn5JSMsLEwzZ87UyJEj1aBBA0lShQoVbnrvnIYNG2rnzp03nGfZsmVq0KCBVqxYYbcnLD4+/tb/AKCc4ZwboBz5/ffftXbtWrm7u+vee++VdOWD02Kx2J2HcvjwYX322We3NFbFihU1YsQI7dy5UyNHjix0L4gje0Yczbl582a7c0WOHj2qf/3rX3rsscccvnqrMK1atZKPj4/mzJljd4js3//+t3bv3l3g6q1b9fDDD6tNmzaaPn26Ll26JB8fHz388MN69913dfz48QLznzx50vbfPXr00E8//aRPP/20wHz5r0H+Orn6NdmyZYs2b95con8HUB6w5wYow/79739rz549kq6cf/Hhhx9q3759GjlypO1ckscff1xTp05Vp06d1KdPH6WlpWnWrFlq1KiRfv7551saf+TIkdq9e7fefPNNrV27Vj169FDdunV19uxZJSUl6ZNP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g5WYmGiblpeXp8TERIWEhBSY/5577tGOHTuUnJxsezz55JMKCwtTcnIye2QAAIDj3y1V0uLi4hQVFaVWrVqpTZs2mj59ujIzMxUTEyNJ6tevn/z8/JSQkCAPDw81a9bMbvmqVatKUoHpAADgzuT0ctOrVy+dPHlSY8eO1YkTJ9SiRQutWbPGdpJxSkqKXFycuoMJAACUI8X+4szyii/OvP3K4xe7ldVcEtvYtcpqLoltzFHkclx53caK47Z8cSYAAEBZRLkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmUibKzaxZs1S/fn15eHiobdu22rp163Xnff/99xUaGqpq1aqpWrVqCg8Pv+H8AADgzuL0crN06VLFxcUpPj5eSUlJCgoKUmRkpNLS0gqdf8OGDerdu7f+85//aPPmzfL399djjz2m33777TYnBwAAZZHFMAzDmQHatm2r1q1ba+bMmZKkvLw8+fv76+WXX9bIkSNvunxubq6qVaummTNnql+/fjedPyMjQ97e3kpPT1eVKlVuOf+1LCX+jEVzsxfRWbmkG2cjV0Fl9bUkl+PYxhxDLseV122sOBz5/HbqnpucnBxt27ZN4eHhtmkuLi4KDw/X5s2bi/QcWVlZ+v3331W9evVCf5+dna2MjAy7BwAAMC+nlptTp04pNzdXvr6+dtN9fX114sSJIj3HK6+8orvuusuuIF0tISFB3t7etoe/v/8t5wYAAGWX08+5uRVvvPGGlixZok8//VQeHh6FzjNq1Cil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burRo4d27dqlrKwsRURE2M2fk5Ojli1bSpKSk5MVGhpq+z+Va6Wmpmr06NHasGGD0tLSlJubq6ysLKWkpDicLSoqSkePHi31bJmZmbZxAwMDFRYWpgYNGqhz586Srpxkd+24+ScQxsfHa9OmTaW6Tq62c+dOdevWTfHx8dq/f7/Dr2VWVpaM/39D79J8La/ONXHiROXm5qpfv34aNmyYU7exsLAw+fv767ffflOdOnXk5uamjh072tZNWdn281/Lu+66S5MnT3b6OmvevLmmTp2qiIgI3X333Ro1apTat2+vDh06KDIy0nZo73bnunp9nTlzRp9//rkeffRRvffee05/r7h48aLthPrGjRvr3nvv1aJFi9StW7dS24YuXryo2NhYPfTQQ/roo4+Um5urt956S4mJierYsaPefffdIr9XXLx40fZt2iX5OoaFhem1115TWFiYunbtKh8fH02YMEHZ2dl68803FRoaKkm2PSPffvutgoODSzxHeUC5cZCXl5caNWok6cpu1KCgIM2dO9f2xZ2rVq2Sn5+f3TL5h0A8PT1v+NxRUVE6ffq0ZsyYoXr16slqtSokJKTAuR5FydatWzdNnjy51LPl5eXZjTt48GDFx8dr6dKltmWvHnffvn3q27ev+vTpo9GjR6tHjx6luk7y/fLLL3r00Uc1YMAAjR49WtHR0Q6/ls8995ztd6X5Wl6d66OPPlJQUJBOnjypESNGaODAgVq0aJGaN29ut8zt2Ma8vLyUlJSkHTt2SLpyrsG8efNsv+/Ro4fGjBlz23PlZ7v2tXzkkUeUmpoqyXn/Lr28vGzbzAcffKDHH3/cbhsbNGhQgZPEb1euq9dXzZo15e/vr3r16kly7nvFd999pylTpmjz5s1ycXGR1WqVr6+vKlaseMMP2lvdhj788EMdPnzYNm7+tIoVKyojI8Oh94oRI0YoMzPzltZXYbm9vLxUv359SdK4ceMUFRWluXPnqkePHnrzzTe1bNkyNWnSRMeOHVPnzp318ccfq3Xr1iWeo7hq165t+zeZL//n/HOxSgrl5ha4uLjo1VdfVVxcnH799VdZrValpKTY/m/2Ws2bN9fChQv1+++/F9qev/vuO82ePVtdunSRJB09etR23NZR+ZeCjx49ulSz5V+WmC9/nQwdOlTSlf+DyB93165dio6OVmxsrO3yv9uxTnbt2qVHHnlEUVFR+tvf/lboPEV5LT09PVW5cuXblvvaXPPnz5d05f4STz/9dKHzl3au5cuX6+LFi5Kk1atXa+LEiUpPT5e7u7vatGlj+wC43bmulr/OBgwYoKpVq+rixYtO/Xf50EMPSbpS7PNfy++//96W1dnrLCsrS1lZWcrNzVXTpk2d/l5RuXJlubu7KzAw0HbZ+OXLl+Xi4qI9e/aU2vrIysqSi4uLbcz8jBaLxbbH9urcN3qvqFKlivLy8m5pfd1MYTmysrLUrFkzffzxx/L391e3bt1sewZv57/B6wkJCdFrr71ml2HdunVq0qSJqlWrVqJjcULxLerZs6dcXV317rvvavjw4Ro2bJgWLlyoAwcOKCkpSX//+9+1cOFCSbLdp+TZZ5/Vjz/+qH379mnx4sXau3evJCkwMFCLFy/W7t27tWXLFj333HM3bdvX2r9/v5KTk3XixAlZrVbl5eUpPj5ew4YNu23Z8teJJNvhlL/97W/q0KGDgoOD5e3trbffflsnTpzQs88+W6rrZOfOnQoLC9Njjz2muLg4nThxQidOnCj0/j/Xey0///xzffTRRzp48KC2bNmi5ORkRURElGru1atXa/78+dq5c6dat26t33//XVFRUapbt64mTpzotG2sYcOGatasmZo1a6a4uDjbG9TLL7+s+Ph4p+U6ceKEPvjgA+3cuVP79+/X6dOnlZmZqVatWjn932Xjxo3VrVs3DR06VH5+fsrLy1Pnzp1Vs2ZNzZs3z6nvF5Jse04qVap029/HCnuvyMzM1JkzZ/TMM8/otdde08SJExUTEyMPDw9dvny51NZHRESEzp49q0GDBmn37t3atWuXYmJiZLFYVLNmzUJzX7u+1qxZo48++kjbtm3T3r17lZycrI4dO5ba65ifo3fv3urXr5+GDBmip59+WgkJCRo6dKhmz57ttM+fixcvKjk5WcnJyba9P3369JG7u7tiY2O1a9cuLV26VDNmzFBcXJxD4xRJiZ7BY3JRUVFGt27dCkxPSEgwatWqZVy4cMGYPn260aRJE6NChQpGrVq1jMjISLuTBn/66SfjscceMypWrGhUrlzZCA0NNQ4cOGAYhmEkJSUZrVq1Mjw8PIzAwEDjk08+MerVq2dMmzbNtrxucFJlt27djI4dO9qdhJr/2LVrV6lka926tW2dXJ1txIgRhiRj06ZNxvTp040aNWoUmqtevXqltk4M48qJbYWN6+XlVeTX8nbm7tq1q9GtWzdj/fr1RkhIiOHt7W14eHgYNWrUMCpWrGgcO3bMKdtYfq5rvfDCC4Ykp+XK3/ZDQkKMFi1aGJUqVTK8vLyMoKAgo3v37k79d3n1OktPTzf69+9vVK1a1fD09DTc3d2NPXv2OD2XYRhGSEiI0adPn1J/Hyvqe0WTJk0MNzc3o0KFCoabm5tRqVIl45FHHjE2b95cqu8VhmEYa9euNR566CHD29vbqFatmvHII48YXbp0uaX3CkklkjssLMzo1q1bgdwJCQlGhQoVjCpVqhhubm6Gh4eH4ebmdlv/Dea73ufPoUOH7DK0b9/esFqthp+fn/HGG28UWLclwfL/AwMAAJgCh6UAAICpUG5wR7vvvvtUqVKlQh///Oc/nR0PQBnRuXPn675XTJw40dnxcA0OS+GOduTIket+X42vr6/t6igAd7bffvvNdqXgtapXr67q1avf5kS4EcoNAAAwFQ5LAQAAU6HcAAAAU6HcAAAAU6HcAHA6i8Wizz77TNKVr5ewWCxKTk6+7TmKM3Z0dLS6d+9+w3kefvhh/fnPf76lbACKjnID3MGio6NlsVhksVhUoUIFBQQEaMSIEYV+PUVZcf/99xf4ssl8ixcvltVqLfZ34vj7++v48eO2L0QEUD5RboA7XKdOnXT8+HEdPHhQ06ZN07vvvqv4+Hhnx7qu2NhYLVmypNDLcufPn68nn3yywHcBFUVOTo5cXV1Vu3ZtubnxncJAeUa5Ae5wVqtVtWvXlr+/v7p3767w8HCtW7fO9vu8vDwlJCQoICBAnp6eCgoK0rJly+yeY9euXXriiSdUpUoVVa5cWaGhoTpw4IAk6YcfflBERIRq1qwpb29vdezYUUlJScXO27dvX128eFHLly+3m37o0CFt2LBBsbGxOnDggLp16yZfX19VqlRJrVu31ldffWU3f/369TVhwgT169dPVapU0YABAwoclsrNzVVsbKztb2/SpIlmzJhRaK7x48erVq1aqlKligYOHGj7ssDCZGdna/jw4fLz85OXl5fatm2rDRs22H5/5MgRde3aVdWqVZOXl5fuu+8+rV69ungrDLgDUW4A2OzcuVObNm2Su7u7bVpCQoIWLVqkOXPmaNeuXRo2bJj69u2rr7/+WtKVm5t16NBBVqtV69ev17Zt29S/f39dvnxZknT+/HlFRUVp48aN+v777xUYGKguXbro/PnzxcpYs2ZNdevWTfPmzbObvmDBAtWtW1ePPfaYLly4oC5duigxMVHbt29Xp06d1LVrV6WkpNgt89ZbbykoKEjbt2/XmDFjCoyVl5enunXr6pNPPtEvv/yisWPH6tVXX9XHH39sN19iYqJ2796tDRs26KOPPtKKFSs0fvz46/4NgwcP1ubNm7VkyRL9/PPP6tmzpzp16qR9+/ZJkgYNGqTs7Gx988032rFjhyZNmqRKlSoVa30Bd6RS+TpOAOVCVFSU4erqanh5eRlWq9WQZLi4uBjLli0zDMMwLl26ZFSsWNHYtGmT3XKxsbFG7969DcMwjFGjRhkBAQFGTk5OkcbMzc01KleubHz++ee2abrJtw1fa82aNYbFYjEOHjxoGIZh5OXlGfXq1TNGjx593WXuu+8+4+9//7vt53r16hndu3e3m6coYw8aNMjo0aOH7eeoqCijevXqRmZmpm3aO++8Y1SqVMnIzc01DOPKtyUPHTrUMAzDOHLkiOHq6mr89ttvds/76KOPGqNGjTIMwzDuv/9+Y9y4cdfNAODGOLAM3OHCwsL0zjvvKDMzU9OmTZObm5t69OghSdq/f7+ysrIUERFht0xOTo5atmwpSUpOTlZoaKgqVKhQ6POnpqZq9OjR2rBhg9LS0pSbm6usrKwCe1EcERERobp162r+/Pl6/fXXlZiYqJSUFMXExEiSLly4oHHjxmnVqlU6fvy4Ll++rIsXLxYYs1WrVjcda9asWZo3b55SUlJ08eJF5eTkqEWLFnbzBAUFqWLFirafQ0JCdOHCBR09elT16tWzm3fHjh3Kzc1V48aN7aZnZ2erRo0akqQhQ4boxRdf1Nq1axUeHq4ePXqoefPmRV4/wJ2OcgPc4by8vNSoUSNJ0rx58xQUFKS5c+cqNjZWFy5ckCStWrVKfn5+dstZrVZJkqen5w2fPyoqSqdPn9aMGTNUr149Wa1WhYSE3PCclJtxcXFRdHS0Fi5cqHHjxmn+/PkKCwtTgwYNJEnDhw/XunXr9NZbb6lRo0by9PTUH/7whwJjenl53XCcJUuWaPjw4ZoyZYpCQkJUuXJlvfnmm9qyZUuxs1+4cEGurq7atm2bXF1d7X6Xf+jp+eefV2RkpFatWqW1a9cqISFBU6ZM0csvv1zscYE7CeUGgI2Li4teffVVxcXFqU+fPmratKmsVqtSUlLUsWPHQpdp3ry5Fi5cqN9//73QvTffffedZs+erS5dukiSjh49WuxLta8WExOjv/71r1qxYoU+/fRTffDBB3ZjRkdH66mnnpJ0pVAcPnzY4TG+++47tWvXTi+99JJtWv6J0lf76aefdPHiRVvR+/7771WpUiX5+/sXmLdly5bKzc1VWlqaQkNDrzu2v7+/Bg4cqIEDB2rUqFF6//33KTdAEXFCMQA7PXv2lKurq2bNmqXKlStr+PDhGjZsmBYuXKgDBw4oKSlJf//737Vw4UJJV06OzcjI0LPPPqsff/xR+/bt0+LFi7V3715JUmBgoBYvXqzdu3dry5Yteu655266t6coAgIC9Mgjj2jAgAGyWq16+umnbb8LDAzUihUrlJycrJ9++kl9+vRRXl6ew2MEBgbqxx9/1Jdffqlff/1VY8aM0Q8//FBgvpycHMXGxuqXX37R6tWrFR8fr8GDB8vFpeBbbOPGjfXcc8+pX79+WrFihQ4dOqStW7cqISFBq1atkiT9+c9/1pdffqlDhw4pKSlJ//nPf3Tvvfc6nB+4U1FuANhxc3PT4MGDNXnyZGVmZmrChAkaM2aMEhISdO+996pTp05atWqVAgICJEk1atTQ+vXrdeHCBXXs2FHBwcF6//33bXtx5s6dq7Nnz+qBBx7QH//4Rw0ZMkQ+Pj4lkjU2NlZnz55Vnz595OHhYZs+depUVatWTe3atVPXrl0VGRmpBx54wOHn/9Of/qSnn35avXr1Utu2bXX69Gm7vTj5Hn30UQUGBqpDhw7q1auXnnzySY0bN+66zzt//nz169dPf/nLX9SkSRN1795dP/zwg+6++25JVy5BHzRokG19N27cWLNnz3Y4P3CnshiGYTg7BAAAQElhzw0AADAVyg0AADAVyg0AADAVyg0AADAVyg0AADAVyg0AADAVyg0AADAVyg0AADAVyg0AADAVyg0AADAVyg0AADAVyg0AADCV/wcuiWwhrgYr0QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], +======= + "outputId": "3c6c40bc-f1da-44fb-da14-25ec6d6cf278" + }, + "outputs": [], +>>>>>>> upstream/main + "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, recall2_1, recall3, recall4, recall5, recall6, recall7, recall8, recall8_1, recall9, recall10]\n", + "\n", + "# List of corresponding labels for each recall value\n", + "labels = ['Recall1', 'Recall2', 'Recall2_1', 'Recall3', 'Recall4', 'Recall5', 'Recall6', 'Recall7', 'Recall8', 'Recall8_1', '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" + ] + }, + { + "cell_type": "code", +<<<<<<< HEAD + "execution_count": 98, +======= + "execution_count": null, +>>>>>>> upstream/main + "metadata": { + "id": "13cZXvb0DsvK" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true + }, + "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", +<<<<<<< HEAD + "version": "3.12.2" +======= + "version": "3.12.1" +>>>>>>> upstream/main + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Python File/Stock_Price_Prediction_BACKUP_20502.ipynb b/Python File/Stock_Price_Prediction_BACKUP_20502.ipynb new file mode 100644 index 0000000..c542367 --- /dev/null +++ b/Python File/Stock_Price_Prediction_BACKUP_20502.ipynb @@ -0,0 +1,7141 @@ +{ + "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", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SOQbXSiB-g5G", + "outputId": "55ee6ec8-9146-4ebf-c2fe-b4b06bc3a5c4" + }, + "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": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "Sc4id6VxL8BS", + "outputId": "78207ea2-5b80-47a2-a1b1-0548765b6455" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateOpenHighLowCloseAdj CloseVolume
001-01-199618.69114718.97892218.54018418.82324012.40993143733533.0
102-01-199618.89400518.96476717.73819218.22410612.01493156167280.0
203-01-199618.32789218.56848917.64383917.73819211.69457768296318.0
304-01-199617.50231217.83254217.22397217.67686311.65414286073880.0
405-01-199617.73819217.78536617.45985217.57779311.58882776613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Print first 5 rows of dataset\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "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": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "pqbTBdnBOKJc", + "outputId": "42ed663c-ae0f-43d7-a7bd-18bb37dfef6f" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolume
018.69114718.97892218.54018418.82324043733533.0
118.89400518.96476717.73819218.22410656167280.0
218.32789218.56848917.64383917.73819268296318.0
317.50231217.83254217.22397217.67686386073880.0
417.73819217.78536617.45985217.57779376613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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": 10, + "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": 11, + "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": 12, + "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": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "997ZEgibCZIO", + "outputId": "879af72c-3e7c-4b8c-ba28-452fa8ba3cd6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5659, 4)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bmtt76RuCeyG", + "outputId": "855f34ec-4914-4e1f-c9b1-6f8753612100" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1415, 4)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CeJkUJ92Ciqd", + "outputId": "21c5949c-e787-40df-b816-7cc9e830e401" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5659,)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7HGC7VuTCjWc", + "outputId": "cbda22d6-bec9-45d7-80ac-c74ad14b7c0d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1415,)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c6Ek8jRlO2_I" + }, + "source": [ + "## 1. LINEAR REGRESSION" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "id": "RdZ1SpzdMHAJ" + }, + "outputs": [], + "source": [ + "# Create a linear regression model\n", + "model1 = LinearRegression()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "id": "mPM035IzMY04", + "outputId": "084d9520-1d31-4287-a9d1-6f9eeea60f9b" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Close
5286257.350006
3408129.464996
5477279.350006
6906588.500000
53021.644367
\n", + "

" + ], + "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": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "qBhQ9HbYMI3d", + "outputId": "daac2bc7-a480-4013-8e06-717bb8c1fa65" + }, + "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": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model1.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "id": "X269co2kMS4z" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred1 = model1.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "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": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dEi49xtEOtne", + "outputId": "60b53406-81c4-4531-cbb0-77b9ffde8890" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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": 23, + "metadata": { + "id": "o7K9r7EXWRjQ" + }, + "outputs": [], + "source": [ + "from sklearn.svm import SVR\n", + "from sklearn.model_selection import GridSearchCV" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "id": "0xQewd7QWTtq" + }, + "outputs": [], + "source": [ + "# Create an SVR model\n", + "model2 = SVR()\n", + "param_grid = {'C':[0.1, 1], 'epsilon':[0.01, 0.1, 0.5], 'kernel':['sigmoid']}\n", + "GV_SVR = GridSearchCV(model2, param_grid = param_grid, scoring = 'accuracy', n_jobs = -1)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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": 26, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 191 + }, + "id": "22SaCsQmfhgP", + "outputId": "7867aa8e-a7dc-49e4-d0aa-310423e9c696" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/sklearn/model_selection/_search.py:1103: UserWarning: One or more of the test scores are non-finite: [nan nan nan nan nan nan]\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "
GridSearchCV(estimator=SVR(), n_jobs=-1,\n",
+              "             param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n",
+              "                         'kernel': ['sigmoid']},\n",
+              "             scoring='accuracy')
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": [ + "GridSearchCV(estimator=SVR(), n_jobs=-1,\n", + " param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n", + " 'kernel': ['sigmoid']},\n", + " scoring='accuracy')" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "GV_SVR.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "id": "OQ1nL4oYfkAC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2 = GV_SVR.predict(X_test)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "U6-EppR68Jsu", + "outputId": "cfa67a46-ab8c-478d-c13e-fe884ef7ebae" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'C': 0.1, 'epsilon': 0.01, 'kernel': 'sigmoid'}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GV_SVR.best_params_" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "id": "nRYTwydsfpjb" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics with grid search\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": 30, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "656J5oz5fzq6", + "outputId": "c62c2076-2a10-43da-935d-c593c2d7be79" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 158.5191296342117\n", + "MAE: 127.61818666535594\n", + "MAPE: 2.6724681150799072\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 0.9970457902511078\n", + "Confusion Matrix:\n", + " [[738 2]\n", + " [ 0 675]]\n", + "Recall: 1.0\n", + "F1 Score: 0.9985207100591716\n" + ] + } + ], + "source": [ + "# Print the evaluation metrics with grid search\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": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "tIlc-wCE8Jsv", + "outputId": "fc6a39f5-b546-444e-a522-8bbcf889be14" + }, + "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": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#fitting without grid search\n", + "model2.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "id": "f3u1h6Dk8Jsv" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2_1 = model2.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "F-NgJx2d8Jsv" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics without grid search\n", + "rmse2_1 = np.sqrt(mean_squared_error(y_test, pred2_1))\n", + "mae2_1 = mean_absolute_error(y_test, pred2_1)\n", + "mape2_1 = mean_absolute_percentage_error(y_test, pred2_1)\n", + "accuracy2_1 = accuracy_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "precision2_1 = precision_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "confusion2_1 = confusion_matrix(y_test > pred2_1, y_test > pred2_1.round())\n", + "recall2_1 = recall_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "f12_1 = f1_score(y_test > pred2_1, y_test > pred2_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_BB1EERE8Jsv", + "outputId": "11c94daf-d2db-4447-a5b9-b753e648b56c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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 without grid search\n", + "print(\"RMSE:\", rmse2_1)\n", + "print(\"MAE:\", mae2_1)\n", + "print(\"MAPE:\", mape2_1)\n", + "print(\"Accuracy:\", accuracy2_1)\n", + "print(\"Precision:\", precision2_1)\n", + "print(\"Confusion Matrix:\\n\", confusion2_1)\n", + "print(\"Recall:\", recall2_1)\n", + "print(\"F1 Score:\", f12_1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hcIfVMWdgcKt" + }, + "source": [ + "## 3. Random Forest" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "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": 36, + "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": 37, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "fF002Yepgk55", + "outputId": "4ff3a76e-04be-452e-8927-a7739bc306fb" + }, + "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": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model3.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "id": "8nRU_pzEgnCt" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred3 = model3.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "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": 40, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8pPzsCY1g305", + "outputId": "bc5eeab1-5d75-4be3-b26f-70c4fe533a47" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.2227552163641375\n", + "MAE: 1.2618627107561857\n", + "MAPE: 0.008011786688180922\n", + "Accuracy: 0.8537102473498234\n", + "Precision: 0.8575624082232012\n", + "Confusion Matrix:\n", + " [[624 97]\n", + " [110 584]]\n", + "Recall: 0.8414985590778098\n", + "F1 Score: 0.8494545454545455\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": 41, + "metadata": { + "id": "TI8idoxOg6jF" + }, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "# Create an XGBoost model\n", + "model4 = xgb.XGBRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "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": 43, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + }, + "id": "2gpbDxshhexj", + "outputId": "2cdbacc9-909a-43c9-cf04-cc4f70015e43" + }, + "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.
" + ], + "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": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model4.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "id": "Jj9DXdUPhh9V" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred4 = model4.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "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": 46, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qpnLeFyZhwB3", + "outputId": "1637d31a-e785-4414-dfe5-f7fa4fd282e9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\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": 47, + "metadata": { + "id": "DyhhdlZAhx94" + }, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "# Create an XGBoost model\n", + "model5 = xgb.XGBRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "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": 49, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + }, + "id": "RAIwxIp5iH9Z", + "outputId": "cc66ca33-11cc-4e5d-e7e1-f39b41466c28" + }, + "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.
" + ], + "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": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model5.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "id": "XmJds5fYiKT3" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred5 = model5.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "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": 52, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7IkE-RAmiWNo", + "outputId": "d69e485e-0462-409a-f9aa-59e5ca7c4bef" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\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": 53, + "metadata": { + "id": "HNq66cXRiYPJ" + }, + "outputs": [], + "source": [ + "from sklearn.ensemble import AdaBoostRegressor\n", + "# Create an AdaBoost model\n", + "model6 = AdaBoostRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "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": 55, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "P0oB5wjQivBr", + "outputId": "827e151d-e13e-4924-ef50-c5e1d13f6161" + }, + "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": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model6.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "id": "Bf1m5ukOi2VM" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred6 = model6.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "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": 58, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BsajWJGBjC80", + "outputId": "076cff01-ff0a-449b-d86c-df9f1363fecd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 10.504089217159294\n", + "MAE: 8.746118088217727\n", + "MAPE: 0.20512996006219347\n", + "Accuracy: 0.9943462897526502\n", + "Precision: 0.9939879759519038\n", + "Confusion Matrix:\n", + " [[911 3]\n", + " [ 5 496]]\n", + "Recall: 0.9900199600798403\n", + "F1 Score: 0.992\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": 59, + "metadata": { + "id": "23DZ2biSjF9a" + }, + "outputs": [], + "source": [ + "from sklearn.tree import DecisionTreeRegressor\n", + "# Create a Decision Tree model\n", + "model7 = DecisionTreeRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "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": 61, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "6mQEQf-ykc9F", + "outputId": "78dc7661-96e4-46af-b65a-c705018c58a3" + }, + "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": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model7.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "id": "BFJ9q_tvkgRC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred7 = model7.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "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": 64, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AnZXMYb8kooV", + "outputId": "93527d46-9366-49ce-b895-7a12ae87f742" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 3.136698143876249\n", + "MAE: 1.6416165234385407\n", + "MAPE: 0.010224639636659394\n", + "Accuracy: 0.8600706713780919\n", + "Precision: 0.8687845303867403\n", + "Confusion Matrix:\n", + " [[588 95]\n", + " [103 629]]\n", + "Recall: 0.8592896174863388\n", + "F1 Score: 0.864010989010989\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": 65, + "metadata": { + "id": "JVDSed7yktFY" + }, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsRegressor\n", + "from sklearn.model_selection import GridSearchCV\n", + "# Create a KNN model\n", + "model8 = KNeighborsRegressor()\n", + "param_grid = {'n_neighbors':[3, 5, 7, 9, 11, 15, 20, 23, 25, 30, 60, 70, 150]}\n", + "GV_KNN = GridSearchCV(model8, param_grid, cv=5, scoring='neg_mean_squared_error')" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "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": 67, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "9fn64o-ZlBka", + "outputId": "bc388b6b-cf36-4a91-eb52-8fe7a861308b" + }, + "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": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model8.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "id": "hbfbbjcSlDn7" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred8 = model8.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "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": 70, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IPoDRkcMlMAr", + "outputId": "5aee40b5-c7c1-4fad-f419-37d08a504146" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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": "code", + "execution_count": 71, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "5qW5X1Xe8Js7", + "outputId": "6abf26c0-873e-42e2-9aab-c2bd93a5ae84" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
KNeighborsRegressor(n_neighbors=150)
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(n_neighbors=150)" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GV_KNN.fit(X_train, y_train)\n", + "pred8_1 = GV_KNN.predict(X_test)\n", + "GV_KNN.best_estimator_" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "id": "voNSUlHk8Js7" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics with grid search\n", + "rmse8_1 = np.sqrt(mean_squared_error(y_test, pred8_1))\n", + "mae8_1 = mean_absolute_error(y_test, pred8_1)\n", + "mape8_1 = mean_absolute_percentage_error(y_test, pred8_1)\n", + "accuracy8_1 = accuracy_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "precision8_1 = precision_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "confusion8_1 = confusion_matrix(y_test > pred8_1, y_test > pred8_1.round())\n", + "recall8_1 = recall_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "f18_1 = f1_score(y_test > pred8_1, y_test > pred8_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VMnot_fX8Js8", + "outputId": "71c354e6-71e6-4d31-ee2f-2a03f65d24fe" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 137.20694663964096\n", + "MAE: 101.08872313712585\n", + "MAPE: 1.7323302969000884\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 1.0\n", + "Confusion Matrix:\n", + " [[865 0]\n", + " [ 2 548]]\n", + "Recall: 0.9963636363636363\n", + "F1 Score: 0.9981785063752276\n" + ] + } + ], + "source": [ + "# Print the evaluation metrics with grid search\n", + "print(\"RMSE:\", rmse8_1)\n", + "print(\"MAE:\", mae8_1)\n", + "print(\"MAPE:\", mape8_1)\n", + "print(\"Accuracy:\", accuracy8_1)\n", + "print(\"Precision:\", precision8_1)\n", + "print(\"Confusion Matrix:\\n\", confusion8_1)\n", + "print(\"Recall:\", recall8_1)\n", + "print(\"F1 Score:\", f18_1)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 524 + }, + "id": "Swebseye8Js8", + "outputId": "c501acf3-094c-4ba6-f0d7-1a0901cdb2e0" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1AAAAH7CAYAAADCX341AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABVWElEQVR4nO3de3iU9Z3//9fMJDM5TjBASJAgEa2agihHU/uluqWEGq2stqtWLZ7qwgYU2FW0VSn2W7G6rWhRaO1e4G+Rou631AI1bsrJWoJRECFEUCEFNBkSjMmEkOPM/fsDZsiQBCaQ5L5n8nxc11wy9/3Jnfd8QoFXPyebYRiGAAAAAABnZDe7AAAAAACIFAQoAAAAAAgTAQoAAAAAwkSAAgAAAIAwEaAAAAAAIEwEKAAAAAAIEwEKAAAAAMJEgAIAAACAMBGgAAAAACBMMWYXYCa/36/y8nIlJyfLZrOZXQ4AAAAAkxiGobq6Og0ePFh2+2nGmYwueOqpp4yxY8caSUlJxsCBA40bb7zR2LNnT0ibb33rW4akkNe//uu/hrQ5cOCAcd111xnx8fHGwIEDjf/4j/8wWlpaQtps3LjRuPLKKw2n02kMHz7cWLZsWbt6Fi9ebFxwwQWGy+Uyxo8fb7z33ntd+TjGoUOH2tXKixcvXrx48eLFixevvvs6dOjQaTNEl0agNm/erPz8fI0bN06tra36yU9+osmTJ6u0tFSJiYnBdj/+8Y/15JNPBt8nJCQEf+3z+ZSXl6f09HRt2bJFFRUV+tGPfqTY2Fg99dRTkqSysjLl5eVp+vTpevXVV7V+/Xrdd999ysjIUG5uriTptdde09y5c7V06VJNmDBBixYtUm5urvbu3au0tLSwPk9ycrIk6dChQ3K73V3pCgAAAABRxOv1KjMzM5gROmMzDMM4229SVVWltLQ0bd68WRMnTpQkXXPNNbriiiu0aNGiDr/mrbfe0vXXX6/y8nINGjRIkrR06VLNmzdPVVVVcjqdmjdvntatW6eSkpLg1916662qqalRQUGBJGnChAkaN26cFi9eLOn4dLzMzEzNmjVLjzzySFj1e71epaSkqLa2lgAFAAAA9GHhZoNz2kSitrZWkpSamhpy/dVXX9WAAQM0YsQIPfroozp27FjwXlFRkUaOHBkMT5KUm5srr9er3bt3B9tMmjQp5Jm5ubkqKiqSJDU3N2vbtm0hbex2uyZNmhRs05GmpiZ5vd6QFwAAAACE66w3kfD7/Zo9e7auvvpqjRgxInj9hz/8oS644AINHjxYO3fu1Lx587R371798Y9/lCR5PJ6Q8CQp+N7j8Zy2jdfrVUNDg7766iv5fL4O2+zZs6fTmhcuXKgFCxac7UcGAAAA0MeddYDKz89XSUmJ3n333ZDr999/f/DXI0eOVEZGhr797W9r3759Gj58+NlX2g0effRRzZ07N/g+MM8RAAAAAMJxVgFq5syZWrt2rd555x0NGTLktG0nTJggSfrss880fPhwpaenq7i4OKTN4cOHJUnp6enB/wautW3jdrsVHx8vh8Mhh8PRYZvAMzricrnkcrnC+5AAAAAAcIourYEyDEMzZ87U6tWrtWHDBmVlZZ3xa3bs2CFJysjIkCTl5ORo165dqqysDLYpLCyU2+1WdnZ2sM369etDnlNYWKicnBxJktPp1JgxY0La+P1+rV+/PtgGAAAAALpbl0ag8vPztXLlSr355ptKTk4OrllKSUlRfHy89u3bp5UrV+q6665T//79tXPnTs2ZM0cTJ07U5ZdfLkmaPHmysrOzdeedd+qZZ56Rx+PRY489pvz8/ODo0PTp07V48WI9/PDDuueee7Rhwwa9/vrrWrduXbCWuXPnatq0aRo7dqzGjx+vRYsWqb6+XnfffXd39Q0AAAAAhOjSNuY2m63D68uWLdNdd92lQ4cO6Y477lBJSYnq6+uVmZmpf/7nf9Zjjz0WshXggQMHNGPGDG3atEmJiYmaNm2ann76acXEnMxzmzZt0pw5c1RaWqohQ4bo8ccf11133RXyfRcvXqxnn31WHo9HV1xxhV544YXglMFwsI05AAAAACn8bHBO50BFOgIUAAAAAKmXzoECAAAAgL6EAAUAAAAAYSJAAQAAAECYCFAAAAAAECYCFAAAAACEqUvnQKFn+PyGisuqVVnXqLTkOI3PSpXD3vGW8QAAAADMQ4AyWUFJhRasKVVFbWPwWkZKnObfkK0pIzJMrAwAAADAqZjCZ6KCkgrNWLE9JDxJkqe2UTNWbFdBSYVJlQEAAADoCAHKJD6/oQVrStXRKcaBawvWlMrn77PnHAMAAACWQ4AySXFZdbuRp7YMSRW1jSouq+69ogAAAACcFgHKJJV1nYens2kHAAAAoOcRoEySlhzXre0AAAAA9DwClEnGZ6UqIyVOnW1WbtPx3fjGZ6X2ZlkAAAAAToMAZRKH3ab5N2RLUrsQFXg//4ZszoMCAAAALIQAZaIpIzK05I7RSk8JnaaXnhKnJXeM5hwoAAAAwGI4SNdkU0Zk6DvZ6Zr8683ad6Re/zH5a5pxzUWMPAEAAAAWxAiUBTjsNg0+L16SdP558YQnAAAAwKIIUBaRHHd8MNDb0GpyJQAAAAA6Q4CyiGRXrCSprrHF5EoAAAAAdIYAZRGBEai6RkagAAAAAKsiQFmEO/74CJSXAAUAAABYFgHKIk6OQDGFDwAAALAqApRFJMcxAgUAAABYHQHKIhiBAgAAAKyPAGURbCIBAAAAWB8ByiLccWxjDgAAAFgdAcoiAgGKg3QBAAAA6yJAWURgCl9Di08tPr/J1QAAAADoCAHKIpJOBChJOso6KAAAAMCSCFAWEeuwK8HpkMRGEgAAAIBVEaAsJDCNz8tGEgAAAIAlEaAs5ORhugQoAAAAwIoIUBbCWVAAAACAtRGgLCQ5eBYUAQoAAACwIgKUhbiDI1BM4QMAAACsiABlIckcpgsAAABYGgHKQhiBAgAAAKyNAGUhbCIBAAAAWBsBykLc8Sc2kWhiBAoAAACwIgKUhTACBQAAAFgbAcpCkl2BTSQYgQIAAACsiABlIYxAAQAAANZGgLKQ4DbmBCgAAADAkghQFuKOZxtzAAAAwMoIUBYSGIFqavWrqdVncjUAAAAATkWAspAkV0zw16yDAgAAAKyHAGUhDrstGKIIUAAAAID1EKAsxh3HOigAAADAqghQFhNYB8UIFAAAAGA9BCiLCZwFxWG6AAAAgPUQoCyGw3QBAAAA6yJAWczJw3QZgQIAAACshgBlMScP02UECgAAALAaApTFMAIFAAAAWBcBymJYAwUAAABYFwHKYk5uY84IFAAAAGA1BCiLcTMCBQAAAFgWAcpi3BykCwAAAFgWAcpiggfpMoUPAAAAsBwClMUkMwIFAAAAWFaXAtTChQs1btw4JScnKy0tTVOnTtXevXs7bGsYhr773e/KZrPpT3/6U8i9gwcPKi8vTwkJCUpLS9NDDz2k1tbQwLBp0yaNHj1aLpdLF110kZYvX97ue7z44osaNmyY4uLiNGHCBBUXF3fl41jSyV34WmQYhsnVAAAAAGirSwFq8+bNys/P19atW1VYWKiWlhZNnjxZ9fX17douWrRINput3XWfz6e8vDw1Nzdry5YteuWVV7R8+XI98cQTwTZlZWXKy8vTtddeqx07dmj27Nm677779PbbbwfbvPbaa5o7d67mz5+v7du3a9SoUcrNzVVlZWVXPpLluOOPj0C1+Aw1tfpNrgYAAABAWzbjHIY5qqqqlJaWps2bN2vixInB6zt27ND111+vDz74QBkZGVq9erWmTp0qSXrrrbd0/fXXq7y8XIMGDZIkLV26VPPmzVNVVZWcTqfmzZundevWqaSkJPjMW2+9VTU1NSooKJAkTZgwQePGjdPixYslSX6/X5mZmZo1a5YeeeSRsOr3er1KSUlRbW2t3G732XZDtzIMQ8N/8hf5Dan4p99WWnKc2SUBAAAAUS/cbHBOa6Bqa2slSampqcFrx44d0w9/+EO9+OKLSk9Pb/c1RUVFGjlyZDA8SVJubq68Xq92794dbDNp0qSQr8vNzVVRUZEkqbm5Wdu2bQtpY7fbNWnSpGCbjjQ1Ncnr9Ya8rMZmsynJdWIjiQbWQQEAAABWctYByu/3a/bs2br66qs1YsSI4PU5c+boG9/4hm688cYOv87j8YSEJ0nB9x6P57RtvF6vGhoadOTIEfl8vg7bBJ7RkYULFyolJSX4yszMDP8D9yIO0wUAAACs6awDVH5+vkpKSrRq1argtT//+c/asGGDFi1a1B21dbtHH31UtbW1wdehQ4fMLqlDgXVQ7MQHAAAAWMtZBaiZM2dq7dq12rhxo4YMGRK8vmHDBu3bt0/9+vVTTEyMYmKOT0W7+eabdc0110iS0tPTdfjw4ZDnBd4Hpvx11sbtdis+Pl4DBgyQw+HosE1H0wYDXC6X3G53yMuKTu7ER4ACAAAArKRLAcowDM2cOVOrV6/Whg0blJWVFXL/kUce0c6dO7Vjx47gS5Kee+45LVu2TJKUk5OjXbt2heyWV1hYKLfbrezs7GCb9evXhzy7sLBQOTk5kiSn06kxY8aEtPH7/Vq/fn2wTSRzc5guAAAAYEkxXWmcn5+vlStX6s0331RycnJwvVFKSori4+OVnp7e4QjQ0KFDg2Fr8uTJys7O1p133qlnnnlGHo9Hjz32mPLz8+VyuSRJ06dP1+LFi/Xwww/rnnvu0YYNG/T6669r3bp1wWfOnTtX06ZN09ixYzV+/HgtWrRI9fX1uvvuu8+6M6yCNVAAAACANXUpQC1ZskSSgtPxApYtW6a77rorrGc4HA6tXbtWM2bMUE5OjhITEzVt2jQ9+eSTwTZZWVlat26d5syZo+eff15DhgzR73//e+Xm5gbb3HLLLaqqqtITTzwhj8ejK664QgUFBe02lohETOEDAAAArOmczoGKdFY8B0qS/vPtvVq88TPd9Y1h+tn3vm52OQAAAEDU65VzoNAzklkDBQAAAFgSAcqCAmugOEgXAAAAsBYClAWdXAPFCBQAAABgJQQoC+IgXQAAAMCaCFAWFByBamIECgAAALASApQFBQ/SZQ0UAAAAYCkEKAsKbCJxtKlVfXiXeQAAAMByCFAWFJjC5/MbOtbsM7kaAAAAAAEEKAuKj3Uoxm6TxEYSAAAAgJUQoCzIZrOxlTkAAABgQQQoiwoepkuAAgAAACyDAGVRgREoL1P4AAAAAMsgQFmUO47DdAEAAACrIUBZFGugAAAAAOshQFlUcA0Uh+kCAAAAlkGAsihGoAAAAADrIUBZlDsYoBiBAgAAAKyCAGVR7vjAJhKMQAEAAABWQYCyqGRGoAAAAADLIUBZFAfpAgAAANZDgLIoRqAAAAAA6yFAWRQH6QIAAADWQ4CyqMAIFFP4AAAAAOsgQFlUYA3U0aZW+f2GydUAAAAAkAhQlhUYgTIM6Wgz0/gAAAAAKyBAWVRcrENOx/EfD+ugAAAAAGsgQFmYOz6wEx/roAAAAAArIEBZWDI78QEAAACWQoCysOBOfA2MQAEAAABWQICyMA7TBQAAAKyFAGVhJw/TZQQKAAAAsAIClIWdPEyXESgAAADACghQFhbYRMLLCBQAAABgCQQoC2MNFAAAAGAtBCgLYxtzAAAAwFoIUBbmjuMgXQAAAMBKCFAWxggUAAAAYC0EKAtzc5AuAAAAYCkEKAtjBAoAAACwFgKUhbnjWQMFAAAAWAkBysICI1D1zT61+vwmVwMAAACAAGVhgXOgJOloE9P4AAAAALMRoCws1mFXXOzxHxHroAAAAADzEaAsLjCNz8s6KAAAAMB0BCiLO3mYLiNQAAAAgNkIUBbHVuYAAACAdRCgLC6Zw3QBAAAAyyBAWZw7OAJFgAIAAADMRoCyuJOH6TKFDwAAADAbAcrigmugOAcKAAAAMB0ByuKSXYERKKbwAQAAAGYjQFncyU0kGIECAAAAzEaAsjgO0gUAAACsgwBlce54zoECAAAArIIAZXGBKXysgQIAAADMR4CyuOAaKEagAAAAANMRoCyOg3QBAAAA6yBAWVwgQDW2+NXi85tcDQAAANC3EaAsLunEFD6JjSQAAAAAsxGgLM5htynR6ZDEND4AAADAbASoCBA8C4rDdAEAAABTdSlALVy4UOPGjVNycrLS0tI0depU7d27N6TNv/7rv2r48OGKj4/XwIEDdeONN2rPnj0hbQ4ePKi8vDwlJCQoLS1NDz30kFpbQ8PBpk2bNHr0aLlcLl100UVavnx5u3pefPFFDRs2THFxcZowYYKKi4u78nEiBluZAwAAANbQpQC1efNm5efna+vWrSosLFRLS4smT56s+vr6YJsxY8Zo2bJl+vjjj/X222/LMAxNnjxZPp9PkuTz+ZSXl6fm5mZt2bJFr7zyipYvX64nnngi+IyysjLl5eXp2muv1Y4dOzR79mzdd999evvtt4NtXnvtNc2dO1fz58/X9u3bNWrUKOXm5qqysvJc+8RyAofpspU5AAAAYC6bYRjG2X5xVVWV0tLStHnzZk2cOLHDNjt37tSoUaP02Wefafjw4Xrrrbd0/fXXq7y8XIMGDZIkLV26VPPmzVNVVZWcTqfmzZundevWqaSkJPicW2+9VTU1NSooKJAkTZgwQePGjdPixYslSX6/X5mZmZo1a5YeeeSRDmtpampSU1NT8L3X61VmZqZqa2vldrvPtht63F3LirVpb5We/f7l+sHYTLPLAQAAAKKO1+tVSkrKGbPBOa2Bqq2tlSSlpqZ2eL++vl7Lli1TVlaWMjOP/8O/qKhII0eODIYnScrNzZXX69Xu3buDbSZNmhTyrNzcXBUVFUmSmpubtW3btpA2drtdkyZNCrbpyMKFC5WSkhJ8BWqyuuAaKEagAAAAAFOddYDy+/2aPXu2rr76ao0YMSLk3ksvvaSkpCQlJSXprbfeUmFhoZxOpyTJ4/GEhCdJwfcej+e0bbxerxoaGnTkyBH5fL4O2wSe0ZFHH31UtbW1wdehQ4fO7sP3MtZAAQAAANZw1gEqPz9fJSUlWrVqVbt7t99+uz788ENt3rxZX/va1/Qv//IvamxsPKdCu4PL5ZLb7Q55RYLAYbqcAwUAAACY66wC1MyZM7V27Vpt3LhRQ4YMaXc/JSVFF198sSZOnKj/+Z//0Z49e7R69WpJUnp6ug4fPhzSPvA+PT39tG3cbrfi4+M1YMAAORyODtsEnhFNGIECAAAArKFLAcowDM2cOVOrV6/Whg0blJWVFdbXGIYR3LwhJydHu3btCtktr7CwUG63W9nZ2cE269evD3lOYWGhcnJyJElOp1NjxowJaeP3+7V+/fpgm2jiDgYoRqAAAAAAM3UpQOXn52vFihVauXKlkpOT5fF45PF41NDQIEnav3+/Fi5cqG3btungwYPasmWLfvCDHyg+Pl7XXXedJGny5MnKzs7WnXfeqY8++khvv/22HnvsMeXn58vlckmSpk+frv379+vhhx/Wnj179NJLL+n111/XnDlzgrXMnTtXL7/8sl555RV9/PHHmjFjhurr63X33Xd3V99YxslNJBiBAgAAAMwU05XGS5YskSRdc801IdeXLVumu+66S3Fxcfrb3/6mRYsW6auvvtKgQYM0ceJEbdmyRWlpaZIkh8OhtWvXasaMGcrJyVFiYqKmTZumJ598Mvi8rKwsrVu3TnPmzNHzzz+vIUOG6Pe//71yc3ODbW655RZVVVXpiSeekMfj0RVXXKGCgoJ2G0tEg2RGoAAAAABLOKdzoCJduHu9m+39f1TrB0uLlDUgURv/4xqzywEAAACiTq+cA4XewSYSAAAAgDUQoCJAcA1UA1P4AAAAADMRoCJAYASq2edXY4vP5GoAAACAvosAFQGSnDGy2Y7/mo0kAAAAAPMQoCKA3W5Tkot1UAAAAIDZCFARwn1iHRQjUAAAAIB5CFARIrAOisN0AQAAAPMQoCIEh+kCAAAA5iNARYiTU/gYgQIAAADMQoCKEIxAAQAAAOYjQEWIk4fpMgIFAAAAmIUAFSFObiLBCBQAAABgFgJUhHDHs405AAAAYDYCVIQ4uQaKKXwAAACAWQhQESKZg3QBAAAA0xGgIgQH6QIAAADmI0BFCDfbmAMAAACmI0BFCA7SBQAAAMxHgIoQbddAGYZhcjUAAABA30SAihCBNVCtfkMNLT6TqwEAAAD6JgJUhEhwOuSw2ySxDgoAAAAwCwEqQthsNs6CAgAAAExGgIogJ7cyZwQKAAAAMAMBKoIkuzhMFwAAADATASqCJLkckqQNHx9W0b4v5fOzGx8AAADQm2LMLgDhKSip0Eef10qSXik6oFeKDigjJU7zb8jWlBEZJlcHAAAA9A2MQEWAgpIKzVixXU2t/pDrntpGzVixXQUlFSZVBgAAAPQtBCiL8/kNLVhTqo4m6wWuLVhTynQ+AAAAoBcQoCyuuKxaFbWNnd43JFXUNqq4rLr3igIAAAD6KAKUxVXWdR6ezqYdAAAAgLNHgLK4tOS4bm0HAAAA4OwRoCxufFaqMlLiZOvkvk1SRkqcxmel9mZZAAAAQJ9EgLI4h92m+TdkS1K7EBV4P/+GbDnsnUUsAAAAAN2FABUBpozI0JI7Ris9JXSaXnpKnJbcMZpzoAAAAIBeQoCKEFNGZOjdef+kb1+WJkmaesVgvTvvnwhPAAAAQC8iQEUQh92mbwwfIElqavUzbQ8AAADoZQSoCHPhwERJ0v6qepMrAQAAAPoeAlSEuWhgkiSp7Ei9fH7D5GoAAACAvoUAFWEG94uXK8auZp9fn391zOxyAAAAgD6FABVhHHabsgYcn8a3r+qoydUAAAAAfQsBKgINPzGNj3VQAAAAQO8iQEWg4QMZgQIAAADMQICKQMPTjo9A7atkBAoAAADoTQSoCHThgBNT+I4wAgUAAAD0JgJUBAqcBXXkaLNqjjWbXA0AAADQdxCgIlCiK0YZKXGSpH1sJAEAAAD0GgJUhAqMQu1nIwkAAACg1xCgIlRgK3NGoAAAAIDeQ4CKUCcDFCNQAAAAQG8hQEUoAhQAAADQ+whQESqwBurgl8fU4vObXA0AAADQNxCgIlS6O04JToda/YYOVh8zuxwAAACgTyBARSi73RYchdpXyTQ+AAAAoDcQoCLYhQOOr4Paf4Sd+AAAAIDeQICKYMGNJBiBAgAAAHoFASqCDU87MYWPnfgAAACAXkGAimCBKXz7quplGIbJ1QAAAADRjwAVwbIGJMpmk2obWlRd32x2OQAAAEDUI0BFsHinQ+f3i5d0fBQKAAAAQM8iQEW44EYSrIMCAAAAelyXAtTChQs1btw4JScnKy0tTVOnTtXevXuD96urqzVr1ixdcsklio+P19ChQ/XAAw+otrY25DkHDx5UXl6eEhISlJaWpoceekitra0hbTZt2qTRo0fL5XLpoosu0vLly9vV8+KLL2rYsGGKi4vThAkTVFxc3JWPExUCZ0HtJ0ABAAAAPa5LAWrz5s3Kz8/X1q1bVVhYqJaWFk2ePFn19cenj5WXl6u8vFz/+Z//qZKSEi1fvlwFBQW69957g8/w+XzKy8tTc3OztmzZoldeeUXLly/XE088EWxTVlamvLw8XXvttdqxY4dmz56t++67T2+//XawzWuvvaa5c+dq/vz52r59u0aNGqXc3FxVVlaea59ElJMjUEzhAwAAAHqazTiH7duqqqqUlpamzZs3a+LEiR22eeONN3THHXeovr5eMTExeuutt3T99dervLxcgwYNkiQtXbpU8+bNU1VVlZxOp+bNm6d169appKQk+Jxbb71VNTU1KigokCRNmDBB48aN0+LFiyVJfr9fmZmZmjVrlh555JGw6vd6vUpJSVFtba3cbvfZdoOpivZ9qdte3qoL+ido80PXml0OAAAAEJHCzQbntAYqMDUvNTX1tG3cbrdiYmIkSUVFRRo5cmQwPElSbm6uvF6vdu/eHWwzadKkkOfk5uaqqKhIktTc3Kxt27aFtLHb7Zo0aVKwTUeamprk9XpDXpFu+IkpfIeqj6mp1WdyNQAAAEB0O+sA5ff7NXv2bF199dUaMWJEh22OHDmin//857r//vuD1zweT0h4khR87/F4TtvG6/WqoaFBR44ckc/n67BN4BkdWbhwoVJSUoKvzMzM8D+wRQ1MdinZFSO/IR348pjZ5QAAAABR7awDVH5+vkpKSrRq1aoO73u9XuXl5Sk7O1s/+9nPzvbbdKtHH31UtbW1wdehQ4fMLumc2Ww2XZh2Yh1UJRtJAAAAAD0p5my+aObMmVq7dq3eeecdDRkypN39uro6TZkyRcnJyVq9erViY2OD99LT09vtlnf48OHgvcB/A9fatnG73YqPj5fD4ZDD4eiwTeAZHXG5XHK5XF37sBFg+MBEfXSohq3MAQAAgB7WpREowzA0c+ZMrV69Whs2bFBWVla7Nl6vV5MnT5bT6dSf//xnxcXFhdzPycnRrl27QnbLKywslNvtVnZ2drDN+vXrQ76usLBQOTk5kiSn06kxY8aEtPH7/Vq/fn2wTV8S2IlvPzvxAQAAAD2qSwEqPz9fK1as0MqVK5WcnCyPxyOPx6OGhgZJJ8NTfX29/uu//kterzfYxuc7vsHB5MmTlZ2drTvvvFMfffSR3n77bT322GPKz88Pjg5Nnz5d+/fv18MPP6w9e/bopZde0uuvv645c+YEa5k7d65efvllvfLKK/r44481Y8YM1dfX6+677+6uvokYgY0kGIECAAAAelaXpvAtWbJEknTNNdeEXF+2bJnuuusubd++Xe+9954k6aKLLgppU1ZWpmHDhsnhcGjt2rWaMWOGcnJylJiYqGnTpunJJ58Mts3KytK6des0Z84cPf/88xoyZIh+//vfKzc3N9jmlltuUVVVlZ544gl5PB5dccUVKigoaLexRF/Q9iwowzBks9lMrggAAACITud0DlSki4ZzoCSpqdWnyx4vkN+Qin/ybaW54878RQAAAACCeuUcKFiDK8ahoakJkqTPmMYHAAAA9BgCVJRoO40PAAAAQM8gQEWJC09sJLGfESgAAACgxxCgogQjUAAAAEDPI0BFieFpJwJUJSNQAAAAQE8hQEWJwAjUFzUNamj2mVwNAAAAEJ0IUFEiNdGpfgmxkqSyI0zjAwAAAHoCASqKnFwHxTQ+AAAAoCcQoKLI8BM78RGgAAAAgJ5BgIoiF54YgdrPTnwAAABAjyBARRGm8AEAAAA9iwAVRYYHD9Otl99vmFwNAAAAEH0IUFEkMzVBMXabGlp88ngbzS4HAAAAiDoEqCgS67Drgv4JkpjGBwAAAPQEAlSUuXDA8Wl8f/rwCxXt+1I+pvIBAAAA3SbG7ALQfQpKKrRl/5eSpP+3/Qv9v+1fKCMlTvNvyNaUERkmVwcAAABEPkagokRBSYVmrNiu+iZfyHVPbaNmrNiugpIKkyoDAAAAogcBKgr4/IYWrClVR5P1AtcWrCllOh8AAABwjghQUaC4rFoVtZ3vumdIqqhtVHFZde8VBQAAAEQhAlQUqKwLb8vycNsBAAAA6BgBKgqkJcd1azsAAAAAHSNARYHxWanKSImTrZP7NkkZKXEan5Xam2UBAAAAUYcAFQUcdpvm35AtSe1CVOD9/Buy5bB3FrEAAAAAhIMAFSWmjMjQkjtGKz0ldJreILdLS+4YzTlQAAAAQDfgIN0oMmVEhr6Tna7ismr926vb9NWxFv3n90fpm18baHZpAAAAQFRgBCrKOOw25Qzvr5zh/SVJu8q9JlcEAAAARA8CVJQaNaSfJGnn5zWm1gEAAABEEwJUlLo8GKBqzS0EAAAAiCIEqCg1ckiKbDbpi5oGHTnaZHY5AAAAQFQgQEWpJFeMhg9MksQ0PgAAAKC7EKCi2OVDUiRJHx1iGh8AAADQHQhQUYyNJAAAAIDuRYCKYoERqJ2f18owDJOrAQAAACIfASqKXZbhVozdpi/rm/VFTYPZ5QAAAAARjwAVxeJiHbo0I1kS25kDAAAA3YEAFeUC50F9dKjG1DoAAACAaECAinKjAjvxsZEEAAAAcM4IUFEuMAJV8oVXfj8bSQAAAADnggAV5S5OS1JcrF1Hm1q1/8hRs8sBAAAAIhoBKsrFOOwaMZgDdQEAAIDuQIDqAy7nQF0AAACgWxCg+oBRmYGNJBiBAgAAAM4FAaoPGHViBKq0wqvmVr+5xQAAAAARjADVB1zQP0Ep8bFqbvXrk8N1ZpcDAAAARCwCVB9gs9l0OedBAQAAAOeMANVHBALUTnbiAwAAAM4aAaqPCOzExwgUAAAAcPYIUH1EYCOJTyuPqqHZZ24xAAAAQIQiQPUR6SlxSkt2yec3tLucaXwAAADA2SBA9SEnp/ERoAAAAICzQYDqQ0YFNpJgHRQAAABwVghQfcjlmf0kSTsZgQIAAADOCgGqD7n8/OMjUGVH6lV7rMXkagAAAIDIQ4DqQ85LdGpoaoIkaecXNeYWAwAAAEQgAlQfEzxQl2l8AAAAQJcRoPqYwHlQHx2qMbUOAAAAIBIRoPqYUWwkAQAAAJw1AlQfM+J8t+w2yeNtVKW30exyAAAAgIhCgOpjEpwxujgtWRIH6gIAAABdRYDqgy7nQF0AAADgrHQpQC1cuFDjxo1TcnKy0tLSNHXqVO3duzekze9+9ztdc801crvdstlsqqmpafec6upq3X777XK73erXr5/uvfdeHT16NKTNzp079X/+z/9RXFycMjMz9cwzz7R7zhtvvKFLL71UcXFxGjlypP7yl7905eP0WYEDdRmBAgAAALqmSwFq8+bNys/P19atW1VYWKiWlhZNnjxZ9fX1wTbHjh3TlClT9JOf/KTT59x+++3avXu3CgsLtXbtWr3zzju6//77g/e9Xq8mT56sCy64QNu2bdOzzz6rn/3sZ/rd734XbLNlyxbddtttuvfee/Xhhx9q6tSpmjp1qkpKSrrykfqkUSdGoLYdqNabH36hon1fyuc3TK4KAAAAsD6bYRhn/S/nqqoqpaWlafPmzZo4cWLIvU2bNunaa6/VV199pX79+gWvf/zxx8rOztb777+vsWPHSpIKCgp03XXX6fPPP9fgwYO1ZMkS/fSnP5XH45HT6ZQkPfLII/rTn/6kPXv2SJJuueUW1dfXa+3atcFnX3XVVbriiiu0dOnSsOr3er1KSUlRbW2t3G732XZDxFnzUblm/eHDkGsZKXGaf0O2pozIMKkqAAAAwDzhZoNzWgNVW3t8ClhqamrYX1NUVKR+/foFw5MkTZo0SXa7Xe+9916wzcSJE4PhSZJyc3O1d+9effXVV8E2kyZNCnl2bm6uioqKOv3eTU1N8nq9Ia++pqCkQg+cEp4kyVPbqBkrtqugpMKEqgAAAIDIcNYByu/3a/bs2br66qs1YsSIsL/O4/EoLS0t5FpMTIxSU1Pl8XiCbQYNGhTSJvD+TG0C9zuycOFCpaSkBF+ZmZlh1x0NfH5DC9aUqqMhx8C1BWtKmc4HAAAAdOKsA1R+fr5KSkq0atWq7qynRz366KOqra0Nvg4dOmR2Sb2quKxaFbWdn/1kSKqobVRxWXXvFQUAAABEkJiz+aKZM2cGN38YMmRIl742PT1dlZWVIddaW1tVXV2t9PT0YJvDhw+HtAm8P1ObwP2OuFwuuVyuLtUbTSrrwjs4N9x2AAAAQF/TpREowzA0c+ZMrV69Whs2bFBWVlaXv2FOTo5qamq0bdu24LUNGzbI7/drwoQJwTbvvPOOWlpagm0KCwt1ySWX6Lzzzgu2Wb9+fcizCwsLlZOT0+Wa+oq05LhubQcAAAD0NV0KUPn5+VqxYoVWrlyp5ORkeTweeTweNTQ0BNt4PB7t2LFDn332mSRp165d2rFjh6qrj08Lu+yyyzRlyhT9+Mc/VnFxsf7+979r5syZuvXWWzV48GBJ0g9/+EM5nU7de++92r17t1577TU9//zzmjt3bvD7PPjggyooKNCvfvUr7dmzRz/72c/0wQcfaObMmefcKdFqfFaqMlLiZOvkvk3Hd+MbnxX+piAAAABAX9Klbcxtto7/6b1s2TLdddddkqSf/exnWrBgwWnbVFdXa+bMmVqzZo3sdrtuvvlmvfDCC0pKSgq237lzp/Lz8/X+++9rwIABmjVrlubNmxfyzDfeeEOPPfaY/vGPf+jiiy/WM888o+uuuy7cj9MntzEvKKnQjBXbJandZhI2SUvuGM1W5gAAAOhzws0G53QOVKTriwFKOh6iFqwpDdlQItZh029uu5LwBAAAgD4p3GxwVptIILJNGZGh72Snq7isWmVHjuqJN3erxWfo/H4JZpcGAAAAWNo5HaSLyOWw25QzvL9+OOECXTfy+KjTyuKDJlcFAAAAWBsBCrpt/FBJ0p93fKGjTa0mVwMAAABYFwEKuurCVF04IFH1zT6t+ajc7HIAAAAAyyJAQTabLTgKtfI9pvEBAAAAnSFAQZJ085ghcjrs2vVFrXZ9Xmt2OQAAAIAlEaAgSUpNdGrKiHRJ0h/eZxQKAAAA6AgBCkGBaXxvfshmEgAAAEBHCFAIYjMJAAAA4PQIUAhqu5nEHzgTCgAAAGiHAIUQgc0kdn5eq5Iv2EwCAAAAaIsAhRBtN5NYySgUAAAAEIIAhXbabiZRz2YSAAAAQBABCu203Uziz2wmAQAAAAQRoNBO280kXn5nv97c8YWK9n0pn98wuTIAAADAXDFmFwBr6pcQK0naf6ReD67aIUnKSInT/BuyNWVEhomVAQAAAOZhBArtFJRU6OH/2dnuuqe2UTNWbFdBSYUJVQEAAADmI0AhhM9vaMGaUnU0WS9wbcGaUqbzAQAAoE8iQCFEcVm1KmobO71vSKqobVRxWXXvFQUAAABYBAEKISrrOg9PZ9MOAAAAiCYEKIRIS47r1nYAAABANCFAIcT4rFRlpMTJdpo26W6Xxmel9lpNAAAAgFUQoBDCYbdp/g3ZktRpiMpIiZf9dAkLAAAAiFIEKLQzZUSGltwxWukpodP0BiQ55bBLHx6q0X+9W2ZSdQAAAIB5OEgXHZoyIkPfyU5XcVm1KusalZYcp/FZqVr53gE9/uZuLXxrjy4f0o+pfAAAAOhTGIFCpxx2m3KG99eNV5yvnOH95bDbdMdVF2jqFYPl8xvKX7ldlV524wMAAEDfQYBCl9hsNj1100hdMihZVXVNmrnyQ7X4/GaXBQAAAPQKAhS6LMEZoyV3jFaSK0bF/6jWMwV7zC4JAAAA6BUEKJyVCwcm6T9/cLkk6eW/lekvuypMrggAAADoeQQonLUpIzL0rxMvlCQ9/D87ta/qqMkVAQAAAD2LAIVz8lDuJRqflaqjTa2asWKbjjW3ml0SAAAA0GMIUDgnMQ67Fv/wSqUlu/TJ4aN65P/tkmEYZpcFAAAA9AgCFM5ZWnKcXrx9tBx2m/78Ubn+e+sBs0sCAAAAegQBCt1i3LBUPfrdSyVJP19bqu0HvzK5IgAAAKD7EaDQbe79ZpbyRmaoxWfo31Zs15dHm8wuCQAAAOhWBCh0G5vNpl9+/3JdODBRHm+jHlj1oXx+1kMBAAAgehCg0K2SXDH67R1jlOB06O+ffalfF+41uyQAAACg2xCg0O0uHpSsp28+fsjuixv36a+lh02uCAAAAOgeBCj0iO+NGqy7vjFMkjTn9R3aX3VURfu+1Js7vlDRvi+Z2gcAAICIFGN2AYheP7nuMu38vEbbD9Zo8nPvqLVNaMpIidP8G7I1ZUSGiRUCAAAAXcMIFHqMM8auH4zNlKSQ8CRJntpGzVixXQUlFWaUBgAAAJwVAhR6jM9v6IX1n3Z4LxCnFqwpZTofAAAAIgYBCj2muKxaFbWNnd43JFXUNqq4rLr3igIAAADOAQEKPaayrvPwdDbtAAAAALMRoNBj0pLjurUdAAAAYDYCFHrM+KxUZaTEyXaaNv0TnRqfldprNQEAAADnggCFHuOw2zT/hmxJ6jRE1Ta06O+fHem9ogAAAIBzQIBCj5oyIkNL7hit9JTQaXrpKXEaeb5brX5D9/1/H2jjnkqTKgQAAADCZzMMo8/uIe31epWSkqLa2lq53W6zy4lqPr+h4rJqVdY1Ki05TuOzUuXzG5r1h+16e/dhOR12vXj7aH0ne5DZpQIAAKAPCjcbEKAIUKZq8fk1e9UOrdtVoRi7TYt/eKWmjMgwuywAAAD0MeFmA6bwwVSxDruev/UK3XjFYLX6DeWv/FBrPio3uywAAACgQwQomC7GYdev/+UK3TT6fPn8hh5c9aH+9OEXZpcFAAAAtEOAgiU47DY9+/1RumVspvyGNOf1HfqfbZ+bXRYAAAAQggAFy3DYbVp400jdPmGoDEN66H8+0qrig2aXBQAAAAQRoGApdrtN/3fqCN31jWEyDOmRP+7Sf289YHZZAAAAgCQCFCzIZjt+AO9938ySJD3+pxIt+3uZyVUBAAAABChYlM1m00/zLtP0bw2XJC1YU6qX39lvclUAAADo6whQsCybzaZ5Uy7RA/90kSTpF3/5WC9u/MzkqgAAANCXEaBgaTabTXMnX6K53/maJOnZt/fq+b9+anJVAAAA6KsIUIgID3z7Yj085RJJ0nN//US/+t+9MgzD5KoAAADQ13QpQC1cuFDjxo1TcnKy0tLSNHXqVO3duzekTWNjo/Lz89W/f38lJSXp5ptv1uHDh0PaHDx4UHl5eUpISFBaWpoeeughtba2hrTZtGmTRo8eLZfLpYsuukjLly9vV8+LL76oYcOGKS4uThMmTFBxcXFXPg4izL9dc5F+et1lkqTfbPhMTxfsIUQBAACgV3UpQG3evFn5+fnaunWrCgsL1dLSosmTJ6u+vj7YZs6cOVqzZo3eeOMNbd68WeXl5brpppuC930+n/Ly8tTc3KwtW7bolVde0fLly/XEE08E25SVlSkvL0/XXnutduzYodmzZ+u+++7T22+/HWzz2muvae7cuZo/f762b9+uUaNGKTc3V5WVlefSH7C4H0+8UPNvyJYk/Xbzfv3fdR8TogAAANBrbMY5/OuzqqpKaWlp2rx5syZOnKja2loNHDhQK1eu1Pe//31J0p49e3TZZZepqKhIV111ld566y1df/31Ki8v16BBgyRJS5cu1bx581RVVSWn06l58+Zp3bp1KikpCX6vW2+9VTU1NSooKJAkTZgwQePGjdPixYslSX6/X5mZmZo1a5YeeeSRsOr3er1KSUlRbW2t3G732XYDTPDfWw/o8T8d//0xLecCPX59tt7/x1eqrGtUWnKcxmelymG3mVwlAAAAIkW42eCc1kDV1tZKklJTUyVJ27ZtU0tLiyZNmhRsc+mll2ro0KEqKiqSJBUVFWnkyJHB8CRJubm58nq92r17d7BN22cE2gSe0dzcrG3btoW0sdvtmjRpUrBNR5qamuT1ekNeiEx3XnWBnr5ppGw26ZWiA7p8wf/qtpe36sFVO3Tby1v1zV9uUEFJhdllAgAAIMqcdYDy+/2aPXu2rr76ao0YMUKS5PF45HQ61a9fv5C2gwYNksfjCbZpG54C9wP3TtfG6/WqoaFBR44ckc/n67BN4BkdWbhwoVJSUoKvzMzMrn9wWMat44fqR1ddIEk61uwLueepbdSMFdsJUQAAAOhWZx2g8vPzVVJSolWrVnVnPT3q0UcfVW1tbfB16NAhs0vCOfD5Df1v6eEO7wXmpS5YUyqfnzVSAAAA6B5nFaBmzpyptWvXauPGjRoyZEjwenp6upqbm1VTUxPS/vDhw0pPTw+2OXVXvsD7M7Vxu92Kj4/XgAED5HA4OmwTeEZHXC6X3G53yAuRq7isWhW1jZ3eNyRV1DaquKy694oCAABAVOtSgDIMQzNnztTq1au1YcMGZWVlhdwfM2aMYmNjtX79+uC1vXv36uDBg8rJyZEk5eTkaNeuXSG75RUWFsrtdis7OzvYpu0zAm0Cz3A6nRozZkxIG7/fr/Xr1wfbIPpV1nUens6mHQAAAHAmMV1pnJ+fr5UrV+rNN99UcnJycL1RSkqK4uPjlZKSonvvvVdz585Vamqq3G63Zs2apZycHF111VWSpMmTJys7O1t33nmnnnnmGXk8Hj322GPKz8+Xy+WSJE2fPl2LFy/Www8/rHvuuUcbNmzQ66+/rnXr1gVrmTt3rqZNm6axY8dq/PjxWrRokerr63X33Xd3V9/A4tKS47q1HQAAAHAmXQpQS5YskSRdc801IdeXLVumu+66S5L03HPPyW636+abb1ZTU5Nyc3P10ksvBds6HA6tXbtWM2bMUE5OjhITEzVt2jQ9+eSTwTZZWVlat26d5syZo+eff15DhgzR73//e+Xm5gbb3HLLLaqqqtITTzwhj8ejK664QgUFBe02lkD0Gp+VqoyUOHlqG9XZKiebJJ/P35tlAQAAIIqd0zlQkY5zoCJfQUmFZqzYLkkhIcrW5n2M3aanb75c3x8z5NQvBwAAACT10jlQgNmmjMjQkjtGKz0ldJpeekqcXrj1Ct0warBa/Yb+442P9OvCT9SH//8CAAAAdANGoBiBigo+v6HismpV1jUqLTlO47NS5bDb5Pcb+lXhXr24cZ8k6aYrz9fCm0fKFeMwuWIAAABYSbjZoEtroACrcthtyhnev911u92mh3IvVeZ5Cfrpn0r0xw+/UHltg357x1ilJMSaUCkAAAAiGVP40CfcOn6olt01TkmuGG3dX62blvxdh6qPSTo+elW070u9ueMLFe37koN3AQAA0Cmm8DGFr0/Z4/Hq7mXvq6K2UQOSnLrn6iz999YDIQfyZqTEaf4N2ZoyIsPESgEAANCbws0GBCgCVJ9z2Nuoe5a/r93l3g7v2078d8kdowlRAAAAfQS78AGdGOSO0x9+fJVcMR3/9g/8PwoL1pQynQ8AAAAhCFDok3aXe9XU2vkBu4akitpGFZdV915RAAAAsDwCFPqkyrrGMzfqQjsAAAD0DQQo9ElpyXFnbtSFdgAAAOgbCFDok8ZnpSojJS64YURH+sXHanxWaq/VBAAAAOsjQKFPcthtmn9DtiR1GqJqGlr0f9eVqsXn56woAAAASGIbc7Yx7+MKSiq0YE1pu3Ogrhx6nv6yq0KS9LVBSao51qLKuqaQNpwVBQAAED04ByoMBChIks9vqLisWpV1jUpLjtP4rFQ57DYVlHj04KoPO9ytj7OiAAAAoku42SCmF2sCLMlhtylneP9217+TPUjJcTFqOtrc7p6h4yFqwZpSfSc7XQ776VZTAQAAIFqwBgroRHFZtY50EJ4COCsKAACg7yFAAZ3grCgAAACcigAFdCLcM6BWbD2gjyu8PVwNAAAArIAABXQinLOiJOn9f3yl7z7/N/3bq9u011PXK7UBAADAHAQooBOnOyvKduI1/4Zs3TBqsGw26S+7PJry/DuauXK7PqskSAEAAEQjtjFnG3OcQWdnRbU9B2qvp07Pr/9Ef9nlkSTZbNKNowbrgW9frAsHJplSNwAAAMLHOVBhIEAhXJ2dFXWq0nKvFv31E/1v6WFJkt0mTb3yfD3wTxdr2IDE3i4bAAAAYSJAhYEAhZ5S8kWtFv31E/3140pJx6cD3jz6fM36p4uVmZpgcnUAAAA4FQEqDAQo9LSPDtXoub9+ok17qyRJMXabfjB2iPKvvUhDzjsZpMId4QIAAEDPIECFgQCF3rL94Fd6rvAT/e3TI5KkWIdNt4zLVP61F+mjQzVnXGMFAACAnkWACgMBCr3tg39U67m/fqK/f/alpOMjUq3+9v8TDIw9LbljNCEKAACgF4SbDdjGHOhFY4el6tX7rtKq+6/SuGHndRieJClwdcGaUvk6aQMAAIDeR4ACTHDVhf019ztfO20bQ1JFbaM27a3snaIAAABwRjFmFwD0VZV1TWG1u/eVDzQ0NUHZGW5lD3YH/5uREiebjY0mAAAAehMBCjBJWnJc2G0PVh/TwepjKtjtCV7rlxB7PEwFgtVgt4YPTFKsg4FlAACAnkKAAkwyPitVGSlx8tQ2qqNVTjZJ6SlxWjvrm9p7uE6l5V6VVnhVWu7VZ5VHVXOsRVv2fakt+74Mfo3TYdfX0pPaBKsUXZaRrOS42F77XAAAANGMXfjYhQ8mKiip0IwV2yUpJESdaRe+plafPj18NBioAuHqaFNrh9+n7RTAr58YrUp3MwUQAAAggG3Mw0CAghUUlFR0yzlQfr+hz79qUGlFbchoVXmb57Z1XkJsyJqq7IwUXTgwkSmAAACgTyJAhYEABavw+Q0Vl1Wrsq5RaclxGp+VKoe9e0aHvqpv1scVJwNVaYVXn1Ye7XB7dGeMXZcMSg5ZV3VpOlMAAQBA9CNAhYEAhb6qscWnzyqPBgPV7vJafVxR1+kUwAv6J7TbsIIpgAAAIJoQoMJAgAJO8vsNHfrqWMj0v9IKb8jUwrZSE53ttla/cECiYpgCCAAAIhABKgwEKODMqgNTANvuAljV+RTAS9OTQ4LVpRluJbnY8BMAAFgbASoMBCjg7DS2BHYBDN2wor7Z12H7Yf0T2m1YMcjtYgogAACwDAJUGAhQQPfx+w0drD4WMv2vtNwrj/f0UwAD26pnZ7iVxRRAAABgEgJUGAhQQM/78miTPq6oCxmt2ldV3+EUQFdgCmCb0apL091KZAogAADoYQSoMBCgAHM0tvj0yeG6kJGqjys6ngJos0nD+ie227AiLZkpgAAAoPsQoMJAgAKsIzAFcHe5N2S06rC3qcP2/ROdIYHq64PdyhqQ1G3nZwEAgL6FABUGAhRgfUeONrXbBXBf1VF1MANQcbF2XZLuDt0FMD2ZKYAAAOCMCFBhIEABkamxxae9nrqQDSs+rvDqWCdTALP6J+qytqNVGW4NZAogAABogwAVBgIUED38fkMHqo8fBLy7vDYYrirrOp4COCDJqcvajFQxBRAAgL6NABUGAhQQ/arqTkwBbDNatf80UwAvTXefsgtgshKcTAEEACDaEaDCQIAC+qaGZp/2BncBrD2xC2CdGlo6mQI4oKNdAONMqBwAAPQUAlQYCFAAAnx+Qwe+rA+OVO0+MVpV1ekUQFdIoAocBMwUQAAAIhMBKgwEKABnUlnXePwg4OAugLXaf6ReHf3J2XYK4NeDuwC6Fe909H7hAACgSwhQYSBAATgbx5pb2+0CuKeTKYD2wBTAwSkho1UDk10mVA4AADpDgAoDAQpAd/H5Df3jy/qQ86p2l3t15GjHUwAHJrvarasa1v/spgD6/IaKy6pVWdeotOQ4jc9KjaiphJFePwAgOhCgwkCAAtDTKusaQ0JVaYVXZZ1MAYyPdejSjORTDgI+/RTAgpIKLVhTqoraxuC1jJQ4zb8hW1NGZPTER+pWkV4/ACB6EKDCQIACYIZjza3a46kLCVZ7PF41tvjbtbXbpAsHJrUbrRqQ5FJBSYVmrNiuU/8QD4zdLLljtKVDSKTXDwCILgSoMBCgAFiFz2+o7Eh9yEhVaXmtjhxt7rD9wCSnvI2tamptH7qk4yEkPSVO7877J0tOh/P5DX3zlxtCRp7asnr9AIDoQ4AKAwEKgNVV1jUe31L9RKj6uNyrsi87ngLYGZvteCCx2Wwn/nviuo7fsAXb2NrcO9k+0EaBa6c8T8Fntr138nu0bR/Q1OrrNBy2NemyNA1PS1KiM0aJrhgluRxKdMUE3ye6HEpyxSjBGaMkV4ziYu0h3wcAgHARoMJAgAIQieqbWvXy3/Zr0V8/NbsUy7Hb1CZgHQ9XicGA5TgRwo6/b3s/0eVoE9JilHDiXnysg0AGAH1EuNkgphdrAgB0g0RXjCZk9Zd05gC19I7RGn3BeZIhGZIMQzJOrDoygteMkBGtQJu296WTX68299q1P+X5p94PPGfX5zV6/M3dZ6z/5tHn67wEp+qbW3W0yadjTa062tSq+uZW1Tf5VN/UevzVfHwLeb8h1TW2qq6x9YzPDofdJiU6jweqQLgKhLNEV5vA5WwbxmKU6HR0eC/BSSADgEhHgAKACDQ+K1UZKXHy1Da224RBOrmG6DvZ6ZZcQzTy/BS9tGnfGet/5vujwqrf7zd0rKVNwGry6WhTq441n3xfHwxex8NYfaf3fapvbpVhnAhkTa2qa2qV1PGW9F1hs0kJsW3C2BnC1+lGxxJdMUqIdchuwZ8vAEQzAhQARCCH3ab5N2RrxortskkhISTwz+n5N2RbMjxJ3V+/3W5T0omAkdYN9fn9hhpafCEjXScDWZuRrxNh62jb922CWtv3/hMjdPXNPtU3+1RZd+6BTJISQgKXI7geLLBmLOE068faBrPA11r19wwAWAVroFgDBSCCRfo5SpFef7gMw1Bjiz8YtI6HsZPBLDANsf6U+yeD2cn7gWv+HvrbOz44QtY2jIWGr0AYSwj82hkYHWsT1E60J5ABiBRsIhEGAhSAaODzGyouq1ZlXaPSkuM0Pis1ov7RGun1m8EwDDW1tg9kIYErMHJ2YjTs2IlpjW3XkwUDWbNPvh5KZHGx9g438+hwuqLzNGvLTqw9i3HYe6ROAOixAPXOO+/o2Wef1bZt21RRUaHVq1dr6tSpwfuHDx/WvHnz9L//+7+qqanRxIkT9Zvf/EYXX3xxsE1jY6P+/d//XatWrVJTU5Nyc3P10ksvadCgQcE2Bw8e1IwZM7Rx40YlJSVp2rRpWrhwoWJiTs463LRpk+bOnavdu3crMzNTjz32mO66666wPwsBCgCAk4EsELzCWT/WdppioH3g1/VNrWrtoUDmirEH14IlOsNYK9Z2ymIHYS2WQAbghB7bha++vl6jRo3SPffco5tuuinknmEYmjp1qmJjY/Xmm2/K7Xbr17/+tSZNmqTS0lIlJiZKkubMmaN169bpjTfeUEpKimbOnKmbbrpJf//73yVJPp9PeXl5Sk9P15YtW1RRUaEf/ehHio2N1VNPPSVJKisrU15enqZPn65XX31V69ev13333aeMjAzl5uZ29WMBANBn2Ww2xcU6FBfrUP+k7nlmU6uv8/DVZlri0abWE5t/dBzM6puPj541+/wnnutXU2uzvqzvnjqdgUB22s08Tre2LDS8OWMIZEC0O6cpfDabLWQE6pNPPtEll1yikpISff3rX5ck+f1+paen66mnntJ9992n2tpaDRw4UCtXrtT3v/99SdKePXt02WWXqaioSFdddZXeeustXX/99SovLw+OSi1dulTz5s1TVVWVnE6n5s2bp3Xr1qmkpCRYz6233qqamhoVFBR0WG9TU5Oamk4u2vV6vcrMzGQECgAAi2s+MUIWzvqwtvc7W2/W3OrvkTqdDvspo2Pt148lBLfEbzOdsZONPlwxjh6pE0B7ppwDFQgncXFxwWt2u10ul0vvvvuu7rvvPm3btk0tLS2aNGlSsM2ll16qoUOHBgNUUVGRRo4cGTKlLzc3VzNmzNDu3bt15ZVXqqioKOQZgTazZ8/utL6FCxdqwYIF3fRpAQBAb3HG2OWMceq8RGe3PK/Fd5pAdtrdFduEseaTa8uaTgSyZp9fzcf8qjnW0i11xjpsnWzmEXow9Kmbd4QcFN2mvSvGzllkwDnq1gAVCEKPPvqofvvb3yoxMVHPPfecPv/8c1VUVEiSPB6PnE6n+vXrF/K1gwYNksfjCbZpG54C9wP3TtfG6/WqoaFB8fHx7ep79NFHNXfu3OD7wAgUAADoW2IddvVLcKpfQvcFsmNNvjbTFU8GsZO7K/rarC0LvX/q2WSNLf4TzzVU29Ci2obuCWQxdlvo4c7tdlI8EcxOWTvW0cYeSQQy9FHdGqBiY2P1xz/+Uffee69SU1PlcDg0adIkffe735UVNvtzuVxyuVxmlwEAAKJMrMOulAS7UhJiu+V5rT6/6pt9JzbnOGX9WJvzyNquHzva3Hpid8WT68cCI2YNLb7jz/Ub8ja2ytvY2i11Ok4JZKfdSbGDnRdPDWRxsQQyWF+3H6Q7ZswY7dixQ7W1tWpubtbAgQM1YcIEjR07VpKUnp6u5uZm1dTUhIxCHT58WOnp6cE2xcXFIc89fPhw8F7gv4Frbdu43e4OR58AAAAiRYzDrpR4u1LiuyeQ+fxGyJTDztaPne48slN/HXhuXWOr6ropkNltCq4BO+1Ois5TR8dCN/oIbOyR4HQQyNDtuj1ABaSkpEiSPv30U33wwQf6+c9/Lul4wIqNjdX69et18803S5L27t2rgwcPKicnR5KUk5OjX/ziF6qsrFRa2vEz5QsLC+V2u5WdnR1s85e//CXkexYWFgafAQAAgOMcdpvccbFyx3VPIPP7DR1rOSV8tVkrdrTplLB2mvVjgeAmSX5DqmtqVV1T9wQyWzCQOUKCWGDtWGebd5xcW9bmvStGCbEO2Tmnrs/rcoA6evSoPvvss+D7srIy7dixQ6mpqRo6dKjeeOMNDRw4UEOHDtWuXbv04IMPaurUqZo8ebKk48Hq3nvv1dy5c5Wamiq3261Zs2YpJydHV111lSRp8uTJys7O1p133qlnnnlGHo9Hjz32mPLz84NT8KZPn67Fixfr4Ycf1j333KMNGzbo9ddf17p167qjXwAAANAJu92mpBOjQYPO3PyM/H5DDSGBrP16srbrxwLryTpeb3b814YhGYZ09EQbqemMdZyJzSYlxLbdPbHt+rGT68lOHTFL6GxjD2dMnw1kkXyIepe3Md+0aZOuvfbadtenTZum5cuX64UXXtCzzz6rw4cPKyMjQz/60Y/0+OOPy+k8uUgzcJDuH/7wh5CDdAPT8yTpwIEDmjFjhjZt2qTExERNmzZNTz/9dLuDdOfMmaPS0lINGTJEjz/+OAfpAgAA9HGGcTyQhRwGfcr6sVN3XOzsPLLA+x46G1oJTkcHOyl2fPBzp2vL2oyiRUIIKSip0II1paqobQxey0iJ0/wbsjVlRIZpdYWbDc7pHKhIR4ACAADAmRiGocYWf6dTEo+dGsya22zm0cHasvqmngtk8bGOkEB1pt0VTxfWEp0OxTi693DogpIKzVixXad+/EDsW3LHaNNClCnnQAEAAADRxmazKd7pULzToYHJ576js2EYamr169Qt7YObdLQJX0dPrBdru36s7aja0RMBzXcikTW0+NTQ4tORo83nXKckuWLsp9lJMXTzjsBmHm3vB0fOnMd3WVywprRdeJIkQ8dD1II1pfpOdrqlR9IIUAAAAEAvstlsiot1KC7WoQFJ3RfI2p8v1v48slN3Xgw9SPpk2xbf8ZjT1OpXU2uzvqzvnkB22s8hqaK2UcVl1coZ3r/Hv9/ZIkABAAAAEaxtIOuf1D3PbGr1hawBC27e0em29+3XjwWmN9Y3+dTs84f9vSvrGs/cyEQEKAAAAAAhXDEOuWIcSk10nrlxGJpb/dq8t1I//u9tZ2yblhzXLd+zp3TvqjAAAAAAOIUzxq5/umyQMlLi1NnqJpuO78Y3Piu1N0vrMgIUAAAAgB7nsNs0/4ZsSWoXogLv59+QbekNJCQCFAAAAIBeMmVEhpbcMVrpKaHT9NJT4kzdwrwrWAMFAAAAoNdMGZGh72Snq7isWpV1jUpLPj5tz+ojTwEEKAAAAAC9ymG3WXqr8tNhCh8AAAAAhIkABQAAAABhIkABAAAAQJgIUAAAAAAQJgIUAAAAAISJAAUAAAAAYSJAAQAAAECYCFAAAAAAECYCFAAAAACEiQAFAAAAAGEiQAEAAABAmAhQAAAAABAmAhQAAAAAhCnG7ALMZBiGJMnr9ZpcCQAAAAAzBTJBICN0pk8HqLq6OklSZmamyZUAAAAAsIK6ujqlpKR0et9mnCliRTG/36/y8nIlJyfLZrN1yzO9Xq8yMzN16NAhud3ubnkmwkPfm4v+Nxf9by7631z0v7nof3PR/93HMAzV1dVp8ODBsts7X+nUp0eg7Ha7hgwZ0iPPdrvd/CY2CX1vLvrfXPS/ueh/c9H/5qL/zUX/d4/TjTwFsIkEAAAAAISJAAUAAAAAYSJAdTOXy6X58+fL5XKZXUqfQ9+bi/43F/1vLvrfXPS/ueh/c9H/va9PbyIBAAAAAF3BCBQAAAAAhIkABQAAAABhIkABAAAAQJgIUAAAAAAQJgIUAAAAAISJANWNXnzxRQ0bNkxxcXGaMGGCiouLzS4pKi1cuFDjxo1TcnKy0tLSNHXqVO3duzekTWNjo/Lz89W/f38lJSXp5ptv1uHDh02qOHo9/fTTstlsmj17dvAafd+zvvjiC91xxx3q37+/4uPjNXLkSH3wwQfB+4Zh6IknnlBGRobi4+M1adIkffrppyZWHD18Pp8ef/xxZWVlKT4+XsOHD9fPf/5ztd3Mlv7vPu+8845uuOEGDR48WDabTX/6059C7ofT19XV1br99tvldrvVr18/3XvvvTp69GgvforIdbr+b2lp0bx58zRy5EglJiZq8ODB+tGPfqTy8vKQZ9D/Z+9Mv//bmj59umw2mxYtWhRynf7vOQSobvLaa69p7ty5mj9/vrZv365Ro0YpNzdXlZWVZpcWdTZv3qz8/Hxt3bpVhYWFamlp0eTJk1VfXx9sM2fOHK1Zs0ZvvPGGNm/erPLyct10000mVh193n//ff32t7/V5ZdfHnKdvu85X331la6++mrFxsbqrbfeUmlpqX71q1/pvPPOC7Z55pln9MILL2jp0qV67733lJiYqNzcXDU2NppYeXT45S9/qSVLlmjx4sX6+OOP9ctf/lLPPPOMfvOb3wTb0P/dp76+XqNGjdKLL77Y4f1w+vr222/X7t27VVhYqLVr1+qdd97R/fff31sfIaKdrv+PHTum7du36/HHH9f27dv1xz/+UXv37tX3vve9kHb0/9k70+//gNWrV2vr1q0aPHhwu3v0fw8y0C3Gjx9v5OfnB9/7fD5j8ODBxsKFC02sqm+orKw0JBmbN282DMMwampqjNjYWOONN94Itvn4448NSUZRUZFZZUaVuro64+KLLzYKCwuNb33rW8aDDz5oGAZ939PmzZtnfPOb3+z0vt/vN9LT041nn302eK2mpsZwuVzGH/7wh94oMarl5eUZ99xzT8i1m266ybj99tsNw6D/e5IkY/Xq1cH34fR1aWmpIcl4//33g23eeustw2azGV988UWv1R4NTu3/jhQXFxuSjAMHDhiGQf93p876//PPPzfOP/98o6SkxLjggguM5557LniP/u9ZjEB1g+bmZm3btk2TJk0KXrPb7Zo0aZKKiopMrKxvqK2tlSSlpqZKkrZt26aWlpaQn8ell16qoUOH8vPoJvn5+crLywvpY4m+72l//vOfNXbsWP3gBz9QWlqarrzySr388svB+2VlZfJ4PCH9n5KSogkTJtD/3eAb3/iG1q9fr08++USS9NFHH+ndd9/Vd7/7XUn0f28Kp6+LiorUr18/jR07Nthm0qRJstvteu+993q95mhXW1srm82mfv36SaL/e5rf79edd96phx56SF//+tfb3af/e1aM2QVEgyNHjsjn82nQoEEh1wcNGqQ9e/aYVFXf4Pf7NXv2bF199dUaMWKEJMnj8cjpdAb/EA8YNGiQPB6PCVVGl1WrVmn79u16//33292j73vW/v37tWTJEs2dO1c/+clP9P777+uBBx6Q0+nUtGnTgn3c0Z9F9P+5e+SRR+T1enXppZfK4XDI5/PpF7/4hW6//XZJov97UTh97fF4lJaWFnI/JiZGqamp/Dy6WWNjo+bNm6fbbrtNbrdbEv3f0375y18qJiZGDzzwQIf36f+eRYBCRMvPz1dJSYneffdds0vpEw4dOqQHH3xQhYWFiouLM7ucPsfv92vs2LF66qmnJElXXnmlSkpKtHTpUk2bNs3k6qLf66+/rldffVUrV67U17/+de3YsUOzZ8/W4MGD6X/0WS0tLfqXf/kXGYahJUuWmF1On7Bt2zY9//zz2r59u2w2m9nl9ElM4esGAwYMkMPhaLfT2OHDh5Wenm5SVdFv5syZWrt2rTZu3KghQ4YEr6enp6u5uVk1NTUh7fl5nLtt27apsrJSo0ePVkxMjGJiYrR582a98MILiomJ0aBBg+j7HpSRkaHs7OyQa5dddpkOHjwoScE+5s+invHQQw/pkUce0a233qqRI0fqzjvv1Jw5c7Rw4UJJ9H9vCqev09PT223k1Nraqurqan4e3SQQng4cOKDCwsLg6JNE//ekv/3tb6qsrNTQoUODfxcfOHBA//7v/65hw4ZJov97GgGqGzidTo0ZM0br168PXvP7/Vq/fr1ycnJMrCw6GYahmTNnavXq1dqwYYOysrJC7o8ZM0axsbEhP4+9e/fq4MGD/DzO0be//W3t2rVLO3bsCL7Gjh2r22+/Pfhr+r7nXH311e227P/kk090wQUXSJKysrKUnp4e0v9er1fvvfce/d8Njh07Jrs99K9Nh8Mhv98vif7vTeH0dU5OjmpqarRt27Zgmw0bNsjv92vChAm9XnO0CYSnTz/9VH/961/Vv3//kPv0f8+58847tXPnzpC/iwcPHqyHHnpIb7/9tiT6v8eZvYtFtFi1apXhcrmM5cuXG6Wlpcb9999v9OvXz/B4PGaXFnVmzJhhpKSkGJs2bTIqKiqCr2PHjgXbTJ8+3Rg6dKixYcMG44MPPjBycnKMnJwcE6uOXm134TMM+r4nFRcXGzExMcYvfvEL49NPPzVeffVVIyEhwVixYkWwzdNPP23069fPePPNN42dO3caN954o5GVlWU0NDSYWHl0mDZtmnH++ecba9euNcrKyow//vGPxoABA4yHH3442Ib+7z51dXXGhx9+aHz44YeGJOPXv/618eGHHwZ3eQunr6dMmWJceeWVxnvvvWe8++67xsUXX2zcdtttZn2kiHK6/m9ubja+973vGUOGDDF27NgR8ndxU1NT8Bn0/9k70+//U526C59h0P89iQDVjX7zm98YQ4cONZxOpzF+/Hhj69atZpcUlSR1+Fq2bFmwTUNDg/Fv//ZvxnnnnWckJCQY//zP/2xUVFSYV3QUOzVA0fc9a82aNcaIESMMl8tlXHrppcbvfve7kPt+v994/PHHjUGDBhkul8v49re/bezdu9ekaqOL1+s1HnzwQWPo0KFGXFycceGFFxo//elPQ/7BSP93n40bN3b4Z/20adMMwwivr7/88kvjtttuM5KSkgy3223cfffdRl1dnQmfJvKcrv/Lyso6/bt448aNwWfQ/2fvTL//T9VRgKL/e47NMNocoQ4AAAAA6BRroAAAAAAgTAQoAAAAAAgTAQoAAAAAwkSAAgAAAIAwEaAAAAAAIEwEKAAAAAAIEwEKAAAAAMJEgAIAAACAMBGgAAAAACBMBCgAAAAACBMBCgAAAADC9P8D/+8PbuAfWTAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "results = GV_KNN.cv_results_\n", + "mse = -results['mean_test_score']\n", + "k_values = results['param_n_neighbors'].data\n", + "plt.figure(figsize=(10, 6))\n", + "plt.plot(k_values, mse, marker='o', linestyle='-')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3aOBO56I8Js8" + }, + "source": [ + "The code shows that the elboq point occurs around n=30." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "X5XtlzMXljps" + }, + "source": [ + "## 9. Artificial Neural Networks (ANN)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "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": 76, + "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": 77, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vd1fDjQiltP4", + "outputId": "54545c64-073b-41c5-d03a-cc9cbff204f2" + }, + "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": 78, + "metadata": { + "id": "ZIf94WLMlv04" + }, + "outputs": [], + "source": [ + "# Compile the model\n", + "model9.compile(loss='mean_squared_error', optimizer='adam')" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FX5DTKqslxWf", + "outputId": "d2353bcd-1508-469b-e4a4-9344af25a2cc" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 79, + "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": 80, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "OVW2qpNsmGVq", + "outputId": "36e4620e-9823-4b12-d6d2-509c0bcf2a88" + }, + "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" + ] + } + ], + "source": [ + "# Make predictions on the test set\n", + "pred9 = model9.predict(X_test_scaled).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "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": 82, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5zuwkC1emmh3", + "outputId": "3154af15-1dba-4edc-9b4e-f012f6ff6886" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.7525331773064208\n", + "MAE: 1.7070852219826735\n", + "MAPE: 0.011166669166884299\n", + "Accuracy: 0.901060070671378\n", + "Precision: 0.9446640316205533\n", + "Confusion Matrix:\n", + " [[558 42]\n", + " [ 98 717]]\n", + "Recall: 0.8797546012269939\n", + "F1 Score: 0.9110546378653113\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": 83, + "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": 84, + "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": 85, + "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": 86, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "r066pVYpnXH5", + "outputId": "faddb972-58cc-43a7-eb04-4829ec65f019" + }, + "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": [ + "# 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": 87, + "metadata": { + "id": "YpSfHu6gov35" + }, + "outputs": [], + "source": [ + "# Compile the model\n", + "model.compile(loss='mean_squared_error', optimizer='adam')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0vHjcluaoxzP", + "outputId": "8ca3e888-84d1-4c79-e045-cfa9d3e76d5f" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 88, + "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": 89, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gEE06_TjozYv", + "outputId": "5a39a4df-0a56-45f5-ac4b-c2b00f0f15d0" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m44/44\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step\n" + ] + } + ], + "source": [ + "# Make predictions on the test set\n", + "y_pred = model.predict(X_test_reshaped).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "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": 91, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "i_6-UUDhpi0c", + "outputId": "af51da10-aedc-479d-80ca-96880408422c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 11.43451426022395\n", + "MAE: 9.387460991819042\n", + "MAPE: 0.1689158970124316\n", + "Accuracy: 0.9957325746799431\n", + "Precision: 0.9965277777777778\n", + "Recall: 0.9930795847750865\n", + "F1 Score: 0.9948006932409013\n", + "Confusion Matrix:\n", + " [[826 2]\n", + " [ 4 574]]\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", + "execution_count": 92, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "qpWPtph9CGip", + "outputId": "746d4c8b-bd76-4873-d9b3-b21e078b15bd" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABE9klEQVR4nO3deXhM9+LH8c8kZBFJrNmKiKWiqP0GRauClqqtiqvXllu9FbXVbWmLul2Utm6L4rYlVENUieqGNIq217XH0qo1liJBySIIkvP7w2N+HQkyMjGT0/freeZ5mu85c84nyan55DvnnLEYhmEIAADApNycHQAAAKAoUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAOM2rr74qi8WiM2fOFPm+Vq5cqQYNGsjLy0sWi0VpaWlFvs/ibN68ebJYLDp8+LCzowCFRtkBisD1F4o/PgICAtSmTRt9++23dz3Pl19+qc6dOyswMFAeHh4qV66cWrdurXfffVcZGRl3Pc/d9vvvv+vJJ5+Ut7e3PvjgAy1YsEA+Pj63fd7MmTNlsVgUERFxF1ICKColnB0AMLN//etfCgsLk2EYSk1N1bx589SxY0d9+eWXeuyxx4p8/7m5uYqKitK8efNUr149DRkyRJUrV1ZmZqY2bNigV155Rd98840SExOLPIszbd68WZmZmXrttdcUGRlZ4OfFxsaqatWq2rRpkw4cOKAaNWoUYUrX8re//U29e/eWp6ens6MAhUbZAYrQo48+qiZNmli/joqKUmBgoBYtWuSQspObm6vLly/Ly8sr3+VTpkzRvHnzNHLkSL377ruyWCzWZcOHD9fJkyf1ySefFGofxcGpU6ckSWXKlCnwc5KTk/Xf//5Xy5Yt0zPPPKPY2FhNmDChiBIWTlZWVoFmquzh7u4ud3d3h24TcBbexgLuojJlysjb21slStj+nfHOO++oRYsWKl++vLy9vdW4cWN9/vnneZ5vsVg0dOhQxcbGqk6dOvL09NTKlSvz3deFCxc0efJk1alTR2+//bZN0bkuODhYL774YoH3cSc5a9WqJS8vLzVu3Fjr16/PN2taWpoGDBigMmXKyN/fXwMHDtSFCxfy/yHeYMmSJWrcuLG8vb1VoUIFPfXUUzp+/Lh1+UMPPaT+/ftLkpo2bSqLxaIBAwbcdruxsbEqW7asOnXqpCeeeEKxsbE3zT5y5EhVrVpVnp6eqlSpkvr162dzHtKlS5f06quv6t5775WXl5eCg4PVvXt3HTx4UJK0du1aWSwWrV271mbbhw8flsVi0bx586xjAwYMUOnSpXXw4EF17NhRvr6+6tu3ryTphx9+UM+ePVWlShV5enqqcuXKGjlypC5evJgn96+//qonn3xSFStWlLe3t2rVqqWXX37Zuvxm5+x8++23atWqlXx8fOTr66tOnTrp559/tlknJSVFAwcOVKVKleTp6ang4GB16dKF83/gNMzsAEUoPT1dZ86ckWEYOnXqlKZPn67z58/rqaeeslnv/fff1+OPP66+ffvq8uXLiouLU8+ePfXVV1+pU6dONuuuWbNGn332mYYOHaoKFSqoatWq+e77xx9/VFpamkaPHm33X+g324c9OdetW6fFixdr2LBh8vT01MyZM/XII49o06ZNqlu3rs26Tz75pMLCwjRp0iRt27ZNH3/8sQICAjR58uRb5pw3b54GDhyopk2batKkSUpNTdX777+vn376Sdu3b1eZMmX08ssvq1atWvrwww+tbytWr179tj+D2NhYde/eXR4eHurTp49mzZqlzZs3q2nTptZ1zp8/r1atWmnPnj0aNGiQGjVqpDNnzmjFihX67bffVKFCBeXk5Oixxx5TYmKievfureHDhyszM1MJCQnavXt3gbLc6OrVq+rQoYNatmypd955R6VKlZJ0rfhduHBBzz77rMqXL69NmzZp+vTp+u2337RkyRLr83fu3KlWrVqpZMmSGjx4sKpWraqDBw/qyy+/1BtvvHHT/S5YsED9+/dXhw4dNHnyZF24cEGzZs1Sy5YttX37dutx0qNHD/3888967rnnVLVqVZ06dUoJCQk6evToTY9XoEgZABwuJibGkJTn4enpacybNy/P+hcuXLD5+vLly0bdunWNhx9+2GZckuHm5mb8/PPPt83w/vvvG5KM5cuX24xfvXrVOH36tM0jNze3QPuwJ6ckY8uWLdaxI0eOGF5eXka3bt2sYxMmTDAkGYMGDbJ5frdu3Yzy5cvf8vu7fPmyERAQYNStW9e4ePGidfyrr74yJBnjx4+3jl3/fWzevPmW27xuy5YthiQjISHBMAzDyM3NNSpVqmQMHz7cZr3x48cbkoxly5bl2cb1n+nc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ffvtt6pYsaL279+vsmXLWteZMmWKpk2bpvnz5yssLEzjxo1Thw4d9MsvvzDbBAAACvZxEWFhYQXbmMWiQ4cOFTrUdWPGjNFPP/2kH374Id/lhmEoJCREzz//vEaPHi1JSk9PV2BgoObNm6fevXsXaD98XMTdVVxvZ06uvIrjMeaquSSOsRu5ai6JY8xexeLjIm48T+duWbFihTp06KCePXtq3bp1uueeezRkyBA9/fTT1lwpKSmKjIy0Psff318RERHasGHDTctOdna2srOzrV9nZGQU7TcCAACcxmH32SkKhw4d0qxZs1SzZk2tWrVKzz77rIYNG6b58+dLklJSUiRdu8fPHwUGBlqX5WfSpEny9/e3PipXrlx03wQAAHAqu6/GkqTffvtNK1as0NGjR3X58mWbZVOnTnVIMEnKzc1VkyZN9Oabb0qSGjZsqN27d2v27Nnq37//HW937NixGjVqlPXrjIwMCg8AACZld9lJTEzU448/rmrVqunXX39V3bp1dfjwYRmGoUaNGjk0XHBwsO677z6bsdq1a2vp0qWSpKCgIElSamqqgoODreukpqbe8gaHnp6e8vT0dGhWAADgmux+G2vs2LEaPXq0du3aJS8vLy1dulTHjh3Tgw8+qJ49ezo03AMPPJDnIyj27dun0NBQSddOnA4KClJiYqJ1eUZGhjZu3KjmzZs7NAsAACimDDuVLl3aOHDggGEYhlGmTBlj9+7dhmEYRlJSkhEaGmrv5m5p06ZNRokSJYw33njD2L9/vxEbG2uUKlXK+PTTT63rvPXWW0aZMmWML774wti5c6fRpUsXIywszLh48WKB95Oenm5IMtLT0x2a3zAM49o56M55FMdczsxGrj/HMeaquTjGik8ujjHH57pTBX39tvttLB8fH+t5OsHBwTp48KDq1KkjSTpz5owje5iaNm2q+Ph4jR07Vv/6178UFham9957T3379rWu88ILLygrK0uDBw9WWlqaWrZsqZUrV3KPHQAAIKmA99n5o65du6pTp056+umnNXr0aH3xxRcaMGCAli1bprJly+q7774rqqxFhvvs3F23O+Jc9T4Q5MqrOB5jrppL4hi7kavmkjjG7GVf0yg4h95nR5LOnj2rcuXKaerUqTp//rwkaeLEiTp//rwWL16smjVrOvRKLAAAAEcocNkJCQlR165dFRUVpXbt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mze/23EBAIALcumZnejoaC1cuFBffPGFfH19refh+Pv7y9vbW/7+/oqKitKoUaNUrlw5+fn56bnnnlPz5s0LfCUWAAAwN5cuO7NmzZIkPfTQQzbjMTExGjBggCTp3//+t9zc3NSjRw9lZ2erQ4cOmjlz5l1OCgAAXFWxus9OUeE+O3dXcb0PBLnyKo7HmKvmkjjGbuSquSSOMXtxnx0AAIAiRNkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmZpqy88EHH6hq1ary8vJSRESENm3a5OxIAADABZii7CxevFijRo3ShAkTtG3bNtWvX18dOnTQqVOnnB0NAAA4mSnKztSpU/X0009r4MCBuu+++zR79myVKlVKc+fOdXY0AADgZMW+7Fy+fFlbt25VZGSkdczNzU2RkZHasGGDE5MBAABXUMLZAQrrzJkzysnJUWBgoM14YGCgfv3113yfk52drezsbOvX6enpkqSMjIyiC+oErvrtkMs+rppLct1s5LIPueznqtn+bLmuv24bhnHL9Yp92bkTkyZN0sSJE/OMV65c2Qlpio6/v7MT5I9c9nHVXJLrZiOXfchlP1fN9mfNlZmZKf9b7KTYl50KFSrI3d1dqampNuOpqakKCgrK9zljx47VqFGjrF/n5ubq7NmzKl++vCwWS5HmLaiMjAxVrlxZx44dk5+fn7Pj2HDVbOSyj6vmklw3G7nsQy77uWo2V81lGIYyMzMVEhJyy/WKfdnx8PBQ48aNlZiYqK5du0q6Vl4S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y5fl7u6uoKAgl/l8KgD/j7ID/AmcP39eixcv1rPPPqtOnTpp3rx5edb58ssv1bRpU3l5ealChQrq1q2bdVl2drZefPFFVa5cWZ6enqpRo4bmzJkjSZo3b57KlCljs63ly5fLYrFYv3711VfVoEEDffzxxwoLC5OXl5ckaeXKlWrZsqXKlCmj8uXL67HHHtPBgwdttvXbb7+pT58+KleunHx8fNSkSRNt3LhRhw8flpubm7Zs2WKz/nvvvafQ0NB8P+n6qaee0sWLF7V06VKb8eTkZK1du1ZRUVE6ePCgunTposDAQJUuXVpNmzbVd999Z7N+1apV9dprr6lfv37y8/PT4MGD87yNlZOTo6ioKIWFhcnb21u1atXS+++/n89vR5o4caIqVqwoPz8//eMf/7hlGczOztbo0aN1zz33yMfHRxEREVq7dq11+ZEjR9S5c2eVLVtWPj4+qlOnjr755pubbg/4M6DsAH8Cn332mcLDw1WrVi099dRTmjt3rv54i62vv/5a3bp1U8eOHbV9+3YlJibqL3/5i3V5v379tGjRIk2bNk179uzRf/7zH7vvOnvgwAEtXbpUy5YtsxaCrKwsjRo1Slu2bFFiYqLc3NzUrVs3a1E5f/68HnzwQR0/flwrVqzQjh079MILLyg3N1dVq1ZVZGSkYmJibPYTExOjAQMGyM0t7z9vFSpUUJcuXTR37lyb8Xnz5qlSpUpq3769zp8/r44dOyoxMVHbt2/XI488os6dO+vo0aM2z3nnnXdUv359bd++XePGjcuzr9zcXFWqVElLlizRL7/8ovHjx+ull17SZ599ZrNeYmKi9uzZo7Vr12rRokVatmyZJk6ceNOf49ChQ7VhwwbFxcVp586d6tmzpx555BHt379fkhQdHa3s7GytX79eu3bt0uTJk7lDMODEDyEFcJe0aNHCeO+99wzDMIwrV64YFSpUML7//nvr8ubNmxt9+/bN97l79+41JBkJCQn5Lo+JiTH8/f1txuLj440//vMyYcIEo2TJksapU6dumfP06dOGJGPXrl2GYRjGf/7zH8PX19f4/fff811/8eLFRtmyZY1Lly4ZhmEYW7duNSwWi5GcnHzTfaxcudKwWCzGoUOHDMO49inOoaGhxiuvvHLT59SpU8eYPn269evQ0FCja9euNuskJycbkozt27ffdDvR0dFGjx49rF/379/fKFeunJGVlWUdmzVrllG6dGkjJyfHMAzbT6Q/cuSI4e7ubhw/ftxmu23btjXGjh1rGIZh1KtXz3j11VdvmgH4M2JmBzC5vXv3atOmTerTp48kqUSJEurVq5f1bShJSkpKUtu2bfN9flJSktzd3fXggw8WKkdoaKgqVqxoM7Z//3716dNH1apVk5+fn6pWrSpJ1lmUpKQkNWzYUOXKlct3m127dpW7u7vi4+MlXZuhadOmjXU7+WnXrp0qVapknRFKTEzU0aNHNXDgQEnXZpNGjx6t2rVrq0yZMipdurT27NmTZ2anSZMmt/2eP/jgAzVu3FgVK1ZU6dKl9eGHH+bZTv369VWqVCnr182bN9f58+d17NixPNvbtWuXcnJydO+999p8rtO6deusb/8NGzZMr7/+uh544AFNmDBBO3fuvG1OwOwoO4DJzZkzR1evXlVISIhKlCihEiVKaNasWVq6dKnS09MlSd7e3jd9/q2WSZKbm5vNW2KSdOXKlTzr+fj45Bnr3Lmzzp49q48++kgbN27Uxo0bJf3/Ccy327eHh4f69eunmJgYXb58WQsXLtSgQYNum3fAgAGaP3++cnNzFRMTozZt2qhatWqSpNGjRys+Pl5vvvmmfvjhByUlJalevXp5zqPJ7/v5o7i4OI0ePVpRUVFavXq1kpKSNHDgwEKdnH3+/Hm5u7tr69atSkpKsj727NljPR/o73//uw4dOqS//e1v2rVrl5o0aaLp06ff8T4BM6DsACZ29epVffLJJ3r33XdtXhx37NihkJAQLVq0SJJ0//33KzExMd9t1KtXT7m5uVq3bl2+yytWrKjMzExlZWVZxwpyr5nff/9de/fu1SuvvKK2bduqdu3aOnfunM06999/v5KSknT27Nmbbufvf/+7vvvuO82cOVNXr15V9+7db7vvgQMH6tixY1q2bJni4+MVFRVlXfbTTz9pwIAB6tatm+rVq6egoCAdPnz4ttu80U8//aQWLVpoyJAhatiwoWrUqJHn5GtJ2rFjh83VYf/73/9UunRpVa5cOc+6DRs2VE5Ojk6dOqUaNWrYPIKCgqzrVa5cWf/4xz+0bNkyPf/88/roo4/szg+YCWUHMLGvvvpK586dU1RUlOrWrWvz6NGjh/WtrAkTJmjRokWaMGGC9uzZYz2xVbp25VH//v01aNAgLV++3Hrl0vUTbSMiIlSqVCm99NJLOnjwoBYuXJjv1V43Klu2rMqXL68PP/xQBw4c0Jo1azRq1Cibdfr06aOgoCB17dpVP/30kw4dOqSlS5dqw4YN1nVq166tZs2a6cUXX1SfPn1uOxskSWFhYXr44Yc1ePBgeXp62hSkmjVrWk+i3rFjh/7617/me2XX7dSsWVNbtmzRqlWrtG/fPo0bN06bN2/Os97ly5cVFRWlX375Rd98840mTJigoUOH5nuC9b333qu+ffuqX79+WrZsmZKTk7Vp0yZNmjRJX3/9tSRpxIgRWrVqlZKTk7Vt2zZ9//33ql27tt35ATOh7AAmNmfOHEVGRsrf3z/Psh49emjLli3auXOnHnroIS1ZskQrVqxQgwYN9PDDD2vTpk3WdWfNmqUnnnhCQ4YMUXh4uJ5++mnrTE65cuX06aef6ptvvlG9evW0aNEivfrqq7fN5ubmpri4OG3dulV169bVyJEj9fbbb9us4+HhodWrVysgIEAdO3ZUvXr19NZbb8nd3d1mvaioKF2+fPm2b2Hd+Jxz587pr3/9q/VSeEmaOnWqypYtqxYtWqhz587q0KGDGjVqVODtXvfMM8+oe/fu6tWrlyIiIvT7779ryJAhedZr27atatasqdatW6tXr156/PHHb/nzi4mJUb9+/fT888+rVq1a6tq1qzZv3qwqVapIunbJe3R0tGrXrq1HHnlE9957r2bOnGl3fsBMLMaNb7YDQDHz2muvacmSJZyMCyBfzOwAKLbOnz+v3bt3a8aMGXruueecHQeAi6LsACi2hg4dqsaNG+uhhx6y6y0sAH8uvI0FAABMjZkdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgav8H/GzqtXu8YtUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, accuracy2_1*100, accuracy3*100, accuracy4*100, accuracy5*100, accuracy6*100, accuracy7*100, accuracy8*100, accuracy8_1*100, accuracy9*100, accuracy10*100]\n", + "\n", + "# List of corresponding labels for each accuracy\n", + "labels = ['1', '2', '2_1', '3', '4', '5', '6', '7', '8', '8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "RFaaCNH6Cfoa", + "outputId": "e624dad4-1663-4a68-90ec-b569e5b0b46a" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIKElEQVR4nO3dfVxUZf7/8fdwN+ANICh3BUpmqWlKoGZZ3lHepWmYeZPhzdpWWqmblbumZW2k3Wi5pNaWZGm2Vpq1SZqpVOIdhltmZqlpJmipIBoocP3+8Mv8HEEDBWY4vZ6Px3k8mutcc53PnDkO785cZ47NGGMEAABgUR6uLgAAAKAqEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAWM7jjz8um82mX3/9tcq3lZqaqtatW8vX11c2m01Hjx6t8m0CqBjCDlCDpKSkyGazOS0hISHq3Lmzli9fXu31fPjhh+rdu7dCQ0Pl4+OjoKAg3XjjjXr++eeVm5tb7fVUt99++00DBgyQn5+fkpOT9eabb6p27dpl9j37vfPy8tIll1yiYcOGaf/+/aX6d+rUSTabTU2aNClzvJUrVzrGevfdd53Wff311+rfv78aNmwoX19fXXLJJbrppps0a9Ysp36NGjUqdTyVLN27d7/AvQK4Hy9XFwCg4qZOnaro6GgZY5Sdna2UlBT17NlTH374oW655ZYq335xcbFGjhyplJQUtWzZUvfdd58iIyN17Ngxpaena9KkSfr444+1atWqKq/FlTZt2qRjx47pySefVHx8fLmeU/Le5efna/369UpJSdEXX3yhb775Rr6+vk59fX199cMPP2jjxo1q27at07oFCxbI19dX+fn5Tu3r1q1T586dFRUVpVGjRiksLEz79u3T+vXr9eKLL+r+++936t+6dWv97W9/K1VnREREuV4PUBMQdoAaqEePHoqLi3M8HjlypEJDQ/X2229XStgpLi7WyZMnS/3xLTF9+nSlpKRo3Lhxev7552Wz2RzrHnzwQR04cEDz58+/qG3UBAcPHpQkBQYGlvs5Z753f/nLX1S/fn1NmzZNy5Yt04ABA5z6Nm7cWIWFhXr77bedwk5+fr6WLFmiXr166b333nN6zj//+U8FBARo06ZNpeoqqfdMl1xyie68885y1w/URHyNBVhAYGCg/Pz85OXl/P8vzz33nK677joFBwfLz89PsbGxpb7ykCSbzaYxY8ZowYIFuuqqq2S325Wamlrmtk6cOKFp06bpqquu0rPPPusUdEqEh4frkUceKfc2LqTOK6+8Ur6+voqNjVVaWlqZtR49elTDhg1TYGCgAgICNHz4cJ04caLsnXiWxYsXKzY2Vn5+fqpfv77uvPNOp6+bOnXqpMTERElSmzZtZLPZNGzYsHKNfaYbbrhBkvTjjz+WuX7QoEF65513VFxc7Gj78MMPdeLEiVLhqGScq666qswAFhISUuH6ACsg7AA1UE5Ojn799VcdOnRI27Zt07333qu8vLxS/4f+4osvKiYmRlOnTtXTTz8tLy8v3X777frvf/9baszPPvtM48aN0x133KEXX3xRjRo1KnPbX3zxhY4ePapBgwbJ09OzQnWfaxsVqXPt2rUaO3as7rzzTk2dOlW//fabunfvrm+++aZU3wEDBujYsWNKSkrSgAEDlJKSoieeeOIP60xJSdGAAQPk6emppKQkjRo1Su+//746dOjgmID8j3/8Q3fffbek019Nvfnmm/rrX/9aof0hSXv27JEk1atXr8z1gwcP1oEDB7RmzRpH28KFC9W1a9cyw0vDhg2VkZFR5v4oy6lTp/Trr7+WWn7//fcKvxbAbRkANca8efOMpFKL3W43KSkppfqfOHHC6fHJkydNixYtTJcuXZzaJRkPDw+zbdu2P6zhxRdfNJLM0qVLndoLCwvNoUOHnJbi4uJybaMidUoymzdvdrT99NNPxtfX1/Tr18/RNmXKFCPJjBgxwun5/fr1M8HBwed9fSdPnjQhISGmRYsW5vfff3e0f/TRR0aSmTx5sqOt5P3YtGnTecc8s++nn35qDh06ZPbt22feffdd06BBA2O3282+ffuc+nfs2NFcddVVxhhj4uLizMiRI40xxhw5csT4+PiYN954w6xevdpIMosXL3Y8b8WKFcbT09N4enqa9u3bm4cffth88skn5uTJk6VqatiwYZnHkySTlJT0h68JqCk4swPUQMnJyVq5cqVWrlypt956S507d9Zf/vIXvf/++079/Pz8HP995MgR5eTk6IYbbtCWLVtKjdmxY0c1b978D7ddcpVVnTp1nNq//vprNWjQwGn57bffyrWNitTZvn17xcbGOh5HRUXp1ltv1SeffKKioiKnvvfcc4/T4xtuuEG//fbbea8U27x5sw4ePKj77rvPaT5Rr1691LRp0zLPNlVEfHy8GjRooMjISPXv31+1a9fWsmXLdOmll57zOYMHD9b777+vkydP6t1335Wnp6f69etXZt+bbrpJ6enp6tOnj7Zu3arp06erW7duuuSSS7Rs2bJS/du1a+c4ls5cBg0adFGvE3AnTFAGaqC2bds6TVAeNGiQYmJiNGbMGN1yyy3y8fGRJH300Ud66qmnlJmZqYKCAkf/subZREdHl2vbdevWlSTl5eU5tV9++eVauXKlJGn+/Pl68803y72NitRZ1qXYV1xxhU6cOKFDhw4pLCzM0R4VFeXUr+SroiNHjsjf37/MWn766SdJ0pVXXllqXdOmTfXFF1+U+bzySk5O1hVXXKGcnBy9/vrrSktLk91uP+9zBg4cqIceekjLly/XggULdMsttzjeh7K0adPGEY62bt2qJUuWaMaMGerfv78yMzOdAmf9+vXLfSUZUFNxZgewAA8PD3Xu3FkHDhzQzp07JUmff/65+vTpI19fX7388sv6+OOPtXLlSg0ePFjGmFJjnHl25XyaNm0qSaXmhNSpU0fx8fGKj4/XZZddVuZzy9pGReusiHPNKbrYcS9G27ZtFR8fr4SEBC1btkwtWrTQ4MGDS4XHM4WHh6tTp056/vnnlZaWpsGDB5drWz4+PmrTpo2efvppzZ49W6dOndLixYsr66UANQZhB7CIwsJCSf//jMt7770nX19fffLJJxoxYoR69OhRKf8Hf8MNNyggIECLFi1yukLoQlW0zpIwd6bvv/9etWrVUoMGDS66noYNG0qSduzYUWrdjh07HOsrQ8kE6F9++UX/+te/ztt38ODB+vzzz+Xv76+ePXtWeFslZwIPHDhwQbUCNRlhB7CAU6dOacWKFfLx8VGzZs0knf5DarPZnOax7NmzR0uXLr2obdWqVUsPP/ywvvnmGz366KNlniWpyJmTitaZnp7uNJdn3759+uCDD3TzzTdX+OqwssTFxSkkJERz5sxx+kpt+fLl2r59u3r16nXR2zhTp06d1LZtW82cObPUDwSeqX///poyZYpefvllx9eUZVm9enWZ+//jjz+WVPbXc4DVMWcHqIGWL1+u7777TtLpH4pbuHChdu7cqUcffdQxF6VXr1564YUX1L17dw0ePFgHDx5UcnKyLr/8cv3vf/+7qO0/+uij2r59u5599lmtWLFCCQkJuvTSS3XkyBFt2bJFixcvVkhISLl+MLCidbZo0ULdunXTAw88ILvdrpdfflmSynVJeXl4e3tr2rRpGj58uDp27KhBgwYpOzvbcan8uHHjKmU7Z5owYYJuv/12paSklJpUXSIgIECPP/74H451//3368SJE+rXr5+aNm2qkydPat26dXrnnXfUqFEjDR8+3Kn//v379dZbb5Uap06dOurbt++FvBzA/bjyUjAAFVPWpee+vr6mdevWZvbs2U6XehtjzGuvvWaaNGli7Ha7adq0qZk3b57jsuwzSTKjR4+ucD1LliwxPXv2NA0aNDBeXl4mMDDQdOjQwTz77LPm6NGj5d5GRet86623HP1jYmLM6tWrnfqVPPfQoUNO7SX7b/fu3X/42t555x0TExNj7Ha7CQoKMkOGDDE///xzmeNV5NLzsvoWFRWZxo0bm8aNG5vCwkJjjPOl5+dS1qXny5cvNyNGjDBNmzY1derUMT4+Pubyyy83999/v8nOznZ6/vkuPW/YsOEfviagprAZ48KZegBQATabTaNHj/7D+S0AcCbm7AAAAEsj7AAAAEsj7AAAAEvjaiwANQZTDAFcCM7sAAAASyPsAAAAS+NrLEnFxcX65ZdfVLdu3TJvPAgAANyPMUbHjh1TRESEPDzOff6GsCPpl19+UWRkpKvLAAAAF2Dfvn269NJLz7mesCOpbt26kk7vrJKf2gcAAO4tNzdXkZGRjr/j50LYkRxfXfn7+xN2AACoYf5oCgoTlAEAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKW5NOykpaWpd+/eioiIkM1m09KlS0v12b59u/r06aOAgADVrl1bbdq00d69ex3r8/PzNXr0aAUHB6tOnTpKSEhQdnZ2Nb4KAADgzlwado4fP65WrVopOTm5zPU//vijOnTooKZNm2rNmjX63//+p8cee0y+vr6OPuPGjdOHH36oxYsXa+3atfrll1902223VddLAAAAbs5mjDGuLkI6/euHS5YsUd++fR1tAwcOlLe3t958880yn5OTk6MGDRpo4cKF6t+/vyTpu+++U7NmzZSenq5rr722XNvOzc1VQECAcnJy+AVlAABqiPL+/XbbOTvFxcX673//qyuuuELdunVTSEiI2rVr5/RVV0ZGhk6dOqX4+HhHW9OmTRUVFaX09PRzjl1QUKDc3FynBQAAWJPbhp2DBw8qLy9PzzzzjLp3764VK1aoX79+uu2227R27VpJUlZWlnx8fBQYGOj03NDQUGVlZZ1z7KSkJAUEBDgW7ngOAIB1uW3YKS4uliTdeuutGjdunFq3bq1HH31Ut9xyi+bMmXNRY0+cOFE5OTmOZd++fZVRMgAAcENue9fz+vXry8vLS82bN3dqb9asmb744gtJUlhYmE6ePKmjR486nd3Jzs5WWFjYOce22+2y2+1VUjcAAHAvbntmx8fHR23atNGOHTuc2r///ns1bNhQkhQbGytvb2+tWrXKsX7Hjh3au3ev2rdvX631AgAA9+TSMzt5eXn64YcfHI93796tzMxMBQUFKSoqShMmTNAdd9yhG2+8UZ07d1Zqaqo+/PBDrVmzRpIUEBCgkSNHavz48QoKCpK/v7/uv/9+tW/fvtxXYv2Z2Z6wuWS7ZopbXAAIAPiTcGnY2bx5szp37ux4PH78eElSYmKiUlJS1K9fP82ZM0dJSUl64IEHdOWVV+q9995Thw4dHM+ZMWOGPDw8lJCQoIKCAnXr1k0vv/xytb8WAADgntzmd3Zc6c/6Ozuc2QEA1GQ1/nd2AAAAKgNhBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWJqXqwsAALg32xM2l23bTDEu2zasgzM7AADA0gg7AADA0vgaC27HVafMOV0OANbEmR0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBpLg07aWlp6t27tyIiImSz2bR06dJz9r3nnntks9k0c+ZMp/bDhw9ryJAh8vf3V2BgoEaOHKm8vLyqLRwAANQYLg07x48fV6tWrZScnHzefkuWLNH69esVERFRat2QIUO0bds2rVy5Uh999JHS0tJ09913V1XJAACghvFy5cZ79OihHj16nLfP/v37df/99+uTTz5Rr169nNZt375dqamp2rRpk+Li4iRJs2bNUs+ePfXcc8+VGY4AAMCfi1vP2SkuLtbQoUM1YcIEXXXVVaXWp6enKzAw0BF0JCk+Pl4eHh7asGHDOcctKChQbm6u0wIAAKzJrcPOtGnT5OXlpQceeKDM9VlZWQoJCXFq8/LyUlBQkLKyss45blJSkgICAhxLZGRkpdYNAADch9uGnYyMDL344otKSUmRzWar1LEnTpyonJwcx7Jv375KHR8AALgPtw07n3/+uQ4ePKioqCh5eXnJy8tLP/30k/72t7+pUaNGkqSwsDAdPHjQ6XmFhYU6fPiwwsLCzjm23W6Xv7+/0wIAAKzJpROUz2fo0KGKj493auvWrZuGDh2q4cOHS5Lat2+vo0ePKiMjQ7GxsZKkzz77TMXFxWrXrl211wwAANyPS8NOXl6efvjhB8fj3bt3KzMzU0FBQYqKilJwcLBTf29vb4WFhenKK6+UJDVr1kzdu3fXqFGjNGfOHJ06dUpjxozRwIEDuRILAABIcvHXWJs3b1ZMTIxiYmIkSePHj1dMTIwmT55c7jEWLFigpk2bqmvXrurZs6c6dOigV155papKBgAANYxLz+x06tRJxphy99+zZ0+ptqCgIC1cuLASqwIA1AS2Jyr34pWKMFPK/7cLrue2E5QBAAAqA2EHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYmkvDTlpamnr37q2IiAjZbDYtXbrUse7UqVN65JFH1LJlS9WuXVsRERG666679MsvvziNcfjwYQ0ZMkT+/v4KDAzUyJEjlZeXV82vBAAAuCuXhp3jx4+rVatWSk5OLrXuxIkT2rJlix577DFt2bJF77//vnbs2KE+ffo49RsyZIi2bdumlStX6qOPPlJaWpruvvvu6noJAADAzXm5cuM9evRQjx49ylwXEBCglStXOrX961//Utu2bbV3715FRUVp+/btSk1N1aZNmxQXFydJmjVrlnr27KnnnntOERERVf4aAACAe6tRc3ZycnJks9kUGBgoSUpPT1dgYKAj6EhSfHy8PDw8tGHDhnOOU1BQoNzcXKcFAABYU40JO/n5+XrkkUc0aNAg+fv7S5KysrIUEhLi1M/Ly0tBQUHKyso651hJSUkKCAhwLJGRkVVaOwAAcJ0aEXZOnTqlAQMGyBij2bNnX/R4EydOVE5OjmPZt29fJVQJAADckUvn7JRHSdD56aef9NlnnznO6khSWFiYDh486NS/sLBQhw8fVlhY2DnHtNvtstvtVVYzAABwH259Zqck6OzcuVOffvqpgoODnda3b99eR48eVUZGhqPts88+U3Fxsdq1a1fd5QIAADfk0jM7eXl5+uGHHxyPd+/erczMTAUFBSk8PFz9+/fXli1b9NFHH6moqMgxDycoKEg+Pj5q1qyZunfvrlGjRmnOnDk6deqUxowZo4EDB3IlFgAAkOTisLN582Z17tzZ8Xj8+PGSpMTERD3++ONatmyZJKl169ZOz1u9erU6deokSVqwYIHGjBmjrl27ysPDQwkJCXrppZeqpX4AAOD+XBp2OnXqJGPMOdefb12JoKAgLVy4sDLLAgAAFuLWc3YAAAAuFmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYWqWEnaNHj1bGMAAAAJWuwmFn2rRpeueddxyPBwwYoODgYF1yySXaunVrhcZKS0tT7969FRERIZvNpqVLlzqtN8Zo8uTJCg8Pl5+fn+Lj47Vz506nPocPH9aQIUPk7++vwMBAjRw5Unl5eRV9WQAAwKIqHHbmzJmjyMhISdLKlSu1cuVKLV++XD169NCECRMqNNbx48fVqlUrJScnl7l++vTpeumllzRnzhxt2LBBtWvXVrdu3ZSfn+/oM2TIEG3btk0rV67URx99pLS0NN19990VfVkAAMCivCr6hKysLEfY+eijjzRgwADdfPPNatSokdq1a1ehsXr06KEePXqUuc4Yo5kzZ2rSpEm69dZbJUnz589XaGioli5dqoEDB2r79u1KTU3Vpk2bFBcXJ0maNWuWevbsqeeee04REREVfXkAAMBiKnxmp169etq3b58kKTU1VfHx8ZJOh5OioqJKK2z37t3KyspyjC9JAQEBateundLT0yVJ6enpCgwMdAQdSYqPj5eHh4c2bNhQabUAAICaq8Jndm677TYNHjxYTZo00W+//eY4M/PVV1/p8ssvr7TCsrKyJEmhoaFO7aGhoY51WVlZCgkJcVrv5eWloKAgR5+yFBQUqKCgwPE4Nze3ssoGAABupsJndmbMmKExY8aoefPmWrlyperUqSNJOnDggO67775KL7AqJCUlKSAgwLGUfC0HAACsp8Jndry9vfXQQw+Vah83blylFFQiLCxMkpSdna3w8HBHe3Z2tlq3bu3oc/DgQafnFRYW6vDhw47nl2XixIkaP36843Fubi6BBwAAi7qg39l588031aFDB0VEROinn36SJM2cOVMffPBBpRUWHR2tsLAwrVq1ytGWm5urDRs2qH379pKk9u3b6+jRo8rIyHD0+eyzz1RcXHzeydJ2u13+/v5OCwAAsKYKh53Zs2dr/Pjx6tGjh44ePeqYlBwYGKiZM2dWaKy8vDxlZmYqMzNT0ulJyZmZmdq7d69sNpvGjh2rp556SsuWLdPXX3+tu+66SxEREerbt68kqVmzZurevbtGjRqljRs36ssvv9SYMWM0cOBArsQCAACSLiDszJo1S6+++qr+8Y9/yNPT09EeFxenr7/+ukJjbd68WTExMYqJiZEkjR8/XjExMZo8ebIk6eGHH9b999+vu+++W23atFFeXp5SU1Pl6+vrGGPBggVq2rSpunbtqp49e6pDhw565ZVXKvqyAACARVV4zs7u3bsd4eRMdrtdx48fr9BYnTp1kjHmnOttNpumTp2qqVOnnrNPUFCQFi5cWKHtAgCAP48Kn9mJjo52fO10ptTUVDVr1qwyagIAAKg0FT6zM378eI0ePVr5+fkyxmjjxo16++23lZSUpH//+99VUSMAAMAFq3DY+ctf/iI/Pz9NmjRJJ06c0ODBgxUREaEXX3xRAwcOrIoaAQAALliFw450+uabQ4YM0YkTJ5SXl1fqV4wBAADcxQWFnRK1atVSrVq1KqsWAACASlfhsBMdHS2bzXbO9bt27bqoggAAACpThcPO2LFjnR6fOnVKX331lVJTUzVhwoTKqgsAAKBSVDjsPPjgg2W2Jycna/PmzRddEAAAQGW6oHtjlaVHjx567733Kms4AACASlFpYefdd99VUFBQZQ0HAABQKSr8NVZMTIzTBGVjjLKysnTo0CG9/PLLlVocAADAxapw2Cm543gJDw8PNWjQQJ06dVLTpk0rqy4AAIBKUeGwM2XKlKqoAwAAoEqUK+zk5uaWe0B/f/8LLgYAAKCylSvsBAYGnveHBKXTc3dsNpuKiooqpTAAAIDKUK6ws3r16qquAwAAoEqUK+x07NixqusAAACoEhd8I9ATJ05o7969OnnypFP71VdffdFFAQAAVJYKh51Dhw5p+PDhWr58eZnrmbMDAADcSYV/QXns2LE6evSoNmzYID8/P6WmpuqNN95QkyZNtGzZsqqoEQAA4IJV+MzOZ599pg8++EBxcXHy8PBQw4YNddNNN8nf319JSUnq1atXVdQJAABwQSp8Zuf48eMKCQmRJNWrV0+HDh2SJLVs2VJbtmyp3OoAAAAuUoXDzpVXXqkdO3ZIklq1aqW5c+dq//79mjNnjsLDwyu9QAAAgItR4a+xHnzwQR04cEDS6VtHdO/eXQsWLJCPj49SUlIquz4AAICLUu6w079/f/3lL3/RkCFDHL+mHBsbq59++knfffedoqKiVL9+/SorFAAA4EKU+2usI0eOqFevXoqKitLkyZO1a9cuSVKtWrV0zTXXEHQAAIBbKnfYWbVqlXbt2qWRI0fqrbfeUpMmTdSlSxctXLhQBQUFVVkjAADABavQBOWGDRvq8ccf165du7Ry5UpFRERo1KhRCg8P1+jRo5WRkVFVdQIAAFyQCl+NVaJLly566623lJWVpaSkJC1atEjt2rWrzNoAAAAu2gXfG0uSdu/erZSUFKWkpCgnJ0fx8fGVVRcAAEClqPCZnfz8fL311lvq0qWLmjRpovnz52vkyJHavXu3UlNTq6JGAACAC1buMzsbN27U66+/rnfeeUf5+fnq16+fUlNT1bVrV8el6AAAAO6m3GHn2muvVatWrfTkk09qyJAhqlevXlXWBQAAUCnKHXY2b96sa665piprAQAAqHTlnrPjiqBTVFSkxx57TNHR0fLz81Pjxo315JNPyhjj6GOM0eTJkxUeHi4/Pz/Fx8dr586d1V4rAABwTxd86Xl1mDZtmmbPnq1//etf2r59u6ZNm6bp06dr1qxZjj7Tp0/XSy+9pDlz5mjDhg2qXbu2unXrpvz8fBdWDgAA3MVFXXpe1datW6dbb71VvXr1kiQ1atRIb7/9tjZu3Cjp9FmdmTNnatKkSbr11lslSfPnz1doaKiWLl2qgQMHuqx2AADgHtz6zM51112nVatW6fvvv5ckbd26VV988YV69Ogh6fTv/GRlZTn9vk9AQIDatWun9PT0c45bUFCg3NxcpwUAAFhTucPOwYMHz7u+sLDQccalsjz66KMaOHCgmjZtKm9vb8XExGjs2LEaMmSIJCkrK0uSFBoa6vS80NBQx7qyJCUlKSAgwLFERkZWat0AAMB9lDvshIeHOwWeli1bat++fY7Hv/32m9q3b1+pxf3nP//RggULtHDhQm3ZskVvvPGGnnvuOb3xxhsXNe7EiROVk5PjWM58HQAAwFrKPWfnzCugJGnPnj06derUeftcrAkTJjjO7kinA9ZPP/2kpKQkJSYmKiwsTJKUnZ2t8PBwx/Oys7PVunXrc45rt9tlt9srtVYAAOCeKnXOTmX/kvKJEyfk4eFcoqenp4qLiyVJ0dHRCgsL06pVqxzrc3NztWHDhko/ywQAAGomt74aq3fv3vrnP/+pqKgoXXXVVfrqq6/0wgsvaMSIEZJOh6uxY8fqqaeeUpMmTRQdHa3HHntMERER6tu3r2uLBwAAbqHcYcdms+nYsWPy9fWVMUY2m015eXmOK5mq4oqmWbNm6bHHHtN9992ngwcPKiIiQn/96181efJkR5+HH35Yx48f1913362jR4+qQ4cOSk1Nla+vb6XXAwAAah6bKedEGw8PD6evqUoCz9mPi4qKKr/KKpabm6uAgADl5OTI39/f1eVUG9sTrrmBq5ly/kPOXesC/qxc9W9SOv+/S3etC9WnvH+/y31mZ/Xq1ZVSGAAAQHUqd9jp2LFjVdYBAABQJcoddgoLC1VUVOR0yXZ2drbmzJmj48ePq0+fPurQoUOVFAkAAHChyh12Ro0aJR8fH82dO1eSdOzYMbVp00b5+fkKDw/XjBkz9MEHH6hnz55VViwAAEBFlft3dr788kslJCQ4Hs+fP19FRUXauXOntm7dqvHjx+vZZ5+tkiIBAAAuVLnDzv79+9WkSRPH41WrVikhIUEBAQGSpMTERG3btq3yKwQAALgI5Q47vr6++v333x2P169fr3bt2jmtz8vLq9zqAAAALlK5w07r1q315ptvSpI+//xzZWdnq0uXLo71P/74oyIiIiq/QgAAgItQ7gnKkydPVo8ePfSf//xHBw4c0LBhw5xuvrlkyRJdf/31VVIkAADAharQ7+xkZGRoxYoVCgsL0+233+60vnXr1mrbtm2lFwgAAHAxKnQj0GbNmqlZs2Zlrrv77rsrpSAAAIDKVO6wk5aWVq5+N9544wUXAwAAUNnKHXY6derkuPHnue4dWlNvBAoAAKyr3GGnXr16qlu3roYNG6ahQ4eqfv36VVkXAABApSj3pecHDhzQtGnTlJ6erpYtW2rkyJFat26d/P39FRAQ4FgAAADcSbnDjo+Pj+644w598skn+u6773T11VdrzJgxioyM1D/+8Q8VFhZWZZ0AAAAXpNxh50xRUVGaPHmyPv30U11xxRV65plnlJubW9m1AQAAXLQKh52CggItXLhQ8fHxatGiherXr6///ve/CgoKqor6AAAALkq5Jyhv3LhR8+bN06JFi9SoUSMNHz5c//nPfwg5AADArZU77Fx77bWKiorSAw88oNjYWEnSF198Uapfnz59Kq86AACAi1ShX1Deu3evnnzyyXOu53d2AACAuyl32CkuLq7KOgAAAKrEBV2NdS6///57ZQ4HAABw0Sol7BQUFOj5559XdHR0ZQwHAABQacoddgoKCjRx4kTFxcXpuuuu09KlSyVJ8+bNU3R0tGbOnKlx48ZVVZ0AAAAXpNxzdiZPnqy5c+cqPj5e69at0+23367hw4dr/fr1euGFF3T77bfL09OzKmsFAACosHKHncWLF2v+/Pnq06ePvvnmG1199dUqLCzU1q1bHXdDBwAAcDfl/hrr559/dvy+TosWLWS32zVu3DiCDgAAcGvlDjtFRUXy8fFxPPby8lKdOnWqpCgAAIDKUu6vsYwxGjZsmOx2uyQpPz9f99xzj2rXru3U7/3336/cCgEAAC5CucNOYmKi0+M777yz0osBAACobOUOO/PmzavKOgAAAKpEpf6CMgAAgLtx+7Czf/9+3XnnnQoODpafn59atmypzZs3O9YbYzR58mSFh4fLz89P8fHx2rlzpwsrBgAA7sStw86RI0d0/fXXy9vbW8uXL9e3336r559/XvXq1XP0mT59ul566SXNmTNHGzZsUO3atdWtWzfl5+e7sHIAAOAuyj1nxxWmTZumyMhI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fNiRpPHjxysxMVFxcXFq27atZs6cqePHj2v48OGuLg0AALiYJcLOHXfcoUOHDmny5MnKyspS69atlZqaWmrSMgAA+POxRNiRpDFjxpzza6uaym63a8qUKaW+cnM16qoY6qo4d62NuirGXeuS3Lc26qoaNmP+6HotAACAmqvG/6ggAADA+RB2AACApRF2AACApRF2AACApRF2KsGwYcNks9lks9nk7e2t6OhoPfzww8rP//83ISlZv379eqfnFhQUOH65ec2aNY72tWvXqkuXLgoKClKtWrXUpEkTJSYm6uTJk5KkNWvWOMY8e8nKypIk9e3b16k9ODjYpXWNHj1a+fn5evXVV3XDDTc42tu0aaONGzdWyz4p2Xa9evVUr149xcfHO237j97L999/32nczMzMaqm7c+fOTu12u129evVy+TF25v7y8vKSzWZTkyZNXF5Xhw4dSq3z8vJyeV2SNHjwYKd13t7e6t+/v8trCwsLK3N99+7dXVLXnj17Sm3XbrcrMjJS48aNU35+fpW/VzNnztSVV14pPz8/p+1Kf/xZkZaW5jTu0qVLq3R/nVlHhw4dFB0dLV9fX7Vq1colx9O2bduUkJCgRo0ayWazaebMmSpLcnKyGjVqJF9fX7Vr187p87gyEXYqSffu3XXgwAHt2rVLM2bM0Ny5czVlyhSnPpGRkZo3b55T25IlS1SnTh2ntm+//Vbdu3dXXFyc0tLS9PXXX2vWrFny8fFRUVGRU98dO3bowIEDTktISIgkqbCwUI0aNdLs2bPVoEED9e3bt9rq6tevnzp37qytW7dq8+bNev311/XWW29pypQpWrNmjQYNGiRJCg8PV25urm6++Wbt37+/yvdJybZXr16t9PR0RUZGOm1bOv97efz4cUlSUFCQzlaVddvtdsXExGjt2rVKS0vTnXfeqY8//lh33XVXlb+X56urZH9t3LhR9evXV7NmzbRnzx6XH/uS5Onp6XT81apVy+V1nTx5UitWrFCDBg30wQcf6Msvv9SUKVP0ySefuLy2zp07O/2bffHFFyVJHh7Ofyaqoq4bbrjB6b2qW7euXn75ZUnSwoULJUnBwcFKSEjQa6+9pnfeeUd///vfq3R/LFy4UI8++qimTJmi7du3O223RHk+K+rXr6+zVWbdAwYMUOfOnbV//37t2rVLMTExWrdunWJjY/Xtt9/q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5vTk6Xr16hm73W4uu+wy889//tMUFha6vLaSeWGSzIoVKxzPdVVd9957r2nQoIE5evSokU5PlvX19TWRkZHmvvvuc3yFUlX749SpU+bxxx83jRs3LnO7f/RZ8fHHH5c5fmJiYpXWvWbNGtOsWTPj6elpbDabGThwoEuOp927d5e5vmPHjk7bnzVrlomKijI+Pj6mbdu2Zv369WXWebFsxpRxPg4AAMAimLMDAAAsjbAD/J/PP//cMXenrAUApNM/yHe+z4q9e/e6ukScha+xgP/z+++/O90j62wlk+oA/LkVFhY63aj0bI0aNXJMEoZ7IOwAAABL42ssAABgaYQdAABgaYQdAABgaYQdACjD448/rtatW1foOTabTUuXLj3n+j179shmsykzM/OiagNQMYQdAE6GDRsmm80mm80mb29vRUdH6+GHHy71s/AlfdavX+/UXlBQoODgYNlsNq1Zs8bRvnbtWnXp0kVBQUGqVauWmjRposTERJ08eVKStGbNGseYZy9n3kqgREZGRpnbL9G1a1fddtttF7wfHnroIaf79gCouQg7AErp3r27Dhw4oF27dmnGjBmaO3eupkyZUqpfZGSk5s2b59S2ZMmSUr9L9O2336p79+6Ki4tTWlqavv76a82aNUs+Pj4qKipy6rtjxw4dOHDAaQkJCSm17djYWLVq1Uqvv/56qXV79uzR6tWrNXLkyAq/dmOMCgsLVadOHQUHB1f4+QDcD2EHQCl2u11hYWGKjIxU3759FR8fr5UrV5bql5iYqEWLFjnd5fn1119XYmKiU78VK1YoLCxM06dPV4sWLdS4cWN1795dr776qvz8/Jz6hoSEKCwszGk5192tR44cqXfeeafUnbFTUlIUHh6u7t27680331RcXJzq1q2rsLAwDR48WAcPHnT0LTmjtHz5csXGxsput+uLL74o9TXWpk2bdNNNN6l+/foKCAhQx44dtWXLllI1HThwQD169JCfn58uu+wyvfvuu+fe0ZK++eYb9ejRQ3Xq1FFoaKiGDh2qX3/91bH+3XffVcuWLeXn56fg4GDFx8dX6t2ngT8Dwg6A8/rmm2+0bt06+fj4lFoXGxurRo0a6b333pN0+pdl09LSNHToUKd+YWFhOnDggNLS0iq1tiFDhqigoMApUBhj9MYbb2jYsGHy9PTUqVOn9OSTT2rr1q1aunSp9uzZo2HDhpUa69FHH9Uzzzyj7du36+qrry61/tixY0pMTNQXX3yh9evXq0mTJurZs6eOHTvm1O+xxx5TQkKCtm7dqiFDhmjgwIHavn17mfUfPXpUXbp0UUxMjDZv3qzU1FRlZ2drwIABkk4Hp0GDBmnEiBHavn271qxZo9tuu038PBpQQVVye1EANVZiYqLx9PQ0tWvXNna73UgyHh4e5t1333Xqp/+7k/LMmTNN586djTHGPPHEE6Zfv36l7qRcWFhohg0b5rh7dd++fc2sWbNMTk6OY7ySOynXrl3baWnevPl56x04cKDTnZRXrVplJJmdO3eW2X/Tpk1Gkjl27JjTdpcuXerUb8qUKaZVq1bn3G5RUZGpW7eu+fDDD532yT333OPUr127dubee+81xvz/O0F/9dVXxhhjnnzySXPzzTc79d+3b5+RZHbs2GEyMjKMJLNnz57z7gMA58eZHQCldO7cWZmZmdqwYYMSExM1fPhwJSQklNn3zjvvVHp6unbt2qWUlBSNGDGiVB9PT0/NmzdPP//8s6ZPn65LLrlETz/9tK666iodOHDAqe/nn3+uzMxMx/Lxxx+ft9YRI0YoLS1NP/74o6TTX6N17NjRcXuPjIwM9e7dW1FRUapbt646duwoSaXuXxQXF3fe7WRnZ2vUqFFq0qSJAgIC5O/vr7y8vFLjtG/fvtTjc53Z2bp1q1avXu10X6WmTZtKkn788Ue1atVKXbt2VcuWLXX77bfr1Vdf1ZEjR85bJ4DSCDsASqldu7Yuv/xyxwTgDRs26LXXXiuzb3BwsG655RaNHDlS+fn56tGjxznHveSSSzR06FD961//0rZt25Sfn685c+Y49YmOjtbll1/uWBo2bHjeWrt27aqoqCilpKQoNzdX77//vmNi8vHjx9WtWzf5+/trwYIF2rRpk5YsWSJJjqvAznzN55OYmKjMzEy9+OKLWrdunTIzMxUcHFxqnIrIy8tT7969ncJdZmamdu7cqRtvvFGenp5auXKlli9frubNm2vWrFm68sortXv37gveJvBnRNgBcF4eHh76+9//rkmTJjlNRD7TiBEjtGbNGt11113y9PQs17j16tVTeHj4RU+29fDw0PDhw/XGG29o4cKF8vHxUf/+/SVJ3333nX777Tc988wzuuGGG9S0aVOnyckV8eWXX+qBBx5Qz549ddVVV8lutztNJC5x9qXw69evV7Nmzcoc85prrtG2bdvUqFEjp4B3+eWXO8KXzWbT9ddfryeeeEJfffWVfHx8HIENQPkQdgD8odtvv12enp5KTk4uc3337t116NAhTZ06tcz1c+fO1b333qsVK1boxx9/1LZt2/TII49o27Zt6t27t1PfgwcPKisry2k5derUeesbPny49u/fr7///e8aNGiQ4wqvqKgo+fj4aNasWdq1a5eWLVumJ5988gL2gNSkSRO9+eab2r59uzZs2KAhQ4aUupJMkhYvXqzXX39d33//vaZMmaKNGzdqzJgxZY45evRoHT58WIMGDdKmTZv0448/6pNPPtHw4cNVVFSkDRs26Omnn9bmzZu1d+9evf/++zp06NA5wxOAshF2APwhLy8vjRkzRtOnTy/zTIzNZlP9+vXLvGJLktq2bau8vDzdc889uuqqq9SxY0etX79eS5cudcyhKXHllVcqPDzcacnIyDhvfVFRUYqPj9eRI0ec5gw1aNBAKSkpWrx4sZo3b65nnnlGzz333AXsAem1117TkSNHdM0112jo0KF64IEHyvz9nyeeeEKLFi3S1Vdfrfnz5+vtt99W8+bNyxwzIiJCX375pYqKinTzzTerZcuWGjt2rAIDA+Xh4SF/f3+lpaWpZ8+euuKKKzRp0iQ9//zz5/2qEEBpNmO4hhEAAFgXZ3YAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAICl/T/87OzQb65QZQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, rmse2_1, rmse3, rmse4, rmse5, rmse6, rmse7, rmse8, rmse8_1, rmse9, rmse10]\n", + "\n", + "# List of corresponding labels for each RMSE value\n", + "labels = ['RMSE1', 'RMSE2', 'RMSE2_1', 'RMSE3', 'RMSE4', 'RMSE5', 'RMSE6', 'RMSE7', 'RMSE8', 'RMSE8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "nrZu-K-KDCJ2", + "outputId": "d0dd5f18-77bd-41f4-c21b-09e71322b318" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/MUlEQVR4nO3deVxUZf//8fcACogCorIlKuW+pOYWmbdLFK6pueR2h2JqqZl5l+l9m2V5Z1qZS6RZKFmCS6mlpUWYW+GuZUmuuAuWKYomopzfH36dX3MDCjoww+n1fDzO4+Fc5zrn+swMMm/Ouc4Zi2EYhgAAAEzKxdEFAAAAFCbCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDoC/hVdeeUUWi0W///57oY+1evVqNWjQQB4eHrJYLDp37lyhjwkgb4QdoJiLjY2VxWKxWfz9/dW6dWutWrWqyOtZsWKFOnXqpICAAJUsWVJ+fn76xz/+obffflvnz58v8nqK2pkzZ9SzZ095enoqOjpaH3/8sby8vHLt+9f3buPGjTnWG4ahkJAQWSwWdezYMdd9nDt3zhqqkpOTc+3Tv3//HD8jNxYPD4/bf7JAMeHm6AIA2Merr76q0NBQGYahtLQ0xcbGqn379lqxYkWeH5T2lJ2drYEDByo2Nlb16tXT0KFDFRISogsXLigpKUnjxo3TV199pcTExEKvxZG2bt2qCxcu6LXXXlN4eHi+tvHw8FBcXJwefPBBm/Z169bp+PHjcnd3z3PbJUuWyGKxKDAwUAsWLNDEiRNz7efu7q4PP/wwR7urq2u+agSKM8IOYBLt2rVT48aNrY8HDhyogIAAxcfH2yXsZGdn68qVK3keCZgyZYpiY2P13HPP6e2335bFYrGue/bZZ3Xq1CnNnz//jsYoDk6fPi1J8vX1zfc27du315IlSzRjxgy5uf3/X8txcXFq1KjRTU+9ffLJJ2rfvr0qV66suLi4PMOOm5ub+vXrl++aADPhNBZgUr6+vvL09LT58JSkt956Sw888IDKlSsnT09PNWrUSJ9++mmO7S0Wi4YPH64FCxaoTp06cnd31+rVq3Md69KlS5o8ebLq1KmjN9980ybo3BAUFKQXX3wx32PcTp01atSQh4eHGjVqpPXr1+da67lz59S/f3/5+vrKx8dHAwYM0KVLl3J/Ef/HkiVL1KhRI3l6eqp8+fLq16+fTpw4YV3fqlUrRUZGSpKaNGkii8Wi/v3733K/vXv31pkzZ5SQkGBtu3Llij799FP16dMnz+2OHj2qDRs2qFevXurVq5dSUlL0ww8/5Ou5AH8nHNkBTCI9PV2///67DMPQ6dOnNXPmTGVkZOT4a3769Ol69NFH1bdvX125ckULFy5Ujx49tHLlSnXo0MGm75o1a7R48WINHz5c5cuXV5UqVXIde+PGjTp37pyef/75Ap8WyWuMgtS5bt06LVq0SCNGjJC7u7vee+89tW3bVlu2bFHdunVt+vbs2VOhoaGaNGmSduzYoQ8//FD+/v6aPHnyTeuMjY3VgAED1KRJE02aNElpaWmaPn26vv/+e+3cuVO+vr76z3/+oxo1amjOnDnW04r33HPPLV+DKlWqKCwsTPHx8WrXrp0kadWqVUpPT1evXr00Y8aMXLeLj4+Xl5eXOnbsKE9PT91zzz1asGCBHnjggVz753aEqGTJkvL29r5ljUCxZgAo1ubNm2dIyrG4u7sbsbGxOfpfunTJ5vGVK1eMunXrGm3atLFpl2S4uLgYv/zyyy1rmD59uiHJWL58uU371atXjd9++81myc7OztcYBalTkrFt2zZr25EjRwwPDw+ja9eu1raXX37ZkGRERUXZbN+1a1ejXLlyN31+V65cMfz9/Y26desaf/75p7V95cqVhiRj/Pjx1rYb78fWrVtvus//7fvuu+8aZcqUsT7vHj16GK1btzYMwzAqV65sdOjQIcf29erVM/r27Wt9/O9//9soX768kZWVZdMvMjIy158RSUZERMQt6wSKO05jASYRHR2thIQEJSQk6JNPPlHr1q315JNPaunSpTb9PD09rf8+e/as0tPT1aJFC+3YsSPHPlu2bKnatWvfcuwbV1mVLl3apn337t2qUKGCzXLmzJl8jVGQOsPCwtSoUSPr40qVKqlz5876+uuvde3aNZu+Tz31lM3jFi1a6MyZMze9Umzbtm06ffq0hg4dajOfqEOHDqpZs6a+/PLLPLfNr549e+rPP//UypUrdeHCBa1cufKmp7B++ukn7d69W71797a29e7dW7///ru+/vrrHP09PDysPx9/Xd544407rh1wdpzGAkyiadOmNhOUe/furYYNG2r48OHq2LGjSpYsKUla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8+fP2ywAAMCcnDbspKamSpICAgJs2gMCAqzrUlNT5e/vb7Pezc1Nfn5+1j65mTRpknx8fKxLSEiInasHAADOwmnDTmEaO3as0tPTrcuxY8ccXRIAACgkTht2AgMDJUlpaWk27WlpadZ1gYGBOn36tM36q1ev6o8//rD2yY27u7u8vb1tFgAAYE5OG3ZCQ0MVGBioxMREa9v58+e1efNmhYWFSZLCwsJ07tw5bd++3dpnzZo1ys7OVrNmzYq8ZgAA4HwcejVWRkaGDhw4YH2ckpKiXbt2yc/PT5UqVdLIkSM1ceJEVatWzXrpeXBwsLp06SJJqlWrltq2batBgwZp9uzZysrK0vDhw9WrVy+uxAIAAJIcHHa2bdum1q1bWx+PGjVKkhQZGanY2FiNHj1aFy9e1ODBg3Xu3Dk9+OCDWr16tfUeO5K0YMECDR8+XA899JBcXFzUrVs3zZgxo8ifCwAAcE4WwzD+9ndGOn/+vHx8fJSenv73mb/jzDfjclRt3CQMyJ2z/p905t9jKBL5/fx22jk7AAAA9kDYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApubUYefatWt66aWXFBoaKk9PT91zzz167bXXZBiGtY9hGBo/fryCgoLk6emp8PBw7d+/34FVAwAAZ3LHYefatWvatWuXzp49a496bEyePFmzZs3Su+++q+TkZE2ePFlTpkzRzJkzrX2mTJmiGTNmaPbs2dq8ebO8vLwUERGhy5cv270eAABQ/BQ47IwcOVIxMTGSrgedli1b6r777lNISIjWrl1r1+J++OEHde7cWR06dFCVKlXUvXt3PfLII9qyZYuk60d1pk2bpnHjxqlz58669957NX/+fJ08eVLLly+3ay0AAKB4KnDY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e8l32AkLC9OZM2esj729vXXo0CHr43Pnzql37972rQ4AAOAO5TvsGIZx08d5tQEAADiSXefsWCwWe+4OAADgjjn9BOUTJ06oX79+KleunDw9PVWvXj1t27bNut4wDI0fP15BQUHy9PRUeHi49u/f78CKAQCAMynQF4Hu2bNHqampkq6HjF9//VUZGRmSpN9//93uxZ09e1bNmzdX69attWrVKlWoUEH79+9X2bJlrX2mTJmiGTNm6KOPPlJoaKheeuklRUREaM+ePfLw8LB7TQAAoHgpUNh56KGHbObldOzYUdL101eGYdj9NNbkyZMVEhKiefPmWdtCQ0Ot/zYMQ9OmTdO4cePUuXNnSdL8+fMVEBCg5cuXq1evXnatBwAAFD/5DjspKSmFWUeuvvjiC0VERKhHjx5at26d7rrrLg0dOlSDBg2y1pSamqrw8HDrNj4+PmrWrJmSkpLyDDuZmZnKzMy0Pj5//nzhPhEAAOAw+Q47lStXvmWfn3/++Y6K+V+HDh3SrFmzNGrUKP373//W1q1bNWLECJUsWVKRkZHWU2oBAQE22wUEBFjX5WbSpEmaMGGCXWsFAADO6Y4nKF+4cEFz5sxR06ZNVb9+fXvUZJWdna377rtPr7/+uho2bKjBgwdr0KBBmj179h3td+zYsUpPT7cux44ds1PFAADA2dx22Fm/fr0iIyMVFBSkt956S23atNGmTZvsWZuCgoJUu3Ztm7ZatWrp6NGjkqTAwEBJUlpamk2ftLQ067rcuLu7y9vb22YBAADmVKCwk5qaqjfeeEPVqlVTjx495O3trczMTC1fvlxvvPGGmjRpYtfimjdvrr1799q07du3z3pKLTQ0VIGBgUpMTLSuP3/+vDZv3qywsDC71gIAAIqnfIedTp06qUaNGvrpp580bdo0nTx5UjNnzizM2vTcc89p06ZNev3113XgwAHFxcVpzpw5GjZsmKTrV4GNHDlSEydO1BdffKHdu3friSeeUHBwsLp06VKotQEAgOIh3xOUV61apREjRujpp59WtWrVCrMmqyZNmmjZsmUaO3asXn31VYWGhmratGnq27evtc/o0aN18eJFDR48WOfOndODDz6o1atXc48dAAAgqQBhZ+PGjYqJiVGjRo1Uq1Yt/fOf/yyS+9h07NjRej+f3FgsFr366qt69dVXC70WAABQ/OT7NNb9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denSRT///HMer6p9meY+O87mvvvu08GDB7V06VL17dtX0vUjDZUqVVJoaKhN34yMDC1atEjbtm1TamqqYmNj9e9//zvHPsuVK5fn931VqVJF06dPlySbvxqdobZp06apf//+qlixog4ePKgGDRqoWrVqWrFihZKTkwt13L96/fXX9fnnn2vFihVq2LBhnq/PDe3atdOiRYsUGhqqzz//XJs2bdLjjz8uqXBfr4YNG9rUV6VKFS1dulQbNmzQ4MGDre1F/T7e8NRTT6lPnz5ydXXNcbTLkXX5+/vf8mtfirq21atXa926dTp06JD8/PwkXX8/HV2Xj4+PzS32ly9frrNnz+a463xR15WUlKTSpUurZcuWOnjwoFJTUzVkyBBNnjy50MetUqWKRowYIUkKDQ21jpsfTZo0UePGjXXu3Dl99dVX2r17t3VdYdb98ccfa8iQIdbfS3fffbdee+01paamKiQkxKk+f6ZPn662bdvqhRdekCS99tprSkhI0LvvvqvZs2fnuo09cWSnEEVFRWnevHnWx3Pnzs31KywWL16smjVrqkaNGurXr5/mzp1766+rL6a13Rj3woUL8vPzK9LXJDs72zru7VizZo3130VZ986dO/XDDz+oZcuWOdYV9fs4b948HTp0SC+//PJN+zni56tBgwYKCgrSww8/rO+//94pavviiy/UuHFjTZkyRXfddZeqV6+u559/3uYvbkfU9b9iYmIUHh6uypUrO7SusLAwXbx4UWlpaRowYIDef/99ffrpp2rfvn2hj3vs2DF99dVXMgxDaWlp1nELqnTp0tq8ebP1cWHWnZmZKQ8PD5s2Nzc3nT17VpGRkU71+ZOUlKTw8HCbtoiICCUlJdl9rNwQdgpRv379tHHjRh05ckRHjhzR999/r379+uXoFxMTY21v27at0tPTtW7duhz9HnjgAZUuXdpmKW619evXT+vWrVN6errCwsKK9DV56623lJGRoZ49e+bZ52aSk5OL9PWqWLGi3N3d1bhxYw0bNkxPPvlkjj5F+T7u379fY8aM0SeffCI3t5sfFC7KuoKCgjR79mx99tln+uyzzxQSEqJWrVppx44dDq/t0KFD2rhxo37++WctW7ZM06ZN06effqqhQ4c6tK6/OnnypFatWpXrz1dR19W8eXP94x//0NatWzV69Ght2LBBJUqU0OjRowt93AULFujxxx9XyZIlFRgYKB8fH0VHR+f6mtyMl5eXUlJSiuT1ioiI0Icffqjt27fLMAxt27ZN+/btk2EYatu2rVN9/qSmpub4CqeAgIAcc+sKC6exClGFChXUoUMHxcbGyjAMdejQwTr/44a9e/dqy5YtWrZsmaTrqfzxxx9XTEyMWrVqZdN30aJFqlWrVrGuLSEhQYZhqEuXLlqxYkWRjRsXF6cJEybo888/z3UuR340atSoSF+vDRs2KCMjQ5s2bdKYMWNUtWpV9e7d26ZPUb2P165dU58+fTRhwgRVr179pnUXZV2SVKNGDZs5MA888IAOHjyod955Rx9//LFDa8vOzpbFYtGCBQusp42mTp2q7t2767333pOnp6dD6vqrjz76SL6+vurSpUuu64uyrj179mjLli2qWbOm4uLiNHToUO3evVs9evQo9HGfffZZjR8/XhERETp16pReeOEFPfXUU4qJicl1m7y4urqqdu3aRfJ6vfTSS0pNTdX9998vwzAUEBCgqlWr6ueff3bqzx9HIOwUsqioKOt3duX2V0JMTIyuXr2q4OBga5thGHJ3d9e7775rc149JCREVatWLba1nThxQk8++aTGjRunjz76SOvXry+ScRcuXKgnn3xSS5YsyXEYtSAeeughxcbGSiqa1+vGufV69eopLS1Nr7zySo6wIxXN+3jhwgVt27ZNO3futI6VnZ0twzDk5uamb775Rm3atCnyuvLStGlTbdy4Mc/1RVVbUFCQ7rrrLpv+tWrVkmEYOn78uKpVq+aQuv667dy5c/XPf/5TJUuWzLNfUdU1adIk+fv7q2rVqrr33ns1duxYDRo0SLt27dK//vWvQh23efPm1vkk9957r7y8vNSiRQtNnDhRQUFBeb42uWnatGmR/K7w9PTU3Llz9f777ystLU1BQUF68MEH5ebmpgoVKjjV509gYKDS0tJs2tLS0m45F89eOI1VyNq2basrV64oKytLERERNuuuXr2q+fPn6+2339auXbusy48//qjg4GDFx8ebpraUlBTt2LFD8fHxeumll4ps3Pj4eA0YMEDx8fG5XlZZEA0bNnTYe5mdnW1zNdhfFcX76O3trd27d9vs46mnnlKNGjW0a9cuNWvWzCF15WXXrl03/YAqqtqaN2+ukydPKiMjw9q2b98+ubi4qGLFig6r64Z169bpwIED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0W/v3r3asmWLevfuLUlyc3PT448/rpiYmBx9Fy1apF27dtksNxMVFaWUlBR99913kq4f1alSpYratGkjSdq/f7969+6tu+++W97e3qpSpYok5Tgi07hx45uOk5GRoeeff161atWSr6+vSpcureTk5Bz7CQsLy/E4OTk5133++OOPOnDggMqUKWP9biU/Pz9dvnxZBw8elJ+fn/r376+IiAh16tRJ06dP16lTp25aJ4Bb48t/ABRIVFSUhg8fLkl5zk+JiYnR1atXFRwcbG0zDEPu7u5699135ePjY20PCQlR1apV8z1+tWrV1KJFC82bN0+tWrXS/PnzNWjQIOupnk6dOqly5cr64IMPFBwcrOzsbNWtW1dXrlyx2Y+Xl9dNx3n++eeVkJCgt956S1WrVpWnp6e6d++eYz8FkZGRoUaNGmnBggU51lWoUEHS9fA2YsQIrV69WosWLdK4ceOUkJCg+++//7bHBf7uCDsACuTG/BKLxZLrXJerV69q/vz5evvtt/XII4/YrOvSpYvi4+NzvYS9IAYOHKinn35ajz76qE6cOGG97P3MmTPau3evPvjgA7Vo0UKStHHjxtsa4/vvv1f//v3VtWtXSdeDSm5fHvu/l8lv2rRJtWrVynWf9913nxYtWiR/f395e3vnOXbDhg3VsGFDjR07VmFhYYqLiyPsAHeA01gACsTV1VXJycnas2ePXF1dc6xfuXKlzp49q4EDB6pu3bo2S7du3XKcyjpz5oxSU1NtlsuXL9+0hh49eqhEiRIaMmSIHnnkEYWEhEiSypYtq3LlymnOnDk6cOCA1qxZo1GjRt3W86xWrZqWLl2qXbt26ccff1SfPn1yTHKWroeiKVOmaN++fYqOjtaSJUv07LPP5rrPvn37qnz58urcubM2bNiglJQUrV27ViNGjNDx48eVkpKisWPHKikpSUeOHNE333yj/fv35xmeAOQPYQdAgXl7e+d5ZCImJkbh4eE2p6pu6Natm7Zt26affvrJ2hYeHq6goCCb5VZ3HC5VqpR69eqls2fPKioqytru4uKihQsXavv27apbt66ee+45vfnmm7f1HKdOnaqyZcvqgQceUKdOnRQREZHrTQv/9a9/adu2bWrYsKEmTpyoqVOn5nrE60bd69evV6VKlfTYY4+pVq1aGjhwoC5fvixvb2+VKlVKv/76q7p166bq1atr8ODBGjZsmIYMGXJbzwHAdRbDuMNrQQEAAJwYR3YAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICp/T+WRF7HOqAsCAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, mae2_1, mae3, mae4, mae5, mae6, mae7, mae8, mae8_1, mae9, mae10]\n", + "\n", + "# List of corresponding labels for each MAE value\n", + "labels = ['MAE1', 'MAE2', 'MAE2_1', 'MAE3', 'MAE4', 'MAE5', 'MAE6', 'MAE7', 'MAE8', 'MAE8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "_c4Pe76fDNM-", + "outputId": "c1784b34-6746-42fd-9f66-b7c1cfd50a21" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA930lEQVR4nO3deVwV9f7H8fcB9QAKuCDigopLmrtiFtxSLBMRt25XDTM3sjK9pXazbNGWX6GVqaVplso1U9zSyjXSXErKXFMzywpxAbVUEE1AmN8fPjzXIwflKHgO0+v5eMzj4XznOzOfMwfl7cx3ZiyGYRgCAAAwCQ9XFwAAAFCUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcASryXXnpJFotFf/zxR7Hva/Xq1WrRooW8vLxksVh0+vTpYt8nAOcQbgA3Fh8fL4vFYjcFBgaqffv2WrVq1U2v5/PPP1fXrl1VpUoVlSlTRhUrVlTbtm01YcIEZWRk3PR6brY///xTvXr1kre3t6ZOnaqPPvpIZcuWddj38u/u66+/zrfcMAwFBwfLYrGoS5cuDrdx+vRpW4jat2+fwz4DBgyw+/nw8/NT8+bNNWHCBGVlZdn6XQqABU1paWnXcUQA91TK1QUAuLZXXnlFISEhMgxDx44dU3x8vDp37qzPP/+8wF+MRSkvL0+xsbGKj49X06ZN9fjjjys4OFhnzpxRUlKSXnjhBa1cuVJr164t9lpc6fvvv9eZM2f06quvqkOHDoVax8vLS/PmzdOdd95p175hwwYdPnxYVqu1wHUXLVoki8WioKAgffzxx/q///s/h/2sVqs+/PBDSRcD0ZIlS/Sf//xH33//vRISEuz6Tps2TeXKlcu3jfLlyxfq8wAlAeEGKAGioqLUunVr23xsbKyqVKmi+fPnF0m4ycvLU3Z2try8vBwuf+ONNxQfH68RI0ZowoQJslgstmVPPvmkUlNTNWfOnBvaR0lw/PhxSc4Fgc6dO2vRokV65513VKrU//7JnTdvnkJDQ696KW3u3Lnq3LmzatWqpXnz5hUYbkqVKqW+ffva5h9//HHdfvvtWrBggd5++21Vq1bNtuxf//qXAgICCl0/UBJxWQoogcqXLy9vb2+7X5aS9NZbbyk8PFyVKlWSt7e3QkNDtXjx4nzrWywWDRs2TB9//LEaN24sq9Wq1atXO9zXuXPnNH78eDVu3FhvvvmmXbC5pGrVqnrmmWcKvY/rqbNBgwby8vJSaGioNm7c6LDW06dPa8CAASpfvrz8/f01cOBAnTt3zvFBvMKiRYsUGhoqb29vBQQEqG/fvjpy5IhteUREhPr37y9Juu2222SxWDRgwIBrbjcmJkZ//vmnEhMTbW3Z2dlavHix+vTpU+B6KSkp2rRpkx544AE98MAD+v3337V58+ZCfRYPDw9FRERIkpKTkwu1DmAmnLkBSoD09HT98ccfMgxDx48f17vvvqvMzEy7/61L0uTJk9WtWzc9+OCDys7OVkJCgnr27Knly5crOjraru+6deu0cOFCDRs2TAEBAapdu7bDfX/99dc6ffq0/vOf/8jT09OpugvahzN1btiwQQsWLNATTzwhq9Wq9957T506ddKWLVvUpEkTu769evVSSEiI4uLitH37dn344YcKDAzU+PHjr1pnfHy8Bg4cqNtuu01xcXE6duyYJk+erG+++UY7duxQ+fLl9fzzz6tBgwaaMWOG7TJh3bp1r3kMateurbCwMM2fP19RUVGSpFWrVik9PV0PPPCA3nnnHYfrzZ8/X2XLllWXLl3k7e2tunXr6uOPP1Z4ePg19ylJv/76qySpUqVKdu0nT57M17dUqVJcloK5GADc1uzZsw1J+Sar1WrEx8fn63/u3Dm7+ezsbKNJkybG3XffbdcuyfDw8DD27t17zRomT55sSDKWLVtm137hwgXjxIkTdlNeXl6h9uFMnZKMrVu32toOHjxoeHl5Gffdd5+tbezYsYYkY9CgQXbr33fffUalSpWu+vmys7ONwMBAo0mTJsZff/1la1++fLkhyRgzZoyt7dL38f333191m1f2nTJliuHr62v73D179jTat29vGIZh1KpVy4iOjs63ftOmTY0HH3zQNv/cc88ZAQEBRk5Ojl2//v37G2XLlrV9BwcOHDBef/11w2KxGM2aNbP1u3SMHE0NGjS45ucBShIuSwElwNSpU5WYmKjExETNnTtX7du318MPP6xPPvnErp+3t7ftz6dOnVJ6erruuusubd++Pd8227Vrp0aNGl1z35fugrpyEOru3btVuXJlu+nPP/8s1D6cqTMsLEyhoaG2+Zo1a6p79+5as2aNcnNz7fo+9thjdvN33XWX/vzzz6veybV161YdP35cjz/+uN14oOjoaDVs2FArVqwocN3C6tWrl/766y8tX75cZ86c0fLly696SeqHH37Q7t27FRMTY2uLiYnRH3/8oTVr1uTrf/bsWdt3UK9ePT333HMKCwvT0qVL8/VdsmSJ7Wfp0jR79uwb/oyAO+GyFFACtGnTxm5AcUxMjFq2bKlhw4apS5cuKlOmjCRp+fLl+r//+z/t3LnT7jZgR+NkQkJCCrVvX19fSVJmZqZde7169WzjSObMmaOPPvqo0Ptwps769evna7vlllt07tw5nThxQkFBQbb2mjVr2vWrUKGCpIsBys/Pz2EtBw8elCQ1aNAg37KGDRs6vI3bWZUrV1aHDh00b948nTt3Trm5ufrXv/5VYP+5c+eqbNmyqlOnjg4cOCDp4l1XtWvX1scff5zv0p2Xl5c+//xzSRfvnAoJCVGNGjUcbrtt27YMKIbpEW6AEsjDw0Pt27fX5MmT9csvv6hx48batGmTunXrprZt2+q9995T1apVVbp0ac2ePVvz5s3Lt43Lz55cTcOGDSVJe/bsUffu3W3t5cqVs90OXVAAcLQPZ+t0RkFjggzDuKHtFoU+ffpo8ODBSktLU1RUVIFjXAzD0Pz583X27FmHZ72OHz+uzMxMuzNpnp6ehb41Hfg7INwAJdSFCxck/e+MypIlS+Tl5aU1a9bYPTvlRi853HXXXfL391dCQoJGjx4tD48bu5rtbJ2//PJLvraff/5ZPj4+qly58g3VIkm1atWSJO3fv19333233bL9+/fblt+o++67T48++qi+/fZbLViwoMB+l55/88orr+jWW2+1W3bq1Ck98sgjWrZsWb7B5AD+hzE3QAmUk5OjL774QmXKlLH9AvT09JTFYrEbh5KcnKxly5bd0L58fHw0atQo7dmzR88++6zDsyDOnBlxts6kpCS7sTiHDh3Sp59+qo4dOzp995YjrVu3VmBgoKZPn253iWzVqlXat29fvktA16tcuXKaNm2aXnrpJXXt2rXAfpcuST399NP617/+ZTcNHjxY9evX18cff1wkNQFmxZkboARYtWqVfvrpJ0kXL0vMmzdPv/zyi5599lnbWJLo6Gi9/fbb6tSpk/r06aPjx49r6tSpqlevnn744Ycb2v+zzz6rffv26c0339QXX3yh+++/XzVq1NCpU6e0fft2LVq0SIGB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XX5+fkVWe0lT+9kVri5ByeOiXV0CAKCEcOb3t1uNuUlPT5ckVaxYscA+SUlJ6tChg11bZGSkkpKSHPbPyspSRkaG3QQAAMzLbcJNXl6ehg8frn/84x9q0qRJgf3S0tJUpUoVu7YqVaooLS3NYf+4uDj5+/vbpuDg4CKtGwAAuBe3CTdDhw7Vnj17lJCQUKTbHT16tNLT023ToUOHinT7AADAvZRydQGSNGzYMC1fvlwbN25UjRo1rto3KChIx44ds2s7duyYgoKCHPa3Wq2yWq1FVisAAHBvLj1zYxiGhg0bpqVLl2rdunUKCQm55jphYWFau3atXVtiYqLCwsKKq0wAAFCCuPTMzdChQzVv3jx9+umn8vX1tY2b8ff3l7e3tySpX79+ql69uuLi4iRJTz75pNq1a6cJEyYoOjpaCQkJ2rp1q2bMmOGyz4Hi4Q53dEnc1QUAJY1Lz9xMmzZN6enpioiIUNWqVW3TggULbH1SUlKUmppqmw8PD9e8efM0Y8YMNW/eXIsXL9ayZcuuOggZAAD8fbj0zE1hHrGzfv36fG09e/ZUz549i6EiAABQ0rnN3VIAAABFgXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMpZSrCwAA/L3VfnaFq0tQ8rhoV5eAIsSZGwAAYCqEGwAAYCpOh5tDhw7p8OHDtvktW7Zo+PDhmjFjRpEWBgAAcD2cDjd9+vTRV199JUlKS0vTvffeqy1btuj555/XK6+8UuQFAgAAOMPpcLNnzx61adNGkrRw4UI1adJEmzdv1scff6z4+Piirg8AAMApToebnJwcWa1WSdKXX36pbt26SZIaNmyo1NTUoq0OAADASU6Hm8aNG2v69OnatGmTEhMT1alTJ0nS0aNHValSpSIvEAAAwBlOh5vx48fr/fffV0REhGJiYtS8eXNJ0meffWa7XAUAAOAqTj/ELyIiQn/88YcyMjJUoUIFW/sjjzwiHx+fIi0OAADAWdf1nBvDMLRt2za9//77OnPmjCSpTJkyhBsAAOByTp+5OXjwoDp16qSUlBRlZWXp3nvvla+vr8aPH6+srCxNnz69OOoEAAAoFKfP3Dz55JNq3bq1Tp06JW9vb1v7fffdp7Vr1xZpcQAAAM5y+szNpk2btHnzZpUpU8auvXbt2jpy5EiRFQYAAHA9nD5zk5eXp9zc3Hzthw8flq+vb5EUBQAAcL2cDjcdO3bUpEmTbPMWi0WZmZkaO3asOnfuXJS1AQAAOM3py1ITJkxQZGSkGjVqpPPnz6tPnz765ZdfFBAQoPnz5xdHjQAAAIXmdLipUaOGdu3apYSEBP3www/KzMxUbGysHnzwQbsBxgAAAK7gdLiRpFKlSqlv375FXQsAAMANczrczJkz56rL+/Xrd93FAAAA3Cinw82TTz5pN5+Tk6Nz587ZnlBMuAEAAK7k9N1Sp06dspsyMzO1f/9+3XnnnQwoBgAALndd75a6Uv369TVu3Lh8Z3UAAAButiIJN9LFQcZHjx4tqs0BAABcF6fH3Hz22Wd284ZhKDU1VVOmTNE//vGPIisMAADgejgdbnr06GE3b7FYVLlyZd19992aMGFCUdUFAABwXZwON3l5ecVRBwAAQJEosjE3AAAA7qBQZ25GjhxZ6A2+/fbb110MAADAjSpUuNmxY0ehNmaxWJza+caNG/Xmm29q27ZtSk1N1dKlS/ON6bnc+vXr1b59+3ztqampCgoKcmrfAADAnAoVbr766qti2fnZs2fVvHlzDRo0SP/85z8Lvd7+/fvl5+dnmw8MDCyO8gAAQAl0XS/OLCpRUVGKiopyer3AwECVL1++6AsCAAAl3nWFm61bt2rhwoVKSUlRdna23bJPPvmkSAq7mhYtWigrK0tNmjTRSy+9dNXn62RlZSkrK8s2n5GRUez1AQAA13H6bqmEhASFh4dr3759Wrp0qXJycrR3716tW7dO/v7+xVGjTdWqVTV9+nQtWbJES5YsUXBwsCIiIrR9+/YC14mLi5O/v79tCg4OLtYaAQCAazl95ub111/XxIkTNXToUPn6+mry5MkKCQnRo48+qqpVqxZHjTYNGjRQgwYNbPPh4eH69ddfNXHiRH300UcO1xk9erTd3V4ZGRkEHAAATMzpMze//vqroqOjJUllypTR2bNnZbFYNGLECM2YMaPIC7yWNm3a6MCBAwUut1qt8vPzs5sAAIB5OR1uKlSooDNnzkiSqlevrj179kiSTp8+rXPnzhVtdYWwc+fOYj9jBAAASg6nL0u1bdtWiYmJatq0qXr27Kknn3xS69atU2Jiou655x6ntpWZmWl31uX333/Xzp07VbFiRdWsWVOjR4/WkSNHNGfOHEnSpEmTFBISosaNG+v8+fP68MMPtW7dOn3xxRfOfgwAAGBShQ43e/bsUZMmTTRlyhSdP39ekvT888+rdOnS2rx5s+6//3698MILTu1869atdg/luzQ2pn///oqPj1dqaqpSUlJsy7Ozs/XUU0/pyJEj8vHxUbNmzfTll186fLAfAAD4eyp0uGnWrJluu+02Pfzww3rggQckSR4eHnr22Weve+cREREyDKPA5fHx8Xbzo0aN0qhRo657fwAAwPwKPeZmw4YNaty4sZ566ilVrVpV/fv316ZNm4qzNgAAAKcVOtzcddddmjVrllJTU/Xuu+8qOTlZ7dq10y233KLx48crLS2tOOsEAAAoFKfvlipbtqwGDhyoDRs26Oeff1bPnj01depU1axZU926dSuOGgEAAArN6XBzuXr16um5557TCy+8IF9fX61YsaKo6gIAALgu1/3izI0bN2rWrFlasmSJPDw81KtXL8XGxhZlbQAAAE5zKtwcPXpU8fHxio+P14EDBxQeHq533nlHvXr1UtmyZYurRgAAgEIrdLiJiorSl19+qYCAAPXr10+DBg2ye88TAACAOyh0uCldurQWL16sLl26yNPTszhrAgAAuG6FDjefffZZcdYBAABQJG7obikAAAB3Q7gBAACmQrgBAACmQrgBAACmUuhw8/jjjyszM9M2P3/+fJ09e9Y2f/r0aXXu3LloqwMAAHBSocPN+++/r3PnztnmH330UR07dsw2n5WVpTVr1hRtdQAAAE4qdLgxDOOq8wAAAO6AMTcAAMBUCDcAAMBUnHpx5pgxY+Tj4yNJys7O1muvvSZ/f39JshuPAwAA4CqFDjdt27bV/v37bfPh4eH67bff8vUBAABwpUKHm/Xr1xdjGQAAAEXDqctSGRkZ+u6775Sdna02bdqocuXKxVUXAADAdSl0uNm5c6c6d+6stLQ0SZKvr68WLlyoyMjIYisOAADAWYW+W+qZZ55RSEiIvvnmG23btk333HOPhg0bVpy1AQAAOK3QZ262bdumL774Qq1atZIkzZo1SxUrVlRGRob8/PyKrUAAAABn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rVpVdevWdZvv3FENWVlZatGixVX7uLLO2rVrF/qzuPp4rlixQrfffrs8PT1lsVgUEhLiNjWuX7++wH8H/vnPf7pNnZL0888/q3v37goICJCfn5+qVKnidt/5pX9/atSoofLly6tSpUp65JFHlJmZ6Va/cxxJSUlRdHS0fHx8FBgYqKeffloXLlxw2LeoEG5uQHBwsBISEvTXX3/Z2s6fP6958+apZs2a+frPnDlT//73v7Vx40YdPXrU4Ta//PJLpaamas2aNcrMzFRUVJROnz5tWz548GClpqbaTW+88YZteXZ2tnr27KkhQ4a4VZ29evVSjRo1lJCQoF27dikvL0/vv/++tm/frtzcXHl4eGj79u039Xj99NNPtjr27t2riRMnavr06Xruuecc7uvKY5mbmytvb28NGTJEnp6e8vb2vinH8srvvH379lq4cKH279+vJUuW6MyZMypTpozLv/Mr67xk1KhRtsenBwUFuWWdr7zyisOfXXeqc8mSJXrooYc0cOBAde/eXUFBQTp+/Ljb1BgeHp5vWf369eXp6al169a5TZ2S1KVLF124cEHr1q3Ttm3bVKFCBVksFs2fP99t6jx37pwsFotOnDihDRs2aPXq1dq7d68eeught/udc7nc3FxFR0crOztbmzdv1n//+1/Fx8drzJgxDvsXGQPXpX///kb37t2NJk2aGHPnzrW1f/zxx0azZs2M7t27G/3797e1nzlzxihXrpzx008/Gb179zZee+01u+39/vvvhiRjx44dtrZvvvnGkGSsXr3aMAzDaNeunfHkk08Wqr7Zs2cb/v7+blPntepo3LixUa5cOZcdr0veeOMNIyQkxOGyq32GChUqGEFBQS79zi+5++67DUlG48aN3e5nc+XKlUbDhg2NvXv3GpKMiIgIl/9sXqlWrVrGxIkTbfPu8nfocjk5OUb16tWNDz/80G1rvFJ2drZhtVqNhg0bulWdJ06cMCQZGzdutLX16dPHkGTUrl3bbeoMCwszypQpY3fsfvjhB0OS0bBhQ5d/x5d+51xp5cqVhoeHh5GWlmZrmzZtmuHn52dkZWUVatvXgzM3N2jQoEGaPXu2bX7WrFm2V0dcbuHChWrYsKEaNGigvn37atasWdd8bfulMwEFXSYpiXUWVEdOTo7dQ6NcdbzS09NVsWJFpz9DvXr18vVzxWc4efKk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5eTk2AbaXu7ChQuaM2eOJkyYoJ07d9qmXbt2qVq1avkG7wYHB6tu3boOg8316tWrlzw8PDRv3jzNmTNHgwYNksVikSR988036t69u/r27avmzZurTp06+vnnn53ex+bNm1WrVi09//zzat26terXr6+DBw/m65eSkmJ3p9i3334rDw8PNWjQIF/fRo0ayWq1KiUlRfXq1bObgoODbf0qV66s/v37a+7cuZo0aZJmzJjhdP3A3x1nbgDYeHp6at++fbY/X2n58uU6deqUYmNj7c7QSNL999+vmTNnFvicGkfOnTuntLQ0uzar1aoKFSoUuE65cuXUu3dvjR49WhkZGXbP4Klfv74WL16szZs3q0KFCnr77bd17NgxNWrUqNA1XdpOSkqKEhISdNttt2nFihW2y3CX8/LyUv/+/fXWW28pIyNDTzzxhHr16pXvkpR0cYDyf/7zH40YMUJ5eXm68847lZ6erm+++UZ+fn7q37+/xowZo9DQUDVu3FhZWVlavny5br31VqdqB8CZGwBX8PPzK/B27JkzZ6pDhw75go10Mdxs3brVqQfpffDBB6patardFBMTc831YmNjderUKUVGRtpdHnvhhRfUqlUrRUZGKiIiQkFBQdf1hOBu3bppxIgRGjZsmFq0aKHNmzfrxRdfzNevXr16+uc//6nOnTurY8eOatasmd57770Ct/vqq6/qxRdfVFxcnG699VZ16tRJK1asUEhIiCSpTJkyGj16tJo1a6a2bdvK09NTCQkJTtcP/N1ZDOMa928CAACUIJy5AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApvL/s2EKz3IU2acAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, mape2_1, mape3, mape4, mape5, mape6, mape7, mape8, mape8_1, mape9, mape10]\n", + "\n", + "# List of corresponding labels for each MAPE value\n", + "labels = ['MAPE1', 'MAPE2', 'MAPE2_1', 'MAPE3', 'MAPE4', 'MAPE5', 'MAPE6', 'MAPE7', 'MAPE8', 'MAPE2_1', 'MAPE9', 'MAPE10']\n", + "\n", + "# Plotting the bar graph\n", + "plt.bar(labels, mape_values)\n", + "plt.xlabel('MAPE Variables')\n", + "plt.ylabel('MAPE Values')\n", + "plt.title('Bar Graph of MAPE')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bCF5ZehcARcw", + "outputId": "ed3103b5-2636-48c5-82ba-60f8b3dfd729" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Length of labels: 12\n", + "Length of mape_values: 10\n" + ] + } + ], + "source": [ + "print(\"Length of labels:\", len(labels))\n", + "print(\"Length of mape_values:\", len(mape_values))" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "ZDPV0M5rDTi6", + "outputId": "2b5b43fb-f025-41ff-dc55-6193541132e0" + }, + "outputs": [ + { + "data": { + "image/png": "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6dMHffr00Xv8lStXom7duliwYAEAoHHjxjh69CgWLVqEoKCgyiqTiIiIqqAqdU5OUlISAgMDtYYFBQUhKSnJRBURERGRuTLpnhxDpaenw93dXWuYu7s7srOzce/ePdjY2JSZJj8/H/n5+dL77OzsSq+TiIiITK9K7cmpiOjoaDg6OkovLy8vU5dEpSkUpnsRUdXCbQUZqEqFHA8PD2RkZGgNy8jIgIODg869OAAwdepUZGVlSa+rV68+iVLND8MEEdHThdv9qnW4KiAgAN98843WsPj4eAQEBJQ7jUqlgkqlquzSiMhcmXKDK4Tplk1Ept2Tk5OTg9OnT+P06dMA7l8ifvr0aaSmpgK4vxcmLCxMGn/s2LH4888/8e677+L8+fNYvnw5Nm/ejMmTJ5uifCIiIjJjJt2T8/PPP6Nbt27S+4iICABAeHg4YmJikJaWJgUeAKhbty727t2LyZMnY8mSJahduza++OILXj5ORGRMptr7xT1fZGQKIZ6uXpWdnQ1HR0dkZWXBwcHB1OU8Oea6y95c6yL5YB8znLmGHHOty1zJrO9X5Pe7Sp14TERERKQvhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlS1MXQEREVKXJ7GnfcsI9OURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkS5amLoCIDKRQmGa5Qjz8c3Oti4ieWtyTQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJsBEhGZgqlungjwBor01OCeHCIiIpIl7skxNt7anoiIyCxwTw4RERHJEvfkEOnC8yWIiKo87skhIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZMnnIWbZsGXx8fKBWq9G+fXscP378oeMvXrwYDRs2hI2NDby8vDB58mTk5eU9oWqJiIioqjBpyImNjUVERAQiIyNx6tQp+Pn5ISgoCNevX9c5/ldffYUpU6YgMjISf/zxB9asWYPY2Fi8//77T7hyIiIiMncmDTkLFy7E6NGjMXLkSDRp0gQrV66Era0t1q5dq3P8H374AZ06dcLQoUPh4+ODXr16YciQIY/c+0NERERPH5OFnIKCApw8eRKBgYH/K0apRGBgIJKSknRO07FjR5w8eVIKNX/++Se++eYb9O3bt9zl5OfnIzs7W+tFRERE8mdpqgXfuHEDxcXFcHd31xru7u6O8+fP65xm6NChuHHjBp599lkIIVBUVISxY8c+9HBVdHQ0Zs2aZdTaiYiIyPyZ/MRjQxw+fBhz587F8uXLcerUKcTFxWHv3r2YM2dOudNMnToVWVlZ0uvq1atPsGIiIiIyFZPtyalRowYsLCyQkZGhNTwjIwMeHh46p5kxYwaGDx+OV199FQDQvHlz3L17F2PGjMG0adOgVJbNbCqVCiqVyvhfgIiIiMyayfbkWFtbw9/fHwkJCdIwjUaDhIQEBAQE6JwmNze3TJCxsLAAAAghKq9YIiIiqnJMticHACIiIhAeHo42bdqgXbt2WLx4Me7evYuRI0cCAMLCwlCrVi1ER0cDAIKDg7Fw4UK0atUK7du3x8WLFzFjxgwEBwdLYYeIiIgIMHHICQkJQWZmJmbOnIn09HS0bNkS+/fvl05GTk1N1dpzM336dCgUCkyfPh3//PMPXF1dERwcjA8//NBUX4GIiIjMlEI8Zcd5srOz4ejoiKysLDg4OBh/AQqF8eepj0etRlPVBTy8NtZVlrmuS9ZlOPYxw7Auw1XVPlYBFfn9rlJXVxERERHpiyGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGTJ4JCzf/9+HD16VHq/bNkytGzZEkOHDsW///5r1OKIiIiIKsrgkPPOO+8gOzsbAHD27Fm89dZb6Nu3Ly5fvoyIiAijF0hERERUEZaGTnD58mU0adIEALBt2zb069cPc+fOxalTp9C3b1+jF0hERERUEQbvybG2tkZubi4A4NChQ+jVqxcAwMXFRdrDQ0RERGRqBu/JefbZZxEREYFOnTrh+PHjiI2NBQBcuHABtWvXNnqBRERERBVh8J6cpUuXwtLSElu3bsWKFStQq1YtAMC+ffvQu3dvoxdIREREVBEKIYQwdRFPUnZ2NhwdHZGVlQUHBwfjL0ChMP489fGo1WiquoCH18a6yjLXdcm6DMc+ZhjWZbiq2scqoCK/3xW6T86lS5cwffp0DBkyBNevXwdwf0/Ob7/9VpHZERERERmdwSHnu+++Q/PmzfHTTz8hLi4OOTk5AIAzZ84gMjLS6AUSERERVYTBIWfKlCn44IMPEB8fD2tra2l49+7d8eOPPxq1OCIiIqKKMjjknD17FgMHDiwz3M3NDTdu3DBKUURERESPy+CQ4+TkhLS0tDLDf/nlF+lKKyIiIiJTMzjk/Oc//8F7772H9PR0KBQKaDQaHDt2DG+//TbCwsIqo0YiIiIigxkccubOnYtGjRrBy8sLOTk5aNKkCbp06YKOHTti+vTplVEjERERkcEqfJ+c1NRUnDt3Djk5OWjVqhUaNGhg7NoqBe+TYwJV8T4O5loXwD72IHOtC2AfMxTrMlxV7WMVUJHfb4Mf61DC29sb3t7eFZ2ciIiIqFIZHHJeeeWVh36+du3aChdDREREZCwGh5x///1X631hYSHOnTuH27dvo3v37kYrjIiIiOhxGBxytm/fXmaYRqPB66+/jvr16xulKCIiIqLHVaFnV5WZiVKJiIgILFq0yBizIyIiInpsRgk5wP2HdhYVFRlrdkRERESPxeDDVREREVrvhRBIS0vD3r17ER4ebrTCiIiIiB6HwSHnl19+0XqvVCrh6uqKBQsWPPLKKyIiIqInxeCQk5iYaNQCli1bhvnz5yM9PR1+fn747LPP0K5du3LHv337NqZNm4a4uDjcunULderUweLFi9G3b1+j1kVERERVW4VvBmgMsbGxiIiIwMqVK9G+fXssXrwYQUFBSE5OhpubW5nxCwoK0LNnT7i5uWHr1q2oVasWrly5AicnpydfPBEREZk1vR7r0KpVKyj0vD30qVOn9F54+/bt0bZtWyxduhTA/UvRvby8MHHiREyZMqXM+CtXrsT8+fNx/vx5WFlZ6b2c0vhYBxOoircdN9e6APaxB5lrXQD7mKFYl+Gqah+rgEp7rMOAAQMepy6dCgoKcPLkSUydOlUaplQqERgYiKSkJJ3T7Nq1CwEBARg/fjx27twJV1dXDB06FO+99x4sLCx0TpOfn4/8/HzpfXZ2tnG/CBEREZklvUJOZGSk0Rd848YNFBcXw93dXWu4u7s7zp8/r3OaP//8E99++y1CQ0PxzTff4OLFixg3bhwKCwvLrTE6OhqzZs0yev1ERERk3ox2n5wnQaPRwM3NDatWrYK/vz9CQkIwbdo0rFy5stxppk6diqysLOl19erVJ1gxERERmYrBJx4XFxdj0aJF2Lx5M1JTU1FQUKD1+a1bt/SaT40aNWBhYYGMjAyt4RkZGfDw8NA5jaenJ6ysrLQOTTVu3Bjp6ekoKCiAtbV1mWlUKhVUKpVeNREREZF8GLwnZ9asWVi4cCFCQkKQlZWFiIgIvPjii1AqlYiKitJ7PtbW1vD390dCQoI0TKPRICEhAQEBATqn6dSpEy5evAiNRiMNu3DhAjw9PXUGHCIiInqKCQPVq1dP7NmzRwghhJ2dnbh48aIQQoglS5aIIUOGGDSvTZs2CZVKJWJiYsTvv/8uxowZI5ycnER6eroQQojhw4eLKVOmSOOnpqYKe3t7MWHCBJGcnCz27Nkj3NzcxAcffKD3MrOysgQAkZWVZVCtert/TvmTf5lrXY+qjXVVnXXJutjHWJd51VWV+1gFVOT32+DDVenp6WjevDkAwM7ODllZWQCAfv36YcaMGQbNKyQkBJmZmZg5cybS09PRsmVL7N+/XzoZOTU1FUrl/3Y2eXl54cCBA5g8eTJatGiBWrVqYdKkSXjvvfcM/RpEREQkcwaHnNq1ayMtLQ3e3t6oX78+Dh48iNatW+PEiRMVOvdlwoQJmDBhgs7PDh8+XGZYQEAAfvzxR4OXQ0RERE8Xg8/JGThwoHQezcSJEzFjxgw0aNAAYWFhfHYVERERmQ297ngMAEuXLsWwYcPKPEIhKSkJSUlJaNCgAYKDgyujRqPiHY9N4GG1sa6yzHVdsi7DsY8ZhnUZrqr2sQqoyO+33iHH0dERhYWFGDhwIEaNGoXu3bs/VrGmwpBjAlXxj9Bc6wLYxx5krnUB7GOGYl2Gq6p9rAIq8vut9+Gq9PR0rFy5EteuXUPPnj1Rt25dzJkzhzfXIyIiIrOkd8ixsbFBWFgYEhMTkZKSguHDh2PNmjWoW7cuevfujS1btqCwsLAyayUiIiLSW4Ue61CvXj3Mnj0bly9fxr59+1C9enWMGDECtWrVMnZ9RERERBXyWM+uUigUsLS0hEKhgBCCe3KIiIjIbFQo5Fy9ehWzZ89GvXr10LNnT1y7dg2rV69GWlqasesjIiIiqhC9bwZYUFCAuLg4rF27Ft9++y08PT0RHh6OV155BfXq1avMGomIiIgMpnfI8fDwQG5uLvr164fdu3cjKChI65ELREREROZE75Azffp0DB8+HK6urpVZDxEREZFR6B1yIiIiKrMOIiIiIqPi8SYiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJb1PPC5RXFyMmJgYJCQk4Pr169BoNFqff/vtt0YrjoiIiKiiDA45kyZNQkxMDJ5//nk0a9YMClM+yp2IiIioHAaHnE2bNmHz5s3o27dvZdRDREREZBQGn5NjbW0NX1/fyqiFiIiIyGgMDjlvvfUWlixZAiFEZdRDREREZBQGH646evQoEhMTsW/fPjRt2hRWVlZan8fFxRmtOCIiIqKKMjjkODk5YeDAgZVRCxEREZHRGBxy1q1bVxl1EBERERmVwSGnRGZmJpKTkwEADRs25NPJiYiIyKwYfOLx3bt38corr8DT0xNdunRBly5dULNmTYwaNQq5ubmVUSMRERGRwQwOOREREfjuu++we/du3L59G7dv38bOnTvx3Xff4a233qqMGomIiIgMphAGXgteo0YNbN26Fc8995zW8MTERAwePBiZmZnGrM/osrOz4ejoiKysLDg4OBh/Aaa6A/SjVqMp70z9sNpYV1nmui5Zl+HYxwzDugxXVftYBVTk99vgPTm5ublwd3cvM9zNzY2Hq4iIiMhsGBxyAgICEBkZiby8PGnYvXv3MGvWLAQEBBi1OCIiIqKKMvjqqiVLliAoKAi1a9eGn58fAODMmTNQq9U4cOCA0QskIiIiqgiDQ06zZs2QkpKCjRs34vz58wCAIUOGIDQ0FDY2NkYvkIiIiKgiKnSfHFtbW4wePdrYtRAREREZjV4hZ9euXejTpw+srKywa9euh477wgsvGKUwIiIioseh1yXkSqUS6enpcHNzg1JZ/rnKCoUCxcXFRi3Q2HgJuQlUxUsczbUugH3sQeZaF8A+ZijWZbiq2scqoCK/33rtydFoNDr/TURERGSuDL6EXJfbt28bYzZERERERmNwyJk3bx5iY2Ol94MGDYKLiwtq1aqFM2fOGLU4IiIioooyOOSsXLkSXl5eAID4+HgcOnQI+/fvR58+ffDOO+8YvUAiIiKiijD4EvL09HQp5OzZsweDBw9Gr1694OPjg/bt2xu9QCIiIqKKMHhPjrOzM65evQoA2L9/PwIDAwEAQgizv7KKiIiInh4G78l58cUXMXToUDRo0AA3b95Enz59AAC//PILfH19jV4gERERUUUYHHIWLVoEHx8fXL16FR9//DHs7OwAAGlpaRg3bpzRCyQiIiKqCL1uBignvBmgCVTFm1WZa10A+9iDzLUugH3MUKzLcFW1j1VApd0MkI91ICIioqqGj3UwNv5Po6yq+D8Nc60LYB97kLnWBbCPGYp1Ga6q9rEK4GMdiIiIiP6fUR7rQERERGRuDA45b7zxBj799NMyw5cuXYo333zTGDURERERPTaDQ862bdvQqVOnMsM7duyIrVu3GqUoIiIiosdlcMi5efMmHB0dywx3cHDAjRs3jFIUERER0eMyOOT4+vpi//79ZYbv27cP9erVM0pRRERERI/L4DseR0REYMKECcjMzET37t0BAAkJCViwYAEWL15s7PqIiIiIKsTgkPPKK68gPz8fH374IebMmQMA8PHxwYoVKxAWFmb0AomIiIgq4rEe65CZmQkbGxvp+VVVAW8GaAJV8WZV5loXwD72IHOtC2AfMxTrMlxV7WMVUJHf7wrdJ6eoqAiHDh1CXFwcSjLStWvXkJOTU5HZERERERmdwYerrly5gt69eyM1NRX5+fno2bMn7O3tMW/ePOTn52PlypWVUScRERGRQQzekzNp0iS0adMG//77L2xsbKThAwcOREJCglGLIyIiIqoog/fkHDlyBD/88AOsra21hvv4+OCff/4xWmFEREREj8PgPTkajUbnk8b//vtv2NvbG6UoIiIiosdlcMjp1auX1v1wFAoFcnJyEBkZib59+1aoiGXLlsHHxwdqtRrt27fH8ePH9Zpu06ZNUCgUGDBg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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, precision2_1, precision3, precision4, precision5, precision6, precision7, precision8, precision8_1, precision9, precision10]\n", + "\n", + "# List of corresponding labels for each precision value\n", + "labels = ['Precision1', 'Precision2', 'Precision2_1', 'Precision3', 'Precision4', 'Precision5', 'Precision6', 'Precision7', 'Precision8', 'Precision8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "39LBleNeDeuw", + "outputId": "66c1cd08-96bb-46bb-afd3-7792e2b71345" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFVUlEQVR4nO3df3zO9eL/8ee1za7NMD83msUwSjKaH01Gq62hRDkSObZZOYo4dnxEYeQci/Krg/TD73OKQh3FEc1RiSizQsjv0WHzc2Njy/b+/uG767hs2DWba3t73G+363Zr773f1+u59/V2Xc/evy6LYRiGAAAATMLF2QEAAABKEuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGQLk1btw4WSwWnTp1qtTHWrNmjVq0aCEPDw9ZLBadO3eu1McsLRaLRePGjbP9vGDBAlksFh0+fNhpmYCSRLkByqD8D5urHz4+PgoLC9O///3v257n888/V9euXeXr6yt3d3dVr15dHTp00JQpU5SRkXHb89xup0+f1jPPPCNPT0/NmjVLixcvlpeXV6HzXvvaubm5yc/PT9HR0frtt99uc3LgzuTm7AAAru/1119XQECADMNQamqqFixYoC5duujzzz/XE088Uerj5+XlKTY2VgsWLND999+vl156Sf7+/jp//rw2b96s0aNHa/Xq1UpMTCz1LM70ww8/6Pz585owYYLCw8OLtEz+a3fp0iV9//33WrBggTZu3KidO3fKw8OjlBMDdzbKDVCGde7cWa1atbL9HBsbK19fX3300UclUm7y8vKUk5Nz3Q/byZMna8GCBRo2bJimTJkii8Vi+93QoUN1/PhxLVq06JbGKA/S0tIkSVWrVi3yMle/ds8//7xq1qypSZMmaeXKlXrmmWdKIyaA/4/DUkA5UrVqVXl6esrNzf7/S9566y21a9dONWrUkKenp4KDg7Vs2bICy1ssFg0ePFj//Oc/dd9998lqtWrNmjWFjpWVlaVJkybpvvvu05tvvmlXbPLVqVNHr7zySpHHKE7OJk2ayMPDQ8HBwfrmm28KzXru3DlFR0eratWq8vb2VkxMjLKysgpfidf45JNPFBwcLE9PT9WsWVN9+/a1O3z08MMPKyoqSpLUunVrWSwWRUdHF+m5rxYaGipJOnDggN30PXv26A9/+IOqV68uDw8PtWrVSitXriz0bxw2bJjq168vq9WqunXrql+/frbzjXJycjR27FgFBwfL29tbXl5eCg0N1X/+8x+HswLlHXtugDIsPT1dp06dkmEYSktL09///ndduHBBffv2tZtvxowZevLJJ/Xcc88pJydHS5YsUc+ePfXFF1/o8ccft5t3/fr1+vjjjzV48GDVrFlT9evXL3TsjRs36ty5cxo+fLhcXV0dyn29MRzJ+fXXX2vp0qUaMmSIrFarZs+erU6dOmnr1q1q1qyZ3bzPPPOMAgIClJCQoKSkJH3wwQfy8fHRpEmTbphzwYIFiomJUevWrZWQkKDU1FTNmDFD3333nbZv366qVavqtddeU5MmTfTee+/ZDjU1bNjQofUhyXaybrVq1WzTdu3apYceekh+fn4aOXKkvLy89PHHH6t79+5avny5nnrqKUnShQsXFBoaqt27d6t///564IEHdOrUKa1cuVLHjh1TzZo1lZGRoQ8++EC9e/fWCy+8oPPnz2vu3LmKjIzU1q1b1aJFC4czA+WWAaDMmT9/viGpwMNqtRoLFiwoMH9WVpbdzzk5OUazZs2MRx55xG66JMPFxcXYtWvXTTPMmDHDkGR89tlndtMvX75snDx50u6Rl5dXpDEcySnJ+PHHH23Tjhw5Ynh4eBhPPfWUbVp8fLwhyejfv7/d8k899ZRRo0aNG/59OTk5ho+Pj9GsWTPj4sWLtulffPGFIckYO3asbVr+6/HDDz/c8Dmvnverr74yTp48aRw9etRYtmyZUatWLcNqtRpHjx61zfvoo48a999/v3Hp0iXbtLy8PKNdu3ZGYGCgbdrYsWMNScaKFSsKjJe/7i9fvmxkZ2fb/e7s2bOGr69vgfUjyYiPjy+Q+dChQzf9+4DygMNSQBk2a9YsrVu3TuvWrdM//vEPhYWF6fnnn9eKFSvs5vP09LT999mzZ5Wenq7Q0FAlJSUVeM6OHTuqadOmNx07/yqoSpUq2U3fsWOHatWqZfc4ffp0kcZwJGdISIiCg4NtP999993q1q2bvvzyS+Xm5trNO3DgQLufQ0NDdfr06RteyfXjjz8qLS1NL730kt35QI8//rjuuecerVq16rrLFkV4eLhq1aolf39//eEPf5CXl5dWrlypunXrSpLOnDmj9evX65lnntH58+d16tQpnTp1SqdPn1ZkZKT27dtnOzy2fPlyBQUF2fbkXC3/cKGrq6vc3d0lXTnP6cyZM7p8+bJatWpV6PoFzIzDUkAZ1qZNG7sTinv37q2WLVtq8ODBeuKJJ2wfZl988YX++te/Kjk5WdnZ2bb5CztPJiAgoEhjV65cWdKVQyJXa9SokdatWydJWrRokRYvXlzkMRzJGRgYWGBa48aNlZWVpZMnT6p27dq26XfffbfdfPmHfs6ePasqVaoUmuXIkSOSpCZNmhT43T333KONGzcWulxRzZo1S40bN1Z6errmzZunb775Rlar1fb7/fv3yzAMjRkzRmPGjCn0OdLS0uTn56cDBw6oR48eNx1z4cKFmjJlivbs2aPff//dNr2orzlgFpQboBxxcXFRWFiYZsyYoX379um+++7Tt99+qyeffFIdOnTQ7NmzVadOHVWoUEHz58/Xhx9+WOA5rt57ciP33HOPJGnnzp3q1q2bbXqlSpVsl0NfrwAUNoajOR1xvXOCDMO4pee9FVcX0+7du6t9+/bq06eP9u7dq0qVKikvL0+SNHz4cEVGRhb6HI0aNSryeP/4xz8UHR2t7t276//+7//k4+MjV1dXJSQkFDiJGTA7yg1Qzly+fFnS//aoLF++XB4eHvryyy/t9gzMnz//lsYJDQ2Vt7e3lixZolGjRsnF5daOYjuac9++fQWm/frrr6pYsaJq1ap1S1kkqV69epKkvXv36pFHHrH73d69e22/Lwn5JSMsLEwzZ87UyJEj1aBBA0lShQoVbnrvnIYNG2rnzp03nGfZsmVq0KCBVqxYYbcnLD4+/tb/AKCc4ZwboBz5/ffftXbtWrm7u+vee++VdOWD02Kx2J2HcvjwYX322We3NFbFihU1YsQI7dy5UyNHjix0L4gje0Yczbl582a7c0WOHj2qf/3rX3rsscccvnqrMK1atZKPj4/mzJljd4js3//+t3bv3l3g6q1b9fDDD6tNmzaaPn26Ll26JB8fHz388MN69913dfz48QLznzx50vbfPXr00E8//aRPP/20wHz5r0H+Orn6NdmyZYs2b95con8HUB6w5wYow/79739rz549kq6cf/Hhhx9q3759GjlypO1ckscff1xTp05Vp06d1KdPH6WlpWnWrFlq1KiRfv7551saf+TIkdq9e7fefPNNrV27Vj169FDdunV19uxZJSUl6ZNP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g5WYmGiblpeXp8TERIWEhBSY/5577tGOHTuUnJxsezz55JMKCwtTcnIye2QAAIDj3y1V0uLi4hQVFaVWrVqpTZs2mj59ujIzMxUTEyNJ6tevn/z8/JSQkCAPDw81a9bMbvmqVatKUoHpAADgzuT0ctOrVy+dPHlSY8eO1YkTJ9SiRQutWbPGdpJxSkqKXFycuoMJAACUI8X+4szyii/OvP3K4xe7ldVcEtvYtcpqLoltzFHkclx53caK47Z8cSYAAEBZRLkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmUibKzaxZs1S/fn15eHiobdu22rp163Xnff/99xUaGqpq1aqpWrVqCg8Pv+H8AADgzuL0crN06VLFxcUpPj5eSUlJCgoKUmRkpNLS0gqdf8OGDerdu7f+85//aPPmzfL399djjz2m33777TYnBwAAZZHFMAzDmQHatm2r1q1ba+bMmZKkvLw8+fv76+WXX9bIkSNvunxubq6qVaummTNnql+/fjedPyMjQ97e3kpPT1eVKlVuOf+1LCX+jEVzsxfRWbmkG2cjV0Fl9bUkl+PYxhxDLseV122sOBz5/HbqnpucnBxt27ZN4eHhtmkuLi4KDw/X5s2bi/QcWVlZ+v3331W9evVCf5+dna2MjAy7BwAAMC+nlptTp04pNzdXvr6+dtN9fX114sSJIj3HK6+8orvuusuuIF0tISFB3t7etoe/v/8t5wYAAGWX08+5uRVvvPGGlixZok8//VQeHh6FzjNq1Cil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burRo4d27dqlrKwsRURE2M2fk5Ojli1bSpKSk5MVGhpq+z+Va6Wmpmr06NHasGGD0tLSlJubq6ysLKWkpDicLSoqSkePHi31bJmZmbZxAwMDFRYWpgYNGqhz586Srpxkd+24+ScQxsfHa9OmTaW6Tq62c+dOdevWTfHx8dq/f7/Dr2VWVpaM/39D79J8La/ONXHiROXm5qpfv34aNmyYU7exsLAw+fv767ffflOdOnXk5uamjh072tZNWdn281/Lu+66S5MnT3b6OmvevLmmTp2qiIgI3X333Ro1apTat2+vDh06KDIy0nZo73bnunp9nTlzRp9//rkeffRRvffee05/r7h48aLthPrGjRvr3nvv1aJFi9StW7dS24YuXryo2NhYPfTQQ/roo4+Um5urt956S4mJierYsaPefffdIr9XXLx40fZt2iX5OoaFhem1115TWFiYunbtKh8fH02YMEHZ2dl68803FRoaKkm2PSPffvutgoODSzxHeUC5cZCXl5caNWok6cpu1KCgIM2dO9f2xZ2rVq2Sn5+f3TL5h0A8PT1v+NxRUVE6ffq0ZsyYoXr16slqtSokJKTAuR5FydatWzdNnjy51LPl5eXZjTt48GDFx8dr6dKltmWvHnffvn3q27ev+vTpo9GjR6tHjx6luk7y/fLLL3r00Uc1YMAAjR49WtHR0Q6/ls8995ztd6X5Wl6d66OPPlJQUJBOnjypESNGaODAgVq0aJGaN29ut8zt2Ma8vLyUlJSkHTt2SLpyrsG8efNsv+/Ro4fGjBlz23PlZ7v2tXzkkUeUmpoqyXn/Lr28vGzbzAcffKDHH3/cbhsbNGhQgZPEb1euq9dXzZo15e/vr3r16kly7nvFd999pylTpmjz5s1ycXGR1WqVr6+vKlaseMMP2lvdhj788EMdPnzYNm7+tIoVKyojI8Oh94oRI0YoMzPzltZXYbm9vLxUv359SdK4ceMUFRWluXPnqkePHnrzzTe1bNkyNWnSRMeOHVPnzp318ccfq3Xr1iWeo7hq165t+zeZL//n/HOxSgrl5ha4uLjo1VdfVVxcnH799VdZrValpKTY/m/2Ws2bN9fChQv1+++/F9qev/vuO82ePVtdunSRJB09etR23NZR+ZeCjx49ulSz5V+WmC9/nQwdOlTSlf+DyB93165dio6OVmxsrO3yv9uxTnbt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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, recall2_1, recall3, recall4, recall5, recall6, recall7, recall8, recall8_1, recall9, recall10]\n", + "\n", + "# List of corresponding labels for each recall value\n", + "labels = ['Recall1', 'Recall2', 'Recall2_1', 'Recall3', 'Recall4', 'Recall5', 'Recall6', 'Recall7', 'Recall8', 'Recall8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "id": "13cZXvb0DsvK" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true + }, + "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.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Python File/Stock_Price_Prediction_BASE_19716.ipynb b/Python File/Stock_Price_Prediction_BASE_19716.ipynb new file mode 100644 index 0000000..0211e85 --- /dev/null +++ b/Python File/Stock_Price_Prediction_BASE_19716.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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateOpenHighLowCloseAdj CloseVolume
001-01-199618.69114718.97892218.54018418.82324012.40993143733533.0
102-01-199618.89400518.96476717.73819218.22410612.01493156167280.0
203-01-199618.32789218.56848917.64383917.73819211.69457768296318.0
304-01-199617.50231217.83254217.22397217.67686311.65414286073880.0
405-01-199617.73819217.78536617.45985217.57779311.58882776613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolume
018.69114718.97892218.54018418.82324043733533.0
118.89400518.96476717.73819218.22410656167280.0
218.32789218.56848917.64383917.73819268296318.0
317.50231217.83254217.22397217.67686386073880.0
417.73819217.78536617.45985217.57779376613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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.
" + ] + }, + "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.
" + ] + }, + "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 +} diff --git a/Python File/Stock_Price_Prediction_BASE_20502.ipynb b/Python File/Stock_Price_Prediction_BASE_20502.ipynb new file mode 100644 index 0000000..c82b075 --- /dev/null +++ b/Python File/Stock_Price_Prediction_BASE_20502.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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateOpenHighLowCloseAdj CloseVolume
001-01-199618.69114718.97892218.54018418.82324012.40993143733533.0
102-01-199618.89400518.96476717.73819218.22410612.01493156167280.0
203-01-199618.32789218.56848917.64383917.73819211.69457768296318.0
304-01-199617.50231217.83254217.22397217.67686311.65414286073880.0
405-01-199617.73819217.78536617.45985217.57779311.58882776613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolume
018.69114718.97892218.54018418.82324043733533.0
118.89400518.96476717.73819218.22410656167280.0
218.32789218.56848917.64383917.73819268296318.0
317.50231217.83254217.22397217.67686386073880.0
417.73819217.78536617.45985217.57779376613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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.
" + ] + }, + "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.
" + ] + }, + "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_LOCAL_19716.ipynb b/Python File/Stock_Price_Prediction_LOCAL_19716.ipynb new file mode 100644 index 0000000..19803fe --- /dev/null +++ b/Python File/Stock_Price_Prediction_LOCAL_19716.ipynb @@ -0,0 +1,7142 @@ +{ + "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", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SOQbXSiB-g5G", + "outputId": "55ee6ec8-9146-4ebf-c2fe-b4b06bc3a5c4" + }, + "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": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "Sc4id6VxL8BS", + "outputId": "78207ea2-5b80-47a2-a1b1-0548765b6455" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateOpenHighLowCloseAdj CloseVolume
001-01-199618.69114718.97892218.54018418.82324012.40993143733533.0
102-01-199618.89400518.96476717.73819218.22410612.01493156167280.0
203-01-199618.32789218.56848917.64383917.73819211.69457768296318.0
304-01-199617.50231217.83254217.22397217.67686311.65414286073880.0
405-01-199617.73819217.78536617.45985217.57779311.58882776613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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": 6, + "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": 7, + "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": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "pqbTBdnBOKJc", + "outputId": "42ed663c-ae0f-43d7-a7bd-18bb37dfef6f" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolume
018.69114718.97892218.54018418.82324043733533.0
118.89400518.96476717.73819218.22410656167280.0
218.32789218.56848917.64383917.73819268296318.0
317.50231217.83254217.22397217.67686386073880.0
417.73819217.78536617.45985217.57779376613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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": 10, + "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": 11, + "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": 12, + "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": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "997ZEgibCZIO", + "outputId": "879af72c-3e7c-4b8c-ba28-452fa8ba3cd6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5659, 4)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bmtt76RuCeyG", + "outputId": "855f34ec-4914-4e1f-c9b1-6f8753612100" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1415, 4)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CeJkUJ92Ciqd", + "outputId": "21c5949c-e787-40df-b816-7cc9e830e401" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5659,)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7HGC7VuTCjWc", + "outputId": "cbda22d6-bec9-45d7-80ac-c74ad14b7c0d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1415,)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c6Ek8jRlO2_I" + }, + "source": [ + "## 1. LINEAR REGRESSION" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "id": "RdZ1SpzdMHAJ" + }, + "outputs": [], + "source": [ + "# Create a linear regression model\n", + "model1 = LinearRegression()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "id": "mPM035IzMY04", + "outputId": "084d9520-1d31-4287-a9d1-6f9eeea60f9b" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Close
5286257.350006
3408129.464996
5477279.350006
6906588.500000
53021.644367
\n", + "

" + ], + "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": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "qBhQ9HbYMI3d", + "outputId": "daac2bc7-a480-4013-8e06-717bb8c1fa65" + }, + "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": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model1.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "id": "X269co2kMS4z" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred1 = model1.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "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": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dEi49xtEOtne", + "outputId": "60b53406-81c4-4531-cbb0-77b9ffde8890" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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": 23, + "metadata": { + "id": "o7K9r7EXWRjQ" + }, + "outputs": [], + "source": [ + "from sklearn.svm import SVR\n", + "from sklearn.model_selection import GridSearchCV" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "id": "0xQewd7QWTtq" + }, + "outputs": [], + "source": [ + "# Create an SVR model\n", + "model2 = SVR()\n", + "param_grid = {'C':[0.1, 1], 'epsilon':[0.01, 0.1, 0.5], 'kernel':['sigmoid']}\n", + "GV_SVR = GridSearchCV(model2, param_grid = param_grid, scoring = 'accuracy', n_jobs = -1)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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": 26, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 191 + }, + "id": "22SaCsQmfhgP", + "outputId": "7867aa8e-a7dc-49e4-d0aa-310423e9c696" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/sklearn/model_selection/_search.py:1103: UserWarning: One or more of the test scores are non-finite: [nan nan nan nan nan nan]\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "
GridSearchCV(estimator=SVR(), n_jobs=-1,\n",
+              "             param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n",
+              "                         'kernel': ['sigmoid']},\n",
+              "             scoring='accuracy')
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": [ + "GridSearchCV(estimator=SVR(), n_jobs=-1,\n", + " param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n", + " 'kernel': ['sigmoid']},\n", + " scoring='accuracy')" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "GV_SVR.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "id": "OQ1nL4oYfkAC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2 = GV_SVR.predict(X_test)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "U6-EppR68Jsu", + "outputId": "cfa67a46-ab8c-478d-c13e-fe884ef7ebae" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'C': 0.1, 'epsilon': 0.01, 'kernel': 'sigmoid'}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GV_SVR.best_params_" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "id": "nRYTwydsfpjb" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics with grid search\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": 30, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "656J5oz5fzq6", + "outputId": "c62c2076-2a10-43da-935d-c593c2d7be79" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 158.5191296342117\n", + "MAE: 127.61818666535594\n", + "MAPE: 2.6724681150799072\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 0.9970457902511078\n", + "Confusion Matrix:\n", + " [[738 2]\n", + " [ 0 675]]\n", + "Recall: 1.0\n", + "F1 Score: 0.9985207100591716\n" + ] + } + ], + "source": [ + "# Print the evaluation metrics with grid search\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": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "tIlc-wCE8Jsv", + "outputId": "fc6a39f5-b546-444e-a522-8bbcf889be14" + }, + "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": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#fitting without grid search\n", + "model2.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "id": "f3u1h6Dk8Jsv" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2_1 = model2.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "F-NgJx2d8Jsv" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics without grid search\n", + "rmse2_1 = np.sqrt(mean_squared_error(y_test, pred2_1))\n", + "mae2_1 = mean_absolute_error(y_test, pred2_1)\n", + "mape2_1 = mean_absolute_percentage_error(y_test, pred2_1)\n", + "accuracy2_1 = accuracy_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "precision2_1 = precision_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "confusion2_1 = confusion_matrix(y_test > pred2_1, y_test > pred2_1.round())\n", + "recall2_1 = recall_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "f12_1 = f1_score(y_test > pred2_1, y_test > pred2_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_BB1EERE8Jsv", + "outputId": "11c94daf-d2db-4447-a5b9-b753e648b56c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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 without grid search\n", + "print(\"RMSE:\", rmse2_1)\n", + "print(\"MAE:\", mae2_1)\n", + "print(\"MAPE:\", mape2_1)\n", + "print(\"Accuracy:\", accuracy2_1)\n", + "print(\"Precision:\", precision2_1)\n", + "print(\"Confusion Matrix:\\n\", confusion2_1)\n", + "print(\"Recall:\", recall2_1)\n", + "print(\"F1 Score:\", f12_1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hcIfVMWdgcKt" + }, + "source": [ + "## 3. Random Forest" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "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": 36, + "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": 37, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "fF002Yepgk55", + "outputId": "4ff3a76e-04be-452e-8927-a7739bc306fb" + }, + "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": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model3.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "id": "8nRU_pzEgnCt" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred3 = model3.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "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": 40, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8pPzsCY1g305", + "outputId": "bc5eeab1-5d75-4be3-b26f-70c4fe533a47" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.2227552163641375\n", + "MAE: 1.2618627107561857\n", + "MAPE: 0.008011786688180922\n", + "Accuracy: 0.8537102473498234\n", + "Precision: 0.8575624082232012\n", + "Confusion Matrix:\n", + " [[624 97]\n", + " [110 584]]\n", + "Recall: 0.8414985590778098\n", + "F1 Score: 0.8494545454545455\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": 41, + "metadata": { + "id": "TI8idoxOg6jF" + }, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "# Create an XGBoost model\n", + "model4 = xgb.XGBRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "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": 43, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + }, + "id": "2gpbDxshhexj", + "outputId": "2cdbacc9-909a-43c9-cf04-cc4f70015e43" + }, + "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.
" + ], + "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": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model4.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "id": "Jj9DXdUPhh9V" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred4 = model4.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "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": 46, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qpnLeFyZhwB3", + "outputId": "1637d31a-e785-4414-dfe5-f7fa4fd282e9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\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": 47, + "metadata": { + "id": "DyhhdlZAhx94" + }, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "# Create an XGBoost model\n", + "model5 = xgb.XGBRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "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": 49, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + }, + "id": "RAIwxIp5iH9Z", + "outputId": "cc66ca33-11cc-4e5d-e7e1-f39b41466c28" + }, + "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.
" + ], + "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": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model5.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "id": "XmJds5fYiKT3" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred5 = model5.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "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": 52, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7IkE-RAmiWNo", + "outputId": "d69e485e-0462-409a-f9aa-59e5ca7c4bef" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\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": 53, + "metadata": { + "id": "HNq66cXRiYPJ" + }, + "outputs": [], + "source": [ + "from sklearn.ensemble import AdaBoostRegressor\n", + "# Create an AdaBoost model\n", + "model6 = AdaBoostRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "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": 55, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "P0oB5wjQivBr", + "outputId": "827e151d-e13e-4924-ef50-c5e1d13f6161" + }, + "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": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model6.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "id": "Bf1m5ukOi2VM" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred6 = model6.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "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": 58, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BsajWJGBjC80", + "outputId": "076cff01-ff0a-449b-d86c-df9f1363fecd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 10.504089217159294\n", + "MAE: 8.746118088217727\n", + "MAPE: 0.20512996006219347\n", + "Accuracy: 0.9943462897526502\n", + "Precision: 0.9939879759519038\n", + "Confusion Matrix:\n", + " [[911 3]\n", + " [ 5 496]]\n", + "Recall: 0.9900199600798403\n", + "F1 Score: 0.992\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": 59, + "metadata": { + "id": "23DZ2biSjF9a" + }, + "outputs": [], + "source": [ + "from sklearn.tree import DecisionTreeRegressor\n", + "# Create a Decision Tree model\n", + "model7 = DecisionTreeRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "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": 61, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "6mQEQf-ykc9F", + "outputId": "78dc7661-96e4-46af-b65a-c705018c58a3" + }, + "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": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model7.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "id": "BFJ9q_tvkgRC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred7 = model7.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "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": 64, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AnZXMYb8kooV", + "outputId": "93527d46-9366-49ce-b895-7a12ae87f742" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 3.136698143876249\n", + "MAE: 1.6416165234385407\n", + "MAPE: 0.010224639636659394\n", + "Accuracy: 0.8600706713780919\n", + "Precision: 0.8687845303867403\n", + "Confusion Matrix:\n", + " [[588 95]\n", + " [103 629]]\n", + "Recall: 0.8592896174863388\n", + "F1 Score: 0.864010989010989\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": 65, + "metadata": { + "id": "JVDSed7yktFY" + }, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsRegressor\n", + "from sklearn.model_selection import GridSearchCV\n", + "# Create a KNN model\n", + "model8 = KNeighborsRegressor()\n", + "param_grid = {'n_neighbors':[3, 5, 7, 9, 11, 15, 20, 23, 25, 30, 60, 70, 150]}\n", + "GV_KNN = GridSearchCV(model8, param_grid, cv=5, scoring='neg_mean_squared_error')" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "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": 67, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "9fn64o-ZlBka", + "outputId": "bc388b6b-cf36-4a91-eb52-8fe7a861308b" + }, + "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": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model8.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "id": "hbfbbjcSlDn7" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred8 = model8.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "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": 70, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IPoDRkcMlMAr", + "outputId": "5aee40b5-c7c1-4fad-f419-37d08a504146" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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": "code", + "execution_count": 71, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "5qW5X1Xe8Js7", + "outputId": "6abf26c0-873e-42e2-9aab-c2bd93a5ae84" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
KNeighborsRegressor(n_neighbors=150)
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(n_neighbors=150)" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GV_KNN.fit(X_train, y_train)\n", + "pred8_1 = GV_KNN.predict(X_test)\n", + "GV_KNN.best_estimator_" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "id": "voNSUlHk8Js7" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics with grid search\n", + "rmse8_1 = np.sqrt(mean_squared_error(y_test, pred8_1))\n", + "mae8_1 = mean_absolute_error(y_test, pred8_1)\n", + "mape8_1 = mean_absolute_percentage_error(y_test, pred8_1)\n", + "accuracy8_1 = accuracy_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "precision8_1 = precision_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "confusion8_1 = confusion_matrix(y_test > pred8_1, y_test > pred8_1.round())\n", + "recall8_1 = recall_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "f18_1 = f1_score(y_test > pred8_1, y_test > pred8_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VMnot_fX8Js8", + "outputId": "71c354e6-71e6-4d31-ee2f-2a03f65d24fe" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 137.20694663964096\n", + "MAE: 101.08872313712585\n", + "MAPE: 1.7323302969000884\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 1.0\n", + "Confusion Matrix:\n", + " [[865 0]\n", + " [ 2 548]]\n", + "Recall: 0.9963636363636363\n", + "F1 Score: 0.9981785063752276\n" + ] + } + ], + "source": [ + "# Print the evaluation metrics with grid search\n", + "print(\"RMSE:\", rmse8_1)\n", + "print(\"MAE:\", mae8_1)\n", + "print(\"MAPE:\", mape8_1)\n", + "print(\"Accuracy:\", accuracy8_1)\n", + "print(\"Precision:\", precision8_1)\n", + "print(\"Confusion Matrix:\\n\", confusion8_1)\n", + "print(\"Recall:\", recall8_1)\n", + "print(\"F1 Score:\", f18_1)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 524 + }, + "id": "Swebseye8Js8", + "outputId": "c501acf3-094c-4ba6-f0d7-1a0901cdb2e0" + }, + "outputs": [ + { + "data": { + "image/png": "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umw2mxYtWhRynf7vOQSobvLaa69p7ty5mj9/vrZv365Ro0YpNzdXlZWVZpcWdTZv3qz8/Hxt3bpVhYWFamlp0eTJk1VfXx9sM2fOHK1Zs0ZvvPGGNm/erPLyct10000mVh193n//ff32t7/V5ZdfHnKdvu85X331la6++mrFxsbqrbfeUmlpqX71q1/pvPPOC7Z55pln9MILL2jp0qV67733lJiYqNzcXDU2NppYeXT45S9/qSVLlmjx4sX6+OOP9ctf/lLPPPOMfvOb3wTb0P/dp76+XqNGjdKLL77Y4f1w+vr222/X7t27VVhYqLVr1+qdd97R/fff31sfIaKdrv+PHTum7du36/HHH9f27dv1xz/+UXv37tX3vve9kHb0/9k70+//gNWrV2vr1q0aPHhwu3v0fw8y0C3Gjx9v5OfnB9/7fD5j8ODBxsKFC02sqm+orKw0JBmbN282DMMwampqjNjYWOONN94Itvn4448NSUZRUZFZZUaVuro64+KLLzYKCwuNb33rW8aDDz5oGAZ939PmzZtnfPOb3+z0vt/vN9LT041nn302eK2mpsZwuVzGH/7wh94oMarl5eUZ99xzT8i1m266ybj99tsNw6D/e5IkY/Xq1cH34fR1aWmpIcl4//33g23eeustw2azGV988UWv1R4NTu3/jhQXFxuSjAMHDhiGQf93p876//PPPzfOP/98o6SkxLjggguM5557LniP/u9ZjEB1g+bmZm3btk2TJk0KXrPb7Zo0aZKKiopMrKxvqK2tlSSlpqZKkrZt26aWlpaQn8ell16qoUOH8vPoJvn5+crLywvpY4m+72l//vOfNXbsWP3gBz9QWlqarrzySr388svB+2VlZfJ4PCH9n5KSogkTJtD/3eAb3/iG1q9fr08++USS9NFHH+ndd9/Vd7/7XUn0f28Kp6+LiorUr18/jR07Nthm0qRJstvteu+993q95mhXW1srm82mfv36SaL/e5rf79edd96phx56SF//+tfb3af/e1aM2QVEgyNHjsjn82nQoEEh1wcNGqQ9e/aYVFXf4Pf7NXv2bF199dUaMWKEJMnj8cjpdAb/EA8YNGiQPB6PCVVGl1WrVmn79u16//33292j73vW/v37tWTJEs2dO1c/+clP9P777+uBBx6Q0+nUtGnTgn3c0Z9F9P+5e+SRR+T1enXppZfK4XDI5/PpF7/4hW6//XZJov97UTh97fF4lJaWFnI/JiZGqamp/Dy6WWNjo+bNm6fbbrtNbrdbEv3f0375y18qJiZGDzzwQIf36f+eRYBCRMvPz1dJSYneffdds0vpEw4dOqQHH3xQhYWFiouLM7ucPsfv92vs2LF66qmnJElXXnmlSkpKtHTpUk2bNs3k6qLf66+/rldffVUrV67U17/+de3YsUOzZ8/W4MGD6X/0WS0tLfqXf/kXGYahJUuWmF1On7Bt2zY9//zz2r59u2w2m9nl9ElM4esGAwYMkMPhaLfT2OHDh5Wenm5SVdFv5syZWrt2rTZu3KghQ4YEr6enp6u5uVk1NTUh7fl5nLtt27apsrJSo0ePVkxMjGJiYrR582a98MILiomJ0aBBg+j7HpSRkaHs7OyQa5dddpkOHjwoScE+5s+invHQQw/pkUce0a233qqRI0fqzjvv1Jw5c7Rw4UJJ9H9vCqev09PT223k1Nraqurqan4e3SQQng4cOKDCwsLg6JNE//ekv/3tb6qsrNTQoUODfxcfOHBA//7v/65hw4ZJov97GgGqGzidTo0ZM0br168PXvP7/Vq/fr1ycnJMrCw6GYahmTNnavXq1dqwYYOysrJC7o8ZM0axsbEhP4+9e/fq4MGD/DzO0be//W3t2rVLO3bsCL7Gjh2r22+/Pfhr+r7nXH311e227P/kk090wQUXSJKysrKUnp4e0v9er1fvvfce/d8Njh07Jrs99K9Nh8Mhv98vif7vTeH0dU5OjmpqarRt27Zgmw0bNsjv92vChAm9XnO0CYSnTz/9VH/961/Vv3//kPv0f8+58847tXPnzpC/iwcPHqyHHnpIb7/9tiT6v8eZvYtFtFi1apXhcrmM5cuXG6Wlpcb9999v9OvXz/B4PGaXFnVmzJhhpKSkGJs2bTIqKiqCr2PHjgXbTJ8+3Rg6dKixYcMG44MPPjBycnKMnJwcE6uOXm134TMM+r4nFRcXGzExMcYvfvEL49NPPzVeffVVIyEhwVixYkWwzdNPP23069fPePPNN42dO3caN954o5GVlWU0NDSYWHl0mDZtmnH++ecba9euNcrKyow//vGPxoABA4yHH3442Ib+7z51dXXGhx9+aHz44YeGJOPXv/618eGHHwZ3eQunr6dMmWJceeWVxnvvvWe8++67xsUXX2zcdtttZn2kiHK6/m9ubja+973vGUOGDDF27NgR8ndxU1NT8Bn0/9k70+//U526C59h0P89iQDVjX7zm98YQ4cONZxOpzF+/Hhj69atZpcUlSR1+Fq2bFmwTUNDg/Fv//ZvxnnnnWckJCQY//zP/2xUVFSYV3QUOzVA0fc9a82aNcaIESMMl8tlXHrppcbvfve7kPt+v994/PHHjUGDBhkul8v49re/bezdu9ekaqOL1+s1HnzwQWPo0KFGXFycceGFFxo//elPQ/7BSP93n40bN3b4Z/20adMMwwivr7/88kvjtttuM5KSkgy3223cfffdRl1dnQmfJvKcrv/Lyso6/bt448aNwWfQ/2fvTL//T9VRgKL/e47NMNocoQ4AAAAA6BRroAAAAAAgTAQoAAAAAAgTAQoAAAAAwkSAAgAAAIAwEaAAAAAAIEwEKAAAAAAIEwEKAAAAAMJEgAIAAACAMBGgAAAAACBMBCgAAAAACBMBCgAAAADC9P8D/+8PbuAfWTAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "results = GV_KNN.cv_results_\n", + "mse = -results['mean_test_score']\n", + "k_values = results['param_n_neighbors'].data\n", + "plt.figure(figsize=(10, 6))\n", + "plt.plot(k_values, mse, marker='o', linestyle='-')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3aOBO56I8Js8" + }, + "source": [ + "The code shows that the elboq point occurs around n=30." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "X5XtlzMXljps" + }, + "source": [ + "## 9. Artificial Neural Networks (ANN)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "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": 76, + "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": 77, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vd1fDjQiltP4", + "outputId": "54545c64-073b-41c5-d03a-cc9cbff204f2" + }, + "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": 78, + "metadata": { + "id": "ZIf94WLMlv04" + }, + "outputs": [], + "source": [ + "# Compile the model\n", + "model9.compile(loss='mean_squared_error', optimizer='adam')" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FX5DTKqslxWf", + "outputId": "d2353bcd-1508-469b-e4a4-9344af25a2cc" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 79, + "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": 80, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "OVW2qpNsmGVq", + "outputId": "36e4620e-9823-4b12-d6d2-509c0bcf2a88" + }, + "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" + ] + } + ], + "source": [ + "# Make predictions on the test set\n", + "pred9 = model9.predict(X_test_scaled).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "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": 82, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5zuwkC1emmh3", + "outputId": "3154af15-1dba-4edc-9b4e-f012f6ff6886" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.7525331773064208\n", + "MAE: 1.7070852219826735\n", + "MAPE: 0.011166669166884299\n", + "Accuracy: 0.901060070671378\n", + "Precision: 0.9446640316205533\n", + "Confusion Matrix:\n", + " [[558 42]\n", + " [ 98 717]]\n", + "Recall: 0.8797546012269939\n", + "F1 Score: 0.9110546378653113\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": 83, + "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": 84, + "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": 85, + "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": 86, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "r066pVYpnXH5", + "outputId": "faddb972-58cc-43a7-eb04-4829ec65f019" + }, + "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": [ + "# 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": 87, + "metadata": { + "id": "YpSfHu6gov35" + }, + "outputs": [], + "source": [ + "# Compile the model\n", + "model.compile(loss='mean_squared_error', optimizer='adam')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0vHjcluaoxzP", + "outputId": "8ca3e888-84d1-4c79-e045-cfa9d3e76d5f" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 88, + "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": 89, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gEE06_TjozYv", + "outputId": "5a39a4df-0a56-45f5-ac4b-c2b00f0f15d0" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m44/44\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step\n" + ] + } + ], + "source": [ + "# Make predictions on the test set\n", + "y_pred = model.predict(X_test_reshaped).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "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": 91, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "i_6-UUDhpi0c", + "outputId": "af51da10-aedc-479d-80ca-96880408422c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 11.43451426022395\n", + "MAE: 9.387460991819042\n", + "MAPE: 0.1689158970124316\n", + "Accuracy: 0.9957325746799431\n", + "Precision: 0.9965277777777778\n", + "Recall: 0.9930795847750865\n", + "F1 Score: 0.9948006932409013\n", + "Confusion Matrix:\n", + " [[826 2]\n", + " [ 4 574]]\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", + "execution_count": 92, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "qpWPtph9CGip", + "outputId": "746d4c8b-bd76-4873-d9b3-b21e078b15bd" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABE9klEQVR4nO3deXhM9+LH8c8kZBFJrNmKiKWiqP0GRauClqqtiqvXllu9FbXVbWmLul2Utm6L4rYlVENUieqGNIq217XH0qo1liJBySIIkvP7w2N+HQkyMjGT0/freeZ5mu85c84nyan55DvnnLEYhmEIAADApNycHQAAAKAoUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAOM2rr74qi8WiM2fOFPm+Vq5cqQYNGsjLy0sWi0VpaWlFvs/ibN68ebJYLDp8+LCzowCFRtkBisD1F4o/PgICAtSmTRt9++23dz3Pl19+qc6dOyswMFAeHh4qV66cWrdurXfffVcZGRl3Pc/d9vvvv+vJJ5+Ut7e3PvjgAy1YsEA+Pj63fd7MmTNlsVgUERFxF1ICKColnB0AMLN//etfCgsLk2EYSk1N1bx589SxY0d9+eWXeuyxx4p8/7m5uYqKitK8efNUr149DRkyRJUrV1ZmZqY2bNigV155Rd98840SExOLPIszbd68WZmZmXrttdcUGRlZ4OfFxsaqatWq2rRpkw4cOKAaNWoUYUrX8re//U29e/eWp6ens6MAhUbZAYrQo48+qiZNmli/joqKUmBgoBYtWuSQspObm6vLly/Ly8sr3+VTpkzRvHnzNHLkSL377ruyWCzWZcOHD9fJkyf1ySefFGofxcGpU6ckSWXKlCnwc5KTk/Xf//5Xy5Yt0zPPPKPY2FhNmDChiBIWTlZWVoFmquzh7u4ud3d3h24TcBbexgLuojJlysjb21slStj+nfHOO++oRYsWKl++vLy9vdW4cWN9/vnneZ5vsVg0dOhQxcbGqk6dOvL09NTKlSvz3deFCxc0efJk1alTR2+//bZN0bkuODhYL774YoH3cSc5a9WqJS8vLzVu3Fjr16/PN2taWpoGDBigMmXKyN/fXwMHDtSFCxfy/yHeYMmSJWrcuLG8vb1VoUIFPfXUUzp+/Lh1+UMPPaT+/ftLkpo2bSqLxaIBAwbcdruxsbEqW7asOnXqpCeeeEKxsbE3zT5y5EhVrVpVnp6eqlSpkvr162dzHtKlS5f06quv6t5775WXl5eCg4PVvXt3HTx4UJK0du1aWSwWrV271mbbhw8flsVi0bx586xjAwYMUOnSpXXw4EF17NhRvr6+6tu3ryTphx9+UM+ePVWlShV5enqqcuXKGjlypC5evJgn96+//qonn3xSFStWlLe3t2rVqqWXX37Zuvxm5+x8++23atWqlXx8fOTr66tOnTrp559/tlknJSVFAwcOVKVKleTp6ang4GB16dKF83/gNMzsAEUoPT1dZ86ckWEYOnXqlKZPn67z58/rqaeeslnv/fff1+OPP66+ffvq8uXLiouLU8+ePfXVV1+pU6dONuuuWbNGn332mYYOHaoKFSqoatWq+e77xx9/VFpamkaPHm33X+g324c9OdetW6fFixdr2LBh8vT01MyZM/XII49o06ZNqlu3rs26Tz75pMLCwjRp0iRt27ZNH3/8sQICAjR58uRb5pw3b54GDhyopk2batKkSUpNTdX777+vn376Sdu3b1eZMmX08ssvq1atWvrwww+tbytWr179tj+D2NhYde/eXR4eHurTp49mzZqlzZs3q2nTptZ1zp8/r1atWmnPnj0aNGiQGjVqpDNnzmjFihX67bffVKFCBeXk5Oixxx5TYmKievfureHDhyszM1MJCQnavXt3gbLc6OrVq+rQoYNatmypd955R6VKlZJ0rfhduHBBzz77rMqXL69NmzZp+vTp+u2337RkyRLr83fu3KlWrVqpZMmSGjx4sKpWraqDBw/qyy+/1BtvvHHT/S5YsED9+/dXhw4dNHnyZF24cEGzZs1Sy5YttX37dutx0qNHD/3888967rnnVLVqVZ06dUoJCQk6evToTY9XoEgZABwuJibGkJTn4enpacybNy/P+hcuXLD5+vLly0bdunWNhx9+2GZckuHm5mb8/PPPt83w/vvvG5KM5cuX24xfvXrVOH36tM0jNze3QPuwJ6ckY8uWLdaxI0eOGF5eXka3bt2sYxMmTDAkGYMGDbJ5frdu3Yzy5cvf8vu7fPmyERAQYNStW9e4ePGidfyrr74yJBnjx4+3jl3/fWzevPmW27xuy5YthiQjISHBMAzDyM3NNSpVqmQMHz7cZr3x48cbkoxly5bl2cb1n+ncuXMNScbUqVNvus73339vSDK+//57m+XJycmGJCMmJsY61r9/f0OSMWbMmDzbu/H3YxiGMWnSJMNisRhHjhyxjrVu3drw9fW1GftjHsP4/59ZcnKyYRiGkZmZaZQpU8Z4+umnbZ6TkpJi+Pv7W8fPnTtnSDLefvvtPFkAZ+FtLKAIffDBB0pISFBCQoI+/fRTtWnTRn//+9+1bNkym/W8vb2t/33u3Dmlp6erVatW2rZtW55tPvjgg7rvvvtuu+/rV1mVLl3aZnzXrl2qWLGizeP3338v0D7sydm8eXM1btzY+nWVKlXUpUsXrVq1Sjk5OTbr/uMf/7D5ulWrVvr9999veaXYli1bdOrUKQ0ZMsTmfKJOnTopPDxcX3/99U2fezuxsbEKDAxUmzZtJF17W65Xr16Ki4uzyb506VLVr19f3bp1y7ON628bLl26VBUqVNBzzz1303XuxLPPPptn7I+/n6ysLJ05c0YtWrSQYRjavn27JOn06dNav369Bg0apCpVqhQ4T0JCgtLS0tSnTx+dOXPG+nB3d1dERIS+//57awYPDw+tXbtW586du+PvD3Ak3sYCitBf/vIXmxOU+/Tpo4YNG2ro0KF67LHH5OHhIUn66quv9PrrryspKUnZ2dnW9fN78QkLCyvQvn19fSVde6vlj2rUqKGEhARJ0ieffKIFCxYUeB/25KxZs2aesXvvvVcXLlzQ6dOnFRQUZB2/8UW3bNmykq4VKj8/v3yzHDlyRJJUq1atPMvCw8P1448/5vu828nJyVFcXJzatGmj5ORk63hERITeffddJSYmqn379pKkgwcPqkePHrfc3sGDB1WrVq0852kVRokSJVSpUqU840ePHtX48eO1YsWKPEUjPT1dknTo0CFJyvNW4u3s379fkvTwww/nu/z678nT01OTJ0/W888/r8DAQDVr1kyPPfaY+vXrZ/M7B+4myg5wF7m5ualNmzZ6//33tX//ftWpU0c//PCDHn/8cbVu3VozZ85UcHCwSpYsqZiYGC1cuDDPNv741/uthIeHS5J2796tLl26WMdLly5tvfz6ZoUgv33Ym9MeNzunyDCMQm33TqxZs0YnT55UXFyc4uLi8iyPjY21lh1HudmMyo0zYNd5enrKzc0tz7rt2rXT2bNn9eKLLyo8PFw+Pj46fvy4BgwYoNzc3EJlvP78BQsW5Fta/ljmRowYoc6dO2v58uVatWqVxo0bp0mTJmnNmjVq2LBhoXIAd4KyA9xlV69elfT/My5Lly6Vl5eXVq1aZXNPk5iYmELtp1WrVvL391dcXJzGjh2b58XRXvbmvD4T8Ef79u1TqVKlVLFixUJlkaTQ0FBJ0t69e/PMNuzdu9e63F6xsbEKCAjQBx98kGfZsmXLFB8fr9mzZ8vb21vVq1fX7t27b7m96tWra+PGjbpy5YpKliyZ7zrXZ7JuvKvz9dmrgti1a5f27dun+fPnq1+/ftbx67N411WrVk2Sbpv7RtdPpA4ICCjQvYqqV6+u559/Xs8//7z279+vBg0a6N1339Wnn35q134BR+CcHeAuunLlilavXi0PDw/Vrl1b0rVZDYvFYvNX/OHDh7V8+fJC7atUqVJ64YUXtHv3bo0ZMybfWRJ7Zk7szblhwwabc3mOHTumL774Qu3bt3fI/VuaNGmigIAAzZ492+YttW+//VZ79uzJc3VYQVy8eFHLli3TY489pieeeCLPY+jQocrMzNSKFSskXbvqaMeOHYqPj8+zres/2x49eujMmTOaMWPGTdcJDQ2Vu7t7nkvzZ86cWeDs13+mf/ydGoah999/32a9ihUrqnXr1po7d66OHj2ab578dOjQQX5+fnrzzTd15cqVPMtPnz4t6dotDy5dumSzrHr16vL19bX5PQF3EzM7QBH69ttv9euvv0q6dmO7hQsXav/+/RozZoz1HIdOnTpp6tSpeuSRR/TXv/5Vp06d0gcffKAaNWpo586dhdr/mDFjtGfPHr399ttavXq1evTooUqVKuncuXPatm2blixZooCAgALdMNDenHXr1lWHDh1sLj2XpIkTJxbqe7quZMmSmjx5sgYOHKgHH3xQffr0sV56XrVqVY0cOdLuba5YsUKZmZl6/PHH813erFkzVaxYUbGxserVq5f++c9/6vPPP1fPnj01aNAgNW7cWGfPntWKFSs0e/Zs1a9fX/369dMnn3yiUaNGadOmTWrVqpWysrL03XffaciQIerSpYv8/f3Vs2dPTZ8+XRaLRdWrV9dXX31lvRliQYSHh6t69eoaPXq0jh8/Lj8/Py1dujTfk4SnTZumli1bqlGjRho8eLDCwsJ0+PBhff3110pKSsp3+35+fpo1a5b+9re/qVGjRurdu7cqVqyoo0eP6uuvv9YDDzygGTNmaN++fWrbtq2efPJJ3XfffSpRooTi4+OVmpqq3r17F/j7ARzKadeBASaW36XnXl5eRoMGDYxZs2bZXOJrGIYxZ84co2bNmoanp6cRHh5uxMTEWC/L/iNJRnR0tN154uPjjY4dOxoVK1Y0SpQoYZQpU8Zo2bKl8fbbbxtpaWkF3oe9OT/99FPr+g0bNsxzafX1554+fdpm/MbLnm9l8eLFRsOGDQ1PT0+jXLlyRt++fY3ffvst3+3d7tLzzp07G15eXkZWVtZN1xkwYIBRsmRJ48yZM4ZhGMbvv/9uDB061LjnnnsMDw8Po1KlSkb//v2tyw3j2iXhL7/8shEWFmaULFnSCAoKMp544gnj4MGD1nVOnz5t9OjRwyhVqpRRtmxZ45lnnjF2796d76XnPj4++Wb75ZdfjMjISKN06dJGhQoVjKefftrYsWNHnm0YhmHs3r3b6Natm1GmTBnDy8vLqFWrljFu3Lg8P7Mbfwfff/+90aFDB8Pf39/w8vIyqlevbgwYMMB6m4EzZ84Y0dHRRnh4uOHj42P4+/sbERERxmeffXbLnz1QlCyG4YQzAAGYmsViUXR0dL5v3QDA3cY5OwAAwNQoOwAAwNQoOwAAwNS4GguAw3EqIABXwswOAAAwNcoOAAAwNd7G0rXPfDlx4oR8fX0L9SnEAADg7jEMQ5mZmQoJCbnlR+JQdiSdOHFClStXdnYMAABwB44dO6ZKlSrddDllR5Kvr6+kaz+s67fwBwAAri0jI0OVK1e2vo7fDGVHsr515efnR9kBAKCYud0pKJygDAAATI2yAwAATI2yAwAATI2yAwAATI2yAwAATI2yAwAATI2yAwAATI2yAwAATI2yAwAATI2yAwAATM2pZWf9+vXq3LmzQkJCZLFYtHz5cpvlhmFo/PjxCg4Olre3tyIjI7V//36bdc6ePau+ffvKz89PZcqUUVRUlM6fP38XvwsAAODKnFp2srKyVL9+fX3wwQf5Lp8yZYqmTZum2bNna+PGjfLx8VGHDh106dIl6zp9+/bVzz//rISEBH311Vdav369Bg8efLe+BQAA4OIshmEYzg4hXfsQr/j4eHXt2lXStVmdkJAQPf/88xo9erQkKT09XYGBgZo3b5569+6tPXv26L777tPmzZvVpEkTSdLKlSvVsWNH/fbbbwoJCSnQvjMyMuTv76/09HQ+CBQAgGKioK/fLnvOTnJyslJSUhQZGWkd8/f3V0REhDZs2CBJ2rBhg8qUKWMtOpIUGRkpNzc3bdy48abbzs7OVkZGhs0DAACYk8uWnZSUFElSYGCgzXhgYKB1WUpKigICAmyWlyhRQuXKlbOuk59JkybJ39/f+qhcubKD0wMAAFfhsmWnKI0dO1bp6enWx7Fjx5wd6a6zWJz3cNVsAIoXV/53DK6lhLMD3ExQUJAkKTU1VcHBwdbx1NRUNWjQwLrOqVOnbJ539epVnT171vr8/Hh6esrT09PxoQG4PGe+ULnGGZL4M3PW8e/sY99lZ3bCwsIUFBSkxMRE61hGRoY2btyo5s2bS5KaN2+utLQ0bd261brOmjVrlJubq4iIiLueGQAAuB6nzuycP39eBw4csH6dnJyspKQklStXTlWqVNGIESP0+uuvq2bNmgoLC9O4ceMUEhJivWKrdu3aeuSRR/T0009r9uzZunLlioYOHarevXsX+EosAMCt/VlnA2AeTi07W7ZsUZs2baxfjxo1SpLUv39/zZs3Ty+88IKysrI0ePBgpaWlqWXLllq5cqW8vLysz4mNjdXQoUPVtm1bubm5qUePHpo2bdpd/14AAIBrcpn77DjTn/E+O6583gJ/RaIoufKx76pc9f9Jfpf2c9Xf5Z0q9vfZAQAAcATKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMLUSzg4AAICZWCzO27dhOG/froyZHQAAYGqUHQAAYGqUHQAAYGqUHQAAYGqUHQAAYGpcjQUUc6565Yer5gLw58PMDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDXKDgAAMDVuKggALsJZN2LkJowwO2Z2AACAqTGzAxQQf3UDQPHEzA4AADA1yg4AADA1yg4AADA1yg4AADA1yg4AADA1yg4AADA1yg4AADA17rNTxJx1bxaJ+7MAACAxswMAAEyOsgMAAEyNsgMAAEyNsgMAAEyNsgMAAEyNsgMAAEzNpctOTk6Oxo0bp7CwMHl7e6t69ep67bXXZPzhmmrDMDR+/HgFBwfL29tbkZGR2r9/vxNTAwAAV+LSZWfy5MmaNWuWZsyYoT179mjy5MmaMmWKpk+fbl1nypQpmjZtmmbPnq2NGzfKx8dHHTp00KVLl5yYHAAAuAqXvqngf//7X3Xp0kWdOnWSJFWtWlWLFi3Spk2bJF2b1Xnvvff0yiuvqEuXLpKkTz75RIGBgVq+fLl69+7ttOwAAMA1uPTMTosWLZSYmKh9+/ZJknbs2KEff/xRjz76qCQpOTlZKSkpioyMtD7H399fERER2rBhw023m52drYyMDJsHAAAwJ5ee2RkzZowyMjIUHh4ud3d35eTk6I033lDfvn0lSSkpKZKkwMBAm+cFBgZal+Vn0qRJmjhxYtEFBwAALsOlZ3Y+++wzxcbGauHChdq2bZvmz5+vd955R/Pnzy/UdseOHav09HTr49ixYw5KDAAAXI1Lz+z885//1JgxY6zn3tSrV09HjhzRpEmT1L9/fwUFBUmSUlNTFRwcbH1eamqqGjRocNPtenp6ytPTs0izAwAA1+DSMzsXLlyQm5ttRHd3d+Xm5kqSwsLCFBQUpMTEROvyjIwMbdy4Uc2bN7+rWQEAgGty6Zmdzp0764033lCVKlVUp04dbd++XVOnTtWgQYMkSRaLRSNGjNDrr7+umjVrKiwsTOPGjVNISIi6du3q3PAAAMAluHTZmT59usaNG6chQ4bo1KlTCgkJ0TPPPKPx48db13nhhReUlZWlwYMHKy0tTS1bttTKlSvl5eXlxOQAAMBVWIw/3o74TyojI0P+/v5KT0+Xn5+fQ7dtsTh0c3a51W/WVXNJzstGLvsVx2PMVXNJHGM3ctVcEseYvYqqaRT09dulz9kBAAAoLMoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNcoOAAAwNbvLzsWLF3XhwgXr10eOHNF7772n1atXOzQYAACAI9hddrp06aJPPvlEkpSWlqaIiAi9++676tKli2bNmuXwgAAAAIVhd9nZtm2bWrVqJUn6/PPPFRgYqCNHjuiTTz7RtGnTHB4QAACgMOwuOxcuXJCvr68kafXq1erevbvc3NzUrFkzHTlyxOEBAQAACsPuslOjRg0tX75cx44d06pVq9S+fXtJ0qlTp+Tn5+fwgAAAAIVhd9kZP368Ro8erapVq+ovf/mLmjdvLunaLE/Dhg0dHhAAAKAwLIZhGPY+KSUlRSdPnlT9+vXl5natL23atEl+fn4KDw93eMiilpGRIX9/f6Wnpzt8dspicejm7HKr36yr5pKcl41c9iuOx5ir5pI4xm7kqrkkjjF72d80Cqagr993dJ+doKAg+fr6KiEhQRcvXpQkNW3atFgWHQAAYG52l53ff/9dbdu21b333quOHTvq5MmTkqSoqCg9//zzDg8IAABQGHaXnZEjR6pkyZI6evSoSpUqZR3v1auXVq5c6dBwAAAAhVXC3iesXr1aq1atUqVKlWzGa9asyaXnAADA5dg9s5OVlWUzo3Pd2bNn5enp6ZBQAAAAjmJ32WnVqpX14yIkyWKxKDc3V1OmTFGbNm0cGg4AAKCw7H4ba8qUKWrbtq22bNmiy5cv64UXXtDPP/+ss2fP6qeffiqKjAAAAHfM7pmdunXrat++fWrZsqW6dOmirKwsde/eXdu3b1f16tWLIiMAAMAdu6ObCpoNNxW8u4rrTa/IlVdxPMZcNZfEMXYjV80lcYzZy9k3FbT7baz169ffcnnr1q3t3SQAAECRsbvsPPTQQ3nGLH+oijk5OYUKBAAA4Eh2n7Nz7tw5m8epU6e0cuVKNW3aVKtXry6KjAAAAHfM7pkdf3//PGPt2rWTh4eHRo0apa1btzokGAAAgCPc0QeB5icwMFB79+511OYAAAAcwu6ZnZ07d9p8bRiGTp48qbfeeksNGjRwVC4AAACHsLvsNGjQQBaLRTdesd6sWTPNnTvXYcEAAAAcwe6yk5ycbPO1m5ubKlasKC8vL4eFAgAAcBS7z9kJDQ21eVSuXLlIi87x48f11FNPqXz58vL29la9evW0ZcsW63LDMDR+/HgFBwfL29tbkZGR2r9/f5HlAQAAxUuBZnamTZtW4A0OGzbsjsPc6Ny5c3rggQfUpk0bffvtt6pYsaL279+vsmXLWteZMmWKpk2bpvnz5yssLEzjxo1Thw4d9MsvvzDbBAAACvZxEWFhYQXbmMWiQ4cOFTrUdWPGjNFPP/2kH374Id/lhmEoJCREzz//vEaPHi1JSk9PV2BgoObNm6fevXsXaD98XMTdVVxvZ06uvIrjMeaquSSOsRu5ai6JY8xexeLjIm48T+duWbFihTp06KCePXtq3bp1uueeezRkyBA9/fTT1lwpKSmKjIy0Psff318RERHasGHDTctOdna2srOzrV9nZGQU7TcCAACcxmH32SkKhw4d0qxZs1SzZk2tWrVKzz77rIYNG6b58+dLklJSUiRdu8fPHwUGBlqX5WfSpEny9/e3PipXrlx03wQAAHAqu6/GkqTffvtNK1as0NGjR3X58mWbZVOnTnVIMEnKzc1VkyZN9Oabb0qSGjZsqN27d2v27Nnq37//HW937NixGjVqlPXrjIwMCg8AACZld9lJTEzU448/rmrVqunXX39V3bp1dfjwYRmGoUaNGjk0XHBwsO677z6bsdq1a2vp0qWSpKCgIElSamqqgoODreukpqbe8gaHnp6e8vT0dGhWAADgmux+G2vs2LEaPXq0du3aJS8vLy1dulTHjh3Tgw8+qJ49ezo03AMPPJDnIyj27dun0NBQSddOnA4KClJiYqJ1eUZGhjZu3KjmzZs7NAsAACimDDuVLl3aOHDggGEYhlGmTBlj9+7dhmEYRlJSkhEaGmrv5m5p06ZNRokSJYw33njD2L9/vxEbG2uUKlXK+PTTT63rvPXWW0aZMmWML774wti5c6fRpUsXIywszLh48WKB95Oenm5IMtLT0x2a3zAM49o56M55FMdczsxGrj/HMeaquTjGik8ujjHH57pTBX39tvttLB8fH+t5OsHBwTp48KDq1KkjSTpz5owje5iaNm2q+Ph4jR07Vv/6178UFham9957T3379rWu88ILLygrK0uDBw9WWlqaWrZsqZUrV3KPHQAAIKmA99n5o65du6pTp056+umnNXr0aH3xxRcaMGCAli1bprJly+q7774rqqxFhvvs3F23O+Jc9T4Q5MqrOB5jrppL4hi7kavmkjjG7GVf0yg4h95nR5LOnj2rcuXKaerUqTp//rwkaeLEiTp//rwWL16smjVrOvRKLAAAAEcocNkJCQlR165dFRUVpXbt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mze/23EBAIALcumZnejoaC1cuFBffPGFfH19refh+Pv7y9vbW/7+/oqKitKoUaNUrlw5+fn56bnnnlPz5s0LfCUWAAAwN5cuO7NmzZIkPfTQQzbjMTExGjBggCTp3//+t9zc3NSjRw9lZ2erQ4cOmjlz5l1OCgAAXFWxus9OUeE+O3dXcb0PBLnyKo7HmKvmkjjGbuSquSSOMXtxnx0AAIAiRNkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmZpqy88EHH6hq1ary8vJSRESENm3a5OxIAADABZii7CxevFijRo3ShAkTtG3bNtWvX18dOnTQqVOnnB0NAAA4mSnKztSpU/X0009r4MCBuu+++zR79myVKlVKc+fOdXY0AADgZMW+7Fy+fFlbt25VZGSkdczNzU2RkZHasGGDE5MBAABXUMLZAQrrzJkzysnJUWBgoM14YGCgfv3113yfk52drezsbOvX6enpkqSMjIyiC+oErvrtkMs+rppLct1s5LIPueznqtn+bLmuv24bhnHL9Yp92bkTkyZN0sSJE/OMV65c2Qlpio6/v7MT5I9c9nHVXJLrZiOXfchlP1fN9mfNlZmZKf9b7KTYl50KFSrI3d1dqampNuOpqakKCgrK9zljx47VqFGjrF/n5ubq7NmzKl++vCwWS5HmLaiMjAxVrlxZx44dk5+fn7Pj2HDVbOSyj6vmklw3G7nsQy77uWo2V81lGIYyMzMVEhJyy/WKfdnx8PBQ48aNlZiYqK5du0q6Vl4SExM1dOjQfJ/j6ekpT09Pm7EyZcoUcdI74+fn51IH1h+5ajZy2cdVc0mum41c9iGX/Vw1myvmutWMznXFvuxI0qhRo9S/f381adJEf/nLX/Tee+8pKytLAwcOdHY0AADgZKYoO7169dLp06c1fvx4paSkqEGDBlq5cmWek5YBAMCfjynKjiQNHTr0pm9bFUeenp6aMGFCnrfbXIGrZiOXfVw1l+S62chlH3LZz1WzuWqugrIYt7teCwAAoBgr9jcVBAAAuBXKDgAAMDXKDgAAMDXKDgAAMDXKjgtav369OnfurJCQEFksFi1fvtzZkTRp0iQ1bdpUvr6+CggIUNeuXbV3795ise8PP/xQDz30kPz8/GSxWJSWllZ0Yf9g1qxZuv/++6034WrevLm+/fbbu7Jve7z11luyWCwaMWKEU3O8+uqrslgsNo/w8HCnZrru+PHjeuqpp1S+fHl5e3urXr162rJli7NjqWrVqnl+ZhaLRdHR0U7NlZOTo3HjxiksLEze3t6qXr26Xnvttdt+fpGz97ts2TK1b9/eejf9pKSkIs37R5mZmRoxYoRCQ0Pl7e2tFi1aaPPmzXdt/9fd7vXHMAyNHz9ewcHB8vb2VmRkpPbv33/Xc9qLsuOCsrKyVL9+fX3wwQfOjmK1bt06RUdH63//+58SEhJ05coVtW/fXllZWS6/7wsXLuiRRx7RSy+9VMRJbVWqVElvvfWWtm7dqi1btujhhx9Wly5d9PPPP9/VHLeyefNm/ec//9H999/v7CiSpDp16ujkyZPWx48//ujsSDp37pweeOABlSxZUt9++61++eUXvfvuuypbtqyzo2nz5s02P6+EhARJUs+ePZ2aa/LkyZo1a5ZmzJihPXv2aPLkyZoyZYqmT5/u0vvNyspSy5YtNXny5CLNmZ+///3vSkhI0IIFC7Rr1y61b99ekZGROn78+F3NcbvXnylTpmjatGmaPXu2Nm7cKB8fH3Xo0EGXLl26qzntZsClSTLi4+OdHSOPU6dOGZKMdevWFZt9f//994Yk49y5c0UTrADKli1rfPzxx07b/x9lZmYaNWvWNBISEowHH3zQGD58uFPzTJgwwahfv75TM+TnxRdfNFq2bOnsGAUyfPhwo3r16kZubq5Tc3Tq1MkYNGiQzVj37t2Nvn37Fov9JicnG5KM7du3OzDdzV24cMFwd3c3vvrqK5vxRo0aGS+//PJdyZCfG19/cnNzjaCgIOPtt9+2jqWlpRmenp7GokWLnJCw4JjZwR1JT0+XJJUrV+5Pte87lZOTo7i4OGVlZal58+bOjiNJio6OVqdOnRQZGensKFb79+9XSEiIqlWrpr59++ro0aPOjqQVK1aoSZMm6tmzpwICAtSwYUN99NFHzo6Vx+XLl/Xpp59q0KBBTv9A4xYtWigxMVH79u2TJO3YsUM//vijHn30UVPut7CuXr2qnJwceXl52Yx7e3u7xOzmdcnJyUpJSbH5N8Pf318RERHasGGDE5PdnmnuoIy7Jzc3VyNGjNADDzygunXr/mn2fSd27dql5s2b69KlSypdurTi4+N13333OTuW4uLitG3bNqecE3AzERERmjdvnmrVqqWTJ09q4sSJatWqlXbv3i1fX1+n5Tp06JBmzZqlUaNG6aWXXtLmzZs1bNgweXh4qH///k7LdaPly5crLS1NAwYMcHYUjRkzRhkZGQoPD5e7u7tycnL0xhtvqG/fvqbcb2H5+vqqefPmeu2111S7dm0FBgZq0aJF2rBhg2rUqOHseFYpKSmSlOejmAIDA63LXBVlB3aLjo7W7t27nfIXhzP3fSdq1aqlpKQkpaen6/PPP1f//v21bt06pxaeY8eOafjw4UpISMjzl6Qz/fGv7/vvv18REREKDQ3VZ599pqioKKflys3NVZMmTfTmm29Kkho2bKjdu3dr9uzZLlV25syZo0cffVQhISHOjqLPPvtMsbGxWrhwoerUqaOkpCSNGDFCISEhRfozc9Z+HWHBggUaNGiQ7rnnHrm7u6tRo0bq06ePtm7d6uxo5uDs99Fwa3Kxc3aio6ONSpUqGYcOHSp2+3aFc3batm1rDB482Gn7NwzDiI+PNyQZ7u7u1ockw2KxGO7u7sbVq1edmu+PmjRpYowZM8apGapUqWJERUXZjM2cOdMICQlxUqK8Dh8+bLi5uRnLly93dhTDMAyjUqVKxowZM2zGXnvtNaNWrVrFYr93+5ydPzp//rxx4sQJwzAM48knnzQ6dux41zNcd+Prz8GDB/P9ubRu3doYNmzY3Q1nJ87ZQYEYhqGhQ4cqPj5ea9asUVhY2J9i346Wm5ur7Oxsp2Zo27atdu3apaSkJOujSZMm6tu3r5KSkuTu7u7UfNedP39eBw8eVHBwsFNzPPDAA3ludbBv3z6FhoY6KVFeMTExCggIUKdOnZwdRdK1KyDd3GxfXtzd3ZWbm2vK/TqSj4+PgoODde7cOa1atUpdunRxdiSrsLAwBQUFKTEx0TqWkZGhjRs3usy5iDfD21gu6Pz58zpw4ID16+TkZCUlJalcuXKqUqWKUzJFR0dr4cKF+uKLL+Tr62t9f9bf31/e3t4uve+UlBSlpKRYf6a7du2Sr6+vqlSpUqQnOY8dO1aPPvqoqlSposzMTC1cuFBr167VqlWrimyfBeHr65vnfCcfHx+VL1/eqedBjR49Wp07d1ZoaKhOnDihCRMmyN3dXX369HFaJkkaOXKkWrRooTfffFNPPvmkNm3apA8//FAffvihU3Ndl5ubq5iYGPXv318lSrjGP+mdO3fWG2+8oSpVqqhOnTravn27pk6dqkGDBrn0fs+ePaujR4/qxIkTkmQtuUFBQQoKCiqy3JK0atUqGYahWrVq6cCBA/rnP/+p8PBwDRw4sEj3e6Pbvf6MGDFCr7/+umrWrKmwsDCNGzdOISEh6tq1613NaTcnzywhH9ffbrnx0b9/f6dlyi+PJCMmJsbl9z1hwgSnZB80aJARGhpqeHh4GBUrVjTatm1rrF69ukj3eadc4dLzXr16GcHBwYaHh4dxzz33GL169TIOHDjg1EzXffnll0bdunUNT09PIzw83Pjwww+dHclq1apVhiRj7969zo5ilZGRYQwfPtyoUqWK4eXlZVSrVs14+eWXjezsbJfeb0xMTL7/VkyYMKFIcxuGYSxevNioVq2a4eHhYQQFBRnR0dFGWlpake/3Rrd7/cnNzTXGjRtnBAYGGp6enkbbtm1d6ti7GYthFPEtLQEAAJyIc3YAAICpUXZQrMXGxqp06dL5PurUqePseABcxA8//HDTfytKly7t7HgoYryNhWItMzNTqamp+S4rWbKkS10xA8B5Ll68eMvPmXKlm/fB8Sg7AADA1HgbCwAAmBplBwAAmBplBwAAmBplBwAc4PDhw7JYLEpKSirwcwYMGHDbO88+9NBDGjFiRKGyAX92lB3gT2LDhg1yd3d3mc9PcoZ69erpH//4R77LFixYIE9PT505c+aOtl25cmWdPHnSqR+5ASB/lB3gT2LOnDl67rnntH79eutn/zjL5cuXnbLfqKgoxcXF6eLFi3mWxcTE6PHHH1eFChXs3u7ly5fl7u6uoKAgl/l8KgD/j7ID/AmcP39eixcv1rPPPqtOnTpp3rx5edb58ssv1bRpU3l5ealChQrq1q2bdVl2drZefPFFVa5cWZ6enqpRo4bmzJkjSZo3b57KlCljs63ly5fLYrFYv3711VfVoEEDffzxxwoLC5OXl5ckaeXKlWrZsqXKlCmj8uXL67HHHtPBgwdttvXbb7+pT58+KleunHx8fNSkSRNt3LhRhw8flpubm7Zs2WKz/nvvvafQ0NB8P+n6qaee0sWLF7V06VKb8eTkZK1du1ZRUVE6ePCgunTposDAQJUuXVpNmzbVd999Z7N+1apV9dprr6lfv37y8/PT4MGD87yNlZOTo6ioKIWFhcnb21u1atXS+++/n89vR5o4caIqVqwoPz8//eMf/7hlGczOztbo0aN1zz33yMfHRxEREVq7dq11+ZEjR9S5c2eVLVtWPj4+qlOnjr755pubbg/4M6DsAH8Cn332mcLDw1WrVi099dRTmjt3rv54i62vv/5a3bp1U8eOHbV9+3YlJibqL3/5i3V5v379tGjRIk2bNk179uzRf/7zH7vvOnvgwAEtXbpUy5YtsxaCrKwsjRo1Slu2bFFiYqLc3NzUrVs3a1E5f/68HnzwQR0/flwrVqzQjh079MILLyg3N1dVq1ZVZGSkYmJibPYTExOjAQMGyM0t7z9vFSpUUJcuXTR37lyb8Xnz5qlSpUpq3769zp8/r44dOyoxMVHbt2/XI488os6dO+vo0aM2z3nnnXdUv359bd++XePGjcuzr9zcXFWqVElLlizRL7/8ovHjx+ull17SZ599ZrNeYmKi9uzZo7Vr12rRokVatmyZJk6ceNOf49ChQ7VhwwbFxcVp586d6tmzpx555BHt379fkhQdHa3s7GytX79eu3bt0uTJk7lDMODEDyEFcJe0aNHCeO+99wzDMIwrV64YFSpUML7//nvr8ubNmxt9+/bN97l79+41JBkJCQn5Lo+JiTH8/f1txuLj440//vMyYcIEo2TJksapU6dumfP06dOGJGPXrl2GYRjGf/7zH8PX19f4/fff811/8eLFRtmyZY1Lly4ZhmEYW7duNSwWi5GcnHzTfaxcudKwWCzGoUOHDMO49inOoaGhxiuvvHLT59SpU8eYPn269evQ0FCja9euNuskJycbkozt27ffdDvR0dFGjx49rF/379/fKFeunJGVlWUdmzVrllG6dGkjJyfHMAzbT6Q/cuSI4e7ubhw/ftxmu23btjXGjh1rGIZh1KtXz3j11VdvmgH4M2JmBzC5vXv3atOmTerTp48kqUSJEurVq5f1bShJSkpKUtu2bfN9flJSktzd3fXggw8WKkdoaKgqVqxoM7Z//3716dNH1apVk5+fn6pWrSpJ1lmUpKQkNWzYUOXKlct3m127dpW7u7vi4+MlXZuhadOmjXU7+WnXrp0qVapknRFKTEzU0aNHNXDgQEnXZpNGjx6t2rVrq0yZMipdurT27NmTZ2anSZMmt/2eP/jgAzVu3FgVK1ZU6dKl9eGHH+bZTv369VWqVCnr182bN9f58+d17NixPNvbtWuXcnJydO+999p8rtO6deusb/8NGzZMr7/+uh544AFNmDBBO3fuvG1OwOwoO4DJzZkzR1evXlVISIhKlCihEiVKaNasWVq6dKnS09MlSd7e3jd9/q2WSZKbm5vNW2KSdOXKlTzr+fj45Bnr3Lmzzp49q48++kgbN27Uxo0bJf3/Ccy327eHh4f69eunmJgYXb58WQsXLtSgQYNum3fAgAGaP3++cnNzFRMTozZt2qhatWqSpNGjRys+Pl5vvvmmfvjhByUlJalevXp5zqPJ7/v5o7i4OI0ePVpRUVFavXq1kpKSNHDgwEKdnH3+/Hm5u7tr69atSkpKsj727NljPR/o73//uw4dOqS//e1v2rVrl5o0aaLp06ff8T4BM6DsACZ29epVffLJJ3r33XdtXhx37NihkJAQLVq0SJJ0//33KzExMd9t1KtXT7m5uVq3bl2+yytWrKjMzExlZWVZxwpyr5nff/9de/fu1SuvvKK2bduqdu3aOnfunM06999/v5KSknT27Nmbbufvf/+7vvvuO82cOVNXr15V9+7db7vvgQMH6tixY1q2bJni4+MVFRVlXfbTTz9pwIAB6tatm+rVq6egoCAdPnz4ttu80U8//aQWLVpoyJAhatiwoWrUqJHn5GtJ2rFjh83VYf/73/9UunRpVa5cOc+6DRs2VE5Ojk6dOqUaNWrYPIKCgqzrVa5cWf/4xz+0bNkyPf/88/roo4/szg+YCWUHMLGvvvpK586dU1RUlOrWrWvz6NGjh/WtrAkTJmjRokWaMGGC9uzZYz2xVbp25VH//v01aNAgLV++3Hrl0vUTbSMiIlSqVCm99NJLOnjwoBYuXJjv1V43Klu2rMqXL68PP/xQBw4c0Jo1azRq1Cibdfr06aOgoCB17dpVP/30kw4dOqSlS5dqw4YN1nVq166tZs2a6cUXX1SfPn1uOxskSWFhYXr44Yc1ePBgeXp62hSkmjVrWk+i3rFjh/7617/me2XX7dSsWVNbtmzRqlWrtG/fPo0bN06bN2/Os97ly5cVFRWlX375Rd98840mTJigoUOH5nuC9b333qu+ffuqX79+WrZsmZKTk7Vp0yZNmjRJX3/9tSRpxIgRWrVqlZKTk7Vt2zZ9//33ql27tt35ATOh7AAmNmfOHEVGRsrf3z/Psh49emjLli3auXOnHnroIS1ZskQrVqxQgwYN9PDDD2vTpk3WdWfNmqUnnnhCQ4YMUXh4uJ5++mnrTE65cuX06aef6ptvvlG9evW0aNEivfrqq7fN5ubmpri4OG3dulV169bVyJEj9fbbb9us4+HhodWrVysgIEAdO3ZUvXr19NZbb8nd3d1mvaioKF2+fPm2b2Hd+Jxz587pr3/9q/VSeEmaOnWqypYtqxYtWqhz587q0KGDGjVqVODtXvfMM8+oe/fu6tWrlyIiIvT7779ryJAhedZr27atatasqdatW6tXr156/PHHb/nzi4mJUb9+/fT888+rVq1a6tq1qzZv3qwqVapIunbJe3R0tGrXrq1HHnlE9957r2bOnGl3fsBMLMaNb7YDQDHz2muvacmSJZyMCyBfzOwAKLbOnz+v3bt3a8aMGXruueecHQeAi6LsACi2hg4dqsaNG+uhhx6y6y0sAH8uvI0FAABMjZkdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgav8H/GzqtXu8YtUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, accuracy2_1*100, accuracy3*100, accuracy4*100, accuracy5*100, accuracy6*100, accuracy7*100, accuracy8*100, accuracy8_1*100, accuracy9*100, accuracy10*100]\n", + "\n", + "# List of corresponding labels for each accuracy\n", + "labels = ['1', '2', '2_1', '3', '4', '5', '6', '7', '8', '8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "RFaaCNH6Cfoa", + "outputId": "e624dad4-1663-4a68-90ec-b569e5b0b46a" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIKElEQVR4nO3dfVxUZf7/8fdwN+ANICh3BUpmqWlKoGZZ3lHepWmYeZPhzdpWWqmblbumZW2k3Wi5pNaWZGm2Vpq1SZqpVOIdhltmZqlpJmipIBoocP3+8Mv8HEEDBWY4vZ6Px3k8mutcc53PnDkO785cZ47NGGMEAABgUR6uLgAAAKAqEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAWM7jjz8um82mX3/9tcq3lZqaqtatW8vX11c2m01Hjx6t8m0CqBjCDlCDpKSkyGazOS0hISHq3Lmzli9fXu31fPjhh+rdu7dCQ0Pl4+OjoKAg3XjjjXr++eeVm5tb7fVUt99++00DBgyQn5+fkpOT9eabb6p27dpl9j37vfPy8tIll1yiYcOGaf/+/aX6d+rUSTabTU2aNClzvJUrVzrGevfdd53Wff311+rfv78aNmwoX19fXXLJJbrppps0a9Ysp36NGjUqdTyVLN27d7/AvQK4Hy9XFwCg4qZOnaro6GgZY5Sdna2UlBT17NlTH374oW655ZYq335xcbFGjhyplJQUtWzZUvfdd58iIyN17Ngxpaena9KkSfr444+1atWqKq/FlTZt2qRjx47pySefVHx8fLmeU/Le5efna/369UpJSdEXX3yhb775Rr6+vk59fX199cMPP2jjxo1q27at07oFCxbI19dX+fn5Tu3r1q1T586dFRUVpVGjRiksLEz79u3T+vXr9eKLL+r+++936t+6dWv97W9/K1VnREREuV4PUBMQdoAaqEePHoqLi3M8HjlypEJDQ/X2229XStgpLi7WyZMnS/3xLTF9+nSlpKRo3Lhxev7552Wz2RzrHnzwQR04cEDz58+/qG3UBAcPHpQkBQYGlvs5Z753f/nLX1S/fn1NmzZNy5Yt04ABA5z6Nm7cWIWFhXr77bedwk5+fr6WLFmiXr166b333nN6zj//+U8FBARo06ZNpeoqqfdMl1xyie68885y1w/URHyNBVhAYGCg/Pz85OXl/P8vzz33nK677joFBwfLz89PsbGxpb7ykCSbzaYxY8ZowYIFuuqqq2S325Wamlrmtk6cOKFp06bpqquu0rPPPusUdEqEh4frkUceKfc2LqTOK6+8Ur6+voqNjVVaWlqZtR49elTDhg1TYGCgAgICNHz4cJ04caLsnXiWxYsXKzY2Vn5+fqpfv77uvPNOp6+bOnXqpMTERElSmzZtZLPZNGzYsHKNfaYbbrhBkvTjjz+WuX7QoEF65513VFxc7Gj78MMPdeLEiVLhqGScq666qswAFhISUuH6ACsg7AA1UE5Ojn799VcdOnRI27Zt07333qu8vLxS/4f+4osvKiYmRlOnTtXTTz8tLy8v3X777frvf/9baszPPvtM48aN0x133KEXX3xRjRo1KnPbX3zxhY4ePapBgwbJ09OzQnWfaxsVqXPt2rUaO3as7rzzTk2dOlW//fabunfvrm+++aZU3wEDBujYsWNKSkrSgAEDlJKSoieeeOIP60xJSdGAAQPk6emppKQkjRo1Su+//746dOjgmID8j3/8Q3fffbek019Nvfnmm/rrX/9aof0hSXv27JEk1atXr8z1gwcP1oEDB7RmzRpH28KFC9W1a9cyw0vDhg2VkZFR5v4oy6lTp/Trr7+WWn7//fcKvxbAbRkANca8efOMpFKL3W43KSkppfqfOHHC6fHJkydNixYtTJcuXZzaJRkPDw+zbdu2P6zhxRdfNJLM0qVLndoLCwvNoUOHnJbi4uJybaMidUoymzdvdrT99NNPxtfX1/Tr18/RNmXKFCPJjBgxwun5/fr1M8HBwed9fSdPnjQhISGmRYsW5vfff3e0f/TRR0aSmTx5sqOt5P3YtGnTecc8s++nn35qDh06ZPbt22feffdd06BBA2O3282+ffuc+nfs2NFcddVVxhhj4uLizMiRI40xxhw5csT4+PiYN954w6xevdpIMosXL3Y8b8WKFcbT09N4enqa9u3bm4cffth88skn5uTJk6VqatiwYZnHkySTlJT0h68JqCk4swPUQMnJyVq5cqVWrlypt956S507d9Zf/vIXvf/++079/Pz8HP995MgR5eTk6IYbbtCWLVtKjdmxY0c1b978D7ddcpVVnTp1nNq//vprNWjQwGn57bffyrWNitTZvn17xcbGOh5HRUXp1ltv1SeffKKioiKnvvfcc4/T4xtuuEG//fbbea8U27x5sw4ePKj77rvPaT5Rr1691LRp0zLPNlVEfHy8GjRooMjISPXv31+1a9fWsmXLdOmll57zOYMHD9b777+vkydP6t1335Wnp6f69etXZt+bbrpJ6enp6tOnj7Zu3arp06erW7duuuSSS7Rs2bJS/du1a+c4ls5cBg0adFGvE3AnTFAGaqC2bds6TVAeNGiQYmJiNGbMGN1yyy3y8fGRJH300Ud66qmnlJmZqYKCAkf/subZREdHl2vbdevWlSTl5eU5tV9++eVauXKlJGn+/Pl68803y72NitRZ1qXYV1xxhU6cOKFDhw4pLCzM0R4VFeXUr+SroiNHjsjf37/MWn766SdJ0pVXXllqXdOmTfXFF1+U+bzySk5O1hVXXKGcnBy9/vrrSktLk91uP+9zBg4cqIceekjLly/XggULdMsttzjeh7K0adPGEY62bt2qJUuWaMaMGerfv78yMzOdAmf9+vXLfSUZUFNxZgewAA8PD3Xu3FkHDhzQzp07JUmff/65+vTpI19fX7388sv6+OOPtXLlSg0ePFjGmFJjnHl25XyaNm0qSaXmhNSpU0fx8fGKj4/XZZddVuZzy9pGReusiHPNKbrYcS9G27ZtFR8fr4SEBC1btkwtWrTQ4MGDS4XHM4WHh6tTp056/vnnlZaWpsGDB5drWz4+PmrTpo2efvppzZ49W6dOndLixYsr66UANQZhB7CIwsJCSf//jMt7770nX19fffLJJxoxYoR69OhRKf8Hf8MNNyggIECLFi1yukLoQlW0zpIwd6bvv/9etWrVUoMGDS66noYNG0qSduzYUWrdjh07HOsrQ8kE6F9++UX/+te/ztt38ODB+vzzz+Xv76+ePXtWeFslZwIPHDhwQbUCNRlhB7CAU6dOacWKFfLx8VGzZs0knf5DarPZnOax7NmzR0uXLr2obdWqVUsPP/ywvvnmGz366KNlniWpyJmTitaZnp7uNJdn3759+uCDD3TzzTdX+OqwssTFxSkkJERz5sxx+kpt+fLl2r59u3r16nXR2zhTp06d1LZtW82cObPUDwSeqX///poyZYpefvllx9eUZVm9enWZ+//jjz+WVPbXc4DVMWcHqIGWL1+u7777TtLpH4pbuHChdu7cqUcffdQxF6VXr1564YUX1L17dw0ePFgHDx5UcnKyLr/8cv3vf/+7qO0/+uij2r59u5599lmtWLFCCQkJuvTSS3XkyBFt2bJFixcvVkhISLl+MLCidbZo0ULdunXTAw88ILvdrpdfflmSynVJeXl4e3tr2rRpGj58uDp27KhBgwYpOzvbcan8uHHjKmU7Z5owYYJuv/12paSklJpUXSIgIECPP/74H451//3368SJE+rXr5+aNm2qkydPat26dXrnnXfUqFEjDR8+3Kn//v379dZbb5Uap06dOurbt++FvBzA/bjyUjAAFVPWpee+vr6mdevWZvbs2U6XehtjzGuvvWaaNGli7Ha7adq0qZk3b57jsuwzSTKjR4+ucD1LliwxPXv2NA0aNDBeXl4mMDDQdOjQwTz77LPm6NGj5d5GRet86623HP1jYmLM6tWrnfqVPPfQoUNO7SX7b/fu3X/42t555x0TExNj7Ha7CQoKMkOGDDE///xzmeNV5NLzsvoWFRWZxo0bm8aNG5vCwkJjjPOl5+dS1qXny5cvNyNGjDBNmzY1derUMT4+Pubyyy83999/v8nOznZ6/vkuPW/YsOEfviagprAZ48KZegBQATabTaNHj/7D+S0AcCbm7AAAAEsj7AAAAEsj7AAAAEvjaiwANQZTDAFcCM7sAAAASyPsAAAAS+NrLEnFxcX65ZdfVLdu3TJvPAgAANyPMUbHjh1TRESEPDzOff6GsCPpl19+UWRkpKvLAAAAF2Dfvn269NJLz7mesCOpbt26kk7vrJKf2gcAAO4tNzdXkZGRjr/j50LYkRxfXfn7+xN2AACoYf5oCgoTlAEAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKW5NOykpaWpd+/eioiIkM1m09KlS0v12b59u/r06aOAgADVrl1bbdq00d69ex3r8/PzNXr0aAUHB6tOnTpKSEhQdnZ2Nb4KAADgzlwado4fP65WrVopOTm5zPU//vijOnTooKZNm2rNmjX63//+p8cee0y+vr6OPuPGjdOHH36oxYsXa+3atfrll1902223VddLAAAAbs5mjDGuLkI6/euHS5YsUd++fR1tAwcOlLe3t958880yn5OTk6MGDRpo4cKF6t+/vyTpu+++U7NmzZSenq5rr722XNvOzc1VQECAcnJy+AVlAABqiPL+/XbbOTvFxcX673//qyuuuELdunVTSEiI2rVr5/RVV0ZGhk6dOqX4+HhHW9OmTRUVFaX09PRzjl1QUKDc3FynBQAAWJPbhp2DBw8qLy9PzzzzjLp3764VK1aoX79+uu2227R27VpJUlZWlnx8fBQYGOj03NDQUGVlZZ1z7KSkJAUEBDgW7ngOAIB1uW3YKS4uliTdeuutGjdunFq3bq1HH31Ut9xyi+bMmXNRY0+cOFE5OTmOZd++fZVRMgAAcENue9fz+vXry8vLS82bN3dqb9asmb744gtJUlhYmE6ePKmjR486nd3Jzs5WWFjYOce22+2y2+1VUjcAAHAvbntmx8fHR23atNGOHTuc2r///ns1bNhQkhQbGytvb2+tWrXKsX7Hjh3au3ev2rdvX631AgAA9+TSMzt5eXn64YcfHI93796tzMxMBQUFKSoqShMmTNAdd9yhG2+8UZ07d1Zqaqo+/PBDrVmzRpIUEBCgkSNHavz48QoKCpK/v7/uv/9+tW/fvtxXYv2Z2Z6wuWS7ZopbXAAIAPiTcGnY2bx5szp37ux4PH78eElSYmKiUlJS1K9fP82ZM0dJSUl64IEHdOWVV+q9995Thw4dHM+ZMWOGPDw8lJCQoIKCAnXr1k0vv/xytb8WAADgntzmd3Zc6c/6Ozuc2QEA1GQ1/nd2AAAAKgNhBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWJqXqwsAALg32xM2l23bTDEu2zasgzM7AADA0gg7AADA0vgaC27HVafMOV0OANbEmR0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBpLg07aWlp6t27tyIiImSz2bR06dJz9r3nnntks9k0c+ZMp/bDhw9ryJAh8vf3V2BgoEaOHKm8vLyqLRwAANQYLg07x48fV6tWrZScnHzefkuWLNH69esVERFRat2QIUO0bds2rVy5Uh999JHS0tJ09913V1XJAACghvFy5cZ79OihHj16nLfP/v37df/99+uTTz5Rr169nNZt375dqamp2rRpk+Li4iRJs2bNUs+ePfXcc8+VGY4AAMCfi1vP2SkuLtbQoUM1YcIEXXXVVaXWp6enKzAw0BF0JCk+Pl4eHh7asGHDOcctKChQbm6u0wIAAKzJrcPOtGnT5OXlpQceeKDM9VlZWQoJCXFq8/LyUlBQkLKyss45blJSkgICAhxLZGRkpdYNAADch9uGnYyMDL344otKSUmRzWar1LEnTpyonJwcx7Jv375KHR8AALgPtw07n3/+uQ4ePKioqCh5eXnJy8tLP/30k/72t7+pUaNGkqSwsDAdPHjQ6XmFhYU6fPiwwsLCzjm23W6Xv7+/0wIAAKzJpROUz2fo0KGKj493auvWrZuGDh2q4cOHS5Lat2+vo0ePKiMjQ7GxsZKkzz77TMXFxWrXrl211wwAANyPS8NOXl6efvjhB8fj3bt3KzMzU0FBQYqKilJwcLBTf29vb4WFhenKK6+UJDVr1kzdu3fXqFGjNGfOHJ06dUpjxozRwIEDuRILAABIcvHXWJs3b1ZMTIxiYmIkSePHj1dMTIwmT55c7jEWLFigpk2bqmvXrurZs6c6dOigV155papKBgAANYxLz+x06tRJxphy99+zZ0+ptqCgIC1cuLASqwIA1AS2Jyr34pWKMFPK/7cLrue2E5QBAAAqA2EHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYmkvDTlpamnr37q2IiAjZbDYtXbrUse7UqVN65JFH1LJlS9WuXVsRERG666679MsvvziNcfjwYQ0ZMkT+/v4KDAzUyJEjlZeXV82vBAAAuCuXhp3jx4+rVatWSk5OLrXuxIkT2rJlix577DFt2bJF77//vnbs2KE+ffo49RsyZIi2bdumlStX6qOPPlJaWpruvvvu6noJAADAzXm5cuM9evRQjx49ylwXEBCglStXOrX961//Utu2bbV3715FRUVp+/btSk1N1aZNmxQXFydJmjVrlnr27KnnnntOERERVf4aAACAe6tRc3ZycnJks9kUGBgoSUpPT1dgYKAj6EhSfHy8PDw8tGHDhnOOU1BQoNzcXKcFAABYU40JO/n5+XrkkUc0aNAg+fv7S5KysrIUEhLi1M/Ly0tBQUHKyso651hJSUkKCAhwLJGRkVVaOwAAcJ0aEXZOnTqlAQMGyBij2bNnX/R4EydOVE5OjmPZt29fJVQJAADckUvn7JRHSdD56aef9NlnnznO6khSWFiYDh486NS/sLBQhw8fVlhY2DnHtNvtstvtVVYzAABwH259Zqck6OzcuVOffvqpgoODnda3b99eR48eVUZGhqPts88+U3Fxsdq1a1fd5QIAADfk0jM7eXl5+uGHHxyPd+/erczMTAUFBSk8PFz9+/fXli1b9NFHH6moqMgxDycoKEg+Pj5q1qyZunfvrlGjRmnOnDk6deqUxowZo4EDB3IlFgAAkOTisLN582Z17tzZ8Xj8+PGSpMTERD3++ONatmyZJKl169ZOz1u9erU6deokSVqwYIHGjBmjrl27ysPDQwkJCXrppZeqpX4AAOD+XBp2OnXqJGPMOdefb12JoKAgLVy4sDLLAgAAFuLWc3YAAAAuFmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYWqWEnaNHj1bGMAAAAJWuwmFn2rRpeueddxyPBwwYoODgYF1yySXaunVrhcZKS0tT7969FRERIZvNpqVLlzqtN8Zo8uTJCg8Pl5+fn+Lj47Vz506nPocPH9aQIUPk7++vwMBAjRw5Unl5eRV9WQAAwKIqHHbmzJmjyMhISdLKlSu1cuVKLV++XD169NCECRMqNNbx48fVqlUrJScnl7l++vTpeumllzRnzhxt2LBBtWvXVrdu3ZSfn+/oM2TIEG3btk0rV67URx99pLS0NN19990VfVkAAMCivCr6hKysLEfY+eijjzRgwADdfPPNatSokdq1a1ehsXr06KEePXqUuc4Yo5kzZ2rSpEm69dZbJUnz589XaGioli5dqoEDB2r79u1KTU3Vpk2bFBcXJ0maNWuWevbsqeeee04REREVfXkAAMBiKnxmp169etq3b58kKTU1VfHx8ZJOh5OioqJKK2z37t3KyspyjC9JAQEBateundLT0yVJ6enpCgwMdAQdSYqPj5eHh4c2bNhQabUAAICaq8Jndm677TYNHjxYTZo00W+//eY4M/PVV1/p8ssvr7TCsrKyJEmhoaFO7aGhoY51WVlZCgkJcVrv5eWloKAgR5+yFBQUqKCgwPE4Nze3ssoGAABupsJndmbMmKExY8aoefPmWrlyperUqSNJOnDggO67775KL7AqJCUlKSAgwLGUfC0HAACsp8Jndry9vfXQQw+Vah83blylFFQiLCxMkpSdna3w8HBHe3Z2tlq3bu3oc/DgQafnFRYW6vDhw47nl2XixIkaP36843Fubi6BBwAAi7qg39l588031aFDB0VEROinn36SJM2cOVMffPBBpRUWHR2tsLAwrVq1ytGWm5urDRs2qH379pKk9u3b6+jRo8rIyHD0+eyzz1RcXHzeydJ2u13+/v5OCwAAsKYKh53Zs2dr/Pjx6tGjh44ePeqYlBwYGKiZM2dWaKy8vDxlZmYqMzNT0ulJyZmZmdq7d69sNpvGjh2rp556SsuWLdPXX3+tu+66SxEREerbt68kqVmzZurevbtGjRqljRs36ssvv9SYMWM0cOBArsQCAACSLiDszJo1S6+++qr+8Y9/yNPT09EeFxenr7/+ukJjbd68WTExMYqJiZEkjR8/XjExMZo8ebIk6eGHH9b999+vu+++W23atFFeXp5SU1Pl6+vrGGPBggVq2rSpunbtqp49e6pDhw565ZVXKvqyAACARVV4zs7u3bsd4eRMdrtdx48fr9BYnTp1kjHmnOttNpumTp2qqVOnnrNPUFCQFi5cWKHtAgCAP48Kn9mJjo52fO10ptTUVDVr1qwyagIAAKg0FT6zM378eI0ePVr5+fkyxmjjxo16++23lZSUpH//+99VUSMAAMAFq3DY+ctf/iI/Pz9NmjRJJ06c0ODBgxUREaEXX3xRAwcOrIoaAQAALliFw450+uabQ4YM0YkTJ5SXl1fqV4wBAADcxQWFnRK1atVSrVq1KqsWAACASlfhsBMdHS2bzXbO9bt27bqoggAAACpThcPO2LFjnR6fOnVKX331lVJTUzVhwoTKqgsA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AAAALlK5w07r1q315ptvSpI+//xzZWdnq0uXLo71P/74oyIiIiq/QgAAgItQ7gnKkydPVo8ePfSf//xHBw4c0LBhw5xuvrlkyRJdf/31VVIkAADAharQ7+xkZGRoxYoVCgsL0+233+60vnXr1mrbtm2lFwgAAHAxKnQj0GbNmqlZs2Zlrrv77rsrpSAAAIDKVO6wk5aWVq5+N9544wUXAwAAUNnKHXY6derkuPHnue4dWlNvBAoAAKyr3GGnXr16qlu3roYNG6ahQ4eqfv36VVkXAABApSj3pecHDhzQtGnTlJ6erpYtW2rkyJFat26d/P39FRAQ4FgAAADcSbnDjo+Pj+644w598skn+u6773T11VdrzJgxioyM1D/+8Q8VFhZWZZ0AAAAXpNxh50xRUVGaPHmyPv30U11xxRV65plnlJubW9m1AQAAXLQKh52CggItXLhQ8fHxatGiherXr6///ve/CgoKqor6AAAALkq5Jyhv3LhR8+bN06JFi9SoUSMNHz5c//nPfwg5AADArZU77Fx77bWKiorSAw88oNjYWEnSF198Uapfnz59Kq86AACAi1ShX1Deu3evnnzyyXOu53d2AACAuyl32CkuLq7KOgAAAKrEBV2NdS6///57ZQ4HAABw0Sol7BQUFOj5559XdHR0ZQwHAABQacoddgoKCjRx4kTFxcXpuuuu09KlSyVJ8+bNU3R0tGbOnKlx48ZVVZ0AAAAXpNxzdiZPnqy5c+cqPj5e69at0+23367hw4dr/fr1euGFF3T77bfL09OzKmsFAACosHKHncWLF2v+/Pnq06ePvvnmG1199dUqLCzU1q1bHXdDBwAAcDfl/hrr559/dvy+TosWLWS32zVu3DiCDgAAcGvlDjtFRUXy8fFxPPby8lKdOnWqpCgAAIDKUu6vsYwxGjZsmOx2uyQpPz9f99xzj2rXru3U7/3336/cCgEAAC5CucNOYmKi0+M777yz0osBAACobOUOO/PmzavKOgAAAKpEpf6CMgAAgLtx+7Czf/9+3XnnnQoODpafn59atmypzZs3O9YbYzR58mSFh4fLz89P8fHx2rlzpwsrBgAA7sStw86RI0d0/fXXy9vbW8uXL9e3336r559/XvXq1XP0mT59ul566SXNmTNHGzZsUO3atdWtWzfl5+e7sHIAAOAuyj1nxxWmTZumyMhI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fNiRpPHjxysxMVFxcXFq27atZs6cqePHj2v48OGuLg0AALiYJcLOHXfcoUOHDmny5MnKyspS69atlZqaWmrSMgAA+POxRNiRpDFjxpzza6uaym63a8qUKaW+cnM16qoY6qo4d62NuirGXeuS3Lc26qoaNmP+6HotAACAmqvG/6ggAADA+RB2AACApRF2AACApRF2AACApRF2KsGwYcNks9lks9nk7e2t6OhoPfzww8rP//83ISlZv379eqfnFhQUOH65ec2aNY72tWvXqkuXLgoKClKtWrXUpEkTJSYm6uTJk5KkNWvWOMY8e8nKypIk9e3b16k9ODjYpXWNHj1a+fn5evXVV3XDDTc42tu0aaONGzdWyz4p2Xa9evVUr149xcfHO237j97L999/32nczMzMaqm7c+fOTu12u129evVy+TF25v7y8vKSzWZTkyZNXF5Xhw4dSq3z8vJyeV2SNHjwYKd13t7e6t+/v8trCwsLK3N99+7dXVLXnj17Sm3XbrcrMjJS48aNU35+fpW/VzNnztSVV14pPz8/p+1Kf/xZkZaW5jTu0qVLq3R/nVlHhw4dFB0dLV9fX7Vq1colx9O2bduUkJCgRo0ayWazaebMmSpLcnKyGjVqJF9fX7Vr187p87gyEXYqSffu3XXgwAHt2rVLM2bM0Ny5czVlyhSnPpGRkZo3b55T25IlS1SnTh2ntm+//Vbdu3dXXFyc0tLS9PXXX2vWrFny8fFRUVGRU98dO3bowIEDTktISIgkqbCwUI0aNdLs2bPVoEED9e3bt9rq6tevnzp37qytW7dq8+bNev311/XWW29pypQpWrNmjQYNGiRJCg8PV25urm6++Wbt37+/yvdJybZXr16t9PR0RUZGOm1bOv97efz4cUlSUFCQzlaVddvtdsXExGjt2rVKS0vTnXfeqY8//lh33XVXlb+X56urZH9t3LhR9evXV7NmzbRnzx6XH/uS5Onp6XT81apVy+V1nTx5UitWrFCDBg30wQcf6Msvv9SUKVP0ySefuLy2zp07O/2bffHFFyVJHh7Ofyaqoq4bbrjB6b2qW7euXn75ZUnSwoULJUnBwcFKSEjQa6+9pnfeeUd///vfq3R/LFy4UI8++qimTJmi7du3O223RHk+K+rXr6+zVWbdAwYMUOfOnbV//37t2rVLMTExWrdunWJjY/Xtt9/q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5vTk6Xr16hm73W4uu+wy889//tMUFha6vLaSeWGSzIoVKxzPdVVd9957r2nQoIE5evSokU5PlvX19TWRkZHmvvvuc3yFUlX749SpU+bxxx83jRs3LnO7f/RZ8fHHH5c5fmJiYpXWvWbNGtOsWTPj6elpbDabGThwoEuOp927d5e5vmPHjk7bnzVrlomKijI+Pj6mbdu2Zv369WXWebFsxpRxPg4AAMAimLMDAAAsjbAD/J/PP//cMXenrAUApNM/yHe+z4q9e/e6ukScha+xgP/z+++/O90j62wlk+oA/LkVFhY63aj0bI0aNXJMEoZ7IOwAAABL42ssAABgaYQdAABgaYQdAABgaYQdACjD448/rtatW1foOTabTUuXLj3n+j179shmsykzM/OiagNQMYQdAE6GDRsmm80mm80mb29vRUdH6+GHHy71s/AlfdavX+/UXlBQoODgYNlsNq1Zs8bRvnbtWnXp0kVBQUGqVauWmjRposTERJ08eVKStGbNGseYZy9n3kqgREZGRpnbL9G1a1fddtttF7wfHnroIaf79gCouQg7AErp3r27Dhw4oF27dmnGjBmaO3eupkyZUqpfZGSk5s2b59S2ZMmSUr9L9O2336p79+6Ki4tTWlqavv76a82aNUs+Pj4qKipy6rtjxw4dOHDAaQkJCSm17djYWLVq1Uqvv/56qXV79uzR6tWrNXLkyAq/dmOMCgsLVadOHQUHB1f4+QDcD2EHQCl2u11hYWGKjIxU3759FR8fr5UrV5bql5iYqEWLFjnd5fn1119XYmKiU78VK1YoLCxM06dPV4sWLdS4cWN1795dr776qvz8/Jz6hoSEKCwszGk5192tR44cqXfeeafUnbFTUlIUHh6u7t27680331RcXJzq1q2rsLAwDR48WAcPHnT0LTmjtHz5csXGxsput+uLL74o9TXWpk2bdNNNN6l+/foKCAhQx44dtWXLllI1HThwQD169JCfn58uu+wyvfvuu+fe0ZK++eYb9ejRQ3Xq1FFoaKiGDh2qX3/91bH+3XffVcuWLeXn56fg4GDFx8dX6t2ngT8Dwg6A8/rmm2+0bt06+fj4lFoXGxurRo0a6b333pN0+pdl09LSNHToUKd+YWFhOnDggNLS0iq1tiFDhqigoMApUBhj9MYbb2jYsGHy9PTUqVOn9OSTT2rr1q1aunSp9uzZo2HDhpUa69FHH9Uzzzyj7du36+qrry61/tixY0pMTNQXX3yh9evXq0mTJurZs6eOHTvm1O+xxx5TQkKCtm7dqiFDhmjgwIHavn17mfUfPXpUXbp0UUxMjDZv3qzU1FRlZ2drwIABkk4Hp0GDBmnEiBHavn271qxZo9tuu038PBpQQVVye1EANVZiYqLx9PQ0tWvXNna73UgyHh4e5t1333Xqp/+7k/LMmTNN586djTHGPPHEE6Zfv36l7qRcWFhohg0b5rh7dd++fc2sWbNMTk6OY7ySOynXrl3baWnevPl56x04cKDTnZRXrVplJJmdO3eW2X/Tpk1Gkjl27JjTdpcuXerUb8qUKaZVq1bn3G5RUZGpW7eu+fDDD532yT333OPUr127dubee+81xvz/O0F/9dVXxhhjnnzySXPzzTc79d+3b5+RZHbs2GEyMjKMJLNnz57z7gMA58eZHQCldO7cWZmZmdqwYYMSExM1fPhwJSQklNn3zjvvVHp6unbt2qWUlBSNGDGiVB9PT0/NmzdPP//8s6ZPn65LLrlETz/9tK666iodOHDAqe/nn3+uzMxMx/Lxxx+ft9YRI0YoLS1NP/74o6TTX6N17NjRcXuPjIwM9e7dW1FRUapbt646duwoSaXuXxQXF3fe7WRnZ2vUqFFq0qSJAgIC5O/vr7y8vFLjtG/fvtTjc53Z2bp1q1avXu10X6WmTZtKkn788Ue1atVKXbt2VcuWLXX77bfr1Vdf1ZEjR85bJ4DSCDsASqldu7Yuv/xyxwTgDRs26LXXXiuzb3BwsG655RaNHDlS+fn56tGjxznHveSSSzR06FD961//0rZt25Sfn685c+Y49YmOjtbll1/uWBo2bHjeWrt27aqoqCilpKQoNzdX77//vmNi8vHjx9WtWzf5+/trwYIF2rRpk5YsWSJJjqvAznzN55OYmKjMzEy9+OKLWrdunTIzMxUcHFxqnIrIy8tT7969ncJdZmamdu7cqRtvvFGenp5auXKlli9frubNm2vWrFm68sortXv37gveJvBnRNgBcF4eHh76+9//rkmTJjlNRD7TiBEjtGbNGt11113y9PQs17j16tVTeHj4RU+29fDw0PDhw/XGG29o4cKF8vHxUf/+/SVJ3333nX777Tc988wzuuGGG9S0aVOnyckV8eWXX+qBBx5Qz549ddVVV8lutztNJC5x9qXw69evV7Nmzcoc85prrtG2bdvUqFEjp4B3+eWXO8KXzWbT9ddfryeeeEJfffWVfHx8HIENQPkQdgD8odtvv12enp5KTk4uc3337t116NAhTZ06tcz1c+fO1b333qsVK1boxx9/1LZt2/TII49o27Zt6t27t1PfgwcPKisry2k5derUeesbPny49u/fr7///e8aNGiQ4wqvqKgo+fj4aNasWdq1a5eWLVumJ5988gL2gNSkSRO9+eab2r59uzZs2KAhQ4aUupJMkhYvXqzXX39d33//vaZMmaKNGzdqzJgxZY45evRoHT58WIMGDdKmTZv0448/6pNPPtHw4cNVVFSkDRs26Omnn9bmzZu1d+9evf/++zp06NA5wxOAshF2APwhLy8vjRkzRtOnTy/zTIzNZlP9+vXLvGJLktq2bau8vDzdc889uuqqq9SxY0etX79eS5cudcyhKXHllVcqPDzcacnIyDhvfVFRUYqPj9eRI0ec5gw1aNBAKSkpWrx4sZo3b65nnnlGzz333AXsAem1117TkSNHdM0112jo0KF64IEHyvz9nyeeeEKLFi3S1Vdfrfnz5+vtt99W8+bNyxwzIiJCX375pYqKinTzzTerZcuWGjt2rAIDA+Xh4SF/f3+lpaWpZ8+euuKKKzRp0iQ9//zz5/2qEEBpNmO4hhEAAFgXZ3YAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAICl/T/87OzQb65QZQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, rmse2_1, rmse3, rmse4, rmse5, rmse6, rmse7, rmse8, rmse8_1, rmse9, rmse10]\n", + "\n", + "# List of corresponding labels for each RMSE value\n", + "labels = ['RMSE1', 'RMSE2', 'RMSE2_1', 'RMSE3', 'RMSE4', 'RMSE5', 'RMSE6', 'RMSE7', 'RMSE8', 'RMSE8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "nrZu-K-KDCJ2", + "outputId": "d0dd5f18-77bd-41f4-c21b-09e71322b318" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/MUlEQVR4nO3deVxUZf//8fcACogCorIlKuW+pOYWmbdLFK6pueR2h2JqqZl5l+l9m2V5Z1qZS6RZKFmCS6mlpUWYW+GuZUmuuAuWKYomopzfH36dX3MDCjoww+n1fDzO4+Fc5zrn+swMMm/Ouc4Zi2EYhgAAAEzKxdEFAAAAFCbCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDoC/hVdeeUUWi0W///57oY+1evVqNWjQQB4eHrJYLDp37lyhjwkgb4QdoJiLjY2VxWKxWfz9/dW6dWutWrWqyOtZsWKFOnXqpICAAJUsWVJ+fn76xz/+obffflvnz58v8nqK2pkzZ9SzZ095enoqOjpaH3/8sby8vHLt+9f3buPGjTnWG4ahkJAQWSwWdezYMdd9nDt3zhqqkpOTc+3Tv3//HD8jNxYPD4/bf7JAMeHm6AIA2Merr76q0NBQGYahtLQ0xcbGqn379lqxYkWeH5T2lJ2drYEDByo2Nlb16tXT0KFDFRISogsXLigpKUnjxo3TV199pcTExEKvxZG2bt2qCxcu6LXXXlN4eHi+tvHw8FBcXJwefPBBm/Z169bp+PHjcnd3z3PbJUuWyGKxKDAwUAsWLNDEiRNz7efu7q4PP/wwR7urq2u+agSKM8IOYBLt2rVT48aNrY8HDhyogIAAxcfH2yXsZGdn68qVK3keCZgyZYpiY2P13HPP6e2335bFYrGue/bZZ3Xq1CnNnz//jsYoDk6fPi1J8vX1zfc27du315IlSzRjxgy5uf3/X8txcXFq1KjRTU+9ffLJJ2rfvr0qV66suLi4PMOOm5ub+vXrl++aADPhNBZgUr6+vvL09LT58JSkt956Sw888IDKlSsnT09PNWrUSJ9++mmO7S0Wi4YPH64FCxaoTp06cnd31+rVq3Md69KlS5o8ebLq1KmjN9980ybo3BAUFKQXX3wx32PcTp01atSQh4eHGjVqpPXr1+da67lz59S/f3/5+vrKx8dHAwYM0KVLl3J/Ef/HkiVL1KhRI3l6eqp8+fLq16+fTpw4YV3fqlUrRUZGSpKaNGkii8Wi/v3733K/vXv31pkzZ5SQkGBtu3Llij799FP16dMnz+2OHj2qDRs2qFevXurVq5dSUlL0ww8/5Ou5AH8nHNkBTCI9PV2///67DMPQ6dOnNXPmTGVkZOT4a3769Ol69NFH1bdvX125ckULFy5Ujx49tHLlSnXo0MGm75o1a7R48WINHz5c5cuXV5UqVXIde+PGjTp37pyef/75Ap8WyWuMgtS5bt06LVq0SCNGjJC7u7vee+89tW3bVlu2bFHdunVt+vbs2VOhoaGaNGmSduzYoQ8//FD+/v6aPHnyTeuMjY3VgAED1KRJE02aNElpaWmaPn26vv/+e+3cuVO+vr76z3/+oxo1amjOnDnW04r33HPPLV+DKlWqKCwsTPHx8WrXrp0kadWqVUpPT1evXr00Y8aMXLeLj4+Xl5eXOnbsKE9PT91zzz1asGCBHnjggVz753aEqGTJkvL29r5ljUCxZgAo1ubNm2dIyrG4u7sbsbGxOfpfunTJ5vGVK1eMunXrGm3atLFpl2S4uLgYv/zyyy1rmD59uiHJWL58uU371atXjd9++81myc7OztcYBalTkrFt2zZr25EjRwwPDw+ja9eu1raXX37ZkGRERUXZbN+1a1ejXLlyN31+V65cMfz9/Y26desaf/75p7V95cqVhiRj/Pjx1rYb78fWrVtvus//7fvuu+8aZcqUsT7vHj16GK1btzYMwzAqV65sdOjQIcf29erVM/r27Wt9/O9//9soX768kZWVZdMvMjIy158RSUZERMQt6wSKO05jASYRHR2thIQEJSQk6JNPPlHr1q315JNPaunSpTb9PD09rf8+e/as0tPT1aJFC+3YsSPHPlu2bKnatWvfcuwbV1mVLl3apn337t2qUKGCzXLmzJl8jVGQOsPCwtSoUSPr40qVKqlz5876+uuvde3aNZu+Tz31lM3jFi1a6MyZMze9Umzbtm06ffq0hg4dajOfqEOHDqpZs6a+/PLLPLfNr549e+rPP//UypUrdeHCBa1cufKmp7B++ukn7d69W71797a29e7dW7///ru+/vrrHP09PDysPx9/Xd544407rh1wdpzGAkyiadOmNhOUe/furYYNG2r48OHq2LGjSpYsKUla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8+fP2ywAAMCcnDbspKamSpICAgJs2gMCAqzrUlNT5e/vb7Pezc1Nfn5+1j65mTRpknx8fKxLSEiInasHAADOwmnDTmEaO3as0tPTrcuxY8ccXRIAACgkTht2AgMDJUlpaWk27WlpadZ1gYGBOn36tM36q1ev6o8//rD2yY27u7u8vb1tFgAAYE5OG3ZCQ0MVGBioxMREa9v58+e1efNmhYWFSZLCwsJ07tw5bd++3dpnzZo1ys7OVrNmzYq8ZgAA4HwcejVWRkaGDhw4YH2ckpKiXbt2yc/PT5UqVdLIkSM1ceJEVatWzXrpeXBwsLp06SJJqlWrltq2batBgwZp9uzZysrK0vDhw9WrVy+uxAIAAJIcHHa2bdum1q1bWx+PGjVKkhQZGanY2FiNHj1aFy9e1ODBg3Xu3Dk9+OCDWr16tfUeO5K0YMECDR8+XA899JBcXFzUrVs3zZgxo8ifCwAAcE4WwzD+9ndGOn/+vHx8fJSenv73mb/jzDfjclRt3CQMyJ2z/p905t9jKBL5/fx22jk7AAAA9kDYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApubUYefatWt66aWXFBoaKk9PT91zzz167bXXZBiGtY9hGBo/fryCgoLk6emp8PBw7d+/34FVAwAAZ3LHYefatWvatWuXzp49a496bEyePFmzZs3Su+++q+TkZE2ePFlTpkzRzJkzrX2mTJmiGTNmaPbs2dq8ebO8vLwUERGhy5cv270eAABQ/BQ47IwcOVIxMTGSrgedli1b6r777lNISIjWrl1r1+J++OEHde7cWR06dFCVKlXUvXt3PfLII9qyZYuk60d1pk2bpnHjxqlz58669957NX/+fJ08eVLLly+3ay0AAKB4KnDY+fTTT1W/fn1J0ooVK5SSkqJff/1Vzz33nP7zn//YtbgHHnhAiYmJ2rdvnyTpxx9/1MaNG9WuXTtJUkpKilJTUxUeHm7dxsfHR82aNVNSUlKe+83MzNT58+dtFgAAYE4FDju///67AgMDJUlfffWVevTooerVqysqKkq7d++2a3FjxoxRr169VLNmTZUoUUINGzbUyJEj1bdvX0lSamqqJCkgIMBmu4CAAOu63EyaNEk+Pj7WJSQkxK51AwAA51HgsBMQEKA9e/bo2rVrWr16tR5++GFJ0qVLl+Tq6mrX4hYvXqwFCxYoLi5OO3bs0EcffaS33npLH3300R3td+zYsUpPT7cux44ds1PFAADA2bgVdIMBAwaoZ8+eCgoKksVisZ5C2rx5s2rWrGnX4l544QXr0R1Jqlevno4cOaJJkyYpMjLSeoQpLS1NQUFB1u3S0tLUoEGDPPfr7u4ud3d3u9YKAACcU4HDziuvvKK6devq2LFj6tGjhzU0uLq6asyYMXYt7tKlS3JxsT345OrqquzsbElSaGioAgMDlZiYaA0358+f1+bNm/X000/btRYAAFA8FTjsSFL37t0lyeby7sjISPtU9BedOnXSf//7X1WqVEl16tTRzp07NXXqVEVFRUmSLBaLRo4cqYkTJ6patWoKDQ3VSy+9pODgYHXp0sXu9QAAgOKnwHN2rl27ptdee0133XWXSpcurUOHDkmSXnrpJesl6fYyc+ZMde/eXUOHDlWtWrX0/PPPa8iQIXrttdesfUaPHq1nnnlGgwcPVpMmTZSRkaHVq1fLw8PDrrUAAIDiqcBh57///a9iY2M1ZcoUlSxZ0tpet25dffjhh3YtrkyZMpo2bZqOHDmiP//8UwcPHtTEiRNtxrVYLHr11VeVmpqqy5cv69tvv1X16tXtWgcAACi+Chx25s+frzlz5qhv3742V1/Vr19fv/76q12LAwAAuFMFDjsnTpxQ1apVc7RnZ2crKyvLLkUBAADYS4HDTu3atbVhw4Yc7Z9++qkaNmxol6IAAADspcBXY40fP16RkZE6ceKEsrOztXTpUu3du1fz58/XypUrC6NGAACA21bgIzudO3fWihUr9O2338rLy0vjx49XcnKyVqxYYb2bMgAAgLO4rfvstGjRQgkJCfauBQAAwO4KfGQHAACgOCnwkR0XFxdZLJY811+7du2OCgIAALCnAoedZcuW2TzOysrSzp079dFHH2nChAl2KwwAAMAeChx2OnfunKOte/fuqlOnjhYtWqSBAwfapTAAAAB7sNucnfvvv1+JiYn22h0AAIBd2CXs/Pnnn5oxY4buuusue+wOAADAbgp8Gqts2bI2E5QNw9CFCxdUqlQpffLJJ3YtDgAA4E4VOOy88847NmHHxcVFFSpUULNmzVS2bFm7FgcAAHCnChx2+vfvXwhlAAAAFI58hZ2ffvop3zu89957b7sYAAAAe8tX2GnQoIEsFosMw7hpP4vFwk0FAQCAU8lX2ElJSSnsOgAAAApFvsJO5cqVC7sOAACAQnFb33ouSXv27NHRo0d15coVm/ZHH330josCAACwlwKHnUOHDqlr167avXu3zTyeG5ejM2cHAAA4kwLfQfnZZ59VaGioTp8+rVKlSumXX37R+vXr1bhxY61du7YQSgQAALh9BT6yk5SUpDVr1qh8+fJycXGRi4uLHnzwQU2aNEkjRozQzp07C6NOAACA21LgIzvXrl1TmTJlJEnly5fXyZMnJV2fxLx37177VgcAAHCHCnxkp27duvrxxx8VGhqqZs2aacqUKSpZsqTmzJmju+++uzBqBAAAuG0FDjvjxo3TxYsXJUmvvvqqOnbsqBYtWqhcuXJatGiR3QsEAAC4E/kOO40bN9aTTz6pPn36yNvbW5JUtWpV/frrr/rjjz9yfBs6AACAM8j3nJ369etr9OjRCgoK0hNPPGFz5ZWfnx9BBwAAOKV8h52YmBilpqYqOjpaR48e1UMPPaSqVavq9ddf14kTJwqzRgAAgNtWoKuxSpUqpf79+2vt2rXat2+fevXqpffff19VqlRRhw4dtHTp0sKqEwAA4LYU+NLzG+655x5NnDhRhw8fVnx8vDZt2qQePXrYszYAAIA7dtvfjSVJa9eu1bx58/TZZ5/Jzc1NgwYNslddAAAAdlHgsHP8+HHFxsYqNjZWhw4dUosWLfTee++pR48e8vT0LIwaAQAAblu+w87ixYs1d+5cJSYmyt/fX5GRkYqKilLVqlULsz4AAIA7ku+w069fP3Xo0EHLli1T+/bt5eJy29N9AAAAiky+w87x48fl7+9fmLUAAADYXb4PzxB0AABAccS5KAAAYGqEHQAAYGqEHQAAYGr5DjtbtmzRtWvX8lyfmZmpxYsX26UoAAAAe8l32AkLC9OZM2esj729vXXo0CHr43Pnzql37972rQ4AAOAO5TvsGIZx08d5tQEAADiSXefsWCwWe+4OAADgjjn9BOUTJ06oX79+KleunDw9PVWvXj1t27bNut4wDI0fP15BQUHy9PRUeHi49u/f78CKAQCAMynQF4Hu2bNHqampkq6HjF9//VUZGRmSpN9//93uxZ09e1bNmzdX69attWrVKlWoUEH79+9X2bJlrX2mTJmiGTNm6KOPPlJoaKheeuklRUREaM+ePfLw8LB7TQAAoHgpUNh56KGHbObldOzYUdL101eGYdj9NNbkyZMVEhKiefPmWdtCQ0Ot/zYMQ9OmTdO4cePUuXNnSdL8+fMVEBCg5cuXq1evXnatBwAAFD/5DjspKSmFWUeuvvjiC0VERKhHjx5at26d7rrrLg0dOlSDBg2y1pSamqrw8HDrNj4+PmrWrJmSkpLyDDuZmZnKzMy0Pj5//nzhPhEAAOAw+Q47lStXvmWfn3/++Y6K+V+HDh3SrFmzNGrUKP373//W1q1bNWLECJUsWVKRkZHWU2oBAQE22wUEBFjX5WbSpEmaMGGCXWsFAADO6Y4nKF+4cEFz5sxR06ZNVb9+fXvUZJWdna377rtPr7/+uho2bKjBgwdr0KBBmj179h3td+zYsUpPT7cux44ds1PFAADA2dx22Fm/fr0iIyMVFBSkt956S23atNGmTZvsWZuCgoJUu3Ztm7ZatWrp6NGjkqTAwEBJUlpamk2ftLQ067rcuLu7y9vb22YBAADmVKCwk5qaqjfeeEPVqlVTjx495O3trczMTC1fvlxvvPGGmjRpYtfimjdvrr1799q07du3z3pKLTQ0VIGBgUpMTLSuP3/+vDZv3qywsDC71gIAAIqnfIedTp06qUaNGvrpp580bdo0nTx5UjNnzizM2vTcc89p06ZNev3113XgwAHFxcVpzpw5GjZsmKTrV4GNHDlSEydO1BdffKHdu3friSeeUHBwsLp06VKotQEAgOIh3xOUV61apREjRujpp59WtWrVCrMmqyZNmmjZsmUaO3asXn31VYWGhmratGnq27evtc/o0aN18eJFDR48WOfOndODDz6o1atXc48dAAAgqQBhZ+PGjYqJiVGjRo1Uq1Yt/fOf/yyS+9h07NjRej+f3FgsFr366qt69dVXC70WAABQ/OT7NNb9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denSRT///HMer6p9meY+O87mvvvu08GDB7V06VL17dtX0vUjDZUqVVJoaKhN34yMDC1atEjbtm1TamqqYmNj9e9//zvHPsuVK5fn931VqVJF06dPlySbvxqdobZp06apf//+qlixog4ePKgGDRqoWrVqWrFihZKTkwt13L96/fXX9fnnn2vFihVq2LBhnq/PDe3atdOiRYsUGhqqzz//XJs2bdLjjz8uqXBfr4YNG9rUV6VKFS1dulQbNmzQ4MGDre1F/T7e8NRTT6lPnz5ydXXNcbTLkXX5+/vf8mtfirq21atXa926dTp06JD8/PwkXX8/HV2Xj4+PzS32ly9frrNnz+a463xR15WUlKTSpUurZcuWOnjwoFJTUzVkyBBNnjy50MetUqWKRowYIUkKDQ21jpsfTZo0UePGjXXu3Dl99dVX2r17t3VdYdb98ccfa8iQIdbfS3fffbdee+01paamKiQkxKk+f6ZPn662bdvqhRdekCS99tprSkhI0LvvvqvZs2fnuo09cWSnEEVFRWnevHnWx3Pnzs31KywWL16smjVrqkaNGurXr5/mzp1766+rL6a13Rj3woUL8vPzK9LXJDs72zru7VizZo3130VZ986dO/XDDz+oZcuWOdYV9fs4b948HTp0SC+//PJN+zni56tBgwYKCgrSww8/rO+//94pavviiy/UuHFjTZkyRXfddZeqV6+u559/3uYvbkfU9b9iYmIUHh6uypUrO7SusLAwXbx4UWlpaRowYIDef/99ffrpp2rfvn2hj3vs2DF99dVXMgxDaWlp1nELqnTp0tq8ebP1cWHWnZmZKQ8PD5s2Nzc3nT17VpGRkU71+ZOUlKTw8HCbtoiICCUlJdl9rNwQdgpRv379tHHjRh05ckRHjhzR999/r379+uXoFxMTY21v27at0tPTtW7duhz9HnjgAZUuXdpmKW619evXT+vWrVN6errCwsKK9DV56623lJGRoZ49e+bZ52aSk5OL9PWqWLGi3N3d1bhxYw0bNkxPPvlkjj5F+T7u379fY8aM0SeffCI3t5sfFC7KuoKCgjR79mx99tln+uyzzxQSEqJWrVppx44dDq/t0KFD2rhxo37++WctW7ZM06ZN06effqqhQ4c6tK6/OnnypFatWpXrz1dR19W8eXP94x//0NatWzV69Ght2LBBJUqU0OjRowt93AULFujxxx9XyZIlFRgYKB8fH0VHR+f6mtyMl5eXUlJSiuT1ioiI0Icffqjt27fLMAxt27ZN+/btk2EYatu2rVN9/qSmpub4CqeAgIAcc+sKC6exClGFChXUoUMHxcbGyjAMdejQwTr/44a9e/dqy5YtWrZsmaTrqfzxxx9XTEyMWrVqZdN30aJFqlWrVrGuLSEhQYZhqEuXLlqxYkWRjRsXF6cJEybo888/z3UuR340atSoSF+vDRs2KCMjQ5s2bdKYMWNUtWpV9e7d26ZPUb2P165dU58+fTRhwgRVr179pnUXZV2SVKNGDZs5MA888IAOHjyod955Rx9//LFDa8vOzpbFYtGCBQusp42mTp2q7t2767333pOnp6dD6vqrjz76SL6+vurSpUuu64uyrj179mjLli2qWbOm4uLiNHToUO3evVs9evQo9HGfffZZjR8/XhERETp16pReeOEFPfXUU4qJicl1m7y4urqqdu3aRfJ6vfTSS0pNTdX9998vwzAUEBCgqlWr6ueff3bqzx9HIOwUsqioKOt3duX2V0JMTIyuXr2q4OBga5thGHJ3d9e7775rc149JCREVatWLba1nThxQk8++aTGjRunjz76SOvXry+ScRcuXKgnn3xSS5YsyXEYtSAeeughxcbGSiqa1+vGufV69eopLS1Nr7zySo6wIxXN+3jhwgVt27ZNO3futI6VnZ0twzDk5uamb775Rm3atCnyuvLStGlTbdy4Mc/1RVVbUFCQ7rrrLpv+tWrVkmEYOn78uKpVq+aQuv667dy5c/XPf/5TJUuWzLNfUdU1adIk+fv7q2rVqrr33ns1duxYDRo0SLt27dK//vWvQh23efPm1vkk9957r7y8vNSiRQtNnDhRQUFBeb42uWnatGmR/K7w9PTU3Llz9f777ystLU1BQUF68MEH5ebmpgoVKjjV509gYKDS0tJs2tLS0m45F89eOI1VyNq2basrV64oKytLERERNuuuXr2q+fPn6+2339auXbusy48//qjg4GDFx8ebpraUlBTt2LFD8fHxeumll4ps3Pj4eA0YMEDx8fG5XlZZEA0bNnTYe5mdnW1zNdhfFcX76O3trd27d9vs46mnnlKNGjW0a9cuNWvWzCF15WXXrl03/YAqqtqaN2+ukydPKiMjw9q2b98+ubi4qGLFig6r64Z169bpwIEDGjhw4E37FVVdly5dksVisRk3KytLknLMWbP3uC4uth+Hrq6uknRb81dq1apVpO9jiRIlVLFiRbm6uiolJUUBAQFycXFxqs+fsLAwJSYm2rQlJCQoLCzMruPkhSM7hczV1VXJycnWf//VypUrdfbsWQ0cONAmQUtSt27dFBMTY3OvhDNnzuQ4v+nr62udoLZr1y5J12fX//bbb9q1a5dKliyp2rVrO7S2uLg4bdiwQfXq1VOzZs3022+/ae3atfLw8Cj0cSMjIzV9+nQ1a9bM2s/T0zPHvnOTkZGhP/74QxcuXJAkHT16VIsWLVLZsmULte7o6GhVqlRJNWvWlHT9Evq33nrLeqXI/yqq97Fu3bo27f7+/rm2F3Vd06ZNU2hoqOrUqaPLly/rww8/1Jo1a/TNN9/kWldR1tanTx+99tprGjBggCZMmKDff/9dL7zwgqKiomxOYRV1XTfExMSoWbNmeb6HRV1Xp06dtGzZMnl7e+vQoUM6deqUQkJCVLlyZYWEhBTquIMGDdKsWbOsp7FGjhyppk2b2hz1yMuVK1esvyuuXLmiU6dOadGiRfLy8irU12vfvn3asmWLmjVrprNnz2rq1Kk6e/asNRg60+fPs88+q5YtW+rtt99Whw4dtHDhQm3bti3HLTUKjQG7i4yMNDp37pzn+s6dOxuRkZFGx44djfbt2+faZ/PmzYYk48cffzRSUlIMSbku8fHx1m1yW1+5cmWH19ayZctc10dGRjp83Jv57rvvHFL3jBkzjDp16hilSpUyvL29jYYNGxrvvfeece3aNes+HfUz9lcvv/yyUb9+fZs2R9Q1efJk45577jE8PDwMPz8/o1WrVsaaNWty7NdRr1lycrIRHh5ueHp6GhUrVjRGjRplXLp0yeF1nTt3zvD09DTmzJmT6z4dVVfTpk2NMmXKGJ6enkZQUJDRt29f4/jx44U+7owZM4zatWvnOe7N5DVGy5YtC7XuPXv2GA0aNDA8PT0Nb29vo3PnzkaXLl2c9vNn8eLFRvXq1Y2SJUsaderUMb788st8vb72YPm/IgEAAEyJOTsAAMDUCDv4Wzp69GiOe0b8dTl69KijSwTgJG72u2LDhg2OLg/5wGks/C1dvXpVhw8fznN9lSpVbnnjPAB/DwcOHMhz3V133ZXrZHM4F8IOAAAwNU5jAQAAUyPsAAAAUyPsAAAAUyPsAICk2NhY+fr6FmibKlWqaNq0aTftY7FYtHz58tuuC8CdI+wAuKX+/fvLYrHY3D7+hmHDhslisah///451iUlJcnV1TXX7yU7fPiwLBZLrsumTZty9E9LS1OJEiW0cOHCXGscOHCg7rvvvoI/uf/z+OOPa9++fbe9PQDnRdgBkC8hISFauHCh/vzzT2vb5cuXFRcXp0qVKuW6TUxMjJ555hmtX79eJ0+ezLXPt99+q1OnTtksjRo1ytEvICBAHTp00Ny5c3Osu3jxohYvXnzLL7TMS1ZWljw9PeXv739b2wNwboQdAPly3333KSQkREuXLrW2LV26VJUqVVLDhg1z9M/IyNCiRYv09NNPq0OHDoqNjc11v+XKlVNgYKDNUqJEiVz7Dhw4UImJiTlu+rhkyRJdvXpVffv21erVq/Xggw/K19dX5cqVU8eOHXXw4EFr3xtHlBYtWqSWLVvKw8NDCxYsyHEa6+DBg+rcubMCAgJUunRpNWnSRN9++22Omi5cuKDevXvLy8tLd911l6Kjo2/2MurYsWPq2bOnfH195efnp86dO9vc82nt2rVq2rSpvLy85Ovrq+bNm+vIkSM33SeAmyPsAMi3qKgozZs3z/p47ty5GjBgQK59Fy9erJo1a6pGjRrq16+f5s6dqzu9rVf79u0VEBCQIzjNmzdPjz32mHx9fXXx4kWNGjVK27ZtU2JiolxcXNS1a1dlZ2fbbDNmzBg9++yzSk5OVkRERI6xMjIy1L59eyUmJmrnzp1q27atOnXqlCNovfnmm6pfv7527txp3WdCQkKu9WdlZSkiIkJlypTRhg0b9P3336t06dJq27atrly5oqtXr6pLly5q2bKlfvrpJyUlJWnw4MGyWCx39LoBf3tF9pWjAIqtG9+Affr0acPd3d04fPiwcfjwYcPDw8P47bffrN+k/FcPPPCAMW3aNMMwDCMrK8soX7688d1331nX3/g2ZU9PT8PLy8tmuZkxY8YYoaGhRnZ2tmEYhnHgwAHDYrEY3377ba79f/vtN0OSsXv3bptxb9R2w7x58wwfH5+bjl2nTh1j5syZ1seVK1c22rZta9Pn8ccfN9q1a2d9LMlYtmyZYRiG8fHHHxs1atSw1m4YhpGZmWl4enoaX3/9tXHmzBlDkrF27dqb1gGgYDiyAyDfKlSoYD0lNW/ePHXo0EHly5fP0W/v3r3asmWLevfuLUlyc3PT448/rpiYmBx9Fy1apF27dtksNxMVFaWUlBR99913kq4f1alSpYratGkjSdq/f7969+6tu+++W97e3qpSpYok5Tgi07hx45uOk5GRoeeff161atWSr6+vSpcureTk5Bz7CQsLy/E4OTk5133++OOPOnDggMqUKWP9biU/Pz9dvnxZBw8elJ+fn/r376+IiAh16tRJ06dP16lTp25aJ4Bb48t/ABRIVFSUhg8fLkl5zk+JiYnR1atXFRwcbG0zDEPu7u5699135ePjY20PCQlR1apV8z1+tWrV1KJFC82bN0+tWrXS/PnzNWjQIOupnk6dOqly5cr64IMPFBwcrOzsbNWtW1dXrlyx2Y+Xl9dNx3n++eeVkJCgt956S1WrVpWnp6e6d++eYz8FkZGRoUaNGmnBggU51lWoUEHS9fA2YsQIrV69WosWLdK4ceOUkJCg+++//7bHBf7uCDsACuTG/BKLxZLrXJerV69q/vz5evvtt/XII4/YrOvSpYvi4+NzvYS9IAYOHKinn35ajz76qE6cOGG97P3MmTPau3evPvjgA7Vo0UKStHHjxtsa4/vvv1f//v3VtWtXSdeDSm5fHvu/l8lv2rRJtWrVynWf9913nxYtWiR/f395e3vnOXbDhg3VsGFDjR07VmFhYYqLiyPsAHeA01gACsTV1VXJycnas2ePXF1dc6xfuXKlzp49q4EDB6pu3bo2S7du3XKcyjpz5oxSU1NtlsuXL9+0hh49eqhEiRIaMmSIHnnkEYWEhEiSypYtq3LlymnOnDk6cOCA1qxZo1GjRt3W86xWrZqWLl2qXbt26ccff1SfPn1yTHKWroeiKVOmaN++fYqOjtaSJUv07LPP5rrPvn37qnz58urcubM2bNiglJQUrV27ViNGjNDx48eVkpKisWPHKikpSUeOHNE333yj/fv35xmeAOQPYQdAgXl7e+d5ZCImJkbh4eE2p6pu6Natm7Zt26affvrJ2hYeHq6goCCb5VZ3HC5VqpR69eqls2fPKioqytru4uKihQsXavv27apbt66ee+45vfnmm7f1HKdOnaqyZcvqgQceUKdOnRQREZHrTQv/9a9/adu2bWrYsKEmTpyoqVOn5nrE60bd69evV6VKlfTYY4+pVq1aGjhwoC5fvixvb2+VKlVKv/76q7p166bq1atr8ODBGjZsmIYMGXJbzwHAdRbDuMNrQQEAAJwYR3YAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICp/T+WRF7HOqAsCAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, mae2_1, mae3, mae4, mae5, mae6, mae7, mae8, mae8_1, mae9, mae10]\n", + "\n", + "# List of corresponding labels for each MAE value\n", + "labels = ['MAE1', 'MAE2', 'MAE2_1', 'MAE3', 'MAE4', 'MAE5', 'MAE6', 'MAE7', 'MAE8', 'MAE8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "_c4Pe76fDNM-", + "outputId": "c1784b34-6746-42fd-9f66-b7c1cfd50a21" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA930lEQVR4nO3deVwV9f7H8fcB9QAKuCDigopLmrtiFtxSLBMRt25XDTM3sjK9pXazbNGWX6GVqaVplso1U9zSyjXSXErKXFMzywpxAbVUEE1AmN8fPjzXIwflKHgO0+v5eMzj4XznOzOfMwfl7cx3ZiyGYRgCAAAwCQ9XFwAAAFCUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcASryXXnpJFotFf/zxR7Hva/Xq1WrRooW8vLxksVh0+vTpYt8nAOcQbgA3Fh8fL4vFYjcFBgaqffv2WrVq1U2v5/PPP1fXrl1VpUoVlSlTRhUrVlTbtm01YcIEZWRk3PR6brY///xTvXr1kre3t6ZOnaqPPvpIZcuWddj38u/u66+/zrfcMAwFBwfLYrGoS5cuDrdx+vRpW4jat2+fwz4DBgyw+/nw8/NT8+bNNWHCBGVlZdn6XQqABU1paWnXcUQA91TK1QUAuLZXXnlFISEhMgxDx44dU3x8vDp37qzPP/+8wF+MRSkvL0+xsbGKj49X06ZN9fjjjys4OFhnzpxRUlKSXnjhBa1cuVJr164t9lpc6fvvv9eZM2f06quvqkOHDoVax8vLS/PmzdOdd95p175hwwYdPnxYVqu1wHUXLVoki8WioKAgffzxx/q///s/h/2sVqs+/PBDSRcD0ZIlS/Sf//xH33//vRISEuz6Tps2TeXKlcu3jfLlyxfq8wAlAeEGKAGioqLUunVr23xsbKyqVKmi+fPnF0m4ycvLU3Z2try8vBwuf+ONNxQfH68RI0ZowoQJslgstmVPPvmkUlNTNWfOnBvaR0lw/PhxSc4Fgc6dO2vRokV65513VKrU//7JnTdvnkJDQ696KW3u3Lnq3LmzatWqpXnz5hUYbkqVKqW+ffva5h9//HHdfvvtWrBggd5++21Vq1bNtuxf//qXAgICCl0/UBJxWQoogcqXLy9vb2+7X5aS9NZbbyk8PFyVKlWSt7e3QkNDtXjx4nzrWywWDRs2TB9//LEaN24sq9Wq1atXO9zXuXPnNH78eDVu3FhvvvmmXbC5pGrVqnrmmWcKvY/rqbNBgwby8vJSaGioNm7c6LDW06dPa8CAASpfvrz8/f01cOBAnTt3zvFBvMKiRYsUGhoqb29vBQQEqG/fvjpy5IhteUREhPr37y9Juu2222SxWDRgwIBrbjcmJkZ//vmnEhMTbW3Z2dlavHix+vTpU+B6KSkp2rRpkx544AE98MAD+v3337V58+ZCfRYPDw9FRERIkpKTkwu1DmAmnLkBSoD09HT98ccfMgxDx48f17vvvqvMzEy7/61L0uTJk9WtWzc9+OCDys7OVkJCgnr27Knly5crOjraru+6deu0cOFCDRs2TAEBAapdu7bDfX/99dc6ffq0/vOf/8jT09OpugvahzN1btiwQQsWLNATTzwhq9Wq9957T506ddKWLVvUpEkTu769evVSSEiI4uLitH37dn344YcKDAzU+PHjr1pnfHy8Bg4cqNtuu01xcXE6duyYJk+erG+++UY7duxQ+fLl9fzzz6tBgwaaMWOG7TJh3bp1r3kMateurbCwMM2fP19RUVGSpFWrVik9PV0PPPCA3nnnHYfrzZ8/X2XLllWXLl3k7e2tunXr6uOPP1Z4ePg19ylJv/76qySpUqVKdu0nT57M17dUqVJcloK5GADc1uzZsw1J+Sar1WrEx8fn63/u3Dm7+ezsbKNJkybG3XffbdcuyfDw8DD27t17zRomT55sSDKWLVtm137hwgXjxIkTdlNeXl6h9uFMnZKMrVu32toOHjxoeHl5Gffdd5+tbezYsYYkY9CgQXbr33fffUalSpWu+vmys7ONwMBAo0mTJsZff/1la1++fLkhyRgzZoyt7dL38f333191m1f2nTJliuHr62v73D179jTat29vGIZh1KpVy4iOjs63ftOmTY0HH3zQNv/cc88ZAQEBRk5Ojl2//v37G2XLlrV9BwcOHDBef/11w2KxGM2aNbP1u3SMHE0NGjS45ucBShIuSwElwNSpU5WYmKjExETNnTtX7du318MPP6xPPvnErp+3t7ftz6dOnVJ6erruuusubd++Pd8227Vrp0aNGl1z35fugrpyEOru3btVuXJlu+nPP/8s1D6cqTMsLEyhoaG2+Zo1a6p79+5as2aNcnNz7fo+9thjdvN33XWX/vzzz6veybV161YdP35cjz/+uN14oOjoaDVs2FArVqwocN3C6tWrl/766y8tX75cZ86c0fLly696SeqHH37Q7t27FRMTY2uLiYnRH3/8oTVr1uTrf/bsWdt3UK9ePT333HMKCwvT0qVL8/VdsmSJ7Wfp0jR79uwb/oyAO+GyFFACtGnTxm5AcUxMjFq2bKlhw4apS5cuKlOmjCRp+fLl+r//+z/t3LnT7jZgR+NkQkJCCrVvX19fSVJmZqZde7169WzjSObMmaOPPvqo0Ptwps769evna7vlllt07tw5nThxQkFBQbb2mjVr2vWrUKGCpIsBys/Pz2EtBw8elCQ1aNAg37KGDRs6vI3bWZUrV1aHDh00b948nTt3Trm5ufrXv/5VYP+5c+eqbNmyqlOnjg4cOCDp4l1XtWvX1scff5zv0p2Xl5c+//xzSRfvnAoJCVGNGjUcbrtt27YMKIbpEW6AEsjDw0Pt27fX5MmT9csvv6hx48batGmTunXrprZt2+q9995T1apVVbp0ac2ePVvz5s3Lt43Lz55cTcOGDSVJe/bsUffu3W3t5cqVs90OXVAAcLQPZ+t0RkFjggzDuKHtFoU+ffpo8ODBSktLU1RUVIFjXAzD0Pz583X27FmHZ72OHz+uzMxMuzNpnp6ehb41Hfg7INwAJdSFCxck/e+MypIlS+Tl5aU1a9bYPTvlRi853HXXXfL391dCQoJGjx4tD48bu5rtbJ2//PJLvraff/5ZPj4+qly58g3VIkm1atWSJO3fv19333233bL9+/fblt+o++67T48++qi+/fZbLViwoMB+l55/88orr+jWW2+1W3bq1Ck98sgjWrZsWb7B5AD+hzE3QAmUk5OjL774QmXKlLH9AvT09JTFYrEbh5KcnKxly5bd0L58fHw0atQo7dmzR88++6zDsyDOnBlxts6kpCS7sTiHDh3Sp59+qo4dOzp995YjrVu3VmBgoKZPn253iWzVqlXat29fvktA16tcuXKaNm2aXnrpJXXt2rXAfpcuST399NP617/+ZTcNHjxY9evX18cff1wkNQFmxZkboARYtWqVfvrpJ0kXL0vMmzdPv/zyi5599lnbWJLo6Gi9/fbb6tSpk/r06aPjx49r6tSpqlevnn744Ycb2v+zzz6rffv26c0339QXX3yh+++/XzVq1NCpU6e0fft2LVq0SIGB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XX5+fkVWe0lT+9kVri5ByeOiXV0CAKCEcOb3t1uNuUlPT5ckVaxYscA+SUlJ6tChg11bZGSkkpKSHPbPyspSRkaG3QQAAMzLbcJNXl6ehg8frn/84x9q0qRJgf3S0tJUpUoVu7YqVaooLS3NYf+4uDj5+/vbpuDg4CKtGwAAuBe3CTdDhw7Vnj17lJCQUKTbHT16tNLT023ToUOHinT7AADAvZRydQGSNGzYMC1fvlwbN25UjRo1rto3KChIx44ds2s7duyYgoKCHPa3Wq2yWq1FVisAAHBvLj1zYxiGhg0bpqVLl2rdunUKCQm55jphYWFau3atXVtiYqLCwsKKq0wAAFCCuPTMzdChQzVv3jx9+umn8vX1tY2b8ff3l7e3tySpX79+ql69uuLi4iRJTz75pNq1a6cJEyYoOjpaCQkJ2rp1q2bMmOGyz4Hi4Q53dEnc1QUAJY1Lz9xMmzZN6enpioiIUNWqVW3TggULbH1SUlKUmppqmw8PD9e8efM0Y8YMNW/eXIsXL9ayZcuuOggZAAD8fbj0zE1hHrGzfv36fG09e/ZUz549i6EiAABQ0rnN3VIAAABFgXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMpZSrCwAA/L3VfnaFq0tQ8rhoV5eAIsSZGwAAYCqEGwAAYCpOh5tDhw7p8OHDtvktW7Zo+PDhmjFjRpEWBgAAcD2cDjd9+vTRV199JUlKS0vTvffeqy1btuj555/XK6+8UuQFAgAAOMPpcLNnzx61adNGkrRw4UI1adJEmzdv1scff6z4+Piirg8AAMApToebnJwcWa1WSdKXX36pbt26SZIaNmyo1NTUoq0OAADASU6Hm8aNG2v69OnatGmTEhMT1alTJ0nS0aNHValSpSIvEAAAwBlOh5vx48fr/fffV0REhGJiYtS8eXNJ0meffWa7XAUAAOAqTj/ELyIiQn/88YcyMjJUoUIFW/sjjzwiHx+fIi0OAADAWdf1nBvDMLRt2za9//77OnPmjCSpTJkyhBsAAOByTp+5OXjwoDp16qSUlBRlZWXp3nvvla+vr8aPH6+srCxNnz69OOoEAAAoFKfP3Dz55JNq3bq1Tp06JW9vb1v7fffdp7Vr1xZpcQAAAM5y+szNpk2btHnzZpUpU8auvXbt2jpy5EiRFQYAAHA9nD5zk5eXp9zc3Hzthw8flq+vb5EUBQAAcL2cDjcdO3bUpEmTbPMWi0WZmZkaO3asOnfuXJS1AQAAOM3py1ITJkxQZGSkGjVqpPPnz6tPnz765ZdfFBAQoPnz5xdHjQAAAIXmdLipUaOGdu3apYSEBP3www/KzMxUbGysHnzwQbsBxgAAAK7gdLiRpFKlSqlv375FXQsAAMANczrczJkz56rL+/Xrd93FAAAA3Cinw82TTz5pN5+Tk6Nz587ZnlBMuAEAAK7k9N1Sp06dspsyMzO1f/9+3XnnnQwoBgAALndd75a6Uv369TVu3Lh8Z3UAAAButiIJN9LFQcZHjx4tqs0BAABcF6fH3Hz22Wd284ZhKDU1VVOmTNE//vGPIisMAADgejgdbnr06GE3b7FYVLlyZd19992aMGFCUdUFAABwXZwON3l5ecVRBwAAQJEosjE3AAAA7qBQZ25GjhxZ6A2+/fbb110MAADAjSpUuNmxY0ehNmaxWJza+caNG/Xmm29q27ZtSk1N1dKlS/ON6bnc+vXr1b59+3ztqampCgoKcmrfAADAnAoVbr766qti2fnZs2fVvHlzDRo0SP/85z8Lvd7+/fvl5+dnmw8MDCyO8gAAQAl0XS/OLCpRUVGKiopyer3AwECVL1++6AsCAAAl3nWFm61bt2rhwoVKSUlRdna23bJPPvmkSAq7mhYtWigrK0tNmjTRSy+9dNXn62RlZSkrK8s2n5GRUez1AQAA13H6bqmEhASFh4dr3759Wrp0qXJycrR3716tW7dO/v7+xVGjTdWqVTV9+nQtWbJES5YsUXBwsCIiIrR9+/YC14mLi5O/v79tCg4OLtYaAQCAazl95ub111/XxIkTNXToUPn6+mry5MkKCQnRo48+qqpVqxZHjTYNGjRQgwYNbPPh4eH69ddfNXHiRH300UcO1xk9erTd3V4ZGRkEHAAATMzpMze//vqroqOjJUllypTR2bNnZbFYNGLECM2YMaPIC7yWNm3a6MCBAwUut1qt8vPzs5sAAIB5OR1uKlSooDNnzkiSqlevrj179kiSTp8+rXPnzhVtdYWwc+fOYj9jBAAASg6nL0u1bdtWiYmJatq0qXr27Kknn3xS69atU2Jiou655x6ntpWZmWl31uX333/Xzp07VbFiRdWsWVOjR4/WkSNHNGfOHEnSpEmTFBISosaNG+v8+fP68MMPtW7dOn3xxRfOfgwAAGBShQ43e/bsUZMmTTRlyhSdP39ekvT888+rdOnS2rx5s+6//3698MILTu1869atdg/luzQ2pn///oqPj1dqaqpSUlJsy7Ozs/XUU0/pyJEj8vHxUbNmzfTll186fLAfAAD4eyp0uGnWrJluu+02Pfzww3rggQckSR4eHnr22Weve+cREREyDKPA5fHx8Xbzo0aN0qhRo657fwAAwPwKPeZmw4YNaty4sZ566ilVrVpV/fv316ZNm4qzNgAAAKcVOtzcddddmjVrllJTU/Xuu+8qOTlZ7dq10y233KLx48crLS2tOOsEAAAoFKfvlipbtqwGDhyoDRs26Oeff1bPnj01depU1axZU926dSuOGgEAAArN6XBzuXr16um5557TCy+8IF9fX61YsaKo6gIAALgu1/3izI0bN2rWrFlasmSJPDw81KtXL8XGxhZlbQAAAE5zKtwcPXpU8fHxio+P14EDBxQeHq533nlHvXr1UtmyZYurRgAAgEIrdLiJiorSl19+qYCAAPXr10+DBg2ye88TAACAOyh0uCldurQWL16sLl26yNPTszhrAgAAuG6FDjefffZZcdYBAABQJG7obikAAAB3Q7gBAACmQrgBAACmQrgBAACmUuhw8/jjjyszM9M2P3/+fJ09e9Y2f/r0aXXu3LloqwMAAHBSocPN+++/r3PnztnmH330UR07dsw2n5WVpTVr1hRtdQAAAE4qdLgxDOOq8wAAAO6AMTcAAMBUCDcAAMBUnHpx5pgxY+Tj4yNJys7O1muvvSZ/f39JshuPAwAA4CqFDjdt27bV/v37bfPh4eH67bff8vUBAABwpUKHm/Xr1xdjGQAAAEXDqctSGRkZ+u6775Sdna02bdqocuXKxVUXAADAdSl0uNm5c6c6d+6stLQ0SZKvr68WLlyoyMjIYisOAADAWYW+W+qZZ55RSEiIvvnmG23btk333HOPhg0bVpy1AQAAOK3QZ262bdumL774Qq1atZIkzZo1SxUrVlRGRob8/PyKrUAAAABn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rVpVdevWdZvv3FENWVlZatGixVX7uLLO2rVrF/qzuPp4rlixQrfffrs8PT1lsVgUEhLiNjWuX7++wH8H/vnPf7pNnZL0888/q3v37goICJCfn5+qVKnidt/5pX9/atSoofLly6tSpUp65JFHlJmZ6Va/cxxJSUlRdHS0fHx8FBgYqKeffloXLlxw2LeoEG5uQHBwsBISEvTXX3/Z2s6fP6958+apZs2a+frPnDlT//73v7Vx40YdPXrU4Ta//PJLpaamas2aNcrMzFRUVJROnz5tWz548GClpqbaTW+88YZteXZ2tnr27KkhQ4a4VZ29evVSjRo1lJCQoF27dikvL0/vv/++tm/frtzcXHl4eGj79u039Xj99NNPtjr27t2riRMnavr06Xruuecc7uvKY5mbmytvb28NGTJEnp6e8vb2vinH8srvvH379lq4cKH279+vJUuW6MyZMypTpozLv/Mr67xk1KhRtsenBwUFuWWdr7zyisOfXXeqc8mSJXrooYc0cOBAde/eXUFBQTp+/Ljb1BgeHp5vWf369eXp6al169a5TZ2S1KVLF124cEHr1q3Ttm3bVKFCBVksFs2fP99t6jx37pwsFotOnDihDRs2aPXq1dq7d68eeught/udc7nc3FxFR0crOztbmzdv1n//+1/Fx8drzJgxDvsXGQPXpX///kb37t2NJk2aGHPnzrW1f/zxx0azZs2M7t27G/3797e1nzlzxihXrpzx008/Gb179zZee+01u+39/vvvhiRjx44dtrZvvvnGkGSsXr3aMAzDaNeunfHkk08Wqr7Zs2cb/v7+blPntepo3LixUa5cOZcdr0veeOMNIyQkxOGyq32GChUqGEFBQS79zi+5++67DUlG48aN3e5nc+XKlUbDhg2NvXv3GpKMiIgIl/9sXqlWrVrGxIkTbfPu8nfocjk5OUb16tWNDz/80G1rvFJ2drZhtVqNhg0bulWdJ06cMCQZGzdutLX16dPHkGTUrl3bbeoMCwszypQpY3fsfvjhB0OS0bBhQ5d/x5d+51xp5cqVhoeHh5GWlmZrmzZtmuHn52dkZWUVatvXgzM3N2jQoEGaPXu2bX7WrFm2V0dcbuHChWrYsKEaNGigvn37atasWdd8bfulMwEFXSYpiXUWVEdOTo7dQ6NcdbzS09NVsWJFpz9DvXr18vVzxWc4efKk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5eTk2AbaXu7ChQuaM2eOJkyYoJ07d9qmXbt2qVq1avkG7wYHB6tu3boOg8316tWrlzw8PDRv3jzNmTNHgwYNksVikSR988036t69u/r27avmzZurTp06+vnnn53ex+bNm1WrVi09//zzat26terXr6+DBw/m65eSkmJ3p9i3334rDw8PNWjQIF/fRo0ayWq1KiUlRfXq1bObgoODbf0qV66s/v37a+7cuZo0aZJmzJjhdP3A3x1nbgDYeHp6at++fbY/X2n58uU6deqUYmNj7c7QSNL999+vmTNnFvicGkfOnTuntLQ0uzar1aoKFSoUuE65cuXUu3dvjR49WhkZGXbP4Klfv74WL16szZs3q0KFCnr77bd17NgxNWrUqNA1XdpOSkqKEhISdNttt2nFihW2y3CX8/LyUv/+/fXWW28pIyNDTzzxhHr16pXvkpR0cYDyf/7zH40YMUJ5eXm68847lZ6erm+++UZ+fn7q37+/xowZo9DQUDVu3FhZWVlavny5br31VqdqB8CZGwBX8PPzK/B27JkzZ6pDhw75go10Mdxs3brVqQfpffDBB6patardFBMTc831YmNjderUKUVGRtpdHnvhhRfUqlUrRUZGKiIiQkFBQdf1hOBu3bppxIgRGjZsmFq0aKHNmzfrxRdfzNevXr16+uc//6nOnTurY8eOatasmd57770Ct/vqq6/qxRdfVFxcnG699VZ16tRJK1asUEhIiCSpTJkyGj16tJo1a6a2bdvK09NTCQkJTtcP/N1ZDOMa928CAACUIJy5AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApvL/s2EKz3IU2acAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, mape2_1, mape3, mape4, mape5, mape6, mape7, mape8, mape8_1, mape9, mape10]\n", + "\n", + "# List of corresponding labels for each MAPE value\n", + "labels = ['MAPE1', 'MAPE2', 'MAPE2_1', 'MAPE3', 'MAPE4', 'MAPE5', 'MAPE6', 'MAPE7', 'MAPE8', 'MAPE2_1', 'MAPE9', 'MAPE10']\n", + "\n", + "# Plotting the bar graph\n", + "plt.bar(labels, mape_values)\n", + "plt.xlabel('MAPE Variables')\n", + "plt.ylabel('MAPE Values')\n", + "plt.title('Bar Graph of MAPE')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bCF5ZehcARcw", + "outputId": "ed3103b5-2636-48c5-82ba-60f8b3dfd729" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Length of labels: 12\n", + "Length of mape_values: 10\n" + ] + } + ], + "source": [ + "print(\"Length of labels:\", len(labels))\n", + "print(\"Length of mape_values:\", len(mape_values))" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "ZDPV0M5rDTi6", + "outputId": "2b5b43fb-f025-41ff-dc55-6193541132e0" + }, + "outputs": [ + { + "data": { + "image/png": "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6dMHffr00Xv8lStXom7duliwYAEAoHHjxjh69CgWLVqEoKCgyiqTiIiIqqAqdU5OUlISAgMDtYYFBQUhKSnJRBURERGRuTLpnhxDpaenw93dXWuYu7s7srOzce/ePdjY2JSZJj8/H/n5+dL77OzsSq+TiIiITK9K7cmpiOjoaDg6OkovLy8vU5dEpSkUpnsRUdXCbQUZqEqFHA8PD2RkZGgNy8jIgIODg869OAAwdepUZGVlSa+rV68+iVLND8MEEdHThdv9qnW4KiAgAN98843WsPj4eAQEBJQ7jUqlgkqlquzSiMhcmXKDK4Tplk1Ept2Tk5OTg9OnT+P06dMA7l8ifvr0aaSmpgK4vxcmLCxMGn/s2LH4888/8e677+L8+fNYvnw5Nm/ejMmTJ5uifCIiIjJjJt2T8/PPP6Nbt27S+4iICABAeHg4YmJikJaWJgUeAKhbty727t2LyZMnY8mSJahduza++OILXj5ORGRMptr7xT1fZGQKIZ6uXpWdnQ1HR0dkZWXBwcHB1OU8Oea6y95c6yL5YB8znLmGHHOty1zJrO9X5Pe7Sp14TERERKQvhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlS1MXQEREVKXJ7GnfcsI9OURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkS5amLoCIDKRQmGa5Qjz8c3Oti4ieWtyTQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJsBEhGZgqlungjwBor01OCeHCIiIpIl7skxNt7anoiIyCxwTw4RERHJEvfkEOnC8yWIiKo87skhIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZMnnIWbZsGXx8fKBWq9G+fXscP378oeMvXrwYDRs2hI2NDby8vDB58mTk5eU9oWqJiIioqjBpyImNjUVERAQiIyNx6tQp+Pn5ISgoCNevX9c5/ldffYUpU6YgMjISf/zxB9asWYPY2Fi8//77T7hyIiIiMncmDTkLFy7E6NGjMXLkSDRp0gQrV66Era0t1q5dq3P8H374AZ06dcLQoUPh4+ODXr16YciQIY/c+0NERERPH5OFnIKCApw8eRKBgYH/K0apRGBgIJKSknRO07FjR5w8eVIKNX/++Se++eYb9O3bt9zl5OfnIzs7W+tFRERE8mdpqgXfuHEDxcXFcHd31xru7u6O8+fP65xm6NChuHHjBp599lkIIVBUVISxY8c+9HBVdHQ0Zs2aZdTaiYiIyPyZ/MRjQxw+fBhz587F8uXLcerUKcTFxWHv3r2YM2dOudNMnToVWVlZ0uvq1atPsGIiIiIyFZPtyalRowYsLCyQkZGhNTwjIwMeHh46p5kxYwaGDx+OV199FQDQvHlz3L17F2PGjMG0adOgVJbNbCqVCiqVyvhfgIiIiMyayfbkWFtbw9/fHwkJCdIwjUaDhIQEBAQE6JwmNze3TJCxsLAAAAghKq9YIiIiqnJMticHACIiIhAeHo42bdqgXbt2WLx4Me7evYuRI0cCAMLCwlCrVi1ER0cDAIKDg7Fw4UK0atUK7du3x8WLFzFjxgwEBwdLYYeIiIgIMHHICQkJQWZmJmbOnIn09HS0bNkS+/fvl05GTk1N1dpzM336dCgUCkyfPh3//PMPXF1dERwcjA8//NBUX4GIiIjMlEI8Zcd5srOz4ejoiKysLDg4OBh/AQqF8eepj0etRlPVBTy8NtZVlrmuS9ZlOPYxw7Auw1XVPlYBFfn9rlJXVxERERHpiyGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGSJIYeIiIhkiSGHiIiIZIkhh4iIiGTJ4JCzf/9+HD16VHq/bNkytGzZEkOHDsW///5r1OKIiIiIKsrgkPPOO+8gOzsbAHD27Fm89dZb6Nu3Ly5fvoyIiAijF0hERERUEZaGTnD58mU0adIEALBt2zb069cPc+fOxalTp9C3b1+jF0hERERUEQbvybG2tkZubi4A4NChQ+jVqxcAwMXFRdrDQ0RERGRqBu/JefbZZxEREYFOnTrh+PHjiI2NBQBcuHABtWvXNnqBRERERBVh8J6cpUuXwtLSElu3bsWKFStQq1YtAMC+ffvQu3dvoxdIREREVBEKIYQwdRFPUnZ2NhwdHZGVlQUHBwfjL0ChMP489fGo1WiquoCH18a6yjLXdcm6DMc+ZhjWZbiq2scqoCK/3xW6T86lS5cwffp0DBkyBNevXwdwf0/Ob7/9VpHZERERERmdwSHnu+++Q/PmzfHTTz8hLi4OOTk5AIAzZ84gMjLS6AUSERERVYTBIWfKlCn44IMPEB8fD2tra2l49+7d8eOPPxq1OCIiIqKKMjjknD17FgMHDiwz3M3NDTdu3DBKUURERESPy+CQ4+TkhLS0tDLDf/nlF+lKKyIiIiJTMzjk/Oc//8F7772H9PR0KBQKaDQaHDt2DG+//TbCwsIqo0YiIiIigxkccubOnYtGjRrBy8sLOTk5aNKkCbp06YKOHTti+vTplVEjERERkcEqfJ+c1NRUnDt3Djk5OWjVqhUaNGhg7NoqBe+TYwJV8T4O5loXwD72IHOtC2AfMxTrMlxV7WMVUJHfb4Mf61DC29sb3t7eFZ2ciIiIqFIZHHJeeeWVh36+du3aChdDREREZCwGh5x///1X631hYSHOnTuH27dvo3v37kYrjIiIiOhxGBxytm/fXmaYRqPB66+/jvr16xulKCIiIqLHVaFnV5WZiVKJiIgILFq0yBizIyIiInpsRgk5wP2HdhYVFRlrdkRERESPxeDDVREREVrvhRBIS0vD3r17ER4ebrTCiIiIiB6HwSHnl19+0XqvVCrh6uqKBQsWPPLKKyIiIqInxeCQk5iYaNQCli1bhvnz5yM9PR1+fn747LPP0K5du3LHv337NqZNm4a4uDjcunULderUweLFi9G3b1+j1kVERERVW4VvBmgMsbGxiIiIwMqVK9G+fXssXrwYQUFBSE5OhpubW5nxCwoK0LNnT7i5uWHr1q2oVasWrly5AicnpydfPBEREZk1vR7r0KpVKyj0vD30qVOn9F54+/bt0bZtWyxduhTA/UvRvby8MHHiREyZMqXM+CtXrsT8+fNx/vx5WFlZ6b2c0vhYBxOoircdN9e6APaxB5lrXQD7mKFYl+Gqah+rgEp7rMOAAQMepy6dCgoKcPLkSUydOlUaplQqERgYiKSkJJ3T7Nq1CwEBARg/fjx27twJV1dXDB06FO+99x4sLCx0TpOfn4/8/HzpfXZ2tnG/CBEREZklvUJOZGSk0Rd848YNFBcXw93dXWu4u7s7zp8/r3OaP//8E99++y1CQ0PxzTff4OLFixg3bhwKCwvLrTE6OhqzZs0yev1ERERk3ox2n5wnQaPRwM3NDatWrYK/vz9CQkIwbdo0rFy5stxppk6diqysLOl19erVJ1gxERERmYrBJx4XFxdj0aJF2Lx5M1JTU1FQUKD1+a1bt/SaT40aNWBhYYGMjAyt4RkZGfDw8NA5jaenJ6ysrLQOTTVu3Bjp6ekoKCiAtbV1mWlUKhVUKpVeNREREZF8GLwnZ9asWVi4cCFCQkKQlZWFiIgIvPjii1AqlYiKitJ7PtbW1vD390dCQoI0TKPRICEhAQEBATqn6dSpEy5evAiNRiMNu3DhAjw9PXUGHCIiInqKCQPVq1dP7NmzRwghhJ2dnbh48aIQQoglS5aIIUOGGDSvTZs2CZVKJWJiYsTvv/8uxowZI5ycnER6eroQQojhw4eLKVOmSOOnpqYKe3t7MWHCBJGcnCz27Nkj3NzcxAcffKD3MrOysgQAkZWVZVCtert/TvmTf5lrXY+qjXVVnXXJutjHWJd51VWV+1gFVOT32+DDVenp6WjevDkAwM7ODllZWQCAfv36YcaMGQbNKyQkBJmZmZg5cybS09PRsmVL7N+/XzoZOTU1FUrl/3Y2eXl54cCBA5g8eTJatGiBWrVqYdKkSXjvvfcM/RpEREQkcwaHnNq1ayMtLQ3e3t6oX78+Dh48iNatW+PEiRMVOvdlwoQJmDBhgs7PDh8+XGZYQEAAfvzxR4OXQ0RERE8Xg8/JGThwoHQezcSJEzFjxgw0aNAAYWFhfHYVERERmQ297ngMAEuXLsWwYcPKPEIhKSkJSUlJaNCgAYKDgyujRqPiHY9N4GG1sa6yzHVdsi7DsY8ZhnUZrqr2sQqoyO+33iHH0dERhYWFGDhwIEaNGoXu3bs/VrGmwpBjAlXxj9Bc6wLYxx5krnUB7GOGYl2Gq6p9rAIq8vut9+Gq9PR0rFy5EteuXUPPnj1Rt25dzJkzhzfXIyIiIrOkd8ixsbFBWFgYEhMTkZKSguHDh2PNmjWoW7cuevfujS1btqCwsLAyayUiIiLSW4Ue61CvXj3Mnj0bly9fxr59+1C9enWMGDECtWrVMnZ9RERERBXyWM+uUigUsLS0hEKhgBCCe3KIiIjIbFQo5Fy9ehWzZ89GvXr10LNnT1y7dg2rV69GWlqasesjIiIiqhC9bwZYUFCAuLg4rF27Ft9++y08PT0RHh6OV155BfXq1avMGomIiIgMpnfI8fDwQG5uLvr164fdu3cjKChI65ELREREROZE75Azffp0DB8+HK6urpVZDxEREZFR6B1yIiIiKrMOIiIiIqPi8SYiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJb1PPC5RXFyMmJgYJCQk4Pr169BoNFqff/vtt0YrjoiIiKiiDA45kyZNQkxMDJ5//nk0a9YMClM+yp2IiIioHAaHnE2bNmHz5s3o27dvZdRDREREZBQGn5NjbW0NX1/fyqiFiIiIyGgMDjlvvfUWlixZAiFEZdRDREREZBQGH646evQoEhMTsW/fPjRt2hRWVlZan8fFxRmtOCIiIqKKMjjkODk5YeDAgZVRCxEREZHRGBxy1q1bVxl1EBERERmVwSGnRGZmJpKTkwEADRs25NPJiYiIyKwYfOLx3bt38corr8DT0xNdunRBly5dULNmTYwaNQq5ubmVUSMRERGRwQwOOREREfjuu++we/du3L59G7dv38bOnTvx3Xff4a233qqMGomIiIgMphAGXgteo0YNbN26Fc8995zW8MTERAwePBiZmZnGrM/osrOz4ejoiKysLDg4OBh/Aaa6A/SjVqMp70z9sNpYV1nmui5Zl+HYxwzDugxXVftYBVTk99vgPTm5ublwd3cvM9zNzY2Hq4iIiMhsGBxyAgICEBkZiby8PGnYvXv3MGvWLAQEBBi1OCIiIqKKMvjqqiVLliAoKAi1a9eGn58fAODMmTNQq9U4cOCA0QskIiIiqgiDQ06zZs2QkpKCjRs34vz58wCAIUOGIDQ0FDY2NkYvkIiIiKgiKnSfHFtbW4wePdrYtRAREREZjV4hZ9euXejTpw+srKywa9euh477wgsvGKUwIiIioseh1yXkSqUS6enpcHNzg1JZ/rnKCoUCxcXFRi3Q2HgJuQlUxUsczbUugH3sQeZaF8A+ZijWZbiq2scqoCK/33rtydFoNDr/TURERGSuDL6EXJfbt28bYzZERERERmNwyJk3bx5iY2Ol94MGDYKLiwtq1aqFM2fOGLU4IiIioooyOOSsXLkSXl5eAID4+HgcOnQI+/fvR58+ffDOO+8YvUAiIiKiijD4EvL09HQp5OzZsweDBw9Gr1694OPjg/bt2xu9QCIiIqKKMHhPjrOzM65evQoA2L9/PwIDAwEAQgizv7KKiIiInh4G78l58cUXMXToUDRo0AA3b95Enz59AAC//PILfH19jV4gERERUUUYHHIWLVoEHx8fXL16FR9//DHs7OwAAGlpaRg3bpzRCyQiIiKqCL1uBignvBmgCVTFm1WZa10A+9iDzLUugH3MUKzLcFW1j1VApd0MkI91ICIioqqGj3UwNv5Po6yq+D8Nc60LYB97kLnWBbCPGYp1Ga6q9rEK4GMdiIiIiP6fUR7rQERERGRuDA45b7zxBj799NMyw5cuXYo333zTGDURERERPTaDQ862bdvQqVOnMsM7duyIrVu3GqUoIiIiosdlcMi5efMmHB0dywx3cHDAjRs3jFIUERER0eMyOOT4+vpi//79ZYbv27cP9erVM0pRRERERI/L4DseR0REYMKECcjMzET37t0BAAkJCViwYAEWL15s7PqIiIiIKsTgkPPKK68gPz8fH374IebMmQMA8PHxwYoVKxAWFmb0AomIiIgq4rEe65CZmQkbGxvp+VVVAW8GaAJV8WZV5loXwD72IHOtC2AfMxTrMlxV7WMVUJHf7wrdJ6eoqAiHDh1CXFwcSjLStWvXkJOTU5HZERERERmdwYerrly5gt69eyM1NRX5+fno2bMn7O3tMW/ePOTn52PlypWVUScRERGRQQzekzNp0iS0adMG//77L2xsbKThAwcOREJCglGLIyIiIqoog/fkHDlyBD/88AOsra21hvv4+OCff/4xWmFEREREj8PgPTkajUbnk8b//vtv2NvbG6UoIiIiosdlcMjp1auX1v1wFAoFcnJyEBkZib59+1aoiGXLlsHHxwdqtRrt27fH8ePH9Zpu06ZNUCgUGDBg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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, precision2_1, precision3, precision4, precision5, precision6, precision7, precision8, precision8_1, precision9, precision10]\n", + "\n", + "# List of corresponding labels for each precision value\n", + "labels = ['Precision1', 'Precision2', 'Precision2_1', 'Precision3', 'Precision4', 'Precision5', 'Precision6', 'Precision7', 'Precision8', 'Precision8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "39LBleNeDeuw", + "outputId": "66c1cd08-96bb-46bb-afd3-7792e2b71345" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFVUlEQVR4nO3df3zO9eL/8ee1za7NMD83msUwSjKaH01Gq62hRDkSObZZOYo4dnxEYeQci/Krg/TD73OKQh3FEc1RiSizQsjv0WHzc2Njy/b+/uG767hs2DWba3t73G+363Zr773f1+u59/V2Xc/evy6LYRiGAAAATMLF2QEAAABKEuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGQLk1btw4WSwWnTp1qtTHWrNmjVq0aCEPDw9ZLBadO3eu1McsLRaLRePGjbP9vGDBAlksFh0+fNhpmYCSRLkByqD8D5urHz4+PgoLC9O///3v257n888/V9euXeXr6yt3d3dVr15dHTp00JQpU5SRkXHb89xup0+f1jPPPCNPT0/NmjVLixcvlpeXV6HzXvvaubm5yc/PT9HR0frtt99uc3LgzuTm7AAAru/1119XQECADMNQamqqFixYoC5duujzzz/XE088Uerj5+XlKTY2VgsWLND999+vl156Sf7+/jp//rw2b96s0aNHa/Xq1UpMTCz1LM70ww8/6Pz585owYYLCw8OLtEz+a3fp0iV9//33WrBggTZu3KidO3fKw8OjlBMDdzbKDVCGde7cWa1atbL9HBsbK19fX3300UclUm7y8vKUk5Nz3Q/byZMna8GCBRo2bJimTJkii8Vi+93QoUN1/PhxLVq06JbGKA/S0tIkSVWrVi3yMle/ds8//7xq1qypSZMmaeXKlXrmmWdKIyaA/4/DUkA5UrVqVXl6esrNzf7/S9566y21a9dONWrUkKenp4KDg7Vs2bICy1ssFg0ePFj//Oc/dd9998lqtWrNmjWFjpWVlaVJkybpvvvu05tvvmlXbPLVqVNHr7zySpHHKE7OJk2ayMPDQ8HBwfrmm28KzXru3DlFR0eratWq8vb2VkxMjLKysgpfidf45JNPFBwcLE9PT9WsWVN9+/a1O3z08MMPKyoqSpLUunVrWSwWRUdHF+m5rxYaGipJOnDggN30PXv26A9/+IOqV68uDw8PtWrVSitXriz0bxw2bJjq168vq9WqunXrql+/frbzjXJycjR27FgFBwfL29tbXl5eCg0N1X/+8x+HswLlHXtugDIsPT1dp06dkmEYSktL09///ndduHBBffv2tZtvxowZevLJJ/Xcc88pJydHS5YsUc+ePfXFF1/o8ccft5t3/fr1+vjjjzV48GDVrFlT9evXL3TsjRs36ty5cxo+fLhcXV0dyn29MRzJ+fXXX2vp0qUaMmSIrFarZs+erU6dOmnr1q1q1qyZ3bzPPPOMAgIClJCQoKSkJH3wwQfy8fHRpEmTbphzwYIFiomJUevWrZWQkKDU1FTNmDFD3333nbZv366qVavqtddeU5MmTfTee+/ZDjU1bNjQofUhyXaybrVq1WzTdu3apYceekh+fn4aOXKkvLy89PHHH6t79+5avny5nnrqKUnShQsXFBoaqt27d6t///564IEHdOrUKa1cuVLHjh1TzZo1lZGRoQ8++EC9e/fWCy+8oPPnz2vu3LmKjIzU1q1b1aJFC4czA+WWAaDMmT9/viGpwMNqtRoLFiwoMH9WVpbdzzk5OUazZs2MRx55xG66JMPFxcXYtWvXTTPMmDHDkGR89tlndtMvX75snDx50u6Rl5dXpDEcySnJ+PHHH23Tjhw5Ynh4eBhPPfWUbVp8fLwhyejfv7/d8k899ZRRo0aNG/59OTk5ho+Pj9GsWTPj4sWLtulffPGFIckYO3asbVr+6/HDDz/c8Dmvnverr74yTp48aRw9etRYtmyZUatWLcNqtRpHjx61zfvoo48a999/v3Hp0iXbtLy8PKNdu3ZGYGCgbdrYsWMNScaKFSsKjJe/7i9fvmxkZ2fb/e7s2bOGr69vgfUjyYiPjy+Q+dChQzf9+4DygMNSQBk2a9YsrVu3TuvWrdM//vEPhYWF6fnnn9eKFSvs5vP09LT999mzZ5Wenq7Q0FAlJSUVeM6OHTuqadOmNx07/yqoSpUq2U3fsWOHatWqZfc4ffp0kcZwJGdISIiCg4NtP999993q1q2bvvzyS+Xm5trNO3DgQLufQ0NDdfr06RteyfXjjz8qLS1NL730kt35QI8//rjuuecerVq16rrLFkV4eLhq1aolf39//eEPf5CXl5dWrlypunXrSpLOnDmj9evX65lnntH58+d16tQpnTp1SqdPn1ZkZKT27dtnOzy2fPlyBQUF2fbkXC3/cKGrq6vc3d0lXTnP6cyZM7p8+bJatWpV6PoFzIzDUkAZ1qZNG7sTinv37q2WLVtq8ODBeuKJJ2wfZl988YX++te/Kjk5WdnZ2bb5CztPJiAgoEhjV65cWdKVQyJXa9SokdatWydJWrRokRYvXlzkMRzJGRgYWGBa48aNlZWVpZMnT6p27dq26XfffbfdfPmHfs6ePasqVaoUmuXIkSOSpCZNmhT43T333KONGzcWulxRzZo1S40bN1Z6errmzZunb775Rlar1fb7/fv3yzAMjRkzRmPGjCn0OdLS0uTn56cDBw6oR48eNx1z4cKFmjJlivbs2aPff//dNr2orzlgFpQboBxxcXFRWFiYZsyYoX379um+++7Tt99+qyeffFIdOnTQ7NmzVadOHVWoUEHz58/Xhx9+WOA5rt57ciP33HOPJGnnzp3q1q2bbXqlSpVsl0NfrwAUNoajOR1xvXOCDMO4pee9FVcX0+7du6t9+/bq06eP9u7dq0qVKikvL0+SNHz4cEVGRhb6HI0aNSryeP/4xz8UHR2t7t276//+7//k4+MjV1dXJSQkFDiJGTA7yg1Qzly+fFnS//aoLF++XB4eHvryyy/t9gzMnz//lsYJDQ2Vt7e3lixZolGjRsnF5daOYjuac9++fQWm/frrr6pYsaJq1ap1S1kkqV69epKkvXv36pFHHrH73d69e22/Lwn5JSMsLEwzZ87UyJEj1aBBA0lShQoVbnrvnIYNG2rnzp03nGfZsmVq0KCBVqxYYbcnLD4+/tb/AKCc4ZwboBz5/ffftXbtWrm7u+vee++VdOWD02Kx2J2HcvjwYX322We3NFbFihU1YsQI7dy5UyNHjix0L4gje0Yczbl582a7c0WOHj2qf/3rX3rsscccvnqrMK1atZKPj4/mzJljd4js3//+t3bv3l3g6q1b9fDDD6tNmzaaPn26Ll26JB8fHz388MN69913dfz48QLznzx50vbfPXr00E8//aRPP/20wHz5r0H+Orn6NdmyZYs2b95con8HUB6w5wYow/79739rz549kq6cf/Hhhx9q3759GjlypO1ckscff1xTp05Vp06d1KdPH6WlpWnWrFlq1KiRfv7551saf+TIkdq9e7fefPNNrV27Vj169FDdunV19uxZJSUl6ZNP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g5WYmGiblpeXp8TERIWEhBSY/5577tGOHTuUnJxsezz55JMKCwtTcnIye2QAAIDj3y1V0uLi4hQVFaVWrVqpTZs2mj59ujIzMxUTEyNJ6tevn/z8/JSQkCAPDw81a9bMbvmqVatKUoHpAADgzuT0ctOrVy+dPHlSY8eO1YkTJ9SiRQutWbPGdpJxSkqKXFycuoMJAACUI8X+4szyii/OvP3K4xe7ldVcEtvYtcpqLoltzFHkclx53caK47Z8cSYAAEBZRLkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmUibKzaxZs1S/fn15eHiobdu22rp163Xnff/99xUaGqpq1aqpWrVqCg8Pv+H8AADgzuL0crN06VLFxcUpPj5eSUlJCgoKUmRkpNLS0gqdf8OGDerdu7f+85//aPPmzfL399djjz2m33777TYnBwAAZZHFMAzDmQHatm2r1q1ba+bMmZKkvLw8+fv76+WXX9bIkSNvunxubq6qVaummTNnql+/fjedPyMjQ97e3kpPT1eVKlVuOf+1LCX+jEVzsxfRWbmkG2cjV0Fl9bUkl+PYxhxDLseV122sOBz5/HbqnpucnBxt27ZN4eHhtmkuLi4KDw/X5s2bi/QcWVlZ+v3331W9evVCf5+dna2MjAy7BwAAMC+nlptTp04pNzdXvr6+dtN9fX114sSJIj3HK6+8orvuusuuIF0tISFB3t7etoe/v/8t5wYAAGWX08+5uRVvvPGGlixZok8//VQeHh6FzjNq1Cil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burRo4d27dqlrKwsRURE2M2fk5Ojli1bSpKSk5MVGhpq+z+Va6Wmpmr06NHasGGD0tLSlJubq6ysLKWkpDicLSoqSkePHi31bJmZmbZxAwMDFRYWpgYNGqhz586Srpxkd+24+ScQxsfHa9OmTaW6Tq62c+dOdevWTfHx8dq/f7/Dr2VWVpaM/39D79J8La/ONXHiROXm5qpfv34aNmyYU7exsLAw+fv767ffflOdOnXk5uamjh072tZNWdn281/Lu+66S5MnT3b6OmvevLmmTp2qiIgI3X333Ro1apTat2+vDh06KDIy0nZo73bnunp9nTlzRp9//rkeffRRvffee05/r7h48aLthPrGjRvr3nvv1aJFi9StW7dS24YuXryo2NhYPfTQQ/roo4+Um5urt956S4mJierYsaPefffdIr9XXLx40fZt2iX5OoaFhem1115TWFiYunbtKh8fH02YMEHZ2dl68803FRoaKkm2PSPffvutgoODSzxHeUC5cZCXl5caNWok6cpu1KCgIM2dO9f2xZ2rVq2Sn5+f3TL5h0A8PT1v+NxRUVE6ffq0ZsyYoXr16slqtSokJKTAuR5FydatWzdNnjy51LPl5eXZjTt48GDFx8dr6dKltmWvHnffvn3q27ev+vTpo9GjR6tHjx6luk7y/fLLL3r00Uc1YMAAjR49WtHR0Q6/ls8995ztd6X5Wl6d66OPPlJQUJBOnjypESNGaODAgVq0aJGaN29ut8zt2Ma8vLyUlJSkHTt2SLpyrsG8efNsv+/Ro4fGjBlz23PlZ7v2tXzkkUeUmpoqyXn/Lr28vGzbzAcffKDHH3/cbhsbNGhQgZPEb1euq9dXzZo15e/vr3r16kly7nvFd999pylTpmjz5s1ycXGR1WqVr6+vKlaseMMP2lvdhj788EMdPnzYNm7+tIoVKyojI8Oh94oRI0YoMzPzltZXYbm9vLxUv359SdK4ceMUFRWluXPnqkePHnrzzTe1bNkyNWnSRMeOHVPnzp318ccfq3Xr1iWeo7hq165t+zeZL//n/HOxSgrl5ha4uLjo1VdfVVxcnH799VdZrValpKTY/m/2Ws2bN9fChQv1+++/F9qev/vuO82ePVtdunSRJB09etR23NZR+ZeCjx49ulSz5V+WmC9/nQwdOlTSlf+DyB93165dio6OVmxsrO3yv9uxTnbt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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, recall2_1, recall3, recall4, recall5, recall6, recall7, recall8, recall8_1, recall9, recall10]\n", + "\n", + "# List of corresponding labels for each recall value\n", + "labels = ['Recall1', 'Recall2', 'Recall2_1', 'Recall3', 'Recall4', 'Recall5', 'Recall6', 'Recall7', 'Recall8', 'Recall8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "id": "13cZXvb0DsvK" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true + }, + "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.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Python File/Stock_Price_Prediction_LOCAL_20502.ipynb b/Python File/Stock_Price_Prediction_LOCAL_20502.ipynb new file mode 100644 index 0000000..19803fe --- /dev/null +++ b/Python File/Stock_Price_Prediction_LOCAL_20502.ipynb @@ -0,0 +1,7142 @@ +{ + "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", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SOQbXSiB-g5G", + "outputId": "55ee6ec8-9146-4ebf-c2fe-b4b06bc3a5c4" + }, + "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": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "Sc4id6VxL8BS", + "outputId": "78207ea2-5b80-47a2-a1b1-0548765b6455" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateOpenHighLowCloseAdj CloseVolume
001-01-199618.69114718.97892218.54018418.82324012.40993143733533.0
102-01-199618.89400518.96476717.73819218.22410612.01493156167280.0
203-01-199618.32789218.56848917.64383917.73819211.69457768296318.0
304-01-199617.50231217.83254217.22397217.67686311.65414286073880.0
405-01-199617.73819217.78536617.45985217.57779311.58882776613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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": 6, + "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": 7, + "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": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "pqbTBdnBOKJc", + "outputId": "42ed663c-ae0f-43d7-a7bd-18bb37dfef6f" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolume
018.69114718.97892218.54018418.82324043733533.0
118.89400518.96476717.73819218.22410656167280.0
218.32789218.56848917.64383917.73819268296318.0
317.50231217.83254217.22397217.67686386073880.0
417.73819217.78536617.45985217.57779376613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "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": 10, + "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": 11, + "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": 12, + "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": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "997ZEgibCZIO", + "outputId": "879af72c-3e7c-4b8c-ba28-452fa8ba3cd6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5659, 4)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bmtt76RuCeyG", + "outputId": "855f34ec-4914-4e1f-c9b1-6f8753612100" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1415, 4)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CeJkUJ92Ciqd", + "outputId": "21c5949c-e787-40df-b816-7cc9e830e401" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5659,)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7HGC7VuTCjWc", + "outputId": "cbda22d6-bec9-45d7-80ac-c74ad14b7c0d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1415,)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c6Ek8jRlO2_I" + }, + "source": [ + "## 1. LINEAR REGRESSION" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "id": "RdZ1SpzdMHAJ" + }, + "outputs": [], + "source": [ + "# Create a linear regression model\n", + "model1 = LinearRegression()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "id": "mPM035IzMY04", + "outputId": "084d9520-1d31-4287-a9d1-6f9eeea60f9b" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Close
5286257.350006
3408129.464996
5477279.350006
6906588.500000
53021.644367
\n", + "

" + ], + "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": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "qBhQ9HbYMI3d", + "outputId": "daac2bc7-a480-4013-8e06-717bb8c1fa65" + }, + "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": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model1.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "id": "X269co2kMS4z" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred1 = model1.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "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": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dEi49xtEOtne", + "outputId": "60b53406-81c4-4531-cbb0-77b9ffde8890" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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": 23, + "metadata": { + "id": "o7K9r7EXWRjQ" + }, + "outputs": [], + "source": [ + "from sklearn.svm import SVR\n", + "from sklearn.model_selection import GridSearchCV" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "id": "0xQewd7QWTtq" + }, + "outputs": [], + "source": [ + "# Create an SVR model\n", + "model2 = SVR()\n", + "param_grid = {'C':[0.1, 1], 'epsilon':[0.01, 0.1, 0.5], 'kernel':['sigmoid']}\n", + "GV_SVR = GridSearchCV(model2, param_grid = param_grid, scoring = 'accuracy', n_jobs = -1)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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": 26, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 191 + }, + "id": "22SaCsQmfhgP", + "outputId": "7867aa8e-a7dc-49e4-d0aa-310423e9c696" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/sklearn/model_selection/_search.py:1103: UserWarning: One or more of the test scores are non-finite: [nan nan nan nan nan nan]\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "
GridSearchCV(estimator=SVR(), n_jobs=-1,\n",
+              "             param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n",
+              "                         'kernel': ['sigmoid']},\n",
+              "             scoring='accuracy')
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": [ + "GridSearchCV(estimator=SVR(), n_jobs=-1,\n", + " param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n", + " 'kernel': ['sigmoid']},\n", + " scoring='accuracy')" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "GV_SVR.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "id": "OQ1nL4oYfkAC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2 = GV_SVR.predict(X_test)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "U6-EppR68Jsu", + "outputId": "cfa67a46-ab8c-478d-c13e-fe884ef7ebae" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'C': 0.1, 'epsilon': 0.01, 'kernel': 'sigmoid'}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GV_SVR.best_params_" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "id": "nRYTwydsfpjb" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics with grid search\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": 30, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "656J5oz5fzq6", + "outputId": "c62c2076-2a10-43da-935d-c593c2d7be79" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 158.5191296342117\n", + "MAE: 127.61818666535594\n", + "MAPE: 2.6724681150799072\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 0.9970457902511078\n", + "Confusion Matrix:\n", + " [[738 2]\n", + " [ 0 675]]\n", + "Recall: 1.0\n", + "F1 Score: 0.9985207100591716\n" + ] + } + ], + "source": [ + "# Print the evaluation metrics with grid search\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": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "tIlc-wCE8Jsv", + "outputId": "fc6a39f5-b546-444e-a522-8bbcf889be14" + }, + "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": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#fitting without grid search\n", + "model2.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "id": "f3u1h6Dk8Jsv" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2_1 = model2.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "F-NgJx2d8Jsv" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics without grid search\n", + "rmse2_1 = np.sqrt(mean_squared_error(y_test, pred2_1))\n", + "mae2_1 = mean_absolute_error(y_test, pred2_1)\n", + "mape2_1 = mean_absolute_percentage_error(y_test, pred2_1)\n", + "accuracy2_1 = accuracy_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "precision2_1 = precision_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "confusion2_1 = confusion_matrix(y_test > pred2_1, y_test > pred2_1.round())\n", + "recall2_1 = recall_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "f12_1 = f1_score(y_test > pred2_1, y_test > pred2_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_BB1EERE8Jsv", + "outputId": "11c94daf-d2db-4447-a5b9-b753e648b56c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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 without grid search\n", + "print(\"RMSE:\", rmse2_1)\n", + "print(\"MAE:\", mae2_1)\n", + "print(\"MAPE:\", mape2_1)\n", + "print(\"Accuracy:\", accuracy2_1)\n", + "print(\"Precision:\", precision2_1)\n", + "print(\"Confusion Matrix:\\n\", confusion2_1)\n", + "print(\"Recall:\", recall2_1)\n", + "print(\"F1 Score:\", f12_1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hcIfVMWdgcKt" + }, + "source": [ + "## 3. Random Forest" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "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": 36, + "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": 37, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "fF002Yepgk55", + "outputId": "4ff3a76e-04be-452e-8927-a7739bc306fb" + }, + "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": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model3.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "id": "8nRU_pzEgnCt" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred3 = model3.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "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": 40, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8pPzsCY1g305", + "outputId": "bc5eeab1-5d75-4be3-b26f-70c4fe533a47" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.2227552163641375\n", + "MAE: 1.2618627107561857\n", + "MAPE: 0.008011786688180922\n", + "Accuracy: 0.8537102473498234\n", + "Precision: 0.8575624082232012\n", + "Confusion Matrix:\n", + " [[624 97]\n", + " [110 584]]\n", + "Recall: 0.8414985590778098\n", + "F1 Score: 0.8494545454545455\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": 41, + "metadata": { + "id": "TI8idoxOg6jF" + }, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "# Create an XGBoost model\n", + "model4 = xgb.XGBRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "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": 43, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + }, + "id": "2gpbDxshhexj", + "outputId": "2cdbacc9-909a-43c9-cf04-cc4f70015e43" + }, + "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.
" + ], + "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": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model4.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "id": "Jj9DXdUPhh9V" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred4 = model4.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "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": 46, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qpnLeFyZhwB3", + "outputId": "1637d31a-e785-4414-dfe5-f7fa4fd282e9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\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": 47, + "metadata": { + "id": "DyhhdlZAhx94" + }, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "# Create an XGBoost model\n", + "model5 = xgb.XGBRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "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": 49, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + }, + "id": "RAIwxIp5iH9Z", + "outputId": "cc66ca33-11cc-4e5d-e7e1-f39b41466c28" + }, + "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.
" + ], + "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": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model5.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "id": "XmJds5fYiKT3" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred5 = model5.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "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": 52, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7IkE-RAmiWNo", + "outputId": "d69e485e-0462-409a-f9aa-59e5ca7c4bef" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\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": 53, + "metadata": { + "id": "HNq66cXRiYPJ" + }, + "outputs": [], + "source": [ + "from sklearn.ensemble import AdaBoostRegressor\n", + "# Create an AdaBoost model\n", + "model6 = AdaBoostRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "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": 55, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "P0oB5wjQivBr", + "outputId": "827e151d-e13e-4924-ef50-c5e1d13f6161" + }, + "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": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model6.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "id": "Bf1m5ukOi2VM" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred6 = model6.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "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": 58, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BsajWJGBjC80", + "outputId": "076cff01-ff0a-449b-d86c-df9f1363fecd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 10.504089217159294\n", + "MAE: 8.746118088217727\n", + "MAPE: 0.20512996006219347\n", + "Accuracy: 0.9943462897526502\n", + "Precision: 0.9939879759519038\n", + "Confusion Matrix:\n", + " [[911 3]\n", + " [ 5 496]]\n", + "Recall: 0.9900199600798403\n", + "F1 Score: 0.992\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": 59, + "metadata": { + "id": "23DZ2biSjF9a" + }, + "outputs": [], + "source": [ + "from sklearn.tree import DecisionTreeRegressor\n", + "# Create a Decision Tree model\n", + "model7 = DecisionTreeRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "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": 61, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "6mQEQf-ykc9F", + "outputId": "78dc7661-96e4-46af-b65a-c705018c58a3" + }, + "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": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model7.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "id": "BFJ9q_tvkgRC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred7 = model7.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "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": 64, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AnZXMYb8kooV", + "outputId": "93527d46-9366-49ce-b895-7a12ae87f742" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 3.136698143876249\n", + "MAE: 1.6416165234385407\n", + "MAPE: 0.010224639636659394\n", + "Accuracy: 0.8600706713780919\n", + "Precision: 0.8687845303867403\n", + "Confusion Matrix:\n", + " [[588 95]\n", + " [103 629]]\n", + "Recall: 0.8592896174863388\n", + "F1 Score: 0.864010989010989\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": 65, + "metadata": { + "id": "JVDSed7yktFY" + }, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsRegressor\n", + "from sklearn.model_selection import GridSearchCV\n", + "# Create a KNN model\n", + "model8 = KNeighborsRegressor()\n", + "param_grid = {'n_neighbors':[3, 5, 7, 9, 11, 15, 20, 23, 25, 30, 60, 70, 150]}\n", + "GV_KNN = GridSearchCV(model8, param_grid, cv=5, scoring='neg_mean_squared_error')" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "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": 67, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "9fn64o-ZlBka", + "outputId": "bc388b6b-cf36-4a91-eb52-8fe7a861308b" + }, + "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": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model8.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "id": "hbfbbjcSlDn7" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred8 = model8.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "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": 70, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IPoDRkcMlMAr", + "outputId": "5aee40b5-c7c1-4fad-f419-37d08a504146" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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": "code", + "execution_count": 71, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "5qW5X1Xe8Js7", + "outputId": "6abf26c0-873e-42e2-9aab-c2bd93a5ae84" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
KNeighborsRegressor(n_neighbors=150)
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(n_neighbors=150)" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GV_KNN.fit(X_train, y_train)\n", + "pred8_1 = GV_KNN.predict(X_test)\n", + "GV_KNN.best_estimator_" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "id": "voNSUlHk8Js7" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics with grid search\n", + "rmse8_1 = np.sqrt(mean_squared_error(y_test, pred8_1))\n", + "mae8_1 = mean_absolute_error(y_test, pred8_1)\n", + "mape8_1 = mean_absolute_percentage_error(y_test, pred8_1)\n", + "accuracy8_1 = accuracy_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "precision8_1 = precision_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "confusion8_1 = confusion_matrix(y_test > pred8_1, y_test > pred8_1.round())\n", + "recall8_1 = recall_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "f18_1 = f1_score(y_test > pred8_1, y_test > pred8_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VMnot_fX8Js8", + "outputId": "71c354e6-71e6-4d31-ee2f-2a03f65d24fe" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 137.20694663964096\n", + "MAE: 101.08872313712585\n", + "MAPE: 1.7323302969000884\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 1.0\n", + "Confusion Matrix:\n", + " [[865 0]\n", + " [ 2 548]]\n", + "Recall: 0.9963636363636363\n", + "F1 Score: 0.9981785063752276\n" + ] + } + ], + "source": [ + "# Print the evaluation metrics with grid search\n", + "print(\"RMSE:\", rmse8_1)\n", + "print(\"MAE:\", mae8_1)\n", + "print(\"MAPE:\", mape8_1)\n", + "print(\"Accuracy:\", accuracy8_1)\n", + "print(\"Precision:\", precision8_1)\n", + "print(\"Confusion Matrix:\\n\", confusion8_1)\n", + "print(\"Recall:\", recall8_1)\n", + "print(\"F1 Score:\", f18_1)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 524 + }, + "id": "Swebseye8Js8", + "outputId": "c501acf3-094c-4ba6-f0d7-1a0901cdb2e0" + }, + "outputs": [ + { + "data": { + "image/png": "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umw2mxYtWhRynf7vOQSobvLaa69p7ty5mj9/vrZv365Ro0YpNzdXlZWVZpcWdTZv3qz8/Hxt3bpVhYWFamlp0eTJk1VfXx9sM2fOHK1Zs0ZvvPGGNm/erPLyct10000mVh193n//ff32t7/V5ZdfHnKdvu85X331la6++mrFxsbqrbfeUmlpqX71q1/pvPPOC7Z55pln9MILL2jp0qV67733lJiYqNzcXDU2NppYeXT45S9/qSVLlmjx4sX6+OOP9ctf/lLPPPOMfvOb3wTb0P/dp76+XqNGjdKLL77Y4f1w+vr222/X7t27VVhYqLVr1+qdd97R/fff31sfIaKdrv+PHTum7du36/HHH9f27dv1xz/+UXv37tX3vve9kHb0/9k70+//gNWrV2vr1q0aPHhwu3v0fw8y0C3Gjx9v5OfnB9/7fD5j8ODBxsKFC02sqm+orKw0JBmbN282DMMwampqjNjYWOONN94Itvn4448NSUZRUZFZZUaVuro64+KLLzYKCwuNb33rW8aDDz5oGAZ939PmzZtnfPOb3+z0vt/vN9LT041nn302eK2mpsZwuVzGH/7wh94oMarl5eUZ99xzT8i1m266ybj99tsNw6D/e5IkY/Xq1cH34fR1aWmpIcl4//33g23eeustw2azGV988UWv1R4NTu3/jhQXFxuSjAMHDhiGQf93p876//PPPzfOP/98o6SkxLjggguM5557LniP/u9ZjEB1g+bmZm3btk2TJk0KXrPb7Zo0aZKKiopMrKxvqK2tlSSlpqZKkrZt26aWlpaQn8ell16qoUOH8vPoJvn5+crLywvpY4m+72l//vOfNXbsWP3gBz9QWlqarrzySr388svB+2VlZfJ4PCH9n5KSogkTJtD/3eAb3/iG1q9fr08++USS9NFHH+ndd9/Vd7/7XUn0f28Kp6+LiorUr18/jR07Nthm0qRJstvteu+993q95mhXW1srm82mfv36SaL/e5rf79edd96phx56SF//+tfb3af/e1aM2QVEgyNHjsjn82nQoEEh1wcNGqQ9e/aYVFXf4Pf7NXv2bF199dUaMWKEJMnj8cjpdAb/EA8YNGiQPB6PCVVGl1WrVmn79u16//33292j73vW/v37tWTJEs2dO1c/+clP9P777+uBBx6Q0+nUtGnTgn3c0Z9F9P+5e+SRR+T1enXppZfK4XDI5/PpF7/4hW6//XZJov97UTh97fF4lJaWFnI/JiZGqamp/Dy6WWNjo+bNm6fbbrtNbrdbEv3f0375y18qJiZGDzzwQIf36f+eRYBCRMvPz1dJSYneffdds0vpEw4dOqQHH3xQhYWFiouLM7ucPsfv92vs2LF66qmnJElXXnmlSkpKtHTpUk2bNs3k6qLf66+/rldffVUrV67U17/+de3YsUOzZ8/W4MGD6X/0WS0tLfqXf/kXGYahJUuWmF1On7Bt2zY9//zz2r59u2w2m9nl9ElM4esGAwYMkMPhaLfT2OHDh5Wenm5SVdFv5syZWrt2rTZu3KghQ4YEr6enp6u5uVk1NTUh7fl5nLtt27apsrJSo0ePVkxMjGJiYrR582a98MILiomJ0aBBg+j7HpSRkaHs7OyQa5dddpkOHjwoScE+5s+invHQQw/pkUce0a233qqRI0fqzjvv1Jw5c7Rw4UJJ9H9vCqev09PT223k1Nraqurqan4e3SQQng4cOKDCwsLg6JNE//ekv/3tb6qsrNTQoUODfxcfOHBA//7v/65hw4ZJov97GgGqGzidTo0ZM0br168PXvP7/Vq/fr1ycnJMrCw6GYahmTNnavXq1dqwYYOysrJC7o8ZM0axsbEhP4+9e/fq4MGD/DzO0be//W3t2rVLO3bsCL7Gjh2r22+/Pfhr+r7nXH311e227P/kk090wQUXSJKysrKUnp4e0v9er1fvvfce/d8Njh07Jrs99K9Nh8Mhv98vif7vTeH0dU5OjmpqarRt27Zgmw0bNsjv92vChAm9XnO0CYSnTz/9VH/961/Vv3//kPv0f8+58847tXPnzpC/iwcPHqyHHnpIb7/9tiT6v8eZvYtFtFi1apXhcrmM5cuXG6Wlpcb9999v9OvXz/B4PGaXFnVmzJhhpKSkGJs2bTIqKiqCr2PHjgXbTJ8+3Rg6dKixYcMG44MPPjBycnKMnJwcE6uOXm134TMM+r4nFRcXGzExMcYvfvEL49NPPzVeffVVIyEhwVixYkWwzdNPP23069fPePPNN42dO3caN954o5GVlWU0NDSYWHl0mDZtmnH++ecba9euNcrKyow//vGPxoABA4yHH3442Ib+7z51dXXGhx9+aHz44YeGJOPXv/618eGHHwZ3eQunr6dMmWJceeWVxnvvvWe8++67xsUXX2zcdtttZn2kiHK6/m9ubja+973vGUOGDDF27NgR8ndxU1NT8Bn0/9k70+//U526C59h0P89iQDVjX7zm98YQ4cONZxOpzF+/Hhj69atZpcUlSR1+Fq2bFmwTUNDg/Fv//ZvxnnnnWckJCQY//zP/2xUVFSYV3QUOzVA0fc9a82aNcaIESMMl8tlXHrppcbvfve7kPt+v994/PHHjUGDBhkul8v49re/bezdu9ekaqOL1+s1HnzwQWPo0KFGXFycceGFFxo//elPQ/7BSP93n40bN3b4Z/20adMMwwivr7/88kvjtttuM5KSkgy3223cfffdRl1dnQmfJvKcrv/Lyso6/bt448aNwWfQ/2fvTL//T9VRgKL/e47NMNocoQ4AAAAA6BRroAAAAAAgTAQoAAAAAAgTAQoAAAAAwkSAAgAAAIAwEaAAAAAAIEwEKAAAAAAIEwEKAAAAAMJEgAIAAACAMBGgAAAAACBMBCgAAAAACBMBCgAAAADC9P8D/+8PbuAfWTAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "results = GV_KNN.cv_results_\n", + "mse = -results['mean_test_score']\n", + "k_values = results['param_n_neighbors'].data\n", + "plt.figure(figsize=(10, 6))\n", + "plt.plot(k_values, mse, marker='o', linestyle='-')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3aOBO56I8Js8" + }, + "source": [ + "The code shows that the elboq point occurs around n=30." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "X5XtlzMXljps" + }, + "source": [ + "## 9. Artificial Neural Networks (ANN)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "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": 76, + "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": 77, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vd1fDjQiltP4", + "outputId": "54545c64-073b-41c5-d03a-cc9cbff204f2" + }, + "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": 78, + "metadata": { + "id": "ZIf94WLMlv04" + }, + "outputs": [], + "source": [ + "# Compile the model\n", + "model9.compile(loss='mean_squared_error', optimizer='adam')" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FX5DTKqslxWf", + "outputId": "d2353bcd-1508-469b-e4a4-9344af25a2cc" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 79, + "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": 80, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "OVW2qpNsmGVq", + "outputId": "36e4620e-9823-4b12-d6d2-509c0bcf2a88" + }, + "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" + ] + } + ], + "source": [ + "# Make predictions on the test set\n", + "pred9 = model9.predict(X_test_scaled).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "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": 82, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5zuwkC1emmh3", + "outputId": "3154af15-1dba-4edc-9b4e-f012f6ff6886" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.7525331773064208\n", + "MAE: 1.7070852219826735\n", + "MAPE: 0.011166669166884299\n", + "Accuracy: 0.901060070671378\n", + "Precision: 0.9446640316205533\n", + "Confusion Matrix:\n", + " [[558 42]\n", + " [ 98 717]]\n", + "Recall: 0.8797546012269939\n", + "F1 Score: 0.9110546378653113\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": 83, + "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": 84, + "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": 85, + "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": 86, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "r066pVYpnXH5", + "outputId": "faddb972-58cc-43a7-eb04-4829ec65f019" + }, + "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": [ + "# 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": 87, + "metadata": { + "id": "YpSfHu6gov35" + }, + "outputs": [], + "source": [ + "# Compile the model\n", + "model.compile(loss='mean_squared_error', optimizer='adam')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0vHjcluaoxzP", + "outputId": "8ca3e888-84d1-4c79-e045-cfa9d3e76d5f" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 88, + "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": 89, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gEE06_TjozYv", + "outputId": "5a39a4df-0a56-45f5-ac4b-c2b00f0f15d0" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m44/44\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step\n" + ] + } + ], + "source": [ + "# Make predictions on the test set\n", + "y_pred = model.predict(X_test_reshaped).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "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": 91, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "i_6-UUDhpi0c", + "outputId": "af51da10-aedc-479d-80ca-96880408422c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 11.43451426022395\n", + "MAE: 9.387460991819042\n", + "MAPE: 0.1689158970124316\n", + "Accuracy: 0.9957325746799431\n", + "Precision: 0.9965277777777778\n", + "Recall: 0.9930795847750865\n", + "F1 Score: 0.9948006932409013\n", + "Confusion Matrix:\n", + " [[826 2]\n", + " [ 4 574]]\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", + "execution_count": 92, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "qpWPtph9CGip", + "outputId": "746d4c8b-bd76-4873-d9b3-b21e078b15bd" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABE9klEQVR4nO3deXhM9+LH8c8kZBFJrNmKiKWiqP0GRauClqqtiqvXllu9FbXVbWmLul2Utm6L4rYlVENUieqGNIq217XH0qo1liJBySIIkvP7w2N+HQkyMjGT0/freeZ5mu85c84nyan55DvnnLEYhmEIAADApNycHQAAAKAoUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAOM2rr74qi8WiM2fOFPm+Vq5cqQYNGsjLy0sWi0VpaWlFvs/ibN68ebJYLDp8+LCzowCFRtkBisD1F4o/PgICAtSmTRt9++23dz3Pl19+qc6dOyswMFAeHh4qV66cWrdurXfffVcZGRl3Pc/d9vvvv+vJJ5+Ut7e3PvjgAy1YsEA+Pj63fd7MmTNlsVgUERFxF1ICKColnB0AMLN//etfCgsLk2EYSk1N1bx589SxY0d9+eWXeuyxx4p8/7m5uYqKitK8efNUr149DRkyRJUrV1ZmZqY2bNigV155Rd98840SExOLPIszbd68WZmZmXrttdcUGRlZ4OfFxsaqatWq2rRpkw4cOKAaNWoUYUrX8re//U29e/eWp6ens6MAhUbZAYrQo48+qiZNmli/joqKUmBgoBYtWuSQspObm6vLly/Ly8sr3+VTpkzRvHnzNHLkSL377ruyWCzWZcOHD9fJkyf1ySefFGofxcGpU6ckSWXKlCnwc5KTk/Xf//5Xy5Yt0zPPPKPY2FhNmDChiBIWTlZWVoFmquzh7u4ud3d3h24TcBbexgLuojJlysjb21slStj+nfHOO++oRYsWKl++vLy9vdW4cWN9/vnneZ5vsVg0dOhQxcbGqk6dOvL09NTKlSvz3deFCxc0efJk1alTR2+//bZN0bkuODhYL774YoH3cSc5a9WqJS8vLzVu3Fjr16/PN2taWpoGDBigMmXKyN/fXwMHDtSFCxfy/yHeYMmSJWrcuLG8vb1VoUIFPfXUUzp+/Lh1+UMPPaT+/ftLkpo2bSqLxaIBAwbcdruxsbEqW7asOnXqpCeeeEKxsbE3zT5y5EhVrVpVnp6eqlSpkvr162dzHtKlS5f06quv6t5775WXl5eCg4PVvXt3HTx4UJK0du1aWSwWrV271mbbhw8flsVi0bx586xjAwYMUOnSpXXw4EF17NhRvr6+6tu3ryTphx9+UM+ePVWlShV5enqqcuXKGjlypC5evJgn96+//qonn3xSFStWlLe3t2rVqqWXX37Zuvxm5+x8++23atWqlXx8fOTr66tOnTrp559/tlknJSVFAwcOVKVKleTp6ang4GB16dKF83/gNMzsAEUoPT1dZ86ckWEYOnXqlKZPn67z58/rqaeeslnv/fff1+OPP66+ffvq8uXLiouLU8+ePfXVV1+pU6dONuuuWbNGn332mYYOHaoKFSqoatWq+e77xx9/VFpamkaPHm33X+g324c9OdetW6fFixdr2LBh8vT01MyZM/XII49o06ZNqlu3rs26Tz75pMLCwjRp0iRt27ZNH3/8sQICAjR58uRb5pw3b54GDhyopk2batKkSUpNTdX777+vn376Sdu3b1eZMmX08ssvq1atWvrwww+tbytWr179tj+D2NhYde/eXR4eHurTp49mzZqlzZs3q2nTptZ1zp8/r1atWmnPnj0aNGiQGjVqpDNnzmjFihX67bffVKFCBeXk5Oixxx5TYmKievfureHDhyszM1MJCQnavXt3gbLc6OrVq+rQoYNatmypd955R6VKlZJ0rfhduHBBzz77rMqXL69NmzZp+vTp+u2337RkyRLr83fu3KlWrVqpZMmSGjx4sKpWraqDBw/qyy+/1BtvvHHT/S5YsED9+/dXhw4dNHnyZF24cEGzZs1Sy5YttX37dutx0qNHD/3888967rnnVLVqVZ06dUoJCQk6evToTY9XoEgZABwuJibGkJTn4enpacybNy/P+hcuXLD5+vLly0bdunWNhx9+2GZckuHm5mb8/PPPt83w/vvvG5KM5cuX24xfvXrVOH36tM0jNze3QPuwJ6ckY8uWLdaxI0eOGF5eXka3bt2sYxMmTDAkGYMGDbJ5frdu3Yzy5cvf8vu7fPmyERAQYNStW9e4ePGidfyrr74yJBnjx4+3jl3/fWzevPmW27xuy5YthiQjISHBMAzDyM3NNSpVqmQMHz7cZr3x48cbkoxly5bl2cb1n+nc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ffvtt6pYsaL279+vsmXLWteZMmWKpk2bpvnz5yssLEzjxo1Thw4d9MsvvzDbBAAACvZxEWFhYQXbmMWiQ4cOFTrUdWPGjNFPP/2kH374Id/lhmEoJCREzz//vEaPHi1JSk9PV2BgoObNm6fevXsXaD98XMTdVVxvZ06uvIrjMeaquSSOsRu5ai6JY8xexeLjIm48T+duWbFihTp06KCePXtq3bp1uueeezRkyBA9/fTT1lwpKSmKjIy0Psff318RERHasGHDTctOdna2srOzrV9nZGQU7TcCAACcxmH32SkKhw4d0qxZs1SzZk2tWrVKzz77rIYNG6b58+dLklJSUiRdu8fPHwUGBlqX5WfSpEny9/e3PipXrlx03wQAAHAqu6/GkqTffvtNK1as0NGjR3X58mWbZVOnTnVIMEnKzc1VkyZN9Oabb0qSGjZsqN27d2v27Nnq37//HW937NixGjVqlPXrjIwMCg8AACZld9lJTEzU448/rmrVqunXX39V3bp1dfjwYRmGoUaNGjk0XHBwsO677z6bsdq1a2vp0qWSpKCgIElSamqqgoODreukpqbe8gaHnp6e8vT0dGhWAADgmux+G2vs2LEaPXq0du3aJS8vLy1dulTHjh3Tgw8+qJ49ezo03AMPPJDnIyj27dun0NBQSddOnA4KClJiYqJ1eUZGhjZu3KjmzZs7NAsAACimDDuVLl3aOHDggGEYhlGmTBlj9+7dhmEYRlJSkhEaGmrv5m5p06ZNRokSJYw33njD2L9/vxEbG2uUKlXK+PTTT63rvPXWW0aZMmWML774wti5c6fRpUsXIywszLh48WKB95Oenm5IMtLT0x2a3zAM49o56M55FMdczsxGrj/HMeaquTjGik8ujjHH57pTBX39tvttLB8fH+t5OsHBwTp48KDq1KkjSTpz5owje5iaNm2q+Ph4jR07Vv/6178UFham9957T3379rWu88ILLygrK0uDBw9WWlqaWrZsqZUrV3KPHQAAIKmA99n5o65du6pTp056+umnNXr0aH3xxRcaMGCAli1bprJly+q7774rqqxFhvvs3F23O+Jc9T4Q5MqrOB5jrppL4hi7kavmkjjG7GVf0yg4h95nR5LOnj2rcuXKaerUqTp//rwkaeLEiTp//rwWL16smjVrOvRKLAAAAEcocNkJCQlR165dFRUVpXbt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mze/23EBAIALcumZnejoaC1cuFBffPGFfH19refh+Pv7y9vbW/7+/oqKitKoUaNUrlw5+fn56bnnnlPz5s0LfCUWAAAwN5cuO7NmzZIkPfTQQzbjMTExGjBggCTp3//+t9zc3NSjRw9lZ2erQ4cOmjlz5l1OCgAAXFWxus9OUeE+O3dXcb0PBLnyKo7HmKvmkjjGbuSquSSOMXtxnx0AAIAiRNkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmZpqy88EHH6hq1ary8vJSRESENm3a5OxIAADABZii7CxevFijRo3ShAkTtG3bNtWvX18dOnTQqVOnnB0NAAA4mSnKztSpU/X0009r4MCBuu+++zR79myVKlVKc+fOdXY0AADgZMW+7Fy+fFlbt25VZGSkdczNzU2RkZHasGGDE5MBAABXUMLZAQrrzJkzysnJUWBgoM14YGCgfv3113yfk52drezsbOvX6enpkqSMjIyiC+oErvrtkMs+rppLct1s5LIPueznqtn+bLmuv24bhnHL9Yp92bkTkyZN0sSJE/OMV65c2Qlpio6/v7MT5I9c9nHVXJLrZiOXfchlP1fN9mfNlZmZKf9b7KTYl50KFSrI3d1dqampNuOpqakKCgrK9zljx47VqFGjrF/n5ubq7NmzKl++vCwWS5HmLaiMjAxVrlxZx44dk5+fn7Pj2HDVbOSyj6vmklw3G7nsQy77uWo2V81lGIYyMzMVEhJyy/WKfdnx8PBQ48aNlZiYqK5du0q6Vl4S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y5fl7u6uoKAgl/l8KgD/j7ID/AmcP39eixcv1rPPPqtOnTpp3rx5edb58ssv1bRpU3l5ealChQrq1q2bdVl2drZefPFFVa5cWZ6enqpRo4bmzJkjSZo3b57KlCljs63ly5fLYrFYv3711VfVoEEDffzxxwoLC5OXl5ckaeXKlWrZsqXKlCmj8uXL67HHHtPBgwdttvXbb7+pT58+KleunHx8fNSkSRNt3LhRhw8flpubm7Zs2WKz/nvvvafQ0NB8P+n6qaee0sWLF7V06VKb8eTkZK1du1ZRUVE6ePCgunTposDAQJUuXVpNmzbVd999Z7N+1apV9dprr6lfv37y8/PT4MGD87yNlZOTo6ioKIWFhcnb21u1atXS+++/n89vR5o4caIqVqwoPz8//eMf/7hlGczOztbo0aN1zz33yMfHRxEREVq7dq11+ZEjR9S5c2eVLVtWPj4+qlOnjr755pubbg/4M6DsAH8Cn332mcLDw1WrVi099dRTmjt3rv54i62vv/5a3bp1U8eOHbV9+3YlJibqL3/5i3V5v379tGjRIk2bNk179uzRf/7zH7vvOnvgwAEtXbpUy5YtsxaCrKwsjRo1Slu2bFFiYqLc3NzUrVs3a1E5f/68HnzwQR0/flwrVqzQjh079MILLyg3N1dVq1ZVZGSkYmJibPYTExOjAQMGyM0t7z9vFSpUUJcuXTR37lyb8Xnz5qlSpUpq3769zp8/r44dOyoxMVHbt2/XI488os6dO+vo0aM2z3nnnXdUv359bd++XePGjcuzr9zcXFWqVElLlizRL7/8ovHjx+ull17SZ599ZrNeYmKi9uzZo7Vr12rRokVatmyZJk6ceNOf49ChQ7VhwwbFxcVp586d6tmzpx555BHt379fkhQdHa3s7GytX79eu3bt0uTJk7lDMODEDyEFcJe0aNHCeO+99wzDMIwrV64YFSpUML7//nvr8ubNmxt9+/bN97l79+41JBkJCQn5Lo+JiTH8/f1txuLj440//vMyYcIEo2TJksapU6dumfP06dOGJGPXrl2GYRjGf/7zH8PX19f4/fff811/8eLFRtmyZY1Lly4ZhmEYW7duNSwWi5GcnHzTfaxcudKwWCzGoUOHDMO49inOoaGhxiuvvHLT59SpU8eYPn269evQ0FCja9euNuskJycbkozt27ffdDvR0dFGjx49rF/379/fKFeunJGVlWUdmzVrllG6dGkjJyfHMAzbT6Q/cuSI4e7ubhw/ftxmu23btjXGjh1rGIZh1KtXz3j11VdvmgH4M2JmBzC5vXv3atOmTerTp48kqUSJEurVq5f1bShJSkpKUtu2bfN9flJSktzd3fXggw8WKkdoaKgqVqxoM7Z//3716dNH1apVk5+fn6pWrSpJ1lmUpKQkNWzYUOXKlct3m127dpW7u7vi4+MlXZuhadOmjXU7+WnXrp0qVapknRFKTEzU0aNHNXDgQEnXZpNGjx6t2rVrq0yZMipdurT27NmTZ2anSZMmt/2eP/jgAzVu3FgVK1ZU6dKl9eGHH+bZTv369VWqVCnr182bN9f58+d17NixPNvbtWuXcnJydO+999p8rtO6deusb/8NGzZMr7/+uh544AFNmDBBO3fuvG1OwOwoO4DJzZkzR1evXlVISIhKlCihEiVKaNasWVq6dKnS09MlSd7e3jd9/q2WSZKbm5vNW2KSdOXKlTzr+fj45Bnr3Lmzzp49q48++kgbN27Uxo0bJf3/Ccy327eHh4f69eunmJgYXb58WQsXLtSgQYNum3fAgAGaP3++cnNzFRMTozZt2qhatWqSpNGjRys+Pl5vvvmmfvjhByUlJalevXp5zqPJ7/v5o7i4OI0ePVpRUVFavXq1kpKSNHDgwEKdnH3+/Hm5u7tr69atSkpKsj727NljPR/o73//uw4dOqS//e1v2rVrl5o0aaLp06ff8T4BM6DsACZ29epVffLJJ3r33XdtXhx37NihkJAQLVq0SJJ0//33KzExMd9t1KtXT7m5uVq3bl2+yytWrKjMzExlZWVZxwpyr5nff/9de/fu1SuvvKK2bduqdu3aOnfunM06999/v5KSknT27Nmbbufvf/+7vvvuO82cOVNXr15V9+7db7vvgQMH6tixY1q2bJni4+MVFRVlXfbTTz9pwIAB6tatm+rVq6egoCAdPnz4ttu80U8//aQWLVpoyJAhatiwoWrUqJHn5GtJ2rFjh83VYf/73/9UunRpVa5cOc+6DRs2VE5Ojk6dOqUaNWrYPIKCgqzrVa5cWf/4xz+0bNkyPf/88/roo4/szg+YCWUHMLGvvvpK586dU1RUlOrWrWvz6NGjh/WtrAkTJmjRokWaMGGC9uzZYz2xVbp25VH//v01aNAgLV++3Hrl0vUTbSMiIlSqVCm99NJLOnjwoBYuXJjv1V43Klu2rMqXL68PP/xQBw4c0Jo1azRq1Cibdfr06aOgoCB17dpVP/30kw4dOqSlS5dqw4YN1nVq166tZs2a6cUXX1SfPn1uOxskSWFhYXr44Yc1ePBgeXp62hSkmjVrWk+i3rFjh/7617/me2XX7dSsWVNbtmzRqlWrtG/fPo0bN06bN2/Os97ly5cVFRWlX375Rd98840mTJigoUOH5nuC9b333qu+ffuqX79+WrZsmZKTk7Vp0yZNmjRJX3/9tSRpxIgRWrVqlZKTk7Vt2zZ9//33ql27tt35ATOh7AAmNmfOHEVGRsrf3z/Psh49emjLli3auXOnHnroIS1ZskQrVqxQgwYN9PDDD2vTpk3WdWfNmqUnnnhCQ4YMUXh4uJ5++mnrTE65cuX06aef6ptvvlG9evW0aNEivfrqq7fN5ubmpri4OG3dulV169bVyJEj9fbbb9us4+HhodWrVysgIEAdO3ZUvXr19NZbb8nd3d1mvaioKF2+fPm2b2Hd+Jxz587pr3/9q/VSeEmaOnWqypYtqxYtWqhz587q0KGDGjVqVODtXvfMM8+oe/fu6tWrlyIiIvT7779ryJAhedZr27atatasqdatW6tXr156/PHHb/nzi4mJUb9+/fT888+rVq1a6tq1qzZv3qwqVapIunbJe3R0tGrXrq1HHnlE9957r2bOnGl3fsBMLMaNb7YDQDHz2muvacmSJZyMCyBfzOwAKLbOnz+v3bt3a8aMGXruueecHQeAi6LsACi2hg4dqsaNG+uhhx6y6y0sAH8uvI0FAABMjZkdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgav8H/GzqtXu8YtUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, accuracy2_1*100, accuracy3*100, accuracy4*100, accuracy5*100, accuracy6*100, accuracy7*100, accuracy8*100, accuracy8_1*100, accuracy9*100, accuracy10*100]\n", + "\n", + "# List of corresponding labels for each accuracy\n", + "labels = ['1', '2', '2_1', '3', '4', '5', '6', '7', '8', '8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "RFaaCNH6Cfoa", + "outputId": "e624dad4-1663-4a68-90ec-b569e5b0b46a" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIKElEQVR4nO3dfVxUZf7/8fdwN+ANICh3BUpmqWlKoGZZ3lHepWmYeZPhzdpWWqmblbumZW2k3Wi5pNaWZGm2Vpq1SZqpVOIdhltmZqlpJmipIBoocP3+8Mv8HEEDBWY4vZ6Px3k8mutcc53PnDkO785cZ47NGGMEAABgUR6uLgAAAKAqEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAWM7jjz8um82mX3/9tcq3lZqaqtatW8vX11c2m01Hjx6t8m0CqBjCDlCDpKSkyGazOS0hISHq3Lmzli9fXu31fPjhh+rdu7dCQ0Pl4+OjoKAg3XjjjXr++eeVm5tb7fVUt99++00DBgyQn5+fkpOT9eabb6p27dpl9j37vfPy8tIll1yiYcOGaf/+/aX6d+rUSTabTU2aNClzvJUrVzrGevfdd53Wff311+rfv78aNmwoX19fXXLJJbrppps0a9Ysp36NGjUqdTyVLN27d7/AvQK4Hy9XFwCg4qZOnaro6GgZY5Sdna2UlBT17NlTH374oW655ZYq335xcbFGjhyplJQUtWzZUvfdd58iIyN17Ngxpaena9KkSfr444+1atWqKq/FlTZt2qRjx47pySefVHx8fLmeU/Le5efna/369UpJSdEXX3yhb775Rr6+vk59fX199cMPP2jjxo1q27at07oFCxbI19dX+fn5Tu3r1q1T586dFRUVpVGjRiksLEz79u3T+vXr9eKLL+r+++936t+6dWv97W9/K1VnREREuV4PUBMQdoAaqEePHoqLi3M8HjlypEJDQ/X2229XStgpLi7WyZMnS/3xLTF9+nSlpKRo3Lhxev7552Wz2RzrHnzwQR04cEDz58+/qG3UBAcPHpQkBQYGlvs5Z753f/nLX1S/fn1NmzZNy5Yt04ABA5z6Nm7cWIWFhXr77bedwk5+fr6WLFmiXr166b333nN6zj//+U8FBARo06ZNpeoqqfdMl1xyie68885y1w/URHyNBVhAYGCg/Pz85OXl/P8vzz33nK677joFBwfLz89PsbGxpb7ykCSbzaYxY8ZowYIFuuqqq2S325Wamlrmtk6cOKFp06bpqquu0rPPPusUdEqEh4frkUceKfc2LqTOK6+8Ur6+voqNjVVaWlqZtR49elTDhg1TYGCgAgICNHz4cJ04caLsnXiWxYsXKzY2Vn5+fqpfv77uvPNOp6+bOnXqpMTERElSmzZtZLPZNGzYsHKNfaYbbrhBkvTjjz+WuX7QoEF65513VFxc7Gj78MMPdeLEiVLhqGScq666qswAFhISUuH6ACsg7AA1UE5Ojn799VcdOnRI27Zt07333qu8vLxS/4f+4osvKiYmRlOnTtXTTz8tLy8v3X777frvf/9baszPPvtM48aN0x133KEXX3xRjRo1KnPbX3zxhY4ePapBgwbJ09OzQnWfaxsVqXPt2rUaO3as7rzzTk2dOlW//fabunfvrm+++aZU3wEDBujYsWNKSkrSgAEDlJKSoieeeOIP60xJSdGAAQPk6emppKQkjRo1Su+//746dOjgmID8j3/8Q3fffbek019Nvfnmm/rrX/9aof0hSXv27JEk1atXr8z1gwcP1oEDB7RmzRpH28KFC9W1a9cyw0vDhg2VkZFR5v4oy6lTp/Trr7+WWn7//fcKvxbAbRkANca8efOMpFKL3W43KSkppfqfOHHC6fHJkydNixYtTJcuXZzaJRkPDw+zbdu2P6zhxRdfNJLM0qVLndoLCwvNoUOHnJbi4uJybaMidUoymzdvdrT99NNPxtfX1/Tr18/RNmXKFCPJjBgxwun5/fr1M8HBwed9fSdPnjQhISGmRYsW5vfff3e0f/TRR0aSmTx5sqOt5P3YtGnTecc8s++nn35qDh06ZPbt22feffdd06BBA2O3282+ffuc+nfs2NFcddVVxhhj4uLizMiRI40xxhw5csT4+PiYN954w6xevdpIMosXL3Y8b8WKFcbT09N4enqa9u3bm4cffth88skn5uTJk6VqatiwYZnHkySTlJT0h68JqCk4swPUQMnJyVq5cqVWrlypt956S507d9Zf/vIXvf/++079/Pz8HP995MgR5eTk6IYbbtCWLVtKjdmxY0c1b978D7ddcpVVnTp1nNq//vprNWjQwGn57bffyrWNitTZvn17xcbGOh5HRUXp1ltv1SeffKKioiKnvvfcc4/T4xtuuEG//fbbea8U27x5sw4ePKj77rvPaT5Rr1691LRp0zLPNlVEfHy8GjRooMjISPXv31+1a9fWsmXLdOmll57zOYMHD9b777+vkydP6t1335Wnp6f69etXZt+bbrpJ6enp6tOnj7Zu3arp06erW7duuuSSS7Rs2bJS/du1a+c4ls5cBg0adFGvE3AnTFAGaqC2bds6TVAeNGiQYmJiNGbMGN1yyy3y8fGRJH300Ud66qmnlJmZqYKCAkf/subZREdHl2vbdevWlSTl5eU5tV9++eVauXKlJGn+/Pl68803y72NitRZ1qXYV1xxhU6cOKFDhw4pLCzM0R4VFeXUr+SroiNHjsjf37/MWn766SdJ0pVXXllqXdOmTfXFF1+U+bzySk5O1hVXXKGcnBy9/vrrSktLk91uP+9zBg4cqIceekjLly/XggULdMsttzjeh7K0adPGEY62bt2qJUuWaMaMGerfv78yMzOdAmf9+vXLfSUZUFNxZgewAA8PD3Xu3FkHDhzQzp07JUmff/65+vTpI19fX7388sv6+OOPtXLlSg0ePFjGmFJjnHl25XyaNm0qSaXmhNSpU0fx8fGKj4/XZZddVuZzy9pGReusiHPNKbrYcS9G27ZtFR8fr4SEBC1btkwtWrTQ4MGDS4XHM4WHh6tTp056/vnnlZaWpsGDB5drWz4+PmrTpo2efvppzZ49W6dOndLixYsr66UANQZhB7CIwsJCSf//jMt7770nX19fffLJJxoxYoR69OhRKf8Hf8MNNyggIECLFi1yukLoQlW0zpIwd6bvv/9etWrVUoMGDS66noYNG0qSduzYUWrdjh07HOsrQ8kE6F9++UX/+te/ztt38ODB+vzzz+Xv76+ePXtWeFslZwIPHDhwQbUCNRlhB7CAU6dOacWKFfLx8VGzZs0knf5DarPZnOax7NmzR0uXLr2obdWqVUsPP/ywvvnmGz366KNlniWpyJmTitaZnp7uNJdn3759+uCDD3TzzTdX+OqwssTFxSkkJERz5sxx+kpt+fLl2r59u3r16nXR2zhTp06d1LZtW82cObPUDwSeqX///poyZYpefvllx9eUZVm9enWZ+//jjz+WVPbXc4DVMWcHqIGWL1+u7777TtLpH4pbuHChdu7cqUcffdQxF6VXr1564YUX1L17dw0ePFgHDx5UcnKyLr/8cv3vf/+7qO0/+uij2r59u5599lmtWLFCCQkJuvTSS3XkyBFt2bJFixcvVkhISLl+MLCidbZo0ULdunXTAw88ILvdrpdfflmSynVJeXl4e3tr2rRpGj58uDp27KhBgwYpOzvbcan8uHHjKmU7Z5owYYJuv/12paSklJpUXSIgIECPP/74H451//3368SJE+rXr5+aNm2qkydPat26dXrnnXfUqFEjDR8+3Kn//v379dZbb5Uap06dOurbt++FvBzA/bjyUjAAFVPWpee+vr6mdevWZvbs2U6XehtjzGuvvWaaNGli7Ha7adq0qZk3b57jsuwzSTKjR4+ucD1LliwxPXv2NA0aNDBeXl4mMDDQdOjQwTz77LPm6NGj5d5GRet86623HP1jYmLM6tWrnfqVPPfQoUNO7SX7b/fu3X/42t555x0TExNj7Ha7CQoKMkOGDDE///xzmeNV5NLzsvoWFRWZxo0bm8aNG5vCwkJjjPOl5+dS1qXny5cvNyNGjDBNmzY1derUMT4+Pubyyy83999/v8nOznZ6/vkuPW/YsOEfviagprAZ48KZegBQATabTaNHj/7D+S0AcCbm7AAAAEsj7AAAAEsj7AAAAEvjaiwANQZTDAFcCM7sAAAASyPsAAAAS+NrLEnFxcX65ZdfVLdu3TJvPAgAANyPMUbHjh1TRESEPDzOff6GsCPpl19+UWRkpKvLAAAAF2Dfvn269NJLz7mesCOpbt26kk7vrJKf2gcAAO4tNzdXkZGRjr/j50LYkRxfXfn7+xN2AACoYf5oCgoTlAEAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKW5NOykpaWpd+/eioiIkM1m09KlS0v12b59u/r06aOAgADVrl1bbdq00d69ex3r8/PzNXr0aAUHB6tOnTpKSEhQdnZ2Nb4KAADgzlwado4fP65WrVopOTm5zPU//vijOnTooKZNm2rNmjX63//+p8cee0y+vr6OPuPGjdOHH36oxYsXa+3atfrll1902223VddLAAAAbs5mjDGuLkI6/euHS5YsUd++fR1tAwcOlLe3t958880yn5OTk6MGDRpo4cKF6t+/vyTpu+++U7NmzZSenq5rr722XNvOzc1VQECAcnJy+AVlAABqiPL+/XbbOTvFxcX673//qyuuuELdunVTSEiI2rVr5/RVV0ZGhk6dOqX4+HhHW9OmTRUVFaX09PRzjl1QUKDc3FynBQAAWJPbhp2DBw8qLy9PzzzzjLp3764VK1aoX79+uu2227R27VpJUlZWlnx8fBQYGOj03NDQUGVlZZ1z7KSkJAUEBDgW7ngOAIB1uW3YKS4uliTdeuutGjdunFq3bq1HH31Ut9xyi+bMmXNRY0+cOFE5OTmOZd++fZVRMgAAcENue9fz+vXry8vLS82bN3dqb9asmb744gtJUlhYmE6ePKmjR486nd3Jzs5WWFjYOce22+2y2+1VUjcAAHAvbntmx8fHR23atNGOHTuc2r///ns1bNhQkhQbGytvb2+tWrXKsX7Hjh3au3ev2rdvX631AgAA9+TSMzt5eXn64YcfHI93796tzMxMBQUFKSoqShMmTNAdd9yhG2+8UZ07d1Zqaqo+/PBDrVmzRpIUEBCgkSNHavz48QoKCpK/v7/uv/9+tW/fvtxXYv2Z2Z6wuWS7ZopbXAAIAPiTcGnY2bx5szp37ux4PH78eElSYmKiUlJS1K9fP82ZM0dJSUl64IEHdOWVV+q9995Thw4dHM+ZMWOGPDw8lJCQoIKCAnXr1k0vv/xytb8WAADgntzmd3Zc6c/6Ozuc2QEA1GQ1/nd2AAAAKgNhBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWJqXqwsAALg32xM2l23bTDEu2zasgzM7AADA0gg7AADA0vgaC27HVafMOV0OANbEmR0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBpLg07aWlp6t27tyIiImSz2bR06dJz9r3nnntks9k0c+ZMp/bDhw9ryJAh8vf3V2BgoEaOHKm8vLyqLRwAANQYLg07x48fV6tWrZScnHzefkuWLNH69esVERFRat2QIUO0bds2rVy5Uh999JHS0tJ09913V1XJAACghvFy5cZ79OihHj16nLfP/v37df/99+uTTz5Rr169nNZt375dqamp2rRpk+Li4iRJs2bNUs+ePfXcc8+VGY4AAMCfi1vP2SkuLtbQoUM1YcIEXXXVVaXWp6enKzAw0BF0JCk+Pl4eHh7asGHDOcctKChQbm6u0wIAAKzJrcPOtGnT5OXlpQceeKDM9VlZWQoJCXFq8/LyUlBQkLKyss45blJSkgICAhxLZGRkpdYNAADch9uGnYyMDL344otKSUmRzWar1LEnTpyonJwcx7Jv375KHR8AALgPtw07n3/+uQ4ePKioqCh5eXnJy8tLP/30k/72t7+pUaNGkqSwsDAdPHjQ6XmFhYU6fPiwwsLCzjm23W6Xv7+/0wIAAKzJpROUz2fo0KGKj493auvWrZuGDh2q4cOHS5Lat2+vo0ePKiMjQ7GxsZKkzz77TMXFxWrXrl211wwAANyPS8NOXl6efvjhB8fj3bt3KzMzU0FBQYqKilJwcLBTf29vb4WFhenKK6+UJDVr1kzdu3fXqFGjNGfOHJ06dUpjxozRwIEDuRILAABIcvHXWJs3b1ZMTIxiYmIkSePHj1dMTIwmT55c7jEWLFigpk2bqmvXrurZs6c6dOigV155papKBgAANYxLz+x06tRJxphy99+zZ0+ptqCgIC1cuLASqwIA1AS2Jyr34pWKMFPK/7cLrue2E5QBAAAqA2EHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYmkvDTlpamnr37q2IiAjZbDYtXbrUse7UqVN65JFH1LJlS9WuXVsRERG666679MsvvziNcfjwYQ0ZMkT+/v4KDAzUyJEjlZeXV82vBAAAuCuXhp3jx4+rVatWSk5OLrXuxIkT2rJlix577DFt2bJF77//vnbs2KE+ffo49RsyZIi2bdumlStX6qOPPlJaWpruvvvu6noJAADAzXm5cuM9evRQjx49ylwXEBCglStXOrX961//Utu2bbV3715FRUVp+/btSk1N1aZNmxQXFydJmjVrlnr27KnnnntOERERVf4aAACAe6tRc3ZycnJks9kUGBgoSUpPT1dgYKAj6EhSfHy8PDw8tGHDhnOOU1BQoNzcXKcFAABYU40JO/n5+XrkkUc0aNAg+fv7S5KysrIUEhLi1M/Ly0tBQUHKyso651hJSUkKCAhwLJGRkVVaOwAAcJ0aEXZOnTqlAQMGyBij2bNnX/R4EydOVE5OjmPZt29fJVQJAADckUvn7JRHSdD56aef9NlnnznO6khSWFiYDh486NS/sLBQhw8fVlhY2DnHtNvtstvtVVYzAABwH259Zqck6OzcuVOffvqpgoODnda3b99eR48eVUZGhqPts88+U3Fxsdq1a1fd5QIAADfk0jM7eXl5+uGHHxyPd+/erczMTAUFBSk8PFz9+/fXli1b9NFHH6moqMgxDycoKEg+Pj5q1qyZunfvrlGjRmnOnDk6deqUxowZo4EDB3IlFgAAkOTisLN582Z17tzZ8Xj8+PGSpMTERD3++ONatmyZJKl169ZOz1u9erU6deokSVqwYIHGjBmjrl27ysPDQwkJCXrppZeqpX4AAOD+XBp2OnXqJGPMOdefb12JoKAgLVy4sDLLAgAAFuLWc3YAAAAuFmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYWqWEnaNHj1bGMAAAAJWuwmFn2rRpeueddxyPBwwYoODgYF1yySXaunVrhcZKS0tT7969FRERIZvNpqVLlzqtN8Zo8uTJCg8Pl5+fn+Lj47Vz506nPocPH9aQIUPk7++vwMBAjRw5Unl5eRV9WQAAwKIqHHbmzJmjyMhISdLKlSu1cuVKLV++XD169NCECRMqNNbx48fVqlUrJScnl7l++vTpeumllzRnzhxt2LBBtWvXVrdu3ZSfn+/oM2TIEG3btk0rV67URx99pLS0NN19990VfVkAAMCivCr6hKysLEfY+eijjzRgwADdfPPNatSokdq1a1ehsXr06KEePXqUuc4Yo5kzZ2rSpEm69dZbJUnz589XaGioli5dqoEDB2r79u1KTU3Vpk2bFBcXJ0maNWuWevbsqeeee04REREVfXkAAMBiKnxmp169etq3b58kKTU1VfHx8ZJOh5OioqJKK2z37t3KyspyjC9JAQEBateundLT0yVJ6enpCgwMdAQdSYqPj5eHh4c2bNhQabUAAICaq8Jndm677TYNHjxYTZo00W+//eY4M/PVV1/p8ssvr7TCsrKyJEmhoaFO7aGhoY51WVlZCgkJcVrv5eWloKAgR5+yFBQUqKCgwPE4Nze3ssoGAABupsJndmbMmKExY8aoefPmWrlyperUqSNJOnDggO67775KL7AqJCUlKSAgwLGUfC0HAACsp8Jndry9vfXQQw+Vah83blylFFQiLCxMkpSdna3w8HBHe3Z2tlq3bu3oc/DgQafnFRYW6vDhw47nl2XixIkaP36843Fubi6BBwAAi7qg39l588031aFDB0VEROinn36SJM2cOVMffPBBpRUWHR2tsLAwrVq1ytGWm5urDRs2qH379pKk9u3b6+jRo8rIyHD0+eyzz1RcXHzeydJ2u13+/v5OCwAAsKYKh53Zs2dr/Pjx6tGjh44ePeqYlBwYGKiZM2dWaKy8vDxlZmYqMzNT0ulJyZmZmdq7d69sNpvGjh2rp556SsuWLdPXX3+tu+66SxEREerbt68kqVmzZurevbtGjRqljRs36ssvv9SYMWM0cOBArsQCAACSLiDszJo1S6+++qr+8Y9/yNPT09EeFxenr7/+ukJjbd68WTExMYqJiZEkjR8/XjExMZo8ebIk6eGHH9b999+vu+++W23atFFeXp5SU1Pl6+vrGGPBggVq2rSpunbtqp49e6pDhw565ZVXKvqyAACARVV4zs7u3bsd4eRMdrtdx48fr9BYnTp1kjHmnOttNpumTp2qqVOnnrNPUFCQFi5cWKHtAgCAP48Kn9mJjo52fO10ptTUVDVr1qwyagIAAKg0FT6zM378eI0ePVr5+fkyxmjjxo16++23lZSUpH//+99VUSMAAMAFq3DY+ctf/iI/Pz9NmjRJJ06c0ODBgxUREaEXX3xRAwcOrIoaAQAALliFw450+uabQ4YM0YkTJ5SXl1fqV4wBAADcxQWFnRK1atVSrVq1KqsWAACASlfhsBMdHS2bzXbO9bt27bqoggAAACpThcPO2LFjnR6fOnVKX331lVJTUzVhwoTKqgsA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AAAALlK5w07r1q315ptvSpI+//xzZWdnq0uXLo71P/74oyIiIiq/QgAAgItQ7gnKkydPVo8ePfSf//xHBw4c0LBhw5xuvrlkyRJdf/31VVIkAADAharQ7+xkZGRoxYoVCgsL0+233+60vnXr1mrbtm2lFwgAAHAxKnQj0GbNmqlZs2Zlrrv77rsrpSAAAIDKVO6wk5aWVq5+N9544wUXAwAAUNnKHXY6derkuPHnue4dWlNvBAoAAKyr3GGnXr16qlu3roYNG6ahQ4eqfv36VVkXAABApSj3pecHDhzQtGnTlJ6erpYtW2rkyJFat26d/P39FRAQ4FgAAADcSbnDjo+Pj+644w598skn+u6773T11VdrzJgxioyM1D/+8Q8VFhZWZZ0AAAAXpNxh50xRUVGaPHmyPv30U11xxRV65plnlJubW9m1AQAAXLQKh52CggItXLhQ8fHxatGiherXr6///ve/CgoKqor6AAAALkq5Jyhv3LhR8+bN06JFi9SoUSMNHz5c//nPfwg5AADArZU77Fx77bWKiorSAw88oNjYWEnSF198Uapfnz59Kq86AACAi1ShX1Deu3evnnzyyXOu53d2AACAuyl32CkuLq7KOgAAAKrEBV2NdS6///57ZQ4HAABw0Sol7BQUFOj5559XdHR0ZQwHAABQacoddgoKCjRx4kTFxcXpuuuu09KlSyVJ8+bNU3R0tGbOnKlx48ZVVZ0AAAAXpNxzdiZPnqy5c+cqPj5e69at0+23367hw4dr/fr1euGFF3T77bfL09OzKmsFAACosHKHncWLF2v+/Pnq06ePvvnmG1199dUqLCzU1q1bHXdDBwAAcDfl/hrr559/dvy+TosWLWS32zVu3DiCDgAAcGvlDjtFRUXy8fFxPPby8lKdOnWqpCgAAIDKUu6vsYwxGjZsmOx2uyQpPz9f99xzj2rXru3U7/3336/cCgEAAC5CucNOYmKi0+M777yz0osBAACobOUOO/PmzavKOgAAAKpEpf6CMgAAgLtx+7Czf/9+3XnnnQoODpafn59atmypzZs3O9YbYzR58mSFh4fLz89P8fHx2rlzpwsrBgAA7sStw86RI0d0/fXXy9vbW8uXL9e3336r559/XvXq1XP0mT59ul566SXNmTNHGzZsUO3atdWtWzfl5+e7sHIAAOAuyj1nxxWmTZumyMhI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fNiRpPHjxysxMVFxcXFq27atZs6cqePHj2v48OGuLg0AALiYJcLOHXfcoUOHDmny5MnKyspS69atlZqaWmrSMgAA+POxRNiRpDFjxpzza6uaym63a8qUKaW+cnM16qoY6qo4d62NuirGXeuS3Lc26qoaNmP+6HotAACAmqvG/6ggAADA+RB2AACApRF2AACApRF2AACApRF2KsGwYcNks9lks9nk7e2t6OhoPfzww8rP//83ISlZv379eqfnFhQUOH65ec2aNY72tWvXqkuXLgoKClKtWrXUpEkTJSYm6uTJk5KkNWvWOMY8e8nKypIk9e3b16k9ODjYpXWNHj1a+fn5evXVV3XDDTc42tu0aaONGzdWyz4p2Xa9evVUr149xcfHO237j97L999/32nczMzMaqm7c+fOTu12u129evVy+TF25v7y8vKSzWZTkyZNXF5Xhw4dSq3z8vJyeV2SNHjwYKd13t7e6t+/v8trCwsLK3N99+7dXVLXnj17Sm3XbrcrMjJS48aNU35+fpW/VzNnztSVV14pPz8/p+1Kf/xZkZaW5jTu0qVLq3R/nVlHhw4dFB0dLV9fX7Vq1colx9O2bduUkJCgRo0ayWazaebMmSpLcnKyGjVqJF9fX7Vr187p87gyEXYqSffu3XXgwAHt2rVLM2bM0Ny5czVlyhSnPpGRkZo3b55T25IlS1SnTh2ntm+//Vbdu3dXXFyc0tLS9PXXX2vWrFny8fFRUVGRU98dO3bowIEDTktISIgkqbCwUI0aNdLs2bPVoEED9e3bt9rq6tevnzp37qytW7dq8+bNev311/XWW29pypQpWrNmjQYNGiRJCg8PV25urm6++Wbt37+/yvdJybZXr16t9PR0RUZGOm1bOv97efz4cUlSUFCQzlaVddvtdsXExGjt2rVKS0vTnXfeqY8//lh33XVXlb+X56urZH9t3LhR9evXV7NmzbRnzx6XH/uS5Onp6XT81apVy+V1nTx5UitWrFCDBg30wQcf6Msvv9SUKVP0ySefuLy2zp07O/2bffHFFyVJHh7Ofyaqoq4bbrjB6b2qW7euXn75ZUnSwoULJUnBwcFKSEjQa6+9pnfeeUd///vfq3R/LFy4UI8++qimTJmi7du3O223RHk+K+rXr6+zVWbdAwYMUOfOnbV//37t2rVLMTExWrdunWJjY/Xtt9/q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5vTk6Xr16hm73W4uu+wy889//tMUFha6vLaSeWGSzIoVKxzPdVVd9957r2nQoIE5evSokU5PlvX19TWRkZHmvvvuc3yFUlX749SpU+bxxx83jRs3LnO7f/RZ8fHHH5c5fmJiYpXWvWbNGtOsWTPj6elpbDabGThwoEuOp927d5e5vmPHjk7bnzVrlomKijI+Pj6mbdu2Zv369WXWebFsxpRxPg4AAMAimLMDAAAsjbAD/J/PP//cMXenrAUApNM/yHe+z4q9e/e6ukScha+xgP/z+++/O90j62wlk+oA/LkVFhY63aj0bI0aNXJMEoZ7IOwAAABL42ssAABgaYQdAABgaYQdAABgaYQdACjD448/rtatW1foOTabTUuXLj3n+j179shmsykzM/OiagNQMYQdAE6GDRsmm80mm80mb29vRUdH6+GHHy71s/AlfdavX+/UXlBQoODgYNlsNq1Zs8bRvnbtWnXp0kVBQUGqVauWmjRposTERJ08eVKStGbNGseYZy9n3kqgREZGRpnbL9G1a1fddtttF7wfHnroIaf79gCouQg7AErp3r27Dhw4oF27dmnGjBmaO3eupkyZUqpfZGSk5s2b59S2ZMmSUr9L9O2336p79+6Ki4tTWlqavv76a82aNUs+Pj4qKipy6rtjxw4dOHDAaQkJCSm17djYWLVq1Uqvv/56qXV79uzR6tWrNXLkyAq/dmOMCgsLVadOHQUHB1f4+QDcD2EHQCl2u11hYWGKjIxU3759FR8fr5UrV5bql5iYqEWLFjnd5fn1119XYmKiU78VK1YoLCxM06dPV4sWLdS4cWN1795dr776qvz8/Jz6hoSEKCwszGk5192tR44cqXfeeafUnbFTUlIUHh6u7t27680331RcXJzq1q2rsLAwDR48WAcPHnT0LTmjtHz5csXGxsput+uLL74o9TXWpk2bdNNNN6l+/foKCAhQx44dtWXLllI1HThwQD169JCfn58uu+wyvfvuu+fe0ZK++eYb9ejRQ3Xq1FFoaKiGDh2qX3/91bH+3XffVcuWLeXn56fg4GDFx8dX6t2ngT8Dwg6A8/rmm2+0bt06+fj4lFoXGxurRo0a6b333pN0+pdl09LSNHToUKd+YWFhOnDggNLS0iq1tiFDhqigoMApUBhj9MYbb2jYsGHy9PTUqVOn9OSTT2rr1q1aunSp9uzZo2HDhpUa69FHH9Uzzzyj7du36+qrry61/tixY0pMTNQXX3yh9evXq0mTJurZs6eOHTvm1O+xxx5TQkKCtm7dqiFDhmjgwIHavn17mfUfPXpUXbp0UUxMjDZv3qzU1FRlZ2drwIABkk4Hp0GDBmnEiBHavn271qxZo9tuu038PBpQQVVye1EANVZiYqLx9PQ0tWvXNna73UgyHh4e5t1333Xqp/+7k/LMmTNN586djTHGPPHEE6Zfv36l7qRcWFhohg0b5rh7dd++fc2sWbNMTk6OY7ySOynXrl3baWnevPl56x04cKDTnZRXrVplJJmdO3eW2X/Tpk1Gkjl27JjTdpcuXerUb8qUKaZVq1bn3G5RUZGpW7eu+fDDD532yT333OPUr127dubee+81xvz/O0F/9dVXxhhjnnzySXPzzTc79d+3b5+RZHbs2GEyMjKMJLNnz57z7gMA58eZHQCldO7cWZmZmdqwYYMSExM1fPhwJSQklNn3zjvvVHp6unbt2qWUlBSNGDGiVB9PT0/NmzdPP//8s6ZPn65LLrlETz/9tK666iodOHDAqe/nn3+uzMxMx/Lxxx+ft9YRI0YoLS1NP/74o6TTX6N17NjRcXuPjIwM9e7dW1FRUapbt646duwoSaXuXxQXF3fe7WRnZ2vUqFFq0qSJAgIC5O/vr7y8vFLjtG/fvtTjc53Z2bp1q1avXu10X6WmTZtKkn788Ue1atVKXbt2VcuWLXX77bfr1Vdf1ZEjR85bJ4DSCDsASqldu7Yuv/xyxwTgDRs26LXXXiuzb3BwsG655RaNHDlS+fn56tGjxznHveSSSzR06FD961//0rZt25Sfn685c+Y49YmOjtbll1/uWBo2bHjeWrt27aqoqCilpKQoNzdX77//vmNi8vHjx9WtWzf5+/trwYIF2rRpk5YsWSJJjqvAznzN55OYmKjMzEy9+OKLWrdunTIzMxUcHFxqnIrIy8tT7969ncJdZmamdu7cqRtvvFGenp5auXKlli9frubNm2vWrFm68sortXv37gveJvBnRNgBcF4eHh76+9//rkmTJjlNRD7TiBEjtGbNGt11113y9PQs17j16tVTeHj4RU+29fDw0PDhw/XGG29o4cKF8vHxUf/+/SVJ3333nX777Tc988wzuuGGG9S0aVOnyckV8eWXX+qBBx5Qz549ddVVV8lutztNJC5x9qXw69evV7Nmzcoc85prrtG2bdvUqFEjp4B3+eWXO8KXzWbT9ddfryeeeEJfffWVfHx8HIENQPkQdgD8odtvv12enp5KTk4uc3337t116NAhTZ06tcz1c+fO1b333qsVK1boxx9/1LZt2/TII49o27Zt6t27t1PfgwcPKisry2k5derUeesbPny49u/fr7///e8aNGiQ4wqvqKgo+fj4aNasWdq1a5eWLVumJ5988gL2gNSkSRO9+eab2r59uzZs2KAhQ4aUupJMkhYvXqzXX39d33//vaZMmaKNGzdqzJgxZY45evRoHT58WIMGDdKmTZv0448/6pNPPtHw4cNVVFSkDRs26Omnn9bmzZu1d+9evf/++zp06NA5wxOAshF2APwhLy8vjRkzRtOnTy/zTIzNZlP9+vXLvGJLktq2bau8vDzdc889uuqqq9SxY0etX79eS5cudcyhKXHllVcqPDzcacnIyDhvfVFRUYqPj9eRI0ec5gw1aNBAKSkpWrx4sZo3b65nnnlGzz333AXsAem1117TkSNHdM0112jo0KF64IEHyvz9nyeeeEKLFi3S1Vdfrfnz5+vtt99W8+bNyxwzIiJCX375pYqKinTzzTerZcuWGjt2rAIDA+Xh4SF/f3+lpaWpZ8+euuKKKzRp0iQ9//zz5/2qEEBpNmO4hhEAAFgXZ3YAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAICl/T/87OzQb65QZQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, rmse2_1, rmse3, rmse4, rmse5, rmse6, rmse7, rmse8, rmse8_1, rmse9, rmse10]\n", + "\n", + "# List of corresponding labels for each RMSE value\n", + "labels = ['RMSE1', 'RMSE2', 'RMSE2_1', 'RMSE3', 'RMSE4', 'RMSE5', 'RMSE6', 'RMSE7', 'RMSE8', 'RMSE8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "nrZu-K-KDCJ2", + "outputId": "d0dd5f18-77bd-41f4-c21b-09e71322b318" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/MUlEQVR4nO3deVxUZf//8fcACogCorIlKuW+pOYWmbdLFK6pueR2h2JqqZl5l+l9m2V5Z1qZS6RZKFmCS6mlpUWYW+GuZUmuuAuWKYomopzfH36dX3MDCjoww+n1fDzO4+Fc5zrn+swMMm/Ouc4Zi2EYhgAAAEzKxdEFAAAAFCbCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDoC/hVdeeUUWi0W///57oY+1evVqNWjQQB4eHrJYLDp37lyhjwkgb4QdoJiLjY2VxWKxWfz9/dW6dWutWrWqyOtZsWKFOnXqpICAAJUsWVJ+fn76xz/+obffflvnz58v8nqK2pkzZ9SzZ095enoqOjpaH3/8sby8vHLt+9f3buPGjTnWG4ahkJAQWSwWdezYMdd9nDt3zhqqkpOTc+3Tv3//HD8jNxYPD4/bf7JAMeHm6AIA2Merr76q0NBQGYahtLQ0xcbGqn379lqxYkWeH5T2lJ2drYEDByo2Nlb16tXT0KFDFRISogsXLigpKUnjxo3TV199pcTExEKvxZG2bt2qCxcu6LXXXlN4eHi+tvHw8FBcXJwefPBBm/Z169bp+PHjcnd3z3PbJUuWyGKxKDAwUAsWLNDEiRNz7efu7q4PP/wwR7urq2u+agSKM8IOYBLt2rVT48aNrY8HDhyogIAAxcfH2yXsZGdn68qVK3keCZgyZYpiY2P13HPP6e2335bFYrGue/bZZ3Xq1CnNnz//jsYoDk6fPi1J8vX1zfc27du315IlSzRjxgy5uf3/X8txcXFq1KjRTU+9ffLJJ2rfvr0qV66suLi4PMOOm5ub+vXrl++aADPhNBZgUr6+vvL09LT58JSkt956Sw888IDKlSsnT09PNWrUSJ9++mmO7S0Wi4YPH64FCxaoTp06cnd31+rVq3Md69KlS5o8ebLq1KmjN9980ybo3BAUFKQXX3wx32PcTp01atSQh4eHGjVqpPXr1+da67lz59S/f3/5+vrKx8dHAwYM0KVLl3J/Ef/HkiVL1KhRI3l6eqp8+fLq16+fTpw4YV3fqlUrRUZGSpKaNGkii8Wi/v3733K/vXv31pkzZ5SQkGBtu3Llij799FP16dMnz+2OHj2qDRs2qFevXurVq5dSUlL0ww8/5Ou5AH8nHNkBTCI9PV2///67DMPQ6dOnNXPmTGVkZOT4a3769Ol69NFH1bdvX125ckULFy5Ujx49tHLlSnXo0MGm75o1a7R48WINHz5c5cuXV5UqVXIde+PGjTp37pyef/75Ap8WyWuMgtS5bt06LVq0SCNGjJC7u7vee+89tW3bVlu2bFHdunVt+vbs2VOhoaGaNGmSduzYoQ8//FD+/v6aPHnyTeuMjY3VgAED1KRJE02aNElpaWmaPn26vv/+e+3cuVO+vr76z3/+oxo1amjOnDnW04r33HPPLV+DKlWqKCwsTPHx8WrXrp0kadWqVUpPT1evXr00Y8aMXLeLj4+Xl5eXOnbsKE9PT91zzz1asGCBHnjggVz753aEqGTJkvL29r5ljUCxZgAo1ubNm2dIyrG4u7sbsbGxOfpfunTJ5vGVK1eMunXrGm3atLFpl2S4uLgYv/zyyy1rmD59uiHJWL58uU371atXjd9++81myc7OztcYBalTkrFt2zZr25EjRwwPDw+ja9eu1raXX37ZkGRERUXZbN+1a1ejXLlyN31+V65cMfz9/Y26desaf/75p7V95cqVhiRj/Pjx1rYb78fWrVtvus//7fvuu+8aZcqUsT7vHj16GK1btzYMwzAqV65sdOjQIcf29erVM/r27Wt9/O9//9soX768kZWVZdMvMjIy158RSUZERMQt6wSKO05jASYRHR2thIQEJSQk6JNPPlHr1q315JNPaunSpTb9PD09rf8+e/as0tPT1aJFC+3YsSPHPlu2bKnatWvfcuwbV1mVLl3apn337t2qUKGCzXLmzJl8jVGQOsPCwtSoUSPr40qVKqlz5876+uuvde3aNZu+Tz31lM3jFi1a6MyZMze9Umzbtm06ffq0hg4dajOfqEOHDqpZs6a+/PLLPLfNr549e+rPP//UypUrdeHCBa1cufKmp7B++ukn7d69W71797a29e7dW7///ru+/vrrHP09PDysPx9/Xd544407rh1wdpzGAkyiadOmNhOUe/furYYNG2r48OHq2LGjSpYsKUla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8+fP2ywAAMCcnDbspKamSpICAgJs2gMCAqzrUlNT5e/vb7Pezc1Nfn5+1j65mTRpknx8fKxLSEiInasHAADOwmnDTmEaO3as0tPTrcuxY8ccXRIAACgkTht2AgMDJUlpaWk27WlpadZ1gYGBOn36tM36q1ev6o8//rD2yY27u7u8vb1tFgAAYE5OG3ZCQ0MVGBioxMREa9v58+e1efNmhYWFSZLCwsJ07tw5bd++3dpnzZo1ys7OVrNmzYq8ZgAA4HwcejVWRkaGDhw4YH2ckpKiXbt2yc/PT5UqVdLIkSM1ceJEVatWzXrpeXBwsLp06SJJqlWrltq2batBgwZp9uzZysrK0vDhw9WrVy+uxAIAAJIcHHa2bdum1q1bWx+PGjVKkhQZGanY2FiNHj1aFy9e1ODBg3Xu3Dk9+OCDWr16tfUeO5K0YMECDR8+XA899JBcXFzUrVs3zZgxo8ifCwAAcE4WwzD+9ndGOn/+vHx8fJSenv73mb/jzDfjclRt3CQMyJ2z/p905t9jKBL5/fx22jk7AAAA9kDYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApubUYefatWt66aWXFBoaKk9PT91zzz167bXXZBiGtY9hGBo/fryCgoLk6emp8PBw7d+/34FVAwAAZ3LHYefatWvatWuXzp49a496bEyePFmzZs3Su+++q+TkZE2ePFlTpkzRzJkzrX2mTJmiGTNmaPbs2dq8ebO8vLwUERGhy5cv270eAABQ/BQ47IwcOVIxMTGSrgedli1b6r777lNISIjWrl1r1+J++OEHde7cWR06dFCVKlXUvXt3PfLII9qyZYuk60d1pk2bpnHjxqlz58669957NX/+fJ08eVLLly+3ay0AAKB4KnDY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e8l32AkLC9OZM2esj729vXXo0CHr43Pnzql37972rQ4AAOAO5TvsGIZx08d5tQEAADiSXefsWCwWe+4OAADgjjn9BOUTJ06oX79+KleunDw9PVWvXj1t27bNut4wDI0fP15BQUHy9PRUeHi49u/f78CKAQCAMynQF4Hu2bNHqampkq6HjF9//VUZGRmSpN9//93uxZ09e1bNmzdX69attWrVKlWoUEH79+9X2bJlrX2mTJmiGTNm6KOPPlJoaKheeuklRUREaM+ePfLw8LB7TQAAoHgpUNh56KGHbObldOzYUdL101eGYdj9NNbkyZMVEhKiefPmWdtCQ0Ot/zYMQ9OmTdO4cePUuXNnSdL8+fMVEBCg5cuXq1evXnatBwAAFD/5DjspKSmFWUeuvvjiC0VERKhHjx5at26d7rrrLg0dOlSDBg2y1pSamqrw8HDrNj4+PmrWrJmSkpLyDDuZmZnKzMy0Pj5//nzhPhEAAOAw+Q47lStXvmWfn3/++Y6K+V+HDh3SrFmzNGrUKP373//W1q1bNWLECJUsWVKRkZHWU2oBAQE22wUEBFjX5WbSpEmaMGGCXWsFAADO6Y4nKF+4cEFz5sxR06ZNVb9+fXvUZJWdna377rtPr7/+uho2bKjBgwdr0KBBmj179h3td+zYsUpPT7cux44ds1PFAADA2dx22Fm/fr0iIyMVFBSkt956S23atNGmTZvsWZuCgoJUu3Ztm7ZatWrp6NGjkqTAwEBJUlpamk2ftLQ067rcuLu7y9vb22YBAADmVKCwk5qaqjfeeEPVqlVTjx495O3trczMTC1fvlxvvPGGmjRpYtfimjdvrr1799q07du3z3pKLTQ0VIGBgUpMTLSuP3/+vDZv3qywsDC71gIAAIqnfIedTp06qUaNGvrpp580bdo0nTx5UjNnzizM2vTcc89p06ZNev3113XgwAHFxcVpzpw5GjZsmKTrV4GNHDlSEydO1BdffKHdu3friSeeUHBwsLp06VKotQEAgOIh3xOUV61apREjRujpp59WtWrVCrMmqyZNmmjZsmUaO3asXn31VYWGhmratGnq27evtc/o0aN18eJFDR48WOfOndODDz6o1atXc48dAAAgqQBhZ+PGjYqJiVGjRo1Uq1Yt/fOf/yyS+9h07NjRej+f3FgsFr366qt69dVXC70WAABQ/OT7NNb9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denSRT///HMer6p9meY+O87mvvvu08GDB7V06VL17dtX0vUjDZUqVVJoaKhN34yMDC1atEjbtm1TamqqYmNj9e9//zvHPsuVK5fn931VqVJF06dPlySbvxqdobZp06apf//+qlixog4ePKgGDRqoWrVqWrFihZKTkwt13L96/fXX9fnnn2vFihVq2LBhnq/PDe3atdOiRYsUGhqqzz//XJs2bdLjjz8uqXBfr4YNG9rUV6VKFS1dulQbNmzQ4MGDre1F/T7e8NRTT6lPnz5ydXXNcbTLkXX5+/vf8mtfirq21atXa926dTp06JD8/PwkXX8/HV2Xj4+PzS32ly9frrNnz+a463xR15WUlKTSpUurZcuWOnjwoFJTUzVkyBBNnjy50MetUqWKRowYIUkKDQ21jpsfTZo0UePGjXXu3Dl99dVX2r17t3VdYdb98ccfa8iQIdbfS3fffbdee+01paamKiQkxKk+f6ZPn662bdvqhRdekCS99tprSkhI0LvvvqvZs2fnuo09cWSnEEVFRWnevHnWx3Pnzs31KywWL16smjVrqkaNGurXr5/mzp1766+rL6a13Rj3woUL8vPzK9LXJDs72zru7VizZo3130VZ986dO/XDDz+oZcuWOdYV9fs4b948HTp0SC+//PJN+zni56tBgwYKCgrSww8/rO+//94pavviiy/UuHFjTZkyRXfddZeqV6+u559/3uYvbkfU9b9iYmIUHh6uypUrO7SusLAwXbx4UWlpaRowYIDef/99ffrpp2rfvn2hj3vs2DF99dVXMgxDaWlp1nELqnTp0tq8ebP1cWHWnZmZKQ8PD5s2Nzc3nT17VpGRkU71+ZOUlKTw8HCbtoiICCUlJdl9rNwQdgpRv379tHHjRh05ckRHjhzR999/r379+uXoFxMTY21v27at0tPTtW7duhz9HnjgAZUuXdpmKW619evXT+vWrVN6errCwsKK9DV56623lJGRoZ49e+bZ52aSk5OL9PWqWLGi3N3d1bhxYw0bNkxPPvlkjj5F+T7u379fY8aM0SeffCI3t5sfFC7KuoKCgjR79mx99tln+uyzzxQSEqJWrVppx44dDq/t0KFD2rhxo37++WctW7ZM06ZN06effqqhQ4c6tK6/OnnypFatWpXrz1dR19W8eXP94x//0NatWzV69Ght2LBBJUqU0OjRowt93AULFujxxx9XyZIlFRgYKB8fH0VHR+f6mtyMl5eXUlJSiuT1ioiI0Icffqjt27fLMAxt27ZN+/btk2EYatu2rVN9/qSmpub4CqeAgIAcc+sKC6exClGFChXUoUMHxcbGyjAMdejQwTr/44a9e/dqy5YtWrZsmaTrqfzxxx9XTEyMWrVqZdN30aJFqlWrVrGuLSEhQYZhqEuXLlqxYkWRjRsXF6cJEybo888/z3UuR340atSoSF+vDRs2KCMjQ5s2bdKYMWNUtWpV9e7d26ZPUb2P165dU58+fTRhwgRVr179pnUXZV2SVKNGDZs5MA888IAOHjyod955Rx9//LFDa8vOzpbFYtGCBQusp42mTp2q7t2767333pOnp6dD6vqrjz76SL6+vurSpUuu64uyrj179mjLli2qWbOm4uLiNHToUO3evVs9evQo9HGfffZZjR8/XhERETp16pReeOEFPfXUU4qJicl1m7y4urqqdu3aRfJ6vfTSS0pNTdX9998vwzAUEBCgqlWr6ueff3bqzx9HIOwUsqioKOt3duX2V0JMTIyuXr2q4OBga5thGHJ3d9e7775rc149JCREVatWLba1nThxQk8++aTGjRunjz76SOvXry+ScRcuXKgnn3xSS5YsyXEYtSAeeughxcbGSiqa1+vGufV69eopLS1Nr7zySo6wIxXN+3jhwgVt27ZNO3futI6VnZ0twzDk5uamb775Rm3atCnyuvLStGlTbdy4Mc/1RVVbUFCQ7rrrLpv+tWrVkmEYOn78uKpVq+aQuv667dy5c/XPf/5TJUuWzLNfUdU1adIk+fv7q2rVqrr33ns1duxYDRo0SLt27dK//vWvQh23efPm1vkk9957r7y8vNSiRQtNnDhRQUFBeb42uWnatGmR/K7w9PTU3Llz9f777ystLU1BQUF68MEH5ebmpgoVKjjV509gYKDS0tJs2tLS0m45F89eOI1VyNq2basrV64oKytLERERNuuuXr2q+fPn6+2339auXbusy48//qjg4GDFx8ebpraUlBTt2LFD8fHxeumll4ps3Pj4eA0YMEDx8fG5XlZZEA0bNnTYe5mdnW1zNdhfFcX76O3trd27d9vs46mnnlKNGjW0a9cuNWvWzCF15WXXrl03/YAqqtqaN2+ukydPKiMjw9q2b98+ubi4qGLFig6r64Z169bpwIED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0W/v3r3asmWLevfuLUlyc3PT448/rpiYmBx9Fy1apF27dtksNxMVFaWUlBR99913kq4f1alSpYratGkjSdq/f7969+6tu+++W97e3qpSpYok5Tgi07hx45uOk5GRoeeff161atWSr6+vSpcureTk5Bz7CQsLy/E4OTk5133++OOPOnDggMqUKWP9biU/Pz9dvnxZBw8elJ+fn/r376+IiAh16tRJ06dP16lTp25aJ4Bb48t/ABRIVFSUhg8fLkl5zk+JiYnR1atXFRwcbG0zDEPu7u5699135ePjY20PCQlR1apV8z1+tWrV1KJFC82bN0+tWrXS/PnzNWjQIOupnk6dOqly5cr64IMPFBwcrOzsbNWtW1dXrlyx2Y+Xl9dNx3n++eeVkJCgt956S1WrVpWnp6e6d++eYz8FkZGRoUaNGmnBggU51lWoUEHS9fA2YsQIrV69WosWLdK4ceOUkJCg+++//7bHBf7uCDsACuTG/BKLxZLrXJerV69q/vz5evvtt/XII4/YrOvSpYvi4+NzvYS9IAYOHKinn35ajz76qE6cOGG97P3MmTPau3evPvjgA7Vo0UKStHHjxtsa4/vvv1f//v3VtWtXSdeDSm5fHvu/l8lv2rRJtWrVynWf9913nxYtWiR/f395e3vnOXbDhg3VsGFDjR07VmFhYYqLiyPsAHeA01gACsTV1VXJycnas2ePXF1dc6xfuXKlzp49q4EDB6pu3bo2S7du3XKcyjpz5oxSU1NtlsuXL9+0hh49eqhEiRIaMmSIHnnkEYWEhEiSypYtq3LlymnOnDk6cOCA1qxZo1GjRt3W86xWrZqWLl2qXbt26ccff1SfPn1yTHKWroeiKVOmaN++fYqOjtaSJUv07LPP5rrPvn37qnz58urcubM2bNiglJQUrV27ViNGjNDx48eVkpKisWPHKikpSUeOHNE333yj/fv35xmeAOQPYQdAgXl7e+d5ZCImJkbh4eE2p6pu6Natm7Zt26affvrJ2hYeHq6goCCb5VZ3HC5VqpR69eqls2fPKioqytru4uKihQsXavv27apbt66ee+45vfnmm7f1HKdOnaqyZcvqgQceUKdOnRQREZHrTQv/9a9/adu2bWrYsKEmTpyoqVOn5nrE60bd69evV6VKlfTYY4+pVq1aGjhwoC5fvixvb2+VKlVKv/76q7p166bq1atr8ODBGjZsmIYMGXJbzwHAdRbDuMNrQQEAAJwYR3YAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICp/T+WRF7HOqAsCAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, mae2_1, mae3, mae4, mae5, mae6, mae7, mae8, mae8_1, mae9, mae10]\n", + "\n", + "# List of corresponding labels for each MAE value\n", + "labels = ['MAE1', 'MAE2', 'MAE2_1', 'MAE3', 'MAE4', 'MAE5', 'MAE6', 'MAE7', 'MAE8', 'MAE8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "_c4Pe76fDNM-", + "outputId": "c1784b34-6746-42fd-9f66-b7c1cfd50a21" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA930lEQVR4nO3deVwV9f7H8fcB9QAKuCDigopLmrtiFtxSLBMRt25XDTM3sjK9pXazbNGWX6GVqaVplso1U9zSyjXSXErKXFMzywpxAbVUEE1AmN8fPjzXIwflKHgO0+v5eMzj4XznOzOfMwfl7cx3ZiyGYRgCAAAwCQ9XFwAAAFCUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcASryXXnpJFotFf/zxR7Hva/Xq1WrRooW8vLxksVh0+vTpYt8nAOcQbgA3Fh8fL4vFYjcFBgaqffv2WrVq1U2v5/PPP1fXrl1VpUoVlSlTRhUrVlTbtm01YcIEZWRk3PR6brY///xTvXr1kre3t6ZOnaqPPvpIZcuWddj38u/u66+/zrfcMAwFBwfLYrGoS5cuDrdx+vRpW4jat2+fwz4DBgyw+/nw8/NT8+bNNWHCBGVlZdn6XQqABU1paWnXcUQA91TK1QUAuLZXXnlFISEhMgxDx44dU3x8vDp37qzPP/+8wF+MRSkvL0+xsbGKj49X06ZN9fjjjys4OFhnzpxRUlKSXnjhBa1cuVJr164t9lpc6fvvv9eZM2f06quvqkOHDoVax8vLS/PmzdOdd95p175hwwYdPnxYVqu1wHUXLVoki8WioKAgffzxx/q///s/h/2sVqs+/PBDSRcD0ZIlS/Sf//xH33//vRISEuz6Tps2TeXKlcu3jfLlyxfq8wAlAeEGKAGioqLUunVr23xsbKyqVKmi+fPnF0m4ycvLU3Z2try8vBwuf+ONNxQfH68RI0ZowoQJslgstmVPPvmkUlNTNWfOnBvaR0lw/PhxSc4Fgc6dO2vRokV65513VKrU//7JnTdvnkJDQ696KW3u3Lnq3LmzatWqpXnz5hUYbkqVKqW+ffva5h9//HHdfvvtWrBggd5++21Vq1bNtuxf//qXAgICCl0/UBJxWQoogcqXLy9vb2+7X5aS9NZbbyk8PFyVKlWSt7e3QkNDtXjx4nzrWywWDRs2TB9//LEaN24sq9Wq1atXO9zXuXPnNH78eDVu3FhvvvmmXbC5pGrVqnrmmWcKvY/rqbNBgwby8vJSaGioNm7c6LDW06dPa8CAASpfvrz8/f01cOBAnTt3zvFBvMKiRYsUGhoqb29vBQQEqG/fvjpy5IhteUREhPr37y9Juu2222SxWDRgwIBrbjcmJkZ//vmnEhMTbW3Z2dlavHix+vTpU+B6KSkp2rRpkx544AE98MAD+v3337V58+ZCfRYPDw9FRERIkpKTkwu1DmAmnLkBSoD09HT98ccfMgxDx48f17vvvqvMzEy7/61L0uTJk9WtWzc9+OCDys7OVkJCgnr27Knly5crOjraru+6deu0cOFCDRs2TAEBAapdu7bDfX/99dc6ffq0/vOf/8jT09OpugvahzN1btiwQQsWLNATTzwhq9Wq9957T506ddKWLVvUpEkTu769evVSSEiI4uLitH37dn344YcKDAzU+PHjr1pnfHy8Bg4cqNtuu01xcXE6duyYJk+erG+++UY7duxQ+fLl9fzzz6tBgwaaMWOG7TJh3bp1r3kMateurbCwMM2fP19RUVGSpFWrVik9PV0PPPCA3nnnHYfrzZ8/X2XLllWXLl3k7e2tunXr6uOPP1Z4ePg19ylJv/76qySpUqVKdu0nT57M17dUqVJcloK5GADc1uzZsw1J+Sar1WrEx8fn63/u3Dm7+ezsbKNJkybG3XffbdcuyfDw8DD27t17zRomT55sSDKWLVtm137hwgXjxIkTdlNeXl6h9uFMnZKMrVu32toOHjxoeHl5Gffdd5+tbezYsYYkY9CgQXbr33fffUalSpWu+vmys7ONwMBAo0mTJsZff/1la1++fLkhyRgzZoyt7dL38f333191m1f2nTJliuHr62v73D179jTat29vGIZh1KpVy4iOjs63ftOmTY0HH3zQNv/cc88ZAQEBRk5Ojl2//v37G2XLlrV9BwcOHDBef/11w2KxGM2aNbP1u3SMHE0NGjS45ucBShIuSwElwNSpU5WYmKjExETNnTtX7du318MPP6xPPvnErp+3t7ftz6dOnVJ6erruuusubd++Pd8227Vrp0aNGl1z35fugrpyEOru3btVuXJlu+nPP/8s1D6cqTMsLEyhoaG2+Zo1a6p79+5as2aNcnNz7fo+9thjdvN33XWX/vzzz6veybV161YdP35cjz/+uN14oOjoaDVs2FArVqwocN3C6tWrl/766y8tX75cZ86c0fLly696SeqHH37Q7t27FRMTY2uLiYnRH3/8oTVr1uTrf/bsWdt3UK9ePT333HMKCwvT0qVL8/VdsmSJ7Wfp0jR79uwb/oyAO+GyFFACtGnTxm5AcUxMjFq2bKlhw4apS5cuKlOmjCRp+fLl+r//+z/t3LnT7jZgR+NkQkJCCrVvX19fSVJmZqZde7169WzjSObMmaOPPvqo0Ptwps769evna7vlllt07tw5nThxQkFBQbb2mjVr2vWrUKGCpIsBys/Pz2EtBw8elCQ1aNAg37KGDRs6vI3bWZUrV1aHDh00b948nTt3Trm5ufrXv/5VYP+5c+eqbNmyqlOnjg4cOCDp4l1XtWvX1scff5zv0p2Xl5c+//xzSRfvnAoJCVGNGjUcbrtt27YMKIbpEW6AEsjDw0Pt27fX5MmT9csvv6hx48batGmTunXrprZt2+q9995T1apVVbp0ac2ePVvz5s3Lt43Lz55cTcOGDSVJe/bsUffu3W3t5cqVs90OXVAAcLQPZ+t0RkFjggzDuKHtFoU+ffpo8ODBSktLU1RUVIFjXAzD0Pz583X27FmHZ72OHz+uzMxMuzNpnp6ehb41Hfg7INwAJdSFCxck/e+MypIlS+Tl5aU1a9bYPTvlRi853HXXXfL391dCQoJGjx4tD48bu5rtbJ2//PJLvraff/5ZPj4+qly58g3VIkm1atWSJO3fv19333233bL9+/fblt+o++67T48++qi+/fZbLViwoMB+l55/88orr+jWW2+1W3bq1Ck98sgjWrZsWb7B5AD+hzE3QAmUk5OjL774QmXKlLH9AvT09JTFYrEbh5KcnKxly5bd0L58fHw0atQo7dmzR88++6zDsyDOnBlxts6kpCS7sTiHDh3Sp59+qo4dOzp995YjrVu3VmBgoKZPn253iWzVqlXat29fvktA16tcuXKaNm2aXnrpJXXt2rXAfpcuST399NP617/+ZTcNHjxY9evX18cff1wkNQFmxZkboARYtWqVfvrpJ0kXL0vMmzdPv/zyi5599lnbWJLo6Gi9/fbb6tSpk/r06aPjx49r6tSpqlevnn744Ycb2v+zzz6rffv26c0339QXX3yh+++/XzVq1NCpU6e0fft2LVq0SIGB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XX5+fkVWe0lT+9kVri5ByeOiXV0CAKCEcOb3t1uNuUlPT5ckVaxYscA+SUlJ6tChg11bZGSkkpKSHPbPyspSRkaG3QQAAMzLbcJNXl6ehg8frn/84x9q0qRJgf3S0tJUpUoVu7YqVaooLS3NYf+4uDj5+/vbpuDg4CKtGwAAuBe3CTdDhw7Vnj17lJCQUKTbHT16tNLT023ToUOHinT7AADAvZRydQGSNGzYMC1fvlwbN25UjRo1rto3KChIx44ds2s7duyYgoKCHPa3Wq2yWq1FVisAAHBvLj1zYxiGhg0bpqVLl2rdunUKCQm55jphYWFau3atXVtiYqLCwsKKq0wAAFCCuPTMzdChQzVv3jx9+umn8vX1tY2b8ff3l7e3tySpX79+ql69uuLi4iRJTz75pNq1a6cJEyYoOjpaCQkJ2rp1q2bMmOGyz4Hi4Q53dEnc1QUAJY1Lz9xMmzZN6enpioiIUNWqVW3TggULbH1SUlKUmppqmw8PD9e8efM0Y8YMNW/eXIsXL9ayZcuuOggZAAD8fbj0zE1hHrGzfv36fG09e/ZUz549i6EiAABQ0rnN3VIAAABFgXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMpZSrCwAA/L3VfnaFq0tQ8rhoV5eAIsSZGwAAYCqEGwAAYCpOh5tDhw7p8OHDtvktW7Zo+PDhmjFjRpEWBgAAcD2cDjd9+vTRV199JUlKS0vTvffeqy1btuj555/XK6+8UuQFAgAAOMPpcLNnzx61adNGkrRw4UI1adJEmzdv1scff6z4+Piirg8AAMApToebnJwcWa1WSdKXX36pbt26SZIaNmyo1NTUoq0OAADASU6Hm8aNG2v69OnatGmTEhMT1alTJ0nS0aNHValSpSIvEAAAwBlOh5vx48fr/fffV0REhGJiYtS8eXNJ0meffWa7XAUAAOAqTj/ELyIiQn/88YcyMjJUoUIFW/sjjzwiHx+fIi0OAADAWdf1nBvDMLRt2za9//77OnPmjCSpTJkyhBsAAOByTp+5OXjwoDp16qSUlBRlZWXp3nvvla+vr8aPH6+srCxNnz69OOoEAAAoFKfP3Dz55JNq3bq1Tp06JW9vb1v7fffdp7Vr1xZpcQAAAM5y+szNpk2btHnzZpUpU8auvXbt2jpy5EiRFQYAAHA9nD5zk5eXp9zc3Hzthw8flq+vb5EUBQAAcL2cDjcdO3bUpEmTbPMWi0WZmZkaO3asOnfuXJS1AQAAOM3py1ITJkxQZGSkGjVqpPPnz6tPnz765ZdfFBAQoPnz5xdHjQAAAIXmdLipUaOGdu3apYSEBP3www/KzMxUbGysHnzwQbsBxgAAAK7gdLiRpFKlSqlv375FXQsAAMANczrczJkz56rL+/Xrd93FAAAA3Cinw82TTz5pN5+Tk6Nz587ZnlBMuAEAAK7k9N1Sp06dspsyMzO1f/9+3XnnnQwoBgAALndd75a6Uv369TVu3Lh8Z3UAAAButiIJN9LFQcZHjx4tqs0BAABcF6fH3Hz22Wd284ZhKDU1VVOmTNE//vGPIisMAADgejgdbnr06GE3b7FYVLlyZd19992aMGFCUdUFAABwXZwON3l5ecVRBwAAQJEosjE3AAAA7qBQZ25GjhxZ6A2+/fbb110MAADAjSpUuNmxY0ehNmaxWJza+caNG/Xmm29q27ZtSk1N1dKlS/ON6bnc+vXr1b59+3ztqampCgoKcmrfAADAnAoVbr766qti2fnZs2fVvHlzDRo0SP/85z8Lvd7+/fvl5+dnmw8MDCyO8gAAQAl0XS/OLCpRUVGKiopyer3AwECVL1++6AsCAAAl3nWFm61bt2rhwoVKSUlRdna23bJPPvmkSAq7mhYtWigrK0tNmjTRSy+9dNXn62RlZSkrK8s2n5GRUez1AQAA13H6bqmEhASFh4dr3759Wrp0qXJycrR3716tW7dO/v7+xVGjTdWqVTV9+nQtWbJES5YsUXBwsCIiIrR9+/YC14mLi5O/v79tCg4OLtYaAQCAazl95ub111/XxIkTNXToUPn6+mry5MkKCQnRo48+qqpVqxZHjTYNGjRQgwYNbPPh4eH69ddfNXHiRH300UcO1xk9erTd3V4ZGRkEHAAATMzpMze//vqroqOjJUllypTR2bNnZbFYNGLECM2YMaPIC7yWNm3a6MCBAwUut1qt8vPzs5sAAIB5OR1uKlSooDNnzkiSqlevrj179kiSTp8+rXPnzhVtdYWwc+fOYj9jBAAASg6nL0u1bdtWiYmJatq0qXr27Kknn3xS69atU2Jiou655x6ntpWZmWl31uX333/Xzp07VbFiRdWsWVOjR4/WkSNHNGfOHEnSpEmTFBISosaNG+v8+fP68MMPtW7dOn3xxRfOfgwAAGBShQ43e/bsUZMmTTRlyhSdP39ekvT888+rdOnS2rx5s+6//3698MILTu1869atdg/luzQ2pn///oqPj1dqaqpSUlJsy7Ozs/XUU0/pyJEj8vHxUbNmzfTll186fLAfAAD4eyp0uGnWrJluu+02Pfzww3rggQckSR4eHnr22Weve+cREREyDKPA5fHx8Xbzo0aN0qhRo657fwAAwPwKPeZmw4YNaty4sZ566ilVrVpV/fv316ZNm4qzNgAAAKcVOtzcddddmjVrllJTU/Xuu+8qOTlZ7dq10y233KLx48crLS2tOOsEAAAoFKfvlipbtqwGDhyoDRs26Oeff1bPnj01depU1axZU926dSuOGgEAAArN6XBzuXr16um5557TCy+8IF9fX61YsaKo6gIAALgu1/3izI0bN2rWrFlasmSJPDw81KtXL8XGxhZlbQAAAE5zKtwcPXpU8fHxio+P14EDBxQeHq533nlHvXr1UtmyZYurRgAAgEIrdLiJiorSl19+qYCAAPXr10+DBg2ye88TAACAOyh0uCldurQWL16sLl26yNPTszhrAgAAuG6FDjefffZZcdYBAABQJG7obikAAAB3Q7gBAACmQrgBAACmQrgBAACmUuhw8/jjjyszM9M2P3/+fJ09e9Y2f/r0aXXu3LloqwMAAHBSocPN+++/r3PnztnmH330UR07dsw2n5WVpTVr1hRtdQAAAE4qdLgxDOOq8wAAAO6AMTcAAMBUCDcAAMBUnHpx5pgxY+Tj4yNJys7O1muvvSZ/f39JshuPAwAA4CqFDjdt27bV/v37bfPh4eH67bff8vUBAABwpUKHm/Xr1xdjGQAAAEXDqctSGRkZ+u6775Sdna02bdqocuXKxVUXAADAdSl0uNm5c6c6d+6stLQ0SZKvr68WLlyoyMjIYisOAADAWYW+W+qZZ55RSEiIvvnmG23btk333HOPhg0bVpy1AQAAOK3QZ262bdumL774Qq1atZIkzZo1SxUrVlRGRob8/PyKrUAAAABn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rVpVdevWdZvv3FENWVlZatGixVX7uLLO2rVrF/qzuPp4rlixQrfffrs8PT1lsVgUEhLiNjWuX7++wH8H/vnPf7pNnZL0888/q3v37goICJCfn5+qVKnidt/5pX9/atSoofLly6tSpUp65JFHlJmZ6Va/cxxJSUlRdHS0fHx8FBgYqKeffloXLlxw2LeoEG5uQHBwsBISEvTXX3/Z2s6fP6958+apZs2a+frPnDlT//73v7Vx40YdPXrU4Ta//PJLpaamas2aNcrMzFRUVJROnz5tWz548GClpqbaTW+88YZteXZ2tnr27KkhQ4a4VZ29evVSjRo1lJCQoF27dikvL0/vv/++tm/frtzcXHl4eGj79u039Xj99NNPtjr27t2riRMnavr06Xruuecc7uvKY5mbmytvb28NGTJEnp6e8vb2vinH8srvvH379lq4cKH279+vJUuW6MyZMypTpozLv/Mr67xk1KhRtsenBwUFuWWdr7zyisOfXXeqc8mSJXrooYc0cOBAde/eXUFBQTp+/Ljb1BgeHp5vWf369eXp6al169a5TZ2S1KVLF124cEHr1q3Ttm3bVKFCBVksFs2fP99t6jx37pwsFotOnDihDRs2aPXq1dq7d68eeught/udc7nc3FxFR0crOztbmzdv1n//+1/Fx8drzJgxDvsXGQPXpX///kb37t2NJk2aGHPnzrW1f/zxx0azZs2M7t27G/3797e1nzlzxihXrpzx008/Gb179zZee+01u+39/vvvhiRjx44dtrZvvvnGkGSsXr3aMAzDaNeunfHkk08Wqr7Zs2cb/v7+blPntepo3LixUa5cOZcdr0veeOMNIyQkxOGyq32GChUqGEFBQS79zi+5++67DUlG48aN3e5nc+XKlUbDhg2NvXv3GpKMiIgIl/9sXqlWrVrGxIkTbfPu8nfocjk5OUb16tWNDz/80G1rvFJ2drZhtVqNhg0bulWdJ06cMCQZGzdutLX16dPHkGTUrl3bbeoMCwszypQpY3fsfvjhB0OS0bBhQ5d/x5d+51xp5cqVhoeHh5GWlmZrmzZtmuHn52dkZWUVatvXgzM3N2jQoEGaPXu2bX7WrFm2V0dcbuHChWrYsKEaNGigvn37atasWdd8bfulMwEFXSYpiXUWVEdOTo7dQ6NcdbzS09NVsWJFpz9DvXr18vVzxWc4efKkfvvtN1WsWFGxsbFu8Z1fcuzYMQ0ePFgfffSRfHx8bO3u8rN5uXHjxqlSpUpq2bKl9uzZI8Mw3KrO7du368iRI/Lw8FDLli21YMECJSUlKSoqym1qvNJnn32mrKws1axZ062OZaVKldSgQQPNmTNHZ8+e1YULF7R//36VKVNGDz/8sNvUeekM9+XH7tI2WrZs6ZKaCiMpKUlNmza1vXVAkiIjI5WRkaG9e/cW2X7yKbbYZHKX/qd0/Phxw2q1GsnJyUZycrLh5eVlnDhxIl+KDg8PNyZNmmQYxsX/dQUEBBhfffWVbfmVKfrUqVPGfffdZ5QrV86WeNu1a2eULl3aKFu2rN10+f8sLrnyzI2r6yxVqpQRGhrqsI7vvvvOKFWqlBEWFuay42UYhvHLL78Yfn5+xowZMxwuv9qx7N27d74zNzfzM4waNcrw8fExJBkBAQFGVFSUy7/zy+vMy8szOnXqZLz66qt224yIiHCrOg3DMCZMmGB89dVXxq5du4xp06YZpUuXNurWretWdc6fP9+QZNSsWdNYvHix0aVLF6N69epGhQoV3KbGK0VFRRnVq1d3i3+Prqzz0KFDRmhoqGGxWAxPT0/D29vb7X42u3fvblgsFmPMmDGG1Wo1du3aZXTq1MmQZDz//PMu/44LOnMzePBgo2PHjnZtZ8+eNSQZK1euzNe/qLjF6xdKssqVKys6Olrx8fEyDEPR0dEKCAiw67N//35t2bJFS5culSSVKlVKvXv31syZMxUREWHXNzw8XB4eHjp79qzq1KmjBQsW2CXeBx98UM8//7zdOpcvd9c6R40apezs7Hx13H333erTp4+qVaumW265xWXH68iRI+rUqZN69uypwYMHO30svby8btqxdPQZnn76acXGxurgwYPq27evtm/froCAALf52Xz33Xd15swZjR49ulDH05V/h0aOHGn7c7NmzfTRRx8pKSlJfn5+blNnXl6eJOn555/X/fffr88//1ytWrVSUlKSGjVq5BY1Xu7w4cNas2aN2rZtK8m9vnPDMDR06FAFBgZq06ZN8vb2Vp8+ffTtt9/qwoULblNn+fLl1apVK73//vvKyspSq1at1KZNG1mtVvn6+rqkJndGuCkCgwYNsr0ba+rUqfmWz5w5UxcuXLANopQu/oWyWq2aMmWK3SvcFyxYoEaNGqlSpUoOR577+/s7vATi7nX6+fnZBqldqiM3N1e5ubm65557lJ6eflPqcOTo0aNq3769wsPDC/12+SuP5cKFC+2W3+zPEBAQoICAAN1yyy1q27atFi9erG+//dZtfjbXrVunpKSkfO+rWb9+vfr37+82dTpSuXJlGYah5ORkt6mzatWqkqRGjRrZ2jw8PFSnTh3Vrl1b8fHxLq/xcrNnz1alSpUUHBysjIwMSe7z7+a6deu0fPlynTp1Sn5+fpKkO+64Q4cPH9Z///tft6lTkmrUqKGtW7dq7ty5euGFF3T06FFlZ2erTp06SkpKcklN1xIUFKQtW7bYtR07dsy2rLgw5qYIdOrUSdnZ2crJyVFkZKTdsgsXLmjOnDmaMGGCdu7caZt27dqlatWqaf78+Xb9g4ODVbdu3QJvqTNDnZ06ddJff/2l1NRU3XnnnZo9e7YsFstNr0O6eMYmIiJCoaGhmj17tt0b6K/1GdzhWF5NVlaW29T5zjvvaNeuXbZ9rFy5UpJ022236bXXXnObOh05efKkJCkwMNBt6gwNDZXVatX+/fttbXl5eUpOTlb79u3dosZLDMPQ7Nmz1a9fP7u/X+5yLM+dOydJDv/u5+XluU2dl4uJiVFOTo4yMjLk5eWle++91+U1FSQsLEy7d+/W8ePHbW2JiYny8/OzC+dFjTM3RcDT01P79u2z/flyl/5HEBsba5eWJen+++/XzJkzHT5LoSDnzp1TWlqaXZvValWFChUkXXyewMmTJ5WSkqLc3FydPHlSZ86cUWZmpsqVK+eyOv/66y/l5ORIktLS0lS2bFk1bNhQb7/9tk6cOKHz58/rr7/+uqnH61KwqVWrlt566y2dOHHC1uda/6O49J3/9NNP2r17t06ePKmcnBydPHlS77777k37DN99952+//573XnnnapQoYJ+/fVXbdiwQT4+PgoLC3Obn80rb1MtV66cJKls2bKqUaOGJLlFnUlJSfruu+/Uvn17+fr6KikpSVu2bFFwcLDt75g71Onn56fHHntMY8eOVXBwsNLT07Vr1y5JUu/evdWnTx+X13jJunXr9Pvvv+vhhx/WuHHjbO3u8rMZFhamChUqqH///hozZoy8vb21detWnTt3TtHR0W5TpyT99ttv2r59u8qVK6cRI0boxRdf1Pjx4+2Ciat/5+zcuVOSVK9ePZUrV04dO3ZUo0aN9NBDD+mNN95QWlqaXnjhBQ0dOrR43zxebKN5TO7S4NKCXBrc1aVLF6Nz584O+3z33XeGJGPXrl0Ob8u7Urt27QxJ+abIyEi7uhz1uXwgmavqDAwMNAzj4sAzR8sl3dTjdbU6HHH0ndeqVcvh+jfrM/zwww9G+/btjYoVKxpWq9WoXbu2ccstt9j9TFzJVT+bl7t8QLE71blt2zbj9ttvN/z9/Q0vLy/j1ltvNVq1amV07drVreo0jIu3Vj/11FNGYGCgUapUKaNy5crGnj173KpGwzCMmJgYIzw83DAM9/138/vvvzc6duxoVKxY0fD19TUCAgKMO+64w63q7N+/v1GjRg2jYsWKRpkyZYxmzZoZc+bMcfmxK8zvnOTkZCMqKsrw9vY2AgICjKeeesrIyckpcL9FwWIY17g3DAAAoARhzA0AADAVwg1QgKioKJUrV87h9Prrr7u6PABAAbgsBRTgyJEjdu+VuVzFihWv+SRjAIBrEG4AAICpcFkKAACYCuEGAACYCuEGAACYCuEGACRZLBYtW7as0P1feukltWjR4qp9BgwYoB49etxQXQCcR7gB/uYGDBggi8Xi8JHsQ4cOlcVi0YABA/ItS0pKkqenp6Kjo/MtS05OlsVisU2VKlVSx44dtWPHDlufiIgIuz6XpoIeDd+1a1d16tTJ4bJNmzbJYrHohx9+KOSnzi81NVVRUVHXvT4A90G4AaDg4GAlJCTY3fp+/vx5zZs3L997oS6ZOXOm/v3vf2vjxo06evSowz5ffvmlUlNTtWbNGmVmZioqKsr2dnhJGjx4sFJTU+2mN954w+G2YmNjlZiYqMOHD+dbNnv2bLVu3VrNmjVz4lNflJ2dLeni+8SK9V03AG4awg0AtWrVSsHBwfrkk09sbZ988olq1qypli1b5uufmZmpBQsWaMiQIYqOjlZ8fLzD7VaqVElBQUFq3bq13nrrLR07dkzfffedbbmPj4+CgoLsJj8/P4fb6tKliypXrpxvX5mZmVq0aJFiY2P1559/KiYmRtWrV5ePj4+aNm2a7y3IERERGjZsmIYPH66AgADbm56vvCz1zDPP6JZbbpGPj4/q1KmjF1980fby18u9//77Cg4Olo+Pj3r16qX09HSH9UsX3zIdFxenkJAQeXt7q3nz5lq8eLFt+alTp/Tggw+qcuXK8vb2Vv369TV79uwCtwfAMcINAEnSoEGD7H6Rzpo1SwMHDnTYd+HChWrYsKEaNGigvn37atasWbrWI7O8vb0l/e9MibNKlSqlfv36KT4+3m5fixYtUm5urmJiYnT+/HmFhoZqxYoV2rNnjx555BE99NBD2rJli922/vvf/6pMmTL65ptvNH36dIf78/X1VXx8vH788UdNnjxZH3zwgSZOnGjX58CBA1q4cKE+//xzrV69Wjt27NDjjz9e4GeIi4vTnDlzNH36dO3du1cjRoxQ3759tWHDBknSiy++qB9//FGrVq3Svn37NG3aNAUEBFzX8QL+1or1tZwA3N6lNzUfP37csFqtRnJyspGcnGx4eXkZJ06csL1t+HLh4eHGpEmTDMMwjJycHCMgIMDuLcBXvnH41KlTxn333WeUK1fOSEtLMwzj4huHS5cubZQtW9Zumjt3boG17tu3L98bh++66y6jb9++Ba4THR1tPPXUU7b5du3aGS1btszXT5KxdOnSArfz5ptvGqGhobb5sWPHGp6ensbhw4dtbatWrTI8PDyM1NRUwzDs34J9/vx5w8fHx9i8ebPddmNjY42YmBjDMAyja9euxsCBAwusAUDhlHJxtgLgJipXrmy7xGQYhqKjox2eNdi/f7+2bNmipUuXSrp4RqV3796aOXOmIiIi7PqGh4fLw8NDZ8+eVZ06dbRgwQJVqVLFtvzBBx/U888/b7fO5cuv1LBhQ4WHh2vWrFmKiIjQgQMHtGnTJr3yyiuSpNzcXL3++utauHChjhw5ouzsbGVlZcnHx8duO6Ghodc8HgsWLNA777yjX3/9VZmZmbpw4UK+S2Y1a9ZU9erVbfNhYWHKy8vT/v37FRQUZNf3wIEDOnfunO6991679uzsbNulvyFDhuj+++/X9u3b1bFjR/Xo0UPh4eHXrBWAPcINAJtBgwZp2LBhkqSpU6c67DNz5kxduHBB1apVs7UZhiGr1aopU6bI39/f1r5gwQI1atRIlSpVUvny5fNty9/fX/Xq1XOqxtjYWP373//W1KlTNXv2bNWtW1ft2rWTJL355puaPHmyJk2apKZNm6ps2bIaPnx4vkthZcuWveo+kpKS9OCDD+rll19WZGSk/P39lZCQoAkTJjhV6+UyMzMlSStWrLALRJJsA5mjoqJ08OBBrVy5UomJibrnnns0dOhQvfXWW9e9X+DviDE3AGw6deqk7Oxs5eTk2AbaXu7ChQuaM2eOJkyYoJ07d9qmXbt2qVq1avkG7wYHB6tu3boOg8316tWrlzw8PDRv3jzNmTNHgwYNksVikSR988036t69u/r27avmzZurTp06+vnnn53ex+bNm1WrVi09//zzat26terXr6+DBw/m65eSkmJ3p9i3334rDw8PNWjQIF/fRo0ayWq1KiUlRfXq1bObgoODbf0qV66s/v37a+7cuZo0aZJmzJjhdP3A3x1nbgDYeHp6at++fbY/X2n58uU6deqUYmNj7c7QSNL999+vmTNnFvicGkfOnTuntLQ0uzar1aoKFSoUuE65cuXUu3dvjR49WhkZGXbP4Klfv74WL16szZs3q0KFCnr77bd17NgxNWrUqNA1XdpOSkqKEhISdNttt2nFihW2y3CX8/LyUv/+/fXWW28pIyNDTzzxhHr16pXvkpR0cYDyf/7zH40YMUJ5eXm68847lZ6erm+++UZ+fn7q37+/xowZo9DQUDVu3FhZWVlavny5br31VqdqB8CZGwBX8PPzK/B27JkzZ6pDhw75go10Mdxs3brVqQfpffDBB6patardFBMTc831YmNjderUKUVGRtpdHnvhhRfUqlUrRUZGKiIiQkFBQdf1hOBu3bppxIgRGjZsmFq0aKHNmzfrxRdfzNevXr16+uc//6nOnTurY8eOatasmd57770Ct/vqq6/qxRdfVFxcnG699VZ16tRJK1asUEhIiCSpTJkyGj16tJo1a6a2bdvK09NTCQkJTtcP/N1ZDOMa928CAACUIJy5AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApvL/s2EKz3IU2acAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, mape2_1, mape3, mape4, mape5, mape6, mape7, mape8, mape8_1, mape9, mape10]\n", + "\n", + "# List of corresponding labels for each MAPE value\n", + "labels = ['MAPE1', 'MAPE2', 'MAPE2_1', 'MAPE3', 'MAPE4', 'MAPE5', 'MAPE6', 'MAPE7', 'MAPE8', 'MAPE2_1', 'MAPE9', 'MAPE10']\n", + "\n", + "# Plotting the bar graph\n", + "plt.bar(labels, mape_values)\n", + "plt.xlabel('MAPE Variables')\n", + "plt.ylabel('MAPE Values')\n", + "plt.title('Bar Graph of MAPE')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bCF5ZehcARcw", + "outputId": "ed3103b5-2636-48c5-82ba-60f8b3dfd729" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Length of labels: 12\n", + "Length of mape_values: 10\n" + ] + } + ], + "source": [ + "print(\"Length of labels:\", len(labels))\n", + "print(\"Length of mape_values:\", len(mape_values))" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "ZDPV0M5rDTi6", + "outputId": "2b5b43fb-f025-41ff-dc55-6193541132e0" + }, + "outputs": [ + { + "data": { + "image/png": "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6dMHffr00Xv8lStXom7duliwYAEAoHHjxjh69CgWLVqEoKCgyiqTiIiIqqAqdU5OUlISAgMDtYYFBQUhKSnJRBURERGRuTLpnhxDpaenw93dXWuYu7s7srOzce/ePdjY2JSZJj8/H/n5+dL77OzsSq+TiIiITK9K7cmpiOjoaDg6OkovLy8vU5dEpSkUpnsRUdXCbQUZqEqFHA8PD2RkZGgNy8jIgIODg869OAAwdepUZGVlSa+rV68+iVLND8MEEdHThdv9qnW4KiAgAN98843WsPj4eAQEBJQ7jUqlgkqlquzSiMhcmXKDK4Tplk1Ept2Tk5OTg9OnT+P06dMA7l8ifvr0aaSmpgK4vxcmLCxMGn/s2LH4888/8e677+L8+fNYvnw5Nm/ejMmTJ5uifCIiIjJjJt2T8/PPP6Nbt27S+4iICABAeHg4YmJikJaWJgUeAKhbty727t2LyZMnY8mSJahduza++OILXj5ORGRMptr7xT1fZGQKIZ6uXpWdnQ1HR0dkZWXBwcHB1OU8Oea6y95c6yL5YB8znLmGHHOty1zJrO9X5Pe7Sp14TERERKQvhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlS1MXQEREVKXJ7GnfcsI9OURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkS5amLoCIDKRQmGa5Qjz8c3Oti4ieWtyTQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJsBEhGZgqlungjwBor01OCeHCIiIpIl7skxNt7anoiIyCxwTw4RERHJEvfkEOnC8yWIiKo87skhIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZMnnIWbZsGXx8fKBW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tRAREREZjV4hZ9euXejTpw+srKywa9euh477wgsvGKUwIiIioseh1yXkSqUS6enpcHNzg1JZ/rnKCoUCxcXFRi3Q2HgJuQlUxUsczbUugH3sQeZaF8A+ZijWZbiq2scqoCK/33rtydFoNDr/TURERGSuDL6EXJfbt28bYzZERERERmNwyJk3bx5iY2Ol94MGDYKLiwtq1aqFM2fOGLU4IiIioooyOOSsXLkSXl5eAID4+HgcOnQI+/fvR58+ffDOO+8YvUAiIiKiijD4EvL09HQp5OzZsweDBw9Gr1694OPjg/bt2xu9QCIiIqKKMHhPjrOzM65evQoA2L9/PwIDAwEAQgizv7KKiIiInh4G78l58cUXMXToUDRo0AA3b95Enz59AAC//PILfH19jV4gERERUUUYHHIWLVoEHx8fXL16FR9//DHs7OwAAGlpaRg3bpzRCyQiIiKqCL1uBignvBmgCVTFm1WZa10A+9iDzLUugH3MUKzLcFW1j1VApd0MkI91ICIioqqGj3UwNv5Po6yq+D8Nc60LYB97kLnWBbCPGYp1Ga6q9rEK4GMdiIiIiP6fUR7rQERERGRuDA45b7zxBj799NMyw5cuXYo333zTGDURERERPTaDQ862bdvQqVOnMsM7duyIrVu3GqUoIiIiosdlcMi5efMmHB0dywx3cHDAjRs3jFIUERER0eMyOOT4+vpi//79ZYbv27cP9erVM0pRRERERI/L4DseR0REYMKECcjMzET37t0BAAkJCViwYAEWL15s7PqIiIiIKsTgkPPKK68gPz8fH374IebMmQMA8PHxwYoVKxAWFmb0AomIiIgq4rEe65CZmQkbGxvp+VVVAW8GaAJV8WZV5loXwD72IHOtC2AfMxTrMlxV7WMVUJHf7wrdJ6eoqAiHDh1CXFwcSjLStWvXkJOTU5HZERERERmdwYerrly5gt69eyM1NRX5+fno2bMn7O3tMW/ePOTn52PlypWVUScRERGRQQzekzNp0iS0adMG//77L2xsbKThAwcOREJCglGLIyIiIqoog/fkHDlyBD/88AOsra21hvv4+OCff/4xWmFEREREj8PgPTkajUbnk8b//vtv2NvbG6UoIiIiosdlcMjp1auX1v1wFAoFcnJyEBkZib59+1aoiGXLlsHHxwdqtRrt27fH8ePH9Zpu06ZNUCgUGDBg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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, precision2_1, precision3, precision4, precision5, precision6, precision7, precision8, precision8_1, precision9, precision10]\n", + "\n", + "# List of corresponding labels for each precision value\n", + "labels = ['Precision1', 'Precision2', 'Precision2_1', 'Precision3', 'Precision4', 'Precision5', 'Precision6', 'Precision7', 'Precision8', 'Precision8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "39LBleNeDeuw", + "outputId": "66c1cd08-96bb-46bb-afd3-7792e2b71345" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFVUlEQVR4nO3df3zO9eL/8ee1za7NMD83msUwSjKaH01Gq62hRDkSObZZOYo4dnxEYeQci/Krg/TD73OKQh3FEc1RiSizQsjv0WHzc2Njy/b+/uG767hs2DWba3t73G+363Zr773f1+u59/V2Xc/evy6LYRiGAAAATMLF2QEAAABKEuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGQLk1btw4WSwWnTp1qtTHWrNmjVq0aCEPDw9ZLBadO3eu1McsLRaLRePGjbP9vGDBAlksFh0+fNhpmYCSRLkByqD8D5urHz4+PgoLC9O///3v257n888/V9euXeXr6yt3d3dVr15dHTp00JQpU5SRkXHb89xup0+f1jPPPCNPT0/NmjVLixcvlpeXV6HzXvvaubm5yc/PT9HR0frtt99uc3LgzuTm7AAAru/1119XQECADMNQamqqFixYoC5duujzzz/XE088Uerj5+XlKTY2VgsWLND999+vl156Sf7+/jp//rw2b96s0aNHa/Xq1UpMTCz1LM70ww8/6Pz585owYYLCw8OLtEz+a3fp0iV9//33WrBggTZu3KidO3fKw8OjlBMDdzbKDVCGde7cWa1atbL9HBsbK19fX3300UclUm7y8vKUk5Nz3Q/byZMna8GCBRo2bJimTJkii8Vi+93QoUN1/PhxLVq06JbGKA/S0tIkSVWrVi3yMle/ds8//7xq1qypSZMmaeXKlXrmmWdKIyaA/4/DUkA5UrVqVXl6esrNzf7/S9566y21a9dONWrUkKenp4KDg7Vs2bICy1ssFg0ePFj//Oc/dd9998lqtWrNmjWFjpWVlaVJkybpvvvu05tvvmlXbPLVqVNHr7zySpHHKE7OJk2ayMPDQ8HBwfrmm28KzXru3DlFR0eratWq8vb2VkxMjLKysgpfidf45JNPFBwcLE9PT9WsWVN9+/a1O3z08MMPKyoqSpLUunVrWSwWRUdHF+m5rxYaGipJOnDggN30PXv26A9/+IOqV68uDw8PtWrVSitXriz0bxw2bJjq168vq9WqunXrql+/frbzjXJycjR27FgFBwfL29tbXl5eCg0N1X/+8x+HswLlHXtugDIsPT1dp06dkmEYSktL09///ndduHBBffv2tZtvxowZevLJJ/Xcc88pJydHS5YsUc+ePfXFF1/o8ccft5t3/fr1+vjjjzV48GDVrFlT9evXL3TsjRs36ty5cxo+fLhcXV0dyn29MRzJ+fXXX2vp0qUaMmSIrFarZs+erU6dOmnr1q1q1qyZ3bzPPPOMAgIClJCQoKSkJH3wwQfy8fHRpEmTbphzwYIFiomJUevWrZWQkKDU1FTNmDFD3333nbZv366qVavqtddeU5MmTfTee+/ZDjU1bNjQofUhyXaybrVq1WzTdu3apYceekh+fn4aOXKkvLy89PHHH6t79+5avny5nnrqKUnShQsXFBoaqt27d6t///564IEHdOrUKa1cuVLHjh1TzZo1lZGRoQ8++EC9e/fWCy+8oPPnz2vu3LmKjIzU1q1b1aJFC4czA+WWAaDMmT9/viGpwMNqtRoLFiwoMH9WVpbdzzk5OUazZs2MRx55xG66JMPFxcXYtWvXTTPMmDHDkGR89tlndtMvX75snDx50u6Rl5dXpDEcySnJ+PHHH23Tjhw5Ynh4eBhPPfWUbVp8fLwhyejfv7/d8k899ZRRo0aNG/59OTk5ho+Pj9GsWTPj4sWLtulffPGFIckYO3asbVr+6/HDDz/c8Dmvnverr74yTp48aRw9etRYtmyZUatWLcNqtRpHjx61zfvoo48a999/v3Hp0iXbtLy8PKNdu3ZGYGCgbdrYsWMNScaKFSsKjJe/7i9fvmxkZ2fb/e7s2bOGr69vgfUjyYiPjy+Q+dChQzf9+4DygMNSQBk2a9YsrVu3TuvWrdM//vEPhYWF6fnnn9eKFSvs5vP09LT999mzZ5Wenq7Q0FAlJSUVeM6OHTuqadOmNx07/yqoSpUq2U3fsWOHatWqZfc4ffp0kcZwJGdISIiCg4NtP999993q1q2bvvzyS+Xm5trNO3DgQLufQ0NDdfr06RteyfXjjz8qLS1NL730kt35QI8//rjuuecerVq16rrLFkV4eLhq1aolf39//eEPf5CXl5dWrlypunXrSpLOnDmj9evX65lnntH58+d16tQpnTp1SqdPn1ZkZKT27dtnOzy2fPlyBQUF2fbkXC3/cKGrq6vc3d0lXTnP6cyZM7p8+bJatWpV6PoFzIzDUkAZ1qZNG7sTinv37q2WLVtq8ODBeuKJJ2wfZl988YX++te/Kjk5WdnZ2bb5CztPJiAgoEhjV65cWdKVQyJXa9SokdatWydJWrRokRYvXlzkMRzJGRgYWGBa48aNlZWVpZMnT6p27dq26XfffbfdfPmHfs6ePasqVaoUmuXIkSOSpCZNmhT43T333KONGzcWulxRzZo1S40bN1Z6errmzZunb775Rlar1fb7/fv3yzAMjRkzRmPGjCn0OdLS0uTn56cDBw6oR48eNx1z4cKFmjJlivbs2aPff//dNr2orzlgFpQboBxxcXFRWFiYZsyYoX379um+++7Tt99+qyeffFIdOnTQ7NmzVadOHVWoUEHz58/Xhx9+WOA5rt57ciP33HOPJGnnzp3q1q2bbXqlSpVsl0NfrwAUNoajOR1xvXOCDMO4pee9FVcX0+7du6t9+/bq06eP9u7dq0qVKikvL0+SNHz4cEVGRhb6HI0aNSryeP/4xz8UHR2t7t276//+7//k4+MjV1dXJSQkFDiJGTA7yg1Qzly+fFnS//aoLF++XB4eHvryyy/t9gzMnz//lsYJDQ2Vt7e3lixZolGjRsnF5daOYjuac9++fQWm/frrr6pYsaJq1ap1S1kkqV69epKkvXv36pFHHrH73d69e22/Lwn5JSMsLEwzZ87UyJEj1aBBA0lShQoVbnrvnIYNG2rnzp03nGfZsmVq0KCBVqxYYbcnLD4+/tb/AKCc4ZwboBz5/ffftXbtWrm7u+vee++VdOWD02Kx2J2HcvjwYX322We3NFbFihU1YsQI7dy5UyNHjix0L4gje0Yczbl582a7c0WOHj2qf/3rX3rsscccvnqrMK1atZKPj4/mzJljd4js3//+t3bv3l3g6q1b9fDDD6tNmzaaPn26Ll26JB8fHz388MN69913dfz48QLznzx50vbfPXr00E8//aRPP/20wHz5r0H+Orn6NdmyZYs2b95con8HUB6w5wYow/79739rz549kq6cf/Hhhx9q3759GjlypO1ckscff1xTp05Vp06d1KdPH6WlpWnWrFlq1KiRfv7551saf+TIkdq9e7fefPNNrV27Vj169FDdunV19uxZJSUl6ZNP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g5WYmGiblpeXp8TERIWEhBSY/5577tGOHTuUnJxsezz55JMKCwtTcnIye2QAAIDj3y1V0uLi4hQVFaVWrVqpTZs2mj59ujIzMxUTEyNJ6tevn/z8/JSQkCAPDw81a9bMbvmqVatKUoHpAADgzuT0ctOrVy+dPHlSY8eO1YkTJ9SiRQutWbPGdpJxSkqKXFycuoMJAACUI8X+4szyii/OvP3K4xe7ldVcEtvYtcpqLoltzFHkclx53caK47Z8cSYAAEBZRLkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmUibKzaxZs1S/fn15eHiobdu22rp163Xnff/99xUaGqpq1aqpWrVqCg8Pv+H8AADgzuL0crN06VLFxcUpPj5eSUlJCgoKUmRkpNLS0gqdf8OGDerdu7f+85//aPPmzfL399djjz2m33777TYnBwAAZZHFMAzDmQHatm2r1q1ba+bMmZKkvLw8+fv76+WXX9bIkSNvunxubq6qVaummTNnql+/fjedPyMjQ97e3kpPT1eVKlVuOf+1LCX+jEVzsxfRWbmkG2cjV0Fl9bUkl+PYxhxDLseV122sOBz5/HbqnpucnBxt27ZN4eHhtmkuLi4KDw/X5s2bi/QcWVlZ+v3331W9evVCf5+dna2MjAy7BwAAMC+nlptTp04pNzdXvr6+dtN9fX114sSJIj3HK6+8orvuusuuIF0tISFB3t7etoe/v/8t5wYAAGWX08+5uRVvvPGGlixZok8//VQeHh6FzjNq1Cil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burRo4d27dqlrKwsRURE2M2fk5Ojli1bSpKSk5MVGhpq+z+Va6Wmpmr06NHasGGD0tLSlJubq6ysLKWkpDicLSoqSkePHi31bJmZmbZxAwMDFRYWpgYNGqhz586Srpxkd+24+ScQxsfHa9OmTaW6Tq62c+dOdevWTfHx8dq/f7/Dr2VWVpaM/39D79J8La/ONXHiROXm5qpfv34aNmyYU7exsLAw+fv767ffflOdOnXk5uamjh072tZNWdn281/Lu+66S5MnT3b6OmvevLmmTp2qiIgI3X333Ro1apTat2+vDh06KDIy0nZo73bnunp9nTlzRp9//rkeffRRvffee05/r7h48aLthPrGjRvr3nvv1aJFi9StW7dS24YuXryo2NhYPfTQQ/roo4+Um5urt956S4mJierYsaPefffdIr9XXLx40fZt2iX5OoaFhem1115TWFiYunbtKh8fH02YMEHZ2dl68803FRoaKkm2PSPffvutgoODSzxHeUC5cZCXl5caNWok6cpu1KCgIM2dO9f2xZ2rVq2Sn5+f3TL5h0A8PT1v+NxRUVE6ffq0ZsyYoXr16slqtSokJKTAuR5FydatWzdNnjy51LPl5eXZjTt48GDFx8dr6dKltmWvHnffvn3q27ev+vTpo9GjR6tHjx6luk7y/fLLL3r00Uc1YMAAjR49WtHR0Q6/ls8995ztd6X5Wl6d66OPPlJQUJBOnjypESNGaODAgVq0aJGaN29ut8zt2Ma8vLyUlJSkHTt2SLpyrsG8efNsv+/Ro4fGjBlz23PlZ7v2tXzkkUeUmpoqyXn/Lr28vGzbzAcffKDHH3/cbhsbNGhQgZPEb1euq9dXzZo15e/vr3r16kly7nvFd999pylTpmjz5s1ycXGR1WqVr6+vKlaseMMP2lvdhj788EMdPnzYNm7+tIoVKyojI8Oh94oRI0YoMzPzltZXYbm9vLxUv359SdK4ceMUFRWluXPnqkePHnrzzTe1bNkyNWnSRMeOHVPnzp318ccfq3Xr1iWeo7hq165t+zeZL//n/HOxSgrl5ha4uLjo1VdfVVxcnH799VdZrValpKTY/m/2Ws2bN9fChQv1+++/F9qev/vuO82ePVtdunSRJB09etR23NZR+ZeCjx49ulSz5V+WmC9/nQwdOlTSlf+DyB93165dio6OVmxsrO3yv9uxTnbt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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, recall2_1, recall3, recall4, recall5, recall6, recall7, recall8, recall8_1, recall9, recall10]\n", + "\n", + "# List of corresponding labels for each recall value\n", + "labels = ['Recall1', 'Recall2', 'Recall2_1', 'Recall3', 'Recall4', 'Recall5', 'Recall6', 'Recall7', 'Recall8', 'Recall8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "id": "13cZXvb0DsvK" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true + }, + "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.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Python File/Stock_Price_Prediction_REMOTE_19716.ipynb b/Python File/Stock_Price_Prediction_REMOTE_19716.ipynb new file mode 100644 index 0000000..5312833 --- /dev/null +++ b/Python File/Stock_Price_Prediction_REMOTE_19716.ipynb @@ -0,0 +1,2034 @@ +{ + "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", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SOQbXSiB-g5G", + "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e" + }, + "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')\n", + "df = pd.read_csv('SBIN.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Analysis and Visualization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Print first 5 rows of dataset\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# basic dataset features information\n", + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Summary of numerical columns\n", + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Checking for null values\n", + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Drop the 'Date' and 'Adj Close' columns\n", + "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "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": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Checking for null values\n", + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Adding Indicators" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SMA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Its the avg of stock price over a specific time period\n", + "\n", + "SMA = (sum of closing price os past n days) / n\n", + "\n", + "It helps identify trends by filtering out shortterm fluctuations\n", + "\n", + "Price above SMA indicate Uptrend and price below SMA indicate lowertrend" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "df[\"SMA_10\"] = df[\"Close\"].rolling(window=10).mean()\n", + "df[\"SMA_50\"] = df[\"Close\"].rolling(window=50).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "df.dropna(subset=['SMA_10', 'SMA_50'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolumeSMA_10SMA_50
4922.64921822.73413522.27652722.63506539637704.023.10257920.537146
5022.17273922.36144321.83779022.11612939109363.022.92944320.603004
5122.09254122.18689221.88968322.08310527429706.022.75725020.680184
5222.07366922.68695821.96044722.61147727421227.022.63506520.777649
5322.69167522.88981422.46523122.58788936343129.022.62657320.875870
\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 \n", + "49 20.537146 \n", + "50 20.603004 \n", + "51 20.680184 \n", + "52 20.777649 \n", + "53 20.875870 " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RSI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is a momentum indicator used to measure the speed and change of price movements. It ranges from 0 to 100 and helps identify whether a stock is overbought or oversold. \n", + "\n", + "RSI > 70: Overbought \n", + "RSI < 30: Oversold" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "delta = df['Close'].diff(1)\n", + "\n", + "gain = delta.where(delta > 0, 0)\n", + "loss = -delta.where(delta < 0, 0)\n", + "\n", + "avg_gain = gain.rolling(window=14).mean()\n", + "avg_loss = loss.rolling(window=14).mean()\n", + "\n", + "rs = avg_gain / avg_loss # Relative Strength\n", + "df['RSI'] = 100 - (100 / (1 + rs))\n", + "\n", + "df.dropna(subset=['RSI'], inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Representing RSI Graphically" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAMWCAYAAADs4eXxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUZcLG4SeBEGqCICSgNEVFsCBIyWJFBBELih0FFcGCvaN8YFtxdVdXFNuqYC/YZVVARFSKAgqLgAiIgkIoIonUtPn+eD05Z2bOTGYm0/O7ryvX6WfeSSaQ57wtw+PxeAQAAAAAAKIuM9EFAAAAAAAgXRG6AQAAAACIEUI3AAAAAAAxQugGAAAAACBGCN0AAAAAAMQIoRsAAAAAgBghdAMAAAAAECOEbgAAAAAAYoTQDQAAAABAjBC6AQCowT7//HNlZGTorbfeSsjrT5o0SRkZGfr5558T8voAAMQaoRsAgDhbsmSJzjrrLLVp00Z169bVPvvsoxNPPFGPPfaY13n333+/3nvvvcQUMgQ///yzMjIyKr9q1aql1q1b64wzztCiRYsSXTwAAJJChsfj8SS6EAAA1BRz5szR8ccfr9atW2vo0KHKz8/XunXrNG/ePK1evVqrVq2qPLdhw4Y666yzNGnSpJiV5/PPP9fxxx+vyZMn66yzzgrr2p9//lnt2rXT+eefr5NPPlnl5eVavny5nnzySe3Zs0fz5s1T586dg96jvLxcpaWlys7OVkZGRjXeCQAAyal2ogsAAEBN8ve//125ubmaP3++Gjdu7HVs06ZNiSlUNXXp0kUXXnhh5XavXr102mmn6cknn9TTTz/tes2OHTvUoEED1apVS7Vq1YpXUQEAiDualwMAEEerV69Wp06d/AK3JDVv3rxyPSMjQzt27NALL7xQ2Xz74osvrjz+3XffqX///srJyVHDhg11wgknaN68eX733LZtm2644Qa1bdtW2dnZ2nfffTVkyBBt2bIlYBn37NmjU045Rbm5uZozZ07Y77F3796SpDVr1kiy+23PmjVLV111lZo3b659993X65hvn+6PP/5Yxx57rBo1aqScnBx169ZNr776qtc5X3/9tU466STl5uaqfv36OvbYYzV79uywywsAQCxR0w0AQBy1adNGc+fO1ffff69DDjkk4HkvvfSSLrvsMnXv3l0jRoyQJO2///6SpKVLl+roo49WTk6Obr31VmVlZenpp5/Wcccdp1mzZqlHjx6SpO3bt+voo4/W8uXLdemll6pLly7asmWLPvjgA/3666/ae++9/V53165dOv3007VgwQJ9+umn6tatW9jvcfXq1ZKkpk2beu2/6qqr1KxZM40ZM0Y7duwIeP2kSZN06aWXqlOnTho1apQaN26s7777Tp988okuuOACSdJnn32m/v37q2vXrho7dqwyMzM1ceJE9e7dW19++aW6d+8edrkBAIgFQjcAAHF08803q3///urcubO6d++uo48+WieccIKOP/54ZWVlVZ534YUX6oorrtB+++3n1XRbkkaPHq3S0lJ99dVX2m+//SRJQ4YM0UEHHaRbb71Vs2bNkiQ99NBD+v777/XOO+/ojDPO8LrebUiX7du365RTTtHSpUv12WefVdkf27Jz505t2bJF5eXl+uGHH3TDDTdIks4++2yv85o0aaIZM2YEbU5eVFSka6+9Vt27d9fnn3+uunXrVh6zyuzxeHTFFVfo+OOP18cff1zZF/zyyy9Xp06dNHr0aE2bNi2ksgMAEGs0LwcAII5OPPFEzZ07V6eddpoWL16sBx98UP369dM+++yjDz74oMrry8vLNW3aNA0cOLAycEtSixYtdMEFF+irr75ScXGxJOntt9/W4Ycf7hW4Lb6DlhUVFalv37764Ycf9Pnnn4ccuCVp7NixatasmfLz83Xcccdp9erV+sc//qEzzzzT67zhw4dX2X97+vTp+vPPP3X77bd7BW5nmRctWqSVK1fqggsu0O+//64tW7Zoy5Yt2rFjh0444QR98cUXqqioCLn8AADEEjXdAADEWbdu3fTOO++opKREixcv1rvvvqtHHnlEZ511lhYtWqSOHTsGvHbz5s3auXOnDjroIL9jBx98sCoqKrRu3Tp16tRJq1ev1qBBg0Iq0/XXX6/du3fru+++U6dOncJ6PyNGjNDZZ5+tzMxMNW7cWJ06dVJ2drbfee3atavyXlbT9GBN71euXClJGjp0aMBzioqKtNdee1X5egAAxBqhGwCABKlTp466deumbt266cADD9Qll1yiyZMna+zYsXEvy+mnn67XX39dDzzwgF588UVlZobeGO6AAw5Qnz59qjyvXr161SliJasW+6GHHgpYI9+wYcOovBYAANVF6AYAIAkceeSRkqQNGzZU7nObt7pZs2aqX7++VqxY4Xfshx9+UGZmplq1aiXJDLz2/fffh/T6AwcOVN++fXXxxRerUaNGevLJJyN5G9VmDRb3/fffq3379kHPycnJCSnsAwCQSPTpBgAgjmbOnOk6iNlHH30kSV7Nxhs0aKBt27Z5nVerVi317dtX77//vtc0Wxs3btSrr76qo446Sjk5OZKkQYMGVTZf9+VWhiFDhmj8+PF66qmndNttt0Xy9qqtb9++atSokcaNG6fdu3d7HbPK3LVrV+2///765z//qe3bt/vdY/PmzXEpKwAAoaCmGwCAOLrmmmu0c+dOnXHGGerQoYNKSko0Z84cvfHGG2rbtq0uueSSynO7du2qTz/9VA8//LBatmypdu3aqUePHrrvvvs0ffp0HXXUUbrqqqtUu3ZtPf3009qzZ48efPDByutvueUWvfXWWzr77LN16aWXqmvXrtq6das++OADPfXUUzr88MP9ynf11VeruLhYd955p3Jzc3XHHXfE5ftiycnJ0SOPPKLLLrtM3bp10wUXXKC99tpLixcv1s6dO/XCCy8oMzNTzz77rPr3769OnTrpkksu0T777KPffvtNM2fOVE5Ojj788MO4lhsAgEAI3QAAxNE///lPTZ48WR999JGeeeYZlZSUqHXr1rrqqqs0evRoNW7cuPLchx9+WCNGjNDo0aO1a9cuDR06VD169FCnTp305ZdfatSoURo3bpwqKirUo0cPvfzyy5VzdEumX/OXX36psWPH6t1339ULL7yg5s2b64QTTtC+++4bsIx33HGHioqKKoP3yJEjY/kt8TNs2DA1b95cDzzwgO69915lZWWpQ4cOlVORSdJxxx2nuXPn6t5779Xjjz+u7du3Kz8/Xz169NDll18e1/ICABBMhsetfRkAAAAAAKg2+nQDAAAAABAjhG4AAAAAAGKE0A0AAAAAQIwQugEAAAAAiBFCNwAAAAAAMULoBgAAAAAgRpinW1JFRYXWr1+vRo0aKSMjI9HFAQAAAAAkOY/Hoz///FMtW7ZUZmbg+mxCt6T169erVatWiS4GAAAAACDFrFu3Tvvuu2/A44RuSY0aNZJkvlk5OTkJLg0AAAAAINkVFxerVatWlXkyEEK3VNmkPCcnh9ANAAAAAAhZVV2UGUgNAAAAAIAYIXQDAAAAABAjhG4AAAAAAGKEPt0hqqioUElJSaKLgTjIyspSrVq1El0MAAAAAGmA0B2CkpISrVmzRhUVFYkuCuKkcePGys/PZ952AAAAANVC6K6Cx+PRhg0bVKtWLbVq1SropOdIfR6PRzt37tSmTZskSS1atEhwiQAAAACkMkJ3FcrKyrRz5061bNlS9evXT3RxEAf16tWTJG3atEnNmzenqTkAAACAiFFtW4Xy8nJJUp06dRJcEsST9YCltLQ0wSUBAAAAkMoI3SGib2/Nws8bAAAAQDQQugEAAAAAiBFCdw2XkZGh9957L9HFCNtxxx2n66+/PtHFAAAAAICgCN1prLCwUNdcc432228/ZWdnq1WrVjr11FM1Y8aMRBet0l133aWMjAxlZGSodu3aatu2rW644QZt37496HXvvPOO7r333jiVEgAAAAAiw+jlaernn39Wr1691LhxYz300EM69NBDVVpaqqlTp2rkyJH64YcfEl3ESp06ddKnn36qsrIyzZ49W5deeql27typp59+2u/ckpIS1alTR02aNElASQEAAAAgPNR0p6mrrrpKGRkZ+uabbzRo0CAdeOCB6tSpk2688UbNmzcv4HVLlixR7969Va9ePTVt2lQjRozwqnX+/PPP1b17dzVo0ECNGzdWr1699Msvv1Qef//999WlSxfVrVtX++23n+6++26VlZUFLWvt2rWVn5+vfffdV+eee64GDx6sDz74QJKpCe/cubOeffZZtWvXTnXr1pXk37x8z549uu2229SqVStlZ2erffv2eu655yqPf//99+rfv78aNmyovLw8XXTRRdqyZUtY31MAAAAACBc13WHyeKSdOxPz2vXrS6EMqr1161Z98skn+vvf/64GDRr4HW/cuLHrdTt27FC/fv1UUFCg+fPna9OmTbrssst09dVXa9KkSSorK9PAgQM1fPhwvfbaayopKdE333xTOdL3l19+qSFDhmj8+PE6+uijtXr1ao0YMUKSNHbs2JDfZ7169VRSUlK5vWrVKr399tt65513As6ZPWTIEM2dO1fjx4/X4YcfrjVr1lSG6m3btql379667LLL9Mgjj2jXrl267bbbdM455+izzz4LuVwAAAAAEC5Cd5h27pQaNkzMa2/fLrlkaD+rVq2Sx+NRhw4dwrr/q6++qt27d+vFF1+sDOuPP/64Tj31VP3jH/9QVlaWioqKdMopp2j//feXJB188MGV19999926/fbbNXToUEnSfvvtp3vvvVe33npryKF74cKFevXVV9W7d+/KfSUlJXrxxRfVrFkz12t+/PFHvfnmm5o+fbr69OlT+dqWxx9/XEcccYTuv//+yn3PP/+8WrVqpR9//FEHHnhgSGUDAAAAgHARutOQx+OJ6Lrly5fr8MMP96od79WrlyoqKrRixQodc8wxuvjii9WvXz+deOKJ6tOnj8455xy1aNFCkrR48WLNnj1bf//73yuvLy8v1+7du7Vz507Vr1/f9XWXLFmihg0bqry8XCUlJRowYIAef/zxyuNt2rQJGLgladGiRapVq5aOPfZY1+OLFy/WzJkz1dDlacnq1asJ3QAAAABihtAdpvr1TY1zol47FAcccIAyMjJiMljaxIkTde211+qTTz7RG2+8odGjR2v69Onq2bOntm/frrvvvltnnnmm33VWX2w3Bx10kD744APVrl1bLVu2VJ06dbyOuzWRd6pXr17Q49u3b6+srfdlPTAAAAAAgFggdIcpIyO0Jt6J1KRJE/Xr108TJkzQtdde6xdat23b5tqv++CDD9akSZO0Y8eOymtmz56tzMxMHXTQQZXnHXHEETriiCM0atQoFRQU6NVXX1XPnj3VpUsXrVixQu3btw+rvHXq1An7GqdDDz1UFRUVmjVrVmXzcqcuXbro7bffVtu2bVW7Nh95AAAAIJlt3Wq69ebmSo0aJbo01cfo5WlqwoQJKi8vV/fu3fX2229r5cqVWr58ucaPH6+CggLXawYPHqy6detq6NCh+v777zVz5kxdc801uuiii5SXl6c1a9Zo1KhRmjt3rn755RdNmzZNK1eurOzXPWbMGL344ou6++67tXTpUi1fvlyvv/66Ro8eHdP32rZtWw0dOlSXXnqp3nvvPa1Zs0aff/653nzzTUnSyJEjtXXrVp1//vmaP3++Vq9eralTp+qSSy5ReXl5TMsGAAAAIDy33y61aiWNH5/okkQHoTtN7bfffvr22291/PHH66abbtIhhxyiE088UTNmzNCTTz7pek39+vU1depUbd26Vd26ddNZZ52lE044obJ/df369fXDDz9UTkE2YsQIjRw5UpdffrkkqV+/fpoyZYqmTZumbt26qWfPnnrkkUfUpk2bmL/fJ598UmeddZauuuoqdejQQcOHD9eOHTskSS1bttTs2bNVXl6u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l4Zfhl69TG33wQeHf22qInQDAAAAQA0QjZru8nLpzz8jL0NOjrm+JtWSE7oBAAAAIE2VlUnnny91724GTfOVGWaH4/Ly6pcp2JRi6Yg+3QAAAACQ5P73PzPw2H33hXfd559Lb70l3Xpr9Gq6ER5CNwAAAAAkucMPN8v/+7/wrvN47PW33vI/Xp3Q3aRJeNfWVIRuAAAAAEhiv/4anfu8/77/vkhC94EHmvXnnqt+mWoCQjcAAAAAJLGff4782oqKqBVDkgndVj/wxo2je+90RegGAAAAgCRWnZG+S0qCH//998DHunf337dzpz1Pd926kZerJiF0AwAAAEASy8qK/Nply4IfX7068DG3eb1r15bWrDHr2dmRl6smIXQDAAAAQBKYNUtavNh/f22fiZ6dg6NV5fbbIy+P20jl27fb69R0h4Z5ugEAAAAgwX79VTruOLNeUWGmB7NYzbktZWXVq/0OlVtNt1NNm287UtR0AwAAAECCrVplr0+d6n3s0Ue9t6sKw9FS1euEO/J5TUXoBgAAAIAEcwbcH3/0PjZ9uvd2OM3L3QZDC5VV8x5Iy5aR37smIXQDAAAAQII5Q/euXd7HfGuU//wz9PsefHDkZbrnHumOOwIfzyRNhoRvEwAAAAAkWGmpvb57t/cx39D9yCOR3TdczZtLf/975NfDIHQDAAAAQII5B0tr08b72LBh3tubNoV+3+qEbkQHoRsAAAAAEmzrVnu9Th3vY82aeW/71oQHU1IS/PgZZ4R+L6enn47supqI0A0AAAAACXb55fa67/zYFRXe287Q/d130oYNge/7ww/++yZNstdfeSXkInpp0iSy62oi5ukGAAAAgCTiG7p9a6ut0L1okdSli1kvLZVqu6S7FSv89110kdSokdStm1SvXmRlrFs3sutqImq6AQAAACCJ+Ibum27y3p42zSyPOsre9/jjod8/M1M680ypVavIyidJ2dmRX1vTELoBAAAAIIk4Q/fOnYGP79hh7/vkE//znNOQVceSJWb6sGeesfdR0x06mpcDAAAAQBJx9tl+8033czwe7223ObOLi/337btv+OU55BDzNXmyvY/QHTpqugEAAAAgidxyi70+frz7Obt2eW+79d3ets0s69e39519duTlco6qTvPy0BG6AQAAACCBgg2c9t137tf4Nh3fssX/nKIis8zNld56Sxo4UBozJuJier1GVlbk96lpaF4OAAAAAAnkW2vdvXvV15SWem+7NSW39uXkSIMGma/q2LPHXvdt3o7AElrTfddddykjI8Prq0OHDpXHd+/erZEjR6pp06Zq2LChBg0apI0bN3rdY+3atRowYIDq16+v5s2b65ZbblFZtEYMAAAAAIAY8x0szTmq+PHHu1/jG7rdWDXmsWgKfvDB0b9nukp4TXenTp306aefVm7Xdkwud8MNN+i///2vJk+erNzcXF199dU688wzNXv2bElSeXm5BgwYoPz8fM2ZM0cbNmzQkCFDlJWVpfvvvz/u7wUAAAAAwuUbuqdMsdebNHG/JpTQbZ0Trabg++9vr2dkROeeNUHCQ3ft2rWVn5/vt7+oqEjPPfecXn31VfXu3VuSNHHiRB188MGaN2+eevbsqWnTpmnZsmX69NNPlZeXp86dO+vee+/Vbbfdprvuukt1nD39AQAAACAJrV3rvb1njxnBvG5d7ybdTt9847/P4/EOw9EO3X37So8+KnXuHJ371RQJH0ht5cqVatmypfbbbz8NHjxYa//6xC1cuFClpaXq06dP5bkdOnRQ69atNXfuXEnS3LlzdeihhyovL6/ynH79+qm4uFhLly6N7xsBAAAAgAj8/rv/PiswOwdVczrrrMDX+G7XjlJVa0aGdO210jHHROd+NUVCa7p79OihSZMm6aCDDtKGDRt099136+ijj9b333+vwsJC1alTR40bN/a6Ji8vT4WFhZKkwsJCr8BtHbeOBbJnzx7tcTwyKnYbdQAAAAAA4sAtWFsDlQWq6XZTWuo9rVe0a7oRmYSG7v79+1euH3bYYerRo4fatGmjN998U/Xq1YvZ644bN0533313zO4PAAAAAKH65BP/fdY0YoFqut0EqukmdCdWwpuXOzVu3FgHHnigVq1apfz8fJWUlGibNaP7XzZu3FjZBzw/P99vNHNr262fuGXUqFEqKiqq/Fq3bl103wgAAAAAhGjSJP99VugOp6bbN6ATupNDUoXu7du3a/Xq1WrRooW6du2qrKwszZgxo/L4ihUrtHbtWhUUFEiSCgoKtGTJEm3atKnynOnTpysnJ0cdO3YM+DrZ2dnKycnx+gIAAACAZHHppdK771LTnQ4S2rz85ptv1qmnnqo2bdpo/fr1Gjt2rGrVqqXzzz9fubm5GjZsmG688UY1adJE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yTjVESK3fr10111m/aCDpF69pFWr7ONlZVJ2dkKKlrIChe7cXGnYsPiWJRhn6H7//cB9oa0a7kAP3P73v8heM1YI3QgXHxUAAJAQv/7qvj9QDThSk7P5eN++0kcfeR+npju6nnsuOvfZsqX693A+QNtvP7tJfDg13b/9Jl17beivGY9+7YRuhIuPCgAASAjnyMZOvlMhIbX5hiDfWm1Cd/hiPR/1889LzZpJ99xTvfs4m3oXFZmRxiWpQQPv84LVdC9bFt5rxjN0M083QkXoBgAAcffLL9Jll7kfe/DB+JYFseUbgoYM8d4mdCcf63dz7Njq3cf5sz33XHs6r0aNvM8LVtNdv777vZcscd9PTTeSER8VAAAQd0cdlegSIF58Q9C2bd7bhO7APB73EBnrmu5o3T/Ugd18a7qXLjVzb3/+uV077uuAA9z3x2M0/EB904FA+KgAAIC4C9SfG+mnqppHQndgAwaY5vi+wTOcUBwotMZDoNDtO26Db033wIHSl19Kxx8v/fCD+z2ys/2bqUvUdCM58VEBAABJZ8aMRJcA0ULojtzHH5vv3957R36P6obu+fMjvzbQz/bYY723fWu6CwvtY851STrrLOmRR8z6d9/535vQjWTERwUAACSdPn38myEjNS1eHPw4odsMOLZ5c+DjvtPo+dZ0v/pq4Frl6s7d3b174NrmqgR67datvbd9a7qdYda3ufjkydL115v1du387x2P5uWEboSLjwoAAEioxYul/ff3379xY/zLgugbPDj48SeeqNnBu7RUqltXat7cu9tFsCbkvsfOOsuuLfZV3dAt+U/zFqpI+3QHC91OVlh3inVN9+efSyNGmHVCN0KV0I/Kk08+qcMOO0w5OTnKyclRQUGBPv7448rju3fv1siRI9W0aVM1bNhQgwYN0kaf/4HXrl2rAQMGqH79+mrevLluueUWlbnNNwAAAJLSYYdJq1b57y8qin9ZEH9PP12zR6yfPdte//RTez3UGtvcXDu0ujVDj0bozs8PfnzJEumaa6Q1ayJ77XBquqsS69B9/PH2OqEboUroR2XffffVAw88oIULF2rBggXq3bu3Tj/9dC1dulSSdMMNN+jDDz/U5MmTNWvWLK1fv15nnnlm5fXl5eUaMGCASkpKNGfOHL3wwguaNGmSxowZk6i3BAAAQtCkiVkG+2M+GmEBqeG9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3y23n1+w32FnS5XWrYOXz9d995ll587e85VLodd0S9H/TIQ67RkQCKEbAADExWOPmeXmzcHP23dfU6vpO2qzG9+5fZNhUC0Y111nlitXxvZ14j1nu7MbgxVc3UKeNRbBnDn+x448Upo5M/zX7tnTLPPzQzv/1FOlJk3cr3EL3U2b2s3arZput2AfrNbZWbN/662hldNy553me/ntt/7N2sOZUiza/w44f75VzScOuCF0AwCAuHj66fDODzQ/sFNenve2c4RhxN/MmdKNN5p+zD/+GPl9jj029HOrajkRbc6+6tu3m2nM7rwztGuPOMI0154xwzxcCtfhh5ul1e86lOblVp/yDz+U/vtfM1DbunXufc0XLrTXrdDdrp3/ecG+587Qfd55VZfPV0aG+Qq3hUSsaro9Hu/vVSj/LgG+CN0AACAphfLHrW9wCXfQKlSPb//73r2lRx4xwfKYY8y+Aw4I/77hBK6q+vpGmzN0b9pk5pufPz+0a7/5xjRJtwJtuKxaVqsMoYRuK6C/8YZ0yinStGnSDTdU/bti9eW2atedQg3d1RndO9DsBoHEqqbbd1YEQjciQegGAABJqXHjqs+xRli2bN8ek6IggC1bpKeecj/WvLlZXn99+Pc96KDQz4136HbOu33MMeEFvNq1/T+z4bD6FoczHdt++5lljx72vo0bvZuXT57sf50zMI8f730sWFPvcAeOC2T2bHvdbXBFX87PQTRDt28zfEI3IkHoBgAASalp06rP8a1Jo093/F15pfv+t94yS7fRr6vyf/8nDR5sjwOQLBYu9J9HO5iffrLXb7ih+q9v1XRb/a5DqUm+9FKzPPhge19+vl3TvddeUteuwe/h21zb+eDB1yWXmOVRR1VdtlDdeGPV5zgfBESzeblvi4Bwa+ABidANAADiwPlH8LffhnZNJH/c+jYFRXT4TjcVjrVrw78mL096+WXTXN3JbUR752fr8celf/wj/NcLVa9ewQOnL+cDiauuqv7rW4OhWSOjhxK6rab6kybZ+/bZx67BrVPHf3Ru39YDBQXe28GmArvpJmnqVNN/PFqcZQ8kXjXdhG5EgtANAABiztnkNJI+vm6soLBmjb2P0B0bvqNQn3GG9/b330uLF7tfe+654b2Wsxm077Raw4fbg4lZrNBdViZdc410++3Szz+H95qhCnfMgGnT7HVrFPHq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9y+/2OtjxtjryTK6d7ByBKvp9hVsmjQAAJA4CQ3dO3bs0OGHH64JEya4Hn/wwQc1fvx4PfXUU/r666/VoEED9evXT7sdj/4HDx6spUuXavr06ZoyZYq++OILjRgxIl5vAQCQAJdfbq87/wtZtUr67jvplVfsfW4jmEvS8uWxKVu4AvXblqR99gl87LDDvLenTo1OeQAAQHQlNHT3799f9913n8444wy/Yx6PR//+9781evRonX766TrssMP04osvav369ZU14suXL9cnn3yiZ599Vj169NBRRx2lxx57TK+//rrWr18f53cDANHBQGpV27DBXh8wwF5v1Urq3Nl8Wazm5L4OPzwWJQtfsNDdvbv01FPSp59KF15o9ll9ta+7ziwPPji25QMAANWTtKOXr1mzRoWFherTp0/lvtzcXPXo0UNz586VJM2dO1eNGzfWkY65Vvr06aPMzEx9/fXXcS8zACD2Skvt9b/+O/DTsaO9/s477uckOqxaDwtuuCH4eZdfLp1wgvT449Lf/y59+aXZf8klplZ//vzYlhMAAFRP0g6kVlhYKEnKy8vz2p+Xl1d5rLCwUM195kypXbu2mjRpUnmOmz179mjPnj2V28XW/DEAgKRnzbMtSV27hnaNx+M9KFnLlu5zeMfT5MnS4sWmNjsUubnSHXfY2xkZdo3+3/5m93GX7BHaAQBA4iVtTXcsjRs3Trm5uZVfrVq1SnSRAKASA6kFdu653vNyB2uafddd9vq0ad59uFeulGon+LFzvXpSz55mzu3qOuEE7+0OHap/TwAAEB1JG7rz8/MlSRs3bvTav3Hjxspj+fn52uQzUWlZWZm2bt1aeY6bUaNGqaioqPJr3bp1US49ACDaioqkN98M/fzbb7fXTzrJrhXPy5Pq149u2RLN+SBCCjzvNwAAiL+kDd3t2rVTfn6+ZsyYUbmvuLhYX3/9tQoKCiRJBQUF2rZtmxYuXFh5zmeffaaKigr16NEj4L2zs7OVk5Pj9QUAySLdB1KbN880737lFem556S77w7tutWrvbdPOSX4+dnZ7uHa51luWvAN3dGoPQcAANGR0MZ127dv16pVqyq316xZo0WLFqlJkyZq3bq1rr/+et1333064IAD1K5dO/3f//2fWrZsqYEDB0qSDj74YJ100kkaPny4nnrqKZWWlurqq6/Weeedp5YtWybo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xowZoxYtWqhevXrq06ePVq5c6XXO1q1bNXjwYOXk5Khx48YaNmyYtm/f7nXO//73Px199NGqW7euWrVqpQcffDDWb61GGzdunLp166ZGjRqpefPmGjhwoFasWOF1zu7duzVy5Eg1bdpUDRs21KBBg7Rx40avc9auXasBAwaofv36at68uW655RaVlZV5nfP555+rS5cuys7OVvv27TVp0qRYv70a7cknn9Rhhx2mnJwc5eTkqKCgQB9//HHlcX6u6eGBBx5QRkaGrr/++sp9/GxT01133aWMjAyvrw4dOlQe5+ea2n777TddeOGFatq0qerVq6dDDz1UCxYsqDzO31Gpp23btn6/sxkZGRo5cqQkfmf9eJBwr7/+uqdOnTqe559/3rN06VLP8OHDPY0bN/Zs3Lgx0UXDXz766CPPnXfe6XnnnXc8kjzvvvuu1/EHHnjAk5ub63nvvfc8ixcv9px22mmedu3aeXbt2lV5zkknneQ5/PDDPfPmzfN8+eWXnvbt23vOP//8yuNFRUWevLw8z+DBgz3ff/+957XXXvPUq1fP8/TTT8frbdY4/fr180ycONHz/fffexYtWuQ5+eSTPa1bt/Zs37698pwrrrjC06pVK8+MGTM8CxYs8PTs2dPzt7/9rfJ4WVmZ55BDDvH06dPH891333k++ugjz9577+0ZNWpU5Tk//fSTp379+p4bb7zRs2zZMs9jjz3mqVWrlueTTz6J6/utST744APPf//7X8+PP/7oWbFiheeOO+7wZGVleb7//nuPx8PPNR188803nrZt23oOO+wwz3XXXVe5n59taho7dqynU6dOng0bNlR+bd68ufI4P9fUtXXrVk+bNm08F198sefrr7/2/PTTT56pU6d6Vq1aVXkOf0elnk2bNnn9vk6fPt0jyTNz5kyPx8PvrC9CdxLo3r27Z+TIkZXb5eXlnpYtW3rGjRuXwFIhEN/QXVFR4cnPz/c89NBDlfu2bdvmyc7O9rz22msej8fjWbZsmUeSZ/78+ZXnfPzxx56MjAzPb7/95vF4PJ4nnnjCs9dee3n27NlTec5tt93mOeigg2L8jmDZtGmTR5Jn1qxZHo/H/ByzsrI8kydPrjxn+fLlHkmeuXPnejwe80AmMzPTU1hYWHnOk08+6cnJyan8Wd56662eTp06eb3Wueee6+nX7//Zu+4wKYq0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xWjYsCFat25tpYvFYrj44ouxaNEi3HLLLejWrRvWrl2Lf/zjH/j1118xffp0AMArr7yCOXPmYOzYsViyZAlSUlLw73//G9999x3ee+89oVp3eXk5li9fjttvv136G1lzR3YcidC9e3dkZWVh8eLFwjGroKCgoJAgaAoKCgoKCgnAxIkTNQDa7NmztcOHD2u7d+/Wpk6dquXk5GgZGRna7t27rbTnnHOOdvLJJ2slJSXWvVgspg0aNEjr1KmTdW/u3LkaAG3u3LnWvaKiIlfZzz33nBYKhbSdO3da9+68806Nt80B0MaPH2/9vvrqq7UmTZpokUjEurd//34tHA5rzzzzjO96s1BUVKR16dJFA6C1bdtWGzdunPb2229rBw8edKXl1X379u0aAK1u3braoUOHHM9k62b20/Dhw7VYLGbdv//++7WUlBQtNzdX0zRNO3DggJaamqpdeumljnKeeuopDYA2duxY696UKVNc/WSibdu2GgBtwYIF1r1Dhw5pGRkZ2oMPPshpLRsAtDvvvNP6bY6Jbt26aaWlpdb9V155RQOgrV27VtM0TSsrK9OaNGmi9erVy5HuP//5jwZAGzJkiHXvvffe08LhsLZw4UJH2W+++aYGQFu8eLF1b+bMmRoA7dlnn9W2bdum1a5d29VGLGzZskUDoP3zn/90PRs7dqxWq1Yt7fDhw9rhw4e1LVu2aC+++KIWCoW0nj17OvrJzzgaP368BkA7fPiw61nnzp21Cy64wLPeCgoKCgrxQ6mXKygoKCgkFMOHD0dOTg5at26NK664ArVq1cKMGTPQqlUrAMCxY8cwZ84cXHnllThx4gSOHDmCI0eO4OjRoxgxYgQ2b94s9HaelZVlXRcWFuLIkSMYNGgQNE3DqlWrAtV5zJgxOHTokEMleurUqYjFYhgzZkzC6r1s2TI8/PDDAHS17JtuugnNmzfH3Xff7VBj9sLll1+OnJwc63eQut1yyy0OKemZZ56JaDSKnTt3AgC+//57RCIR3HHHHY737r77bul6mujevbtlZgAAOTk56NKli0Nt2i9uuOEGhx27mb+Z54oVK3Do0CHcdtttjnTjxo1DvXr1HHlNmTIF3bp1Q9euXa22O3LkCM4++2wAwNy5c6205513Hm699VY888wzuOyyy5CZmYl///vfnvU9evQoAKfUmkRhYSFycnKQk5ODk046CQ899BDOOOMMfP75545+StQ4atCggcOruYKCgoJC8qCYbgUFBQWFhOK1117DrFmzMHXqVFx44YU4cuQIMjIyrOdbtmyBpml44oknLCbD/Bs/fjwA4NChQ9z8d+3ahXHjxqFhw4aoXbs2cnJyLLXwvLy8QHU+//zzUa9ePYdq9SeffIJevXqhc+fOCak3ANSrVw8TJkzAjh07sGPHDrz99tvo0qUL/vWvf+HPf/6zdH3bt2/v+B2kbm3atHH8NpnB48ePA4DFfJ900kmOdA0bNuQyjjzQZZnlmWUFgWz9O3Xq5EiXlpaGDh06OO5t3rwZ69evd7Wd2fd027344oto2LAhVq9ejVdffRVNmjSRrremacz7mZmZmDVrFmbNmoWJEyeiW7duOHTokOOQyUQixpGmaYFU0xUUFBQU/EPZdCsoKCgoJBT9+/e3vJdfeumlGDx4MK655hps2rQJtWvXRiwWAwA89NBDGDFiBDMPmtEzEY1Gce655+LYsWN49NFH0bVrV9SqVQt79+7FuHHjrLz9IiMjA5deeimmTZuG119/HQcPHsTixYvx17/+1UoTT71ZaNu2LW688UaMGjUKHTp0wAcffIBnn31W6l2aEQtSt5SUFGY6HlMYD5JRViLzjMViOPnkk/HSSy8xn5P23wCwatUqixFfu3Ytrr76as8yGjVqBADcg4aUlBQMHz7c+j1ixAh07doVt956q9BRX9BxdPz4cdeBhIKCgoJCcqCYbgUFBQWFpCElJQXPPfcchg0bhn/961947LHHLCljWlqag8mQwdq1a/Hrr7/inXfewfXXX2/dZ3lh9ivFGzNmDN555x18//332LhxIzRNs1TLAcRVbxEaNGiAjh07Ojyk+617MupmOuzasmWLQ7J+9OhRF+NYFSWmZv03b95sqYkDukOz7du349RTT7XudezYEWvWrME555zj+S2FhYW44YYb0L17dwwaNAgTJkzAqFGj0K9fP+F7bdq0QVZWFrZv3y5V/+bNm+P+++/H008/jaVLl+L0008XpmeNIx4ikQh2796Niy++WKouCgoKCgrxQamXKygoKCgkFUOHDkX//v3x8ssvo6SkBE2aNMHQoUPx73//G/v373elp8NWkTClm6Q0U9M0vPLKK660tWrVAgDk5uZK1XP48OFo2LAhPvnkE3zyySfo37+/g9mMp94AsGbNGqYN7c6dO7FhwwZ06dIlcN3jrRsL55xzDlJTU/HGG2847v/rX/9ypfVb34pA3759kZOTgzfffNMRu3rSpEmuel555ZXYu3cv3nrrLVc+xcXFKCwstH4/+uij2LVrF9555x289NJLaNeuHcaOHetpS52Wloa+fftixYoV0t9w9913Izs7G88//7x1z8844mHDhg0oKSnBoEGDpOuioKCgoBAcStKtoKCgoJB0PPzwwxg9ejQmTZqE2267Da+99hoGDx6Mk08+GTfffDM6dOiAgwcPYsmSJdizZw/WrFnDzKdr167o2LEjHnroIezduxd169bFp59+ylTZ7dOnDwDgnnvuwYgRI5CSkoKrrrqKW8e0tDRcdtll+Pjjj1FYWIgXX3zRlSZovQFdGj9+/HhcfPHFOP3001G7dm1s27YN//vf/1BaWmrFDQ9S93jrxkLTpk1x77334u9//zsuvvhinH/++VizZg2++eYbNG7c2CER7tWrF1JSUvC3v/0NeXl5yMjIwNlnn+3L1jnRSEtLw7PPPotbb70VZ599NsaMGYPt27dj4sSJLpvu3//+95g8eTJuu+02zJ07F2eccQai0Sh++eUXTJ48GTNnzkTfvn0xZ84cvP766xg/fjxOO+00AHr4tqFDh+KJJ57AhAkThHW65JJL8Kc//Qn5+flS8bQbNWqEG264Aa+//jo2btyIbt26+RpHPMyaNQvZ2dk499xzPdMqKCgoKCQAleM0XUFBQUGhpsEMRbV8+XLXs2g0qnXs2FHr2LGjFZZr69at2vXXX681a9ZMS0tL01q2bKn97ne/06ZOnWq9xwoZtmHDBm348OFa7dq1tcaNG2s333yztmbNGg2ANnHiRCtdJBLR7r77bi0nJ0cLhUKOEFygQoaZmDVrlgZAC4VCjhBnJGTqzcK2bdu0J598Ujv99NO1Jk2aaKmpqVpOTo42cuRIbc6cOY60vLqbIcNeeOGFwHXj9ROrrSORiPbEE09ozZo107KysrSzzz5b27hxo9aoUSPttttuc7z/1ltvaR06dNBSUlIc+bRt21YbOXKkq65DhgxxhO3iAZyQYVOmTHGkM9uGHAOapmmvv/661r59ey0jI0Pr27evtmDBAmbZZWVl2t/+9jetR48eWkZGhtagQQOtT58+2tNPP63l5eVp+fn5Wtu2bbXTTjtNKy8vd7x7//33a+FwWFuyZInwWw4ePKilpqZq7733nuO+GTKMha1bt2opKSlWiDY/44gXMmzAgAHaddddJ6yrgoKCgkLiENK0JHhMUVBQUFBQUKiRyM3NRYMGDfDss8/iT3/6U2VXp9rhpptuwq+//oqFCxdWSvmrV6/Gaaedhp9++gm9evWqlDooKCgo/NagbLoVFBQUFBQUmCguLnbde/nllwHotvoK/jF+/HgsX74cixcvrpTyn3/+eVxxxRWK4VZQUFCoQChJt4KCgoKCggITkyZNwqRJk3DhhReidu3aWLRoET766COcd955mDlzZmVXT0FBQUFBoVpAOVJTUFBQUFBQYOKUU05BamoqJkyYgPz8fMu5mmw8cQUFBQUFBQUl6VZQUFBQUFBQUFBQUFBQSBqUTbeCgoKCgoKCgoKCgoKCQpKgmG4FBQUFBQUFBQUFBQUFhSRBMd0KCgoKCgoKCgoKCgoKCkmCcqQGIBaLYd++fahTpw5CoVBlV0dBQUFBQUFBQUFBQUGhikPTNJw4cQItWrRAOMyXZyumG8C+ffvQunXryq6GgoKCgoKCgoKCgoKCQjXD7t270apVK+7zSmW6FyxYgBdeeAErV67E/v37MW3aNFx66aXWc03TMH78eLz11lvIzc3FGWecgTfeeAOdOnWy0hw7dgx33303vvjiC4TDYVx++eV45ZVXULt2bel61KlTB4DeWHXr1k3Y9ykoKCgoKCgoKCgoKCjUTOTn56N169YWP8lDpTLdhYWFOPXUU3HjjTfisssucz2fMGECXn31Vbzzzjto3749nnjiCYwYMQIbNmxAZmYmAODaa6/F/v37MWvWLJSXl+OGG27ALbfcgg8//FC6HqZKed26dRXTraCgoKCgoKCgoKCgoCANLxPlKhOnOxQKOSTdmqahRYsWePDBB/HQQw8BAPLy8tC0aVNMmjQJV111FTZu3Iju3btj+fLl6Nu3LwDg22+/xYUXXog9e/agRYsWUmXn5+ejXr16yMvLU0y3goKCgoKCgoKCgoKCgidk+cgq6718+/btOHDgAIYPH27dq1evHgYMGIAlS5YAAJYsWYL69etbDDcADB8+HOFwGMuWLePmXVpaivz8fMefgoKCgoKCgoKCgoKCgkKiUWWZ7gMHDgAAmjZt6rjftGlT69mBAwfQpEkTx/PU1FQ0bNjQSsPCc889h3r16ll/yomagoKCgoKCgoKCgoKCQjJQZZnuZOLxxx9HXl6e9bd79+7KrpKCgoICkL8ZODivsmvhjaI9wJfdgXV/qeyaKCgoKCgoKChUeVRZprtZs2YAgIMHDzruHzx40HrWrFkzHDp0yPE8Eong2LFjVhoWMjIyLKdpynmagoJClcGXnYHvhwG56yq7JmLs+xrI3wj8/H+VXRMFBQUFBQUFhSqPKst0t2/fHs2aNcP3339v3cvPz8eyZcswcOBAAMDAgQORm5uLlStXWmnmzJmDWCyGAQMGVHidFRQUFBKC42squwZilJ+o7BooJANFe4BIUWXXQkFBQUFBocahUkOGFRQUYMuWLdbv7du3Y/Xq1WjYsCHatGmD++67D88++yw6depkhQxr0aKF5eG8W7duOP/883HzzTfjzTffRHl5Oe666y5cddVV0p7LFRQUFKocPMJOuFB2HPjlFaDdtUDdTsmpkwNVIuiFQiJRsA2Y0RHIbAJcdtA7vYKCgoKCgoI0KpXpXrFiBYYNG2b9fuCBBwAAY8eOxaRJk/DII4+gsLAQt9xyC3JzczF48GB8++23VoxuAPjggw9w11134ZxzzkE4HMbll1+OV199tcK/RUFBQaHSsPxOYOdHwIbngatKkl8eGWlS0/wfEihUPeyfqf8vOSROp6CgoKCQWMQiQChF7aU1HJXKdA8dOhSiMOGhUAjPPPMMnnnmGW6ahg0b4sMPP0xG9RQUFBSqBw4v1v/HSiu+bC2mEwsKCgoKCgoKThTs0P2gdLgBSM1yP48UA190BOqfAgz7tsKrp1BxqFSmW0FBQeE3g/xNQFZLIK22ROKqftpNHpbGACimW0FBQUGBgUixLsFNyfROWxPxVXcgWgwU7gB6T3A/PzgHKN6v/ynUaFRZR2oKCgoKlY6y405V6qA4sgz4siswpQ5wYHb8+VU6SPXyWOVVQ0FBQUGh6iIW0ZnOGScBUY4m1oE5wJwRul+Jmohosf7/4JzKrUd1wJxzgS+7JYbuqoJQTLeCgoICC3u+AKY2BL7tE39eu6fa1/MvkXihiku6tRrIdO/4ENg5ubJrUXmooUSOgoJCJaI8X5fwFu/lM9VzzgEOfAcsvrZCq1Z1oNZeAEDRXl0okf8LkFvFI7gEhGK6qxvK82vuaaCCQlXCqof0/8dXASVH4syMWGrD6XHmVdVQA5jusuPAD9cCi8cA0QpwRKegoKDwW4DjUNbjMLmkmqpXR0slaYQqfphe2SjPt69r6D6smO7qhu8G6Wo6eRsruyYKCtUDeRt0e2q/OPGrfV12PL46hIiltn4PifRVfHPe9LJ9XRMk3ZFC+5qnAqmgoKCg4BPk/lBDJbrfDQSmt5Swya7i+3plg9yHa6jmlWK6qxvy1gPQgMMLK7smCgpVH5FC4Kseuj11rDx4PuG0+OoRK7Ovs9tIvFDFN+cSIo5zTWC6He1dMzd7hSqCwl3Alv+qwx2F3wY0P0x3Fd/3WCg9qmvDxcqAYz9Vdm2qN0zbdwA1QoOOAcV0VycU7ravQ3EyAQrBEA/jplDxKD1qX8ejrhSv5DkWsa/T68eXFwuVKhmvAptj6VGg+KB3Oh5ITYQacYgQAGTYt3jaUkGMmf2AH28GNhBejI+t1J0H7fmi8uqloJAMkOup59paDZnufEIjzmtvr+oabJUNkulWkm6FSsfnhIQsxYj1p2nAwsuBJeMqpUq/Kez9CphcB9g2qbJroiALkpGI58BEi8ZXj3rdE5cXCxW9QdVqW3ll09A04NPGwLRmTvW0wPlFvNPURJAEY7So0qpR41FySP+/72v73oJRuvOgBRdXTp0UFFgoPgAcXR5nJn6Y7iqK4gPAzNOBrRPdzzSCrmDtheTBv4IYDsFINR0rHlBMd3VF2GAmCncCuz8Dtr+j1NUSCdbiOf93QKwUWHpDxddHIX7E4pgfsTgZ5eW3EXnVAKauVnv7urIJKZJBPLElWB7kN9SE/gkC8rsru09rKkiikiTWIwUVXxcFBS9MbwnM7B+fDyHHWuKxrlRVSfCaPwJHlwHLbnQ/c+wXjO9b8yfiRxX9vqoCx/qoJN0KVQkswvC3KqFJNLZOBKa1UPY5NQGkdPv4z8HziUc6TR+GyeTll/iocGLFByGVbJQTDEtQbQayT36r66ijDZKgjaHg9O2Q1dK+JjVyFBSqCkyG+cjS+PMAJBipKsqUluXyn2keh5Vb/k38qKLfV1WgbLoVqixM4jKc6r6nEB+W3QiUHACWjmM/T61VodVRiAOkFPTHW4LnEw8TQobBACSZuiq+OTsYtEreHI+vsq+D1sVBGP5GGU4H8fgbbYNkgxxndU6yrxXTrVCVEYqHVahCB7SBQdS7aI9T6JVoDaFkS3jXPw/88nJyy/ALLQYcXQGUn3Deq4FQTHd1hUkgOWxWy9hpqzI0DVj7DLDx75VdE3mkN6rsGijIYst/7OuiXfLv0RtfPEwIPS8rajPRtOQ5xIpVIaZ7+R32dWApdUD18uKDwIHZNUMVTkm6+YgUAT/eDuybGWdGvHFSxQ/ZSKx6GJh1JhCthvSGQkDEsb7VBEdq5Po+vTUw5xzimYd6ee0O9rWURloS95LiA8Cax4Gf7q9a83fdn3UHkyvvJm7WgD2VAcV0V1dsnOC+F4+ke88M4PDi4O8HxaH5wNrxwKqH4vMunQyEMzgPKpHJKNqre7it6kR+eX7VqGPR3oAv0kx3HCrHLgZGpl0SQHysfVp3Lvbra/HnRcPxTUmcD1oMWHApsPpxfpomZ9nXm18PVk7Mh3r5oUXA5+11x4ozOgBzzgV2fxqs3IpCwTbgpwfF88FLTfK3jM2vA1veBOadH18+3HatJu2dvwnY+CJweBGwV3larzBs+Bvw422Vt6fGU64fpruq2nTT9T60gHjmsW6S4UZDqe7ngLN9tZi+H/FU2kuP6b6c/KJwl67BaaEKrTnrn3Pfq6F7kGK6qyvyN+n/HQ6AAp5cFewAFlwCzBocd7V8o/SwfV3VHMGF09n3K3Mx+KKz7uF2xweVVwcvHF4CTKkHzGgPbH27cuvS+vJg79F9HI/kz5VXBY2fdU/r/1fclfi8K4pBO7QA2PM5sOF5fpqsFva1n3kRKQZy1xoED0kYejDdc4YDhTt0x4qm+QLpiboqYs65wC8v6QcYPBTtsa+TLeku2qMfBFQXlB5JTD68uVJdCMzNhH2qMmerOKx+TLcNPrai4sokGcF4okKY3vqB6ivpZjGox9fo9A05D1jfR4b3rd3e/dwFDZhzNjC1AZC/2f3400bA5+2c7eqFgu3A522Bb3qL61ppYBzqVAWhTRKgmO5qD2JgBt0Ei4NKAxMBYpGtaurxPDumylysqgORv3a8/r9wJ7DsD+yNo6IQ5pwseyGRTLdrw5bYTOI98TcP5ZKFirLpltF+8auFsHuaHqLpi07A16fo0R/8qFazvOBXKQKGAZPBFRHt6/9qXyeT6dY0XUVzRke3v4OqiGiZfkCTEJASLUq6VR3gx0RHIfFIREhEaRDj06H26xOzzyR+EOM8WuY2f6oukm4A+KaXTt/s/JhM6E5Hqpdnt5Yry5Skb3/X+ayYkFTnrvPOy8SB79nlVBUw61KF6pdAKKa7uiMRku7KHAYkcVfVmG4uqsBiUJWlDKSDIMCpzVDRCOxYK+r+XbBD//MLOtxYIje7WIR9Inx8deLKYCEe9fKNfwc+7wAU7vb3Hi9sm98QX8tuAvZMtw8bt/0vASHDasCpfHYr+zqpBBnRVkHUJCsai8cAv76amLy44ZOq4PiJFAIntjrvaVW8zjUeFdjmyVgDyDy/7aObP+X/mvhyRNg1FVh+p891XtDuB+cQyViSboK+lqLbiLLoQ4gfb2Xn6wVm2ipAx1pQkm6FaoMESLrJCem10K64V/9L1IQg61xdmO6qcEJYlcMaZTZz/o7L82mcCCyxo/o4UqSry89oH8D3QABJtwwihcD0VmyVYZ7tmAzKC7y1E+KRdK96CCjcTsUvlcCO9zh18TkXyo5T78ec31O43SMDhjSmKqwJ8aLJMPs6qZJu8oCjCh8emtgzPXF58exbqyKB+UUn4IuTqAO8GjDOWTi6XHfIWHq0smsiRkWOk6SsaUT98wxJrcMfRgVIuheN1n00JMoPh9deSN4rkXBs6siDop3yiXjp8TLdFbFnxaLAtnfdh3fuyrBeTkaNKh2K6a7uSISk28F0C4itSJF+4v/rq0CB1ySSBEkwVzkCjLMBVAXPvoEdhFUA0upQNyqT6U5ACCkAKDtGXOfFl5cU4SRBfOz7Wt/E985w3i/Liy882lc9gC876zZrPCRCvVyGWSa1JI4uZ6eJd93QYs5vWH6nOD1LBbImMN0x4jApWWvcz+OB6UR8alPapGm6g6AaD837OtlaKrIo3q//30OsLzxtExkc/xn4siuw+Jr46pUMzOwPbH5DPxCsTtA0YPHVwPIk+O1IBtNTlWy6I0XeaaRA0jceTLcMjU6mp/caknbwFWaQxXRXAB279b/A0rH64Z0IXocVNQiK6a72SLSkWzARyWe0tCgoSBWfXZONe+XAvJFsj4YVCZ59UVVYDI5xGJCqANoBXWVKuoMSDkLnZxymueQQsPV/7s3cNacSNX5C7OtVDzoPCfxA02y7zX3fCNIlgOmWGRdHf7SvefZwcds5UpJuT3MIVr2roKTSLxz7R5LWuHXPUI6VjPX/h+t0B0GHFiW2vOM/Ax+GgKU3JDbfoOBKuol9MI+QZlUJkLbn5ez7XijcBXxzqu5rYudHAU04KgBV5cCDC6rNC7bpNsWbX0t8myZDqs7cK3ww2iWHEhcGk+coNx542SZLaWUJ2t1BS/iRdFfSQfGh+XG8XAP2VAYU011dYYYhSLRNt/D0i+MEJh6Qm/iGv+n/d03VpXhr/piYMhKNqsB0V2XQY6MynaMEPc1l2XR7YdEY3V54BSUpTZak25mpfUkyqn5BqtKmNxAUl4iQYRLfWP8U+5r0Ug7oxNeScXy1c1nQkm7SthnQPTbv/syWxDIPC2oAgVAZcbpNRn/nh/p/kZf6IPjmVP3/tkmJzTcwOEw3eeARTZQELkEgQxcFjTAy60znb4fzKQ72fqWHuatIBj2rlXeaqgRyLUp4yFVifAaNAiLKkwURrRAtBT5rqtuBJ2JMJIouiZywr70ktjLrqiMPqo6k6ZMvYUYlqZcnKr57DYJiuqsr6vXU/2sVKenmqcbFAcfiaSww0UR5ipVA3gZg/sXAsZ8YD3mS7qqmBk9gx8fAzslyabVYkmzE6DxrgHq5zAn1oXn6fxeBHyBkmBRBwEnDIkjoMjdMAH552Z1ux4f2Nc10F++3w0oFlXQ7pHgS38hytLjyPl1FdfFVwPZ35Mvm4eAcZzntfm9fF+8Hlt8GLLxcl8QemFN59nHJhl/i0ES0RF8/g6wl9FpaE9pRBEcbcQ7MN7+p+1WoKtj0sr0/kp77/fQ37fXcPGAXYf7v9DB3FRl2MuxHZbeCIKK7whn2daIPaxxqzgnaw5eMc98LcTS2aBz5wb4mGd3ASIYwwEu93KekW9TufvokNZtxM6YfJO/4OH4TrV2f6mEpSe/qQJzreQ04yGZAMd3VFRYT4Fd1hQFZppt3Sh8tBXZP92/rCjgnu7X4VqBkdM5wYO8XwOyh8u8k/EQ5QSgvAH64Wve2W7RPnDZSrDvKWTQ68fWgF9qq4kgtI8fHi9Q3eMXilK2DfsPf+zxwiRXWxk/UoeQQsPpR4Kf73aGQSEcvKVnE+zFgWgs91FOk0Ek8+GkPUhVcRkLNYro3vaKrqJqHHAkBx46OVl1f92ew16caQCDIHKRoMbdp0ZzzdE/EQZgjFxFaA9pRCM4eSuLYCuDHmyumOrL49Z/6/0Q5Oy3z4bAsUf5jpFAFQ1aJHO6Ra1Wi6ZJkHIDFE56WDHsV9Fsd7eejr2UPmFjpHOuqBI0uknST8ENXkXu5VU5UP0j+4WrgK0OIV7QX2PCCf/PRRVcAB2YDqx6myohjDJlh02oYFNNdXWFO5IRIuonT3a968j0NFpKn1cRkWvMnYOEoYP5I/2WTi1Cj0436kBtJQHU2WZjOYpgnp1VwAxaBZBC8iJr9M3V7sER58HSAJgyqiKTbz/ygNwsHsemX6Q4g6Y5n7DFV3IiNn7Q5p4kAUp0bnLYr2uPM78gS+brRdnRemzvNdCdLEkqe0DuIJHospyAp3suPrdJ9WEQrMYKDjKR7/sXA1Ia6rbSJwwv1/1v+rf8vPaarBZNpuGVGqDGQRKa7KngIl43NLaN+XaEwtdAC7Mes7/TDNFWXqCZJg0DS7RhPiTYJSdBam1rbI4GkpJscR4GdoCV5DfC06farXi4A6dQwfxPw00NOfxleeZL3Thhh22YPBVY/omuTBYHrUCWO9qbNvGoIFNNdnZBCqIjEWJLuBKg9F+8Dlt/OfkaqhJGL/fZ39f+HF/svjyT6W11iXBALL6lSVNE4tiK+90uPAl+dDKxPsJ0iD2T/0xJMV1pK8mkePiSmItTvJB9erLxfV1tjEtXE/CjPld+s6c2RJPz8Ejf0hmducK50fjcoH47+ZOtcpxP7HYdmS4nz2fLb5PIGbF8UrHxZIMv56X6gJEkx3w98xy6TJjxDKRw1zjiJuW9P031YbHo5vnziggRxuO8r/f/mN/jZrLhLVws27amFRZYD654lyk0m0x2AiUh0fVgOGcsToSorQPkJYM8XcUpCjbXGDPMEyK8prMPOZsP56Y8uB/Z9S7xfgUx3pTr95EDWCWCimW5ZiasXaAeYonkoNKsi3pvZL1hdRJ7BE4Kg6uWcgxXheCTbYwDwy991m3fWYSdrbLD6oWCL/p+MPe4HB+fShQTLB0jCIVLVQBVcYRT4YKiSk8xSUEk3Ldk+MIvtEdi056TrkpLhSiqNGMsbquTJZ7IRIezqghBfv7ykEylrHk9cnURwOOPxsosn+u+zprrqsBejLgtXWyWZkN70sm7be2KL+zkd4mbjC/L5OvIh1cv9Mt1Ueq66ZDxMt4cEjet9nZ5fPMkJeSq+JY4N0ec30uVMa8ZOFy9Icwyeh2mAH6YlURJ4UZi2ZMOXIzVBP/o5rIwU6o4zLSTRpjuQ+VWi1y7G2OJJp0Q4ukL3RyKDRVcCCy7WtQ+Cgun9WLI9WUxzvR789DP7A/MuIMqpSA0FAb2RtwH4+hTdfjUodk8DprX056V/x/v2tWhvTbQWkEzEDinQml702iJJ45HfXnY82LhIts+IwI7UeP0oKfkvJ0w7WYedTKZbsMZnNOY/84N42tusX8khXSsziPlqFYRiuqsTWKpEpJQgKNP90/3ue9tZ9pYc26J4Qi+wbEMr09s1D0GYjGSf0NOnpg5pLIcgMvuNtRh6hkqSBZX37unAvpnxZXl4MbDqUffBgMO8gtXeVF2kw/EI1Mu9YtXSp9OyG09QlS4XBJLuWMSD+Cbbk/hOUkqmRYIz3S6v8B6EU0Wddu/7klMmw1Si+fnu9xNFzCVK0lZ6FFj7Z6Bwp+55XQYOIi4O6avIHpxGyUGnk63ctcHL9UKQ/THRDB/5fUH3u9KjuqTvKwHjSmK/ITXe8h9/5TjAqKNse7LWZfPbNQ3Y8ZG43yuTHohFdC2BkiPAD9fq9Vx0RfD8Fl6maxPOY6whgZBE9XKRmY2vfBhMNzc/SUk3EOwQzdFGSRhX9LeWHLbNbwB+nQ/Mtq/JcLD02K9/Mr8sIbwO4ulniVr34sjHpD9+fgKY0RHY9GpiqlTJUEx3tQJJEBuTl1QpDupIjSUVZS3gR5ezn8fDdLPifpIT/td/Bc87kQiyoYVS7WvawURgEItw/ibnIy9nX2W5uvO0nx5iP08UwU8v2Guf1IkML2ZVhFmDgY0TgI0v0oVxrs1bNPMsqWJJv+dgOj2ITZc0VHJzNJ0V6ZnIvcOCSL18x/vAnmnEA4G9OTnmN0xg5wcAWS3t69x1wJ4Zgrr5dCrnd941Octfeq8yWZJuZii1RDnHS6CX4LVP6qGaFkqG+yG/e9kfvBLr//I3i/Pxuh+jbIRLEhSDl1l+FZB0b3qF+BHwoKZod7D34mJe45B0s0yXzLGw/zvgh2t0CbKfspMGqqxf/6VrCcwaBJTnJ66YRPmqkfUREASOQ5V4JJbUHIpFnHUlxyVJM3nmE0TIlGRJN53/wlHUY86cIenc+Rfxsw8aYYKZVsR0JyhMX1zMu1E/s59p07RqCsV0VyswTjVDxEAMKumWZcDisWvlgekFmahPUhx9BUAgpptgvlzMYkCQqvxhaoPSWG1J4NfXdNXmX/7O+Z5ELQe8hdZcRKPAj7cD29/npBPAdNbEKkvGljmoTff6v9jXX/XwkATSku4gY0eC0CTTeHmeNp8XUgS7UF2RyHP/N+z8AKBOR/v665OBBZc4D+h477F+0/B7UEP6vfCDTEJtXaRerkXYjoESJRngqa/7hWmj7odBc9geSjIFuZL2gwCb4Ey2o0yv8j3hs18PLdAltzy0IojwwOEMNfZ1RUO2PZdc775nfvvxVRIZJJnpFtn5mloiJxiHS77L4YSL85cJ/3fCJd0kPcEZZ/mbGXa8NFiSbs7YER06BgnjKcqD7mtNAxZfDay4l/Wi//wBt58jv31E7weO/H2MIb9+XuINIWYXEserpnaeyXQLDmSqEao8092uXTuEQiHX35133gkAGDp0qOvZbbf5cOxTneAgBo0FpyXhMTzwRGEx3R4DPFFqOiyb7qroQMG14EssJokioB3lCuwuvRZk0gFUUm2beBu04UBsz2fAljeBJb/3n7Uw5IiEpFs2lqlX+5DhS2hkNPSXFxCQeCaZbo8TcOueh709bwzRYWsc3tAZ/h/y1jPqCzcT7TXXE+EcUgYO/w0CR2r7vubM6yqmXs4bc6I1KVHrLle9nMV0V2D4xRObvNPQ8LNOajFg9hBdcluwjZ3G0b8sHyZSBXGuk4iDc4Hc9VQYQcm5yWKs/Yy1IBL6oj1AwXa5tKI+Tq1FVsR/PUiQ+13g/Ve0fida0k3OV07eX3YGvj9bHKmAqV7OY7pFNFMCJN2ids/boEcN+DUeNWYvzS2fBwWpdfj5+1qbGPNN5BPCT9uKIm4kwqbbrEtISborBMuXL8f+/futv1mzZgEARo+24wvffPPNjjQTJkzgZVfNwVAvJx0eBJZ0MyakF8OYMAKNIZ1NtrOLIKAXS5nvTzrTLXBQ4hmmxefJpx/w+u9rIxZk6bHElANQzKqH93IAaDZCMl+PMciKe2mCVqeUYrrjbHuvAxdeHUTq+rzxdGSxN9PNdTgmOihiwDdTFpAJ4TnKY2oBsVRtEyXpThRhwamPUH2T+NZ63f0XeWwFsPHvcI2/8gLdpwPLYVhFeqY+vtr/OzyNDRZI9ePyAnYa0n+K19hnzSv9Rfk8aMQiwJwRwKpH/L1XsEVfv0lTtECaA9bL+j8phtons6vFgOmtgRkdgGIJcwXHmkSTxBxnlYcW6CZPfsbUjg/k0/IgWme+7Rt//o6yPDTnSLA0XnjvunyCkOrlokNB2lQsyPgTOCkjTc+COoP1E41DBmkU0y3SwhKWy0gr4hf8HHYfWykqWD4f16tRZ12UennFICcnB82aNbP+vvzyS3Ts2BFDhgyx0mRnZzvS1K1btxJrnESwHKk51LMDMt0sFU4viYvfxaPkMNs7toOZrcKS7m0Tnb9lFjw/6jCxKFAkkuLCkDCKVF89FmRyrDBjsXO+KXcdsP0DH4yFR7qELp4+1culYz96Md0+/BjIjGfXBiizNHPUy1nMDU/STarNA+w1Rq+gfUn7WWAy3Zyx71e9XFb9uIMRVico80uuQ6VHiPvUOGjQi1NGPMQF8W5Wi+D5OPLkjF/R3CM94Nbv5ZE/53tXPeQ+dJp/ke7T4YuTGPnEudYX7QPmng/s/ZL9vI19OI86nf3nf3SZfFpyfZVZ+732kA2cSAueB408hHR11wPf6VEc4j0oikcF1ZfZiF+mm8h7jiA0GSu9rFR99hC9Leec669uiUYy43Tn/0Lk7TFW/UiotSifYRbSnVQ+B+f6H8Miz+AxwWEr6ehMOn/Wc58HBSL18nhtukVrlJ8DDVG0ikQ44DPropjuikdZWRnef/993HjjjQgRi+MHH3yAxo0bo2fPnnj88cdRVCRWIS0tLUV+fr7jr3qAXGAjzv9AgiXdqXpYhiM/sieOn3iHxQeAz5roYaloOCRMRjkOla5Khvmde7+iHkgw3X4k3QsuBaa30h3LeNWFVweRWizglCqxPJXzFvGvTwaWXGfH6PWC10KbLKZbRr2c/MaifcCiq4BDC+GC14b2/dm6R1upKkqMFdrDtMzYIeedl+d583tYYdW4KuVEG4iIZJbKPm9D923TLSnpDpu+DoIy3UQ99ky3DxLo9qrVHr49wXqWTbx74Ds5hqQ8HzhGqO1qMXs8xqLwLek+scUZPz6ekGE0Ds0TZBMno7DiTmD/TL7zIXIeBVJH9UF8+rYxNfuds39y7YjjkHSTTk+5knRJxOVsyUe9/aqXk/sPGVecm15kKqcJnsF5QFchCCiBDYINfyOK8WK6w0DBDn0/PfKj8xlLQs0Stpj58EDn88PVurmPHwg9dgtM96Th0U5+pfMuWiqBkm4R++dHgCe06efUMVrm7V/HpV6ubLorHNOnT0dubi7GjRtn3bvmmmvw/vvvY+7cuXj88cfx3nvv4brrrhPm89xzz6FevXrWX+vWrZNc8wSAxzyQkqDAhB/jvUPzgakNge8GsE/5/CxKh+br/8tzGUUz7IYykxSLNwisiV/Gvi8Ci3EqOQLsnOyW4JkhixzebTl14f6m7G5pbHnTvmZ5YvUi9oVqRJx6sECq0G5/H5g5gIoBT+cnICx4ToU0TZfmuzY5om4/3grs+gSYfRYjX4m5tFHWjMVUpRQstyWUdDBRtr0mtKiuabKD4bzO4SCREzKs/Dg/b5N4J9MnTL1cUtJttV+CiFCT2abDKcbKOOMxHpMYIr/Di4DNr3m/8k1v4NvT7LV54WXAZznA4R+An+7jv0cfhmz8u67FQoeTkmWo4g3ntPl19z0/5ifFB8TPHc7hfKqyx6Jux4Mi5BPhCKVMSrzGPkMzDIhD0g3K+WKc/hJkx4jLLhX2t0tJwvyOMZ9zUZrp5kBWCpoQeDDd8YTmzF0HbHvX7hOHxpRHO4RS9IP5XZ/oNKMDDNqV3JcPLXDmwwWjDrKCACsLhl8ksl4WAq7niVYvl/W54pkNy8+LYP76OaBkORa1yiAPwAjNic/bApNrs7VfrXdN9XJT0q2Y7grH22+/jQsuuAAtWtgS01tuuQUjRozAySefjGuvvRbvvvsupk2bhq1bWeqzOh5//HHk5eVZf7t3BwzBUZFwxWQ2JkXxPuJmAqQ8Jrb+175mqe75WjwEm6bGkHRXlHMYwPv0bL/uQ8Dlzddc/HZ+Amx+E0yw8v5+KLB4DLD2KV6F9H9Fe4Btk5xOKrwYFj+bBtP7dqI2DI/+I1Wzl/weOPqjO3Y0+d17BSGoeJLuLf/W1VnXPU0lJ76xkOPsiE7Hg+zGZLZbRo7+n2kPTi3FUky3D2JUizrjIZNwMCNEG25/174uPcrPO1qiMyhkPjzbZN+Sbkmm25xrCfPmbLQtzajFyiClUeEH9Ls7PvR+x3TUtXOy/n/P5/r/Ta+IwyySWibb39PVwZdcx4gtX4kmPhEfMcJJJnLPDPe65iCyfTKZCy6WOwAB9PH//dnscrnwGKtNz+Y8iMN7ueNQLc6wQLLr30m3MOoRJ/0glFjGwXQHOUSKR8X88BLgwxDweTs5+3MadP+vvCd4Xb4+GVg61o4YU0g4omOablESalId3ZGOZdNNjL0y4pAtbyO48CutZeZB9PW6P/OfBY4skGD1chHT7WsOeZgbup75WCvTREw3UYYZDlLTgJIDADT+mAEIptsUWiTBR1IloNow3Tt37sTs2bPxhz+I44cOGKCfsm3ZwlCjNJCRkYG6des6/qo8XJPVsO9NhGt/r8mbXk/8jsgLIiDeyFiSbnJhyW4FlOWx1WJNrH/ebf8WKeTYLdN1o21mqEXODJVES9zM7198FbD8dra3WpYatenVeefH4np92xdYegOw4TnipsCGm37utfizpD6enqQTxHSz4rqTxPLSG4BPMoCfx+u/vcaXVSxR7tqnOWnIdhEtfxKbbkqmXF3MMs3xIOOcS2qD8UEgrrhHj9POguNgh6jbMR9OpKLFzjGVKPVynrSPRkuOenG8oL+Dx3QfnBNHIfR4iEd67CWRIr5n1cPEfWq8xcuQVRiItlpwCbDwCuo5Ken2uVf6UV098gO/XB48nTVmcB4E9VgdohiLeJnuON73w9S4wnhNB6bUsw+a4skboL6DEUYqmZg1SP9fuJMRDpMB17eJJKEBcXAe46aXv5Qw+OsWw6abHHthYpznDBJUjNEXvg9JiO9wRdgIytASSLSk25U+qHo5S9ItqIuftUG0DpD7N81EA+L+s9KZ/6sNuypEtfmKiRMnokmTJhg5cqQw3erVqwEAzZs3r4BaVSBYkyBGeYEM7ETIYyFIYxxKmO8sGStRgGhisWJBEt9RtEe3df6iE5DPCPlSegxY8ziw+hEn4/ZFF13SSdo9MqsmioMI23uyS72cSlfCsKkVegrmtbnRVuap4J7p/HdkvZf/cB3wHbWZscYTnf/x1cBa4jRYdpH3GocsKSjZD9sm6f/XPSNTGPuat5g7pBqC5U/K0U9Ij8nLklCQnvh/vNVIbn43ox3TqTBjMowXGebKCwe+A1bcxX7Gk3T7gRalpNKcthURESzwCGsa1kFOoryIG+1Pj9VYeWIIWxL0fPFDSPolOsk1qYQct34l3UlkRmLl8nsZ/f1mfHITWhxMtx/wNKFEsCQ4vLWKk0c8cbpJO3ERsSyTr6zmgF+C3wWqfRaO0te+BZdy0sejXi74btJ3RYPe/sqQASnxtarjk6kOajLg0IBg+NHw8n4dEjDdLJtuUohCxrLObCqoYyIk3bI23QGZ26iHnwS/B1VLrqecJSfQppumAUmax89aSeZDOwIl7bZpdXEAYt6AlnRXG3ZViGrxFbFYDBMnTsTYsWORmmoTDVu3bsWf//xnrFy5Ejt27MCMGTNw/fXX46yzzsIpp5xSiTVOAliTtWg3nBtMUILZY/KGGRI9LaYv1KQKKhciSTepXs6QdAM2c8GynSIZBvLajOdMMq3MqtFMN0UMmBJulk23Y6NiLVKCdpVd1EhnN3Td9lP2W6wFORbRQ5UcWeJdPt3u3/QG1j7Jf86FaGPTgJ+fcN8PuqCyJMqA8/TckZ48ZY1T0r1xgh6T97uBjHKM+brvW9vJmSk1ZbVjNuVXQoaZMpl5WfC8jMY4km4SXl7ftagc8+5X0i0CS2MiYcyg0f5tKMkpT9IdF6g29zUXfDLdPK/7rnXQgzhMpgTwyy66GU4iQO6biQ5Ppmm6n4vyE+5DOt48Ig+wg6qi7ppM/PDJYC67kchftAdJ9K8sA8Gc43FIuj3Li4Pppt/Nbmlfk175XYfzkmYwIoTTdUeqhYQZkKfzVKqfgmgfaBqlIi+pzq9RTDePpmEJB+YSoTtlDmv1F923/NINorHh8F4ekAFd8yeP8jn9U6sd/51dU4j3JW26XYc1jDlIf9fc8/j5ieA4FCDX2yiQu8b+bUq9yTRCx3mK6a40zJ49G7t27cKNN97ouJ+eno7Zs2fjvPPOQ9euXfHggw/i8ssvxxdffFFJNU0iWJN11yfUJKxAW2gt6mFrS0CoQsLyYukzDIr1eoBQPq6JTJ/Kmkw3tUBpMedCxjwQCKC+Q7eVQ1JD5eeyV2bYdJNhgBx1YzHdXgxQAiTdhxex1ZYD2+swVC1LjwKFOzjpyW+QUG0SeVo324u0fbOeGf1L+lwwmUSZ0GYyTA3LMWEQOIgeRrmRQrGjO0Cvv8OpI2cs+WW6U7L5z8z27PMKrL5MFDNo9lG9ns77XEdqAGYPczsk81OWhZBexrKbgV8ZNsWkOYDIxIEFUnIvihJxYBZbs8gv/DhFM6HFdOdKstomwryIdS7Rku69M3QzoJn93ev5xhd1LTAXwyFJNAP8ubHpZSJNHONdKOmWkdTHwXTzQhgmAn77mYyfTX837/CWrncixlbBVp0Z/byt3a+ejiepejAPIj0QKwMOfu+RiNFPDkl3Cv9Qi2XTzYMf7+X6C/z0TFCmi478OYcviVw3eHO6YR/+O459XkAPOsrxMkWEux+CmkiRa2zJId38o/gAcHiBM12Z4YxVZM5BwvIjU7OY7mrhDu68886DxthcWrdujfnz5yeuoMJCIIVB/KekAJmZznQ8hMNAVlawtEVF/E20mHIQUwqgOAoUlQCmNlBRqV5eKARkE8RqcTEQk2SYyuCmBYpK9HxLAJjNoEWB3XPtsk2Q31vLJOpCdr50exQa9c+AvTCUlLrzJb8vO9tmTsvK7LSFBUDUaE/zXpT4mLIyoJxaQEs0wLwVIxjpiPFXWKj/FVN1ipQB6TE77YqngY6EjSQAFBbp76TDPt4y842WA7t/AI4uBU662c47QvR/xKif2WbF+c46kPxgJGKXZ5ZdWAgU5+r3UmHP9ij0sUa3cUEBkFEIpKcDmqEWFIPed4DeV3T/paXp6QEgGgVKStxtZSIV9kJK5gsAO2YBfYy86frGYs78yDqUF+j9lwZ97mgaMO0UdvkAUEoWGiLay8iz/ASwdSKQ2USvX3a6vemKoleVUA9P5On9Xlhgv5edpl+HjXqaY7iw0Nl3AFBYrN8XrRF0fULQ55H1reDTtGTaWJm9RhRRfXdsNzC9jT3vAXsuh8L2nC04oduMm2uENZdL9HFhfVehM3+SGKDTAkC0NlBijMUM2Ht0OYDyiD6Wiw3V9hIAxRH3GlFaqs8PqxyqLVjzs+AEkF4IFBVT877EvUaY2DVP/2t+rf47M9PeT1hrj4nyAr09rToYYzjXCHfUcpwz/ZaX7OtYmrNNiyPuNcLc0qIASqL2WG96FbD1bf26qEz/FnKNmNoVGEOZMFjrlNFv0RL3XCaxc7YzX1FawDnvy3KBqOBQIY1YAB3rFLE+FBrjIgX2PNY0fR6ZyNuo+5Ho8Ueg1cVAaiqQYUwODfo8ImHmv2GSXmb+LzZBaLbPr5/o/3MuA5obsaJTUpxEd1G5MfeL3WMyDCdxSn6TY504AUTTxXSEmT4FejtZ0fUifJojWqZ/N7me0LSBuceYqEUc4pA0hzmHGg8EmpwBbHjROe9p2sC1zhKEeUkJfy8AgKK1wCxD86gc+jjm0WDmGrHmcTttcZkzfRFnDz/wszOvwhNAmlHPrCx93Qac855FK5HzPm+Xneb4HiCjoT6/zHvpsMdEebmeN72eZtfX72Vk6OOYTMtDmBjgUQDF5e58zbGanm7Pu+1TCdqzRN87zKHkSKs55+eJE+62MOd9KGzTETR2fu+mDTSIaWySPonFdBrHzLrd5dS8ouyPzWcH5rjrmwKb/iLXiMb93XM1DL3vAL3/WPUtLnenNd836V4AKI7ZZdFtRP4syHdqNRVTaUsBFBQy5hrcdISILwmFnOtUGYBZo4D0+sCgd535zxsHdBhrr8Nl0Ne+NE499kzT/2sxPW1RGb+vybWHRUeQENEG8aSV5bE0BS0vL08DoOXZZLvz78ILnS9kZ7PTAZo2ZIgzbePG/LR9+zrTtm3LT9u1k6Z9AE37KEP/35KTDtDzIdG3Lz9t48aa9nkHPc8PoGndBPlmwE73yz81rZcgLTm0dk3TtP4ead+Gpq15Uk9/aR9x2kOH7LxvvUGc9qs77bQPPSROu26dppXl6d93mUd9F3yhaZFiPe3VHmn/ZLRZLKZpYz3SPjdAr+sH0LRbPNLeQ7Tx5MnitLcQffeQR77/+pem7f1GT/snj7QTJth1+PFHcdrLoGm7p+v5/s0j35FGXTVN02Y+Ik473Eh7cIE+NkRpzyfmxnSPcdYfmjalgd1uorQXXmin+wDiNaIbNC0aSfwa0RLOOojWiMZEuqMrxGtEHSpfmTVi1zS9vhdeKG63w0vsb7viCnHat4k6nOnRH+Qacccd4rQvE/mO9Mj3n601bdFVcmvEjz/adZgwQZz2T0Qd7jpJnPbP3ey0z1wsTnsPke89HvX1s0Y8eLq9TnmtEVcT+T7jkfYyIu3K+eK0Dz2kad+dqad92SPf4dC0DS/odfZaI8aOtb/tbY98+xt13TdTbo0w9+8PoGmZYX7abtC09cTamow14tgaTevenZ+WXCM+gKZ1EHxb48bOOpx1Fj9tBjRt8bV6unV/9aYjfnpEfo34pJ3/NeIDY3yI0r4M+TVi3Tq7vuPHi9M+Q+R7cwdx2j9B0z4M6/n+61/itF9+addh4kRx2vffkl8jJk6085WhIzRN0z6pI79GrLhfjo4w6ztlnDjtQw/Z9d2+XZz29yPsfHeuFac9k6iD7BrxATTtYwFdAOhzgZxzGYK0A7ra3/YB9H2al7ZHK2e+jQVpzTXChGiNaNtW0+ZfKrdG1DHyLNovT0domqZ9O0Ce15BZIwoK7LRjx4rT+qAj8n7+WQOg5eXlaSLUDHn9bwl+Y9Wd2OodhL5ZAFsO0iGLF2TVQszT76Mr/deHn6nP5JI2ppoGKRW8IHnLglZ9TSSSFhMxzri+Qkj0deFO4ofEuBSpl9NIq+ejLgl2xkWCGZJMgKhI9BgQ0vOoEkNTBYIWrM6JsPk04YiHXoO3cE1iPvux9y3Pl0tXcliubEc9ZPc4P2PHZx38It443SIUe5mjJMmm22+/VTck2okjkFwHg3oB8kl3vO8z7wSuf0GdlPkqI5FRIfyM9STOC79+BEw1c1kkqy8qCSFNq+mrlDfy8/NRr1495O3bxw4fVhXUy09sBeacqhP22S2BQxuAIV8COz8Cths2Sd0eBE552qle/qGh2j1yk/5e7npg5gDdBudKw9533X12XG6WejkAdHsA2PI2kGK80/EmYOPb7rSkOqKp8rHnC2D2xXpaWl1x1lnAsZ90dZaefwJOfRZ4J6SrOdHocg/Q669OlY+8PcCnhhOqi7cCWYb3y0+M2IG9HgNOM8JusVQ8P21mO2obFwXKjwOfNrZVR3v8Eej5R2DVY874t5dvBrKbAlPq2mnpb9v4EvDzk7Zq2phS4IMMp0oqALQdo8f7BoB2FwFnz9D7LQIguzNwwU/6s4KdwFc97PdOfgjoZ4RKi0SALZ/onsoBoN/rQIfr9XHz9alu9XLWPjtspq7+l54OHF8KzD7LqRZ20i1An5ec77DUy39+Atj4D3f+qdC/bcHFbDVTs/0+qW3X9xoNWPtXYDnhoGTUbiC9gX5dlgvMaKWrep0zD2hyFjBRsBGnABhrzLGZg4C9S5xlfzcQOL5Wvw4DqNfSdsonUi+/phj4qpWtPn/2GqBOR2Dbu8DyO5xpwwB+X2KHBCostMeriaFfAU2HuNeIg+uArOa6LS89Jk21sNRauh22rHr5OfOAuv119aifn9THLQ2WenlqLX1DjBYDI9fp3oRPbNHTDp4MtBntVvXa9E9g9eP277M/BNpdrV/TaQu2A1+dbP+m1cvNpP1e0x1U/fB7oPEg4JzvxGphn7VwMmAs9fJh3wJNBgNb3gJW3m+nbdAWaNwH2P2ZW73chDmWSPXyZfcB61/Rr0fnOg+1So8CX7e169DwLGAfYQ93xRGn7fbcM4H8Vfp1t6eBzg/a46f1KGD3NDstrV6e1RnI/9V4VseO+NDjj8Cmv7rXCHpNM8vpPBYYPElfp0Qq40O/BhZdGEy9/OJdQIj26k8gLQ1YcB5waL4zX7LOs4foh7gpALrcAJz+P32PJdXLZ51pR7k4eTyw4Wmg+516jG4NbvXykeuA1Y8Ce7+y1UGHfac7IqLXiAFv2eM7JQWYVssmIuucCZz9DVC4G/iym/O9MIB+zwE9HtN/W+YvBcBnzex0l2zX9yERHWH2WWot3buyOe/PWwpkn8ymOcpPANOai9XLAeDcxUDDU/VrUsVz3lh97QOAtlfpITJPeVZf81Y9DHQeAwz+GFj/HLD8jzZtoGnA5DrOMk57DOhl7OElJcCMbkDBDv23i57oCRQZz8w1gk5jwlwjPgzZadPrA6OIA4PF1+nOWFlrBIlLd+nq4ABbvTxWDkxp4HxnTAEwrbadb4Mzgf0L9etzFwINe+vr1GeGR2izDtdotsp43i+6XwETne8Aek/wp15evhf4uot+HQXQ4irg9P/qceeP/Kjfb9QPGD7XqV7+XsimI874CFh8tfPbzLSfZAPlxYBWV/+eIZ8D8y9x1oGc92Miej+XHQemUQ5G6bRNzwfKYkDP8fY4JEGrl+9fqftgAIBOtwKn/d1Ou/sT4Keb9OuLdwChxu592QRPvbz5ecBZn9npPqntVBkPpQAXM/zsLBrjXE9MlADo8zJwkhEqmdy7BrwB9LhNv/4w5Fx7Ot8F9H7e/v3Li8Cmp+zfpQB6PGHHKif3ApM2uDqmzw8v9fJllwP7v9V/k2vEOfPcDjFv1HQadccHetqhs4Ccgex2zoQ+1r/tCxxYCQz+TG9fFqqAenl+eTnqNWiAvLw8YRjqamHTXWGoVcvZeaJ0fvKUBWmHTSNizPBwqh72JQNAdgaQmWITxFlp7PLSAUR3A7U6A7sWGumjdlrypJPnhyMtor9nJt36Njst73vNtJGdQL3u9v0MjbATN2ZrGpz2yiZ2vgqc8QqVb5r9fnYmkG2Ub96LEcRVerq9AJvIDNkbaDhsSyLMhT0jpn9TZsjJeIRDdn3NtPS3Z6U439Gizg3DRHaGnS6VYBhTAWSl2vlGqDqQ+aSm6vbH9FiIZjjfAfQNg+W3LL0MKN0EZPe2HZuFYb+fGRaP55QUo63S3GWaMBcwMl8T5gJH3w9T97LSgUyjHmllxFjR2O/zECb6x/yuWnUAMjQ06ZhGlG9mpnNj2v4SMHCSPiZZ75ESr1q13GlqZbnb+vBi4PvBQMN+wPk/useXCbPveD6AaMRKbaI9M9W7/cwmSUvVvyMCfQz3vB1Y9aCRp/F9mVRm6VFn/ivvtpkSOm1UMI7INSI7C0gz2jn1BLD/A6D15UBGI/15RoZtowvoaw7Pb585P835k5XurEMoZp/ss+YywJ4jJdvtfA59BnS8wX6WUuQU2KRRfZCVBqQReYYJzmfjeODUPxLzXtB/KdDXMYv+PmG3Q3a681vMNaJWLX1cm/OWtU6x5rKJWpnOfEVpaYQgv3+S+ZLvpMfs+2aItFDImaZWbcDcJjY/rY+rza/ZdaDru/pG4OiP1H1j7tNpM1PssmjtqCyzHlmcNiHWEzOPcmr+lKwHGrZ1vkbSESWH7PRpKc7DVi3CpznKIu71g7nfM9ap0qPAvnftcg9+rF/XytKZ7kzA4UjNzNcca17rbGaKvWfTZZNS8TQATfvJjSFrPckFClfqh7eAvv/T9WHu4Vn2nkTCpDkiRe58sjKd875sD0XLZAPlZez2SEvT/yLU2MlMdX+vmZaHE0QlUgCUbtTzyACx94fc+ZJ0RBa1VpNptZgxPzOBknydjhD1sUlHHJzivVYcNJi9pcv0w0wRwmF9PeLRM44m0tj7MgvkGkHOd8D9vhZ1MnJWOs5engknXU/uXWtut5luuqzC5dQ6SAkiMuCkH1JjQP3OwIlf7TQfhYGrysV8CeCU3pNrRHY6Z+zWs9Pu+Q/Qbji/nc01Mx16PWTmMk1HiEDTBvGkzZfTpKrBumk1DObADqXaqmyxKKWuJlBaMDf7VQ/x8xYhVian5sE6ESNV774+hcrXQQV45+8ukLg0HRwRXNOvr8q/T+ZhworTTXsvj8Jx7F//ZLggiqNNwqGaSKvSEb+P/STO3+HN0njmR/Vn/kXAt32AfV+D3Reyaj6idAJVwcgJ9n263Rwhrsj+96uGxKhLKrXB8EIsMUHUxfIEStSpEyHxDqIyteMj/b/p/Z2bh89lXRTqq2E//nuhFJvB16KUN2xO3ei1xvJQyoA59zwRg9WXuWv1UGoLRnmk94BVT3p9iPHnsSyKdjl/s7yXk6DV/+k2PPKDfNk8iQXv/uHFusRzx4f0C/GVJ/VuIryXk+FsOPn5Ncco2MYohzOmSCKWNZaEYLQd/Q3zfyeOZb/uWeIHtS7EygWmJZLrE8tbtqNMApECIkoFL3/WeIlDjbZ2O3HyMobUce+X9rW06rVHe5mabCRo9X4yCoYWBeYM16XNIrjmF/U7Ughsf1+s0svzLu5H3Vo4V406mZ7gpUP3UXNbFMmCF6XFVRXiO2jayFGvGHBwnlyezkycPxsNYNSB1VYStDsrfxN1u7Hv75mh74fRYvczOlxv7fbuNHPP59fLyodDY/L4ikb9iTQea7xG8Dg1xJSqZnzFbwExgum2ui1GLYyyE5cCGTJDCCL/Br05SViTKMR/7iCKAjAirAWJDNME6CpYgOE5kiJ4vQghM5wSvYBoVNub6s6ONHRbcL5PGC6LaLsl17nrwMvfinkegEHY+TF7LMn2j5DQFhDJOz/m5Ecz3byDGp/jJ4VxaknHpA8JJAQ0HHHCGcSoI/wMVVeSIQfYbZhGqV3y+sPv5iSK053RmP8ezXQ7Qq5wxh19P6u5XL1E2DbJLTk4vJCfXmYcxyjCs05n80H8TLeLAKLqQ3+LI6QbGMSMn/4mxhU5Tnh2s/Mv1iXEP1xLZSPLCMVjjyfxrpe9b0yG6ZaQjAzy2CN5Y8oRjoou32hD7kEII0/WvS1v8utFjrVQCDiJkIytuAv4JEM3CaEhFa4NYPYRK4QioNfdHHN+5pDXoZTwXY9yTNMy3j1Zu3ev+UDGRwd0JknE0Bfv1w9uj6/2Ktj589d/AisfsH//eBuw5Pe66Q83C94BaZSfpizX+Vu0VlvhN409cdnNQPux/PQW6PCpkn1Rlsv3oUF+x57PgC86A0eW6b/J/ohF3UIOGciMVWYIPRHtLugHE7w43wsu0cNYbniOkS9Fe7Py9gwlB8Z+ZN7n0QBE+laXivOOldv1Uky3QoXCHKjhVILQpSZKrFSX8LBiuybEcZMEoeXXUUQyJN00IbbgYv3//Iv1GJj7Zgqyk5R0n9jkjF18iIpJyMqLSwAIJN1+4layFucgjju0GNhSFtm8BP0oIpJ5G6XwRJosVgN+Hi+uGgCs/bNuU0Y6PuMRQH4cqbEYGnIzDROHK3TfpQtsV1n5Awh2iMOAw8EUVYbIoZ6Q6ebUje7LNL7tkzRhHimEP0I8gKTb/M5oSbA5RY77fd9QZdH9SkskqfFOM0TkGPUi/snn5IESr03Kjonz84I08+bz3YLtep3LOdoxVh6kNIeTn8MBIgekSRS7IPbtot3EWkyv1+ZvH9oH8Rz4hMLOA4a89fr/r1laWkQ558wDandg58laN7nzS3PSLq7HmuRhL/G7eD+nLK+6EHUSvSMtlfVJX2W1EPeldD8z6r+J8KdiOiZj0SfcPEKMOtBMN7UubH5dkL/xriltLzsm1nCyqkEfPkqsu2XHgakNgBmc8Up+R+lR3SHwd6cbj8qd6QIxeUFpZHrfJekOGY0DTh+yYM5BR3tymG7A9p/Agx9Jt6bJHc5bz8thfb9iuhUqFKSk2yLoKanLjg90px8r7nK/nwgPgOSGyGNSWJuUkHFkSLp5UnR2Bu736QXH9LS+3yB2N71MvKM5r3lSVfp7F1wKfNPLo2oi9W8CQomTiJngEXHEtV/Pkla+jM1DVt03qKRbizrfNQldevF2ENJkWRqw7hnv+q19Etg7A9j9KZEnR53YD9NN1qXJEHd+IYKB9dSCYBGDtFYGp51LDwsqycBSwr6YzlNEdDoOADmS7sNL9ENAM1/6xD1/E7D5TWDN/7nzl12zTv0r/HnF90EYmfU2Dx/Kjtvxs4Mil4rx6ynpptXLqbXIV6QBcjymsK8TCVnpVGYzxk1O///6uk5Us/Y5V/kSkm7T+aYIjkMxiblJwoyYQJd/ZIlHoZKSblmtg9KjutM5Gqx13TrATtUdOnbmtHUsAuRtcOYR4o1Hgun2w6zT90sO2dekY1Heu8d+0h04yrYdmS4icITrlY8wfSRBTHcCICXppvdFSjskd61E/gwBiRD0mi7RxqbUmtZ2dNWFAdJzuha1Haj6AZ1/qTFWTyFMLmTUy7kHon7MMjhoPMh4hV4bOXmLzFfofEiw6F0tCvzyMlWuAKSku4awqzXjK34LcEi6SRUtcoMg1KIilApjQtzuk4smZ6Ltmsq4KSCIHUyhkX/Dvsyk7CqRjKY5gT0YV65al4DpDiQxlpR0iwhekWRYaDMeh3o5b6x4hZ6jy2ZC8D2ZTamyOaqIPBvkRNiP7vvKeT+U4uOElTQ3MIl0UtItkCwGIrISMac98hQx3Q5JN3UAuMbwNj9rkM4c0e1qotHpwPLbgfV/AY6vcT6TbZPaHeXSWfn6UC+3+o8YtyUH/JXnuz60TTelAeLS/PAzdkimmygnWUy3rKSw3xvue7x+WvNH/f/mN+BJbEqZL0kc2LDMRRwQjCmRdFd/wLkta+IjagPq2fFVgrTka+Yhv1F32vzFxO4pOuM7e5h9r/FATp6EJNv0duwA57A3ckL37MzSOis7rpuXrH7coHkYPlq+7QOsvAfY/h6nTLqexnwqOQIcW8n+FlE+W/8HHBKYtwCGx33BgZQsvZGQ4EOcA1+RpNvLLM+kFRyaNeQaI1PvAOFFSf8MzEMWwVpJzg0tBmx80X/5ZJnFB23/D/VPse+b6/ehhXr0nuM/Mw41OLQC94DEw7afBOvgi6deDnjvw1z1cpakOwbkb7R/k9qiLCj1coVKA7kJWoOPmigkcVa0h5qIAqJAxqZNrwSRHWeiyTq0sLIk8tnyHyNfQV1d5bIk3RRoaaXGYPTN913MEEfSLQNZm25Hujjs1Vj2/UHVy1mbuXnqr2niuMMiQkB0iJCS6fwmy2GgSNJNtmkCmG4aJGPpmQc5P0rd98h8AjHdHoROIuCSdAvGvUu9nKgPzZia2iY0SEdHtLMf2e9LSfe27SXzlJkTLkdqiSBuuYU5f9LEhdfhnZ94y7y5afZzVgv5vGQgGwM+nO627+fOCaKvvTR5ZNTLZYg5x9yVZYath+LyeX3C8rXi1wnTAQmbzIwcRpbEIT/g9n9hOm761VArPrrUuz6hsFvS7tA0i7Lf3fpf3WHcJ1k6XUP7OFh6A7DheWDD3xjfQfQLSxrLbHvjne2TGM84MPM5/AOw7CY93KYX9kzjP5PWUEvAusQzexCqAXuYOi0Z607nmEOc76vVlkjvgxYy5zBJyzI1ODjzlD5cCby3Et9LjnXy0M789tln6b5H5l0AV3s6mG6Bs2Rr/PqoryW0o/qApQUjk7c5Vjvf7bz/M0N7jc5r7VMeeSumW6Gy4FAv50iXSLurlAy5EzIASDdC6/R/S1wHR348G1iGRECoXk7UP1Kgxx0W1ZVW92JJuunFmmaaeIwE3Z5k2kASY0lJ95Z/CzKpDEk3h/hJr6//X3478Ekmn6CLykrE6XKp9uc53SH7b9cU4v04VPK0iB4Dl0Yo7EMKSLSZdShB9lHIeWBGwiWtZBFT1D3Sy27CQJUhMikQ2XS7wFkDRGuUbH+mN4L0YRWtrcFzQGOut5ZDtSSqe/q1OxWZW3gXRlwyNJekzSkkiX1ZSXcoDLfjJEa7lB4DynPl85dRL5caO2QaibnpeGR+h0/V8AKGgzO/eRTu4D8zQTtoBOz1iKsqbtSDtdZzJV8e41yG0Znemv8sfwPjJpEnkw4RHKD4kiLH9Hm49wv71qGFurpzEUfVmXcf8LHeJIPpZngvpw/ZvUyddk9150G2P2/Nqn0S8cMHe5JpHNiRTDfLNIA3xr6ltCuDrvdk/uRBFenPJVLg9EVQvA/ug1dy3gn2SFMFnm7/7Jbs+tXuwBdm8BApBLZ/oGuUsGCOF1p4x3IC6Pcwg7TpriHsas34it8CSBsrS+02xp/kNOMkGuzmpGnUDzjpVlEl7Eveoml5+SUgVJGmFrfDi8R1dXn+lfxGEkd+YDNYLM/EFtPtkTeLMXNtZkFUqojfLS+intF1YizOQSTd+ovuW2ZICfOQYM5wnQimsfW/gmw9JEJkfc02NZl9EyShTUpQt74tyNsDWlQPreFCWEB4ujKxL806OpjpELgq8ywvuq7sqT5JtJoz4O4fVqgRE36Ybt4aQPb3ejrUkOR8TqsNeaabamfegYpZr9WP6P/zWAR9guAipGhinNY+EGj7eBdGZkTcNg91JZluWYaElkryEEqBm+lmjKevKIdmXky3jPdymbFDjl9W+CUZSTfTxpGjUs3Nyq96uUyerHpR6uU08jfx8+MS84x6ku3K07CSRsjtoMtLi4ypgiw4JOFBi+mH0Ruet+/NPkt30jWdwwCJ8q9I9XKXk9jNcPm3cTGwEurM5Seo9pVguh2HJJx5eUWu+x5rnDIP/yX7VMZrNxOkORkhgCLX1cM/uOeIqx+JeqbW5aSBfggVi7rr2/Rsp+8DEyc/Ay4NwsPap/TIOUtv0E0uAN0Hy+ft9ENs81vCjGgwNGTLTKuv/y/YYY8hJelWqFDwbLrJRY0M40A/Ey7wJkMvUqXVwJSMmDBV1ByxeiXAIiCFTDcleXNssjzpLmPx3jjBeEQwVGXHBUy3l10Lx2mE84Y4D4AhpSd+m21rqmG66kqqg8Xc92QRCrEXeNZGKSK+WPBkusn6GuO8bhcqGYcgEanredYrCuykYxHDn6Tb4fWWIekm86LbYSulZZIQW70goCXdHkx3OE5JNzmmDs6lnjHy48VqlVVFpMcwr2/3fa2f7icDLht02u52NfWYYafq+O2HOeD0UcyvpFsSPKY4Z7DzN9N3AuO7Sg7K5W89T5B6uef6L9pfRUycT0bTr3q5VJ4C21dfTvoM8OLGd75T/yPLNX0/AIjfR0XIfajGk7TaCdy3TFrG1xqsiQ996zEcvgkdqVWgevl3jFjS+RvFTDdPJZ1EtBTc+vGYbscewFnTw+m6LxAmiPL8SLpprHpYLp0of5IJJfentDoMe3H6QJ1gmC16j1P3rf9h398wwX2PdH4axGQyYkSLWP8X3UHkvJEEb+Ll9wL+9ipA93RvausopluhQiHjvZyUkNBO1lgbyNIbgS3/JZjuVMHADgEiSbcVdoW1yEqqlwNAyWEIN1+aCZjZ352XzMQuNqSEYZrp5qi4ypzQearHBtggvskAeQAAl8RJREFUWeq3JlFQTBGgjnaLR9JN9bWVJcsxht+F24M4ZaqXc5gOLQZs+59csb0YGxArTxp+bLrJNjMPwOjvIeeub1QAI85ziMOCSNLd4kIqbZgd3km48TPaiMtcM+5vfw/I2+i8R8e6ZxHDgO7Znk6bKMgQrM4Ezp91Ogmee4wRrl2xBOEU5CCI1b/9/wOcuxBoebF9j6VeLnNgWLRb/DxRjtRYds/OggSPBDbdmiZ+15Xep3q5VJ4iSXcApns/IyRnKEVnHrLb2Pf2Uc7U/Er9WXD5b6HMe2iw2s4y04tXA4GAqa3V8Wa5d4IwRH6Qt1EPncnU+DPK92XTzdJiCFOHHqRWg8T38db6UIrTFwhZPtOxLpks3oMdDziYbtKOOwo0NZwNbpsI/Poq/aI7LysCioepIMvMT9PYY8hBgwShDal6Hppnl5PC2Tuank28LrGmh8JAI0Pdn9QcSZazzwpGgBVVoVLAitONGITOuVxOSihsm6j/pRo2XSIGI0Qz3RHGc7A3MV/q5QuB4wwbMxMk0811ACKzsGq6t2RSVZAVMsz6LZFnLOJceBKhXn58lS5NrtuFYLoNG/woffrMkHQHsk3iMN2sRdovcSA83afb32wLzmHG1rfl1LIB3TO6CDyVSFlJd/kJZ1uYdqf09/BsumVQIdJvWtLtwXSTTqLIbzX9RFhpQ8CS6915CD34Gvk17Ae0uUL3ALtoND89DbO8a4w6Fu52xqvt+SSQc0Z8GhLSIOZ14XbnI09bV6pP2o4Bjv/Eft8VjozOi+gjUmvIIpwEKoJBCFaWerl5QFuHsN8MpTD2iQQQyFI23RIIhfSIBLy45cK2Ee1Lfm0ckyHpZq3rHurlfmEy72R+pG0+ED/TzdLQYh3iOiDqE4m6pNbRpX9ea7N5QF6LOHRICNMdsL1MM429MzjZ0ppLdF3pduaZPRD3SU/VUvbEHGFNKMx/5unHKMlMNzdaSdSeA6wQXEy6mT6gF9D6ono48kyJj+mm27RuV5uG5h3Yku2w82Pns4b9WC8AqbX1S9LBnZJ0K1QoSEk3z6abhEvSLaFeHhZJ9agNzXVSaRJMPjcB1sSPMCRiJhyEIm0Xw5F0M51KaMCCUdS9GGMB88G8ejpOC7hBWjGMjbqYaku0Z2DWhhPkxDycyt4EEsJ0exCnXGkQ+dtIQzJQXvBasLn9K8l00+FoWIceJLFAS/FMb8B2Bt5lJgVGuaYpg6ykO0aZs7jGShjYM92dh0g92LLlSgG6PwK0OB98qaSHtDJSCHzexnnvlKflVOJM0NL7hMGrr6k5QxPK5DooiioA8Me55QyHo77vqofk+GR5L7fmIh2yTMKRmh/Q+yN3jkt+i9AhqGh/FUm6fTKarHJIszIane8JlqfDh4wP8EwyzLYjHUolur8RgtDPiayk28/hvUMAIoLxnHQ2RZtKOJJL7qvxHsQeW8HJl9qLPbVzWO1ImziSz+KUdLueadR/Vh0hb25nhfz0Ca7juKgHHSHQEPUUoHDGMKv9SKa7PF9QH15RVJtmNrP3Dp5NN2nPTntIP7ackZ5guh2oGexqzfiK3wI0lnq5wI7SteAZE5PlrdehXi5gumUk3fGql3vBIenm2TZSC0PzEey8yminKzG3HZC5SCeC6Q5KVFhaBNTGfXSp06adtUmKbHIB4Ipj7jBBPKlwLAIcpBZNL+KADAFC1osFWtJthaHhSLplnTQBEqekvJPhsJzDskxK/ZRJuIXsAyU6Xq7UPCDy2vct0KC3xDs+YdbX3EBFp+GhFDicspDfsPMjYPObRFoJm25XXcx1iXiXS4h5MN3HVrHv+zo9j2O7lLL55T2nxubhxdRzog3beGgC8CRMlqQ7i/0cYO8nXmDNUXOPcfQry3t5HJJpgH8o64Is0+2XaLYqYiRhMbcxu3/TGwBdH/CoBCMPWnNCul5mEpF6Oeebm53Lvs81yQgx8mM4j4rXkZqIOfTtvdxjXpKaPp5mDua6Shzy7Xifnz7Zkm4vbJxA+UMIoLVHO/MlIfo+izEWrfUSkm6hFoMHWo8CWvxOLq2zAsQlpWkqWj9YY42WdHNpfVYb8/onbJhwAjgwm53EUmtnFub8GS0m/IHwJN2k2arEuOEx3UrSrVChYDpS85J0M9TLWY5ymDHAKdBELUmM55wBa4H0o14eSF2R3AgkJd2sxar4gLuuv/7TdrDmlScLMpJuT0dFjLayVOCN+pKn5Zv+SWTPkOqImO46nXVCr25X5/30hmAujloE+H4oddOjXS7Z4c6DC4akuyyX359k2A0vpNUVP+cREbLqlbQTMJYvAHJuLR7DTk/Wp3AXsPha4OgK3bHKplfs5/MuYHsnJTHoI9t0RBqMMUaCHL/kelFywP0Ny28n0nLWFUd8X7oqhKTbzoiT2IPp5vajjy0w6KYfLeGrcQLwJgQ9CBVSWyBVJKkGn3AzYxiL3mc5OfQCa/3hSbpde4xJbGpiaS4LsahbldEX0cpAMiTdtCT2tL+L68DKww+RLJunlyO1jjd550vCbDu/jIevMjy8kzP3Xlb7SGqJhcJAeZ5+PYdzCEHXQ9ZRoayvlGSZHO2a4qa1HFJimXFF0adNhtrXQqbbXM9Yktqw879VFsumm3PIJYNYBMhq5rzXsC87LTd/oo2aDhOPfZbGF22Kxl2/iDKFvpWg14Hn6NDEIIEDUXq8RYvh6Q+E1M6VyRMh/6GHqxFqxlf8FsCK0y2y6Xape5rXrI3JlCj5cRpFIkTky5rsHIJYNk4gCZG6oBkjk15YWeVECt1q7FvfBvJ/pcrzI+mmDwEYp8OyIXlIHJitSw1pSTcAxAh1e5YNlojpNgmqoz+6nzG9l7Mcqfnc9IXqxJoenoJE+Qm4xlQsCUw3bx7JLvSb33D+Nvtq+7v8vH4hmGjW+Fo0RveoPrMf8Ms/3M/NGJ08tLsK/m1GjbbmqooRRHgoxVZPXHaTxxyR9C7uqAtD0p1optvPRi5knAXYw3jPIQXxmkNeTDdJwAY0ozD7URT2xRHOT7I/WXHeLUm3l3q5Uddf/wlMbeDPm/zW/wJLx1L58eaC5BwR7o2iPBgMgYnig/DsX0dWjDxEB2vSEkkKDnM2BnwTwAxJt8tsyKeqPa8MR57EtzEFDix1/eN6DG0vTSo/plXWIYakOYtsfPtkmiHRjP/8kf7KpbUtyTEjOnwv2OZOb+XBWDuchRKXcTDd0RJ32laXAmd+6vEiS7u0LZCa5cF0s8YSLemWWL9MTVZeWhn6Xhj6i8qXlHTz/IGIhHmAeyyQzt6cFRPUq/qgZnzFbwE8STfPRoWnXi4iloTq5SKEPNTLOQikPihQcd/4gvnAu5xD89jZd7mX/W6ibLq92pfXP8tvJ07LGVJInv2iMOSTQVCRYVwAQ+1I0qbb76YvJCY0YNskxm2qP01nRiyCngsvZkSgXh4IhqokGUecLuOn+4hnjPGV/0vAsslqBPQuz9tAaUk3iU0v87MN0o6WpJt4lw41ZeXvxXSLojJIwI/GwI+3A9/0se2rWfNG6KSITutD0k32CW3awasLCVGIKKaTQw9sfp1VCPUfbPVys11WGmuyH2/y+79x3zNDz9CQPjj0I60hnwkkVTveg9TeTOfluCfamyQlkq57Xo7UfM5nGUl3IkKGubIk5wZrbDPaZ/1f9djapOOvuMFQLxcmp+YpyQgFlW7zPJVz60DtHaRXelnNP573eNG+tOIOQaaMtUMvzF2veBypxUrdaUMpQOvLxO+xDlMtJ4KCOSOSdPtRL7cEMnHQMyJtDJeku9Rb0u3gWRj1ctFxHKZbSboVKhQOb6KEHaXQo6HHqR+NMJG3CyJmnZB0+7EvCcJ0k98R4zBdMurlPKQZtiTW4iVp38UqJwjTLcyfwxCVnwA+bwesfdKdNiLBdO/72nn/8EJIM91+VQJFTLd5wk2XSZexwjgk8GPT7RlvVmADFQS0IxqAr7INsMeKAwEkxYA3k+VK70O93FcMX6od63SWqAuhgWPi9P8B3R8FGvbxUTb4885rI89orP/v87J8WVve1L2Lm5o3LJDzwHMO+ZB0h0J2yKNBHzGy8lgLhdIYhqQ7u5U4P1EZtKSbZjplnR6xwGNMiln+GRJh0y0h6TbTpDfgFcB4lVSxP87uP2FEiAD7FnmPN8cTIel2lRmnpJt1aEEeOjMl3YLyvNRw/cBqY8l2o5lS2hO2/YP9fulRd4hGUxU+IZA9zCHTkQITAdNdeoxfBssfhAMMm+7yfODDEDDzdB+S7lJ3Wpkx74j2QWmXCsc+J7wXmY+MTwrTJ0c85nL0PGk8kPhB09YRYq0QSbrNcll0JfVdPEm3YroVKhRMR2oeNt1MpxIBJd2eqqNBJN0eDEHPJxk3iW9iSUUBBtPtg/GwpGsGsRGPpNu1QGmU91YWRMyVmR8pIUrV1VdpRy6WpFvgfdokqEx7TrquruJZ7eiX6RZstuuecd+LloI7prycxJHw3GwSLOnWYu5x12GcO13BDiM9S5WarEdQppvRP7XaAj3+KE7P0qYA3OrlsqDr3/V+iZcY4z0zB+j1PFCnC12AR/m8dvXoX5M5DnJYZs0XD7XXRDLdpDNCVp2lnENxQHueBWwv937AsumGQNIdCDwHTqxDv2TbdFNEMy1xFTF+5hha9TAwtSGw5d+sRPz3g9p0e4UM87su8mxxSWz4G/BZc3/5Ogtx3yL3RaYET9B2ln1sAmC1sayklRqnjpjPZBg8Tv9+2hiYQplUmeMuETHAZc0WeBEtRAcAluNYxrhkrh2ALelmCJrW/En/f3SZ+yCChxhDvVxmzJ/YDJzYql8fXqT/LzY0JkRrqyjKg1kPXr+R9bQEMkGZ7pB7faLjjZMo3scom87Sw6bb5ZSZtRfA/5pTRVEzvuK3AJaHcZY0zZGe4UhNyHSn8JlCIePqoV7OW6C9GNna7RnveDlGgXux9CVRN21a05zvmv8738V/9egK/UT1y676IhpI0i2KaW5+F9Ge6/9iS+cdaU0P34INVrgJMBhav5Lu099x35O2VTNQvIdfhh/1cs+QYZwxKuv4xoWYczNpdSnbSdUMY4y7CHLa3tGn1K/X3/jPcgYDp/4FaHs146FRLu9AQ6ReLgTV/iIv2VZVzAMwRjk0Ex9UvdxrXJgq4oE2fAmVY690ZlpL+sOAY04Re4LnAZ9PkDHSSQmsX7AYMJEjtWRDtpzATsAo1VeXXbPZhsb3n/mZ/fyE4WPkF8PB2raJwcoWQei9nKfNwpgPrMNbE6z5SftU2fy6OFxoEDj2CEadReM3o5H+PyuegwADfqKgAG7Jp19JNzNP473F18i/w4PMgTepiRkKsxlLJiSYbno9Lt6vOx3N/Zko3yj713/Z92TpD5akW5Zd2vSq/n/1Y0Zexhj0K+kmNVp/egj4nDAXOuXP7HdNDTUtBjbj6mXeyJAyOw55BOOX60iNtOmOQ9JdQ9jVmvEVvwWwbLrhQ9JtMQCCRVrkSM3T6ZkxwYsPAgtHU+EIgqqXszZJ4psym7mfA3CdJvtx2EZLuunNUqQivNCI+52/Sbd/SpZ6Ob0gsQgjmbAnohis5bnue0xHaoz8TfXJRv0YefhkuqMlCD5+CHjGm00w002H0BLls/dLtnSSJFRz1/srP82wQe7Eso8zxo9py2+qUAOw24F3Ui6QdAulntQ4kbFtFEr/aYIioCaA13vxSLoLtjlD+pEgxwYpLWBh1cPAp42AnZOBnxnaP34k3Z6QJOJZB4CysOol6UgtCGQPekuPyq9JfpwBOZ5RazFXemx8f4sL7HtLb/Cul4zndL95eKqXM+bN16cICmC03QbBwWAQeB6MsdpJ0D6maRbpdTsozPEhKz2nI1OQ66VjHw6gWbh7qvw7PJiHQMLySPo0BNTrKkxugwqR6ngkUC/f+SGw8h7iRsxtsia7pvBsumXAPeAN6L1ciznbOyUb6Pl/Nk1BHiyF47TpDoXd9STHm8jkJ6hNt2vtDIO5XvgyZ6u68PUV+fn5Uunq1q3rnUjBHxzeRI1rmrAn4VLtMdOJmG6BGohosSJtun+6Dyg9oi/s13ipRXoww8wFgvVNFDxtq0XgSbo91G5pRAoYhIwM0x1jL0yhMKxvd9mzik4PBX0gWsTKGXNd1pGa5UCE0X9+VdtEJhR+4NXuXG+fARd6Wr1cxGTOv8hdHj0G9n0ZrB6nvaTH1DUPhABCWmC0CRkTM2KYI/Dss0SS7rS67jj3Jn5+gp8PD0ImxSfTHdibqzmWqXTNzwf2fyt+9ef/0/8GfSiuz4JLxfmYnsXpMHMmeJLuIEy3NJNmrotxSLpJJ4NMCUsy1MuN9adwl1NyJAORY0PhXmZKuhmHSOn14aorueZ4hQUk8xWV7YXjq5z7ipd6uW9Haoz5yXNsFxgB1gDRGDOluaFUoEEv4PjqoBWz94J6PeXS0/4g/KqXM+sQxyEWDZFWg6M8ghbo/SLfJJBEIPVyVvkx3Qs9iRKWTwcGWN7LzbIzm4nz8ct055wJ5G9w3zfXdXpPdezf5U6m29ORmpekm6VxJCnp5qmXk47R9kxzP6bbMhRit2FQWqyKwdfKWb9+fTRo0ID7Zz5XSAJ43svz1nHS0+rlJqMuknwyTrkc+XFftMsqPcJ6mf2al4SBNfE8vVMy7sdj0124HSg5IifpJhFOCybp5jmT0WJAyUG7bqR0knl6KCGJMr/xtJcE75P3OJLu3PVUHF1KXZKEX0l3wphur6Uu0ZJuSr1cdsOIRxOChZQMp+QMYBAuxLebm+Kx5ez8HO1BO74SzLPCnVQ+cUq6TQ/20oizf+l+CWx2YCKBqtMuSbeHRFWIgJLujn/QJTAyMOvlUP3VkFBJNwmHlNBoK9MjeqIgiqssknTX7kCs36ywWhKHlPGqlwPuvuPZn5vwbW5RBZQqmeNJ0D4m0x1OBUb8CFwmcQDCzcsY6+EUoNHp/t93qJcHXDuChGh15eEzTJpV17Curl+nk7/3aXg6UiPfj7nT0SFJeRA5UmsyRPwuV5OFc//wQrZGlHnwsvoRdj7mmCL99ljCooDq5ax5GpNkunnhcEV8BWAf9DvqwKp7zWC6fX3F3Llzk1UPBS844nQbE4Pl7dkET71cyHSHgjPdpC2NiaI9undbVjzOUNi2Z+XCi+nmSbrjsOm2JNrE1Fj7FMF0S9iiAno/0eUuv83NfLDK5/VRnnEa6pIKCSTdopNwcxHreBPw0wPs90mwNu0jS4Elv9evr4roRAWpUubKwyfTDc4hxPb3/GUTSgFaXsT3KH18Dec9vwu9cQBFS7plHaE57HCDqkxT79Jzmma6/UhLSE2PvZ87n/k53BIdXpUcAmYNtiWhrDVp31fO317ty5V0+2C6e/8dWPWg/jtepjuRUieepDsIoyNN0FNMd4cbga4PAl91k3jXqBe5lsbK4R7vCZJ0Z+TohzTRYpuJ5an9B4VXKESAfYi08l6g28PGD5PplgytZCcSFC3rJI5a5zb9Q/9/bCUnfUBHaslEkDVA1D6kpDucpjtxTK1j2533/RewQuDjhVvPAG3hOIjx4Q8is6l9WJ+INWfuCKDjzUCehLkTSYPKONKzIJB0c0OGscpnMN1eaDoMODiXo15u5MXU5iIET4lyPsgDnX/+JncZohCo3R4BNk6QyxuQl3QLIx0Ivp32D8Cz6f4tqpcPGeJxwqOQPDgcmxiLEqme50pPOLEA9HAjgDdRRU+6jByg9LBYtYq32R1aCLRjOGuKRYAUCUmXp6SbtwAk0JEaoNs388J18cCSdB9eLFG8wGTABH1yyDrw8KNezpJQiZzrkCAZr71fAK0vtctk9Z+0MxWzTM4hxJLr5fNo2Ec/Ye/6AJ/pJmOQkvDLXIVTdUK5cDvVXkZb9HlFLGXjOVKLB66N1CSAKEl3GeFRttlwyi+DAdJuO57DLdHJ9+rH3arH3hmKH/PWPT+SbjLutSyz7rc+vmAe8CRQ0n1wjlw62pGa6MCWhpmOXEtjZe595MhS/7GFWQin6vtY0S57/YlbU4HC1rf5z6y+ZvRL0W7KDpWCzCGlOe9+eQXIbELtubLrCKkVp9nMNk+jJGjIsKQipK/zPLqIOecE8zBijD2yv4Z+Dcw+0y7PL1KyAzLdBiOixeCss0f/mgw34O9QlIeDc/U/GTjqKhE2y0SDU433RY7UZNo+Bv9mEEb9YixJt/Gsfk+3uVcoBKFZHfm+LGp3BAq2MvIRfZNHFKFQCnDqswKmm0VzSzLdonDDojrTkm5uyLCawXT7GpGRSASlpc7YuAcPHsTTTz+NRx55BIsWLUpo5Z566imEQiHHX9eutjOGkpIS3HnnnWjUqBFq166Nyy+/HAcPHhTkWI3BUi8vEXyrFnWedpWZJ/teTDc1JFqbzsE2SleVyMysDFU3SRUl1sQjmTxZSTePoRK965jgIULSLalejlAwwnrPNL7JgAXq5JC2lwXgkkSxYH4jc6GVlHST6Sw7cIIQpyFzQu4sAPKEIwNdHwBGLAc3DIVVDGdM+l3oSWaMPBE32zgjx+P9BKuXA3D4XCDrQs/PNY/baTrezM6L5YHdhB/1RdEmTJuosNrEpaYYlOmWVfvneVQNiIRIuo1+cxDBxCFVkPrSoQe5RdPrS0jeWzpL6lWnE1x9+MtLwLIb5fJ01Y9YM0JphNqlMc8TwYCQEGmdiSTdJFjrpQzTHYvo0q6f7gN+oD1TB3CkxgszaR641ekMKdKR9PpdIeF+PPZc5kGyoH1MQQW5RpBmXUHCOGY1C9gWxJ7vCDdYATbd3R7xTsMrz3UAKDNuWtrv0/CTjxbz30ek6jbPe3mPPwHdHwfOJ7VA6PCHgrxFIA8DO3LWPjofU9296dlw7emsd0U0DVNQQvB8Qkm3QMIvGvOu9aZmO1LzNftvvvlm3HOPfSp74sQJ9OvXD6+99hpmzpyJYcOG4euvv05oBXv06IH9+/dbfyRjf//99+OLL77AlClTMH/+fOzbtw+XXXZZQsuvMmCpl4sYGFrSLaNeDrgntIxEh2fLxwsjJmsXxJqou6bY1zx1MdZ9lmMwJhiSbpLplnWk5lDz9IlZZ4mfe9nIAHbZok3ZWsQEcYSzWuin+wCbMY0xVKhF6uUHv9f/txjJr5ejHnHadGuaXS/Rwl+0l33fr0Qsi/Co78hT8qQ/YZJuOqQW6RWdkhaYY4R0FGV6oKchsttNlKTb9e2MfutAeXX2JK44Y0j2oEAU2SEIEhkOi1QBdngvTyKj49KkCSDpJpGajcRKQ4n2Dafa89jcexJh3yoLae/ljPsye6UWtRlE17MAkm5eP5y3BGh7DTD0K++x1fUB98F1shHyYLojhcZ+Qn6rxDzkRmwIKEUN0hbknu9HvZxE0IOmul2CvUdq7dHOO73eI/+T8KOmHkS93GK6BTbdabWBXn8FGp5GPnSn4+UtLD+Nfc2qR4Ne+n/zMCy9of1M5DiU3itrdxTXkXR4KBxDIkm34NuPrqCSh9n7eTIEEpUAXyNy8eLFuPzyy63f7777LqLRKDZv3ow1a9bggQcewAsvvJDQCqampqJZs2bWX+PG+kljXl4e3n77bbz00ks4++yz0adPH0ycOBE//PADli5dmtA6VAmQkm4pz420Tbd5wu+T6ZY5XerzMi8z9m1pybPH8GRKY8s43yi50bEk3aEQrM1ZVr1ci4Pp5kka7Ap5522FdhDZ8JuSbhbTbbxXu73t3ZopKSDvUYcsog3PjIHqBZc6nV8Q74rqc+QH9n2/ku6CbbatKukoKiTLdBvPiyW9rMqCSSxS/eWQDlL1TG8AdL6HcoAm8HLqCUFf0IwC6+DD1ZcBJd2ZlOZBXU5YG0esUb9gEcYJZLpdZcWhXk4SYMJiTEaSCC0Vd0idJDFm4TQG0+3DIZRJ3AYGJen2IwmT2UO0iDPPzf8mnsmOM41zTaD+ycAZHwB1TvKeC+EMKtIBkd7LEZUMWl7MuOmxL657GvimFzB7iL3GmOkzm/LfI2kgUprne7xKHP5yXyWkhSymu243YKSHFpnMQVP//zDK9rkHWkw6qXUj4QDNijFt1JMVnsrKpwLUy2Ml1DPJvPw6UiNBjrXyPHYaMx9zL7YEcqRGm8CmmwZJ03p9o9CRGm9d40mujfqb/iPI9Eq9XMfevXvRqZOt1vf999/j8ssvR7169QAAY8eOxfr1ftVHxdi8eTNatGiBDh064Nprr8WuXbsAACtXrkR5eTmGDx9upe3atSvatGmDJUuWCPMsLS1Ffn6+46/KgwzhIXXKR6mX7/xQjoFxSbo9BnrrK3TGjAVTNY4momVVGENhPdxOu2vZz5lMN8MBhp5YrkyLYYxTvTxRXrdZCIWBYo5k1gJlc8nMR9C3VtsSp5Skww5XOgCH5lNlCjZG2Q3MJZnwCU1CgiNCOM3pbbZeD+93TMcg+0itH+N7vQ6xCrfr/3+8OYCHbgGY8b/pDVrAdA/6COj7ivM+/S1eDELtk4z/HdgEiKWOSjPdLP8PfglXzhiiY4t3fZCdLpRClRmnWmfBDvn3/YBcd4IQ97KHYeb64tDAikPSrT+QLFsC9AGSRaCae5KPA6KBPp02uuoiK+kOGp4w6mQGl99GaD9IjtMThO0ouW/xDqG8+ioUFki6E9DPTKaLOBznIXet7i2aPjRKbwh0f5RTFtG26Q3ta154RB6s+RiE6SbpPsY3hkL2+sqDzAFOen3n75TsAIcLhBq8S9ItYrqNw+qYQNLt25GaX/VyIl+XTxNRmZRmDTNvGUm3jCNVSmvAQauR2musccKoA1eTg4FYBFh6k/t+s+GCvuXYdPPCkrLUy0+6JXmHshUMX7M/MzMTxcW2p7mlS5diwIABjucFBQlwfGJgwIABmDRpEr799lu88cYb2L59O84880ycOHECBw4cQHp6OurXr+94p2nTpjhwQCwleu6551CvXj3rr3Xr1gmrc9LgcKQmyXTTk+7EFglJN5W3l3pttIT/zFJLoTb+hv3EedqV0Z3CDHqf/Zi1KLPUgnhpaaTWst8NU5Ju3zbdcUi6vSB76KJf8NOIbDBJFXEp5hzA1v8aEiRKvfxchq8HaSlcBUm6eQinAtkt7N80USLCljfdZSdcRSoEXMbw7XD0RyoZQ9JNq5dz08MeKw7m3afqfX0jRm23R9h9wQtzxyQUEiTpBoCcwfZ1O9omlqiDywZZEiyp6pxz2Gl7x6spRqiXIywXms0BnxpBDl8jgrFNeioXEWdJAcEAWqqrPphukRRUCqZU1dzD41A/ZSEWcb9baB5sSzLdC0jJMfEOzwzIay2lTaDI9Mkye/BSLydBqzCHUvjrGbn/kes/7XXZu4LGvyDjnLTpJp3JkuYdXmugxJin9/qWv/N36N3sXCcz6Mem21wjrHqymEZq7xKBdWBfiyMgsvIX2TvL0EuCPKRU64n68tZuWmvAsa4QBzObXpGrg4PG95ib+74Ctv3Pfb92R/444Umuec6UWXG6SV8K1Ry+Vr9evXrhvff0U9+FCxfi4MGDOPvss63nW7duRYsWLXiv+8YFF1yA0aNH45RTTsGIESPw9ddfIzc3F5MnT44r38cffxx5eXnW3+7dkpLXyoRDjS+Aerl5T+R8DWAQ216EdQBJ6sq7gTUs518CmGqPzUcQN43va3WJfYvpAANymzEZ25xeiCxm3Id6uadDtKCIh+kmbY8kmWmRdJZmKEgNC3PhzDmD8aLHN5gSFnLjNNXc/cCxEQSRMFDj/6Tb/OehZ2T889h4L1zrM9uw7rGYBk1gMQlggaSbluKwxopfxyZmmC/eJmwRwtRcNf0AOCtE/YyD6W5tmEyl1XPnayKzqbMNZTQeTPhRZfYj7ewwTv/fgLAtdEi6U+RjZ/uF2VcxycPgWm3sa4sop9Ymab8bMiAl3QQRR9dbBjLjXEiQG3WZd6H+v2A7O92JX+Xr5Mg/CnfbM0xGpPOLsa8d8FpL6TmeYEk3EyH5wxR6rRFpEPLmJEv9WVi9eCTdxCHGwbnAjI7A/u9gj/OQd76//EP8HGCMY599dcozxPwmBA88SXdaXfvaYrpFNt0+HKmxDuy9nPg26G1f035NpNXLAzLdba6EU2LuYdNtHcKYY56WdIveJe/5kHSX5XLyTQGXF+D5IBKGVhP4pKnm8DX7n3zySbzyyivo2LEjRowYgXHjxqF5c9tD5bRp0zBo0KCEV9JE/fr10blzZ2zZsgXNmjVDWVkZcnNzHWkOHjyIZs2asTMwkJGRgbp16zr+qjxkiRsTJANpQkTUmDZSftXLRUy3KQWnF4DctcD6Zz3ypfJuf71xQXy7uellNrUZMp56uYzUORYhNmHSHi2ApPv4av/qZ7KQdSICuNvewXxJMNNeDqSYRA7DkZoVi9Z85CUpMcskHOOJbCu5+cUr6U5ztmG7a4HOd/vPxyI6POZTnZOA09/xkS+nb2i16bAE002GcyvexylHgijgwRxTB+ew682TdLMIfz+Sbp6qnYnOd+nq8yPX88dIWl1KWueDCPDDdPshcs01yhEyLAar/ZLqSI0h6RZpzsg4oCo9lJCquUEQfSKCngc/zp+YoMZeea582SZEUQ80hqTbfui/LIctqQ/inX7Ok24na1xqUfn46y5JN+cgEOC3rW9NtgTZdP94i+47ZO4IuA6XRNgzXaIcmv4Lw9cYIg8vSG1Lpk13SHe4Z4KWdCfCkRq9d3itxV0fsEND0mmTbdNNaloC3mrqZn2swx8Zm26WpJtkugPOTRHTzVMvL+Gt96y5mMS9rILh60uGDBmCFStW4J577sHEiRPx1ltvOZ736tULt99+e0IrSKKgoABbt25F8+bN0adPH6SlpeH7720pyKZNm7Br1y4MHDgwaXWoNJDq5TKSbpKBtO4JFpy9M4z8AzhS4yEaL9PJsDHd/w2QZ4QvI1XDTGcQpcfccf8AwQSH7QnZIen2YdNNMziAvzBlfhGPejn5rlCCbRyYpGSIGUV6YywvsMcd2Va0qpQM0QbA4YdAVr2LRM5ZRJ4BvcbShI0ZR9REFqHdwz3lllQvZ3kX9UrvNx3PeznJHLgk5aZ6LnmIETDWcdEedv/zPO4znRfSbSRiuj38K4RTgXZXAdkt+fmE09xMd5Oz2Gld5fuRdPvYks35S4aVIssKKh2QcnRFMd1eh8EOXwCcesUjlSclZnrFiLIJvxRBTH7ideDDkjp5qbnSEGlWaFHGmsHQXpHFL6RaahxMt0OrKsGSblabRork+5elXs47UOftk37HkkwUDe67PO0g84CNZLjiAD3WQ2FjXZREON051yyGkMEs034yfEm6ZdXLaUm3QBMiuzWQmmWXEZTpNueMuY6azum8aOlQmKqvxyGQ1c6EIzUZ7+Wuez6Ybh5t4qo79cwPq8ka679VSTcAdO/eHffeey/GjBmDcNh+vbS0FCdOnMCoUaMSVrmHHnoI8+fPx44dO/DDDz9g1KhRSElJwdVXX4169erhpptuwgMPPIC5c+di5cqVuOGGGzBw4ECcfvrp3plXNzi8l0syXa4FR4L4cw12L4JDsPhZkl7Oxt30bPZ9Ew77FqIe+74xnhMbpqn2/d0ARqxSAEtv5JdjfTMhVXU5UhOol2cyNCuSuUj4Ybp5YS8Acd+a9mrhDH8HL6S9D2nH6WK6vdqH2DwswiIA8dt2jP93SORLqHySfg0G/JeTyAfT7QeydoVS3suJsUJL1ljhavyMCzpmrx9JNytMX5MzqfqJmO5yMdMtk084DY51N5QCaSJXJtayla8f4sRkuol1nTxwDCq1OGcOMHy+OI3ZnqxQliyQWlY8tVxpJ24M9CP8J2gaXGYlNNPt62ArXqabMfb6veEzE8H4jUXcTKjlnTsA0x05QeTD6SsZTSVHGuL6wHf+6yQDr3lGOkEzv+uI4XQ3lCI4MOX1fwzo/2/OMxboddcHCndx2tyHTbcMXAdiYaApx/8EC1nNqbkmsOnWIs5vSqWYbqb3cr+SbioPkVlJrNRZVxeDLrme/nQ/HKFrzXHnuY6E4dTME6lfE//NeofT4NrTXe8yDi0cB/Je9AeP6U7RDy2YttccSTe3CAaTnkytrQqGry8pLS3F448/jr59+2LQoEGYPn06AGDixIlo3749Xn75Zdx///0Jq9yePXtw9dVXo0uXLrjyyivRqFEjLF26FDk5OkH4j3/8A7/73e9w+eWX46yzzkKzZs3w2WefJaz8KgVZ4sYES708KtiUTLvARKqXlxeI0/ixF2fanZgLVJjNDJMOko4tF5RDLCRmOzuYRMI5EUvqRjKXVpbJXCR8qJeLYh6LmKaIwcylZPhjBCOEI0WHpJvua1n1cklJNzefOCUsx1fBre4sCGnFs/k36yFz2p0Mm0empJs4bHL8B9DifOf7Vr2pOTlMUqMjWkpWBsz+5xH4LAlUw9P0uMGX7vEue/Mb8kw3V7qQxiBOJPtJtO66yvFLnIBiuk84nzfzQTCT73lpMWgx4MhSSDtSIxmitDrsNL6dvpHvEvXVYsChefbveCXd5tgf9GHAyjH2P7+mGSLmWYswyvCQdLP8QLjeBZBWn5NGRtJNpMnfKE7vG4zvIsfY+Svcz8l3zHGw/q/6//yNbA05QCzpPukWpx2wCPFIugt3eOx/dESKgHBJun0y82QUA6ZNN22rS9IjxjofE6mXs9TUeRCol9ft5k5OO32jy5dqfwPHV8GmW4y6es35UNh2XFi3q0CqTDHOEUJAYr5zfDWnEJbGQQJMP0Ip+jy5dC8wcgP1jHPIzoWSdFt48skn8cYbb6Bdu3bYsWMHRo8ejVtuuQX/+Mc/8NJLL2HHjh149FFO2IUA+Pjjj7Fv3z6UlpZiz549+Pjjj9GxY0freWZmJl577TUcO3YMhYWF+OyzzzztuastHMSNxCJYvN8dckikWmOGoPLtSE0AL8m6pzMbTggjl9SC4wQlnMZmiGmQ75oxstMIp12OzYPRHkymO5mSbklHeoCbWJOVdJvq5eF0f5Keej2J/Il6stTLf/cLcPpEdj6kmpT5DSKG1eFgj4cAUp+ULOfhDQtSKvsSjtSSGYeyiGBOaZtuTdMlkSSRQY9zlno5QkDz8+x8RKDXImY7cA6KmOrlABqfbqs+lp9gpwGAg/PcefIgknTTqpHp9eTy9KNeLks01+1qpyWZ7nLi0CuUoqs2nvIsMORLH3WAN3OqRYHvCDMu+jA4uw31AvEsi7dHxxEakNxLyFBFAFC0171nSEuACSlN7Q7eyUkbVas+jAMfWS0RS21ecGjE0mqzH3Jui5h44ln3h/nphAjLM2vNhnunkUGMONjLYDmXjLKvAX39a3MFO1+uTTfDd4kQPqS0ovcddSDVy+PJ2wDTpltUJXqfCNlRawp3OGk0/QV+/rSkWxgyTFK93OVIzVgnWHsKfUBAQ9QW9OFmtJhg4s1+lzhwH/Bf4LR/6NpG3ANg4/6BWfr/gi36/3CGrhFhPmOFkHOFC4WzHE+61UOCnpLOMLcMIulWjtQAAFOmTMG7776LqVOn4rvvvkM0GkUkEsGaNWtw1VVXISWl5jRMlQMp6ZbxmrlxAvA9pb4tYrp5MUS9iAPh5s1x5mU99+PMhqhHmCKgwilAwVbGOx5OwOwM7UvztDuFXDg0fvsA9mbhKDvJku6mw8RJuDbdko7UTJXpsE9Jt8kANOzjvO/anFOAul1sD8w0HOrMLJV/Ap3uYNuh9npepsZi1G4PdLlXVwf9nRGnXERMem3YQqbbh72aF4RMBUW4lB0DptRzno5zT5oTILXj2ify1iCJiAFea5u0pNsH093nFTkpVzLUy0lJu8ORGtkOYSCjIdDzT0B2K/k6AHxptFUObbZC2WdKfbOHBokfOCJFsBzvUeYRgZwiSdSPJa0/thz4sjuVL2POXLDGvm5rmEi1uVL/79AUgfMgUIvA/c2UyQhp3uEHLlt5Sfix4wzqG4KGOeZ4MePpgxkavOgYvH0nqE13UKdQQvVy82ccYUozmzHazaOuLsFJ2HbC+dMDDMaTzo/47ceRmsxcFDlSY81TEY3nKJuBcAbQfiyZmChbUtKNsB6Srut9+nwVOaZkISXDGemDperN0jjgmYGwIGNuwvTf42fMM5j036p6+Z49e9Cnj05M9+zZExkZGbj//vsRqiFBy6s0SIc1myRCP7Ag9NxoLGI0sZTCcBLGeo/5yFx0OASvV3gPh003Q9Ido09RaXCIexrk+DUl3eRpHamqz8qPKU1P4pwIhYG63cVpzFNQEdMtOlCJEpJuP7a7poScJqSCOlIjDzx49ej3GnsMdKe1bgL0iRbTN8tOtwF1OxvZeGye9U9h3DQlEQHjgJqQjhMvAE/Vz5GGehZmSbrNOeH3sJVz8m1u6FmU4x4ZtWMhU+3hvdxRNUabWIcEJGGRonu5veAn7zx9eS+XZVQISSKZP3lNtrGfEGeA21mgC1R7hilJt8vXgAxDHQfTLZJikqrv5rM6neXyJce2zKEAa36vfcqtXk2vZW2vARoQ60Z9o7+0GFB8ADhGqUtnNAaGLzTSRN11OzjPrLT+76RbqUoxvmX3NP4zGl7MHe9gjcbA9/jxekUgw+SZMGkX+oDMhGiMAPz68vYdP2Hn9AKMfwFpAy+b7ngQSgXO+8E9fr36kPbDQH8bLekWMVO0IzWWM1qWbxEuWIetptYci+mWoCd5SMkAdn9KVtR94CCjXu68wU5nznVamyic7vTezzr4NMOg8fYJr/7mjXmW+Zp9wyfTHBMc+ld/+GK6o9Eo0tPtwZqamoratQPEzlXwD4cjtYAQEX/mAkGHufIr8XA8iwJHVwB7OaqN5iLHVdvzYdPNgrQtCUksml67CUbasUCxvD9K3ksUZAkawE2MkWq+Qkm36ZzDp3p5lHTqQcAl6fZiusnN1QxpVcpN7pvoaHMlWxWURqP+jHdHO3/TbczSQvAj6RYRZaQzIBGEhF0A+z+RpJv3TSN+BM5b6pEfAd7hisxBg4gJ2PeVHtWAhEv9WQDzkIV18CeDpDhSI1TwYhxJt+wBWxC4JN2UdLHLPfQLMpkGr0/9k4lsRJJuv9JJn+u4rNaHa02lD0fNQ64osOoRxvthm+GJMSTdm1833ucwGazvWngZuy4seLYjQ0WUhdTsYLb8LAm8uT/wJN2eTDdPwilwpAbIM9HW3Kbm+Cky4VPB+aYEMd2n/kXX6qKlq17rUYsLqRs0001rlgiiTqRQNt3HGQeaXt65XWVz0rG0p7yYblE/5wx2+rMJheyy/aiXi37bFdX/0XQIXW9632l1CSc/H+rlXEk38R5No/i16Y6V+WiL6gdfO7GmaRg3bhwyMvQBW1JSgttuuw21ajmloTXWmVllwlIvj4OZk5F0t7kSWPJ7+7aL6Q7BuSmLvKqWAzP7CZ4b33TyU8DR5XropTWPu+sEUCdpDJtuFmQnOzmhzYWKJPS9mG4WoZXUkzlJgiZaBiEBJXR8ZB4+pPtfMAE3ke/Xe7nDpttUkRT4a/ArPTh9ok7w/fKSOJ0ZTo5EahZwdVQnUut0Ara/bz9r2A84tIhRPz/q5QKwwtOxIJLKcQkgAZg23eYzTr0zm3LmBu/QyPA6TRMnaRK2015E2M9POH8P+9Y7TxPWN5DECVHHnMHAYUafm/DDdMv2CSnpJqXKPAlGosFkuom6Nx0GrPuzzzzjYLqbE47/WISheZi88yNda0Xam73PNpQ93PB0qEjscYcWsJ+TjDm37TiRH0S+TmT6wUtLLSQp3QqnI5B6eSikv0vOLXLvYUq6abt/lokEqyyeTXcC4nSfM8/H/iqQdMerbWqOD1ddjHzbXw9sf1c3CSs5BJQdNx6HdTOu1Y/Zv0lsm+jM1+WcTCDpZtaTFrgIIDIrYh3kWqFOOaELWfPiwrXAge+Bznfq6vR2RYOpl5PgjguOhhn9m9Y28gpnSl437OvWrgEEfUNqgaXqh2JWxAqfku5YOVz74G9V0j127Fg0adIE9erVQ7169XDdddehRYsW1m/zTyEJINXLebZHnnlISLpT0oFBH9j3U6kTZZp5EhEv5bke9TEmcFpdoO+rQNOh1HMPSbeMOpDUZCcmuKkiRC7KBdvsa6bTtCQ5wKrbhX2fJLhFiBSI+0e0kAVWLyfs6hxl+fRebj0nJN1CKa9fokMyPc+uKhQGzpoO9H4BjoONWq05fWNuvIK2TJWIUzx4incaL8iolwPOk3GRWh99yt1qFND2Kj2ECGuM1WovIGRj7rEjNf48iLCiXc7f9Rjea3kwiSXaptuEqbLHrVoS4nSznM0AFDNEPe98t3e+MmMQEBPPrLLlMg3wjgHSMVLpEfdzM0yVxcDKMt0+iT1ZBtIzndEWO953hluzECZ8m0SAvPXifOjvkHEwKqyeB8O5+zO5PYqOCiANxjzxUi8noUWBNX+i6uJT0u3XkRrLrpn0rC9Ct4c9vsnHfGNpYplrLE+9vL0hiAmnU8wnHYmCqsfOj4zbpkkgpa3mm+k2D+Nl1goR083yEyJxuE+jfk+g673uPar0sP4HEP3uU9LtpV7ul+nmMf2sfe28H4BR+xhlcw7baDoplRDW+dHMBAwaQEm6AeihwRQqCZbTsFSgz6vAshv95yFL/JGMNa3GlZLhXDhFTJ1XeV6eLStD0s0qjwTL/oy1mHlJAmTQ9hrdO/OyP1B1C3PshinEPCTdpv068xnpvTyAIzWXZMWvTTfB5Ek5P/JJ5Jt59X0NWHGnv3e9UHLYfc/c5EUbrxUbm/MttTtI2NpKwEvS3eVe/X+PPwF7PtevLaLCg+kOpwFnkZpOjD7r/qhAmsAguHhpvd5LFLyY7mbDgb1f8N83mYF6PSmHXxRaXuyDuOAx3YQHXprpacTQOmrYT3dCaZqdZLeWKz53jfN3IElbHEw2DVJd9GuJOSIt6fbrSC2opJvK27KvBlCex6hX2F5LIoXA0nHsciwCnRpX8TLdXvbMh+YDOWd655OSHmzshEJwjX9SvZwb6sxA7s/ABsrRJm+fE4UM8wWWWY8k093zCWDjC6xKMPL0AIth5Uq6KZV40tzLLJfrlIuRjyt8IovpFo0tsx4SbS+SdAdRL/ezXs2/yL4OatPtpV7uxXQXU0wz76CP5UgtnMZ2vnhgNicPkVkCfTDjBc2d/rcq6VaoRJDey2VVTF15SKiX06AnnotpMBY1FrHm6SiNUpmnFxmHpJtc2GmmW2DTLTPEWe+b6lMAUKej/p8X25S1mJltLUN48BBOA7P+oTDlKZMHDWKmW2AjHSNsswMx3fQizPBeLgLLkZqIsPBLuJn5Z+aI0/nJywRL6mRqTohUpT3bOVHLtYekO72Ruz7WnCPGU/9/89NZRTG+KbW27lWbiZiboOrxODspCWnv5LA9QsvCHLu87+x0BzDwfXBhzomWv2M/N8dE7xfhy5EaHYaNLIuZD+NeOBVodq79uzeLsE8SXMS/JFHb919uXwFkf0SLvAncZDHdMpLutLrufZRuCzLeOs+PgpSGFYdAr8MIJwTozkllnO55ecM/+WlnmEIek0964fcFxjtm6CTa1IEFcn+3suTREQKtHD9ghvUKyXmp5tYhyMEVKwKFh6Tbak+NYbtMfU9DxuGetX9QNCFL0n1gNv+70usbF5Lq5Svu8MiHSg8g4WyRxXT7ten2GHdeTDcNbvkM9XLfEBwY8CTdvDCWmsZIX3NY1ZrzJTUdjjjdAU99ZBypAc5FlY5FS5dtEsinT2KU58V0054t6e/iLKy0qmsyJN1aDDjpNqMaHvb0LALPeoeRd6tR3nUCDCkza4pKbtRkjGsWTGm26BnPkVrPJzllmiE56M3bp4MWliO1UBgYsZz3gjg/XvpEmAZkUuporG8zGVlRbGdmDE2PfIPAS9LNeh5iSLqbn2c8S2Gkg/sZfY9UQTOhMZhu2kMuC14EsBnCrlZbYNCH3vmRKN5rXHAk3eFUoP21ug07C6TJhek0klRJd6ztPlRVt/7XfT//F3f9WHW27qUC/d8ATn4GuHgr/2BRFmaYmoanOe+ztD/8Mi1kGfTBs8trslfeybLpTuObBdmJ5G26AfaBtuzexlNF7fMq0PIid/pYqa5dBYg9vNftDAyerEtgWcgZBBRuJ+pB0ALkoReTwJZByK2qbELGmZ0f3xT0mnbyU/pcP3m8XRcpUFJjgMG0cuAp9fQj6WZ9u/GNXEdqxv+8DdT6TNvrhvSQV678SUk5eZ/hSA0Atk1iVt3qW5nDhqLdQOFO9rM2Y3Q/EKf82RZgdH/cWVcXgtrNmwcXPm26ueUZ3779XSp5itj01I96uV9wNSQA8LQ56nblZKbB9e1K0q1Q4SBtugMz3SKHPsQiVp9SzyO9JLqYbmMRZUmuRDbkgFtSLZJ0O6TeibbpZkmTic2EJ721Xmepl5vvsKRLknZ/4TQwF15pIsVL0k2H9SGfedh0s+JiAwSD4XEK68l0E5s0Kelu1NfpUfzU5+xnnmCowfmNMc3MVuLEud21/Gf2ix7lVBTTLcmwsZ7JtIUZ194hzTMQKwO2vMkviwcvdUPTZKZ2R7kDKxaCEifknOhnfBvJSJFaTLJbcqRAfGDEXHc4/ZreADj5CXcUiVH7BIdcHFy6Bxid5zZLYmo9UWuTrNQulOKctyc/xcjag6kOJOmWQDgVGL5AP4RuNICTZ9ibACf7lhfeSkqVnaNentUUGDLDnTxWZrdNrbbirNuMBk55hvOQKo88gHetuUHVy3lF+2gXmXrQ+Z08Hhi1H6jlIwICYNfZUXdJ9XLuuuBHvZyQVrseeThS47V3ySFn2aTZgyMbimYzQc5DUhvCy3xS5pCBZZZhlZUBDPsG6Pl/wIC3dM2ZU/7srKsLAc1hkqVeTh5qAUa9RQ5UZZjugDSGaN9nSbrbXy/+PlmpfzWEYrqrC075CzDgbf0UnR6AXqpeJlgqVSbIxa9hb+Ds74GLDHUtx6KaAnR7iHjPnOSMoeRl001LkOmJlt2C/V6ibbqbcFTALcaPYrov2clORyJi2Euz1OqkmW6epFty2rrsr6AzHSZEdn0k0w0AdSnHU7xNL8pzpOZzESW9lNI23WS9zdNx33aBAkk3y97LV9bUt/Z8krBpF9XTg8Ax24TuC9/wUC8nVfutVyTji8vMN5F5jGlDbuUnqYnQ4gLxc6tecXj5Dcx0E9ofLOKTNLORJXpy17qdWpJgHaix6izq16zm+iGXF5oNt69TMtjhnFhwMZM+mG5yXDCl8x55BWG6ZQ4FThjaAh3G8sd5ONXbptvBdHOkslKh9Dz8YbT7vfN3tFTSh4YH6LWF7CPH/hdQ0i16RyYEGasvyfdIKT+TiQyyjjCEC9KOEznrjZ/ICKYWijnWGvR258/dtzn13DvDfYjAWlOsfKixTB7GyIxnEzIRLUT0J+2HpPEA+1Ay6Liv151TFke9vOVFQIdx7nQmeFpH5tg96VaqHA9Jt5e9vZlHEPi16e7/H3D34sKdPg4gqh9qzpfUdLS+FOh4o04I0QP8TMkQbaWHBA+pTajZ2bYtM01sOhY8wQbtqV5Oq20TedQ/FWgylF0/MlSK430K4QzvReSsGYxYk4BjoaAPB2q1ATreZCdlOXrK36j/ZxFefiTdTCdvxj1T/Z0HpiORkO7IKqsl0J0R/9V+2aiDQYi4iAyeZ02eTbdPGx2HOhp1sOPYnD1Usrn5G+lZfSGjzuzMzPlTFIpGRKx5EXJmmwybKV81UT6JknSTJ+6mXaUJvw6bSo86f8tGasho5DEfzP6Ow5zA7+GCCVLSTTPdmgaHk0w/xIVfLQ2eenm86PgH9n0zFvqZn7Kfu9YmP5Just5BGKAkSbpLDni/y7THpr6d1EpganGEgbAMk8JRL7ceU3t0pIAoLx7ykHp34LvsZCxVUikI3sld6/066yAjnAKMOqBra5ChUj0PiIm6XLAG6HKfO4YyAGboQYTscHbCMjh9schQ1T+6zDsPcs0BKMaTI+l22XQzK0dchjiHFJRJIF0nQJLpNsqS2VeETLdgbPOeeR3mcPcfjnr5kBlOfxr0nGl6Dic/o/+aj6CKSeXbSQPAtv/Z1yRdSkulg0DEJNOS7tTa+uGsqCw6AoWSdCtUKmSdotAoETDdwpN/StJNphU5M/N0pCaw6T75SYEkzrjvdSJ/dJn3ItLqIk4aQr1cYzgnIhd90WLMkvrIhpUJp4M5Rc16tbrYIwNCvbxBL70ugz7Q42peulsuNEaYJ6Hl9E0sQTbdpLdUq58ZGy7PDvrs791ZssIhJYLpKNjq/E1LH6Q3DC/i02iTWiwbTx+bkjTTzQnZ5wd+N/E91AHiGT7sr0lCmQZpnhMUfiTdYwh/CaRHfxfTTayloSQz3UxTlQSMf14eF64Bzlsi8GERVL2cUmENQiiyYl/zyrIg40hNZoxIqIZ7qpen6Eyi5xgQaKIB7rXqi5Ns1d64JN3Uu6SdO9nPdbsFLCcOjRUA3EOXrKaGTTtRJz8HdQ1OAfr8g5AqE7AYW0oyLBPpJN443IC91rB84ch6L6fRqD+cfcFjuslDdLJOfpluMz+JPhFqAYiYbqoNOt0JtL7MHdLW/SLntkC9XMTwhkJuU08A3IgEoRRdM4kXwpI83CHb/cRmIlGy1MtZ3ykY0y7P6zWHVa05X/JbAm2bJ6NOBYiZ7nbXCV4kJkd5HhzEh8iZmSzTzVK7olV8HeqYmvMej7g58Wt8DA9t0+2QPhBtULSbn20mI+yCLLEcSuNstmZ7eXwb6Uit0x3AFceBxoY9NJ3vsJlAjz8COYOpojhMN48I4IUME6mXNx7ozsfB+FGEo6P9OCrZzc5251m3ix4O69S/2PfoQ5HWl3vbB9OgvUjTJ+y+x2AAR2ojfgSaC1Ssz5pO/JBVLyfvVdBJ8+HF9nWv573VxmXh5QxRCuT65JFPSoatEXTkB7tsF9NN2rqmwhcz4ZfpZpkXycblFtaDQwCn1wcan84fZ6KDXi8fAg6m22ef8sLe+K0HExJMN1PSTachmW7GPmoR8oK9n1z/eWuHiDGJi9ANAR1uJH4TeZFrblYzBGKg42VC6TV68BQqfwZD6gssesKYrwfnEvdCQONBAfIPAGvNYdBN5hx2HZZ7mDzRMZVDITFzKWK6ZelYVj1ZCDy2qWf9/qVr6/i1yabvezLdsuY/nIM0nokAC6QT3aNEJIhkqZfvIyXwDHrfBaVerlCVQA9wWRvUUoYHWROisDzkgC87Rkm6BWEW6I2NtlERhQyjF2BHXpJMN8AO38QEbfvcgWC6Gc7BSPUc0ts7DZb0TXYTT0lnE4ghSabbwbDSXkYpND9PZ0bpuln9QEt5eEx3AEdqDoaQes6K0x1iMN2yNpp9XtYPF0zQquQnPy12MCcDWUl3Vku58DxWPkSb0fVueBow7Gv+u7XaEfl4MfeMzdsivipQzevYSn/pRWOA51XfD/zadNPzjQy/Z65dK+9x5umHuJDVmDHBIkJP/au/PFiQUedljjWBerlQ/ZNSL5eJ407i2E/yacl+bthXZxhZ0icrvSTTTRPgtJSfdGrHCu0ow3QXbIOtXs5pT57HfdE7MgiFdemg9Ztoi55PAjlnAP3fiqOcBDPdba5w/k4ltam81gxWXRj3zDFbesyZTtaxY+vL5dJxEQNW3A0cM5wjOsYqR9JdYJoOcfqo4x/cDDlzjTXfFzDdfg430ht6pwnKdAcd96S/HBKW+RAx51mOVZmH3QKmm0djyRzGtr1a/+9Qb+fUQQYi88FQ2Lk3W+NdZGpHfduhhcHqVQWhmO7qCC+Ghgde+ATAY6KKbFZFNt3UxkYS/oAtfWI5sLDC9Jhlkqf9pvdG43t433/aP9j3ZdDuajtflvfy7o/q3mn7/FPc/iyiyI+kmykFNhkgzvQ1JWwOSYckkcJiFPTM6ITs93nq5a6lhvid2UQPP+PI3mjTwh2EnTjDDtsyNZBQ0WOB7ru02t5ee71Qni8uw0TX+4CR64h0HlIFss1ojQQvMCWDHpLu+qfozl5Ihy2n/UPvr14T/JUfBHu/8JdexHTzNDBkUNsw3/G06aadYVFjPiXDXuu0KLD6j8CW/xDpfXgvByBtl2yCNWb8emBmgVYFZIE1poXq5B4EGdmPMtJ6lodzGThsEbOAyw4DFwiYdlmm27V2U21B1pcVGkuGwC7LhePQlQUr+gMLcUq6eQxFZmPg3EXASX+w03Kz4bWhRN3qdOI/8zpYPfyDdx1EYI1385CMtX/JoOkw//UgoUWBX/9FlC2hXm5qR7LqOXgqcNItcPWfL+/lUXcaIYyyWDbzNEQ23SKbcLIesk4hATuEJi8/8pC0y73uslhjmnWAIVIvB+T2uP7/1v0s8Oguv6DfM0NX6g+pxKYwixPyj5Vf4Y5g9aqCUEx3dYSL6U6AvY9w46OGCenAQWRXTTNCrtN9WlJN5EGHWyFPETVNP/0/vsqZDw0vGyERwREK24tb7s9UPaGHSBuxFOhylwfTzSCKUgjNBIezOApaBKjXk5Wpuz4mTvuH3RcOJ2QBme4sQz2eJpC56uWSkm76dJ+O2Whu9tvfJWJ2CtTLvZz28eBqw5CuatjyIuA8Cec0LPR+waMMzn0vm1aybzztX2nHTCShZ27OXpLukO7spT8RwqtuZ93ZUPeHPcr3CZOxJeE7jrOgTeJhui1bTIZkSPyi+zdJfG6g1h+/Nt1+x3w9htf7hNh0yxBqjO/qaKgfN+yn/9d8SLpJTSNuvFcCprPMWm0h7bDNLItECi+ihAkJW2AZySYrBKezYsY/AdNdtItoU2Kudye02jIZtsdWEXFKuj0PqSTK4caNF+xnppmN6EDCy3kZyRAE0o4RSLpZ+5eJFiMFWcZJroscfFprHPWtlnYk43saDzD2EBmm26RJBEy3H3OZeNXLsziRcQBnO3e+W75OvP3UdCgZZhx8O9qKJelmtYkH083Tfun9on2dVgdo/3vdBMiRtd89lyrbBDl/QmGnTwez3jzbczKNCZa2TzWFYrqrI1gbWLxqn6IF3WQ6TTQZDLQ0nHj1fY3/vosopNJYTHmY+g33okiGpYEGlJ+wf/LU5r3U7kWhiwBg+yQ6Q3Y6EeHK2kjIQwuReiArdAJg32P1ef2TiXcI9XLpDZvaOKw2oglVno2gpE23632q3KJdjKqJJN0e4el4cNUrpG8QQ2bY9u9+0Z7yjyByqOQAEY+cBb9OnRxFkRu+eS0hUWfWIxGHfHSRjHki2pRZoAm6ut1se0lXpAQBzl/hNHkwiSZWnHcRWNJMs+1ZDHMoDH6fMBBUu8NRZgL6suv9wcpp+Ttg5Ebg3AXGDXJMS6iXn/uDbmtJEnTcd8iDSB/wu6+2u9r7XSktCUlGT8SoLLwcOGg4lCTHokwYOPodvwiFnX0uzEswBrmmA4J3Wpyv/xdqvvgItZUw9XKjr4TSzYDaHzKg10cZ9XLrEJ3VfxzNLNb4Nh0Xumy6iTXMix6jYZpY8UJoBvVenogQWiSyDBMOB91ilEE6s5WVdPtRLyfT8NTfSZiCLL/wmt+ktpzFdNcHGp3OeYX6NjK0WjWHYrqrI/wy3Z3vksmU/4g1EYd8rnvobTrEuCEh6aYXZ1rSTS6SKRTDHAoRE1Rz5kWrrVvveCyYXqeltOM5X0SUWQaDqSZVxoVELyeGqYjpzmgMqy8dIcMCSrqtfpWUdMuGDGMxuySYYdzM706gpNvlsCMAYSN0Qgi+ZItuo6M/ivPxJemm3/WjXl5RdttE+ay52O91f9nRBF3fV22ihmv2wEDDPkCrS4hqstpDYpyIHNIxPVKH3E75RBARlXHbf/pAtow5Bqe96nUlNJJkJd1GH+YMdNoNC8GRtHnBcw+hmF4yVm+Q/cJPGlb5/Awl0zkyD/AOp7ygkm6uc6oQkJEjLlskHfMzDvyOGYC9j4Q40mQS3G8CEs90syTdtPaV+Y7oYEGiXuW5Rn4Cm25eeMieTxBFEmWdt1Q38ztzKvs94cGKoM7kfh3vXkj6jyHpFnMMkJJmWZtuL/VyM1wt4KQ/ZWgbPx7kWWUzn4WpepB+Mvqw36H36YaSB4XVAIrpro7wLemW6eYACzrJGDPVy6lFnlbpom2lHc4WGMyqJdXUnExH26tsxxAkSAKIBb8LaiDbLhZRFGZfd33AmUyLgd0vYeq/gbR6QINTib6gHKlJgcOEupg8nzbdno7VqPxYjlIs50GMGL1BpX6yTmxEyGaE8CLh2y6R07YnyBjYcUjsPNXLE7wtMA9Q4JyzLOKCpXIuBEtaaB7KxKFeHuIcPHnCJ9MN2JJJGdD22Dln2tdNzhK/2+oSYPh8+bJEkJpDEuuPI8ySiCjmMJqigwZyj/F7YCWCyzaUlO7KarhA3nzHlZWsf5AA+3vcIcMSIOnmPgsBIzcAZ3zi3vstB6gl7tdM+NkvooJ8uBBIusn9y1wHBryta/ORkTVcWSZ4XWbadFP1tqI+iKSw9AGLqD+pfYs8LOcx3T3+j32/zkl6hAue0EVoM1xRkm7yYJmYqyZ969DGlGS6vbyXk3D4Lqgkphshap0i25fXD15CmuqLmvMlvyX4DekTyQcanOaRZ5ynqDKTgueN2Kx7vW66V9NWozj5mXXU4Fi8w6lAn1eAttc4k3up0XkR4J3vcf7mEpcCIo4ZJoIj4WtH1b/tVZy+Djv/mzjlz2YCo1oJcKTGZTj82nT7lHSLpIukhK/0iHEvQZLuIIdP3R/WfRCc9jL7eTwSLxIlB+3rXhP0DZuUAohQmZJunppn1/uIMhlz0a8tJdNm0fjGkgPB8tQzMvLX3PeErwVgulmOE3kYTEl4HNpBHvU77SVvxtzEBav5z7wOnKzqSOwPA9/T59FZM8TrFW98DnxXonzSz4UECraJn9PqzzKO1BoIvJ+LwJLqy4ZZcjgiCqr15AM8KZzfcriS7rBuj972SrcjPfOdpufo/7NbuR1i+dkvGg/wTuOuIOMWw6bbrEfHG4GzZxkxwn3kSaP+ydI1lPI/IDJ5SjUis7iYW0E9RerlrEgvXR/Q/SiIwGMUhYclkmMuWUy3pQruYQIpVC/3McfouvAQ2Kbboz0d9IdH+7Yf6y2UqcZQTHd1x0hDlUQ06LdNApqd45FRvIM6ARt0KKx7NT3rM046gummJQOZOcAZHxDVkZAAeC1SpIqpniknoYjpZm0YRFuTRCtdn4xGbJs2q704jGo8km6eejnZ3pfu5i+CXJtuuq29mG7BYcOv/7TvbZto1C+oI7UEMN3pDXSnel3vZT/nSdbi2dDr9wCuLABOeUYuvUOq4aEW6Df+syc4308SS8z+9lsPmukO8+eIH5iED+ncKr2e93tBmG46hIsIdTsDDXrbvx0qfJy16rKDwMj1zpBUXhAxiYlUg67bWZ9HrS6CcD/htZ2oDJ4jJy+wYpuTcHlOlyDYez3PuMmYIy0vcv52aLqYhLfkHPF7YAQgfvVyshxBXqLQgDLaQDwtrL7/1J1HnfuDHp6RhNd+QdoXex0+yDIEpulIiCHploGoHNOE0A/TJKNGbZkAMtrAXL9de72gnvRhB/mbRSvJeA/n9Y8olKuXo0bWdbxgHXyTB6UsvzSsNY3lHBGwQ8GZzm9d5XO+uQvhk4NUTfcDP5JuL4/toRAjP8V0K1QqiG6zJpjXxpCAUzDh63G8L3ta75A4eTgIE9k7mvBSpZE9SRSpK7IW/lBI95ze/VHnyTRLBbtuJ6DLfVQGZr14jKpJYAbwXs5VFSO+MbMpPz+epNtLXUiqrX1s5rKoiBPVTI6dHv3NJoEhrVrqQ2rLSstVL/cpDRZJQgE+IciyzSfhl/l3qegSkm4rTQD7TDMEXzgNuOK4/ickhkwwDnS8mG7fRB5RpmMd5fRtZhNvsxs/kJWG+jblETHdnLkulKaS6uUBxgAPQkk3Zx7JhiGi9yfWd1dp9XLyt6BvDs0TZCTBdPP2kvT6QLcHgVqt3eV77RfxmiAwbbrNQ3GS6fazbwn6w9TK87VmEvnxHNaJfMKY39j+et1jfJ9/8tNa+ZXzf4dCephKXh298qYh8lAvmg+kb5W4HRQT5ZAMtukEzjN/Vp8bYzO7lfN24zP0/y1pYZFVGfZth5PigPDSZHHYs3uol2taQI206gHFdFdH1Oum2+81PYcg1L2Y7gSd1vIQzyZFO03jgpR0+3QQxizXI76rNOEg+PbcNcCA/7rv93jMkHiIbACN8vtQ8cZ5cbrN35Z0JgHq5UxHagwJogmuTbdXW/qQdLNQmZJuL/AOleg28CKY6nQOXgcmA8CTdPvc8LykpjymO8xROQtaDxczRdmVAkDBdvn82l2r/+9GhEdLr+8Os8ID/U1tx0gw3T63ZI3DdFeUDZwsUer3IEdUfx7DJPT+Tki6WQ62/GgYkKBtumVUU5kqpYw9xLU+MNaRZDpSi2sMJcgmk/ceqXLsmo8S5neeBy8+6Bkz5B2JX15y37O8lxP183UAJNKoM+ZXvzfkszOdmwH80GymtoWo/1KzgGFf6+FT9cT8tA5nudlA98f0/+ahAemXwqtcL5TnB3vvwCyi/ARKusNpwAWrgBHLbVX6QHS7MQ5oG/ja7fX/ne/k5MXplxYXiOsgA09JN2+v53xf++vjr1MVRc09TgiAwrJCpJS5B09KOAWZqZmOdDyEQ2FkpWUFSltUXgSNw7yGQiFkpxlMYjgNRUO+0adeeZF+Twtb2pUhANnEWC5uci5i0SjX91KtsPkWUFxejBhNJBM/a2XUt65LIiWIxoxNo6zQlX8tog4lMSCamg1EitwViESQrWkIGYtCaaQUERZhFYsBMSBbiyFkLDylMSBCtjFZh7JCZGlA2FhryjSgnGxeLaTX23gvK0SkjZahvLzUmV9Ms9JnpmYixVDPKotFUM7T6mo9BpkNeyNl2R8A6OWXkfWNlttllJcgQwNSjTqUx6Ioi5S4v6u8GAgVIiMWtSZwRANKI+V6/cwxcXgZEI0AMSA9FoNJnkViEZRGOE5GYjGka0CaUYeopqGkrBCIEOOnvBgoLwFierp0Ky1QYrZZNGq3LQBESpGm2WljAIodz4sd35gW02CSVTENKNaMtqLHWTSG1EgpMgymW9OAIg3OsgmkhlORkZphpNVQVFZMjZkiIEV/18+8d6XNbA0U7Tbaq8RRn3AMyAoDyBmsp0W6riFQv5/Rf/a4C8NICwAdxnqvEcRvR9pIif2dZcUIlRchm9iEi2NEM0QirvarlW6rW7rWCC3kXCOI90oiJYgaY9CCmXekzE4bCulrBFloeamjHtlp2eI1otzuy+wQEDLUy0tjgJWy+LDr27LSshA2CIGyaBnKowZh2OdN4NQX9INN4x1uWkAfqFYbFyJTA8zdpKz1lSjXwta8ob4UmSEjbShFXyNYXXz6JGDpOGSEyDVCQ5lZJlm+MVcyUjOQahA8wnkPID0lHWkpaey0Z0wDFo6y04aMNSIURjQWRUmEbz+ZlpKGdKMOUQ36eiJKm5IOIGTPexoptYGyQiItENNiKC4v1vdBmpGJakiNliMDALQYtGgxiuj1OpRutV0qgAyTR281CkWs+hppU3KGINNU6wRQWFYMpBjlR2OOcZ8CIDMlbBGghY51zDnnwqEwsghCtjAGIGbv8TDX+rICez0xUBRjsGcRfZ8JAY55X1RexFdEicUc6wmTNgCsOpH7fXG0FDFiPqK8xEH0k+uJa9478tac64mZNhqz24toZ33eM9aIGJxrUKQE2WYQlMym7vUkFnPMZeG87/ZHIJwFtLrUTmu+StIcsZC9fxl5Z0bL7DXCzLf3y8DK+5ztUFaIzGjESutaI8y1su7JQAzONYK3npTkEmmJNYJsp57PGnuS3pfWvIdgPTH2GjKtNe8JOhXnzQfSmwCX7EVaWra+34fT9LRmfc15EbN/p0XL3POerHMobB30kvSJYz1hzGknbWDQEVH3XuhOq6HIpLno6REpR0qkxKYNGvTS6Qhr7JYRc6TUmRZAITkOTRi0VTgWBXnkVxgx6AzGO2EAWaDmPUlHEOlD5UU2rwHOemKmhclr6CPeWiMcc60MQCoQM9YIY10rLi9GjKQNstsCRTuBNtcCWpiiI8oQFewbjvWE5EsY8KQjAqZlro0MhDQeBfcbQn5+PurVqwc8BoChcXxhpwvx1TVfWb9r/bWWPckoDGk7BPPGzbN+57yQgyNFR5hp+7boi+U32xt2u5fbYWfeTmba7jndsf6O9dbvHq/3wIbDG5hp26YCO9rbv/sd64AVR9kOYRqnAIc7ALjsMJDZGEMnDcX8nfOZabNDQOENnwGtdeJr5Icj8fXmr5lpAUDrZF+P3g9MFZjYFDxeYE2ccdPH4Z0173DTHrrqLeS0Ph+Y3hp3Hg7j9Vz+YN/eDmhncJsPHwZezOXXYV0boIchhHiqxXg8Pf9pbtof//Aj+rXUT7hf+KAXHtmyhpt27ti5GPrDMADAa7nAXZyw4gDwZQtgZC0AoTAmdXsbN3x+Azft5AtewOgtuhRuygngygP8fCeecRvGDddPwb/69Sv87qPfcdP+Kwe4s75+Pa/PVAz7+Apu2gmNgYcbAKjTGcsP/4r+u/l1GN8QeMrQqlrf4+/oOf1BbtqHugzDC7G5AIAd5UD7Hfx87+h7B15rXA5sfQuHI0ATgTBz7KljMenSSQB0Jrr2cxyPqQCu6H4FpoyeYv0OPc0/wXetEX/JRlGkmJl2SOtBmHfF/6z4wjkTGuJIMdt2tG8GsLyN8aPbQ2g3f4p4jahvrAkn3YoeKxby14h6bbHjjtXA1AYAgH67gBUcfqxxdmMcftgetMI1IiUVhf9nE6TSa0TOYIz+eVHi1oj2QM5Fa4ANz+PO5R/h9Tx+vtvv3Y529dsBAB7+7mG8uORFbtp1t69DjyY9AABPzXtKvEZ0aYN+sV0AgBdwGh7Z/BM37dyWwNA/aEDxQbw2sZncGnGNhknvtsYN2/dw006+YjJG9xgNAJiyfgqunHolN+3ESyZiXK9xAHysEfW6Y16P1zDsnWHctBOGT8DDWAXs/AjLyzPRfwefQR8/ZDyeGvoU8FkzrM87iJ67uEnx0MCH8MJ5LwAAduTuQPtX2nPT3nHqdXit6H0gJRuHW12DJrMZ2kcGxtYBJhmR5gqbX4TaC77gpr2i3UBMSVti/Q5t5tf3wmzgq06tgUv1j6r1TEgn7BkY0nYI5nVpC2x/FwCQsw04wqEjHWsEgHbbgZ0c2rB7OrD+958DrS4G4EFHZNbGjkdPWL/7vdUPK/atYKa16AgDQ4v6Yf7e5cy02WnZKPyjTUCP/HsGvi7gh3fyRUd0BGoN/B/Q8Qa5NSIVQO2TcGfKeXh9BT9Eoe81YnZPAMBTR4Gnj/Hr++Olr6DfqbqU94XFL+CR2Y9w084d/gCG7tQl6NJ0BIBJ+cANB/lpJzcDRt9UCKRme68RTYFxdQGc+ld8lXaKPB1RBAzby6/DhOET8PAZDwOrHsbyVS+K6QhzjQCw/tB69HyjJzftQ/WBFwzrLik6YuRrwIehqkNH/DkVRRwGckibMzEvY6H1O2dPQxwpZg+2vhnA8uu/sWLYS/MaH4bQYyewgTM9LV7j7FlAs+Fya0S9nsDItWI6Ii0bhWNeBQxh1cjIMHy9fS67EgC08fZCOnrKaEzdwAkjB590xEOHkFNLH0B3fnWncI34+YafcUrbU5CXl4e6dfkmREq9vCZC2kaagKz6MR2mpjKw94tg6uykc5SqDplTM18mAUHVpmXV0v2qYSXY3IHlhKQyIap/OM1iuPW0km2X8PPRClSl90SC69LqYqBej8Tn6wfkGJBWw/Y5j4oFJ20VgUIBV0yi3+tAz/G6h3IpJLjfrNCHUXEoIf8Z+0vuxwwm0VEE/EIUcssLfppF1lxDuuxqRNam+KBJgnqWloHfNku4s02zHkr51gnBRPJtEppE+aqftUp2rLUZHawuVRxK0g1b0r3v8D7mCUWVUy9npf2iM1C8T087ag+yP7edLBT3n4hY4Q5grSGVaXw6cPZsYPd0YMl1usrH6HwgrQ5bhWyyfYpX68KfgIa9ATDUOCY7T/tc6uXhNLaDsysL5NQ4jPyzG/REaPAU4KtuKA1lIHL5UXcd2v0e6P8GsvZOQ3jJ7wEAZZktUX72POBL4+j8gtV6rEfjPYd6+ZhSlB/6AfiekOC0uBAYPBkApV6+4AqU7/rUXV8AuHg7Mmu3RsrH+mZSrgFlo4mj+u3vActv169HrkPG1z1ttbAxZSiLljm/C9A9EKfWQkbBFqR+2wuAoV7e9z9A+2uAeb/TndP0/y+wfSJweDHSB3+ItHZ6PFOhmumSsUjf86mtFnbpPpSk1gW+7GarS19ZAOSuBb4baKtv1euBaO56lKQ3BEqP6V5jO91m51u0F2lfdbFVvc74BMXNR9rPjfxMpPV5BemrdG/gllpYn1eAjjc509Zqj9SLNiLjxz8AO9631cKuZItDmGphZNtevN1yfBaXenlJriVFxpnTgOa2zajnGrHnC+AHva8c6uWd70bRqc+L14gpBhF30q0o6v2SM635nQP+h1C7McjWyqw6OtTLh34DNHHa1gnVyym4VL1+fgbY8JydwOyb0qOo9UVb/TpnMEoOLnKqmY46AKTZfeO5RpQcAn68GWg/DtkdrtXTLhiF0l3TbfXyhv2A4c4Tc6HqKAVh2s/b2SHsrixA5nf9kGJ4gy3rcBPKT3tFtzOc1sKVb2YISLlWA0qPoXxqI10d9PRJQFYzYMn1QK8XgDaXA5Nr26qj12go/yBkq462uxbYYURw6Pc60P76xKmXF+4CvrIdsDlUR6+KeKuXG+qgUqroKenAtJaIFe1zq5f3fwsw1jGmevm05kD5Cec7tdoh9ZzZyPjyJCCUAi0WdUuYW1wI7NM1Mhzq5S0vQdHAD8BDyr5vkfmDrQlUePkJmxj++UmHbW8KgMysHODyQ3ra9wmiucUFwGBbGhYOhZH10z3AVl0iXxiDHuLt0AI9Qac7gN4TgK96Ily4w1u9vNdzwOrHdXXQkauABr30tOVF0PJ/Bb7p7fq2EIDs6+ycuPPeWFcc6uXn/4xY0R5g3oX6DWo9dqwRG19BlFanNtHgNNTKszVELPXys2c5w+vt+wZYNFpXLx/4DtDheucaMdktidRV0QHUPgmlF65zridTG9i0ypUF/teIjwzagFQvbzYcOGs6sOwmYOcnAIDMq8uRkpLKzvfzNvpeWq8HMGIZMrf9Dyk/6VJxl8r4JTtt51w7P0HG5leRmruGndZE3a5A/i/6enJ1GRBO0+f9hwRDbfZbwVbg61PteX/aS4h0vpu9nuStA2ae7lYvH81XUbDm8ponEF33rK1efupfgC732v3X9iqkDXrHPe83vQqs+aOexlRThkC9nEEfWLTBhyGbjuj3mh7CipcWlHo5Pc5GLENKg1P4dISmAVMM++7eLyCly13OtIuus9d0ExmNgEt2IowQsqba86jwgo2608DCPcBXXR2vhAFkDfsKaKnPRxf/YNa7xQUInTnV5jU+DOnrSVZToJhSl2h9OUK7P9XVy8+ZBzQdYq8RZDsM+ghIrwvMG6mvEQ16Axf8pKf9+Slg4wQ9HTmGAdQKRYEp9QAAJSM3IUpHICBQFdTLy4vL0aB+A09JtzpWIlArvZaj80Tp/OQpC5Kp9p32/9s78zgriqvv/+4++85sMAzDIjsDsgwDsigji7hA0PAoCrjEFzMYffSjgkkkPkZRfJ+8bgSyKMRoJDERYoyCiICasAQCImBGFBRUBlCEGYZltnr/6LtU963e7r19tznfz+d+5k533arqru6qOnVOneNwBpSH6Z1l+1pSnW7AmRI473QD7nTA1sYdk+rJCwN++IUpbnWN7xwAAO4M1TANKXYANgZc+jdgsyIUiuIeeZweeCBwNtP9JuDz30ud+t/7Smntdnj43/vq6vJeY07A9Mhtd8DtyQikSS0IlK1YfHM73HC70+XHnZ6gukr52uFWW7zzZEmhOXIqgVMfwpU/FC4+DxfXLu5M2cKmy+HyT4Jl9XBnSs5LHIHB0WkDnO40qX5Ot5Te5Qbsduk7tzLttDvhdKu8+k63rA4Ou0t6hmX1TJc+sufCDocNSEerdNxXFx9t8muzQ/Fu+OrM/+9LawPSbQBcqVKenuxAWoddahevBsnmS2vgvbPZbFId7Db4p6nuDNXfmnvvM7lnMUWzPkH58veap73ZRB/BgtPy9XGlARcC5u/8pB2eTM36CvsIFVKcKcCA+4H/PI7APfbmbeMGxtTOUh/h46IfAelFqvkK+wh3BVDzjvzYl2vgsSOQ0unSvDa3w+2f0OkRlNZuk78j3Oq/2+EJ9CeitvU7WXLA5ZusulKAzpOAa7nJjuK3Lm5iK3tufO8Kh+Z7ryAobUuGuN6QFpyMvhuG09rsgfeeR3BdgCSkprvTpXFQOd9y2KXnHQBYW6CPKPsecOQ1bxqn8Pr8fYQaLvkYmO7hJpuu1OA8OU13+rTPgNd7BMpXlsNp/dLtkPeRvue49zxg9wLZz9JE7eRKl96NpsN+gRvwziPyBwNZPSTBimeI3IRa9b0XlJfqSpPuOf8+qJDSdTqw6+7gEza7bBwAEOgjPNnyPPmyvP2MrI/QVK4xQX/Sqlp3U30EJ/Th+DtSXpUPA437gb73S+2ulu/E94GPnwT6/8Tbn3CXy7/3gPx+9LpF+vzBJk7rw864+yJ9cdqdcMrmGt483Yr33+ZQ709kbSHhsBkcP+1OKa2/T0uVzzUcTpkTPf9732MO8JFX6O52LfCf/w3Oms9Xpy7+PsKVZiAt10fw110wCug0Iih90H3w99lp0jydT+t0BT+7dpuwTuke79ylVa2vDiyYqc4N7I5AX+lLaweQVgJc4MahXncAZTOAr7zKJu9Y5+8jhjwKfPhj6bsnU3Ic5yvDu3iV6kqVP4PKeUdzYE9YilN7DsUTJJdooCprhJC24XyDoXzi2g5n8eLFGD58ODIzM1FYWIhp06ahrq5Olmb8+PGw2Wyyz7x581RyTGJMeSf3pm3jVtwMmxdppdMzd2kHOqvvAdLFUyAoUu+6FTEBeSc7Ss+zenmrmdBohR/x/Wb8G8CAnwJjX1cm0M9ftV6K+qWXy8+zNuDC8eByDOXt+9/7O1eO/HiQB2Dv79TidCvrqnR2pPxfdC/OeveuikzbQg0ZBijMgCNk1hpWuB2VOvjCsYWNz6O9igAWaRM/dw4wcJF2OUXj5ef6/Hdk6+Av00pzc4U6SRQ+Su0d95/nfiOLy2wEu8r3CBB1k12VdtJrP9VnV1B/I2EldeH7DgPjBd9P8V7/RdYrrQqNPZ+fP73BdrE5gOIJQI+bVc4L8ul8tbG8hfnZZAveunUTYocslrTslELo5fP4Sn0PvhiRGthCA9Cs3sAVe4CKG7XTZfcDRq4AMr0LM1qezg1HgOHgtYG677fivdPzVh0qQe+vMi8DeZdMDL18JeFs8Ri+1KKyuGezcBx33NuGam1pyKhZy2Uax9Cn5ceUdc+p5M45FXM2rn4HlouPJzFxfZWbN29GbW0ttm7divXr16OlpQUTJ05EU5PcHPMHP/gBjh496v8sWbIkRjWOIcoXjX/BGINwcqAVx1C1HK09JjqPk79OIXbKwoFFLS/fcX7ia5cLLnpxuo2GPWnT2PvmC5WQ1gUY9D9AmtK01KbyXQNfPfi2yBkEFF7iPe7tAL/bDTR4F6kMC2zKwdVbljJ8E5/fxG2BdL79kkHxr5XPp9K9prJtBffCa/4p3DccasgwKUPtckPBCuHOlNBtoHx3tvh4tGJkyuLVKhddrBqarBS6lUVx18BpssVpBUL3d+qO1/zwMZ9lQn4Ur9MK+Gvp+X9M/E7t/gqeJyP7UvXSaIW/EfVJZvoppVmpaEHB6Hui9043CjzA+cIahYTdawZ7GOC3f4lQuwabXb09leMFn0eZwPFntPcKX/kfwJkpbQOIFFp7unXnMqL8eKFbbzHL4FxIOhl8iLOu0EQv1KhqkbwZneCddamb+wbB30uzQve4gBM0uPPM/dbotfLPwfHN3O+99yCU0LY+guKkq2B3KZQVGguOdpe8Tfi0/MKiMg9+vq8Mj5bAxLXQvXbtWsydOxf9+/dHZWUlVq5cicOHD2Pnzp2ydGlpaSguLvZ/tOzpkxcTK5V+QSoUp0danbNOx53t3RMY6oRQWF8doVvWAdmB9G5STNayawFnhOJ0azmc0eu0Q5ooCxYULrozOM+6pwPHzmu4L1Wrj6wsRd14LVH+8MB1+gYE5SQn6D4oJhA5AxXpBffCN4jxz4GvDfuqe33VJe4c76g8B6L4wqpoDLB6K95WTFCdggm8XUPojqUDtIjBC906mm7RedFEwxc3t+tM6W+nsYFzyr4ukvDvSHb/yOYtLjDwdcRyyVQTNv2YssL7axNPxG3cMYUPA2Ea4Xm7+DsAYRuoCt0GJsQiyyzDQkkIGjszgkpQed56pZcBHh3hQ2uhRO2c0rybvw8+Py081b9TL1/UH4brKCyrN/D9BqB8Znj5yFARuksmhZadmXFPaemm9TyJxu5L1L1Jy3+rYyGnBj8nEM0ThzxpLB9A8oWjWh8deEfDZucVan2XEtXxW8UC0v87jUWbyTukbQwDfqJRQY26BSlZFEI3fx8vqCzCBQndKZIPpVEv6/chCUS8zTY1OX1asvHPy5M3wMsvv4yCggIMGDAACxcuxNmz4nBePi5cuICGhgbZJ+HResFTSxSrUt4XosetkgA69NnIlKPnQXrsGm+6EL1wijTdqqvkAqGbtUnHL3sbGPOq+HcAMOgRcd5qA02vWvW8gjS4QRXl6mfwvog03bLJn8is0aApZdD99JkiK4VuTutqs+nfqyBNt1KzadM+D0iOgwD5oOrbd9ipWnqeQ8IC83K1/MOh06jI5KOHFUJ3r3mSI6Ghz3DlcM+Esr0jZkqvJEaabpEmW5bW+77wWhblRBcARr0EjP4jUOWbGHITMCs13aklUtsNXx7YxmIlyvt0+fvA95sAd67274QaXSbWBNrdwJWfSNfU+y5g+lFJM/k9fg+9zrugJXSL2jqcbTA+M2MZBqdwRjWNPHrbrzQx8/ypXYNN/VyQptsh/u5D81oEQsyEjdLi0oR3NX5ngE4qizmhoGZerrcwJCK/Cuh2g/H0ygUYzTIFbZ/ezVg5QYv1KtvdlHjyJT8gve8GPIXB51O7BC/sq5HGOewyu1ilNw/T/G0I5uWislXn6BoLe3lDgcpHghVRpV5nt8LtXiaEbn4R64zatilBvbteZ+45TQASxpFae3s77r77bowePRoDBgT2Ct1www0oLy9HaWkp9uzZgwceeAB1dXV47bXXVPNavHgxHn744WhUO3qoCUsAUHQp8N0u7pw3rTNdEkDNFaR+KvMiRTnK84IV6Mv/YbxooQCrZ17O0aQReNFHTiW32qe4p8c2iH/TdYb4eOWj+pNf2Xmj+8gE2me9zt5wSC2lcN2mclyZn+JeBZmJKeoUysJLmtcjP9+Bp5YEvouEFCPI3p140LCq1MGMma0WqcXa560wL3emSR6H1VAKI5wX04gSTbNrkdDt+67UePLnK2ZL8Zl7/yg4T1cWUM7F0ZW9Rxbu6QaA3l5rmq/eiHzeQQi2uTgNCIFGzZEBaRE3q5f0AaT3QrkPU1fjqXHPhZNftT7eQN9/0Xxg/xMGyhCQN9RYOh9j/xreu2JGy6e2b1u5HUz2Gw1Nt+gZMLuQ2Gk0MHWvud+IiGR/ozZmKvf+G2HSVmDfY8bT22ySUPuJd9FUs3/mrtmdJ2ni1dpYSajm5QAwzGvZd+ZzQZXsJkJuhuBnR5hNFITu9IrAvNZvwarWZ4Xgp2DsGsnBYlZvKYoGjxnzciMLQ3FncWgNCXOVtbW12Lt3L1atWiU7fvvtt2PSpEkYOHAgZs2ahRdffBGrV6/GZ599ppITsHDhQpw+fdr/OXLkiNXVtx6RkzEfNhtUBTQjjFnNZ6aervpFoPwGacA2SlqZ8bQisyG9QU02aBsYAJWO13jOHVX/XYpAkOn/oH55/CtoWNPt0+Lzv1XRePloM6g5VK6m+/f9Ku5d3sWKOik7XZ3BU+9aRfFLfYMJ/xzIhLUQnd/I4vbGg9AtuI6MHvrbIfQY8xow8GGg6DLtdLGIlcragKoXpO/Dl0c+dq+faLavwLwcEE+u+PMjVwIzz6loNpVw75FW3xVJojE5CrUMVVNlQbvnDzeQn85kUdauBszLw8G36MhjRVtM2SXFuQ8HU/VSS2sH2s6JTymt3vQ03bGOeR4J1MbMaPXXvEm/p5N6Ov5dG/8WMPoPxsvQmzcYQbiVxA7D84NwtNWyeVgYWvLAwcDX4cukv6P/GDg29P8F/15t/3Moig67UxK4eUShu5TXalcsMhtZyCehO36YP38+3njjDWzcuBFduggGHo6qqioAwKefqnt+9Xg8yMrKkn0SnpErpBi0Y3zxopWagjCE7oKRxn6bMwAY/bJYo+1Scdqktk9JhBFHar4OIneIN3tOoDKyh72N25pg6j5x19FvoTTYGMEWgtAd+HHg60nOz4HQvNzgfmBe6L7qAOcASnGfU4uBaz4Hrj3pPa9nXq7UdAtM5SZsBEqmAFd/BuEA6cuDH1R5jaHhlWwF/H2PCwdUFnnOLZsODHxI/xqj5UiNh7VJnpVvYECvCGn0AaBksvz/oU+L00WCfg9If7teJ/1V03SL3kWZJtxm3DGS7Nm10Lycp+kL6/L2E2L9zQggXQ3st9V1pKbiIEj0vxah9l38fUrram7BWzXLUN//EJyCAhoLJXYpvjgQHCs5aCzX03RrtYWFnsp5MnuF93s183K1/nr619JfkWM5IIRnjruHmts8wphrBs3xQhG6BfO8TpeY374HmBec+b7drHM7vbJ6zQP+qxko5cY02bYJbtvhpO1S9IGrDwXaKkseuztkOo2W/rZw4YHNmJerkhDiaNjEtXk5Ywx33nknVq9ejU2bNqGiokL3N7t37wYAlJSUaCdMNjJ7ApO3cweUHWoYJjN8+lC8ZALq+2ncJsxIRSaCyk595IuSiXuP26T/zTr9aeX9AZiYOPAd+mCTZluBTIz/TolsIi/SdKtoDJTwA7vMCkG0T4vb26lsh6CJgLJOggGwaHwgdNSJfwafF+2LDWePZLQw6wREOBmKpll0LIRui9qx6jfAGu9z3PtuILdSM3lY9LlX8pHhdxjJa7p1Jh2h+iNQE7qtnMC0ntFPEy5G+yslvrCCPHrO67Rw6sSGVQuFA4S/8JE/Evh2q3Yavs173CZpqDuNAU68H3q5Zt9/m0MaNzqNAk78I7heergypIWqwwo/Kza75Afi2u+k74c4Z2hKC4RIaSetxBGmpVLzKfHxMyrb5lJLpEVMwB+zOyxk80AtBUYYPlKUyhlVx64aKPvai37ktRKLgnl5C2fqb7a9jZSlvDY1C8f84cA47wLcpW8Dzd8ZD+Gnh2/MOXOQO6hU8vGWJ2RezhPXV1lbW4uXXnoJf/jDH5CZmYn6+nrU19fj3DlpQP7ss8/wyCOPYOfOnfj888/x+uuvY/bs2Rg7diwGDTLo+r7DEMbqoyy2dQgDhzsvYBqjxGUiFIAR7+UFIyRNmW8PEb9yakTby8dONaWp0IihqQlXf7MOinhBJYNbkBJtNehzj8E8uUm8KQ+uZh2p6a06CwZIvi3TywHYgFz+PY/E5CmCwu3I3wEDFhkzY5URoqPBSBEToduiaxaZ5FqFzSYJ9b73pvkkd07lnrpygPFrgX4LQixUzbzcwkWaaIRvCXUrhXB/q8q90JrkVj4qLZ70vU+7PFkoHGU5ZsZZQd814leB71W/VZz0ObgUOHKL1OTaKFd8JFl5DOfqa7YfveRP0tYXHt/1uHMQ7DNES7MmaleNsUEvXna45EvWl+hxS3j5+CxolDR+EmKGJsdLowsbsvfA5FxT2bdEwrzcv8UwBPNyo3vRffiUS8qQWkbI6ht87BsTPo/U7lX+MKDkcnN10cQXoYa30lT6KAlB0x0XVobWE9ea7mXLJEFt/PjxsuMrVqzA3Llz4Xa78c477+Cpp55CU1MTysrKMGPGDPzkJ2bc3icpZTOAI38Bcr17b8PpCFMKvRpjm0GtHe9IIxeYcSIyq1hC7+URelEnbgP+8wtg8ONc3oo6l2t4UQxZaFAshqSVAWcN+hjgtby8B3VRfFU+lIUW/KAnu369MFN6e7oVg1eejiDKr+CWTA5eNLjqgOTMjZ+cd58D1D0F5A3TzluTCHb83WfrpxERLc2LGjExL4/CQoNV2nQ1Tu/nylZZlPPkAaUhhvwB5A4No6XpjoY57qhXgC03AZUmrIbUUBsjtBaX+j9ozCcHvxAcinm5r78vEzjj5BeklRpAf7sLBKFQvFnLMzeXPLuvNG6eMxiWUo2BD0lekl/1bfczoSgIRdOd5a23cgtKpLnsHeC7f0smzuHQqToy9fFhdpyRLeppjRFhaLqDhLMImJf7zKsNXy9XZtNhc2V78oDp9foWMjxTdgPnvgZyBFaZDXU6P+avKUo6VCYSupXRaHih25lUcbbDJa6FbqbzkpSVlWHz5s1Rqk2CUfU8UDyB288ThqbbZpc6BghCQ+n+1hE5sxFT3stNUjACuGSV4qCi3hUaQlSomm7loGRGu8wLEXwnH879FgnsAPCNnpmjzh5u/jrtLul+a8K9+5cK9seLVk9zB0v72LScCuoRF6utgkmv0T35kSBWjtSSoQzVslUE/nAdPMmiCAi0nolK3pDIeI8GEJKm2yia5uU6jpEAaVz97t8qzg01BEmf+b1I0x1u20dkASzEhRl+/NGMga5Az5GaCHdu+A7jjODKAArHWl+OafQW0jXGdMNjhMlnMWj+o3gWjfjlUdatn9daxehzzfv1Mev1HwBSi8ylz61U3/bU/0HjXuajNXfxjaOybX6KaDZK83J+O4Jv62cHJcFHZkIVdzbQ6w4gxedlMswwCHaneVMbtbLy9QQuFUSabiNCqk8gHfWKufKUA33Dx+ppQ56oKMrwmaIZgXeiIbvPYbzWaoOpXtxk3T3dHHres4HQ72dqiUmzeCVxIHSLFhuNWj9o5SFC5HU/FpruaJjUx1LoDgqx5zsepvadF+ZlfYCVz3EcvCNmUI2NHuF9rka8lyvTePKkfcuiOsqcnyreSZ9TJKGGN8zrCnkBmdd8RcIagjfz5cb+kinaZQtDZooccybYcxwxfNet00ZBSg5+4VxjjLCFoelWWmmcVISgNeJTSFmmP5SowWfy/PHAdyt9gBjBqaIE8RNDTTc/dqVq+NBSzsf4LZwdEBK6OwrRHGBcnDd40QAYqkMR0SqnEeFs+lHgqk+Bbv9lrrwgQVJLmAtRaFC2y8BF0qr4ZYqY4P0WBv82swfQ/8fAxb9QDHRhaHDUrrFAz7RNZ0+3/KSZGllPerfA91gKZv46CJ4lPXP8UOk+V/rLe6NNpj3dQMCss3uYeyrDQU3oDtVhmA81oc9STXeMtz+YxsL+RuZ13ogjNTN1EfTpk/4FDPwZ0Odu7wmRpjvM680OdU84X24E3mc14U1oNaJnXh5j55SRgh+rfJg1j/ct1ustjAQpOVT8RwQRxlZG5fxDKWTzc0uj2AwuMvjwOXNVhsqKBWbe5WhZN/nG6k6jAsfSOovTAMFtykdD6oDEtXk5EUH4yZ2at8tIwb+Aeiv4ZhAJ3ee+1v+dK1PdbFq7QPm/3bT2dIcorKWWyv/P6g3UCLZMqIUbqfx58LFwOl81gatyMbBhPJCj4qBQb0+3/KSBikRxYp9SBDR9Ln03sxfLMgTXnlJoLguj79jAh4GCUZJFzNvehZVYxLS1crFjwruS9kI5MYgHzteH9/sRvwE2XQEMehg4x+cVJYHC5zMkrrFS6NYyaw5z7BNpb/OHSR+tNOFOvkOxaAPkApFmSCmDqPUJer4ZjPZfibgFY9K/JI/2m68KHCuuMZeHM1U/DaCtVY7Wnm7fAkHlY8AXq4C+95rLj8ew9VchMOPbEOeMkUbn/ql5L7cS33uZOxiYuFUR5cafKPDV96xc8zlw+j9A0aWBc5584MK3FlU0PiGhu6NwgfekG83BJoITHiP7eSIJf586X6U9kQhVU5c/XNJUR9LkJpz2VTMbKxoHTN2v7mFdL0637FycCd088TAREz1LZk2+jU4wHG6gy1WSJjatTPIUnGxCt90VnwJ3JMgdBEz3hsnatzhwPFrP8YR3o1NOWFjYl8jCKCksuIRtYKZdDJjzipzneToJk1qOww1c8wUAFnpoUR7ezJdHr68Q9V/C9z8BNd0pBUDnK4FBPwf2eB0GZ/Y0l4d/W5pJ83J+TDFqXh62pts75+u/UPqEhYl+wGyYT8vQe0b5a4rc89ze3o7mZsWWQrd37pcxGDh/3vvda37v+99Hc3sgfXMb0HoecBQBeUXytIOeAz5cIM4jznC5XHA4wp8bkdDdUeBXh9ui+HBHcvIndKRmJRp76pQ4M4GWU6EV0+e/DSQyMWCEJXRrmNBnC0JaqJUZ7r7gaHrwjgeTchkCodtqk2+7C7j6oNSOsdjrGGuP7VYTDSE4aublHO5s/TTRJLs/cHqf/JieP4pwkAndivFJaOVlol0MeeQWhDe6aL7k+PK73UCTxVZtSoxGyQgHoR8EXrMmuFe5g4HhvwS+2RaI9x0PC6yhwltkdTbpDG7I/3q/mDUvF2gvhUTSe3mYY1HhOC6rBGxv3TrzbRKZcbu5uRmHDh1Ce7tiHtJnNdDaJCmfDun0K+12oNty6fsXGv5o2vsH0unlGQfk5OSguLgYtjDuNQndHQVee2blJCSIcPe1ccRS063HpWuBrXMlrXXMCWNwyTC5aq5WZth7uqMohIUaE9gqRAJoOB7ZjRILB2r9HwQ+e0GK85vM9Pqh9WVEzZFaHDPmNeANxV7MNgs9//PvjHJ8MuK9XBMDfjpEvjycacDY14BPfgnsqBX/LpEJ1by81x2SFYBP6E6Wd8SIAHDFXmkRpuTywFYlvYVOLSWHVXu6g8LdhdlGGT0C39O7AWcOhpdf1InuM8oYw9GjR+FwOFBWVga7PcS5JGsDTrVIz2ZOhXba1i7S8+SI8vzeBIwxnD17FsePS9Y3JSUajuN0IKG7oyDT5kVTqxTBTkP0UlbMiVz+SswI3QVVwJUa3s2jSTgrul2vBRoeNudFXVRmIu3pHv4r4P1pklO6uIC79urfAwdfkMwJk5HKR6VrS2ZPwhk9JbNQH8U1QP07kS+HnyRbqdVp/MS6vMNFZEas5YsjXGTxaJVCSpiabiOWVlqx2XvcBny7HSgJIw58PCLcyqWj6RaeS+I+R0lOf0EcaJ0xNk/hr4G/71r9dTjeyyO98Msv0FQ9D/xjJtAnjH3h0abTaO3zEbYQa21txdmzZ1FaWoq0tDCVEZ7BUvvrbleLwFaUKJCaKm3LOH78OAoLC0M2NSehu6MQK6E7oublAqHbyv2ncWWOFCXzcpsdGPhQaL+T/R/unu4okt0HuPI/sa4FB9fWFTdKn2Qm3p6HSKN8N8asBl61wEmPzBrCwnsaze1JZuE1ZcOXS1q90issLI8XupWabkEbmBmvzJqXK9M43ED1SuPlxQ02aI93gnMsBKE7rsZ3k4i8mEeKSduBQy9Jzhl5LnxjMANe6A5X0x0m/Lw3oxswaVtk87eagipgwkYgQ01bHNm5fFubdL/c7ghonWMSetRafAsRLS0tIQvdCdzrEKbgVymjun/SYkdqlg6cfN4x3nPaZZp0rYXj9dPGYn+scqKj2eEaeCZ041MmMVaGzyKiT1Dc2AxryknhHGglskARDvyeUFcWUDZdsDcVBkIgGsSmYV4uml5php0Mypz7qhZrPAb7+K2mu9d6zRfqT4lwfOtgmu4u1wAD/wcYvzaMTFTmCfnDgWFPS041ZcdHGMzXpvLdAKbeDwMI9/8nGEXj1R3YWkQ4e5aTmUjcl+RbiiDEyDTdUZzUhx2rlP9ZlB9XfoBubYpu2Uo8+cD3m4w5k2s5Lf8/KgKsmT3dBuh6LXDkL0CnMeHlk5AkuVOxjkJ+FfDttujFB3dyIZusFMBSS4BzR63LPxxk8Zw1HCRGKu69lqZbJECY8UtiMyt0xyDqgBUMew4oqgFKp4jPi+L88g7cNE2fk0TTbbMBA38aXh5mF+dDeb7M3mPlOxOuRl9v/z9BRBkSujsM/H6caA7OggGw6YvQsop2DGVeI6UWviSaGA3D8u2/5P9f83nEqxKEmT3dRiaedhcw5s/h1SlRIU13cnDZeuld5D3oWok9Slq8/JHAl6utyz9SKN+j1M7Aua+k723nIlMG3+8pfY6I+jlTQrcRLXYSarqd6UDFrODjU/cDh18VR/tw5wJT9+mPke28Uz3S5pnCcPzzCGm60yuA8u+b+72SuItMEmlogT7RSJJemtCF73y04k1HGtGqc/GE0PKyO4FpR6TB1U+UOp1E6ryVpkjRiDnZdlb+v9YA7Y8TSoihgTQpcGUCxZcphGEvaV0sKJAfzkmgCLLoGvRI4HvZ9MgUwY9vQZpu7v8etwbXQT9zPjOVJBHSdHefK/3tF24sZAvJ7iv5G3GpWG5l9wMyumvncfbLyNcrUckZZC59arGxdHy8+vYWc2Xwi/WDHg5/ISkZzMu1SPZQmwaZO3cubDYbbDYbXC4XKioqcP/99+M8F/t78+bNuOyyy5CXl4e0tDT06tULc+bM8ccj37RpE2w2G06dOmVpXUnT3VHghUZXThQLFkz+1AZNI6R1AVojpKUwQ2Nd9MsMlcqfS4NV0+fWOhHiaVDcHy1Nt2iPJRGANN3JT8VsYN9jUvzgSCEznbXSwWSCCPTKhdKKG4GjayVT5JLJkS9PKXQ7OUupEb8GBjxkMo61SfPycPqNEb8BetUCuUNCzyMRqJgN7JgvfW/+LrZ1iTXl3weaTxr3b1B0mbQokzNAO507G+h2I3D2sIYDMBVsBhaazGDJ4mY8QUK3j8mTJ2PFihVoaWnBzp07MWfOHNhsNjzxxBPYv38/Jk+ejDvvvBPPPPMMUlNTceDAAfzlL3/xO4+LFiR0dxT4Abnn7daXV3oF8PWbQLkgXEvx5cDH/zf0vPkJZbRW+syu2MYSTz4wfGl0yzy9T/6/SLvnPxdhZynJBgndyc+ARZKAU3Rp5PKM1v7eRHk+lUK33QVc8kfrylP62yiukcbB7AFS25gSuGHQvJwTUr56Heh2vbkyfNidQP6w0H6bSPALId9ujV094gGbHbjohybS24DBjxlLO+r3odVJWV6oXPo2cOhF4/VNVIxuOewAeDweFBdL1hhlZWWoqanB+vXr8cQTT+Dtt99GcXExlixZ4k/fo0cPTJ5sweKrDiR0dxT4CUjnq6wvr+q3wLc7gM5XBp8rmQhcug7I6hNa3rzQZjiMBRFVDHuQJYKh1eukx+GWnAVGEl4w01r0Cpd4F7pTCiUfHMWXR7fcIPNyBzD+72FkaEDr13Qo8D1vaBhldRASxUqDQFia7pLLpU+yUzxRms9H0mKKh7HgrYPRwpEW8vu6d+9e/POf/0R5ubTVsri4GEePHsV7772HsWPHRrKWpiGhu6PAC93RGHhSS4AuGsJ9ycTQ8+br33wy9HzMkNU3OuUkC5pCN3U7msS7UEPEKdHSdMe5f4urD0mmw2mdo1uuGSdpRjDivbyNcwzWW+BgjCASFVeWfpqOjt0BjHvduvzbzgJ/sijEpR7fP2PKefIbb7yBjIwMtLa24sKFC7Db7XjuuecAANdddx3WrVuHcePGobi4GCNHjsSECRMwe/ZsZGVF9zkjR2odhWSdyLc0RqecbgJvqkSASxSexrU6S9J060CabiIEZIKZhUN7vI8lzrToC9xAsPfysDFgXt4WcBRkqXUDQUSLi38BdLsJKI2+6S+RuFx66aXYvXs3tm3bhjlz5uDmm2/GjBkzAAAOhwMrVqzAl19+iSVLlqBz58547LHH0L9/fxw9Gt3wl6Ry6ijEu3bCLEUTgGMbgB63WVvOuL8BX78F9L3P2nISna4zAt8ze2mnJaFbG/JISoRCtBypKb2CExKWOq9TEbqT3lEU0eEQhYQjYoMjTdI4x6psE6Snp6Nnz54AgBdeeAGVlZV4/vnnceutt/rTdO7cGTfddBNuuukmPPLII7jooouwfPlyPPzwwxGtuhYkdHcUkk3oHvdX4OS/gYJR1pbT+UrxvnTCPIXjgeObgO43x7omcQ4J3UQIRMuRWkZPAOusyz/R8MX/Lp0a4Yz5fkBF6C6/Hmj4OHqx4AmC6DjYbKZMvOMFu92OBx98EPfccw9uuOEGpKYGh6nNzc1FSUkJmpqaolo3Ero7CskmdDvTgcIxsa4FYYbL3gFaTkcnbngiE+/mu0R8Ei2hu/LnQHuzFIKLAK74EGj8FMgfEdl8HamSIN/aBKSXi9PYHUDlo5EtN9nxLZL0uFU/LUEQCcl1112H++67D0uXLkVmZiZ2796N6dOno0ePHjh//jxefPFF7Nu3D88++2xU60VCd0eh733AV38Dul4X65oQHRW7gwRuQ0RC6CZteccjSt7L3TlA1a+tyz/R8ORLn0hjswHj34h8vh2daUckB6xWtBlBEHGB0+nE/PnzsWTJEqxevRoffPAB5s2bh6+//hoZGRno378/1qxZg3HjomslREJ3R6FwDPC9EzTQENZDe5LDg+4fEQrR0nQTRCJjs9E8iCCSiJUrVwqPL1iwAAsWLAAAjB49WjOP8ePHg0Vh7kVCd0cipSDWNSA6AhQLNUzIvJwIAV7odgTvYSMIgiAIInaQ0E0QRGRR87RLGIM03UQopBQDZTMATwGQUhjr2hAEQRAEwUFCN0EQkeX8iVjXIMEhTTcRAjYbMObPsa4FQRAEQRACSCVFEERkaT4Z6xokNqTpJgiCIAiCSCpI6CYIgiAIgiAIgiAIiyChmyAIIp7odQeQVgb0/u/Q83BmRK4+BEEQBEF0CKLhxTsRaW8Pf+tf0uzpXrp0KZ588knU19ejsrISzz77LEaMGBHrahFExyGlGDhfD7iyY12TxMaTB1zzRWhe4Ef8Cjj4O2DATyJfL4IgCIIgkhKXywWbzYYTJ06gU6dOsFEkGgDSIkRzczNOnDgBu90Ot9sdcl42lgRLGn/84x8xe/ZsLF++HFVVVXjqqafw6quvoq6uDoWF+l5cGxoakJ2djdOnTyMrKysKNSaIJOTUPmDPT4CBi4DcwbGuDUEQBEEQBGGQM2fO4MsvvyRtt4C0tDSUlJQIhW6jcmRSCN1VVVUYPnw4nnvuOQCSCUBZWRnuvPNOf2B0LUjoJgiCIAiCIAiiI9PW1oaWlpZYVyOucDgccDqdqtp/o3JkwpuXNzc3Y+fOnVi4cKH/mN1uR01NDbZs2SL8zYULF3DhwgX//w0NDZbXkyAIgiAIgiAIIl5xOBxwOByxrkZSkvCO1L755hu0tbWhqKhIdryoqAj19fXC3yxevBjZ2dn+T1lZWTSqShAEQRAEQRAEQXQwEl7oDoWFCxfi9OnT/s+RI0diXSWCIAiCIAiCIAgiCUl48/KCggI4HA4cO3ZMdvzYsWMoLi4W/sbj8cDj8USjegRBEARBEARBEEQHJuGFbrfbjaFDh2LDhg2YNm0aAMmR2oYNGzB//nxDefh8ydHeboIgCIIgCIIgCMIIPvlRzzd5wgvdAHDPPfdgzpw5GDZsGEaMGIGnnnoKTU1NuPnmmw39vrGxEQBobzdBEARBEARBEARhisbGRmRnZ6ueTwqhe+bMmThx4gQeeugh1NfXY/DgwVi7dm2QczU1SktLceTIEWRmZsY0GHxDQwPKyspw5MgRCl2WRFC7Ji/UtskLtW1yQu2avFDbJifUrslLsrQtYwyNjY0oLS3VTJcUcbqTBYoXnpxQuyYv1LbJC7VtckLtmrxQ2yYn1K7JS0dr2w7pvZwgCIIgCIIgCIIgogEJ3QRBEARBEARBEARhESR0xxEejweLFi2icGZJBrVr8kJtm7xQ2yYn1K7JC7VtckLtmrx0tLalPd0EQRAEQRAEQRAEYRGk6SYIgiAIgiAIgiAIiyChmyAIgiAIgiAIgiAsgoRugiAIgiAIgiAIgrAIEroJgiAIgiAIgiAIwiJI6I4Tli5dim7duiElJQVVVVXYvn17rKtEcLz33nu46qqrUFpaCpvNhjVr1sjOM8bw0EMPoaSkBKmpqaipqcGBAwdkaU6ePIlZs2YhKysLOTk5uPXWW3HmzBlZmj179mDMmDFISUlBWVkZlixZYvWldWgWL16M4cOHIzMzE4WFhZg2bRrq6upkac6fP4/a2lrk5+cjIyMDM2bMwLFjx2RpDh8+jKlTpyItLQ2FhYW477770NraKkuzadMmXHzxxfB4POjZsydWrlxp9eV1aJYtW4ZBgwYhKysLWVlZqK6uxltvveU/T+2aHDz++OOw2Wy4++67/ceobROTn/3sZ7DZbLJPnz59/OepXRObr776CjfeeCPy8/ORmpqKgQMHYseOHf7zNI9KPLp16xb0ztpsNtTW1gKgdzYIRsScVatWMbfbzV544QW2b98+9oMf/IDl5OSwY8eOxbpqhJc333yT/fjHP2avvfYaA8BWr14tO//444+z7OxstmbNGvbhhx+yq6++mlVUVLBz587500yePJlVVlayrVu3svfff5/17NmTXX/99f7zp0+fZkVFRWzWrFls79697JVXXmGpqansV7/6VbQus8MxadIktmLFCrZ37162e/dudsUVV7CuXbuyM2fO+NPMmzePlZWVsQ0bNrAdO3awkSNHslGjRvnPt7a2sgEDBrCamhq2a9cu9uabb7KCggK2cOFCf5qDBw+ytLQ0ds8997D9+/ezZ599ljkcDrZ27dqoXm9H4vXXX2d///vf2SeffMLq6urYgw8+yFwuF9u7dy9jjNo1Gdi+fTvr1q0bGzRoELvrrrv8x6ltE5NFixax/v37s6NHj/o/J06c8J+ndk1cTp48ycrLy9ncuXPZtm3b2MGDB9m6devYp59+6k9D86jE4/jx47L3df369QwA27hxI2OM3lklJHTHASNGjGC1tbX+/9va2lhpaSlbvHhxDGtFqKEUutvb21lxcTF78skn/cdOnTrFPB4Pe+WVVxhjjO3fv58BYP/617/8ad566y1ms9nYV199xRhj7Je//CXLzc1lFy5c8Kd54IEHWO/evS2+IsLH8ePHGQC2efNmxpjUji6Xi7366qv+NB9//DEDwLZs2cIYkxZk7HY7q6+v96dZtmwZy8rK8rfl/fffz/r37y8ra+bMmWzSpElWXxLBkZuby377299SuyYBjY2NrFevXmz9+vVs3LhxfqGb2jZxWbRoEausrBSe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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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", + "ax1.plot(df['Close'], label='Close Price', color='blue')\n", + "ax1.set_title('Stock Price')\n", + "ax1.set_ylabel('Price')\n", + "ax1.legend()\n", + "\n", + "# rsi graph\n", + "ax2.plot(df['RSI'], label='RSI', color='orange')\n", + "ax2.axhline(70, color='red', linestyle='--') # Overbought line\n", + "ax2.axhline(30, color='green', linestyle='--') # Oversold line\n", + "ax2.set_title('Relative Strength Index (RSI)')\n", + "ax2.set_ylabel('RSI')\n", + "ax2.legend()\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolumeSMA_10SMA_50RSI
6221.70097922.03121221.70097921.81420114674821.021.63304621.56747140.418486
6321.81420123.11626121.85666122.17745815454878.021.59200221.66295545.076147
6422.31426622.40862122.03121222.21048021249133.021.59483321.75494851.133774
6521.70097922.92755521.70097922.80961640137428.021.71560421.84665957.684634
6623.12097723.87107722.51712423.53140853712115.021.96752321.94893659.348024
\n", + "
" + ], + "text/plain": [ + " Open High Low Close Volume SMA_10 \\\n", + "62 21.700979 22.031212 21.700979 21.814201 14674821.0 21.633046 \n", + "63 21.814201 23.116261 21.856661 22.177458 15454878.0 21.592002 \n", + "64 22.314266 22.408621 22.031212 22.210480 21249133.0 21.594833 \n", + "65 21.700979 22.927555 21.700979 22.809616 40137428.0 21.715604 \n", + "66 23.120977 23.871077 22.517124 23.531408 53712115.0 21.967523 \n", + "\n", + " SMA_50 RSI \n", + "62 21.567471 40.418486 \n", + "63 21.662955 45.076147 \n", + "64 21.754948 51.133774 \n", + "65 21.846659 57.684634 \n", + "66 21.948936 59.348024 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Correlations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "corr = df.corr()\n", + "corr" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "plt.figure(figsize=(10,8))\n", + "sns.heatmap(corr, annot=True, linewidths=0.5)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 17, + "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": 18, + "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": 19, + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "997ZEgibCZIO", + "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76" + }, + "outputs": [], + "source": [ + "X_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bmtt76RuCeyG", + "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1" + }, + "outputs": [], + "source": [ + "X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CeJkUJ92Ciqd", + "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917" + }, + "outputs": [], + "source": [ + "y_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7HGC7VuTCjWc", + "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75" + }, + "outputs": [], + "source": [ + "y_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c6Ek8jRlO2_I" + }, + "source": [ + "## 1. LINEAR REGRESSION" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "id": "RdZ1SpzdMHAJ" + }, + "outputs": [], + "source": [ + "# Create a linear regression model\n", + "model1 = LinearRegression()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mPM035IzMY04", + "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac" + }, + "outputs": [], + "source": [ + "y_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "qBhQ9HbYMI3d", + "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470" + }, + "outputs": [], + "source": [ + "# Train the model\n", + "model1.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "id": "X269co2kMS4z" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred1 = model1.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dEi49xtEOtne", + "outputId": "0000b074-3187-41de-fbac-4ae75cbda6bd" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "22SaCsQmfhgP", + "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "656J5oz5fzq6", + "outputId": "ce67d2d8-0bc8-4e6d-d6b5-6b78e7e1c59b" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "fF002Yepgk55", + "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8pPzsCY1g305", + "outputId": "72c4ea56-2610-41c6-f286-4c8289d3f0ac" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "id": "2gpbDxshhexj", + "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qpnLeFyZhwB3", + "outputId": "4dcac062-ec60-4b2c-ab4b-dcda1b0f2341" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "id": "RAIwxIp5iH9Z", + "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7IkE-RAmiWNo", + "outputId": "cf4c1d84-412b-4a18-f70c-65ce637772ea" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "P0oB5wjQivBr", + "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BsajWJGBjC80", + "outputId": "1af1194f-9a33-40af-8578-c99832509c1b" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "6mQEQf-ykc9F", + "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AnZXMYb8kooV", + "outputId": "273fa9ed-d6f2-4c4d-fb0e-a643f5ef5732" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "9fn64o-ZlBka", + "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IPoDRkcMlMAr", + "outputId": "9892f42f-e65f-46c0-eeed-77ce32f6a7eb" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FX5DTKqslxWf", + "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8" + }, + "outputs": [], + "source": [ + "# Train the model\n", + "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "OVW2qpNsmGVq", + "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5zuwkC1emmh3", + "outputId": "5d6a0e05-3112-4d27-f5fb-ed665867b22d" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0vHjcluaoxzP", + "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933" + }, + "outputs": [], + "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": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gEE06_TjozYv", + "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "i_6-UUDhpi0c", + "outputId": "3dcc5761-03b6-4b52-dfe6-08dece835c8d" + }, + "outputs": [], + "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", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "qpWPtph9CGip", + "outputId": "c099cb8d-96af-4223-f499-743040aecdf1" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "RFaaCNH6Cfoa", + "outputId": "67a8f358-e3ce-4ad2-9c78-ebc75902beb4" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "nrZu-K-KDCJ2", + "outputId": "69165581-da05-4554-a464-a606eb87a734" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "_c4Pe76fDNM-", + "outputId": "0e3d2f74-9042-4e2d-92c6-5ce61e967bd4" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "ZDPV0M5rDTi6", + "outputId": "9db63164-3f42-47be-d302-d80d381d9b91" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "39LBleNeDeuw", + "outputId": "3c6c40bc-f1da-44fb-da14-25ec6d6cf278" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "13cZXvb0DsvK" + }, + "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.12.1" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Python File/Stock_Price_Prediction_REMOTE_20502.ipynb b/Python File/Stock_Price_Prediction_REMOTE_20502.ipynb new file mode 100644 index 0000000..5312833 --- /dev/null +++ b/Python File/Stock_Price_Prediction_REMOTE_20502.ipynb @@ -0,0 +1,2034 @@ +{ + "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", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SOQbXSiB-g5G", + "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e" + }, + "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')\n", + "df = pd.read_csv('SBIN.csv')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Analysis and Visualization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Print first 5 rows of dataset\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# basic dataset features information\n", + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Summary of numerical columns\n", + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Checking for null values\n", + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Drop the 'Date' and 'Adj Close' columns\n", + "df.drop(['Date', 'Adj Close'], axis=1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "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": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Checking for null values\n", + "df.isnull().sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Adding Indicators" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### SMA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Its the avg of stock price over a specific time period\n", + "\n", + "SMA = (sum of closing price os past n days) / n\n", + "\n", + "It helps identify trends by filtering out shortterm fluctuations\n", + "\n", + "Price above SMA indicate Uptrend and price below SMA indicate lowertrend" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "df[\"SMA_10\"] = df[\"Close\"].rolling(window=10).mean()\n", + "df[\"SMA_50\"] = df[\"Close\"].rolling(window=50).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "df.dropna(subset=['SMA_10', 'SMA_50'], inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolumeSMA_10SMA_50
4922.64921822.73413522.27652722.63506539637704.023.10257920.537146
5022.17273922.36144321.83779022.11612939109363.022.92944320.603004
5122.09254122.18689221.88968322.08310527429706.022.75725020.680184
5222.07366922.68695821.96044722.61147727421227.022.63506520.777649
5322.69167522.88981422.46523122.58788936343129.022.62657320.875870
\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 \n", + "49 20.537146 \n", + "50 20.603004 \n", + "51 20.680184 \n", + "52 20.777649 \n", + "53 20.875870 " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RSI" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is a momentum indicator used to measure the speed and change of price movements. It ranges from 0 to 100 and helps identify whether a stock is overbought or oversold. \n", + "\n", + "RSI > 70: Overbought \n", + "RSI < 30: Oversold" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "delta = df['Close'].diff(1)\n", + "\n", + "gain = delta.where(delta > 0, 0)\n", + "loss = -delta.where(delta < 0, 0)\n", + "\n", + "avg_gain = gain.rolling(window=14).mean()\n", + "avg_loss = loss.rolling(window=14).mean()\n", + "\n", + "rs = avg_gain / avg_loss # Relative Strength\n", + "df['RSI'] = 100 - (100 / (1 + rs))\n", + "\n", + "df.dropna(subset=['RSI'], inplace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Representing RSI Graphically" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAMWCAYAAADs4eXxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUZcLG4SeBEGqCICSgNEVFsCBIyWJFBBELih0FFcGCvaN8YFtxdVdXFNuqYC/YZVVARFSKAgqLgAiIgkIoIonUtPn+eD05Z2bOTGYm0/O7ryvX6WfeSSaQ57wtw+PxeAQAAAAAAKIuM9EFAAAAAAAgXRG6AQAAAACIEUI3AAAAAAAxQugGAAAAACBGCN0AAAAAAMQIoRsAAAAAgBghdAMAAAAAECOEbgAAAAAAYoTQDQAAAABAjBC6AQCowT7//HNlZGTorbfeSsjrT5o0SRkZGfr5558T8voAAMQaoRsAgDhbsmSJzjrrLLVp00Z169bVPvvsoxNPPFGPPfaY13n333+/3nvvvcQUMgQ///yzMjIyKr9q1aql1q1b64wzztCiRYsSXTwAAJJChsfj8SS6EAAA1BRz5szR8ccfr9atW2vo0KHKz8/XunXrNG/ePK1evVqrVq2qPLdhw4Y666yzNGnSpJiV5/PPP9fxxx+vyZMn66yzzgrr2p9//lnt2rXT+eefr5NPPlnl5eVavny5nnzySe3Zs0fz5s1T586dg96jvLxcpaWlys7OVkZGRjXeCQAAyal2ogsAAEBN8ve//125ubmaP3++Gjdu7HVs06ZNiSlUNXXp0kUXXnhh5XavXr102mmn6cknn9TTTz/tes2OHTvUoEED1apVS7Vq1YpXUQEAiDualwMAEEerV69Wp06d/AK3JDVv3rxyPSMjQzt27NALL7xQ2Xz74osvrjz+3XffqX///srJyVHDhg11wgknaN68eX733LZtm2644Qa1bdtW2dnZ2nfffTVkyBBt2bIlYBn37NmjU045Rbm5uZozZ07Y77F3796SpDVr1kiy+23PmjVLV111lZo3b659993X65hvn+6PP/5Yxx57rBo1aqScnBx169ZNr776qtc5X3/9tU466STl5uaqfv36OvbYYzV79uywywsAQCxR0w0AQBy1adNGc+fO1ffff69DDjkk4HkvvfSSLrvsMnXv3l0jRoyQJO2///6SpKVLl+roo49WTk6Obr31VmVlZenpp5/Wcccdp1mzZqlHjx6SpO3bt+voo4/W8uXLdemll6pLly7asmWLPvjgA/3666/ae++9/V53165dOv3007VgwQJ9+umn6tatW9jvcfXq1ZKkpk2beu2/6qqr1KxZM40ZM0Y7duwIeP2kSZN06aWXqlOnTho1apQaN26s7777Tp988okuuOACSdJnn32m/v37q2vXrho7dqwyMzM1ceJE9e7dW19++aW6d+8edrkBAIgFQjcAAHF08803q3///urcubO6d++uo48+WieccIKOP/54ZWVlVZ534YUX6oorrtB+++3n1XRbkkaPHq3S0lJ99dVX2m+//SRJQ4YM0UEHHaRbb71Vs2bNkiQ99NBD+v777/XOO+/ojDPO8LrebUiX7du365RTTtHSpUv12WefVdkf27Jz505t2bJF5eXl+uGHH3TDDTdIks4++2yv85o0aaIZM2YEbU5eVFSka6+9Vt27d9fnn3+uunXrVh6zyuzxeHTFFVfo+OOP18cff1zZF/zyyy9Xp06dNHr0aE2bNi2ksgMAEGs0LwcAII5OPPFEzZ07V6eddpoWL16sBx98UP369dM+++yjDz74oMrry8vLNW3aNA0cOLAycEtSixYtdMEFF+irr75ScXGxJOntt9/W4Ycf7hW4Lb6DlhUVFalv37764Ycf9Pnnn4ccuCVp7NixatasmfLz83Xcccdp9erV+sc//qEzzzzT67zhw4dX2X97+vTp+vPPP3X77bd7BW5nmRctWqSVK1fqggsu0O+//64tW7Zoy5Yt2rFjh0444QR98cUXqqioCLn8AADEEjXdAADEWbdu3fTOO++opKREixcv1rvvvqtHHnlEZ511lhYtWqSOHTsGvHbz5s3auXOnDjroIL9jBx98sCoqKrRu3Tp16tRJq1ev1qBBg0Iq0/XXX6/du3fru+++U6dOncJ6PyNGjNDZZ5+tzMxMNW7cWJ06dVJ2drbfee3atavyXlbT9GBN71euXClJGjp0aMBzioqKtNdee1X5egAAxBqhGwCABKlTp466deumbt266cADD9Qll1yiyZMna+zYsXEvy+mnn67XX39dDzzwgF588UVlZobeGO6AAw5Qnz59qjyvXr161SliJasW+6GHHgpYI9+wYcOovBYAANVF6AYAIAkceeSRkqQNGzZU7nObt7pZs2aqX7++VqxY4Xfshx9+UGZmplq1aiXJDLz2/fffh/T6AwcOVN++fXXxxRerUaNGevLJJyN5G9VmDRb3/fffq3379kHPycnJCSnsAwCQSPTpBgAgjmbOnOk6iNlHH30kSV7Nxhs0aKBt27Z5nVerVi317dtX77//vtc0Wxs3btSrr76qo446Sjk5OZKkQYMGVTZf9+VWhiFDhmj8+PF66qmndNttt0Xy9qqtb9++atSokcaNG6fdu3d7HbPK3LVrV+2///765z//qe3bt/vdY/PmzXEpKwAAoaCmGwCAOLrmmmu0c+dOnXHGGerQoYNKSko0Z84cvfHGG2rbtq0uueSSynO7du2qTz/9VA8//LBatmypdu3aqUePHrrvvvs0ffp0HXXUUbrqqqtUu3ZtPf3009qzZ48efPDByutvueUWvfXWWzr77LN16aWXqmvXrtq6das++OADPfXUUzr88MP9ynf11VeruLhYd955p3Jzc3XHHXfE5ftiycnJ0SOPPKLLLrtM3bp10wUXXKC99tpLixcv1s6dO/XCCy8oMzNTzz77rPr3769OnTrpkksu0T777KPffvtNM2fOVE5Ojj788MO4lhsAgEAI3QAAxNE///lPTZ48WR999JGeeeYZlZSUqHXr1rrqqqs0evRoNW7cuPLchx9+WCNGjNDo0aO1a9cuDR06VD169FCnTp305ZdfatSoURo3bpwqKirUo0cPvfzyy5VzdEumX/OXX36psWPH6t1339ULL7yg5s2b64QTTtC+++4bsIx33HGHioqKKoP3yJEjY/kt8TNs2DA1b95cDzzwgO69915lZWWpQ4cOlVORSdJxxx2nuXPn6t5779Xjjz+u7du3Kz8/Xz169NDll18e1/ICABBMhsetfRkAAAAAAKg2+nQDAAAAABAjhG4AAAAAAGKE0A0AAAAAQIwQugEAAAAAiBFCNwAAAAAAMULoBgAAAAAgRpinW1JFRYXWr1+vRo0aKSMjI9HFAQAAAAAkOY/Hoz///FMtW7ZUZmbg+mxCt6T169erVatWiS4GAAAAACDFrFu3Tvvuu2/A44RuSY0aNZJkvlk5OTkJLg0AAAAAINkVFxerVatWlXkyEEK3VNmkPCcnh9ANAAAAAAhZVV2UGUgNAAAAAIAYIXQDAAAAABAjhG4AAAAAAGKEPt0hqqioUElJSaKLgTjIyspSrVq1El0MAAAAAGmA0B2CkpISrVmzRhUVFYkuCuKkcePGys/PZ952AAAAANVC6K6Cx+PRhg0bVKtWLbVq1SropOdIfR6PRzt37tSmTZskSS1atEhwiQAAAACkMkJ3FcrKyrRz5061bNlS9evXT3RxEAf16tWTJG3atEnNmzenqTkAAACAiFFtW4Xy8nJJUp06dRJcEsST9YCltLQ0wSUBAAAAkMoI3SGib2/Nws8bAAAAQDQQugEAAAAAiBFCdw2XkZGh9957L9HFCNtxxx2n66+/PtHFAAAAAICgCN1prLCwUNdcc432228/ZWdnq1WrVjr11FM1Y8aMRBet0l133aWMjAxlZGSodu3aatu2rW644QZt37496HXvvPOO7r333jiVEgAAAAAiw+jlaernn39Wr1691LhxYz300EM69NBDVVpaqqlTp2rkyJH64YcfEl3ESp06ddKnn36qsrIyzZ49W5deeql27typp59+2u/ckpIS1alTR02aNElASQEAAAAgPNR0p6mrrrpKGRkZ+uabbzRo0CAdeOCB6tSpk2688UbNmzcv4HVLlixR7969Va9ePTVt2lQjRozwqnX+/PPP1b17dzVo0ECNGzdWr1699Msvv1Qef//999WlSxfVrVtX++23n+6++26VlZUFLWvt2rWVn5+vfffdV+eee64GDx6sDz74QJKpCe/cubOeffZZtWvXTnXr1pXk37x8z549uu2229SqVStlZ2erffv2eu655yqPf//99+rfv78aNmyovLw8XXTRRdqyZUtY31MAAAAACBc13WHyeKSdOxPz2vXrS6EMqr1161Z98skn+vvf/64GDRr4HW/cuLHrdTt27FC/fv1UUFCg+fPna9OmTbrssst09dVXa9KkSSorK9PAgQM1fPhwvfbaayopKdE333xTOdL3l19+qSFDhmj8+PE6+uijtXr1ao0YMUKSNHbs2JDfZ7169VRSUlK5vWrVKr399tt65513As6ZPWTIEM2dO1fjx4/X4YcfrjVr1lSG6m3btql379667LLL9Mgjj2jXrl267bbbdM455+izzz4LuVwAAAAAEC5Cd5h27pQaNkzMa2/fLrlkaD+rVq2Sx+NRhw4dwrr/q6++qt27d+vFF1+sDOuPP/64Tj31VP3jH/9QVlaWioqKdMopp2j//feXJB188MGV19999926/fbbNXToUEnSfvvtp3vvvVe33npryKF74cKFevXVV9W7d+/KfSUlJXrxxRfVrFkz12t+/PFHvfnmm5o+fbr69OlT+dqWxx9/XEcccYTuv//+yn3PP/+8WrVqpR9//FEHHnhgSGUDAAAAgHARutOQx+OJ6Lrly5fr8MMP96od79WrlyoqKrRixQodc8wxuvjii9WvXz+deOKJ6tOnj8455xy1aNFCkrR48WLNnj1bf//73yuvLy8v1+7du7Vz507Vr1/f9XWXLFmihg0bqry8XCUlJRowYIAef/zxyuNt2rQJGLgladGiRapVq5aOPfZY1+OLFy/WzJkz1dDlacnq1asJ3QAAAABihtAdpvr1TY1zol47FAcccIAyMjJiMljaxIkTde211+qTTz7RG2+8odGjR2v69Onq2bOntm/frrvvvltnnnmm33VWX2w3Bx10kD744APVrl1bLVu2VJ06dbyOuzWRd6pXr17Q49u3b6+srfdlPTAAAAAAgFggdIcpIyO0Jt6J1KRJE/Xr108TJkzQtdde6xdat23b5tqv++CDD9akSZO0Y8eOymtmz56tzMxMHXTQQZXnHXHEETriiCM0atQoFRQU6NVXX1XPnj3VpUsXrVixQu3btw+rvHXq1An7GqdDDz1UFRUVmjVrVmXzcqcuXbro7bffVtu2bVW7Nh95AAAAIJlt3Wq69ebmSo0aJbo01cfo5WlqwoQJKi8vV/fu3fX2229r5cqVWr58ucaPH6+CggLXawYPHqy6detq6NCh+v777zVz5kxdc801uuiii5SXl6c1a9Zo1KhRmjt3rn755RdNmzZNK1eurOzXPWbMGL344ou6++67tXTpUi1fvlyvv/66Ro8eHdP32rZtWw0dOlSXXnqp3nvvPa1Zs0aff/653nzzTUnSyJEjtXXrVp1//vmaP3++Vq9eralTp+qSSy5ReXl5TMsGAAAAIDy33y61aiWNH5/okkQHoTtN7bfffvr22291/PHH66abbtIhhxyiE088UTNmzNCTTz7pek39+vU1depUbd26Vd26ddNZZ52lE044obJ/df369fXDDz9UTkE2YsQIjRw5UpdffrkkqV+/fpoyZYqmTZumbt26qWfPnnrkkUfUpk2bmL/fJ598UmeddZauuuoqdejQQcOHD9eOHTskSS1bttTs2bNVXl6u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l4Zfhl69TG33wQeHf22qInQDAAAAQA0QjZru8nLpzz8jL0NOjrm+JtWSE7oBAAAAIE2VlUnnny91724GTfOVGWaH4/Ly6pcp2JRi6Yg+3QAAAACQ5P73PzPw2H33hXfd559Lb70l3Xpr9Gq6ER5CNwAAAAAkucMPN8v/+7/wrvN47PW33vI/Xp3Q3aRJeNfWVIRuAAAAAEhiv/4anfu8/77/vkhC94EHmvXnnqt+mWoCQjcAAAAAJLGff4782oqKqBVDkgndVj/wxo2je+90RegGAAAAgCRWnZG+S0qCH//998DHunf337dzpz1Pd926kZerJiF0AwAAAEASy8qK/Nply4IfX7068DG3eb1r15bWrDHr2dmRl6smIXQDAAAAQBKYNUtavNh/f22fiZ6dg6NV5fbbIy+P20jl27fb69R0h4Z5ugEAAAAgwX79VTruOLNeUWGmB7NYzbktZWXVq/0OlVtNt1NNm287UtR0AwAAAECCrVplr0+d6n3s0Ue9t6sKw9FS1euEO/J5TUXoBgAAAIAEcwbcH3/0PjZ9uvd2OM3L3QZDC5VV8x5Iy5aR37smIXQDAAAAQII5Q/euXd7HfGuU//wz9PsefHDkZbrnHumOOwIfzyRNhoRvEwAAAAAkWGmpvb57t/cx39D9yCOR3TdczZtLf/975NfDIHQDAAAAQII5B0tr08b72LBh3tubNoV+3+qEbkQHoRsAAAAAEmzrVnu9Th3vY82aeW/71oQHU1IS/PgZZ4R+L6enn47supqI0A0AAAAACXb55fa67/zYFRXe287Q/d130oYNge/7ww/++yZNstdfeSXkInpp0iSy62oi5ukGAAAAgCTiG7p9a6ut0L1okdSli1kvLZVqu6S7FSv89110kdSokdStm1SvXmRlrFs3sutqImq6AQAAACCJ+Ibum27y3p42zSyPOsre9/jjod8/M1M680ypVavIyidJ2dmRX1vTELoBAAAAIIk4Q/fOnYGP79hh7/vkE//znNOQVceSJWb6sGeesfdR0x06mpcDAAAAQBJx9tl+8033czwe7223ObOLi/337btv+OU55BDzNXmyvY/QHTpqugEAAAAgidxyi70+frz7Obt2eW+79d3ets0s69e39519duTlco6qTvPy0BG6AQAAACCBgg2c9t137tf4Nh3fssX/nKIis8zNld56Sxo4UBozJuJier1GVlbk96lpaF4OAAAAAAnkW2vdvXvV15SWem+7NSW39uXkSIMGma/q2LPHXvdt3o7AElrTfddddykjI8Prq0OHDpXHd+/erZEjR6pp06Zq2LChBg0apI0bN3rdY+3atRowYIDq16+v5s2b65ZbblFZtEYMAAAAAIAY8x0szTmq+PHHu1/jG7rdWDXmsWgKfvDB0b9nukp4TXenTp306aefVm7Xdkwud8MNN+i///2vJk+erNzcXF199dU688wzNXv2bElSeXm5BgwYoPz8fM2ZM0cbNmzQkCFDlJWVpfvvvz/u7wUAAAAAwuUbuqdMsdebNHG/JpTQbZ0Trabg++9vr2dkROeeNUHCQ3ft2rWVn5/vt7+oqEjPPfecXn31VfXu3VuSNHHiRB188MGaN2+eevbsqWnTpmnZsmX69NNPlZeXp86dO+vee+/Vbbfdprvuukt1nD39AQAAACAJrV3rvb1njxnBvG5d7ybdTt9847/P4/EOw9EO3X37So8+KnXuHJ371RQJH0ht5cqVatmypfbbbz8NHjxYa//6xC1cuFClpaXq06dP5bkdOnRQ69atNXfuXEnS3LlzdeihhyovL6/ynH79+qm4uFhLly6N7xsBAAAAgAj8/rv/PiswOwdVczrrrMDX+G7XjlJVa0aGdO210jHHROd+NUVCa7p79OihSZMm6aCDDtKGDRt099136+ijj9b333+vwsJC1alTR40bN/a6Ji8vT4WFhZKkwsJCr8BtHbeOBbJnzx7tcTwyKnYbdQAAAAAA4sAtWFsDlQWq6XZTWuo9rVe0a7oRmYSG7v79+1euH3bYYerRo4fatGmjN998U/Xq1YvZ644bN0533313zO4PAAAAAKH65BP/fdY0YoFqut0EqukmdCdWwpuXOzVu3FgHHnigVq1apfz8fJWUlGibNaP7XzZu3FjZBzw/P99vNHNr262fuGXUqFEqKiqq/Fq3bl103wgAAAAAhGjSJP99VugOp6bbN6ATupNDUoXu7du3a/Xq1WrRooW6du2qrKwszZgxo/L4ihUrtHbtWhUUFEiSCgoKtGTJEm3atKnynOnTpysnJ0cdO3YM+DrZ2dnKycnx+gIAAACAZHHppdK771LTnQ4S2rz85ptv1qmnnqo2bdpo/fr1Gjt2rGrVqqXzzz9fubm5GjZsmG688UY1adJE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yTjVESK3fr10111m/aCDpF69pFWr7ONlZVJ2dkKKlrIChe7cXGnYsPiWJRhn6H7//cB9oa0a7kAP3P73v8heM1YI3QgXHxUAAJAQv/7qvj9QDThSk7P5eN++0kcfeR+npju6nnsuOvfZsqX693A+QNtvP7tJfDg13b/9Jl17beivGY9+7YRuhIuPCgAASAjnyMZOvlMhIbX5hiDfWm1Cd/hiPR/1889LzZpJ99xTvfs4m3oXFZmRxiWpQQPv84LVdC9bFt5rxjN0M083QkXoBgAAcffLL9Jll7kfe/DB+JYFseUbgoYM8d4mdCcf63dz7Njq3cf5sz33XHs6r0aNvM8LVtNdv777vZcscd9PTTeSER8VAAAQd0cdlegSIF58Q9C2bd7bhO7APB73EBnrmu5o3T/Ugd18a7qXLjVzb3/+uV077uuAA9z3x2M0/EB904FA+KgAAIC4C9SfG+mnqppHQndgAwaY5vi+wTOcUBwotMZDoNDtO26Db033wIHSl19Kxx8v/fCD+z2ys/2bqUvUdCM58VEBAABJZ8aMRJcA0ULojtzHH5vv3957R36P6obu+fMjvzbQz/bYY723fWu6CwvtY851STrrLOmRR8z6d9/535vQjWTERwUAACSdPn38myEjNS1eHPw4odsMOLZ5c+DjvtPo+dZ0v/pq4Frl6s7d3b174NrmqgR67datvbd9a7qdYda3ufjkydL115v1du387x2P5uWEboSLjwoAAEioxYul/ff3379xY/zLgugbPDj48SeeqNnBu7RUqltXat7cu9tFsCbkvsfOOsuuLfZV3dAt+U/zFqpI+3QHC91OVlh3inVN9+efSyNGmHVCN0KV0I/Kk08+qcMOO0w5OTnKyclRQUGBPv7448rju3fv1siRI9W0aVM1bNhQgwYN0kaf/4HXrl2rAQMGqH79+mrevLluueUWlbnNNwAAAJLSYYdJq1b57y8qin9ZEH9PP12zR6yfPdte//RTez3UGtvcXDu0ujVDj0bozs8PfnzJEumaa6Q1ayJ77XBquqsS69B9/PH2OqEboUroR2XffffVAw88oIULF2rBggXq3bu3Tj/9dC1dulSSdMMNN+jDDz/U5MmTNWvWLK1fv15nnnlm5fXl5eUaMGCASkpKNGfOHL3wwguaNGmSxowZk6i3BAAAQtCkiVkG+2M+GmEBqeG99xJdgsRxNh131mAHC4/O8/7v/+z1k0/2Pzcav0e+zdt9HX+89Pjj0o03eu+fPj20+/vWdDvnv3aG7rvuqvpe8ejTbSF0I1QJ/aiceuqpOvnkk3XAAQfowAMP1N///nc1bNhQ8+bNU1FRkZ577jk9/PDD6t27t7p27aqJEydqzpw5mjdvniRp2rRpWrZsmV5++WV17txZ/fv317333qsJEyaohP+pAQBIWj16mOW4cYHPqclNjtNJbm7V5yxYYM/hXNM4P+fOP1+DNdx0hm5n0G3Y0P/caPxJXNXv4u+/m+V773mH3gULzPLII4NfH0pN98iRoc0bHo8+3RbnwwEgmKR5PlNeXq7XX39dO3bsUEFBgRYuXKjS0lL16dOn8pwOHTqodevWmjt3riRp7ty5OvTQQ5WXl1d5Tr9+/VRcXFxZWw4AAJKP9Yd5rVr2vosu8j6H0J0ejj46tPPcamlrgj177PU2bez1UHpL1qvnHfysAcacRo+OuGiVAv0ulpVJ//qX974//jBL5/vKyZGaNg18f+vfgd9+Mw8U3EJ348ahlZWabiSjhH9UlixZooYNGyo7O1tXXHGF3n33XXXs2FGFhYWqU6eOGvv8huXl5anwr7kDCgsLvQK3ddw6FsiePXtUXFzs9QUAAOLHLXTfe6/3OYTu9FBV02RLPGsok8nZZ9vrzu+Bb3h01m4HGmTtgAP890WjBUGg38Xnn5duvtl7386dZmnVfktmPu1gAdU5b3dxsff7C3ekcEI3klHCPyoHHXSQFi1apK+//lpXXnmlhg4dqmXLlsX0NceNG6fc3NzKr1atWsX09QAAgDe30O3bDJnQnR7cQveRR0onnhj/siSL3bul11+Xpkzx3u/8zPt+35zHrFDq1rz5H/+oXtms0BzotZ2WLPHfZ80L7gzdFRVmhPZAune3131DsxW6nf9WBEPoRjJK+EelTp06at++vbp27apx48bp8MMP16OPPqr8/HyVlJRom88knRs3blT+X6Ou5Ofn+41mbm3nBxmZZdSoUSoqKqr8WrduXXTfFAAACMr6I945zZFv81FCd3rwDY8HHCB9803ozYXT0dix0vnnS6ee6r3f+Zn37Sm5a5e9Hix0Bwu3objtNv99Tz3lfq7bNGVWrbWzIWlpqRmlvl496cUX/a9xTv1VVhZeTbfVLcEK7vFsMUHoRqiS7qNSUVGhPXv2qGvXrsrKytKMGTMqj61YsUJr165VQUGBJKmgoEBLlizRpk2bKs+ZPn26cnJy1LFjx4CvkZ2dXTlNmfUFAADixxrcqU6dwOcQutODNZiW5eCDTVisVy8x5UkGr7zivr+0VHruOfP14Yfex5x9pIP529+qV7Znn/Xf55yK7L77pIICU6PtFrqtPt3O0F1WJvXvL/35p//YDZL3wwPfgd+smutAAffDD6Vt26ROnbzPjwdCN0LlMqV8/IwaNUr9+/dX69at9eeff+rVV1/V559/rqlTpyo3N1fDhg3TjTfeqCZNmignJ0fXXHONCgoK1LNnT0lS37591bFjR1100UV68MEHVVhYqNGjR2vkyJHKzs5O5FsDAABBWAEi2H/XoYTu+fOlSy+VHnpIOumk6JQN0fPLL/b6mDHS6tXSP/9ptgOF7l9/NSGsRQvp/fdNDeY++8S+rPH022/u+zdtch8MTQq9efmRR0qffy4dd1xkZXPrDuB8HWuKsv/8xz109+sn/e9/0pw59r7Wrc0ylCbizz3nvV1VTXdmpumaYt07nqGb0csRqoSG7k2bNmnIkCHasGGDcnNzddhhh2nq1Kk68a9OPo888ogyMzM1aNAg7dmzR/369dMTTzxReX2tWrU0ZcoUXXnllSooKFCDBg00dOhQ3XPPPYl6SwAAIATRquk+5xzp559NLVqgwaWQOH/+aa937Srdfbe97dYMevduqWNHc92TT0pXXmmaoVu1p+luxYrAx0IN3ZJ07LGRl+Gii6SXXvLe53x4Ypk927RacPN//2cemFgeeij013/nHWnzZns71IHUEhG6a+rgfwhfQkP3c76PsnzUrVtXEyZM0IQJEwKe06ZNG3300UfRLhoAAIihaNV0+wz9giTjDEDNm3sfq1/f//w1a+ygfscdZun2M/Z4zEBdzmbP6eDJJwMfc/t9CFbTeued0t//Hn4Z2rY1yxYtpIEDTZk2bpS+/lrq0cM+7623pKOOcr+HxyN17iwtWmRaNITzc/rf/7y3Qx1IbcsWs/z229BfKxK1a9vTuUVjDnTUDPREAAAAcWf9sVrd0E2fyuTmDN1/9Q6stO++/uf//LO9Hqx2OzNTatYsOtNhpQq3mu5grrkmtPM9HtNNw3rYYfXFPucc6fLL7fMee8z/2q++MsvcXO+HKh98YJq5Syb8V0dVfbotb79tls4a9lhwzp/OuBMIFf9VAQCAuHrvPbtPKwOppTcrMFl9ep3cgqA1EnWoUrUff8uWoZ135plSXp5ZD6d5ueT9u+UMir7eftv0mz/6aLP96KNm+dRT7q0R3Dz9tPdc25I9IJvPRENhc5vpIFFmzvTepqYboSJ0AwCAuHn1VemMM+ztSGu6ly83QW7r1uiVDdHnNh+7Zf786L5GKnEbrMzN9u12eA63eblzGq5g36OXXzbLxYu99+fkeIdujydwyGzeXOrWzf1Ydfs9J1PofvNN720eDCJUhG4AABAXHo80eLD3vmBhINgftFddJa1bF51yIXasGla30N20aXRe45lnonOfeNq5M7Tzpk0zU3NJ7vN0B+M793Ugvg+++vQxy7vukho0sPeXl5vR1d3Uqyc9+KD3Pqsf98CBVZc1mFBD97/+Vb3XCYXvAwRCN0JF6AYAAHHh9od/ixaBz//uO+mEE7ynHrLQrDM1BKvpDoczZPoGzhkzqnfvaFm71nu09kDKy0Ov6e7SxW7N4Rz5PZTm5c7vebDQ7dvFwwq39et713RnZgaeK7x+ff8m89bAZqHOx96mjfv+Tz/1LlcgffuapfNBQbT5/tzWr4/dayG9ELoBAEBcuP3hn5PjvX3jjfb6u+9Kn30m9erlfx3z46aGYKE7nGbHzimrfK9Lhubla9ea0Gj1vw7Gt++zJN10kzRypPTDD97hc/Roe93t4UI0mpf7hm7nz8x5rH37wA8L6tcP3HIh1Adk//2v+37rNb/5Jvj11mcsWJeV6vJ9gLB8eexeC+mF0A0AAOIilHD00EPSgAHux779VsrPlz76iFHLU8WGDWbpFrqDDaLnyzkSt2+T3mQI3V9+aZbOJuCBWM2369QxIfv996V//EN6/HHpoIOk/fe3z/UNubNnm2UozcudvyPBgq/z5+Dx+D8oue46s/z888BNuOvVC1yj7TtqfSCBarotVk12INb7jeXc2c7R9SXprLNi91pIL/yXBQAA4iJYE1eLNRWUm65dzUjIAwYQulPFhReapVvt7i23SB06hHafKVPsdd/PUTKEbudDBd95osvKTI10RoZpKr5ggdlfUmJC9mmneV/vXPcdnd0K7KE0L3d6443Ax5w1w7t3+4du6/iXX0oTJ7rfw2qGvmWLd4gPFsYD3SMQtxYvTlZ5Y/V52LXLf4q6ZBjcDamB/7IAAEBchBK6pdAGJwqlpg/R9d13Zrq3UDl/jmvW+B/fe+/Imuf6fj5iWbMZKmdT7uef9z7mbBZ95ZVV38sZpOvVk44/3t7evdv7sx9q6L7hhsDHnGX/88/AodtXo0b2uhWYmzaVDjzQ3p+bG1r5pKofpFV13CpvrD4P//tfbO6LmoHQDQAA4sI3dDv/OA92nhu3AYwI4rHVpYuZ7u3000MbfTuUptahOvFEs/zpJ//gnww13U6+4dDZtPurr6q+ftEie71OHemCC7yPP/FEZJ/1QE3MnQ8xduwILXR36SI98IB3OS3Omu1wQndVqhqMz/q+x+LzsH27dNll/vv794/+ayE9EboBAEBcWGG6Th1p1SppyRL386oa2fmAA+yRkd3uj9j64ANp3Liqz7OmuoqG0lIzXdX++0uXXup9LBlCtzO4+jY5dn4fQhnt2jktV2amdMgh3sevvjr85uWS9Mcf7q/14Yf29m23hRa6s7OlU0+1t31r5y3RDN2JrOn+v/+Tvv/e3v7lF9PlwXcKRCAQQjcAAIgL55zN++8feCAt3xrSI47w3l650n3qIkJ3/Hz9ddXzpIc6F3Uoysq8R/J2Sobm5c7psnxDarg1/v36eW/37Cm99JL7ueGEbrffmYMO8m76P3lyaKG7Th2pVSsTRNeu9T7m7JudLjXd//63vb7vvlLr1mZsCWZRQKgI3QAAIC6sP4adfUjd+IaU776Tzj3X/ZwuXex9ofQFR3RMn26CR7Dmtc7Qbc21HKnSUv+Roy2JqOn2eAL3rfZt+h1obutA3nhDmjTJe87vCy/0HnRu9erw7im5Ny/fts1/n1Uzb8137fZwzPod7tTJhG8nZ013oNYsofCt2U50n27Lr7/G9v5IT4RuAAAQF1ZNdFWhe++9/fe9+ab7ubfdZq9//XVk5ULkPvkk8DErdLdtK51wQvVeZ+1aE/TdxDt0ezzS0UdLxxxjB2xn0PMtT1XdJXzl5kpDh0oNG3rvt6Ylk6RRo8wynJrWrVu9twP1Cy8uNsucHLOsW9f/nGC/w877hjpHtxvfZvqh1nT7PhABkgGhGwAAxEWooXv8eDM10rXXVn1P5wjKVc3ji/iy+hBHY1ola75vN/FuXr5pk5kv+6uv7LEFnEH7oYdMGLYGRPMdzdzSvn14r+t8GLXPPmZZVej+4AN73RnaJfdA3LatHbqt3y23n1+w32FnS5XWrYOXz9d995ll587e85VLodd0S9H/TIQ67RkQCKEbAADExWOPmeXmzcHP23dfU6vpO2qzG9+5fZNhUC0Y111nlitXxvZ14j1nu7MbgxVc3UKeNRbBnDn+x448Upo5M/zX7tnTLPPzQzv/1FOlJk3cr3EL3U2b2s3arZput2AfrNbZWbN/662hldNy553me/ntt/7N2sOZUiza/w44f75VzScOuCF0AwCAuHj66fDODzQ/sFNenve2c4RhxN/MmdKNN5p+zD/+GPl9jj029HOrajkRbc6+6tu3m2nM7rwztGuPOMI0154xwzxcCtfhh5ul1e86lOblVp/yDz+U/vtfM1DbunXufc0XLrTXrdDdrp3/ecG+587Qfd55VZfPV0aG+Qq3hUSsaro9Hu/vVSj/LgG+CN0AACAphfLHrW9wCXfQKlSPb//73r2lRx4xwfKYY8y+Aw4I/77hBK6q+vpGmzN0b9pk5pufPz+0a7/5xjRJtwJtuKxaVqsMoYRuK6C/8YZ0yinStGnSDTdU/bti9eW2atedQg3d1RndO9DsBoHEqqbbd1YEQjciQegGAABJqXHjqs+xRli2bN8ek6IggC1bpKeecj/WvLlZXn99+Pc96KDQz4136HbOu33MMeEFvNq1/T+z4bD6FoczHdt++5lljx72vo0bvZuXT57sf50zMI8f730sWFPvcAeOC2T2bHvdbXBFX87PQTRDt28zfEI3IkHoBgAASalp06rP8a1Jo093/F15pfv+t94yS7fRr6vyf/8nDR5sjwOQLBYu9J9HO5iffrLXb7ih+q9v1XRb/a5DqUm+9FKzPPhge19+vl3TvddeUteuwe/h21zb+eDB1yWXmOVRR1VdtlDdeGPV5zgfBESzeblvi4Bwa+ABidANAADiwPlH8LffhnZNJH/c+jYFRXT4TjcVjrVrw78mL096+WXTXN3JbUR752fr8celf/wj/NcLVa9ewQOnL+cDiauuqv7rW4OhWSOjhxK6rab6kybZ+/bZx67BrVPHf3Ru39YDBQXe28GmArvpJmnqVNN/PFqcZQ8kXjXdhG5EgtANAABiztnkNJI+vm6soLBmjb2P0B0bvqNQn3GG9/b330uLF7tfe+654b2Wsxm077Raw4fbg4lZrNBdViZdc410++3Szz+H95qhCnfMgGnT7HVrFPHq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9y+/2OtjxtjryTK6d7ByBKvp9hVsmjQAAJA4CQ3dO3bs0OGHH64JEya4Hn/wwQc1fvx4PfXUU/r666/VoEED9evXT7sdj/4HDx6spUuXavr06ZoyZYq++OILjRgxIl5vAQCQAJdfbq87/wtZtUr67jvplVfsfW4jmEvS8uWxKVu4AvXblqR99gl87LDDvLenTo1OeQAAQHQlNHT3799f9913n8444wy/Yx6PR//+9781evRonX766TrssMP04osvav369ZU14suXL9cnn3yiZ599Vj169NBRRx2lxx57TK+//rrWr18f53cDANHBQGpV27DBXh8wwF5v1Urq3Nl8Wazm5L4OPzwWJQtfsNDdvbv01FPSp59KF15o9ll9ta+7ziwPPji25QMAANWTtKOXr1mzRoWFherTp0/lvtzcXPXo0UNz586VJM2dO1eNGzfWkY65Vvr06aPMzEx9/fXXcS8zACD2Skvt9b/+O/DTsaO9/s477uckOqxaDwtuuCH4eZdfLp1wgvT449Lf/y59+aXZf8klplZ//vzYlhMAAFRP0g6kVlhYKEnKy8vz2p+Xl1d5rLCwUM195kypXbu2mjRpUnmOmz179mjPnj2V28XW/DEAgKRnzbMtSV27hnaNx+M9KFnLlu5zeMfT5MnS4sWmNjsUubnSHXfY2xkZdo3+3/5m93GX7BHaAQBA4iVtTXcsjRs3Trm5uZVfrVq1SnSRAKASA6kFdu653vNyB2uafddd9vq0ad59uFeulGon+LFzvXpSz55mzu3qOuEE7+0OHap/TwAAEB1JG7rz8/MlSRs3bvTav3Hjxspj+fn52uQzUWlZWZm2bt1aeY6bUaNGqaioqPJr3bp1US49ACDaioqkN98M/fzbb7fXTzrJrhXPy5Pq149u2RLN+SBCCjzvNwAAiL+kDd3t2rVTfn6+ZsyYUbmvuLhYX3/9tQoKCiRJBQUF2rZtmxYuXFh5zmeffaaKigr16NEj4L2zs7OVk5Pj9QUAySLdB1KbN880737lFem556S77w7tutWrvbdPOSX4+dnZ7uHa51luWvAN3dGoPQcAANGR0MZ127dv16pVqyq316xZo0WLFqlJkyZq3bq1rr/+et1333064IAD1K5dO/3f//2fWrZsqYEDB0qSDj74YJ100kkaPny4nnrqKZWWlurqq6/Weeedp5YtWybo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xowZoxYtWqhevXrq06ePVq5c6XXO1q1bNXjwYOXk5Khx48YaNmyYtm/f7nXO//73Px199NGqW7euWrVqpQcffDDWb61GGzdunLp166ZGjRqpefPmGjhwoFasWOF1zu7duzVy5Eg1bdpUDRs21KBBg7Rx40avc9auXasBAwaofv36at68uW655RaVlZV5nfP555+rS5cuys7OVvv27TVp0qRYv70a7cknn9Rhhx2mnJwc5eTkqKCgQB9//HHlcX6u6eGBBx5QRkaGrr/++sp9/GxT01133aWMjAyvrw4dOlQe5+ea2n777TddeOGFatq0qerVq6dDDz1UCxYsqDzO31Gpp23btn6/sxkZGRo5cqQkfmf9eJBwr7/+uqdOnTqe559/3rN06VLP8OHDPY0bN/Zs3Lgx0UXDXz766CPPnXfe6XnnnXc8kjzvvvuu1/EHHnjAk5ub63nvvfc8ixcv9px22mmedu3aeXbt2lV5zkknneQ5/PDDPfPmzfN8+eWXnvbt23vOP//8yuNFRUWevLw8z+DBgz3ff/+957XXXvPUq1fP8/TTT8frbdY4/fr180ycONHz/fffexYtWuQ5+eSTPa1bt/Zs37698pwrrrjC06pVK8+MGTM8CxYs8PTs2dPzt7/9rfJ4WVmZ55BDDvH06dPH891333k++ugjz9577+0ZNWpU5Tk//fSTp379+p4bb7zRs2zZMs9jjz3mqVWrlueTTz6J6/utST744APPf//7X8+PP/7oWbFiheeOO+7wZGVleb7//nuPx8PPNR188803nrZt23oOO+wwz3XXXVe5n59taho7dqynU6dOng0bNlR+bd68ufI4P9fUtXXrVk+bNm08F198sefrr7/2/PTTT56pU6d6Vq1aVXkOf0elnk2bNnn9vk6fPt0jyTNz5kyPx8PvrC9CdxLo3r27Z+TIkZXb5eXlnpYtW3rGjRuXwFIhEN/QXVFR4cnPz/c89NBDlfu2bdvmyc7O9rz22msej8fjWbZsmUeSZ/78+ZXnfPzxx56MjAzPb7/95vF4PJ4nnnjCs9dee3n27NlTec5tt93mOeigg2L8jmDZtGmTR5Jn1qxZHo/H/ByzsrI8kydPrjxn+fLlHkmeuXPnejwe80AmMzPTU1hYWHnOk08+6cnJyan8Wd56662eTp06eb3Wueee6+nX7//Zu+4wKYq0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xWjYsCFat25tpYvFYrj44ouxaNEi3HLLLejWrRvWrl2Lf/zjH/j1118xffp0AMArr7yCOXPmYOzYsViyZAlSUlLw73//G9999x3ee+89oVp3eXk5li9fjttvv136G1lzR3YcidC9e3dkZWVh8eLFwjGroKCgoJAgaAoKCgoKCgnAxIkTNQDa7NmztcOHD2u7d+/Wpk6dquXk5GgZGRna7t27rbTnnHOOdvLJJ2slJSXWvVgspg0aNEjr1KmTdW/u3LkaAG3u3LnWvaKiIlfZzz33nBYKhbSdO3da9+68806Nt80B0MaPH2/9vvrqq7UmTZpokUjEurd//34tHA5rzzzzjO96s1BUVKR16dJFA6C1bdtWGzdunPb2229rBw8edKXl1X379u0aAK1u3braoUOHHM9k62b20/Dhw7VYLGbdv//++7WUlBQtNzdX0zRNO3DggJaamqpdeumljnKeeuopDYA2duxY696UKVNc/WSibdu2GgBtwYIF1r1Dhw5pGRkZ2oMPPshpLRsAtDvvvNP6bY6Jbt26aaWlpdb9V155RQOgrV27VtM0TSsrK9OaNGmi9erVy5HuP//5jwZAGzJkiHXvvffe08LhsLZw4UJH2W+++aYGQFu8eLF1b+bMmRoA7dlnn9W2bdum1a5d29VGLGzZskUDoP3zn/90PRs7dqxWq1Yt7fDhw9rhw4e1LVu2aC+++KIWCoW0nj17OvrJzzgaP368BkA7fPiw61nnzp21Cy64wLPeCgoKCgrxQ6mXKygoKCgkFMOHD0dOTg5at26NK664ArVq1cKMGTPQqlUrAMCxY8cwZ84cXHnllThx4gSOHDmCI0eO4OjRoxgxYgQ2b94s9HaelZVlXRcWFuLIkSMYNGgQNE3DqlWrAtV5zJgxOHTokEMleurUqYjFYhgzZkzC6r1s2TI8/PDDAHS17JtuugnNmzfH3Xff7VBj9sLll1+OnJwc63eQut1yyy0OKemZZ56JaDSKnTt3AgC+//57RCIR3HHHHY737r77bul6mujevbtlZgAAOTk56NKli0Nt2i9uuOEGhx27mb+Z54oVK3Do0CHcdtttjnTjxo1DvXr1HHlNmTIF3bp1Q9euXa22O3LkCM4++2wAwNy5c6205513Hm699VY888wzuOyyy5CZmYl///vfnvU9evQoAKfUmkRhYSFycnKQk5ODk046CQ899BDOOOMMfP75545+StQ4atCggcOruYKCgoJC8qCYbgUFBQWFhOK1117DrFmzMHXqVFx44YU4cuQIMjIyrOdbtmyBpml44oknLCbD/Bs/fjwA4NChQ9z8d+3ahXHjxqFhw4aoXbs2cnJyLLXwvLy8QHU+//zzUa9ePYdq9SeffIJevXqhc+fOCak3ANSrVw8TJkzAjh07sGPHDrz99tvo0qUL/vWvf+HPf/6zdH3bt2/v+B2kbm3atHH8NpnB48ePA4DFfJ900kmOdA0bNuQyjjzQZZnlmWUFgWz9O3Xq5EiXlpaGDh06OO5t3rwZ69evd7Wd2fd027344oto2LAhVq9ejVdffRVNmjSRrremacz7mZmZmDVrFmbNmoWJEyeiW7duOHTokOOQyUQixpGmaYFU0xUUFBQU/EPZdCsoKCgoJBT9+/e3vJdfeumlGDx4MK655hps2rQJtWvXRiwWAwA89NBDGDFiBDMPmtEzEY1Gce655+LYsWN49NFH0bVrV9SqVQt79+7FuHHjrLz9IiMjA5deeimmTZuG119/HQcPHsTixYvx17/+1UoTT71ZaNu2LW688UaMGjUKHTp0wAcffIBnn31W6l2aEQtSt5SUFGY6HlMYD5JRViLzjMViOPnkk/HSSy8xn5P23wCwatUqixFfu3Ytrr76as8yGjVqBADcg4aUlBQMHz7c+j1ixAh07doVt956q9BRX9BxdPz4cdeBhIKCgoJCcqCYbgUFBQWFpCElJQXPPfcchg0bhn/961947LHHLCljWlqag8mQwdq1a/Hrr7/inXfewfXXX2/dZ3lh9ivFGzNmDN555x18//332LhxIzRNs1TLAcRVbxEaNGiAjh07Ojyk+617MupmOuzasmWLQ7J+9OhRF+NYFSWmZv03b95sqYkDukOz7du349RTT7XudezYEWvWrME555zj+S2FhYW44YYb0L17dwwaNAgTJkzAqFGj0K9fP+F7bdq0QVZWFrZv3y5V/+bNm+P+++/H008/jaVLl+L0008XpmeNIx4ikQh2796Niy++WKouCgoKCgrxQamXKygoKCgkFUOHDkX//v3x8ssvo6SkBE2aNMHQoUPx73//G/v373elp8NWkTClm6Q0U9M0vPLKK660tWrVAgDk5uZK1XP48OFo2LAhPvnkE3zyySfo37+/g9mMp94A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6qqrUFpaCpvNhjVr1sjOM8bw0EMPoaSkBKmpqaipqcGBAwdkaU6ePIlZs2YhKysLOTk5uPXWW3HmzBlZmj179mDMmDFISUlBWVkZlixZYvWldWgWL16M4cOHIzMzE4WFhZg2bRrq6upkac6fP4/a2lrk5+cjIyMDM2bMwLFjx2RpDh8+jKlTpyItLQ2FhYW477770NraKkuzadMmXHzxxfB4POjZsydWrlxp9eV1aJYtW4ZBgwYhKysLWVlZqK6uxltvveU/T+2aHDz++OOw2Wy4++67/ceobROTn/3sZ7DZbLJPnz59/OepXRObr776CjfeeCPy8/ORmpqKgQMHYseOHf7zNI9KPLp16xb0ztpsNtTW1gKgdzYIRsScVatWMbfbzV544QW2b98+9oMf/IDl5OSwY8eOxbpqhJc333yT/fjHP2avvfYaA8BWr14tO//444+z7OxstmbNGvbhhx+yq6++mlVUVLBz587500yePJlVVlayrVu3svfff5/17NmTXX/99f7zp0+fZkVFRWzWrFls79697JVXXmGpqansV7/6VbQus8MxadIktmLFCrZ37162e/dudsUVV7CuXbuyM2fO+NPMmzePlZWVsQ0bNrAdO3awkSNHslGjRvnPt7a2sgEDBrCamhq2a9cu9uabb7KCggK2cOFCf5qDBw+ytLQ0ds8997D9+/ezZ599ljkcDrZ27dqoXm9H4vXXX2d///vf2SeffMLq6urYgw8+yFwuF9u7dy9jjNo1Gdi+fTvr1q0bGzRoELvrrrv8x6ltE5NFixax/v37s6NHj/o/J06c8J+ndk1cTp48ycrLy9ncuXPZtm3b2MGDB9m6devYp59+6k9D86jE4/jx47L3df369QwA27hxI2OM3lklJHTHASNGjGC1tbX+/9va2lhpaSlbvHhxDGtFqKEUutvb21lxcTF78skn/cdOnTrFPB4Pe+WVVxhjjO3fv58BYP/617/8ad566y1ms9nYV199xRhj7Je//CXLzc1lFy5c8Kd54IEHWO/evS2+IsLH8ePHGQC2efNmxpjUji6Xi7366qv+NB9//DEDwLZs2cIYkxZk7HY7q6+v96dZtmwZy8rK8rfl/fffz/r37y8ra+bMmWzSpElWXxLBkZuby377299SuyYBjY2NrFevXmz9+vVs3LhxfqGb2jZxWbRoEausrBSe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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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", + "ax1.plot(df['Close'], label='Close Price', color='blue')\n", + "ax1.set_title('Stock Price')\n", + "ax1.set_ylabel('Price')\n", + "ax1.legend()\n", + "\n", + "# rsi graph\n", + "ax2.plot(df['RSI'], label='RSI', color='orange')\n", + "ax2.axhline(70, color='red', linestyle='--') # Overbought line\n", + "ax2.axhline(30, color='green', linestyle='--') # Oversold line\n", + "ax2.set_title('Relative Strength Index (RSI)')\n", + "ax2.set_ylabel('RSI')\n", + "ax2.legend()\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolumeSMA_10SMA_50RSI
6221.70097922.03121221.70097921.81420114674821.021.63304621.56747140.418486
6321.81420123.11626121.85666122.17745815454878.021.59200221.66295545.076147
6422.31426622.40862122.03121222.21048021249133.021.59483321.75494851.133774
6521.70097922.92755521.70097922.80961640137428.021.71560421.84665957.684634
6623.12097723.87107722.51712423.53140853712115.021.96752321.94893659.348024
\n", + "
" + ], + "text/plain": [ + " Open High Low Close Volume SMA_10 \\\n", + "62 21.700979 22.031212 21.700979 21.814201 14674821.0 21.633046 \n", + "63 21.814201 23.116261 21.856661 22.177458 15454878.0 21.592002 \n", + "64 22.314266 22.408621 22.031212 22.210480 21249133.0 21.594833 \n", + "65 21.700979 22.927555 21.700979 22.809616 40137428.0 21.715604 \n", + "66 23.120977 23.871077 22.517124 23.531408 53712115.0 21.967523 \n", + "\n", + " SMA_50 RSI \n", + "62 21.567471 40.418486 \n", + "63 21.662955 45.076147 \n", + "64 21.754948 51.133774 \n", + "65 21.846659 57.684634 \n", + "66 21.948936 59.348024 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Correlations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "corr = df.corr()\n", + "corr" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "plt.figure(figsize=(10,8))\n", + "sns.heatmap(corr, annot=True, linewidths=0.5)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 17, + "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": 18, + "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": 19, + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "997ZEgibCZIO", + "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76" + }, + "outputs": [], + "source": [ + "X_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bmtt76RuCeyG", + "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1" + }, + "outputs": [], + "source": [ + "X_test.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CeJkUJ92Ciqd", + "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917" + }, + "outputs": [], + "source": [ + "y_train.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7HGC7VuTCjWc", + "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75" + }, + "outputs": [], + "source": [ + "y_test.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c6Ek8jRlO2_I" + }, + "source": [ + "## 1. LINEAR REGRESSION" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "id": "RdZ1SpzdMHAJ" + }, + "outputs": [], + "source": [ + "# Create a linear regression model\n", + "model1 = LinearRegression()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mPM035IzMY04", + "outputId": "07379dba-cfe8-4814-b972-d08b12f224ac" + }, + "outputs": [], + "source": [ + "y_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "qBhQ9HbYMI3d", + "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470" + }, + "outputs": [], + "source": [ + "# Train the model\n", + "model1.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "id": "X269co2kMS4z" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred1 = model1.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dEi49xtEOtne", + "outputId": "0000b074-3187-41de-fbac-4ae75cbda6bd" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "22SaCsQmfhgP", + "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "656J5oz5fzq6", + "outputId": "ce67d2d8-0bc8-4e6d-d6b5-6b78e7e1c59b" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "fF002Yepgk55", + "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8pPzsCY1g305", + "outputId": "72c4ea56-2610-41c6-f286-4c8289d3f0ac" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "id": "2gpbDxshhexj", + "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qpnLeFyZhwB3", + "outputId": "4dcac062-ec60-4b2c-ab4b-dcda1b0f2341" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "id": "RAIwxIp5iH9Z", + "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7IkE-RAmiWNo", + "outputId": "cf4c1d84-412b-4a18-f70c-65ce637772ea" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "P0oB5wjQivBr", + "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BsajWJGBjC80", + "outputId": "1af1194f-9a33-40af-8578-c99832509c1b" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "6mQEQf-ykc9F", + "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AnZXMYb8kooV", + "outputId": "273fa9ed-d6f2-4c4d-fb0e-a643f5ef5732" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 74 + }, + "id": "9fn64o-ZlBka", + "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IPoDRkcMlMAr", + "outputId": "9892f42f-e65f-46c0-eeed-77ce32f6a7eb" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FX5DTKqslxWf", + "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8" + }, + "outputs": [], + "source": [ + "# Train the model\n", + "model9.fit(X_train_scaled, y_train, epochs=100, batch_size=32, verbose=0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "OVW2qpNsmGVq", + "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5zuwkC1emmh3", + "outputId": "5d6a0e05-3112-4d27-f5fb-ed665867b22d" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0vHjcluaoxzP", + "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933" + }, + "outputs": [], + "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": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gEE06_TjozYv", + "outputId": "30306af7-2ec8-4733-db96-d3416a7fc6d4" + }, + "outputs": [], + "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": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "i_6-UUDhpi0c", + "outputId": "3dcc5761-03b6-4b52-dfe6-08dece835c8d" + }, + "outputs": [], + "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", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "qpWPtph9CGip", + "outputId": "c099cb8d-96af-4223-f499-743040aecdf1" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "RFaaCNH6Cfoa", + "outputId": "67a8f358-e3ce-4ad2-9c78-ebc75902beb4" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "nrZu-K-KDCJ2", + "outputId": "69165581-da05-4554-a464-a606eb87a734" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "_c4Pe76fDNM-", + "outputId": "0e3d2f74-9042-4e2d-92c6-5ce61e967bd4" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "ZDPV0M5rDTi6", + "outputId": "9db63164-3f42-47be-d302-d80d381d9b91" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "39LBleNeDeuw", + "outputId": "3c6c40bc-f1da-44fb-da14-25ec6d6cf278" + }, + "outputs": [], + "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" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "13cZXvb0DsvK" + }, + "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.12.1" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/Stock_Price_Prediction.ipynb b/Stock_Price_Prediction.ipynb index 803055c..19803fe 100644 --- a/Stock_Price_Prediction.ipynb +++ b/Stock_Price_Prediction.ipynb @@ -1,6596 +1,7142 @@ { - "cells": [ - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 1, -======= - "execution_count": 2, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "qCDSjVhXLr_Z" - }, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", -<<<<<<< HEAD - "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" -======= - "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" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 22, -======= - "execution_count": 9, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "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" + ] }, - "id": "SOQbXSiB-g5G", - "outputId": "6ae02a27-02b0-4bd9-a1ae-a7029056f32e" - }, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ -<<<<<<< HEAD - "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" -======= - "Running in local system\n" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - } - ], - "source": [ -<<<<<<< HEAD - "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')" -======= - "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", - "\n", - "else :\n", - " print(\"Running in local system\")\n", - " path=r\"C:\\Users\\SHRISTI\\OneDrive\\Desktop\\GitHub\\Stock-Price-Prediction\"\n", - " df=pd.read_csv(r\"C:\\Users\\SHRISTI\\OneDrive\\Desktop\\GitHub\\Stock-Price-Prediction\\Data\\SBIN.csv\")\n" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 23, -======= - "execution_count": 11, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 206 + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SOQbXSiB-g5G", + "outputId": "55ee6ec8-9146-4ebf-c2fe-b4b06bc3a5c4" + }, + "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')" + ] }, - "id": "Sc4id6VxL8BS", - "outputId": "568d039c-faf4-4636-bfc1-70b9ef83367b" - }, - "outputs": [ { - "data": { - "text/html": [ -<<<<<<< HEAD - "\n", - "
\n", - "
\n", -======= - "
\n", ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DateOpenHighLowCloseAdj CloseVolume
001-01-199618.69114718.97892218.54018418.82324012.40993143733533.0
102-01-199618.89400518.96476717.73819218.22410612.01493156167280.0
203-01-199618.32789218.56848917.64383917.73819211.69457768296318.0
304-01-199617.50231217.83254217.22397217.67686311.65414286073880.0
405-01-199617.73819217.78536617.45985217.57779311.58882776613039.0
\n", -<<<<<<< HEAD - "
\n", - "
\n", - "\n", - "
\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "
\n", - "\n", - "\n", - "
\n", - " \n", - "\n", - "\n", - "\n", - " \n", - "
\n", - "\n", - "
\n", - "
\n" -======= - "
" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "Sc4id6VxL8BS", + "outputId": "78207ea2-5b80-47a2-a1b1-0548765b6455" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateOpenHighLowCloseAdj CloseVolume
001-01-199618.69114718.97892218.54018418.82324012.40993143733533.0
102-01-199618.89400518.96476717.73819218.22410612.01493156167280.0
203-01-199618.32789218.56848917.64383917.73819211.69457768296318.0
304-01-199617.50231217.83254217.22397217.67686311.65414286073880.0
405-01-199617.73819217.78536617.45985217.57779311.58882776613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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": 6, + "metadata": {}, + "output_type": "execute_result" + } ], - "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 " + "source": [ + "# Load the dataset\n", + "#df = pd.read_csv('/content/SBIN.NS.csv')\n", + "df.head()" ] - }, -<<<<<<< HEAD - "execution_count": 23, -======= - "execution_count": 11, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Load the dataset\n", - "#df = pd.read_csv('/content/SBIN.NS.csv')\n", - "df.head()" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 24, -======= - "execution_count": 23, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "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": [ -<<<<<<< HEAD - "\n", - "
\n", - "
\n", -======= - "
\n", ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
OpenHighLowCloseVolume
018.69114718.97892218.54018418.82324043733533.0
118.89400518.96476717.73819218.22410656167280.0
218.32789218.56848917.64383917.73819268296318.0
317.50231217.83254217.22397217.67686386073880.0
417.73819217.78536617.45985217.57779376613039.0
\n", -<<<<<<< HEAD - "
\n", - "
\n", - "\n", - "
\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "
\n", - "\n", - "\n", - "
\n", - " \n", - "\n", - "\n", - "\n", - " \n", - "
\n", - "\n", - "
\n", - "
\n" -======= - "
" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 + "cell_type": "code", + "execution_count": 7, + "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": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 206 + }, + "id": "pqbTBdnBOKJc", + "outputId": "42ed663c-ae0f-43d7-a7bd-18bb37dfef6f" + }, + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolume
018.69114718.97892218.54018418.82324043733533.0
118.89400518.96476717.73819218.22410656167280.0
218.32789218.56848917.64383917.73819268296318.0
317.50231217.83254217.22397217.67686386073880.0
417.73819217.78536617.45985217.57779376613039.0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\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": 8, + "metadata": {}, + "output_type": "execute_result" + } ], - "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" + "source": [ + "df.head()" ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.head()" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 26, -======= - "execution_count": 27, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "dydEPoNeM6eN" - }, - "outputs": [], - "source": [ - "# Handle missing values\n", -<<<<<<< HEAD - "from sklearn.impute import SimpleImputer\n", -======= ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "imputer = SimpleImputer(strategy='mean')\n", - "df = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 27, -======= - "execution_count": 29, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "OQ3cGqgTMBwt" - }, - "outputs": [], - "source": [ - "# Select features and target variable\n", - "X = df[['Open', 'High', 'Low', 'Volume']]\n", - "y = df['Close']" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 28, -======= - "execution_count": 31, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "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", -<<<<<<< HEAD - "execution_count": 10, -======= - "execution_count": 33, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "ugapDyXODtn3" - }, - "outputs": [], - "source": [ - "# Scale the features using Min-Max scaling\n", -<<<<<<< HEAD - "from sklearn.preprocessing import MinMaxScaler\n", -======= ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "scaler = MinMaxScaler()\n", - "X_train_scaled = scaler.fit_transform(X_train)\n", - "X_test_scaled = scaler.transform(X_test)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 29, -======= - "execution_count": 35, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" }, - "id": "997ZEgibCZIO", - "outputId": "2a45a8e3-71b0-47f3-bd66-91bcdc028c76" - }, - "outputs": [ { - "data": { - "text/plain": [ - "(5659, 4)" + "cell_type": "code", + "execution_count": 9, + "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)" ] - }, -<<<<<<< HEAD - "execution_count": 29, -======= - "execution_count": 35, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X_train.shape" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 30, -======= - "execution_count": 37, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" }, - "id": "bmtt76RuCeyG", - "outputId": "658075af-e75d-45b1-f6cf-756e349a32d1" - }, - "outputs": [ { - "data": { - "text/plain": [ - "(1415, 4)" + "cell_type": "code", + "execution_count": 10, + "metadata": { + "id": "OQ3cGqgTMBwt" + }, + "outputs": [], + "source": [ + "# Select features and target variable\n", + "X = df[['Open', 'High', 'Low', 'Volume']]\n", + "y = df['Close']" ] - }, -<<<<<<< HEAD - "execution_count": 30, -======= - "execution_count": 37, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X_test.shape" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 31, -======= - "execution_count": 39, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" }, - "id": "CeJkUJ92Ciqd", - "outputId": "93dec527-ea2e-42e6-c70b-a9491c71d917" - }, - "outputs": [ { - "data": { - "text/plain": [ - "(5659,)" + "cell_type": "code", + "execution_count": 11, + "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)" ] - }, -<<<<<<< HEAD - "execution_count": 31, -======= - "execution_count": 39, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "y_train.shape" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 32, -======= - "execution_count": 41, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" }, - "id": "7HGC7VuTCjWc", - "outputId": "64dc2569-b4b4-4c2e-d416-1cf77c41ac75" - }, - "outputs": [ { - "data": { - "text/plain": [ - "(1415,)" + "cell_type": "code", + "execution_count": 12, + "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)" ] - }, -<<<<<<< HEAD - "execution_count": 32, -======= - "execution_count": 41, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "y_test.shape" - ] - }, - { -<<<<<<< HEAD -======= - "cell_type": "code", - "execution_count": 43, - "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": 45, - "metadata": {}, - "outputs": [], - "source": [ - "metrics = {\n", - " \"Model\": [],\n", - " \"RMSE\": [],\n", - " \"MAE\": [],\n", - " \"MAPE\": []\n", - "}" - ] - }, - { ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "cell_type": "markdown", - "metadata": { - "id": "c6Ek8jRlO2_I" - }, - "source": [ - "## 1. LINEAR REGRESSION" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 33, -======= - "execution_count": 48, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "RdZ1SpzdMHAJ" - }, - "outputs": [], - "source": [ - "# Create a linear regression model\n", - "model1 = LinearRegression()" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 34, -======= - "execution_count": 50, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "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" + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "997ZEgibCZIO", + "outputId": "879af72c-3e7c-4b8c-ba28-452fa8ba3cd6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5659, 4)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train.shape" ] - }, -<<<<<<< HEAD - "execution_count": 34, -======= - "execution_count": 50, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "y_train.head()" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 35, -======= - "execution_count": 52, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 74 }, - "id": "qBhQ9HbYMI3d", - "outputId": "52e0655f-1d23-47b7-decc-7a7ca35c0470" - }, - "outputs": [ { - "data": { - "text/html": [ -<<<<<<< HEAD - "
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.
" -======= - "
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.
" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bmtt76RuCeyG", + "outputId": "855f34ec-4914-4e1f-c9b1-6f8753612100" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1415, 4)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - "LinearRegression()" + "source": [ + "X_test.shape" ] - }, -<<<<<<< HEAD - "execution_count": 35, -======= - "execution_count": 52, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Train the model\n", - "model1.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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": [ { - "name": "stdout", - "output_type": "stream", - "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)" -======= - "execution_count": null, - "metadata": {}, - "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)" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "GxtMzlg-gR2P" - }, - "source": [ - "## 2. SVR" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 39, - "metadata": { - "id": "o7K9r7EXWRjQ" - }, - "outputs": [], - "source": [ - "from sklearn.svm import SVR" - ] - }, - { - "cell_type": "code", - "execution_count": 40, -======= - "execution_count": 56, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "0xQewd7QWTtq" - }, - "outputs": [], - "source": [ - "# Create an SVR model\n", - "model2 = SVR()" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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, -======= - "execution_count": 58, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 74 + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "CeJkUJ92Ciqd", + "outputId": "21c5949c-e787-40df-b816-7cc9e830e401" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5659,)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train.shape" + ] }, - "id": "22SaCsQmfhgP", - "outputId": "2121e992-399d-4b78-e42c-fc20b9d52189" - }, - "outputs": [ { - "data": { - "text/html": [ -<<<<<<< HEAD - "
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.
" -======= - "
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.
" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7HGC7VuTCjWc", + "outputId": "cbda22d6-bec9-45d7-80ac-c74ad14b7c0d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1415,)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - "SVR()" + "source": [ + "y_test.shape" ] - }, -<<<<<<< HEAD - "execution_count": 42, -======= - "execution_count": 58, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Train the model\n", - "model2.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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": [ { - "name": "stdout", - "output_type": "stream", - "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)" -======= - "execution_count": null, - "metadata": {}, - "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)" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "hcIfVMWdgcKt" - }, - "source": [ - "## 3. Random Forest" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 46, -======= - "execution_count": 62, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "f7raXT_hf2ij" - }, - "outputs": [], - "source": [ -<<<<<<< HEAD - "from sklearn.ensemble import RandomForestRegressor\n", - "# Create a Random Forest model\n", -======= ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "model3 = RandomForestRegressor()" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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, -======= - "execution_count": 64, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 74 + "cell_type": "markdown", + "metadata": { + "id": "c6Ek8jRlO2_I" + }, + "source": [ + "## 1. LINEAR REGRESSION" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "id": "RdZ1SpzdMHAJ" + }, + "outputs": [], + "source": [ + "# Create a linear regression model\n", + "model1 = LinearRegression()" + ] }, - "id": "fF002Yepgk55", - "outputId": "d148c589-4879-4e2d-8b0f-5b5ca01a2a53" - }, - "outputs": [ { - "data": { - "text/html": [ -<<<<<<< HEAD - "
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.
" -======= - "
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.
" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "id": "mPM035IzMY04", + "outputId": "084d9520-1d31-4287-a9d1-6f9eeea60f9b" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Close
5286257.350006
3408129.464996
5477279.350006
6906588.500000
53021.644367
\n", + "

" + ], + "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": 18, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - "RandomForestRegressor()" + "source": [ + "y_train.head()" ] - }, -<<<<<<< HEAD - "execution_count": 48, -======= - "execution_count": 64, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Train the model\n", - "model3.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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": [ { - "name": "stdout", - "output_type": "stream", - "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)" -======= - "execution_count": null, - "metadata": {}, - "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)" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "mZsLwLivhLGH" - }, - "source": [ - "## 4. Gradient Boosting Models (GBM)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 52, -======= - "execution_count": 69, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "TI8idoxOg6jF" - }, - "outputs": [], - "source": [ -<<<<<<< HEAD - "import xgboost as xgb\n", - "# Create an XGBoost model\n", - "model4 = xgb.XGBRegressor()" -======= - "model4 = GradientBoostingRegressor()" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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, -======= - "execution_count": 71, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 248 + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "qBhQ9HbYMI3d", + "outputId": "daac2bc7-a480-4013-8e06-717bb8c1fa65" + }, + "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": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model1.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "id": "X269co2kMS4z" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred1 = model1.predict(X_test)" + ] }, - "id": "2gpbDxshhexj", - "outputId": "b2b1a681-7ede-4d66-be5d-1a8606d0f470" - }, - "outputs": [ { - "data": { - "text/html": [ -<<<<<<< HEAD - "
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.
" + "cell_type": "code", + "execution_count": 21, + "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": 22, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dEi49xtEOtne", + "outputId": "60b53406-81c4-4531-cbb0-77b9ffde8890" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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" + ] + } ], - "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, ...)" + "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)" ] - }, - "execution_count": 54, -======= - "
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.
" + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GxtMzlg-gR2P" + }, + "source": [ + "## 2. SVR" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "id": "o7K9r7EXWRjQ" + }, + "outputs": [], + "source": [ + "from sklearn.svm import SVR\n", + "from sklearn.model_selection import GridSearchCV" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "id": "0xQewd7QWTtq" + }, + "outputs": [], + "source": [ + "# Create an SVR model\n", + "model2 = SVR()\n", + "param_grid = {'C':[0.1, 1], 'epsilon':[0.01, 0.1, 0.5], 'kernel':['sigmoid']}\n", + "GV_SVR = GridSearchCV(model2, param_grid = param_grid, scoring = 'accuracy', n_jobs = -1)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "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": 26, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 191 + }, + "id": "22SaCsQmfhgP", + "outputId": "7867aa8e-a7dc-49e4-d0aa-310423e9c696" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.10/dist-packages/sklearn/model_selection/_search.py:1103: UserWarning: One or more of the test scores are non-finite: [nan nan nan nan nan nan]\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "
GridSearchCV(estimator=SVR(), n_jobs=-1,\n",
+              "             param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n",
+              "                         'kernel': ['sigmoid']},\n",
+              "             scoring='accuracy')
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": [ + "GridSearchCV(estimator=SVR(), n_jobs=-1,\n", + " param_grid={'C': [0.1, 1], 'epsilon': [0.01, 0.1, 0.5],\n", + " 'kernel': ['sigmoid']},\n", + " scoring='accuracy')" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - "GradientBoostingRegressor()" + "source": [ + "# Train the model\n", + "GV_SVR.fit(X_train, y_train)" ] - }, - "execution_count": 71, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Train the model\n", - "model4.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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": [ { - "name": "stdout", - "output_type": "stream", - "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)" -======= - "execution_count": null, - "metadata": {}, - "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)" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "d8nSGoyuh9dx" - }, - "source": [ - "## 5. Extreme Gradient Boosting (XGBoost)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 58, -======= - "execution_count": 76, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "DyhhdlZAhx94" - }, - "outputs": [], - "source": [ - "import xgboost as xgb\n", - "# Create an XGBoost model\n", - "model5 = xgb.XGBRegressor()" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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, -======= - "execution_count": 78, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 248 + "cell_type": "code", + "execution_count": 27, + "metadata": { + "id": "OQ1nL4oYfkAC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2 = GV_SVR.predict(X_test)\n" + ] }, - "id": "RAIwxIp5iH9Z", - "outputId": "d2b4aa97-7e07-4015-c308-76a292b0929f" - }, - "outputs": [ { - "data": { - "text/html": [ -<<<<<<< HEAD - "
XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
-=======
-       "
XGBRegressor(base_score=None, booster=None, callbacks=None,\n",
->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2
-       "             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",
-<<<<<<< HEAD
-       "             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.
" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 + "cell_type": "code", + "execution_count": 28, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "U6-EppR68Jsu", + "outputId": "cfa67a46-ab8c-478d-c13e-fe884ef7ebae" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'C': 0.1, 'epsilon': 0.01, 'kernel': 'sigmoid'}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } ], - "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, ...)" + "source": [ + "GV_SVR.best_params_" ] - }, -<<<<<<< HEAD - "execution_count": 60, -======= - "execution_count": 78, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Train the model\n", - "model5.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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" - }, -======= - "execution_count": 80, - "metadata": {}, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ -<<<<<<< HEAD - "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" -======= - "RMSE: 224.66436370022384\n", - "MAE: 162.62070643817412\n", - "MAPE: 0.7441437311249671\n", - "\n" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - } - ], - "source": [ -<<<<<<< HEAD - "# 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)" -======= - "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)" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "A_J776rtiovq" - }, - "source": [ - "## 6. AdaBoostRegressor" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 64, -======= - "execution_count": 83, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "HNq66cXRiYPJ" - }, - "outputs": [], - "source": [ -<<<<<<< HEAD - "from sklearn.ensemble import AdaBoostRegressor\n", - "# Create an AdaBoost model\n", -======= ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "model6 = AdaBoostRegressor()" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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, -======= - "execution_count": 85, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 74 + "cell_type": "code", + "execution_count": 29, + "metadata": { + "id": "nRYTwydsfpjb" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics with grid search\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())" + ] }, - "id": "P0oB5wjQivBr", - "outputId": "8726c583-6782-4504-b0ac-d2ef4ccbca4c" - }, - "outputs": [ { - "data": { - "text/html": [ -<<<<<<< HEAD - "
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.
" -======= - "
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.
" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 + "cell_type": "code", + "execution_count": 30, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "656J5oz5fzq6", + "outputId": "c62c2076-2a10-43da-935d-c593c2d7be79" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 158.5191296342117\n", + "MAE: 127.61818666535594\n", + "MAPE: 2.6724681150799072\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 0.9970457902511078\n", + "Confusion Matrix:\n", + " [[738 2]\n", + " [ 0 675]]\n", + "Recall: 1.0\n", + "F1 Score: 0.9985207100591716\n" + ] + } ], - "text/plain": [ - "AdaBoostRegressor()" + "source": [ + "# Print the evaluation metrics with grid search\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)" ] - }, -<<<<<<< HEAD - "execution_count": 66, -======= - "execution_count": 85, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Train the model\n", - "model6.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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": [ { - "name": "stdout", - "output_type": "stream", - "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)" -======= - "execution_count": null, - "metadata": {}, - "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)" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "Q9DzOt3CkWFX" - }, - "source": [ - "## 7. Decision Tree" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 70, -======= - "execution_count": 90, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "23DZ2biSjF9a" - }, - "outputs": [], - "source": [ -<<<<<<< HEAD - "from sklearn.tree import DecisionTreeRegressor\n", - "# Create a Decision Tree model\n", -======= ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "model7 = DecisionTreeRegressor()" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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, -======= - "execution_count": 92, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 74 + "cell_type": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "tIlc-wCE8Jsv", + "outputId": "fc6a39f5-b546-444e-a522-8bbcf889be14" + }, + "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": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#fitting without grid search\n", + "model2.fit(X_train, y_train)" + ] }, - "id": "6mQEQf-ykc9F", - "outputId": "f1a62020-4125-4aea-e7e4-11acffdc5169" - }, - "outputs": [ { - "data": { - "text/html": [ -<<<<<<< HEAD - "
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.
" -======= - "
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.
" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 + "cell_type": "code", + "execution_count": 32, + "metadata": { + "id": "f3u1h6Dk8Jsv" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred2_1 = model2.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "id": "F-NgJx2d8Jsv" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics without grid search\n", + "rmse2_1 = np.sqrt(mean_squared_error(y_test, pred2_1))\n", + "mae2_1 = mean_absolute_error(y_test, pred2_1)\n", + "mape2_1 = mean_absolute_percentage_error(y_test, pred2_1)\n", + "accuracy2_1 = accuracy_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "precision2_1 = precision_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "confusion2_1 = confusion_matrix(y_test > pred2_1, y_test > pred2_1.round())\n", + "recall2_1 = recall_score(y_test > pred2_1, y_test > pred2_1.round())\n", + "f12_1 = f1_score(y_test > pred2_1, y_test > pred2_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_BB1EERE8Jsv", + "outputId": "11c94daf-d2db-4447-a5b9-b753e648b56c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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" + ] + } ], - "text/plain": [ - "DecisionTreeRegressor()" + "source": [ + "# Print the evaluation metrics without grid search\n", + "print(\"RMSE:\", rmse2_1)\n", + "print(\"MAE:\", mae2_1)\n", + "print(\"MAPE:\", mape2_1)\n", + "print(\"Accuracy:\", accuracy2_1)\n", + "print(\"Precision:\", precision2_1)\n", + "print(\"Confusion Matrix:\\n\", confusion2_1)\n", + "print(\"Recall:\", recall2_1)\n", + "print(\"F1 Score:\", f12_1)" ] - }, -<<<<<<< HEAD - "execution_count": 72, -======= - "execution_count": 92, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Train the model\n", - "model7.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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": [ { - "name": "stdout", - "output_type": "stream", - "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)" -======= - "execution_count": null, - "metadata": {}, - "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)" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "LH-B-Xd6k5UD" - }, - "source": [ - "## 8. KNeighborsRegressor(KNN)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 76, -======= - "execution_count": 97, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "JVDSed7yktFY" - }, - "outputs": [], - "source": [ -<<<<<<< HEAD - "from sklearn.neighbors import KNeighborsRegressor\n", -======= ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "# Create a KNN model\n", - "model8 = KNeighborsRegressor()" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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, -======= - "execution_count": 99, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 74 + "cell_type": "markdown", + "metadata": { + "id": "hcIfVMWdgcKt" + }, + "source": [ + "## 3. Random Forest" + ] }, - "id": "9fn64o-ZlBka", - "outputId": "dc5e6af2-de37-46ee-cde7-e0a3baa31a1f" - }, - "outputs": [ { - "data": { - "text/html": [ -<<<<<<< HEAD - "
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.
" -======= - "
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.
" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 + "cell_type": "code", + "execution_count": 35, + "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": 36, + "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": 37, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "fF002Yepgk55", + "outputId": "4ff3a76e-04be-452e-8927-a7739bc306fb" + }, + "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": 37, + "metadata": {}, + "output_type": "execute_result" + } ], - "text/plain": [ - "KNeighborsRegressor()" + "source": [ + "# Train the model\n", + "model3.fit(X_train, y_train)" ] - }, -<<<<<<< HEAD - "execution_count": 78, -======= - "execution_count": 99, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Train the model\n", - "model8.fit(X_train, y_train)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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": [ { - "name": "stdout", - "output_type": "stream", - "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)" -======= - "execution_count": null, - "metadata": {}, - "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)" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "X5XtlzMXljps" - }, - "source": [ - "## 9. Artificial Neural Networks (ANN)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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" - }, -======= - "execution_count": null, - "metadata": {}, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "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", -<<<<<<< HEAD - "execution_count": 85, -======= - "execution_count": 106, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "ZIf94WLMlv04" - }, - "outputs": [], - "source": [ - "# Compile the model\n", - "model9.compile(loss='mean_squared_error', optimizer='adam')" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 86, -======= - "execution_count": 108, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "cell_type": "code", + "execution_count": 38, + "metadata": { + "id": "8nRU_pzEgnCt" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred3 = model3.predict(X_test)" + ] }, - "id": "FX5DTKqslxWf", - "outputId": "9253b26c-1a79-4390-975e-d14c28a5e2a8" - }, - "outputs": [ { - "data": { - "text/plain": [ -<<<<<<< HEAD - "" + "cell_type": "code", + "execution_count": 39, + "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())" ] - }, - "execution_count": 86, -======= - "" + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "8pPzsCY1g305", + "outputId": "bc5eeab1-5d75-4be3-b26f-70c4fe533a47" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.2227552163641375\n", + "MAE: 1.2618627107561857\n", + "MAPE: 0.008011786688180922\n", + "Accuracy: 0.8537102473498234\n", + "Precision: 0.8575624082232012\n", + "Confusion Matrix:\n", + " [[624 97]\n", + " [110 584]]\n", + "Recall: 0.8414985590778098\n", + "F1 Score: 0.8494545454545455\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)" ] - }, - "execution_count": 108, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "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", -<<<<<<< HEAD - "execution_count": 87, -======= - "execution_count": 109, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" }, - "id": "OVW2qpNsmGVq", - "outputId": "34343782-f560-4dee-c307-ff0d0c52ab5a" - }, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ -<<<<<<< HEAD - "45/45 [==============================] - 0s 1ms/step\n" -======= - "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step\n", - "RMSE: 2.8150472311407646\n", - "MAE: 1.8129405045040394\n", - "MAPE: 0.013972537999927807\n", - "\n" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - } - ], - "source": [ -<<<<<<< HEAD - "# 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/" + "cell_type": "markdown", + "metadata": { + "id": "mZsLwLivhLGH" + }, + "source": [ + "## 4. Gradient Boosting Models (GBM)" + ] }, - "id": "5zuwkC1emmh3", - "outputId": "5d6a0e05-3112-4d27-f5fb-ed665867b22d" - }, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "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)" -======= - "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)" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "vjSMQNcOnFPJ" - }, - "source": [ - "## 10. LSTM(Long Short term Memory)" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "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, -======= - "execution_count": 111, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "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", -<<<<<<< HEAD - "execution_count": 93, - "metadata": { - "id": "r066pVYpnXH5" - }, -======= - "execution_count": null, - "metadata": {}, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "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", -<<<<<<< HEAD - "execution_count": 94, -======= - "execution_count": 117, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "id": "YpSfHu6gov35" - }, - "outputs": [], - "source": [ - "# Compile the model\n", - "model.compile(loss='mean_squared_error', optimizer='adam')\n" - ] - }, - { - "cell_type": "code", -<<<<<<< HEAD - "execution_count": 95, -======= - "execution_count": 119, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "cell_type": "code", + "execution_count": 41, + "metadata": { + "id": "TI8idoxOg6jF" + }, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "# Create an XGBoost model\n", + "model4 = xgb.XGBRegressor()" + ] }, - "id": "0vHjcluaoxzP", - "outputId": "1eaafd31-9f91-4655-f437-e9199c0f7933" - }, - "outputs": [ { - "data": { - "text/plain": [ -<<<<<<< HEAD - "" + "cell_type": "code", + "execution_count": 42, + "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)" ] - }, - "execution_count": 95, -======= - "" + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + }, + "id": "2gpbDxshhexj", + "outputId": "2cdbacc9-909a-43c9-cf04-cc4f70015e43" + }, + "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.
" + ], + "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": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model4.fit(X_train, y_train)" ] - }, - "execution_count": 119, ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - "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", -<<<<<<< HEAD - "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": [ - "# 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/" + "cell_type": "code", + "execution_count": 44, + "metadata": { + "id": "Jj9DXdUPhh9V" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred4 = model4.predict(X_test)" + ] }, - "id": "i_6-UUDhpi0c", - "outputId": "3dcc5761-03b6-4b52-dfe6-08dece835c8d" - }, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "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", - "execution_count": 117, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 472 + "cell_type": "code", + "execution_count": 45, + "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())" + ] }, - "id": "qpWPtph9CGip", - "outputId": "c099cb8d-96af-4223-f499-743040aecdf1" - }, - "outputs": [ { - "data": { - "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+OjpUuXFniS8IwZM9ShQwe1bNlSI0aMUGhoqI4dO6avvvpKSUlJBW7fx8dHs2bN0qOPPqqWLVtqwIABqlGjhk6cOKGvvvpKd9xxh9577z0dPHhQnTt31sMPP6zbbrtNFSpU0PLly5WSkqIBAwYU+ucBHMpp14EBJlbQpeceHh5G8+bNjVmzZtlc4msYhjFnzhyjQYMGhru7uxEWFmbExsZaL8v+I0lGVFSU3XmWL19udOvWzahRo4ZRoUIFw8/Pz+jQoYPx5ptvGmlpaYXeh705P/30U+v6LVq0yHdp9bXXnjlzxmb8z5c938jixYuNFi1aGO7u7kbVqlWNQYMGGb/88kuB27vZpec9evQwPDw8jOzs7OuuM3ToUKNixYrG2bNnDcMwjN9++82Ijo42brnlFsPNzc2oWbOmMWTIEOtyw7h6SfgLL7xghIaGGhUrVjQCAwONhx56yDhy5Ih1nTNnzhh9+/Y1KlWqZFSpUsV44oknjH379hV46bmXl1eB2X788UcjIiLCqFy5slG9enXj8ccfN3bv3p1vG4ZhGPv27TN69+5t+Pn5GR4eHkbDhg2NiRMn5nvP/vw7WL9+vdG1a1fD19fX8PDwMOrVq2cMHTrUepuBs2fPGlFRUUZYWJjh5eVl+Pr6GuHh4cZnn312w/ceKEkWw3DCGYAATM1isSgqKqrAQzcAUNo4ZwcAAJgaZQcAAJgaZQcAAJgaV2MBcDhOBQRQljCzAwAATI2yAwAATI3DWLr6nS+//vqrvL29i/UtxAAAoPQYhqHMzEwFBwff8CtxKDuSfv31V9WqVcvZMQAAQBGcPHlSNWvWvO5yyo4kb29vSVffrGu38AcAAGVbRkaGatWqZf0cvx7KjmQ9dOXj40PZAQCgnLnZKSicoAwAAEyNsgMAAEyNsgMAAEyNsgMAAEyNsgMAAEyNsgMAAEyNsgMAAEyNsgMAAEyNsgMAAEyNsgMAAEzNqWVn06ZN6tGjh4KDg2WxWLRixQqb5YZhaNKkSQoKCpKnp6ciIiJ06NAhm3XOnTunQYMGycfHR35+foqMjFRWVlYp/hQAAKAsc2rZyc7OVrNmzfT+++8XuHzatGmaMWOGZs+erS1btsjLy0tdu3bVpUuXrOsMGjRIP/zwgxISErRq1Spt2rRJI0aMKK0fAQAAlHEWwzAMZ4eQrn6J1/Lly9WrVy9JV2d1goOD9cwzz2jcuHGSpPT0dAUEBGjevHkaMGCA9u/fr9tuu03btm1T69atJUmrV69Wt27d9Msvvyg4OLhQ+87IyJCvr6/S09P5IlAAAMqJwn5+l9lzdo4ePark5GRFRERYx3x9fRUeHq7NmzdLkjZv3iw/Pz9r0ZGkiIgIubi4aMuWLdfddk5OjjIyMmweAADAnMps2UlOTpYkBQQE2IwHBARYlyUnJ8vf399meYUKFVS1alXrOgWJiYmRr6+v9VGrVi0HpwcAAGVFmS07JWnChAlKT0+3Pk6ePOnsSGWOxVL2HgAAFEWZLTuBgYGSpJSUFJvxlJQU67LAwEClpqbaLP/999917tw56zoFcXd3l4+Pj80DAACYU5ktO6GhoQoMDFRiYqJ1LCMjQ1u2bFG7du0kSe3atVNaWpp27NhhXWfdunXKy8tTeHh4qWcGAABlTwVn7jwrK0uHDx+2Pj969KiSkpJUtWpV1a5dW6NHj9arr76qBg0aKDQ0VBMnTlRwcLD1iq1GjRrpvvvu0+OPP67Zs2frypUrio6O1oABAwp9JRaAv56yeFi0bFwXWzJ4v0sX73d+Ti0727dvV6dOnazPx44dK0kaMmSI5s2bp2effVbZ2dkaMWKE0tLS1KFDB61evVoeHh7W18TFxSk6OlqdO3eWi4uL+vbtqxkzZpT6zwIAAMqmMnOfHWfiPjv58ZcBzIx/36WL97t0/ZXe73J/nx0AAABHoOwAAABTo+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+wAAABTq+DsAAAAlEUWi7MT5GcYzk5QPjGzAwAATI2ZHaAMKK9/QZbX3AD+WpjZAQAApkbZAQAApkbZAQAApkbZAQAApkbZAQAApkbZAQAApkbZAQAApkbZAQAApkbZAQAApsYdlAGgnOCO1UDRUHZgKnwYAAD+jMNYAADA1Cg7AADA1Cg7AADA1Cg7AADA1Cg7AADA1Cg7AADA1Cg7AADA1LjPTgnjvi8AADgXMzsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUKDsAAMDUynTZyc3N1cSJExUaGipPT0/Vq1dPr7zyiow/XDttGIYmTZqkoKAgeXp6KiIiQocOHXJiagAAUJaU6bIzdepUzZo1S++9957279+vqVOnatq0aZo5c6Z1nWnTpmnGjBmaPXu2tmzZIi8vL3Xt2lWXLl1yYnIAAFBWlOmbCv73v/9Vz5491b17d0lSnTp1tGjRIm3dulXS1Vmdd955Ry+++KJ69uwpSfrkk08UEBCgFStWaMCAAU7LDgAAyoYyPbPTvn17JSYm6uDBg5Kk3bt367vvvtP9998vSTp69KiSk5MVERFhfY2vr6/Cw8O1efPm6243JydHGRkZNg8AAGBOZXpmZ/z48crIyFBYWJhcXV2Vm5ur1157TYMGDZIkJScnS5ICAgJsXhcQEGBdVpCYmBhNmTKl5IIDAIAyo0zP7Hz22WeKi4vTwoULtXPnTs2fP19vvfWW5s+fX6ztTpgwQenp6dbHyZMnHZQYAACUNWV6Zuef//ynxo8fbz33pmnTpjp+/LhiYmI0ZMgQBQYGSpJSUlIUFBRkfV1KSoqaN29+3e26u7vL3d29RLMDAICyoUzP7Fy4cEEuLrYRXV1dlZeXJ0kKDQ1VYGCgEhMTrcszMjK0ZcsWtWvXrlSzAgCAsqlMz+z06NFDr732mmrXrq3GjRtr165dmj59uoYPHy5JslgsGj16tF599VU1aNBAoaGhmjhxooKDg9WrVy/nhgcAAGVCmS47M2fO1MSJEzVy5EilpqYqODhYTzzxhCZNmmRd59lnn1V2drZGjBihtLQ0dejQQatXr5aHh4cTkwMAgLLCYvzxdsR/URkZGfL19VV6erp8fHwcum2LxaGbc4jC/MbJ7TjkLl3kLl3kLl1mzl0Uhf38LtPn7AAAABQXZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJgaZQcAAJia3WXn4sWLunDhgvX58ePH9c4772jt2rUODQYAAOAIdpednj176pNPPpEkpaWlKTw8XG+//bZ69uypWbNmOTwgAABAcdhddnbu3KmOHTtKkj7//HMFBATo+PHj+uSTTzRjxgyHBwQAACgOu8vOhQsX5O3tLUlau3at+vTpIxcXF7Vt21bHjx93eEAAAIDisLvs1K9fXytWrNDJkye1Zs0a3XvvvZKk1NRU+fj4ODwgAABAcdhddiZNmqRx48apTp06+tvf/qZ27dpJujrL06JFC4cHBAAAKA6LYRiGvS9KTk7W6dOn1axZM7m4XO1LW7dulY+Pj8LCwhwesqRlZGTI19dX6enpDp+dslgcujmHKMxvnNyOQ+7SRe7SRe7SZebcRVHYz+8i3WcnMDBQ3t7eSkhI0MWLFyVJbdq0KZdFBwAAmJvdZee3335T586ddeutt6pbt246ffq0JCkyMlLPPPOMwwMCAAAUh91lZ8yYMapYsaJOnDihSpUqWcf79++v1atXOzQcAABAcVWw9wVr167VmjVrVLNmTZvxBg0acOk5AAAoc+ye2cnOzraZ0bnm3Llzcnd3d0goAAAAR7G77HTs2NH6dRGSZLFYlJeXp2nTpqlTp04ODQcAAFBcdh/GmjZtmjp37qzt27fr8uXLevbZZ/XDDz/o3Llz+v7770siIwAAQJHZPbPTpEkTHTx4UB06dFDPnj2VnZ2tPn36aNeuXapXr15JZAQAACiyIt1U0Gy4qWB+5HYccpcucpcucpcuM+cuisJ+ftt9GGvTpk03XH7nnXfau0kAAIASY3fZufvuu/ONWf5QI3Nzc4sVCAAAwJHsPmfn/PnzNo/U1FStXr1abdq00dq1a0siIwAAQJHZPbPj6+ubb6xLly5yc3PT2LFjtWPHDocEAwAAcIQifRFoQQICAnTgwAFHbQ4AAMAh7J7Z2bNnj81zwzB0+vRpvfHGG2revLmjcgEAADiE3WWnefPmslgs+vMV623bttXcuXMdFgwAAMAR7C47R48etXnu4uKiGjVqyMPDw2GhAAAAHMXuc3ZCQkJsHrVq1SrRonPq1Ck98sgjqlatmjw9PdW0aVNt377dutwwDE2aNElBQUHy9PRURESEDh06VGJ5AABA+VKomZ0ZM2YUeoNPP/10kcP82fnz53XHHXeoU6dO+uabb1SjRg0dOnRIVapUsa4zbdo0zZgxQ/Pnz1doaKgmTpyorl276scff2S2CQAAFO7rIkJDQwu3MYtFP//8c7FDXTN+/Hh9//33+s9//lPgcsMwFBwcrGeeeUbjxo2TJKWnpysgIEDz5s3TgAEDCrUfvi4iP3I7DrlLF7lLF7lLl5lzF4VDvy7iz+fplJaVK1eqa9eu6tevnzZu3KhbbrlFI0eO1OOPP27NlZycrIiICOtrfH19FR4ers2bN1+37OTk5CgnJ8f6PCMjo2R/EAAA4DQOu89OSfj55581a9YsNWjQQGvWrNGTTz6pp59+WvPnz5ckJScnS7p6j58/CggIsC4rSExMjHx9fa2PWrVqldwPAQAAnMruq7Ek6ZdfftHKlSt14sQJXb582WbZ9OnTHRJMkvLy8tS6dWu9/vrrkqQWLVpo3759mj17toYMGVLk7U6YMEFjx461Ps/IyKDwAABgUnaXncTERD344IOqW7eufvrpJzVp0kTHjh2TYRhq2bKlQ8MFBQXptttusxlr1KiRli5dKkkKDAyUJKWkpCgoKMi6TkpKyg1vcOju7i53d3eHZgUAAGWT3YexJkyYoHHjxmnv3r3y8PDQ0qVLdfLkSd11113q16+fQ8Pdcccd+b6C4uDBgwoJCZF09cTpwMBAJSYmWpdnZGRoy5YtateunUOzAACAcsqwU+XKlY3Dhw8bhmEYfn5+xr59+wzDMIykpCQjJCTE3s3d0NatW40KFSoYr732mnHo0CEjLi7OqFSpkvHpp59a13njjTcMPz8/44svvjD27Nlj9OzZ0wgNDTUuXrxY6P2kp6cbkoz09HSH5jcMw7h6DnrZepCb3OQuew9yk/uvnrsoCvv5bfdhLC8vL+t5OkFBQTpy5IgaN24sSTp79qwje5jatGmj5cuXa8KECXr55ZcVGhqqd955R4MGDbKu8+yzzyo7O1sjRoxQWlqaOnTooNWrV3OPHQAAIKmQ99n5o169eql79+56/PHHNW7cOH3xxRcaOnSoli1bpipVqujbb78tqawlhvvs5EduxyF36SJ36SJ36TJz7qJw6H12JOncuXOqWrWqpk+frqysLEnSlClTlJWVpcWLF6tBgwYOvRILAADAEQo9s+Ph4aFevXopMjJSXbp0KelcpYqZnfzI7TjkLl3kLl3kLl1mzl0Uhf38LvTVWB999JHOnDmj++67T3Xq1NFLL72kY8eOOSIrAABAiSl02Xn00UeVmJiow4cPa8iQIZo/f77q16+vLl26aPHixfluLggAAFAW2H2fndDQUE2ZMkVHjx7V6tWr5e/vr+HDhysoKMih33gOAADgCHZfjVWQpUuXWi/9zs3NdUSuUsU5O/mR23HIXbrIXbrIXbrMnLsoHH411p8dP35csbGxmj9/vk6ePKlOnTopMjKyqJsDAAAoEXaVnZycHC1dulRz587Vhg0bdMstt2jo0KEaNmyY6tSpU0IRAQAAiq7QZWfkyJGKj4/XhQsX1LNnT3399dfq0qWLLGVxvgwAAOD/K3TZ+e677zR58mQ98sgjqlatWklmAgAAcJhCl509e/aUZA4AAIASYfel5wAAAOUJZQcAAJgaZQcAAJgaZQcAAJia3WWnTp06evnll3XixImSyAMAAOBQdped0aNHa9myZapbt666dOmi+Ph45eTklEQ2AACAYitS2UlKStLWrVvVqFEjPfXUUwoKClJ0dLR27txZEhkBAACKrMjn7LRs2VIzZszQr7/+qsmTJ+vjjz9WmzZt1Lx5c82dO1cO+H5RAACAYivyF4FeuXJFy5cvV2xsrBISEtS2bVtFRkbql19+0fPPP69vv/1WCxcudGRWAAAAu9lddnbu3KnY2FgtWrRILi4uGjx4sP71r38pLCzMuk7v3r3Vpk0bhwYFAAAoCrvLTps2bdSlSxfNmjVLvXr1UsWKFfOtExoaqgEDBjgkIAAAQHHYXXZ+/vlnhYSE3HAdLy8vxcbGFjkUAACAo9h9gnJqaqq2bNmSb3zLli3avn27Q0IBAAA4it1lJyoqSidPnsw3furUKUVFRTkkFAAAgKPYXXZ+/PFHtWzZMt94ixYt9OOPPzokFAAAgKPYXXbc3d2VkpKSb/z06dOqUKHIV7IDAACUCLvLzr333qsJEyYoPT3dOpaWlqbnn39eXbp0cWg4AACA4rJ7Kuatt97SnXfeqZCQELVo0UKSlJSUpICAAC1YsMDhAQEAAIrD7rJzyy23aM+ePYqLi9Pu3bvl6empYcOGaeDAgQXecwcAAMCZinSSjZeXl0aMGOHoLAAAAA5X5DOKf/zxR504cUKXL1+2GX/wwQeLHQoAAMBRinQH5d69e2vv3r2yWCzWbze3WCySpNzcXMcmBAAAKAa7r8YaNWqUQkNDlZqaqkqVKumHH37Qpk2b1Lp1a23YsKEEIgIAABSd3TM7mzdv1rp161S9enW5uLjIxcVFHTp0UExMjJ5++mnt2rWrJHICAAAUid0zO7m5ufL29pYkVa9eXb/++qskKSQkRAcOHHBsOgAAgGKye2anSZMm2r17t0JDQxUeHq5p06bJzc1NH374oerWrVsSGQEAAIrM7rLz4osvKjs7W5L08ssv64EHHlDHjh1VrVo1LV682OEBAQAAisNiXLucqhjOnTunKlWqWK/IKm8yMjLk6+ur9PR0+fj4OHTbZfEtKcxvnNyOQ+7SRe7SRe7SZebcRVHYz2+7ztm5cuWKKlSooH379tmMV61atdwWHQAAYG52lZ2KFSuqdu3a3EsHAACUG3ZfjfXCCy/o+eef17lz50oiDwAAgEPZfYLye++9p8OHDys4OFghISHy8vKyWb5z506HhQMAACguu8tOr169SiAGAABAybC77EyePLkkcgAAAJQIu8/ZAQAAKE/sntlxcXG54WXmXKkFAADKErvLzvLly22eX7lyRbt27dL8+fM1ZcoUhwUDAABwBIfcQVmSFi5cqMWLF+uLL75wxOZKFXdQzo/cjkPu0kXu0kXu0mXm3EVRIndQvpG2bdsqMTHRUZsDAABwCIeUnYsXL2rGjBm65ZZbHLE5AAAAh7H7nJ0/f+GnYRjKzMxUpUqV9Omnnzo0HAAAQHHZXXb+9a9/2ZQdFxcX1ahRQ+Hh4apSpYpDwwEAABSX3WVn6NChJRADAACgZNh9zk5sbKyWLFmSb3zJkiWaP3++Q0IBAAA4it1lJyYmRtWrV8837u/vr9dff90hoQAAABzF7rJz4sQJhYaG5hsPCQnRiRMnHBIKAADAUewuO/7+/tqzZ0++8d27d6tatWoOCQUAAOAodpedgQMH6umnn9b69euVm5ur3NxcrVu3TqNGjdKAAQNKIiMAAECR2X011iuvvKJjx46pc+fOqlDh6svz8vI0ePBgztkBAABljt0zO25ublq8eLEOHDiguLg4LVu2TEeOHNHcuXPl5uZWEhmt3njjDVksFo0ePdo6dunSJUVFRalatWqqXLmy+vbtq5SUlBLNAQAAyg+7Z3auadCggRo0aODILDe0bds2/fvf/9btt99uMz5mzBh99dVXWrJkiXx9fRUdHa0+ffro+++/L7VsAACg7LJ7Zqdv376aOnVqvvFp06apX79+Dgn1Z1lZWRo0aJA++ugjm7s0p6ena86cOZo+fbruuecetWrVSrGxsfrvf/+r//3vfyWSBQAAlC92l51NmzapW7du+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", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 46, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qpnLeFyZhwB3", + "outputId": "1637d31a-e785-4414-dfe5-f7fa4fd282e9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\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)" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "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" - ] - }, - { - "cell_type": "code", - "execution_count": 118, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 472 }, - "id": "RFaaCNH6Cfoa", - "outputId": "67a8f358-e3ce-4ad2-9c78-ebc75902beb4" - }, - "outputs": [ { - "data": { - "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/fu3TVkyBCdOHFCs2fPVsOGDfWf//znqvb/zDPPaN++fXr55Zf18ccfq1+/frrhhht0+vRp7dy5UytWrFBQUFCZvjCwvDlbtGihbt266bHHHpPdbtdbb70lSWW6pLwsqlWrpmnTpik+Pl4dO3bU4MGDlZmZ6bhUfuzYsS7Zz8WefPJJDRgwQElJSSVOqr7A399fzz///O9u69FHH9W5c+d03333qUmTJjp//ry2bNmi5cuXq379+oqPj3eaf+zYMf3zn/8ssZ0aNWqob9++V/JyAPdTmZeCASif0i499/HxMa1btzZz5sxxutTbGGPmz59vGjVqZOx2u2nSpIlZsGCB47Lsi0kyo0aNKnee1atXm549e5rrr7/eeHl5mYCAANOhQwfz8ssvm6ysrDLvo7w5//nPfzrmR0VFmU2bNjnNu/DckydPOo1f+PkdOnTod1/b8uXLTVRUlLHb7SYwMNDExsaaH374odTtlefS89LmFhUVmQYNGpgGDRqYwsJCY4zzpeeXUtql5+vXrzfDhw83TZo0MTVq1DDe3t6mYcOG5tFHHzWZmZlOz7/cpef16tX73dcEVBU2YyrxTD0AKAebzaZRo0b97vktAHAxztkBAACWRtkBAACWRtkBAACWxtVYAKoMTjEEcCU4sgMAACyNsgMAACyNj7EkFRcX68cff1TNmjVLvfEgAABwP8YYnTlzRmFhYfLwuPTxG8qOpB9//FHh4eGVHQMAAFyB9PR03XDDDZdcT9mRVLNmTUm//rAufNU+AABwbzk5OQoPD3e8j18KZUdyfHTl5+dH2QEAoIr5vVNQOEEZAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYGmUHAABYmldlBwAAWJvtBVtlRyjBTDaVHQHXEEd2AACApXFkB6XiX2IAAKvgyA4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALA0yg4AALC0Si07KSkp6t27t8LCwmSz2bRmzZpLzn3ooYdks9k0c+ZMp/FTp04pNjZWfn5+CggIUEJCgnJzcys2OAAAqDIqteycPXtWrVq10uzZsy87b/Xq1dq6davCwsJKrIuNjdXevXu1YcMGffjhh0pJSdHIkSMrKjIAAKhivCpz5z169FCPHj0uO+fYsWN69NFH9dFHH6lXr15O6/bt26fk5GRt375d0dHRkqRZs2apZ8+eeuWVV0otRwAA4L+LW5+zU1xcrKFDh+rJJ59U8+bNS6xPTU1VQECAo+hIUkxMjDw8PLRt27ZLbjc/P185OTlOCwAAsCa3LjvTpk2Tl5eXHnvssVLXZ2RkKCgoyGnMy8tLgYGBysjIuOR2ExMT5e/v71jCw8NdmhsAALgPty07aWlpev3115WUlCSbzebSbY8fP17Z2dmOJT093aXbBwAA7sNty85nn32mEydOKCIiQl5eXvLy8tKRI0f0l7/8RfXr15ckhYSE6MSJE07PKyws1KlTpxQSEnLJbdvtdvn5+TktAADAmir1BOXLGTp0qGJiYpzGunXrpqFDhyo+Pl6S1L59e2VlZSktLU1t2rSRJH3yyScqLi5Wu3btrnlmAADgfiq17OTm5uq7775zPD506JB27dqlwMBARUREqHbt2k7zq1WrppCQEDVu3FiS1LRpU3Xv3l0jRozQ3LlzVVBQoNGjR2vQoEFciQUAACRV8sdYO3bsUFRUlKKioiRJ48aNU1RUlCZNmlTmbSxZskRNmjRR165d1bNnT3Xo0EF///vfKyoyAACoYir1yE6nTp1kjCnz/MOHD5cYCwwM1NKlS12YCgAAWInbnqAMAADgCpQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZQdAABgaZVadlJSUtS7d2+FhYXJZrNpzZo1jnUFBQV6+umn1bJlS1WvXl1hYWH605/+pB9//NFpG6dOnVJsbKz8/PwUEBCghIQE5ebmXuNXAgAA3FWllp2zZ8+qVatWmj17dol1586d086dOzVx4kTt3LlTq1at0v79+3Xvvfc6zYuNjdXevXu1YcMGffjhh0pJSdHIkSOv1UsAAABuzqsyd96jRw/16NGj1HX+/v7asGGD09ibb76ptm3b6ujRo4qIiNC+ffuUnJys7du3Kzo6WpI0a9Ys9ezZU6+88orCwsIq/DUAAAD3VqXO2cnOzpbNZlNAQIAkKTU1VQEBAY6iI0kxMTHy8PDQtm3bKiklAABwJ5V6ZKc88vLy9PTTT2vw4MHy8/OTJGVkZCgoKMhpnpeXlwIDA5WRkXHJbeXn5ys/P9/xOCcnp2JCAwCASlcljuwUFBRo4MCBMsZozpw5V729xMRE+fv7O5bw8HAXpAQAAO7I7cvOhaJz5MgRbdiwwXFUR5JCQkJ04sQJp/mFhYU6deqUQkJCLrnN8ePHKzs727Gkp6dXWH4AAFC53PpjrAtF58CBA9q0aZNq167ttL59+/bKyspSWlqa2rRpI0n65JNPVFxcrHbt2l1yu3a7XXa7vUKzAwAA91CpZSc3N1ffffed4/GhQ4e0a9cuBQYGKjQ0VP3799fOnTv14YcfqqioyHEeTmBgoLy9vdW0aVN1795dI0aM0Ny5c1VQUKDRo0dr0KBBXIkFAAAkVXLZ2bFjhzp37ux4PG7cOElSXFycnn/+ea1du1aS1Lp1a6fnbdq0SZ06dZIkLVmyRKNHj1bXrl3l4eGhfv366Y033rgm+QEAgPur1LLTqVMnGWMuuf5y6y4IDAzU0qVLXRkLAABYiNufoAwAAHA1KDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKDsAAMDSKrXspKSkqHfv3goLC5PNZtOaNWuc1htjNGnSJIWGhsrX11cxMTE6cOCA05xTp04pNjZWfn5+CggIUEJCgnJzc6/hqwAAAO6sUsvO2bNn1apVK82ePbvU9dOnT9cbb7yhuXPnatu2bapevbq6deumvLw8x5zY2Fjt3btXGzZs0IcffqiUlBSNHDnyWr0EAADg5rwqc+c9evRQjx49Sl1njNHMmTM1YcIE9enTR5K0aNEiBQcHa82aNRo0aJD27dun5ORkbd++XdHR0ZKkWbNmqWfPnnrllVcUFhZ2zV4LAABwT257zs6hQ4eUkZGhmJgYx5i/v7/atWun1NRUSVJqaqoCAgIcRUeSYmJi5OHhoW3btl1y2/n5+crJyXFaAACANblt2cnIyJAkBQcHO40HBwc71mVkZCgoKMhpvZeXlwIDAx1zSpOYmCh/f3/HEh4e7uL0AADAXbht2alI48ePV3Z2tmNJT0+v7EgAAKCCuG3ZCQkJkSRlZmY6jWdmZjrWhYSE6MSJE07rCwsLderUKcec0tjtdvn5+TktAADAmty27ERGRiokJEQbN250jOXk5Gjbtm1q3769JKl9+/bKyspSWlqaY84nn3yi4uJitWvX7ppnBgAA7qdSr8bKzc3Vd99953h86NAh7dq1S4GBgYqIiNCYMWP017/+VY0aNVJkZKQmTpyosLAw9e3bV5LUtGlTde/eXSNGjNDcuXNVUFCg0aNHa9CgQVyJBQAAJFVy2dmxY4c6d+7seDxu3DhJUlxcnJKSkvTUU0/p7NmzGjlypLKystShQwclJyfLx8fH8ZwlS5Zo9OjR6tq1qzw8PNSvXz+98cYb1/y1AAAA92QzxpjKDlHZcnJy5O/vr+zsbM7f+f9sL9gqO0IJZvJ//a8qUCXx9wkqSlnfv932nB0AAABXoOwAAABLc0nZycrKcsVmAAAAXK7cZWfatGlavny54/HAgQNVu3Zt1a1bV7t373ZpOAAAgKtV7rIzd+5cx+0VNmzYoA0bNmj9+vXq0aOHnnzySZcHBAAAuBrlvvQ8IyPDUXY+/PBDDRw4UHfffbfq16/PF/kBAAC3U+4jO7Vq1XLcSyo5OdlxV3JjjIqKilybDgAA4CqV+8jO/fffryFDhqhRo0b6+eef1aNHD0nSl19+qYYNG7o8IAAAwNUod9mZMWOG6tevr/T0dE2fPl01atSQJB0/flyPPPKIywMCAABcjXKXnWrVqumJJ54oMT527FiXBAIAAHClK/qencWLF6tDhw4KCwvTkSNHJEkzZ87U+++/79JwAAAAV6vcZWfOnDkaN26cevTooaysLMdJyQEBAZo5c6ar8wEAAFyVcpedWbNm6e2339Zzzz0nT09Px3h0dLS++uorl4YDAAC4WuUuO4cOHVJUVFSJcbvdrrNnz7okFAAAgKuUu+xERkZq165dJcaTk5PVtGlTV2QCAABwmXJfjTVu3DiNGjVKeXl5Msboiy++0LvvvqvExET94x//qIiMAAAAV6zcZefBBx+Ur6+vJkyYoHPnzmnIkCEKCwvT66+/rkGDBlVERgAAgCtW7rIjSbGxsYqNjdW5c+eUm5uroKAgV+cCAABwiSsqOxdcd911uu6661yVBQAAwOXKXXYiIyNls9kuuf7gwYNXFQgAAMCVyl12xowZ4/S4oKBAX375pZKTk/Xkk0+6KhcAAIBLlLvsPP7446WOz549Wzt27LjqQAAAAK50RffGKk2PHj303nvvuWpzAAAALuGysrNy5UoFBga6anMAAAAuUe6PsaKiopxOUDbGKCMjQydPntRbb73l0nAAAABXq9xlp2/fvk6PPTw8dP3116tTp05q0qSJq3IBAAC4RLnLzuTJkysiBwAAQIUoU9nJyckp8wb9/PyuOAwAAICrlansBAQEXPaLBKVfz92x2WwqKipySTAAAABXKFPZ2bRpU0XnAAAAqBBlKjsdO3as6BwAAAAV4opvBHru3DkdPXpU58+fdxq/+eabrzoUAACAq5S77Jw8eVLx8fFav359qes5ZwcAALiTcn+D8pgxY5SVlaVt27bJ19dXycnJWrhwoRo1aqS1a9dWREYAAIArVu4jO5988onef/99RUdHy8PDQ/Xq1dNdd90lPz8/JSYmqlevXhWREwAA4IqU+8jO2bNnFRQUJEmqVauWTp48KUlq2bKldu7c6dp0AAAAV6ncZadx48bav3+/JKlVq1aaN2+ejh07prlz5yo0NNSl4YqKijRx4kRFRkbK19dXDRo00IsvvihjjGOOMUaTJk1SaGiofH19FRMTowMHDrg0BwAAqLrK/THW448/ruPHj0v69dYR3bt315IlS+Tt7a2kpCSXhps2bZrmzJmjhQsXqnnz5tqxY4fi4+Pl7++vxx57TJI0ffp0vfHGG1q4cKEiIyM1ceJEdevWTV9//bV8fHxcmgcAAFQ9ZS47/fv314MPPqjY2FjHtym3adNGR44c0TfffKOIiAjVqVPHpeG2bNmiPn36OM4Dql+/vt5991198cUXkn49qjNz5kxNmDBBffr0kSQtWrRIwcHBWrNmjQYNGuTSPAAAoOop88dYp0+fVq9evRQREaFJkybp4MGDkqTrrrtOt9xyi8uLjiTddttt2rhxo7799ltJ0u7du/X555+rR48ekqRDhw4pIyNDMTExjuf4+/urXbt2Sk1NveR28/PzlZOT47QAAABrKnPZ2bhxow4ePKiEhAT985//VKNGjdSlSxctXbpU+fn5FRLumWee0aBBg9SkSRNVq1ZNUVFRGjNmjGJjYyVJGRkZkqTg4GCn5wUHBzvWlSYxMVH+/v6OJTw8vELyAwCAyleuE5Tr1aun559/XgcPHtSGDRsUFhamESNGKDQ0VKNGjVJaWppLw/3rX//SkiVLtHTpUu3cuVMLFy7UK6+8ooULF17VdsePH6/s7GzHkp6e7qLEAADA3Vzx7SK6dOmiLl266MyZM1q6dKmeffZZzZs3T4WFhS4L9+STTzqO7ki/Xt5+5MgRJSYmKi4uTiEhIZKkzMxMpyvBMjMz1bp160tu1263y263uywnAABwX+W+9Pxihw4d0iuvvKKpU6cqOzvb6dwZVzh37pw8PJwjenp6qri4WJIUGRmpkJAQbdy40bE+JydH27ZtU/v27V2aBQAAVE3lPrKTl5enlStX6p133lFKSorCw8OVkJCg+Ph4l5/70rt3b/3tb39TRESEmjdvri+//FKvvfaahg8fLkmy2WwaM2aM/vrXv6pRo0aOS8/DwsLUt29fl2YBAABVU5nLzhdffKF33nlHy5cvV15enu677z4lJyera9eujkvRXW3WrFmaOHGiHnnkEZ04cUJhYWH685//rEmTJjnmPPXUUzp79qxGjhyprKwsdejQQcnJyXzHDgAAkCTZzMVfR3wZHh4eatWqlRISEhQbG6tatWpVdLZrJicnR/7+/srOzpafn19lx3ELthcqpsBeDTO5TL+qANwMf5+gopT1/bvMR3Z27NihW265xSXhAAAArpUyn6BM0QEAAFXRVV2NBQAA4O4oOwAAwNIoOwAAwNLKXHZOnDhx2fWFhYWOu5EDAAC4izKXndDQUKfC07JlS6d7Sv388898azEAAHA7ZS47v/06nsOHD6ugoOCycwAAACqbS8/ZqahvUgYAALhSnKAMAAAsrczfoGyz2XTmzBn5+PjIGCObzabc3Fzl5ORIkuN/AQAA3EmZy44xRjfddJPT46ioKKfHfIwFAADcTZnLzqZNmyoyBwAAQIUoc9np2LFjReYAAACoEGUuO4WFhSoqKpLdbneMZWZmau7cuTp79qzuvfdedejQoUJCAgAAXKkyl50RI0bI29tb8+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", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": { + "id": "d8nSGoyuh9dx" + }, + "source": [ + "## 5. Extreme Gradient Boosting (XGBoost)" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "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" - ] - }, - { - "cell_type": "code", - "execution_count": 119, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 472 }, - "id": "nrZu-K-KDCJ2", - "outputId": "69165581-da05-4554-a464-a606eb87a734" - }, - "outputs": [ { - "data": { - "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", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 47, + "metadata": { + "id": "DyhhdlZAhx94" + }, + "outputs": [], + "source": [ + "import xgboost as xgb\n", + "# Create an XGBoost model\n", + "model5 = xgb.XGBRegressor()" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "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" - ] - }, - { - "cell_type": "code", - "execution_count": 120, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 472 }, - "id": "_c4Pe76fDNM-", - "outputId": "0e3d2f74-9042-4e2d-92c6-5ce61e967bd4" - }, - "outputs": [ { - "data": { - "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", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 48, + "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)" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "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" - ] - }, - { - "cell_type": "code", - "execution_count": 121, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 472 }, - "id": "ZDPV0M5rDTi6", - "outputId": "9db63164-3f42-47be-d302-d80d381d9b91" - }, - "outputs": [ { - "data": { - "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", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 49, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 254 + }, + "id": "RAIwxIp5iH9Z", + "outputId": "cc66ca33-11cc-4e5d-e7e1-f39b41466c28" + }, + "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.
" + ], + "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": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model5.fit(X_train, y_train)" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "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" - ] - }, - { - "cell_type": "code", - "execution_count": 122, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 472 }, - "id": "39LBleNeDeuw", - "outputId": "3c6c40bc-f1da-44fb-da14-25ec6d6cf278" - }, - "outputs": [ { - "data": { - "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", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 50, + "metadata": { + "id": "XmJds5fYiKT3" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred5 = model5.predict(X_test)" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "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" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "13cZXvb0DsvK" - }, - "outputs": [], - "source": [] -======= - "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": 123, - "metadata": {}, - "outputs": [ + }, { - "data": { - "image/png": "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q1WrlnV/xMWLFzVs2DBNmTJFEydO1MSJE61yXl5eVrn88Pvvv+f6SGZERIQ1/Ur5+WRF9h/V7HX9Wdn3lQwZMkRDhgzJtczVAezq9mQvo3bt2rnOf/V9JT4+PvLy8nIZ53Q6Xe7L+LP69Omje+65R2PHjtVvv/2W5/0P2fsqt30UERFhbe/scmFhYTnKXT3u119/1YEDB/IMiVdvzysNHz5cvr6+euutt/T666/Lzc1NDRo00IQJE/L1PYz/PgQG/C1VqFDB+nBr3LixsrKyNGvWLC1evFgPPfRQnvM98sgjeumll+RwONSzZ88bWqeHh4dGjhypKVOm6LvvvvtT9bcTHByslJSUHON/+eUXSVJISIjL+Px67t8Yo48++ki+vr759scju67Dhw9Xu3btci0THR3t8vrq9mQvY/HixTnOtgvK3XffrejoaI0ePVpNmzZVZGRkruWCg4MlSSkpKS6PpkqX92d227LLpaam5lhGamqqS4AMCQmRt7d3jhsvr5yeF3d3dw0aNEiDBg3SyZMntWbNGr3wwguKi4vTkSNH5OPjk3ej8T+NwID/ChMnTtQHH3ygl19+We3atcvzSYaePXtq69atqlChgu644448l5eSkpLrGeGePXsk5d/Zd16aNGmi8ePH6+uvv1aNGjWs8fPnz5fD4VDjxo1vyXpHjRql77//Xi+88EKOM/SbFR0drbJly+qbb77RuHHjbmoZcXFxcnd3148//pjjcsXNyv6OjHPnzt30Ml566SUtXrxY/fr1y7PMfffdJ0l66623XHpIEhMTtWfPHr344ouSLl9m8/Ly0ttvv+3Sxs2bN+unn35yCQytW7fWuHHjFBwcrJIlS950/QsXLqyHHnpIP//8swYOHKhDhw4pJibmppeH/24EBvxXKFKkiIYPH67nnntO77zzjrp165ZruYiICOsbCa8lLi5Od955p9q0aaPy5cvr0qVLSkpK0uTJk+Xn56cBAwa4lD937py++uqrXJd111133XB7nn32Wc2fP1+tWrXS6NGjFRUVpU8++UQzZszQU0899ae/DOnkyZNWfc+cOWN9cdOmTZvUoUMH6wuN8ssbb7yhFi1aKC4uTr169dIdd9yhP/74Q3v27NHXX3+t999//5rzlyhRQqNHj9aLL76ogwcPWvet/Prrr9q2bZt8fX1vuM7+/v6KiorShx9+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k5aWZiRZn1P16tUzHTp0MD4+PmbAgAHWuqKioswDDzzg0gNTs2ZNExgY6NJDd+XnW9GiRY3T6TRpaWk5jpsdO3ZYx2lux01ERIQZO3asGTp0qKlbt64xxpjatWubvn37GmP+//M3+z1hTM4e1oYNG5pq1aq5bLMRI0aYZs2auYx76KGHrLp8/PHHxsvLy6WneOTIkSYoKMh07tzZdOrUydx3333GmLx7GHbu3GlWrFhhPDw8zIEDB4wxt76HoX79+i7HR0hIiFm9evUN16thw4ZmwIAB5vz58yYqKsqMHj3aGEMPQ7658mw/PDxckqwz0h07dmju3Lny8/Ozhri4OF26dEnJycmSpJ07d+r+++9XVFSU/P391ahRI0nKcQ0qO+XbmTJlipKSkrR69WpVq1ZNU6ZMUZkyZaz6pKenKzg42KVOycnJ+vHHHyVdPqupU6eOyzKvfi1JlStXtu4fyF72gQMH5O/vby03KChI58+f148//qigoCD16tVLcXFxatOmjXX9sX379vrll1/UrVs3HTx4UDNmzFD16tU1ceJESZdTsTFGwcHBSkpK0rBhw+Tu7q4qVaro999/V1ZWlqTLZ5kNGzZUyZIlrTPin3/+Ocd2rFixotzc3Fz2Wfb+2rNnj9zd3V22dfny5V1+VGzPnj2KjIx0+RnzmJgYFS5c2OUsp0SJEvL397deh4aGKiYmRoUKFXIZd2XvRW6io6OVlJRkDdlnn3v27FHVqlXl6/v/v0N/991369KlSy7X6vPaT40bN7a275X7KTExUe3atVNGRobef/99vfbaa8rKytLQoUOVlJSkJ598UqVKlZIktWrVytr+V+rdu7fmzp2rgwcPasuWLerates125gtISFBPj4+Sk5O1tGjR63x6enpOnv2rDp16iRJcnd3V+fOnRUbG6s33nhDZ86c0d69e1WvXj1Jl++jSEpKUo8ePRQdHa1x48bpiSee0IIFC/Tkk09ax1iLFi2Unp6uw4cPKzg4WNHR0bp48aKGDh2qcuXKqV+/fvr888+ttt51113av3+/9uzZo5YtWyoqKkqlSpVS9+7dlZmZqf379ysrK0t79uyRw+FQWFiY1Ybs5We/R5555hmNGTNGd999t0aOHKlvv/32urZRblq0aKFGjRpp4cKFioqK0ty5c61exRMnTujMmTNWb19aWpr1eVC1alXrl3iz35dJSUlq3ry51UN3pas/g9LS0nTq1Ck5nU55eHjIy8tLzZo1sz7fvL29FRQUpFKlSumFF15QUFCQgoODrXU3adJE0uXelv/85z86d+6cSpQoIWOMfvnlF919990ux+fdd9+doyfB7nPx6uk7duzQunXrXD7/sp98Cw0N1Ysvvqjz58+radOm1vRx48bpjz/+0I8//qgxY8Zo06ZNWrVq1TXXGxcXp3vuuUcjRoy4Zrn8sHfvXm3bts3l+OjYsaMSEhJuul5Op1OjR4/WpEmTdPz48VtS7/zytwoM2QemJOuu3Ow7ky9duqQnnnjC5QP/m2++0f79+1W6dGmdOXNGzZo1k5+fn9566y0lJiZaN4xdfYPOlX8YriUsLExlypRR48aN9f7776tfv376/vvvrfqEh4e71CcpKUl79+7V0KFDc7Qjm8nlizevrs+lS5dUs2bNHMvet2+funTpIunyDUlbtmxR/fr1tWjRIpUrV05fffWVvLy8tGDBAu3Zs0cjR45UWFiYhg0bpqVLlyowMFCenp46c+aMypQpozVr1qhLly66dOmSyx3gxhht2rRJffv21caNG/X0008rODg4x3a8cn9ltzV7OeaKLu68GGNynX71+NzWc61158XT01NlypSxhisvx+RVzyvH57WfNm7cKIfDof79+7vsp1KlSumDDz5QjRo1FB4erkWLFunnn39Wenq6ypQpo+DgYPn7+2vq1KnavHmz1q1bl2P9LVu21Pnz59WnTx+1adPG+iNxLVu2bNGUKVP04Ycfql69eurTp4+1P7Kf1rjjjjvk7u4ud3d3JSQkaPXq1bn+0l6hQoVUpkwZFS5cWF5eXho0aJAaN26sAQMGaMeOHerdu7fc3Ny0Y8cOl/dI9vpCQkLk6empkJAQ3XfffVZbd+3aZZXz8vLS119/rYULFyo8PFzvvPOOLl68qJMnT+Z6vGTPl71vHn30UR08eFDdu3fXrl27VKtWLU2bNs12O+Um+w9bx44dNWrUKD344IPKyMiQdPlGt7CwMCUlJWnAgAEKDQ3VmjVrtGbNGm3dutW6Gz77CQBvb2+XbXGlq99Lbm5ueuqppzRz5kx17txZAQEBKl++vL7//nuVLl1aDodDgwcP1sKFCxUQEKATJ06oatWqOnnypNzc3LR69Wr5+fnpjjvu0LRp0zR9+nSX9WY/6XDl8Xn1e97uczG393+bNm1cPqPatGmj2NhYrV+/3vrj+P7771vTn3zySZUvX16LFy9W6dKl9dhjj+n555/Pcz9n+8c//qFFixa5PMVzK8yePVuZmZkux8fMmTO1ZMmSXJ/uud56devWTSVKlNCYMWNuVdXzxd8qMFxLjRo1tHv3bpcP/OzB09NTP/zwg44fP65//OMfuvfee1W+fHnbM84bUaZMGbVv317Dhw+36pOamip3d/cc9QkJCZF0+Yx227ZtLsvZvn37dbV1//79KlasWI5lX/kzpdWrV9fw4cO1efNmVapUSe+88441rVy5cnr22Wc1ePBgeXp6Wtdjg4ODde7cOX388cf68ssv1adPH1WsWFHGGP3666/W/CVKlFDfvn1VvXp1jRkzRr/99ptOnTp13durQoUKyszMdGnv3r17XR5vi4mJ0eHDh3XkyBFr3Pfff69Tp06pQoUK172uPysmJkZJSUku1xi//PJLFSpUSOXKlctzvuz9FB0draZNm1p/8K7eT35+fqpdu7Y2b94sDw8Pff3115IuB5isrCyrl+bcuXM51uHm5qbu3btr/fr16t27t21bzp07p549e+qJJ55QbGysZs2apcTERL3xxhvKzMy0HlvLvlcoO3hHRUVZ96hkh88rXfnazc1Np06d0jPPPKMePXooKytL33//vfUH4vfff9e+ffusUBcTE6MvvvjCmleSvvnmG5UrV86a5u7urtjYWE2cOFGdO3eWJG3YsEExMTHWWXK27OVf+R6JjIzUk08+qSVLlmjw4MH6z3/+Y21jSbn23tjp3r27Ll26pBkzZmjt2rVKT0+XdPnYaNasmY4fP67SpUurSZMmqlKliho3biwPDw8dOHBA0uUe0xUrVuS4VyA3NWrU0N69e/XEE09o/vz52rRpk3bu3Klz585ZbXBzc1NsbKz1BzY5OVlr166VdLmXLD09XS+++KJ27txp7aOAgABFRERY2z/b5s2b//Qxlv2ZXKJECevzKSAgQL6+vipfvrzWrFljBensz7KgoCA5nU4rrL/88svat29fjkcPr1anTh21a9dOzz///J+q87VkZmZq/vz5mjx5co4T06ioKJcnj260XoUKFdL48eM1c+ZM6xi8HRVoYDh16lSOs+TcHlG5HsOGDdOWLVvUr18/JSUlaf/+/Vq+fLn69+8vSSpevLg8PT01bdo0HTx4UMuXL9crr7ySn83R4MGD9dFHH2n79u2KjY1VvXr19MADD2jlypU6dOiQNm/erJdeesn6I9m/f3/Nnj1b8+bN0/79+zVmzBh9++23ts80d+3aVSEhIbr//vu1adMmJScna8OGDRowYICOHj2q5ORkDR8+XFu2bNFPP/2kVatW6YcfftDKlSuVkJCgTp06aeHChZoxY4bGjh0rp9NpfTjUrFlTktShQwdFRUUpOTlZy5cvV1RUlMaNG2fV4ciRI1q5cqX27dunSZMmyc3NTampqbZnAtmio6PVvHlzPfbYY9q6dat27NihRx991DrrkqTY2FhVqVJFXbt21ddff61t27apR48eatiw4XVfNsoPXbt2lZeXl3r27KnvvvtO69atU//+/dW9e3ermzmv+bL30yOPPKKMjAzFxMSoRYsWWrdunT7//HO1adNGu3bt0pkzZ7Rq1SplZmYqMDBQqampCgwM1IEDB/TUU08pODjY2jdXe+WVV/Tbb78pLi7Oti3PP/+8Ll26pAkTJki6fFxMnjxZQ4cOVUJCgtLT0/X000/r1VdfVUJCgk6ePCl/f3/Vq1dPCxYskMPh0FNPPaWEhARt3LhRmZmZGjx4sL777jtduHBBb775plauXKlixYppwYIFyszM1L333qtu3brJ6XTq559/Vrdu3XTHHXfIx8dHp0+fVs+ePbVmzRo98cQTevrpp+Xv76/PPvtMQ4YM0eDBg/X555+rVatW+vDDDzV58mT9+9//lsPhUHR0tMqWLauoqCh98sknev/997V+/Xp17dpVd9xxh+6//35J0sCBA7Vy5UolJyfr66+/1tq1a633e1RUlBwOhz7++GP99ttv1h/9a8nIyFBqaqp1mW/EiBG6//77FRsbq8zMTKsHoHr16mrSpIni4uL0448/ateuXapYsaKeeeYZrVu3Tj169NB7772nixcv6sSJE9q1a5d1efBq5cuX16ZNm9SpUyd9/PHHeu211+Tp6WndbHru3Dlt3LhRSUlJKlu2rCIiIpSVlaWsrCwlJCSoadOmqlGjhooVK6YlS5bozJkz8vLykiQNHTpUEyZM0M6dO3Xx4kU9//zzVi/Jn9GvXz/98ccf6ty5s7Zt26aDBw/ql19+0c6dO5WVlaXy5cvr6aefVnJysqpXr66kpCSlpKTo+PHj1s2zoaGhGjRokP71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", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 51, + "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())" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "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": 125, - "metadata": {}, - "outputs": [ + }, { - "data": { - "image/png": "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xyFnTHAccsYExyFnTHBmDfnhw4cREhICFxcXSJKE2NhYk34iQmRkJFxcXGBlZQV/f38kJiaajCksLMSkSZPg4OAArVaLvn374vr16+Ysk7GXillDnpeXB19fXyxZsqTS/k8//RTz58/HkiVLkJCQAL1ejx49eiAnJ0ceM2XKFGzfvh2bNm3CkSNHkJubiz59+qC0tNScpTL20lCZc2HBwcEIDg6utI+IsHDhQnzwwQcYOHAgAGD16tVwdnbGhg0b8PbbbyMrKwvR0dFYu3YtAgICAADr1q2Dm5sb4uLi0LNnT3OWy9hLodrekycnJyM9PR2BgYFym1qthp+fH44ePQoA+Pnnn1FcXGwyxsXFBd7e3vKYyhQWFiI7O9tkYow9UG0hT09PBwA4OzubtDs7O8t96enpsLS0RN26dascU5moqCjodDp5cnNzM3P1jL24qv3quiRJJo+JqELbo540ZsaMGcjKypKn1NRUs9TKmAiqLeR6vR4AKhyRMzIy5KO7Xq9HUVERMjMzqxxTGbVaDTs7O5OJMfZAtYXc09MTer0e+/btk9uKiopw6NAhdO7cGQDQtm1bWFhYmIxJS0vDuXPn5DGMsadj1qvrubm5uHz5svw4OTkZp0+fhr29Pdzd3TFlyhTMnTsXjRs3RuPGjTF37lxYW1tjxIgRAACdToexY8di2rRpqFevHuzt7TF9+nT4+PjIV9sZY0/HrCE/ceIEunbtKj+eOnUqACAsLAyrVq3Ce++9h/z8fIwfPx6ZmZno2LEj9u7dC1tbW3meBQsWQKVSYciQIcjPz0f37t2xatUqKJVKc5bK2EvDrCH39/cHEVXZL0kSIiMjERkZWeUYjUaDxYsXY/HixeYsjbGXFn92nTHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBccgZExyHnDHBVXvIPTw8IElShWnChAkAgPDw8Ap9nTp1qu4yGROGqrpXmJCQgNLSUvnxuXPn0KNHDwwePFhuCwoK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", - "text/plain": [ - "
" + "cell_type": "code", + "execution_count": 52, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7IkE-RAmiWNo", + "outputId": "d69e485e-0462-409a-f9aa-59e5ca7c4bef" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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.8861111111111111\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)" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "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": 127, - "metadata": {}, - "outputs": [ + }, { - "data": { - "image/png": "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", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": { + "id": "A_J776rtiovq" + }, + "source": [ + "## 6. AdaBoostRegressor" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "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": 135, - "metadata": {}, - "outputs": [ + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "id": "HNq66cXRiYPJ" + }, + "outputs": [], + "source": [ + "from sklearn.ensemble import AdaBoostRegressor\n", + "# Create an AdaBoost model\n", + "model6 = AdaBoostRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "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": 55, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "P0oB5wjQivBr", + "outputId": "827e151d-e13e-4924-ef50-c5e1d13f6161" + }, + "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": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model6.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "id": "Bf1m5ukOi2VM" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred6 = model6.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "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": 58, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BsajWJGBjC80", + "outputId": "076cff01-ff0a-449b-d86c-df9f1363fecd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 10.504089217159294\n", + "MAE: 8.746118088217727\n", + "MAPE: 0.20512996006219347\n", + "Accuracy: 0.9943462897526502\n", + "Precision: 0.9939879759519038\n", + "Confusion Matrix:\n", + " [[911 3]\n", + " [ 5 496]]\n", + "Recall: 0.9900199600798403\n", + "F1 Score: 0.992\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": 59, + "metadata": { + "id": "23DZ2biSjF9a" + }, + "outputs": [], + "source": [ + "from sklearn.tree import DecisionTreeRegressor\n", + "# Create a Decision Tree model\n", + "model7 = DecisionTreeRegressor()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "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": 61, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "6mQEQf-ykc9F", + "outputId": "78dc7661-96e4-46af-b65a-c705018c58a3" + }, + "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": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model7.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": { + "id": "BFJ9q_tvkgRC" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred7 = model7.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "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": 64, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "AnZXMYb8kooV", + "outputId": "93527d46-9366-49ce-b895-7a12ae87f742" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 3.136698143876249\n", + "MAE: 1.6416165234385407\n", + "MAPE: 0.010224639636659394\n", + "Accuracy: 0.8600706713780919\n", + "Precision: 0.8687845303867403\n", + "Confusion Matrix:\n", + " [[588 95]\n", + " [103 629]]\n", + "Recall: 0.8592896174863388\n", + "F1 Score: 0.864010989010989\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": 65, + "metadata": { + "id": "JVDSed7yktFY" + }, + "outputs": [], + "source": [ + "from sklearn.neighbors import KNeighborsRegressor\n", + "from sklearn.model_selection import GridSearchCV\n", + "# Create a KNN model\n", + "model8 = KNeighborsRegressor()\n", + "param_grid = {'n_neighbors':[3, 5, 7, 9, 11, 15, 20, 23, 25, 30, 60, 70, 150]}\n", + "GV_KNN = GridSearchCV(model8, param_grid, cv=5, scoring='neg_mean_squared_error')" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "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": 67, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "9fn64o-ZlBka", + "outputId": "bc388b6b-cf36-4a91-eb52-8fe7a861308b" + }, + "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": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Train the model\n", + "model8.fit(X_train, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "id": "hbfbbjcSlDn7" + }, + "outputs": [], + "source": [ + "# Make predictions on the test set\n", + "pred8 = model8.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "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())" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "[LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.000420 seconds.\n", - "You can set `force_row_wise=true` to remove the overhead.\n", - "And if memory is not enough, you can set `force_col_wise=true`.\n", - "[LightGBM] [Info] Total Bins 1020\n", - "[LightGBM] [Info] Number of data points in the train set: 5659, number of used features: 4\n", - "[LightGBM] [Info] Start training from score 181.385070\n", - "LightGBM Metrics: (2.5004678527479367, 1.4593112955917007, 0.009870401910502258, 0.896113074204947, 0.8892086330935252, array([[650, 77],\n", - " [ 70, 618]], dtype=int64), 0.8982558139534884, 0.8937093275488069)\n", - "CatBoost Metrics: (2.820023475303284, 1.694133282525543, 0.012356791551784154, 0.8989399293286219, 0.9116809116809117, array([[632, 62],\n", - " [ 81, 640]], dtype=int64), 0.8876560332871013, 0.8995080815179198)\n" - ] + "cell_type": "code", + "execution_count": 70, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IPoDRkcMlMAr", + "outputId": "5aee40b5-c7c1-4fad-f419-37d08a504146" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "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": "code", + "execution_count": 71, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "5qW5X1Xe8Js7", + "outputId": "6abf26c0-873e-42e2-9aab-c2bd93a5ae84" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
KNeighborsRegressor(n_neighbors=150)
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(n_neighbors=150)" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GV_KNN.fit(X_train, y_train)\n", + "pred8_1 = GV_KNN.predict(X_test)\n", + "GV_KNN.best_estimator_" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": { + "id": "voNSUlHk8Js7" + }, + "outputs": [], + "source": [ + "# Calculate evaluation metrics with grid search\n", + "rmse8_1 = np.sqrt(mean_squared_error(y_test, pred8_1))\n", + "mae8_1 = mean_absolute_error(y_test, pred8_1)\n", + "mape8_1 = mean_absolute_percentage_error(y_test, pred8_1)\n", + "accuracy8_1 = accuracy_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "precision8_1 = precision_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "confusion8_1 = confusion_matrix(y_test > pred8_1, y_test > pred8_1.round())\n", + "recall8_1 = recall_score(y_test > pred8_1, y_test > pred8_1.round())\n", + "f18_1 = f1_score(y_test > pred8_1, y_test > pred8_1.round())" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VMnot_fX8Js8", + "outputId": "71c354e6-71e6-4d31-ee2f-2a03f65d24fe" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 137.20694663964096\n", + "MAE: 101.08872313712585\n", + "MAPE: 1.7323302969000884\n", + "Accuracy: 0.9985865724381625\n", + "Precision: 1.0\n", + "Confusion Matrix:\n", + " [[865 0]\n", + " [ 2 548]]\n", + "Recall: 0.9963636363636363\n", + "F1 Score: 0.9981785063752276\n" + ] + } + ], + "source": [ + "# Print the evaluation metrics with grid search\n", + "print(\"RMSE:\", rmse8_1)\n", + "print(\"MAE:\", mae8_1)\n", + "print(\"MAPE:\", mape8_1)\n", + "print(\"Accuracy:\", accuracy8_1)\n", + "print(\"Precision:\", precision8_1)\n", + "print(\"Confusion Matrix:\\n\", confusion8_1)\n", + "print(\"Recall:\", recall8_1)\n", + "print(\"F1 Score:\", f18_1)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 524 + }, + "id": "Swebseye8Js8", + "outputId": "c501acf3-094c-4ba6-f0d7-1a0901cdb2e0" + }, + "outputs": [ + { + "data": { + "image/png": "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umw2mxYtWhRynf7vOQSobvLaa69p7ty5mj9/vrZv365Ro0YpNzdXlZWVZpcWdTZv3qz8/Hxt3bpVhYWFamlp0eTJk1VfXx9sM2fOHK1Zs0ZvvPGGNm/erPLyct10000mVh193n//ff32t7/V5ZdfHnKdvu85X331la6++mrFxsbqrbfeUmlpqX71q1/pvPPOC7Z55pln9MILL2jp0qV67733lJiYqNzcXDU2NppYeXT45S9/qSVLlmjx4sX6+OOP9ctf/lLPPPOMfvOb3wTb0P/dp76+XqNGjdKLL77Y4f1w+vr222/X7t27VVhYqLVr1+qdd97R/fff31sfIaKdrv+PHTum7du36/HHH9f27dv1xz/+UXv37tX3vve9kHb0/9k70+//gNWrV2vr1q0aPHhwu3v0fw8y0C3Gjx9v5OfnB9/7fD5j8ODBxsKFC02sqm+orKw0JBmbN282DMMwampqjNjYWOONN94Itvn4448NSUZRUZFZZUaVuro64+KLLzYKCwuNb33rW8aDDz5oGAZ939PmzZtnfPOb3+z0vt/vN9LT041nn302eK2mpsZwuVzGH/7wh94oMarl5eUZ99xzT8i1m266ybj99tsNw6D/e5IkY/Xq1cH34fR1aWmpIcl4//33g23eeustw2azGV988UWv1R4NTu3/jhQXFxuSjAMHDhiGQf93p876//PPPzfOP/98o6SkxLjggguM5557LniP/u9ZjEB1g+bmZm3btk2TJk0KXrPb7Zo0aZKKiopMrKxvqK2tlSSlpqZKkrZt26aWlpaQn8ell16qoUOH8vPoJvn5+crLywvpY4m+72l//vOfNXbsWP3gBz9QWlqarrzySr388svB+2VlZfJ4PCH9n5KSogkTJtD/3eAb3/iG1q9fr08++USS9NFHH+ndd9/Vd7/7XUn0f28Kp6+LiorUr18/jR07Nthm0qRJstvteu+993q95mhXW1srm82mfv36SaL/e5rf79edd96phx56SF//+tfb3af/e1aM2QVEgyNHjsjn82nQoEEh1wcNGqQ9e/aYVFXf4Pf7NXv2bF199dUaMWKEJMnj8cjpdAb/EA8YNGiQPB6PCVVGl1WrVmn79u16//33292j73vW/v37tWTJEs2dO1c/+clP9P777+uBBx6Q0+nUtGnTgn3c0Z9F9P+5e+SRR+T1enXppZfK4XDI5/PpF7/4hW6//XZJov97UTh97fF4lJaWFnI/JiZGqamp/Dy6WWNjo+bNm6fbbrtNbrdbEv3f0375y18qJiZGDzzwQIf36f+eRYBCRMvPz1dJSYneffdds0vpEw4dOqQHH3xQhYWFiouLM7ucPsfv92vs2LF66qmnJElXXnmlSkpKtHTpUk2bNs3k6qLf66+/rldffVUrV67U17/+de3YsUOzZ8/W4MGD6X/0WS0tLfqXf/kXGYahJUuWmF1On7Bt2zY9//zz2r59u2w2m9nl9ElM4esGAwYMkMPhaLfT2OHDh5Wenm5SVdFv5syZWrt2rTZu3KghQ4YEr6enp6u5uVk1NTUh7fl5nLtt27apsrJSo0ePVkxMjGJiYrR582a98MILiomJ0aBBg+j7HpSRkaHs7OyQa5dddpkOHjwoScE+5s+invHQQw/pkUce0a233qqRI0fqzjvv1Jw5c7Rw4UJJ9H9vCqev09PT223k1Nraqurqan4e3SQQng4cOKDCwsLg6JNE//ekv/3tb6qsrNTQoUODfxcfOHBA//7v/65hw4ZJov97GgGqGzidTo0ZM0br168PXvP7/Vq/fr1ycnJMrCw6GYahmTNnavXq1dqwYYOysrJC7o8ZM0axsbEhP4+9e/fq4MGD/DzO0be//W3t2rVLO3bsCL7Gjh2r22+/Pfhr+r7nXH311e227P/kk090wQUXSJKysrKUnp4e0v9er1fvvfce/d8Njh07Jrs99K9Nh8Mhv98vif7vTeH0dU5OjmpqarRt27Zgmw0bNsjv92vChAm9XnO0CYSnTz/9VH/961/Vv3//kPv0f8+58847tXPnzpC/iwcPHqyHHnpIb7/9tiT6v8eZvYtFtFi1apXhcrmM5cuXG6Wlpcb9999v9OvXz/B4PGaXFnVmzJhhpKSkGJs2bTIqKiqCr2PHjgXbTJ8+3Rg6dKixYcMG44MPPjBycnKMnJwcE6uOXm134TMM+r4nFRcXGzExMcYvfvEL49NPPzVeffVVIyEhwVixYkWwzdNPP23069fPePPNN42dO3caN954o5GVlWU0NDSYWHl0mDZtmnH++ecba9euNcrKyow//vGPxoABA4yHH3442Ib+7z51dXXGhx9+aHz44YeGJOPXv/618eGHHwZ3eQunr6dMmWJceeWVxnvvvWe8++67xsUXX2zcdtttZn2kiHK6/m9ubja+973vGUOGDDF27NgR8ndxU1NT8Bn0/9k70+//U526C59h0P89iQDVjX7zm98YQ4cONZxOpzF+/Hhj69atZpcUlSR1+Fq2bFmwTUNDg/Fv//ZvxnnnnWckJCQY//zP/2xUVFSYV3QUOzVA0fc9a82aNcaIESMMl8tlXHrppcbvfve7kPt+v994/PHHjUGDBhkul8v49re/bezdu9ekaqOL1+s1HnzwQWPo0KFGXFycceGFFxo//elPQ/7BSP93n40bN3b4Z/20adMMwwivr7/88kvjtttuM5KSkgy3223cfffdRl1dnQmfJvKcrv/Lyso6/bt448aNwWfQ/2fvTL//T9VRgKL/e47NMNocoQ4AAAAA6BRroAAAAAAgTAQoAAAAAAgTAQoAAAAAwkSAAgAAAIAwEaAAAAAAIEwEKAAAAAAIEwEKAAAAAMJEgAIAAACAMBGgAAAAACBMBCgAAAAACBMBCgAAAADC9P8D/+8PbuAfWTAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "results = GV_KNN.cv_results_\n", + "mse = -results['mean_test_score']\n", + "k_values = results['param_n_neighbors'].data\n", + "plt.figure(figsize=(10, 6))\n", + "plt.plot(k_values, mse, marker='o', linestyle='-')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3aOBO56I8Js8" + }, + "source": [ + "The code shows that the elboq point occurs around n=30." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "X5XtlzMXljps" + }, + "source": [ + "## 9. Artificial Neural Networks (ANN)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "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": 76, + "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": 77, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vd1fDjQiltP4", + "outputId": "54545c64-073b-41c5-d03a-cc9cbff204f2" + }, + "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": 78, + "metadata": { + "id": "ZIf94WLMlv04" + }, + "outputs": [], + "source": [ + "# Compile the model\n", + "model9.compile(loss='mean_squared_error', optimizer='adam')" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FX5DTKqslxWf", + "outputId": "d2353bcd-1508-469b-e4a4-9344af25a2cc" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 79, + "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": 80, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "OVW2qpNsmGVq", + "outputId": "36e4620e-9823-4b12-d6d2-509c0bcf2a88" + }, + "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" + ] + } + ], + "source": [ + "# Make predictions on the test set\n", + "pred9 = model9.predict(X_test_scaled).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "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": 82, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5zuwkC1emmh3", + "outputId": "3154af15-1dba-4edc-9b4e-f012f6ff6886" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 2.7525331773064208\n", + "MAE: 1.7070852219826735\n", + "MAPE: 0.011166669166884299\n", + "Accuracy: 0.901060070671378\n", + "Precision: 0.9446640316205533\n", + "Confusion Matrix:\n", + " [[558 42]\n", + " [ 98 717]]\n", + "Recall: 0.8797546012269939\n", + "F1 Score: 0.9110546378653113\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": 83, + "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": 84, + "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": 85, + "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": 86, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "r066pVYpnXH5", + "outputId": "faddb972-58cc-43a7-eb04-4829ec65f019" + }, + "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": [ + "# 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": 87, + "metadata": { + "id": "YpSfHu6gov35" + }, + "outputs": [], + "source": [ + "# Compile the model\n", + "model.compile(loss='mean_squared_error', optimizer='adam')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0vHjcluaoxzP", + "outputId": "8ca3e888-84d1-4c79-e045-cfa9d3e76d5f" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 88, + "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": 89, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gEE06_TjozYv", + "outputId": "5a39a4df-0a56-45f5-ac4b-c2b00f0f15d0" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m44/44\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 9ms/step\n" + ] + } + ], + "source": [ + "# Make predictions on the test set\n", + "y_pred = model.predict(X_test_reshaped).flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "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": 91, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "i_6-UUDhpi0c", + "outputId": "af51da10-aedc-479d-80ca-96880408422c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE: 11.43451426022395\n", + "MAE: 9.387460991819042\n", + "MAPE: 0.1689158970124316\n", + "Accuracy: 0.9957325746799431\n", + "Precision: 0.9965277777777778\n", + "Recall: 0.9930795847750865\n", + "F1 Score: 0.9948006932409013\n", + "Confusion Matrix:\n", + " [[826 2]\n", + " [ 4 574]]\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", + "execution_count": 92, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "qpWPtph9CGip", + "outputId": "746d4c8b-bd76-4873-d9b3-b21e078b15bd" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABE9klEQVR4nO3deXhM9+LH8c8kZBFJrNmKiKWiqP0GRauClqqtiqvXllu9FbXVbWmLul2Utm6L4rYlVENUieqGNIq217XH0qo1liJBySIIkvP7w2N+HQkyMjGT0/freeZ5mu85c84nyan55DvnnLEYhmEIAADApNycHQAAAKAoUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAAICpUXYAOM2rr74qi8WiM2fOFPm+Vq5cqQYNGsjLy0sWi0VpaWlFvs/ibN68ebJYLDp8+LCzowCFRtkBisD1F4o/PgICAtSmTRt9++23dz3Pl19+qc6dOyswMFAeHh4qV66cWrdurXfffVcZGRl3Pc/d9vvvv+vJJ5+Ut7e3PvjgAy1YsEA+Pj63fd7MmTNlsVgUERFxF1ICKColnB0AMLN//etfCgsLk2EYSk1N1bx589SxY0d9+eWXeuyxx4p8/7m5uYqKitK8efNUr149DRkyRJUrV1ZmZqY2bNigV155Rd98840SExOLPIszbd68WZmZmXrttdcUGRlZ4OfFxsaqatWq2rRpkw4cOKAaNWoUYUrX8re//U29e/eWp6ens6MAhUbZAYrQo48+qiZNmli/joqKUmBgoBYtWuSQspObm6vLly/Ly8sr3+VTpkzRvHnzNHLkSL377ruyWCzWZcOHD9fJkyf1ySefFGofxcGpU6ckSWXKlCnwc5KTk/Xf//5Xy5Yt0zPPPKPY2FhNmDChiBIWTlZWVoFmquzh7u4ud3d3h24TcBbexgLuojJlysjb21slStj+nfHOO++oRYsWKl++vLy9vdW4cWN9/vnneZ5vsVg0dOhQxcbGqk6dOvL09NTKlSvz3deFCxc0efJk1alTR2+//bZN0bkuODhYL774YoH3cSc5a9WqJS8vLzVu3Fjr16/PN2taWpoGDBigMmXKyN/fXwMHDtSFCxfy/yHeYMmSJWrcuLG8vb1VoUIFPfXUUzp+/Lh1+UMPPaT+/ftLkpo2bSqLxaIBAwbcdruxsbEqW7asOnXqpCeeeEKxsbE3zT5y5EhVrVpVnp6eqlSpkvr162dzHtKlS5f06quv6t5775WXl5eCg4PVvXt3HTx4UJK0du1aWSwWrV271mbbhw8flsVi0bx586xjAwYMUOnSpXXw4EF17NhRvr6+6tu3ryTphx9+UM+ePVWlShV5enqqcuXKGjlypC5evJgn96+//qonn3xSFStWlLe3t2rVqqWXX37Zuvxm5+x8++23atWqlXx8fOTr66tOnTrp559/tlknJSVFAwcOVKVKleTp6ang4GB16dKF83/gNMzsAEUoPT1dZ86ckWEYOnXqlKZPn67z58/rqaeeslnv/fff1+OPP66+ffvq8uXLiouLU8+ePfXVV1+pU6dONuuuWbNGn332mYYOHaoKFSqoatWq+e77xx9/VFpamkaPHm33X+g324c9OdetW6fFixdr2LBh8vT01MyZM/XII49o06ZNqlu3rs26Tz75pMLCwjRp0iRt27ZNH3/8sQICAjR58uRb5pw3b54GDhyopk2batKkSUpNTdX777+vn376Sdu3b1eZMmX08ssvq1atWvrwww+tbytWr179tj+D2NhYde/eXR4eHurTp49mzZqlzZs3q2nTptZ1zp8/r1atWmnPnj0aNGiQGjVqpDNnzmjFihX67bffVKFCBeXk5Oixxx5TYmKievfureHDhyszM1MJCQnavXt3gbLc6OrVq+rQoYNatmypd955R6VKlZJ0rfhduHBBzz77rMqXL69NmzZp+vTp+u2337RkyRLr83fu3KlWrVqpZMmSGjx4sKpWraqDBw/qyy+/1BtvvHHT/S5YsED9+/dXhw4dNHnyZF24cEGzZs1Sy5YttX37dutx0qNHD/3888967rnnVLVqVZ06dUoJCQk6evToTY9XoEgZABwuJibGkJTn4enpacybNy/P+hcuXLD5+vLly0bdunWNhx9+2GZckuHm5mb8/PPPt83w/vvvG5KM5cuX24xfvXrVOH36tM0jNze3QPuwJ6ckY8uWLdaxI0eOGF5eXka3bt2sYxMmTDAkGYMGDbJ5frdu3Yzy5cvf8vu7fPmyERAQYNStW9e4ePGidfyrr74yJBnjx4+3jl3/fWzevPmW27xuy5YthiQjISHBMAzDyM3NNSpVqmQMHz7cZr3x48cbkoxly5bl2cb1n+nc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ffvtt6pYsaL279+vsmXLWteZMmWKpk2bpvnz5yssLEzjxo1Thw4d9MsvvzDbBAAACvZxEWFhYQXbmMWiQ4cOFTrUdWPGjNFPP/2kH374Id/lhmEoJCREzz//vEaPHi1JSk9PV2BgoObNm6fevXsXaD98XMTdVVxvZ06uvIrjMeaquSSOsRu5ai6JY8xexeLjIm48T+duWbFihTp06KCePXtq3bp1uueeezRkyBA9/fTT1lwpKSmKjIy0Psff318RERHasGHDTctOdna2srOzrV9nZGQU7TcCAACcxmH32SkKhw4d0qxZs1SzZk2tWrVKzz77rIYNG6b58+dLklJSUiRdu8fPHwUGBlqX5WfSpEny9/e3PipXrlx03wQAAHAqu6/GkqTffvtNK1as0NGjR3X58mWbZVOnTnVIMEnKzc1VkyZN9Oabb0qSGjZsqN27d2v27Nnq37//HW937NixGjVqlPXrjIwMCg8AACZld9lJTEzU448/rmrVqunXX39V3bp1dfjwYRmGoUaNGjk0XHBwsO677z6bsdq1a2vp0qWSpKCgIElSamqqgoODreukpqbe8gaHnp6e8vT0dGhWAADgmux+G2vs2LEaPXq0du3aJS8vLy1dulTHjh3Tgw8+qJ49ezo03AMPPJDnIyj27dun0NBQSddOnA4KClJiYqJ1eUZGhjZu3KjmzZs7NAsAACimDDuVLl3aOHDggGEYhlGmTBlj9+7dhmEYRlJSkhEaGmrv5m5p06ZNRokSJYw33njD2L9/vxEbG2uUKlXK+PTTT63rvPXWW0aZMmWML774wti5c6fRpUsXIywszLh48WKB95Oenm5IMtLT0x2a3zAM49o56M55FMdczsxGrj/HMeaquTjGik8ujjHH57pTBX39tvttLB8fH+t5OsHBwTp48KDq1KkjSTpz5owje5iaNm2q+Ph4jR07Vv/6178UFham9957T3379rWu88ILLygrK0uDBw9WWlqaWrZsqZUrV3KPHQAAIKmA99n5o65du6pTp056+umnNXr0aH3xxRcaMGCAli1bprJly+q7774rqqxFhvvs3F23O+Jc9T4Q5MqrOB5jrppL4hi7kavmkjjG7GVf0yg4h95nR5LOnj2rcuXKaerUqTp//rwkaeLEiTp//rwWL16smjVrOvRKLAAAAEcocNkJCQlR165dFRUVpXbt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mze/23EBAIALcumZnejoaC1cuFBffPGFfH19refh+Pv7y9vbW/7+/oqKitKoUaNUrlw5+fn56bnnnlPz5s0LfCUWAAAwN5cuO7NmzZIkPfTQQzbjMTExGjBggCTp3//+t9zc3NSjRw9lZ2erQ4cOmjlz5l1OCgAAXFWxus9OUeE+O3dXcb0PBLnyKo7HmKvmkjjGbuSquSSOMXtxnx0AAIAiRNkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmRtkBAACmZpqy88EHH6hq1ary8vJSRESENm3a5OxIAADABZii7CxevFijRo3ShAkTtG3bNtWvX18dOnTQqVOnnB0NAAA4mSnKztSpU/X0009r4MCBuu+++zR79myVKlVKc+fOdXY0AADgZMW+7Fy+fFlbt25VZGSkdczNzU2RkZHasGGDE5MBAABXUMLZAQrrzJkzysnJUWBgoM14YGCgfv3113yfk52drezsbOvX6enpkqSMjIyiC+oErvrtkMs+rppLct1s5LIPueznqtn+bLmuv24bhnHL9Yp92bkTkyZN0sSJE/OMV65c2Qlpio6/v7MT5I9c9nHVXJLrZiOXfchlP1fN9mfNlZmZKf9b7KTYl50KFSrI3d1dqampNuOpqakKCgrK9zljx47VqFGjrF/n5ubq7NmzKl++vCwWS5HmLaiMjAxVrlxZx44dk5+fn7Pj2HDVbOSyj6vmklw3G7nsQy77uWo2V81lGIYyMzMVEhJyy/WKfdnx8PBQ48aNlZiYqK5du0q6Vl4S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y5fl7u6uoKAgl/l8KgD/j7ID/AmcP39eixcv1rPPPqtOnTpp3rx5edb58ssv1bRpU3l5ealChQrq1q2bdVl2drZefPFFVa5cWZ6enqpRo4bmzJkjSZo3b57KlCljs63ly5fLYrFYv3711VfVoEEDffzxxwoLC5OXl5ckaeXKlWrZsqXKlCmj8uXL67HHHtPBgwdttvXbb7+pT58+KleunHx8fNSkSRNt3LhRhw8flpubm7Zs2WKz/nvvvafQ0NB8P+n6qaee0sWLF7V06VKb8eTkZK1du1ZRUVE6ePCgunTposDAQJUuXVpNmzbVd999Z7N+1apV9dprr6lfv37y8/PT4MGD87yNlZOTo6ioKIWFhcnb21u1atXS+++/n89vR5o4caIqVqwoPz8//eMf/7hlGczOztbo0aN1zz33yMfHRxEREVq7dq11+ZEjR9S5c2eVLVtWPj4+qlOnjr755pubbg/4M6DsAH8Cn332mcLDw1WrVi099dRTmjt3rv54i62vv/5a3bp1U8eOHbV9+3YlJibqL3/5i3V5v379tGjRIk2bNk179uzRf/7zH7vvOnvgwAEtXbpUy5YtsxaCrKwsjRo1Slu2bFFiYqLc3NzUrVs3a1E5f/68HnzwQR0/flwrVqzQjh079MILLyg3N1dVq1ZVZGSkYmJibPYTExOjAQMGyM0t7z9vFSpUUJcuXTR37lyb8Xnz5qlSpUpq3769zp8/r44dOyoxMVHbt2/XI488os6dO+vo0aM2z3nnnXdUv359bd++XePGjcuzr9zcXFWqVElLlizRL7/8ovHjx+ull17SZ599ZrNeYmKi9uzZo7Vr12rRokVatmyZJk6ceNOf49ChQ7VhwwbFxcVp586d6tmzpx555BHt379fkhQdHa3s7GytX79eu3bt0uTJk7lDMODEDyEFcJe0aNHCeO+99wzDMIwrV64YFSpUML7//nvr8ubNmxt9+/bN97l79+41JBkJCQn5Lo+JiTH8/f1txuLj440//vMyYcIEo2TJksapU6dumfP06dOGJGPXrl2GYRjGf/7zH8PX19f4/fff811/8eLFRtmyZY1Lly4ZhmEYW7duNSwWi5GcnHzTfaxcudKwWCzGoUOHDMO49inOoaGhxiuvvHLT59SpU8eYPn269evQ0FCja9euNuskJycbkozt27ffdDvR0dFGjx49rF/379/fKFeunJGVlWUdmzVrllG6dGkjJyfHMAzbT6Q/cuSI4e7ubhw/ftxmu23btjXGjh1rGIZh1KtXz3j11VdvmgH4M2JmBzC5vXv3atOmTerTp48kqUSJEurVq5f1bShJSkpKUtu2bfN9flJSktzd3fXggw8WKkdoaKgqVqxoM7Z//3716dNH1apVk5+fn6pWrSpJ1lmUpKQkNWzYUOXKlct3m127dpW7u7vi4+MlXZuhadOmjXU7+WnXrp0qVapknRFKTEzU0aNHNXDgQEnXZpNGjx6t2rVrq0yZMipdurT27NmTZ2anSZMmt/2eP/jgAzVu3FgVK1ZU6dKl9eGHH+bZTv369VWqVCnr182bN9f58+d17NixPNvbtWuXcnJydO+999p8rtO6deusb/8NGzZMr7/+uh544AFNmDBBO3fuvG1OwOwoO4DJzZkzR1evXlVISIhKlCihEiVKaNasWVq6dKnS09MlSd7e3jd9/q2WSZKbm5vNW2KSdOXKlTzr+fj45Bnr3Lmzzp49q48++kgbN27Uxo0bJf3/Ccy327eHh4f69eunmJgYXb58WQsXLtSgQYNum3fAgAGaP3++cnNzFRMTozZt2qhatWqSpNGjRys+Pl5vvvmmfvjhByUlJalevXp5zqPJ7/v5o7i4OI0ePVpRUVFavXq1kpKSNHDgwEKdnH3+/Hm5u7tr69atSkpKsj727NljPR/o73//uw4dOqS//e1v2rVrl5o0aaLp06ff8T4BM6DsACZ29epVffLJJ3r33XdtXhx37NihkJAQLVq0SJJ0//33KzExMd9t1KtXT7m5uVq3bl2+yytWrKjMzExlZWVZxwpyr5nff/9de/fu1SuvvKK2bduqdu3aOnfunM06999/v5KSknT27Nmbbufvf/+7vvvuO82cOVNXr15V9+7db7vvgQMH6tixY1q2bJni4+MVFRVlXfbTTz9pwIAB6tatm+rVq6egoCAdPnz4ttu80U8//aQWLVpoyJAhatiwoWrUqJHn5GtJ2rFjh83VYf/73/9UunRpVa5cOc+6DRs2VE5Ojk6dOqUaNWrYPIKCgqzrVa5cWf/4xz+0bNkyPf/88/roo4/szg+YCWUHMLGvvvpK586dU1RUlOrWrWvz6NGjh/WtrAkTJmjRokWaMGGC9uzZYz2xVbp25VH//v01aNAgLV++3Hrl0vUTbSMiIlSqVCm99NJLOnjwoBYuXJjv1V43Klu2rMqXL68PP/xQBw4c0Jo1azRq1Cibdfr06aOgoCB17dpVP/30kw4dOqSlS5dqw4YN1nVq166tZs2a6cUXX1SfPn1uOxskSWFhYXr44Yc1ePBgeXp62hSkmjVrWk+i3rFjh/7617/me2XX7dSsWVNbtmzRqlWrtG/fPo0bN06bN2/Os97ly5cVFRWlX375Rd98840mTJigoUOH5nuC9b333qu+ffuqX79+WrZsmZKTk7Vp0yZNmjRJX3/9tSRpxIgRWrVqlZKTk7Vt2zZ9//33ql27tt35ATOh7AAmNmfOHEVGRsrf3z/Psh49emjLli3auXOnHnroIS1ZskQrVqxQgwYN9PDDD2vTpk3WdWfNmqUnnnhCQ4YMUXh4uJ5++mnrTE65cuX06aef6ptvvlG9evW0aNEivfrqq7fN5ubmpri4OG3dulV169bVyJEj9fbbb9us4+HhodWrVysgIEAdO3ZUvXr19NZbb8nd3d1mvaioKF2+fPm2b2Hd+Jxz587pr3/9q/VSeEmaOnWqypYtqxYtWqhz587q0KGDGjVqVODtXvfMM8+oe/fu6tWrlyIiIvT7779ryJAhedZr27atatasqdatW6tXr156/PHHb/nzi4mJUb9+/fT888+rVq1a6tq1qzZv3qwqVapIunbJe3R0tGrXrq1HHnlE9957r2bOnGl3fsBMLMaNb7YDQDHz2muvacmSJZyMCyBfzOwAKLbOnz+v3bt3a8aMGXruueecHQeAi6LsACi2hg4dqsaNG+uhhx6y6y0sAH8uvI0FAABMjZkdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgapQdAABgav8H/GzqtXu8YtUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, accuracy2_1*100, accuracy3*100, accuracy4*100, accuracy5*100, accuracy6*100, accuracy7*100, accuracy8*100, accuracy8_1*100, accuracy9*100, accuracy10*100]\n", + "\n", + "# List of corresponding labels for each accuracy\n", + "labels = ['1', '2', '2_1', '3', '4', '5', '6', '7', '8', '8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "RFaaCNH6Cfoa", + "outputId": "e624dad4-1663-4a68-90ec-b569e5b0b46a" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABIKElEQVR4nO3dfVxUZf7/8fdwN+ANICh3BUpmqWlKoGZZ3lHepWmYeZPhzdpWWqmblbumZW2k3Wi5pNaWZGm2Vpq1SZqpVOIdhltmZqlpJmipIBoocP3+8Mv8HEEDBWY4vZ6Px3k8mutcc53PnDkO785cZ47NGGMEAABgUR6uLgAAAKAqEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAWM7jjz8um82mX3/9tcq3lZqaqtatW8vX11c2m01Hjx6t8m0CqBjCDlCDpKSkyGazOS0hISHq3Lmzli9fXu31fPjhh+rdu7dCQ0Pl4+OjoKAg3XjjjXr++eeVm5tb7fVUt99++00DBgyQn5+fkpOT9eabb6p27dpl9j37vfPy8tIll1yiYcOGaf/+/aX6d+rUSTabTU2aNClzvJUrVzrGevfdd53Wff311+rfv78aNmwoX19fXXLJJbrppps0a9Ysp36NGjUqdTyVLN27d7/AvQK4Hy9XFwCg4qZOnaro6GgZY5Sdna2UlBT17NlTH374oW655ZYq335xcbFGjhyplJQUtWzZUvfdd58iIyN17Ngxpaena9KkSfr444+1atWqKq/FlTZt2qRjx47pySefVHx8fLmeU/Le5efna/369UpJSdEXX3yhb775Rr6+vk59fX199cMPP2jjxo1q27at07oFCxbI19dX+fn5Tu3r1q1T586dFRUVpVGjRiksLEz79u3T+vXr9eKLL+r+++936t+6dWv97W9/K1VnREREuV4PUBMQdoAaqEePHoqLi3M8HjlypEJDQ/X2229XStgpLi7WyZMnS/3xLTF9+nSlpKRo3Lhxev7552Wz2RzrHnzwQR04cEDz58+/qG3UBAcPHpQkBQYGlvs5Z753f/nLX1S/fn1NmzZNy5Yt04ABA5z6Nm7cWIWFhXr77bedwk5+fr6WLFmiXr166b333nN6zj//+U8FBARo06ZNpeoqqfdMl1xyie68885y1w/URHyNBVhAYGCg/Pz85OXl/P8vzz33nK677joFBwfLz89PsbGxpb7ykCSbzaYxY8ZowYIFuuqqq2S325Wamlrmtk6cOKFp06bpqquu0rPPPusUdEqEh4frkUceKfc2LqTOK6+8Ur6+voqNjVVaWlqZtR49elTDhg1TYGCgAgICNHz4cJ04caLsnXiWxYsXKzY2Vn5+fqpfv77uvPNOp6+bOnXqpMTERElSmzZtZLPZNGzYsHKNfaYbbrhBkvTjjz+WuX7QoEF65513VFxc7Gj78MMPdeLEiVLhqGScq666qswAFhISUuH6ACsg7AA1UE5Ojn799VcdOnRI27Zt07333qu8vLxS/4f+4osvKiYmRlOnTtXTTz8tLy8v3X777frvf/9baszPPvtM48aN0x133KEXX3xRjRo1KnPbX3zxhY4ePapBgwbJ09OzQnWfaxsVqXPt2rUaO3as7rzzTk2dOlW//fabunfvrm+++aZU3wEDBujYsWNKSkrSgAEDlJKSoieeeOIP60xJSdGAAQPk6emppKQkjRo1Su+//746dOjgmID8j3/8Q3fffbek019Nvfnmm/rrX/9aof0hSXv27JEk1atXr8z1gwcP1oEDB7RmzRpH28KFC9W1a9cyw0vDhg2VkZFR5v4oy6lTp/Trr7+WWn7//fcKvxbAbRkANca8efOMpFKL3W43KSkppfqfOHHC6fHJkydNixYtTJcuXZzaJRkPDw+zbdu2P6zhxRdfNJLM0qVLndoLCwvNoUOHnJbi4uJybaMidUoymzdvdrT99NNPxtfX1/Tr18/RNmXKFCPJjBgxwun5/fr1M8HBwed9fSdPnjQhISGmRYsW5vfff3e0f/TRR0aSmTx5sqOt5P3YtGnTecc8s++nn35qDh06ZPbt22feffdd06BBA2O3282+ffuc+nfs2NFcddVVxhhj4uLizMiRI40xxhw5csT4+PiYN954w6xevdpIMosXL3Y8b8WKFcbT09N4enqa9u3bm4cffth88skn5uTJk6VqatiwYZnHkySTlJT0h68JqCk4swPUQMnJyVq5cqVWrlypt956S507d9Zf/vIXvf/++079/Pz8HP995MgR5eTk6IYbbtCWLVtKjdmxY0c1b978D7ddcpVVnTp1nNq//vprNWjQwGn57bffyrWNitTZvn17xcbGOh5HRUXp1ltv1SeffKKioiKnvvfcc4/T4xtuuEG//fbbea8U27x5sw4ePKj77rvPaT5Rr1691LRp0zLPNlVEfHy8GjRooMjISPXv31+1a9fWsmXLdOmll57zOYMHD9b777+vkydP6t1335Wnp6f69etXZt+bbrpJ6enp6tOnj7Zu3arp06erW7duuuSSS7Rs2bJS/du1a+c4ls5cBg0adFGvE3AnTFAGaqC2bds6TVAeNGiQYmJiNGbMGN1yyy3y8fGRJH300Ud66qmnlJmZqYKCAkf/subZREdHl2vbdevWlSTl5eU5tV9++eVauXKlJGn+/Pl68803y72NitRZ1qXYV1xxhU6cOKFDhw4pLCzM0R4VFeXUr+SroiNHjsjf37/MWn766SdJ0pVXXllqXdOmTfXFF1+U+bzySk5O1hVXXKGcnBy9/vrrSktLk91uP+9zBg4cqIceekjLly/XggULdMsttzjeh7K0adPGEY62bt2qJUuWaMaMGerfv78yMzOdAmf9+vXLfSUZUFNxZgewAA8PD3Xu3FkHDhzQzp07JUmff/65+vTpI19fX7388sv6+OOPtXLlSg0ePFjGmFJjnHl25XyaNm0qSaXmhNSpU0fx8fGKj4/XZZddVuZzy9pGReusiHPNKbrYcS9G27ZtFR8fr4SEBC1btkwtWrTQ4MGDS4XHM4WHh6tTp056/vnnlZaWpsGDB5drWz4+PmrTpo2efvppzZ49W6dOndLixYsr66UANQZhB7CIwsJCSf//jMt7770nX19fffLJJxoxYoR69OhRKf8Hf8MNNyggIECLFi1yukLoQlW0zpIwd6bvv/9etWrVUoMGDS66noYNG0qSduzYUWrdjh07HOsrQ8kE6F9++UX/+te/ztt38ODB+vzzz+Xv76+ePXtWeFslZwIPHDhwQbUCNRlhB7CAU6dOacWKFfLx8VGzZs0knf5DarPZnOax7NmzR0uXLr2obdWqVUsPP/ywvvnmGz366KNlniWpyJmTitaZnp7uNJdn3759+uCDD3TzzTdX+OqwssTFxSkkJERz5sxx+kpt+fLl2r59u3r16nXR2zhTp06d1LZtW82cObPUDwSeqX///poyZYpefvllx9eUZVm9enWZ+//jjz+WVPbXc4DVMWcHqIGWL1+u7777TtLpH4pbuHChdu7cqUcffdQxF6VXr1564YUX1L17dw0ePFgHDx5UcnKyLr/8cv3vf/+7qO0/+uij2r59u5599lmtWLFCCQkJuvTSS3XkyBFt2bJFixcvVkhISLl+MLCidbZo0ULdunXTAw88ILvdrpdfflmSynVJeXl4e3tr2rRpGj58uDp27KhBgwYpOzvbcan8uHHjKmU7Z5owYYJuv/12paSklJpUXSIgIECPP/74H451//3368SJE+rXr5+aNm2qkydPat26dXrnnXfUqFEjDR8+3Kn//v379dZbb5Uap06dOurbt++FvBzA/bjyUjAAFVPWpee+vr6mdevWZvbs2U6XehtjzGuvvWaaNGli7Ha7adq0qZk3b57jsuwzSTKjR4+ucD1LliwxPXv2NA0aNDBeXl4mMDDQdOjQwTz77LPm6NGj5d5GRet86623HP1jYmLM6tWrnfqVPPfQoUNO7SX7b/fu3X/42t555x0TExNj7Ha7CQoKMkOGDDE///xzmeNV5NLzsvoWFRWZxo0bm8aNG5vCwkJjjPOl5+dS1qXny5cvNyNGjDBNmzY1derUMT4+Pubyyy83999/v8nOznZ6/vkuPW/YsOEfviagprAZ48KZegBQATabTaNHj/7D+S0AcCbm7AAAAEsj7AAAAEsj7AAAAEvjaiwANQZTDAFcCM7sAAAASyPsAAAAS+NrLEnFxcX65ZdfVLdu3TJvPAgAANyPMUbHjh1TRESEPDzOff6GsCPpl19+UWRkpKvLAAAAF2Dfvn269NJLz7mesCOpbt26kk7vrJKf2gcAAO4tNzdXkZGRjr/j50LYkRxfXfn7+xN2AACoYf5oCgoTlAEAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKURdgAAgKW5NOykpaWpd+/eioiIkM1m09KlS0v12b59u/r06aOAgADVrl1bbdq00d69ex3r8/PzNXr0aAUHB6tOnTpKSEhQdnZ2Nb4KAADgzlwado4fP65WrVopOTm5zPU//vijOnTooKZNm2rNmjX63//+p8cee0y+vr6OPuPGjdOHH36oxYsXa+3atfrll1902223VddLAAAAbs5mjDGuLkI6/euHS5YsUd++fR1tAwcOlLe3t958880yn5OTk6MGDRpo4cKF6t+/vyTpu+++U7NmzZSenq5rr722XNvOzc1VQECAcnJy+AVlAABqiPL+/XbbOTvFxcX673//qyuuuELdunVTSEiI2rVr5/RVV0ZGhk6dOqX4+HhHW9OmTRUVFaX09PRzjl1QUKDc3FynBQAAWJPbhp2DBw8qLy9PzzzzjLp3764VK1aoX79+uu2227R27VpJUlZWlnx8fBQYGOj03NDQUGVlZZ1z7KSkJAUEBDgW7ngOAIB1uW3YKS4uliTdeuutGjdunFq3bq1HH31Ut9xyi+bMmXNRY0+cOFE5OTmOZd++fZVRMgAAcENue9fz+vXry8vLS82bN3dqb9asmb744gtJUlhYmE6ePKmjR486nd3Jzs5WWFjYOce22+2y2+1VUjcAAHAvbntmx8fHR23atNGOHTuc2r///ns1bNhQkhQbGytvb2+tWrXKsX7Hjh3au3ev2rdvX631AgAA9+TSMzt5eXn64YcfHI93796tzMxMBQUFKSoqShMmTNAdd9yhG2+8UZ07d1Zqaqo+/PBDrVmzRpIUEBCgkSNHavz48QoKCpK/v7/uv/9+tW/fvtxXYv2Z2Z6wuWS7ZopbXAAIAPiTcGnY2bx5szp37ux4PH78eElSYmKiUlJS1K9fP82ZM0dJSUl64IEHdOWVV+q9995Thw4dHM+ZMWOGPDw8lJCQoIKCAnXr1k0vv/xytb8WAADgntzmd3Zc6c/6Ozuc2QEA1GQ1/nd2AAAAKgNhBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWBphBwAAWJqXqwsAALg32xM2l23bTDEu2zasgzM7AADA0gg7AADA0vgaC27HVafMOV0OANbEmR0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBpLg07aWlp6t27tyIiImSz2bR06dJz9r3nnntks9k0c+ZMp/bDhw9ryJAh8vf3V2BgoEaOHKm8vLyqLRwAANQYLg07x48fV6tWrZScnHzefkuWLNH69esVERFRat2QIUO0bds2rVy5Uh999JHS0tJ09913V1XJAACghvFy5cZ79OihHj16nLfP/v37df/99+uTTz5Rr169nNZt375dqamp2rRpk+Li4iRJs2bNUs+ePfXcc8+VGY4AAMCfi1vP2SkuLtbQoUM1YcIEXXXVVaXWp6enKzAw0BF0JCk+Pl4eHh7asGHDOcctKChQbm6u0wIAAKzJrcPOtGnT5OXlpQceeKDM9VlZWQoJCXFq8/LyUlBQkLKyss45blJSkgICAhxLZGRkpdYNAADch9uGnYyMDL344otKSUmRzWar1LEnTpyonJwcx7Jv375KHR8AALgPtw07n3/+uQ4ePKioqCh5eXnJy8tLP/30k/72t7+pUaNGkqSwsDAdPHjQ6XmFhYU6fPiwwsLCzjm23W6Xv7+/0wIAAKzJpROUz2fo0KGKj493auvWrZuGDh2q4cOHS5Lat2+vo0ePKiMjQ7GxsZKkzz77TMXFxWrXrl211wwAANyPS8NOXl6efvjhB8fj3bt3KzMzU0FBQYqKilJwcLBTf29vb4WFhenKK6+UJDVr1kzdu3fXqFGjNGfOHJ06dUpjxozRwIEDuRILAABIcvHXWJs3b1ZMTIxiYmIkSePHj1dMTIwmT55c7jEWLFigpk2bqmvXrurZs6c6dOigV155papKBgAANYxLz+x06tRJxphy99+zZ0+ptqCgIC1cuLASqwIA1AS2Jyr34pWKMFPK/7cLrue2E5QBAAAqA2EHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYmkvDTlpamnr37q2IiAjZbDYtXbrUse7UqVN65JFH1LJlS9WuXVsRERG666679MsvvziNcfjwYQ0ZMkT+/v4KDAzUyJEjlZeXV82vBAAAuCuXhp3jx4+rVatWSk5OLrXuxIkT2rJlix577DFt2bJF77//vnbs2KE+ffo49RsyZIi2bdumlStX6qOPPlJaWpruvvvu6noJAADAzXm5cuM9evRQjx49ylwXEBCglStXOrX961//Utu2bbV3715FRUVp+/btSk1N1aZNmxQXFydJmjVrlnr27KnnnntOERERVf4aAACAe6tRc3ZycnJks9kUGBgoSUpPT1dgYKAj6EhSfHy8PDw8tGHDhnOOU1BQoNzcXKcFAABYU40JO/n5+XrkkUc0aNAg+fv7S5KysrIUEhLi1M/Ly0tBQUHKyso651hJSUkKCAhwLJGRkVVaOwAAcJ0aEXZOnTqlAQMGyBij2bNnX/R4EydOVE5OjmPZt29fJVQJAADckUvn7JRHSdD56aef9NlnnznO6khSWFiYDh486NS/sLBQhw8fVlhY2DnHtNvtstvtVVYzAABwH259Zqck6OzcuVOffvqpgoODnda3b99eR48eVUZGhqPts88+U3Fxsdq1a1fd5QIAADfk0jM7eXl5+uGHHxyPd+/erczMTAUFBSk8PFz9+/fXli1b9NFHH6moqMgxDycoKEg+Pj5q1qyZunfvrlGjRmnOnDk6deqUxowZo4EDB3IlFgAAkOTisLN582Z17tzZ8Xj8+PGSpMTERD3++ONatmyZJKl169ZOz1u9erU6deokSVqwYIHGjBmjrl27ysPDQwkJCXrppZeqpX4AAOD+XBp2OnXqJGPMOdefb12JoKAgLVy4sDLLAgAAFuLWc3YAAAAuFmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYGmEHAABYWqWEnaNHj1bGMAAAAJWuwmFn2rRpeueddxyPBwwYoODgYF1yySXaunVrhcZKS0tT7969FRERIZvNpqVLlzqtN8Zo8uTJCg8Pl5+fn+Lj47Vz506nPocPH9aQIUPk7++vwMBAjRw5Unl5eRV9WQAAwKIqHHbmzJmjyMhISdLKlSu1cuVKLV++XD169NCECRMqNNbx48fVqlUrJScnl7l++vTpeumllzRnzhxt2LBBtWvXVrdu3ZSfn+/oM2TIEG3btk0rV67URx99pLS0NN19990VfVkAAMCivCr6hKysLEfY+eijjzRgwADdfPPNatSokdq1a1ehsXr06KEePXqUuc4Yo5kzZ2rSpEm69dZbJUnz589XaGioli5dqoEDB2r79u1KTU3Vpk2bFBcXJ0maNWuWevbsqeeee04REREVfXkAAMBiKnxmp169etq3b58kKTU1VfHx8ZJOh5OioqJKK2z37t3KyspyjC9JAQEBateundLT0yVJ6enpCgwMdAQdSYqPj5eHh4c2bNhQabUAAICaq8Jndm677TYNHjxYTZo00W+//eY4M/PVV1/p8ssvr7TCsrKyJEmhoaFO7aGhoY51WVlZCgkJcVrv5eWloKAgR5+yFBQUqKCgwPE4Nze3ssoGAABupsJndmbMmKExY8aoefPmWrlyperUqSNJOnDggO67775KL7AqJCUlKSAgwLGUfC0HAACsp8Jndry9vfXQQw+Vah83blylFFQiLCxMkpSdna3w8HBHe3Z2tlq3bu3oc/DgQafnFRYW6vDhw47nl2XixIkaP36843Fubi6BBwAAi7qg39l588031aFDB0VEROinn36SJM2cOVMffPBBpRUWHR2tsLAwrVq1ytGWm5urDRs2qH379pKk9u3b6+jRo8rIyHD0+eyzz1RcXHzeydJ2u13+/v5OCwAAsKYKh53Zs2dr/Pjx6tGjh44ePeqYlBwYGKiZM2dWaKy8vDxlZmYqMzNT0ulJyZmZmdq7d69sNpvGjh2rp556SsuWLdPXX3+tu+66SxEREerbt68kqVmzZurevbtGjRqljRs36ssvv9SYMWM0cOBArsQCAACSLiDszJo1S6+++qr+8Y9/yNPT09EeFxenr7/+ukJjbd68WTExMYqJiZEkjR8/XjExMZo8ebIk6eGHH9b999+vu+++W23atFFeXp5SU1Pl6+vrGGPBggVq2rSpunbtqp49e6pDhw565ZVXKvqyAACARVV4zs7u3bsd4eRMdrtdx48fr9BYnTp1kjHmnOttNpumTp2qqVOnnrNPUFCQFi5cWKHtAgCAP48Kn9mJjo52fO10ptTUVDVr1qwyagIAAKg0FT6zM378eI0ePVr5+fkyxmjjxo16++23lZSUpH//+99VUSMAAMAFq3DY+ctf/iI/Pz9NmjRJJ06c0ODBgxUREaEXX3xRAwcOrIoaAQAALliFw450+uabQ4YM0YkTJ5SXl1fqV4wBAADcxQWFnRK1atVSrVq1KqsWAACASlfhsBMdHS2bzXbO9bt27bqoggAAACpThcPO2LFjnR6fOnVKX331lVJTUzVhwoTKqgsA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AAAALlK5w07r1q315ptvSpI+//xzZWdnq0uXLo71P/74oyIiIiq/QgAAgItQ7gnKkydPVo8ePfSf//xHBw4c0LBhw5xuvrlkyRJdf/31VVIkAADAharQ7+xkZGRoxYoVCgsL0+233+60vnXr1mrbtm2lFwgAAHAxKnQj0GbNmqlZs2Zlrrv77rsrpSAAAIDKVO6wk5aWVq5+N9544wUXAwAAUNnKHXY6derkuPHnue4dWlNvBAoAAKyr3GGnXr16qlu3roYNG6ahQ4eqfv36VVkXAABApSj3pecHDhzQtGnTlJ6erpYtW2rkyJFat26d/P39FRAQ4FgAAADcSbnDjo+Pj+644w598skn+u6773T11VdrzJgxioyM1D/+8Q8VFhZWZZ0AAAAXpNxh50xRUVGaPHmyPv30U11xxRV65plnlJubW9m1AQAAXLQKh52CggItXLhQ8fHxatGiherXr6///ve/CgoKqor6AAAALkq5Jyhv3LhR8+bN06JFi9SoUSMNHz5c//nPfwg5AADArZU77Fx77bWKiorSAw88oNjYWEnSF198Uapfnz59Kq86AACAi1ShX1Deu3evnnzyyXOu53d2AACAuyl32CkuLq7KOgAAAKrEBV2NdS6///57ZQ4HAABw0Sol7BQUFOj5559XdHR0ZQwHAABQacoddgoKCjRx4kTFxcXpuuuu09KlSyVJ8+bNU3R0tGbOnKlx48ZVVZ0AAAAXpNxzdiZPnqy5c+cqPj5e69at0+23367hw4dr/fr1euGFF3T77bfL09OzKmsFAACosHKHncWLF2v+/Pnq06ePvvnmG1199dUqLCzU1q1bHXdDBwAAcDfl/hrr559/dvy+TosWLWS32zVu3DiCDgAAcGvlDjtFRUXy8fFxPPby8lKdOnWqpCgAAIDKUu6vsYwxGjZsmOx2uyQpPz9f99xzj2rXru3U7/3336/cCgEAAC5CucNOYmKi0+M777yz0osBAACobOUOO/PmzavKOgAAAKpEpf6CMgAAgLtx+7Czf/9+3XnnnQoODpafn59atmypzZs3O9YbYzR58mSFh4fLz89P8fHx2rlzpwsrBgAA7sStw86RI0d0/fXXy9vbW8uXL9e3336r559/XvXq1XP0mT59ul566SXNmTNHGzZsUO3atdWtWzfl5+e7sHIAAOAuyj1nxxWmTZumyMhI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fNiRpPHjxysxMVFxcXFq27atZs6cqePHj2v48OGuLg0AALiYJcLOHXfcoUOHDmny5MnKyspS69atlZqaWmrSMgAA+POxRNiRpDFjxpzza6uaym63a8qUKaW+cnM16qoY6qo4d62NuirGXeuS3Lc26qoaNmP+6HotAACAmqvG/6ggAADA+RB2AACApRF2AACApRF2AACApRF2KsGwYcNks9lks9nk7e2t6OhoPfzww8rP//83ISlZv379eqfnFhQUOH65ec2aNY72tWvXqkuXLgoKClKtWrXUpEkTJSYm6uTJk5KkNWvWOMY8e8nKypIk9e3b16k9ODjYpXWNHj1a+fn5evXVV3XDDTc42tu0aaONGzdWyz4p2Xa9evVUr149xcfHO237j97L999/32nczMzMaqm7c+fOTu12u129evVy+TF25v7y8vKSzWZTkyZNXF5Xhw4dSq3z8vJyeV2SNHjwYKd13t7e6t+/v8trCwsLK3N99+7dXVLXnj17Sm3XbrcrMjJS48aNU35+fpW/VzNnztSVV14pPz8/p+1Kf/xZkZaW5jTu0qVLq3R/nVlHhw4dFB0dLV9fX7Vq1colx9O2bduUkJCgRo0ayWazaebMmSpLcnKyGjVqJF9fX7Vr187p87gyEXYqSffu3XXgwAHt2rVLM2bM0Ny5czVlyhSnPpGRkZo3b55T25IlS1SnTh2ntm+//Vbdu3dXXFyc0tLS9PXXX2vWrFny8fFRUVGRU98dO3bowIEDTktISIgkqbCwUI0aNdLs2bPVoEED9e3bt9rq6tevnzp37qytW7dq8+bNev311/XWW29pypQpWrNmjQYNGiRJCg8PV25urm6++Wbt37+/yvdJybZXr16t9PR0RUZGOm1bOv97efz4cUlSUFCQzlaVddvtdsXExGjt2rVKS0vTnXfeqY8//lh33XVXlb+X56urZH9t3LhR9evXV7NmzbRnzx6XH/uS5Onp6XT81apVy+V1nTx5UitWrFCDBg30wQcf6Msvv9SUKVP0ySefuLy2zp07O/2bffHFFyVJHh7Ofyaqoq4bbrjB6b2qW7euXn75ZUnSwoULJUnBwcFKSEjQa6+9pnfeeUd///vfq3R/LFy4UI8++qimTJmi7du3O223RHk+K+rXr6+zVWbdAwYMUOfOnbV//37t2rVLMTExWrdunWJjY/Xtt9/q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5vTk6Xr16hm73W4uu+wy889//tMUFha6vLaSeWGSzIoVKxzPdVVd9957r2nQoIE5evSokU5PlvX19TWRkZHmvvvuc3yFUlX749SpU+bxxx83jRs3LnO7f/RZ8fHHH5c5fmJiYpXWvWbNGtOsWTPj6elpbDabGThwoEuOp927d5e5vmPHjk7bnzVrlomKijI+Pj6mbdu2Zv369WXWebFsxpRxPg4AAMAimLMDAAAsjbAD/J/PP//cMXenrAUApNM/yHe+z4q9e/e6ukScha+xgP/z+++/O90j62wlk+oA/LkVFhY63aj0bI0aNXJMEoZ7IOwAAABL42ssAABgaYQdAABgaYQdAABgaYQdACjD448/rtatW1foOTabTUuXLj3n+j179shmsykzM/OiagNQMYQdAE6GDRsmm80mm80mb29vRUdH6+GHHy71s/AlfdavX+/UXlBQoODgYNlsNq1Zs8bRvnbtWnXp0kVBQUGqVauWmjRposTERJ08eVKStGbNGseYZy9n3kqgREZGRpnbL9G1a1fddtttF7wfHnroIaf79gCouQg7AErp3r27Dhw4oF27dmnGjBmaO3eupkyZUqpfZGSk5s2b59S2ZMmSUr9L9O2336p79+6Ki4tTWlqavv76a82aNUs+Pj4qKipy6rtjxw4dOHDAaQkJCSm17djYWLVq1Uqvv/56qXV79uzR6tWrNXLkyAq/dmOMCgsLVadOHQUHB1f4+QDcD2EHQCl2u11hYWGKjIxU3759FR8fr5UrV5bql5iYqEWLFjnd5fn1119XYmKiU78VK1YoLCxM06dPV4sWLdS4cWN1795dr776qvz8/Jz6hoSEKCwszGk5192tR44cqXfeeafUnbFTUlIUHh6u7t27680331RcXJzq1q2rsLAwDR48WAcPHnT0LTmjtHz5csXGxsput+uLL74o9TXWpk2bdNNNN6l+/foKCAhQx44dtWXLllI1HThwQD169JCfn58uu+wyvfvuu+fe0ZK++eYb9ejRQ3Xq1FFoaKiGDh2qX3/91bH+3XffVcuWLeXn56fg4GDFx8dX6t2ngT8Dwg6A8/rmm2+0bt06+fj4lFoXGxurRo0a6b333pN0+pdl09LSNHToUKd+YWFhOnDggNLS0iq1tiFDhqigoMApUBhj9MYbb2jYsGHy9PTUqVOn9OSTT2rr1q1aunSp9uzZo2HDhpUa69FHH9Uzzzyj7du36+qrry61/tixY0pMTNQXX3yh9evXq0mTJurZs6eOHTvm1O+xxx5TQkKCtm7dqiFDhmjgwIHavn17mfUfPXpUXbp0UUxMjDZv3qzU1FRlZ2drwIABkk4Hp0GDBmnEiBHavn271qxZo9tuu038PBpQQVVye1EANVZiYqLx9PQ0tWvXNna73UgyHh4e5t1333Xqp/+7k/LMmTNN586djTHGPPHEE6Zfv36l7qRcWFhohg0b5rh7dd++fc2sWbNMTk6OY7ySOynXrl3baWnevPl56x04cKDTnZRXrVplJJmdO3eW2X/Tpk1Gkjl27JjTdpcuXerUb8qUKaZVq1bn3G5RUZGpW7eu+fDDD532yT333OPUr127dubee+81xvz/O0F/9dVXxhhjnnzySXPzzTc79d+3b5+RZHbs2GEyMjKMJLNnz57z7gMA58eZHQCldO7cWZmZmdqwYYMSExM1fPhwJSQklNn3zjvvVHp6unbt2qWUlBSNGDGiVB9PT0/NmzdPP//8s6ZPn65LLrlETz/9tK666iodOHDAqe/nn3+uzMxMx/Lxxx+ft9YRI0YoLS1NP/74o6TTX6N17NjRcXuPjIwM9e7dW1FRUapbt646duwoSaXuXxQXF3fe7WRnZ2vUqFFq0qSJAgIC5O/vr7y8vFLjtG/fvtTjc53Z2bp1q1avXu10X6WmTZtKkn788Ue1atVKXbt2VcuWLXX77bfr1Vdf1ZEjR85bJ4DSCDsASqldu7Yuv/xyxwTgDRs26LXXXiuzb3BwsG655RaNHDlS+fn56tGjxznHveSSSzR06FD961//0rZt25Sfn685c+Y49YmOjtbll1/uWBo2bHjeWrt27aqoqCilpKQoNzdX77//vmNi8vHjx9WtWzf5+/trwYIF2rRpk5YsWSJJjqvAznzN55OYmKjMzEy9+OKLWrdunTIzMxUcHFxqnIrIy8tT7969ncJdZmamdu7cqRtvvFGenp5auXKlli9frubNm2vWrFm68sortXv37gveJvBnRNgBcF4eHh76+9//rkmTJjlNRD7TiBEjtGbNGt11113y9PQs17j16tVTeHj4RU+29fDw0PDhw/XGG29o4cKF8vHxUf/+/SVJ3333nX777Tc988wzuuGGG9S0aVOnyckV8eWXX+qBBx5Qz549ddVVV8lutztNJC5x9qXw69evV7Nmzcoc85prrtG2bdvUqFEjp4B3+eWXO8KXzWbT9ddfryeeeEJfffWVfHx8HIENQPkQdgD8odtvv12enp5KTk4uc3337t116NAhTZ06tcz1c+fO1b333qsVK1boxx9/1LZt2/TII49o27Zt6t27t1PfgwcPKisry2k5derUeesbPny49u/fr7///e8aNGiQ4wqvqKgo+fj4aNasWdq1a5eWLVumJ5988gL2gNSkSRO9+eab2r59uzZs2KAhQ4aUupJMkhYvXqzXX39d33//vaZMmaKNGzdqzJgxZY45evRoHT58WIMGDdKmTZv0448/6pNPPtHw4cNVVFSkDRs26Omnn9bmzZu1d+9evf/++zp06NA5wxOAshF2APwhLy8vjRkzRtOnTy/zTIzNZlP9+vXLvGJLktq2bau8vDzdc889uuqqq9SxY0etX79eS5cudcyhKXHllVcqPDzcacnIyDhvfVFRUYqPj9eRI0ec5gw1aNBAKSkpWrx4sZo3b65nnnlGzz333AXsAem1117TkSNHdM0112jo0KF64IEHyvz9nyeeeEKLFi3S1Vdfrfnz5+vtt99W8+bNyxwzIiJCX375pYqKinTzzTerZcuWGjt2rAIDA+Xh4SF/f3+lpaWpZ8+euuKKKzRp0iQ9//zz5/2qEEBpNmO4hhEAAFgXZ3YAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAIClEXYAAICl/T/87OzQb65QZQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, rmse2_1, rmse3, rmse4, rmse5, rmse6, rmse7, rmse8, rmse8_1, rmse9, rmse10]\n", + "\n", + "# List of corresponding labels for each RMSE value\n", + "labels = ['RMSE1', 'RMSE2', 'RMSE2_1', 'RMSE3', 'RMSE4', 'RMSE5', 'RMSE6', 'RMSE7', 'RMSE8', 'RMSE8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "nrZu-K-KDCJ2", + "outputId": "d0dd5f18-77bd-41f4-c21b-09e71322b318" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/MUlEQVR4nO3deVxUZf//8fcACogCorIlKuW+pOYWmbdLFK6pueR2h2JqqZl5l+l9m2V5Z1qZS6RZKFmCS6mlpUWYW+GuZUmuuAuWKYomopzfH36dX3MDCjoww+n1fDzO4+Fc5zrn+swMMm/Ouc4Zi2EYhgAAAEzKxdEFAAAAFCbCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDgAAMDXCDoC/hVdeeUUWi0W///57oY+1evVqNWjQQB4eHrJYLDp37lyhjwkgb4QdoJiLjY2VxWKxWfz9/dW6dWutWrWqyOtZsWKFOnXqpICAAJUsWVJ+fn76xz/+obffflvnz58v8nqK2pkzZ9SzZ095enoqOjpaH3/8sby8vHLt+9f3buPGjTnWG4ahkJAQWSwWdezYMdd9nDt3zhqqkpOTc+3Tv3//HD8jNxYPD4/bf7JAMeHm6AIA2Merr76q0NBQGYahtLQ0xcbGqn379lqxYkWeH5T2lJ2drYEDByo2Nlb16tXT0KFDFRISogsXLigpKUnjxo3TV199pcTExEKvxZG2bt2qCxcu6LXXXlN4eHi+tvHw8FBcXJwefPBBm/Z169bp+PHjcnd3z3PbJUuWyGKxKDAwUAsWLNDEiRNz7efu7q4PP/wwR7urq2u+agSKM8IOYBLt2rVT48aNrY8HDhyogIAAxcfH2yXsZGdn68qVK3keCZgyZYpiY2P13HPP6e2335bFYrGue/bZZ3Xq1CnNnz//jsYoDk6fPi1J8vX1zfc27du315IlSzRjxgy5uf3/X8txcXFq1KjRTU+9ffLJJ2rfvr0qV66suLi4PMOOm5ub+vXrl++aADPhNBZgUr6+vvL09LT58JSkt956Sw888IDKlSsnT09PNWrUSJ9++mmO7S0Wi4YPH64FCxaoTp06cnd31+rVq3Md69KlS5o8ebLq1KmjN9980ybo3BAUFKQXX3wx32PcTp01atSQh4eHGjVqpPXr1+da67lz59S/f3/5+vrKx8dHAwYM0KVLl3J/Ef/HkiVL1KhRI3l6eqp8+fLq16+fTpw4YV3fqlUrRUZGSpKaNGkii8Wi/v3733K/vXv31pkzZ5SQkGBtu3Llij799FP16dMnz+2OHj2qDRs2qFevXurVq5dSUlL0ww8/5Ou5AH8nHNkBTCI9PV2///67DMPQ6dOnNXPmTGVkZOT4a3769Ol69NFH1bdvX125ckULFy5Ujx49tHLlSnXo0MGm75o1a7R48WINHz5c5cuXV5UqVXIde+PGjTp37pyef/75Ap8WyWuMgtS5bt06LVq0SCNGjJC7u7vee+89tW3bVlu2bFHdunVt+vbs2VOhoaGaNGmSduzYoQ8//FD+/v6aPHnyTeuMjY3VgAED1KRJE02aNElpaWmaPn26vv/+e+3cuVO+vr76z3/+oxo1amjOnDnW04r33HPPLV+DKlWqKCwsTPHx8WrXrp0kadWqVUpPT1evXr00Y8aMXLeLj4+Xl5eXOnbsKE9PT91zzz1asGCBHnjggVz753aEqGTJkvL29r5ljUCxZgAo1ubNm2dIyrG4u7sbsbGxOfpfunTJ5vGVK1eMunXrGm3atLFpl2S4uLgYv/zyyy1rmD59uiHJWL58uU371atXjd9++81myc7OztcYBalTkrFt2zZr25EjRwwPDw+ja9eu1raXX37ZkGRERUXZbN+1a1ejXLlyN31+V65cMfz9/Y26desaf/75p7V95cqVhiRj/Pjx1rYb78fWrVtvus//7fvuu+8aZcqUsT7vHj16GK1btzYMwzAqV65sdOjQIcf29erVM/r27Wt9/O9//9soX768kZWVZdMvMjIy158RSUZERMQt6wSKO05jASYRHR2thIQEJSQk6JNPPlHr1q315JNPaunSpTb9PD09rf8+e/as0tPT1aJFC+3YsSPHPlu2bKnatWvfcuwbV1mVLl3apn337t2qUKGCzXLmzJl8jVGQOsPCwtSoUSPr40qVKqlz5876+uuvde3aNZu+Tz31lM3jFi1a6MyZMze9Umzbtm06ffq0hg4dajOfqEOHDqpZs6a+/PLLPLfNr549e+rPP//UypUrdeHCBa1cufKmp7B++ukn7d69W71797a29e7dW7///ru+/vrrHP09PDysPx9/Xd544407rh1wdpzGAkyiadOmNhOUe/furYYNG2r48OHq2LGjSpYsKUla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8+fP2ywAAMCcnDbspKamSpICAgJs2gMCAqzrUlNT5e/vb7Pezc1Nfn5+1j65mTRpknx8fKxLSEiInasHAADOwmnDTmEaO3as0tPTrcuxY8ccXRIAACgkTht2AgMDJUlpaWk27WlpadZ1gYGBOn36tM36q1ev6o8//rD2yY27u7u8vb1tFgAAYE5OG3ZCQ0MVGBioxMREa9v58+e1efNmhYWFSZLCwsJ07tw5bd++3dpnzZo1ys7OVrNmzYq8ZgAA4HwcejVWRkaGDhw4YH2ckpKiXbt2yc/PT5UqVdLIkSM1ceJEVatWzXrpeXBwsLp06SJJqlWrltq2batBgwZp9uzZysrK0vDhw9WrVy+uxAIAAJIcHHa2bdum1q1bWx+PGjVKkhQZGanY2FiNHj1aFy9e1ODBg3Xu3Dk9+OCDWr16tfUeO5K0YMECDR8+XA899JBcXFzUrVs3zZgxo8ifCwAAcE4WwzD+9ndGOn/+vHx8fJSenv73mb/jzDfjclRt3CQMyJ2z/p905t9jKBL5/fx22jk7AAAA9kDYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApkbYAQAApubUYefatWt66aWXFBoaKk9PT91zzz167bXXZBiGtY9hGBo/fryCgoLk6emp8PBw7d+/34FVAwAAZ3LHYefatWvatWuXzp49a496bEyePFmzZs3Su+++q+TkZE2ePFlTpkzRzJkzrX2mTJmiGTNmaPbs2dq8ebO8vLwUERGhy5cv270eAABQ/BQ47IwcOVIxMTGSrgedli1b6r777lNISIjWrl1r1+J++OEHde7cWR06dFCVKlXUvXt3PfLII9qyZYuk60d1pk2bpnHjxqlz58669957NX/+fJ08eVLLly+3ay0AAKB4KnDY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e8l32AkLC9OZM2esj729vXXo0CHr43Pnzql37972rQ4AAOAO5TvsGIZx08d5tQEAADiSXefsWCwWe+4OAADgjjn9BOUTJ06oX79+KleunDw9PVWvXj1t27bNut4wDI0fP15BQUHy9PRUeHi49u/f78CKAQCAMynQF4Hu2bNHqampkq6HjF9//VUZGRmSpN9//93uxZ09e1bNmzdX69attWrVKlWoUEH79+9X2bJlrX2mTJmiGTNm6KOPPlJoaKheeuklRUREaM+ePfLw8LB7TQAAoHgpUNh56KGHbObldOzYUdL101eGYdj9NNbkyZMVEhKiefPmWdtCQ0Ot/zYMQ9OmTdO4cePUuXNnSdL8+fMVEBCg5cuXq1evXnatBwAAFD/5DjspKSmFWUeuvvjiC0VERKhHjx5at26d7rrrLg0dOlSDBg2y1pSamqrw8HDrNj4+PmrWrJmSkpLyDDuZmZnKzMy0Pj5//nzhPhEAAOAw+Q47lStXvmWfn3/++Y6K+V+HDh3SrFmzNGrUKP373//W1q1bNWLECJUsWVKRkZHWU2oBAQE22wUEBFjX5WbSpEmaMGGCXWsFAADO6Y4nKF+4cEFz5sxR06ZNVb9+fXvUZJWdna377rtPr7/+uho2bKjBgwdr0KBBmj179h3td+zYsUpPT7cux44ds1PFAADA2dx22Fm/fr0iIyMVFBSkt956S23atNGmTZvsWZuCgoJUu3Ztm7ZatWrp6NGjkqTAwEBJUlpamk2ftLQ067rcuLu7y9vb22YBAADmVKCwk5qaqjfeeEPVqlVTjx495O3trczMTC1fvlxvvPGGmjRpYtfimjdvrr1799q07du3z3pKLTQ0VIGBgUpMTLSuP3/+vDZv3qywsDC71gIAAIqnfIedTp06qUaNGvrpp580bdo0nTx5UjNnzizM2vTcc89p06ZNev3113XgwAHFxcVpzpw5GjZsmKTrV4GNHDlSEydO1BdffKHdu3friSeeUHBwsLp06VKotQEAgOIh3xOUV61apREjRujpp59WtWrVCrMmqyZNmmjZsmUaO3asXn31VYWGhmratGnq27evtc/o0aN18eJFDR48WOfOndODDz6o1atXc48dAAAgqQBhZ+PGjYqJiVGjRo1Uq1Yt/fOf/yyS+9h07NjRej+f3FgsFr366qt69dVXC70WAABQ/OT7NNb9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denSRT///HMer6p9meY+O87mvvvu08GDB7V06VL17dtX0vUjDZUqVVJoaKhN34yMDC1atEjbtm1TamqqYmNj9e9//zvHPsuVK5fn931VqVJF06dPlySbvxqdobZp06apf//+qlixog4ePKgGDRqoWrVqWrFihZKTkwt13L96/fXX9fnnn2vFihVq2LBhnq/PDe3atdOiRYsUGhqqzz//XJs2bdLjjz8uqXBfr4YNG9rUV6VKFS1dulQbNmzQ4MGDre1F/T7e8NRTT6lPnz5ydXXNcbTLkXX5+/vf8mtfirq21atXa926dTp06JD8/PwkXX8/HV2Xj4+PzS32ly9frrNnz+a463xR15WUlKTSpUurZcuWOnjwoFJTUzVkyBBNnjy50MetUqWKRowYIUkKDQ21jpsfTZo0UePGjXXu3Dl99dVX2r17t3VdYdb98ccfa8iQIdbfS3fffbdee+01paamKiQkxKk+f6ZPn662bdvqhRdekCS99tprSkhI0LvvvqvZs2fnuo09cWSnEEVFRWnevHnWx3Pnzs31KywWL16smjVrqkaNGurXr5/mzp1766+rL6a13Rj3woUL8vPzK9LXJDs72zru7VizZo3130VZ986dO/XDDz+oZcuWOdYV9fs4b948HTp0SC+//PJN+zni56tBgwYKCgrSww8/rO+//94pavviiy/UuHFjTZkyRXfddZeqV6+u559/3uYvbkfU9b9iYmIUHh6uypUrO7SusLAwXbx4UWlpaRowYIDef/99ffrpp2rfvn2hj3vs2DF99dVXMgxDaWlp1nELqnTp0tq8ebP1cWHWnZmZKQ8PD5s2Nzc3nT17VpGRkU71+ZOUlKTw8HCbtoiICCUlJdl9rNwQdgpRv379tHHjRh05ckRHjhzR999/r379+uXoFxMTY21v27at0tPTtW7duhz9HnjgAZUuXdpmKW619evXT+vWrVN6errCwsKK9DV56623lJGRoZ49e+bZ52aSk5OL9PWqWLGi3N3d1bhxYw0bNkxPPvlkjj5F+T7u379fY8aM0SeffCI3t5sfFC7KuoKCgjR79mx99tln+uyzzxQSEqJWrVppx44dDq/t0KFD2rhxo37++WctW7ZM06ZN06effqqhQ4c6tK6/OnnypFatWpXrz1dR19W8eXP94x//0NatWzV69Ght2LBBJUqU0OjRowt93AULFujxxx9XyZIlFRgYKB8fH0VHR+f6mtyMl5eXUlJSiuT1ioiI0Icffqjt27fLMAxt27ZN+/btk2EYatu2rVN9/qSmpub4CqeAgIAcc+sKC6exClGFChXUoUMHxcbGyjAMdejQwTr/44a9e/dqy5YtWrZsmaTrqfzxxx9XTEyMWrVqZdN30aJFqlWrVrGuLSEhQYZhqEuXLlqxYkWRjRsXF6cJEybo888/z3UuR340atSoSF+vDRs2KCMjQ5s2bdKYMWNUtWpV9e7d26ZPUb2P165dU58+fTRhwgRVr179pnUXZV2SVKNGDZs5MA888IAOHjyod955Rx9//LFDa8vOzpbFYtGCBQusp42mTp2q7t2767333pOnp6dD6vqrjz76SL6+vurSpUuu64uyrj179mjLli2qWbOm4uLiNHToUO3evVs9evQo9HGfffZZjR8/XhERETp16pReeOEFPfXUU4qJicl1m7y4urqqdu3aRfJ6vfTSS0pNTdX9998vwzAUEBCgqlWr6ueff3bqzx9HIOwUsqioKOt3duX2V0JMTIyuXr2q4OBga5thGHJ3d9e7775rc149JCREVatWLba1nThxQk8++aTGjRunjz76SOvXry+ScRcuXKgnn3xSS5YsyXEYtSAeeughxcbGSiqa1+vGufV69eopLS1Nr7zySo6wIxXN+3jhwgVt27ZNO3futI6VnZ0twzDk5uamb775Rm3atCnyuvLStGlTbdy4Mc/1RVVbUFCQ7rrrLpv+tWrVkmEYOn78uKpVq+aQuv667dy5c/XPf/5TJUuWzLNfUdU1adIk+fv7q2rVqrr33ns1duxYDRo0SLt27dK//vWvQh23efPm1vkk9957r7y8vNSiRQtNnDhRQUFBeb42uWnatGmR/K7w9PTU3Llz9f777ystLU1BQUF68MEH5ebmpgoVKjjV509gYKDS0tJs2tLS0m45F89eOI1VyNq2basrV64oKytLERERNuuuXr2q+fPn6+2339auXbusy48//qjg4GDFx8ebpraUlBTt2LFD8fHxeumll4ps3Pj4eA0YMEDx8fG5XlZZEA0bNnTYe5mdnW1zNdhfFcX76O3trd27d9vs46mnnlKNGjW0a9cuNWvWzCF15WXXrl03/YAqqtqaN2+ukydPKiMjw9q2b98+ubi4qGLFig6r64Z169bpwIED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0W/v3r3asmWLevfuLUlyc3PT448/rpiYmBx9Fy1apF27dtksNxMVFaWUlBR99913kq4f1alSpYratGkjSdq/f7969+6tu+++W97e3qpSpYok5Tgi07hx45uOk5GRoeeff161atWSr6+vSpcureTk5Bz7CQsLy/E4OTk5133++OOPOnDggMqUKWP9biU/Pz9dvnxZBw8elJ+fn/r376+IiAh16tRJ06dP16lTp25aJ4Bb48t/ABRIVFSUhg8fLkl5zk+JiYnR1atXFRwcbG0zDEPu7u5699135ePjY20PCQlR1apV8z1+tWrV1KJFC82bN0+tWrXS/PnzNWjQIOupnk6dOqly5cr64IMPFBwcrOzsbNWtW1dXrlyx2Y+Xl9dNx3n++eeVkJCgt956S1WrVpWnp6e6d++eYz8FkZGRoUaNGmnBggU51lWoUEHS9fA2YsQIrV69WosWLdK4ceOUkJCg+++//7bHBf7uCDsACuTG/BKLxZLrXJerV69q/vz5evvtt/XII4/YrOvSpYvi4+NzvYS9IAYOHKinn35ajz76qE6cOGG97P3MmTPau3evPvjgA7Vo0UKStHHjxtsa4/vvv1f//v3VtWtXSdeDSm5fHvu/l8lv2rRJtWrVynWf9913nxYtWiR/f395e3vnOXbDhg3VsGFDjR07VmFhYYqLiyPsAHeA01gACsTV1VXJycnas2ePXF1dc6xfuXKlzp49q4EDB6pu3bo2S7du3XKcyjpz5oxSU1NtlsuXL9+0hh49eqhEiRIaMmSIHnnkEYWEhEiSypYtq3LlymnOnDk6cOCA1qxZo1GjRt3W86xWrZqWLl2qXbt26ccff1SfPn1yTHKWroeiKVOmaN++fYqOjtaSJUv07LPP5rrPvn37qnz58urcubM2bNiglJQUrV27ViNGjNDx48eVkpKisWPHKikpSUeOHNE333yj/fv35xmeAOQPYQdAgXl7e+d5ZCImJkbh4eE2p6pu6Natm7Zt26affvrJ2hYeHq6goCCb5VZ3HC5VqpR69eqls2fPKioqytru4uKihQsXavv27apbt66ee+45vfnmm7f1HKdOnaqyZcvqgQceUKdOnRQREZHrTQv/9a9/adu2bWrYsKEmTpyoqVOn5nrE60bd69evV6VKlfTYY4+pVq1aGjhwoC5fvixvb2+VKlVKv/76q7p166bq1atr8ODBGjZsmIYMGXJbzwHAdRbDuMNrQQEAAJwYR3YAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICpEXYAAICp/T+WRF7HOqAsCAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, mae2_1, mae3, mae4, mae5, mae6, mae7, mae8, mae8_1, mae9, mae10]\n", + "\n", + "# List of corresponding labels for each MAE value\n", + "labels = ['MAE1', 'MAE2', 'MAE2_1', 'MAE3', 'MAE4', 'MAE5', 'MAE6', 'MAE7', 'MAE8', 'MAE8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "_c4Pe76fDNM-", + "outputId": "c1784b34-6746-42fd-9f66-b7c1cfd50a21" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA930lEQVR4nO3deVwV9f7H8fcB9QAKuCDigopLmrtiFtxSLBMRt25XDTM3sjK9pXazbNGWX6GVqaVplso1U9zSyjXSXErKXFMzywpxAbVUEE1AmN8fPjzXIwflKHgO0+v5eMzj4XznOzOfMwfl7cx3ZiyGYRgCAAAwCQ9XFwAAAFCUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcAAMBUCDcASryXXnpJFotFf/zxR7Hva/Xq1WrRooW8vLxksVh0+vTpYt8nAOcQbgA3Fh8fL4vFYjcFBgaqffv2WrVq1U2v5/PPP1fXrl1VpUoVlSlTRhUrVlTbtm01YcIEZWRk3PR6brY///xTvXr1kre3t6ZOnaqPPvpIZcuWddj38u/u66+/zrfcMAwFBwfLYrGoS5cuDrdx+vRpW4jat2+fwz4DBgyw+/nw8/NT8+bNNWHCBGVlZdn6XQqABU1paWnXcUQA91TK1QUAuLZXXnlFISEhMgxDx44dU3x8vDp37qzPP/+8wF+MRSkvL0+xsbGKj49X06ZN9fjjjys4OFhnzpxRUlKSXnjhBa1cuVJr164t9lpc6fvvv9eZM2f06quvqkOHDoVax8vLS/PmzdOdd95p175hwwYdPnxYVqu1wHUXLVoki8WioKAgffzxx/q///s/h/2sVqs+/PBDSRcD0ZIlS/Sf//xH33//vRISEuz6Tps2TeXKlcu3jfLlyxfq8wAlAeEGKAGioqLUunVr23xsbKyqVKmi+fPnF0m4ycvLU3Z2try8vBwuf+ONNxQfH68RI0ZowoQJslgstmVPPvmkUlNTNWfOnBvaR0lw/PhxSc4Fgc6dO2vRokV65513VKrU//7JnTdvnkJDQ696KW3u3Lnq3LmzatWqpXnz5hUYbkqVKqW+ffva5h9//HHdfvvtWrBggd5++21Vq1bNtuxf//qXAgICCl0/UBJxWQoogcqXLy9vb2+7X5aS9NZbbyk8PFyVKlWSt7e3QkNDtXjx4nzrWywWDRs2TB9//LEaN24sq9Wq1atXO9zXuXPnNH78eDVu3FhvvvmmXbC5pGrVqnrmmWcKvY/rqbNBgwby8vJSaGioNm7c6LDW06dPa8CAASpfvrz8/f01cOBAnTt3zvFBvMKiRYsUGhoqb29vBQQEqG/fvjpy5IhteUREhPr37y9Juu2222SxWDRgwIBrbjcmJkZ//vmnEhMTbW3Z2dlavHix+vTpU+B6KSkp2rRpkx544AE98MAD+v3337V58+ZCfRYPDw9FRERIkpKTkwu1DmAmnLkBSoD09HT98ccfMgxDx48f17vvvqvMzEy7/61L0uTJk9WtWzc9+OCDys7OVkJCgnr27Knly5crOjraru+6deu0cOFCDRs2TAEBAapdu7bDfX/99dc6ffq0/vOf/8jT09OpugvahzN1btiwQQsWLNATTzwhq9Wq9957T506ddKWLVvUpEkTu769evVSSEiI4uLitH37dn344YcKDAzU+PHjr1pnfHy8Bg4cqNtuu01xcXE6duyYJk+erG+++UY7duxQ+fLl9fzzz6tBgwaaMWOG7TJh3bp1r3kMateurbCwMM2fP19RUVGSpFWrVik9PV0PPPCA3nnnHYfrzZ8/X2XLllWXLl3k7e2tunXr6uOPP1Z4ePg19ylJv/76qySpUqVKdu0nT57M17dUqVJcloK5GADc1uzZsw1J+Sar1WrEx8fn63/u3Dm7+ezsbKNJkybG3XffbdcuyfDw8DD27t17zRomT55sSDKWLVtm137hwgXjxIkTdlNeXl6h9uFMnZKMrVu32toOHjxoeHl5Gffdd5+tbezYsYYkY9CgQXbr33fffUalSpWu+vmys7ONwMBAo0mTJsZff/1la1++fLkhyRgzZoyt7dL38f333191m1f2nTJliuHr62v73D179jTat29vGIZh1KpVy4iOjs63ftOmTY0HH3zQNv/cc88ZAQEBRk5Ojl2//v37G2XLlrV9BwcOHDBef/11w2KxGM2aNbP1u3SMHE0NGjS45ucBShIuSwElwNSpU5WYmKjExETNnTtX7du318MPP6xPPvnErp+3t7ftz6dOnVJ6erruuusubd++Pd8227Vrp0aNGl1z35fugrpyEOru3btVuXJlu+nPP/8s1D6cqTMsLEyhoaG2+Zo1a6p79+5as2aNcnNz7fo+9thjdvN33XWX/vzzz6veybV161YdP35cjz/+uN14oOjoaDVs2FArVqwocN3C6tWrl/766y8tX75cZ86c0fLly696SeqHH37Q7t27FRMTY2uLiYnRH3/8oTVr1uTrf/bsWdt3UK9ePT333HMKCwvT0qVL8/VdsmSJ7Wfp0jR79uwb/oyAO+GyFFACtGnTxm5AcUxMjFq2bKlhw4apS5cuKlOmjCRp+fLl+r//+z/t3LnT7jZgR+NkQkJCCrVvX19fSVJmZqZde7169WzjSObMmaOPPvqo0Ptwps769evna7vlllt07tw5nThxQkFBQbb2mjVr2vWrUKGCpIsBys/Pz2EtBw8elCQ1aNAg37KGDRs6vI3bWZUrV1aHDh00b948nTt3Trm5ufrXv/5VYP+5c+eqbNmyqlOnjg4cOCDp4l1XtWvX1scff5zv0p2Xl5c+//xzSRfvnAoJCVGNGjUcbrtt27YMKIbpEW6AEsjDw0Pt27fX5MmT9csvv6hx48batGmTunXrprZt2+q9995T1apVVbp0ac2ePVvz5s3Lt43Lz55cTcOGDSVJe/bsUffu3W3t5cqVs90OXVAAcLQPZ+t0RkFjggzDuKHtFoU+ffpo8ODBSktLU1RUVIFjXAzD0Pz583X27FmHZ72OHz+uzMxMuzNpnp6ehb41Hfg7INwAJdSFCxck/e+MypIlS+Tl5aU1a9bYPTvlRi853HXXXfL391dCQoJGjx4tD48bu5rtbJ2//PJLvraff/5ZPj4+qly58g3VIkm1atWSJO3fv19333233bL9+/fblt+o++67T48++qi+/fZbLViwoMB+l55/88orr+jWW2+1W3bq1Ck98sgjWrZsWb7B5AD+hzE3QAmUk5OjL774QmXKlLH9AvT09JTFYrEbh5KcnKxly5bd0L58fHw0atQo7dmzR88++6zDsyDOnBlxts6kpCS7sTiHDh3Sp59+qo4dOzp995YjrVu3VmBgoKZPn253iWzVqlXat29fvktA16tcuXKaNm2aXnrpJXXt2rXAfpcuST399NP617/+ZTcNHjxY9evX18cff1wkNQFmxZkboARYtWqVfvrpJ0kXL0vMmzdPv/zyi5599lnbWJLo6Gi9/fbb6tSpk/r06aPjx49r6tSpqlevnn744Ycb2v+zzz6rffv26c0339QXX3yh+++/XzVq1NCpU6e0fft2LVq0SIGB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XX5+fkVWe0lT+9kVri5ByeOiXV0CAKCEcOb3t1uNuUlPT5ckVaxYscA+SUlJ6tChg11bZGSkkpKSHPbPyspSRkaG3QQAAMzLbcJNXl6ehg8frn/84x9q0qRJgf3S0tJUpUoVu7YqVaooLS3NYf+4uDj5+/vbpuDg4CKtGwAAuBe3CTdDhw7Vnj17lJCQUKTbHT16tNLT023ToUOHinT7AADAvZRydQGSNGzYMC1fvlwbN25UjRo1rto3KChIx44ds2s7duyYgoKCHPa3Wq2yWq1FVisAAHBvLj1zYxiGhg0bpqVLl2rdunUKCQm55jphYWFau3atXVtiYqLCwsKKq0wAAFCCuPTMzdChQzVv3jx9+umn8vX1tY2b8ff3l7e3tySpX79+ql69uuLi4iRJTz75pNq1a6cJEyYoOjpaCQkJ2rp1q2bMmOGyz4Hi4Q53dEnc1QUAJY1Lz9xMmzZN6enpioiIUNWqVW3TggULbH1SUlKUmppqmw8PD9e8efM0Y8YMNW/eXIsXL9ayZcuuOggZAAD8fbj0zE1hHrGzfv36fG09e/ZUz549i6EiAABQ0rnN3VIAAABFgXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMhXADAABMpZSrCwAA/L3VfnaFq0tQ8rhoV5eAIsSZGwAAYCqEGwAAYCpOh5tDhw7p8OHDtvktW7Zo+PDhmjFjRpEWBgAAcD2cDjd9+vTRV199JUlKS0vTvffeqy1btuj555/XK6+8UuQFAgAAOMPpcLNnzx61adNGkrRw4UI1adJEmzdv1scff6z4+Piirg8AAMApToebnJwcWa1WSdKXX36pbt26SZIaNmyo1NTUoq0OAADASU6Hm8aNG2v69OnatGmTEhMT1alTJ0nS0aNHValSpSIvEAAAwBlOh5vx48fr/fffV0REhGJiYtS8eXNJ0meffWa7XAUAAOAqTj/ELyIiQn/88YcyMjJUoUIFW/sjjzwiHx+fIi0OAADAWdf1nBvDMLRt2za9//77OnPmjCSpTJkyhBsAAOByTp+5OXjwoDp16qSUlBRlZWXp3nvvla+vr8aPH6+srCxNnz69OOoEAAAoFKfP3Dz55JNq3bq1Tp06JW9vb1v7fffdp7Vr1xZpcQAAAM5y+szNpk2btHnzZpUpU8auvXbt2jpy5EiRFQYAAHA9nD5zk5eXp9zc3Hzthw8flq+vb5EUBQAAcL2cDjcdO3bUpEmTbPMWi0WZmZkaO3asOnfuXJS1AQAAOM3py1ITJkxQZGSkGjVqpPPnz6tPnz765ZdfFBAQoPnz5xdHjQAAAIXmdLipUaOGdu3apYSEBP3www/KzMxUbGysHnzwQbsBxgAAAK7gdLiRpFKlSqlv375FXQsAAMANczrczJkz56rL+/Xrd93FAAAA3Cinw82TTz5pN5+Tk6Nz587ZnlBMuAEAAK7k9N1Sp06dspsyMzO1f/9+3XnnnQwoBgAALndd75a6Uv369TVu3Lh8Z3UAAAButiIJN9LFQcZHjx4tqs0BAABcF6fH3Hz22Wd284ZhKDU1VVOmTNE//vGPIisMAADgejgdbnr06GE3b7FYVLlyZd19992aMGFCUdUFAABwXZwON3l5ecVRBwAAQJEosjE3AAAA7qBQZ25GjhxZ6A2+/fbb110MAADAjSpUuNmxY0ehNmaxWJza+caNG/Xmm29q27ZtSk1N1dKlS/ON6bnc+vXr1b59+3ztqampCgoKcmrfAADAnAoVbr766qti2fnZs2fVvHlzDRo0SP/85z8Lvd7+/fvl5+dnmw8MDCyO8gAAQAl0XS/OLCpRUVGKiopyer3AwECVL1++6AsCAAAl3nWFm61bt2rhwoVKSUlRdna23bJPPvmkSAq7mhYtWigrK0tNmjTRSy+9dNXn62RlZSkrK8s2n5GRUez1AQAA13H6bqmEhASFh4dr3759Wrp0qXJycrR3716tW7dO/v7+xVGjTdWqVTV9+nQtWbJES5YsUXBwsCIiIrR9+/YC14mLi5O/v79tCg4OLtYaAQCAazl95ub111/XxIkTNXToUPn6+mry5MkKCQnRo48+qqpVqxZHjTYNGjRQgwYNbPPh4eH69ddfNXHiRH300UcO1xk9erTd3V4ZGRkEHAAATMzpMze//vqroqOjJUllypTR2bNnZbFYNGLECM2YMaPIC7yWNm3a6MCBAwUut1qt8vPzs5sAAIB5OR1uKlSooDNnzkiSqlevrj179kiSTp8+rXPnzhVtdYWwc+fOYj9jBAAASg6nL0u1bdtWiYmJatq0qXr27Kknn3xS69atU2Jiou655x6ntpWZmWl31uX333/Xzp07VbFiRdWsWVOjR4/WkSNHNGfOHEnSpEmTFBISosaNG+v8+fP68MMPtW7dOn3xxRfOfgwAAGBShQ43e/bsUZMmTTRlyhSdP39ekvT888+rdOnS2rx5s+6//3698MILTu1869atdg/luzQ2pn///oqPj1dqaqpSUlJsy7Ozs/XUU0/pyJEj8vHxUbNmzfTll186fLAfAAD4eyp0uGnWrJluu+02Pfzww3rggQckSR4eHnr22Weve+cREREyDKPA5fHx8Xbzo0aN0qhRo657fwAAwPwKPeZmw4YNaty4sZ566ilVrVpV/fv316ZNm4qzNgAAAKcVOtzcddddmjVrllJTU/Xuu+8qOTlZ7dq10y233KLx48crLS2tOOsEAAAoFKfvlipbtqwGDhyoDRs26Oeff1bPnj01depU1axZU926dSuOGgEAAArN6XBzuXr16um5557TCy+8IF9fX61YsaKo6gIAALgu1/3izI0bN2rWrFlasmSJPDw81KtXL8XGxhZlbQAAAE5zKtwcPXpU8fHxio+P14EDBxQeHq533nlHvXr1UtmyZYurRgAAgEIrdLiJiorSl19+qYCAAPXr10+DBg2ye88TAACAOyh0uCldurQWL16sLl26yNPTszhrAgAAuG6FDjefffZZcdYBAABQJG7obikAAAB3Q7gBAACmQrgBAACmQrgBAACmUuhw8/jjjyszM9M2P3/+fJ09e9Y2f/r0aXXu3LloqwMAAHBSocPN+++/r3PnztnmH330UR07dsw2n5WVpTVr1hRtdQAAAE4qdLgxDOOq8wAAAO6AMTcAAMBUCDcAAMBUnHpx5pgxY+Tj4yNJys7O1muvvSZ/f39JshuPAwAA4CqFDjdt27bV/v37bfPh4eH67bff8vUBAABwpUKHm/Xr1xdjGQAAAEXDqctSGRkZ+u6775Sdna02bdqocuXKxVUXAADAdSl0uNm5c6c6d+6stLQ0SZKvr68WLlyoyMjIYisOAADAWYW+W+qZZ55RSEiIvvnmG23btk333HOPhg0bVpy1AQAAOK3QZ262bdumL774Qq1atZIkzZo1SxUrVlRGRob8/PyKrUAAAABn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rVpVdevWdZvv3FENWVlZatGixVX7uLLO2rVrF/qzuPp4rlixQrfffrs8PT1lsVgUEhLiNjWuX7++wH8H/vnPf7pNnZL0888/q3v37goICJCfn5+qVKnidt/5pX9/atSoofLly6tSpUp65JFHlJmZ6Va/cxxJSUlRdHS0fHx8FBgYqKeffloXLlxw2LeoEG5uQHBwsBISEvTXX3/Z2s6fP6958+apZs2a+frPnDlT//73v7Vx40YdPXrU4Ta//PJLpaamas2aNcrMzFRUVJROnz5tWz548GClpqbaTW+88YZteXZ2tnr27KkhQ4a4VZ29evVSjRo1lJCQoF27dikvL0/vv/++tm/frtzcXHl4eGj79u039Xj99NNPtjr27t2riRMnavr06Xruuecc7uvKY5mbmytvb28NGTJEnp6e8vb2vinH8srvvH379lq4cKH279+vJUuW6MyZMypTpozLv/Mr67xk1KhRtsenBwUFuWWdr7zyisOfXXeqc8mSJXrooYc0cOBAde/eXUFBQTp+/Ljb1BgeHp5vWf369eXp6al169a5TZ2S1KVLF124cEHr1q3Ttm3bVKFCBVksFs2fP99t6jx37pwsFotOnDihDRs2aPXq1dq7d68eeught/udc7nc3FxFR0crOztbmzdv1n//+1/Fx8drzJgxDvsXGQPXpX///kb37t2NJk2aGHPnzrW1f/zxx0azZs2M7t27G/3797e1nzlzxihXrpzx008/Gb179zZee+01u+39/vvvhiRjx44dtrZvvvnGkGSsXr3aMAzDaNeunfHkk08Wqr7Zs2cb/v7+blPntepo3LixUa5cOZcdr0veeOMNIyQkxOGyq32GChUqGEFBQS79zi+5++67DUlG48aN3e5nc+XKlUbDhg2NvXv3GpKMiIgIl/9sXqlWrVrGxIkTbfPu8nfocjk5OUb16tWNDz/80G1rvFJ2drZhtVqNhg0bulWdJ06cMCQZGzdutLX16dPHkGTUrl3bbeoMCwszypQpY3fsfvjhB0OS0bBhQ5d/x5d+51xp5cqVhoeHh5GWlmZrmzZtmuHn52dkZWUVatvXgzM3N2jQoEGaPXu2bX7WrFm2V0dcbuHChWrYsKEaNGigvn37atasWdd8bfulMwEFXSYpiXUWVEdOTo7dQ6NcdbzS09NVsWJFpz9DvXr18vVzxWc4efKk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5eTk2AbaXu7ChQuaM2eOJkyYoJ07d9qmXbt2qVq1avkG7wYHB6tu3boOg8316tWrlzw8PDRv3jzNmTNHgwYNksVikSR988036t69u/r27avmzZurTp06+vnnn53ex+bNm1WrVi09//zzat26terXr6+DBw/m65eSkmJ3p9i3334rDw8PNWjQIF/fRo0ayWq1KiUlRfXq1bObgoODbf0qV66s/v37a+7cuZo0aZJmzJjhdP3A3x1nbgDYeHp6at++fbY/X2n58uU6deqUYmNj7c7QSNL999+vmTNnFvicGkfOnTuntLQ0uzar1aoKFSoUuE65cuXUu3dvjR49WhkZGXbP4Klfv74WL16szZs3q0KFCnr77bd17NgxNWrUqNA1XdpOSkqKEhISdNttt2nFihW2y3CX8/LyUv/+/fXWW28pIyNDTzzxhHr16pXvkpR0cYDyf/7zH40YMUJ5eXm68847lZ6erm+++UZ+fn7q37+/xowZo9DQUDVu3FhZWVlavny5br31VqdqB8CZGwBX8PPzK/B27JkzZ6pDhw75go10Mdxs3brVqQfpffDBB6patardFBMTc831YmNjderUKUVGRtpdHnvhhRfUqlUrRUZGKiIiQkFBQdf1hOBu3bppxIgRGjZsmFq0aKHNmzfrxRdfzNevXr16+uc//6nOnTurY8eOatasmd57770Ct/vqq6/qxRdfVFxcnG699VZ16tRJK1asUEhIiCSpTJkyGj16tJo1a6a2bdvK09NTCQkJTtcP/N1ZDOMa928CAACUIJy5AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApkK4AQAApvL/s2EKz3IU2acAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, mape2_1, mape3, mape4, mape5, mape6, mape7, mape8, mape8_1, mape9, mape10]\n", + "\n", + "# List of corresponding labels for each MAPE value\n", + "labels = ['MAPE1', 'MAPE2', 'MAPE2_1', 'MAPE3', 'MAPE4', 'MAPE5', 'MAPE6', 'MAPE7', 'MAPE8', 'MAPE2_1', 'MAPE9', 'MAPE10']\n", + "\n", + "# Plotting the bar graph\n", + "plt.bar(labels, mape_values)\n", + "plt.xlabel('MAPE Variables')\n", + "plt.ylabel('MAPE Values')\n", + "plt.title('Bar Graph of MAPE')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bCF5ZehcARcw", + "outputId": "ed3103b5-2636-48c5-82ba-60f8b3dfd729" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Length of labels: 12\n", + "Length of mape_values: 10\n" + ] + } + ], + "source": [ + "print(\"Length of labels:\", len(labels))\n", + "print(\"Length of mape_values:\", len(mape_values))" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "ZDPV0M5rDTi6", + "outputId": "2b5b43fb-f025-41ff-dc55-6193541132e0" + }, + "outputs": [ + { + "data": { + "image/png": "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6dMHffr00Xv8lStXom7duliwYAEAoHHjxjh69CgWLVqEoKCgyiqTiIiIqqAqdU5OUlISAgMDtYYFBQUhKSnJRBURERGRuTLpnhxDpaenw93dXWuYu7s7srOzce/ePdjY2JSZJj8/H/n5+dL77OzsSq+TiIiITK9K7cmpiOjoaDg6OkovLy8vU5dEpSkUpnsRUdXCbQUZqEqFHA8PD2RkZGgNy8jIgIODg869OAAwdepUZGVlSa+rV68+iVLND8MEEdHThdv9qnW4KiAgAN98843WsPj4eAQEBJQ7jUqlgkqlquzSiMhcmXKDK4Tplk1Ept2Tk5OTg9OnT+P06dMA7l8ifvr0aaSmpgK4vxcmLCxMGn/s2LH4888/8e677+L8+fNYvnw5Nm/ejMmTJ5uifCIiIjJjJt2T8/PPP6Nbt27S+4iICABAeHg4YmJikJaWJgUeAKhbty727t2LyZMnY8mSJahduza++OILXj5ORGRMptr7xT1fZGQKIZ6uXpWdnQ1HR0dkZWXBwcHB1OU8Oea6y95c6yL5YB8znLmGHHOty1zJrO9X5Pe7Sp14TERERKQvhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlhhwiIiKSJYYcIiIikiWGHCIiIpIlS1MXQEREVKXJ7GnfcsI9OURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkSww5REREJEsMOURERCRLDDlEREQkS5amLoCIDKRQmGa5Qjz8c3Oti4ieWtyTQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJBDREREssSQQ0RERLLEkENERESyxJsBEhGZgqlungjwBor01OCeHCIiIpIl7skxNt7anoiIyCxwTw4RERHJEvfkEOnC8yWIiKo87skhIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZYsghIiIiWWLIISIiIlliyCEiIiJZMnnIWbZsGXx8fKBW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tRAREREZjV4hZ9euXejTpw+srKywa9euh477wgsvGKUwIiIioseh1yXkSqUS6enpcHNzg1JZ/rnKCoUCxcXFRi3Q2HgJuQlUxUsczbUugH3sQeZaF8A+ZijWZbiq2scqoCK/33rtydFoNDr/TURERGSuDL6EXJfbt28bYzZERERERmNwyJk3bx5iY2Ol94MGDYKLiwtq1aqFM2fOGLU4IiIioooyOOSsXLkSXl5eAID4+HgcOnQI+/fvR58+ffDOO+8YvUAiIiKiijD4EvL09HQp5OzZsweDBw9Gr1694OPjg/bt2xu9QCIiIqKKMHhPjrOzM65evQoA2L9/PwIDAwEAQgizv7KKiIiInh4G78l58cUXMXToUDRo0AA3b95Enz59AAC//PILfH19jV4gERERUUUYHHIWLVoEHx8fXL16FR9//DHs7OwAAGlpaRg3bpzRCyQiIiKqCL1uBignvBmgCVTFm1WZa10A+9iDzLUugH3MUKzLcFW1j1VApd0MkI91ICIioqqGj3UwNv5Po6yq+D8Nc60LYB97kLnWBbCPGYp1Ga6q9rEK4GMdiIiIiP6fUR7rQERERGRuDA45b7zxBj799NMyw5cuXYo333zTGDURERERPTaDQ862bdvQqVOnMsM7duyIrVu3GqUoIiIiosdlcMi5efMmHB0dywx3cHDAjRs3jFIUERER0eMyOOT4+vpi//79ZYbv27cP9erVM0pRRERERI/L4DseR0REYMKECcjMzET37t0BAAkJCViwYAEWL15s7PqIiIiIKsTgkPPKK68gPz8fH374IebMmQMA8PHxwYoVKxAWFmb0AomIiIgq4rEe65CZmQkbGxvp+VVVAW8GaAJV8WZV5loXwD72IHOtC2AfMxTrMlxV7WMVUJHf7wrdJ6eoqAiHDh1CXFwcSjLStWvXkJOTU5HZERERERmdwYerrly5gt69eyM1NRX5+fno2bMn7O3tMW/ePOTn52PlypWVUScRERGRQQzekzNp0iS0adMG//77L2xsbKThAwcOREJCglGLIyIiIqoog/fkHDlyBD/88AOsra21hvv4+OCff/4xWmFEREREj8PgPTkajUbnk8b//vtv2NvbG6UoIiIiosdlcMjp1auX1v1wFAoFcnJyEBkZib59+1aoiGXLlsHHxwdqtRrt27fH8ePH9Zpu06ZNUCgUGDBg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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, precision2_1, precision3, precision4, precision5, precision6, precision7, precision8, precision8_1, precision9, precision10]\n", + "\n", + "# List of corresponding labels for each precision value\n", + "labels = ['Precision1', 'Precision2', 'Precision2_1', 'Precision3', 'Precision4', 'Precision5', 'Precision6', 'Precision7', 'Precision8', 'Precision8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 472 + }, + "id": "39LBleNeDeuw", + "outputId": "66c1cd08-96bb-46bb-afd3-7792e2b71345" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFVUlEQVR4nO3df3zO9eL/8ee1za7NMD83msUwSjKaH01Gq62hRDkSObZZOYo4dnxEYeQci/Krg/TD73OKQh3FEc1RiSizQsjv0WHzc2Njy/b+/uG767hs2DWba3t73G+363Zr773f1+u59/V2Xc/evy6LYRiGAAAATMLF2QEAAABKEuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGAACYCuUGQLk1btw4WSwWnTp1qtTHWrNmjVq0aCEPDw9ZLBadO3eu1McsLRaLRePGjbP9vGDBAlksFh0+fNhpmYCSRLkByqD8D5urHz4+PgoLC9O///3v257n888/V9euXeXr6yt3d3dVr15dHTp00JQpU5SRkXHb89xup0+f1jPPPCNPT0/NmjVLixcvlpeXV6HzXvvaubm5yc/PT9HR0frtt99uc3LgzuTm7AAAru/1119XQECADMNQamqqFixYoC5duujzzz/XE088Uerj5+XlKTY2VgsWLND999+vl156Sf7+/jp//rw2b96s0aNHa/Xq1UpMTCz1LM70ww8/6Pz585owYYLCw8OLtEz+a3fp0iV9//33WrBggTZu3KidO3fKw8OjlBMDdzbKDVCGde7cWa1atbL9HBsbK19fX3300UclUm7y8vKUk5Nz3Q/byZMna8GCBRo2bJimTJkii8Vi+93QoUN1/PhxLVq06JbGKA/S0tIkSVWrVi3yMle/ds8//7xq1qypSZMmaeXKlXrmmWdKIyaA/4/DUkA5UrVqVXl6esrNzf7/S9566y21a9dONWrUkKenp4KDg7Vs2bICy1ssFg0ePFj//Oc/dd9998lqtWrNmjWFjpWVlaVJkybpvvvu05tvvmlXbPLVqVNHr7zySpHHKE7OJk2ayMPDQ8HBwfrmm28KzXru3DlFR0eratWq8vb2VkxMjLKysgpfidf45JNPFBwcLE9PT9WsWVN9+/a1O3z08MMPKyoqSpLUunVrWSwWRUdHF+m5rxYaGipJOnDggN30PXv26A9/+IOqV68uDw8PtWrVSitXriz0bxw2bJjq168vq9WqunXrql+/frbzjXJycjR27FgFBwfL29tbXl5eCg0N1X/+8x+HswLlHXtugDIsPT1dp06dkmEYSktL09///ndduHBBffv2tZtvxowZevLJJ/Xcc88pJydHS5YsUc+ePfXFF1/o8ccft5t3/fr1+vjjjzV48GDVrFlT9evXL3TsjRs36ty5cxo+fLhcXV0dyn29MRzJ+fXXX2vp0qUaMmSIrFarZs+erU6dOmnr1q1q1qyZ3bzPPPOMAgIClJCQoKSkJH3wwQfy8fHRpEmTbphzwYIFiomJUevWrZWQkKDU1FTNmDFD3333nbZv366qVavqtddeU5MmTfTee+/ZDjU1bNjQofUhyXaybrVq1WzTdu3apYceekh+fn4aOXKkvLy89PHHH6t79+5avny5nnrqKUnShQsXFBoaqt27d6t///564IEHdOrUKa1cuVLHjh1TzZo1lZGRoQ8++EC9e/fWCy+8oPPnz2vu3LmKjIzU1q1b1aJFC4czA+WWAaDMmT9/viGpwMNqtRoLFiwoMH9WVpbdzzk5OUazZs2MRx55xG66JMPFxcXYtWvXTTPMmDHDkGR89tlndtMvX75snDx50u6Rl5dXpDEcySnJ+PHHH23Tjhw5Ynh4eBhPPfWUbVp8fLwhyejfv7/d8k899ZRRo0aNG/59OTk5ho+Pj9GsWTPj4sWLtulffPGFIckYO3asbVr+6/HDDz/c8Dmvnverr74yTp48aRw9etRYtmyZUatWLcNqtRpHjx61zfvoo48a999/v3Hp0iXbtLy8PKNdu3ZGYGCgbdrYsWMNScaKFSsKjJe/7i9fvmxkZ2fb/e7s2bOGr69vgfUjyYiPjy+Q+dChQzf9+4DygMNSQBk2a9YsrVu3TuvWrdM//vEPhYWF6fnnn9eKFSvs5vP09LT999mzZ5Wenq7Q0FAlJSUVeM6OHTuqadOmNx07/yqoSpUq2U3fsWOHatWqZfc4ffp0kcZwJGdISIiCg4NtP999993q1q2bvvzyS+Xm5trNO3DgQLufQ0NDdfr06RteyfXjjz8qLS1NL730kt35QI8//rjuuecerVq16rrLFkV4eLhq1aolf39//eEPf5CXl5dWrlypunXrSpLOnDmj9evX65lnntH58+d16tQpnTp1SqdPn1ZkZKT27dtnOzy2fPlyBQUF2fbkXC3/cKGrq6vc3d0lXTnP6cyZM7p8+bJatWpV6PoFzIzDUkAZ1qZNG7sTinv37q2WLVtq8ODBeuKJJ2wfZl988YX++te/Kjk5WdnZ2bb5CztPJiAgoEhjV65cWdKVQyJXa9SokdatWydJWrRokRYvXlzkMRzJGRgYWGBa48aNlZWVpZMnT6p27dq26XfffbfdfPmHfs6ePasqVaoUmuXIkSOSpCZNmhT43T333KONGzcWulxRzZo1S40bN1Z6errmzZunb775Rlar1fb7/fv3yzAMjRkzRmPGjCn0OdLS0uTn56cDBw6oR48eNx1z4cKFmjJlivbs2aPff//dNr2orzlgFpQboBxxcXFRWFiYZsyYoX379um+++7Tt99+qyeffFIdOnTQ7NmzVadOHVWoUEHz58/Xhx9+WOA5rt57ciP33HOPJGnnzp3q1q2bbXqlSpVsl0NfrwAUNoajOR1xvXOCDMO4pee9FVcX0+7du6t9+/bq06eP9u7dq0qVKikvL0+SNHz4cEVGRhb6HI0aNSryeP/4xz8UHR2t7t276//+7//k4+MjV1dXJSQkFDiJGTA7yg1Qzly+fFnS//aoLF++XB4eHvryyy/t9gzMnz//lsYJDQ2Vt7e3lixZolGjRsnF5daOYjuac9++fQWm/frrr6pYsaJq1ap1S1kkqV69epKkvXv36pFHHrH73d69e22/Lwn5JSMsLEwzZ87UyJEj1aBBA0lShQoVbnrvnIYNG2rnzp03nGfZsmVq0KCBVqxYYbcnLD4+/tb/AKCc4ZwboBz5/ffftXbtWrm7u+vee++VdOWD02Kx2J2HcvjwYX322We3NFbFihU1YsQI7dy5UyNHjix0L4gje0Yczbl582a7c0WOHj2qf/3rX3rsscccvnqrMK1atZKPj4/mzJljd4js3//+t3bv3l3g6q1b9fDDD6tNmzaaPn26Ll26JB8fHz388MN69913dfz48QLznzx50vbfPXr00E8//aRPP/20wHz5r0H+Orn6NdmyZYs2b95con8HUB6w5wYow/79739rz549kq6cf/Hhhx9q3759GjlypO1ckscff1xTp05Vp06d1KdPH6WlpWnWrFlq1KiRfv7551saf+TIkdq9e7fefPNNrV27Vj169FDdunV19uxZJSUl6ZNP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g5WYmGiblpeXp8TERIWEhBSY/5577tGOHTuUnJxsezz55JMKCwtTcnIye2QAAIDj3y1V0uLi4hQVFaVWrVqpTZs2mj59ujIzMxUTEyNJ6tevn/z8/JSQkCAPDw81a9bMbvmqVatKUoHpAADgzuT0ctOrVy+dPHlSY8eO1YkTJ9SiRQutWbPGdpJxSkqKXFycuoMJAACUI8X+4szyii/OvP3K4xe7ldVcEtvYtcpqLoltzFHkclx53caK47Z8cSYAAEBZRLkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmQrkBAACmUibKzaxZs1S/fn15eHiobdu22rp163Xnff/99xUaGqpq1aqpWrVqCg8Pv+H8AADgzuL0crN06VLFxcUpPj5eSUlJCgoKUmRkpNLS0gqdf8OGDerdu7f+85//aPPmzfL399djjz2m33777TYnBwAAZZHFMAzDmQHatm2r1q1ba+bMmZKkvLw8+fv76+WXX9bIkSNvunxubq6qVaummTNnql+/fjedPyMjQ97e3kpPT1eVKlVuOf+1LCX+jEVzsxfRWbmkG2cjV0Fl9bUkl+PYxhxDLseV122sOBz5/HbqnpucnBxt27ZN4eHhtmkuLi4KDw/X5s2bi/QcWVlZ+v3331W9evVCf5+dna2MjAy7BwAAMC+nlptTp04pNzdXvr6+dtN9fX114sSJIj3HK6+8orvuusuuIF0tISFB3t7etoe/v/8t5wYAAGWX08+5uRVvvPGGlixZok8//VQeHh6FzjNq1Cil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burRo4d27dqlrKwsRURE2M2fk5Ojli1bSpKSk5MVGhpq+z+Va6Wmpmr06NHasGGD0tLSlJubq6ysLKWkpDicLSoqSkePHi31bJmZmbZxAwMDFRYWpgYNGqhz586Srpxkd+24+ScQxsfHa9OmTaW6Tq62c+dOdevWTfHx8dq/f7/Dr2VWVpaM/39D79J8La/ONXHiROXm5qpfv34aNmyYU7exsLAw+fv767ffflOdOnXk5uamjh072tZNWdn281/Lu+66S5MnT3b6OmvevLmmTp2qiIgI3X333Ro1apTat2+vDh06KDIy0nZo73bnunp9nTlzRp9//rkeffRRvffee05/r7h48aLthPrGjRvr3nvv1aJFi9StW7dS24YuXryo2NhYPfTQQ/roo4+Um5urt956S4mJierYsaPefffdIr9XXLx40fZt2iX5OoaFhem1115TWFiYunbtKh8fH02YMEHZ2dl68803FRoaKkm2PSPffvutgoODSzxHeUC5cZCXl5caNWok6cpu1KCgIM2dO9f2xZ2rVq2Sn5+f3TL5h0A8PT1v+NxRUVE6ffq0ZsyYoXr16slqtSokJKTAuR5FydatWzdNnjy51LPl5eXZjTt48GDFx8dr6dKltmWvHnffvn3q27ev+vTpo9GjR6tHjx6luk7y/fLLL3r00Uc1YMAAjR49WtHR0Q6/ls8995ztd6X5Wl6d66OPPlJQUJBOnjypESNGaODAgVq0aJGaN29ut8zt2Ma8vLyUlJSkHTt2SLpyrsG8efNsv+/Ro4fGjBlz23PlZ7v2tXzkkUeUmpoqyXn/Lr28vGzbzAcffKDHH3/cbhsbNGhQgZPEb1euq9dXzZo15e/vr3r16kly7nvFd999pylTpmjz5s1ycXGR1WqVr6+vKlaseMMP2lvdhj788EMdPnzYNm7+tIoVKyojI8Oh94oRI0YoMzPzltZXYbm9vLxUv359SdK4ceMUFRWluXPnqkePHnrzzTe1bNkyNWnSRMeOHVPnzp318ccfq3Xr1iWeo7hq165t+zeZL//n/HOxSgrl5ha4uLjo1VdfVVxcnH799VdZrValpKTY/m/2Ws2bN9fChQv1+++/F9qev/vuO82ePVtdunSRJB09etR23NZR+ZeCjx49ulSz5V+WmC9/nQwdOlTSlf+DyB93165dio6OVmxsrO3yv9uxTnbt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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "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, recall2_1, recall3, recall4, recall5, recall6, recall7, recall8, recall8_1, recall9, recall10]\n", + "\n", + "# List of corresponding labels for each recall value\n", + "labels = ['Recall1', 'Recall2', 'Recall2_1', 'Recall3', 'Recall4', 'Recall5', 'Recall6', 'Recall7', 'Recall8', 'Recall8_1', '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" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "id": "13cZXvb0DsvK" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "provenance": [], + "toc_visible": true + }, + "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.2" } - ], - "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)" - ] ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - } - ], - "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", -<<<<<<< HEAD - "version": "3.11.7" -======= - "version": "3.12.4" ->>>>>>> 78acead5911ebfa832d5f0bb13c42f09ac8261a2 - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 0 }