├── GB KNN Model.ipynb
├── Linear_Regression.ipynb
└── Logistic Regression.ipynb
/Linear_Regression.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {
6 | "id": "GzfdMfk10NE6"
7 | },
8 | "source": [
9 | "## **Linear Regression with Python Scikit Learn**\n",
10 | "In this section we will see how the Python Scikit-Learn library for machine learning can be used to implement regression functions. We will start with simple linear regression involving two variables.\n",
11 | "\n",
12 | "### **Simple Linear Regression**\n",
13 | "In this regression task we will predict the percentage of marks that a student is expected to score based upon the number of hours they studied. This is a simple linear regression task as it involves just two variables."
14 | ]
15 | },
16 | {
17 | "cell_type": "code",
18 | "execution_count": 1,
19 | "metadata": {
20 | "id": "V9QN2ZxC38pB"
21 | },
22 | "outputs": [],
23 | "source": [
24 | "# Importing all libraries required in this notebook\n",
25 | "import pandas as pd\n",
26 | "import numpy as np \n",
27 | "import matplotlib.pyplot as plt "
28 | ]
29 | },
30 | {
31 | "cell_type": "code",
32 | "execution_count": 2,
33 | "metadata": {
34 | "colab": {
35 | "base_uri": "https://localhost:8080/",
36 | "height": 380
37 | },
38 | "id": "LtU4YMEhqm9m",
39 | "outputId": "cae4d898-e81c-4cb0-cae3-b668a921a074"
40 | },
41 | "outputs": [
42 | {
43 | "name": "stdout",
44 | "output_type": "stream",
45 | "text": [
46 | "Data imported successfully\n"
47 | ]
48 | },
49 | {
50 | "data": {
51 | "text/html": [
52 | "
\n",
53 | "\n",
66 | "
\n",
67 | " \n",
68 | " \n",
69 | " | \n",
70 | " Hours | \n",
71 | " Scores | \n",
72 | "
\n",
73 | " \n",
74 | " \n",
75 | " \n",
76 | " 0 | \n",
77 | " 2.5 | \n",
78 | " 21 | \n",
79 | "
\n",
80 | " \n",
81 | " 1 | \n",
82 | " 5.1 | \n",
83 | " 47 | \n",
84 | "
\n",
85 | " \n",
86 | " 2 | \n",
87 | " 3.2 | \n",
88 | " 27 | \n",
89 | "
\n",
90 | " \n",
91 | " 3 | \n",
92 | " 8.5 | \n",
93 | " 75 | \n",
94 | "
\n",
95 | " \n",
96 | " 4 | \n",
97 | " 3.5 | \n",
98 | " 30 | \n",
99 | "
\n",
100 | " \n",
101 | " 5 | \n",
102 | " 1.5 | \n",
103 | " 20 | \n",
104 | "
\n",
105 | " \n",
106 | " 6 | \n",
107 | " 9.2 | \n",
108 | " 88 | \n",
109 | "
\n",
110 | " \n",
111 | " 7 | \n",
112 | " 5.5 | \n",
113 | " 60 | \n",
114 | "
\n",
115 | " \n",
116 | " 8 | \n",
117 | " 8.3 | \n",
118 | " 81 | \n",
119 | "
\n",
120 | " \n",
121 | " 9 | \n",
122 | " 2.7 | \n",
123 | " 25 | \n",
124 | "
\n",
125 | " \n",
126 | "
\n",
127 | "
"
128 | ],
129 | "text/plain": [
130 | " Hours Scores\n",
131 | "0 2.5 21\n",
132 | "1 5.1 47\n",
133 | "2 3.2 27\n",
134 | "3 8.5 75\n",
135 | "4 3.5 30\n",
136 | "5 1.5 20\n",
137 | "6 9.2 88\n",
138 | "7 5.5 60\n",
139 | "8 8.3 81\n",
140 | "9 2.7 25"
141 | ]
142 | },
143 | "execution_count": 2,
144 | "metadata": {},
145 | "output_type": "execute_result"
146 | }
147 | ],
148 | "source": [
149 | "# Reading data from remote link\n",
150 | "url = \"https://raw.githubusercontent.com/mhassandata/Regression_model/main/score.csv\"\n",
151 | "s_data = pd.read_csv(url)\n",
152 | "print(\"Data imported successfully\")\n",
153 | "s_data.head(10)"
154 | ]
155 | },
156 | {
157 | "cell_type": "markdown",
158 | "metadata": {
159 | "id": "RHsPneuM4NgB"
160 | },
161 | "source": [
162 | "Let's plot our data points on 2-D graph to eyeball our dataset and see if we can manually find any relationship between the data. We can create the plot with the following script:"
163 | ]
164 | },
165 | {
166 | "cell_type": "code",
167 | "execution_count": 3,
168 | "metadata": {
169 | "colab": {
170 | "base_uri": "https://localhost:8080/",
171 | "height": 472
172 | },
173 | "id": "qxYBZkhAqpn9",
174 | "outputId": "36a7e99a-3ffa-41bf-da42-ce089c3e5dbd"
175 | },
176 | "outputs": [
177 | {
178 | "data": {
179 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjIAAAHHCAYAAACle7JuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABUB0lEQVR4nO3deVxU5f4H8M+AbLIMgrIJKuKCQC7gRqSkorhEesVcfpp7mWLumdRVJDWXUqvrVdPbVW/mWmrSAimZhuGuCOKCiEHKUhADqKDMnN8fvpgaAZ2BgTNn+Lxfr3m9muecOfOd0Vfz8Xme8zwyQRAEEBEREUmQidgFEBEREdUUgwwRERFJFoMMERERSRaDDBEREUkWgwwRERFJFoMMERERSRaDDBEREUkWgwwRERFJFoMMERERSRaDDBEREUkWgwxRPdq+fTtkMhnOnTtX5fEXX3wRfn5+9VyV4Vu6dClkMpn60bhxY/j4+OCf//wnioqKxC6v1n755RcsXboUhYWFYpdCJDmNxC6AiEhbmzZtgo2NDUpKSvDDDz9gxYoV+PHHH3Hy5EnIZDKxy6uxX375BdHR0Zg4cSLs7e3FLodIUhhkiAj37t2DtbW12GU804gRI9C0aVMAwBtvvIHw8HAcOHAAp06dQmBgYI2vKwgCSktLYWVlpa9SiaiecGiJyMCVl5dj2bJl8PLygoWFBVq1aoV33nkHZWVlGufJZDIsXbq00utbtWqFiRMnqp9XDG8dP34cM2bMgJOTE9zd3QEAxcXFmDNnDlq1agULCws4OTmhf//+uHDhQrX1ffnll+rrPenTTz+FTCZDSkoKACAnJweTJk2Cu7s7LCws4OrqiqFDh+L27du6fzEA+vbtCwDIyMgAAKhUKnz00Ufw9fWFpaUlnJ2dMW3aNPz555+VvpOXXnoJcXFx6Nq1K6ysrPDpp58CAAoLCzF37lz1d+Du7o7x48fjjz/+UL++rKwMUVFRaNOmDSwsLODh4YGFCxdW+Wcyc+ZMHDp0CH5+frCwsICvry9iY2PV5yxduhRvvfUWAMDT01M9fFbxnWzbtg19+/aFk5MTLCws4OPjg02bNlX6LlQqFZYuXQo3Nzc0btwYffr0QWpqaqU//4rPOGfOHHh4eMDCwgJt2rTB6tWroVKpavCnQCQu9sgQiUChUGj8MFZ49OhRpbapU6dix44dGDFiBObPn4/Tp09j5cqVuHr1Kg4ePFjjGmbMmIFmzZphyZIluHfvHoDHvRxffvklZs6cCR8fH+Tn5yMhIQFXr16Fv79/ldcZMmQIbGxssG/fPgQHB2sc27t3L3x9fdXzfsLDw3HlyhW8+eabaNWqFfLy8nDkyBFkZmaiVatWOn+G9PR0AICjoyMAYNq0adi+fTsmTZqEWbNmISMjAxs2bMDFixdx8uRJmJmZqV97/fp1jBkzBtOmTcNrr72G9u3bo6SkBL169cLVq1cxefJk+Pv7448//sDhw4fx22+/oWnTplCpVHj55ZeRkJCA119/HR06dEBycjLWr1+PGzdu4NChQxo1JiQk4MCBA5gxYwZsbW3xySefIDw8HJmZmXB0dMTw4cNx48YN7N69G+vXr1f3ODVr1gzA4+E0X19fvPzyy2jUqBFiYmIwY8YMqFQqREREqN8nMjISa9asQVhYGEJDQ5GUlITQ0FCUlpZq1HP//n0EBwfjzp07mDZtGlq0aIFffvkFkZGRyM7OxkcffaTznwORqAQiqjfbtm0TADz14evrqz7/0qVLAgBh6tSpGtdZsGCBAED48ccf1W0AhKioqErv2bJlS2HChAmVanjhhReE8vJyjXPlcrkQERGh8+caM2aM4OTkpHG97OxswcTERHjvvfcEQRCEP//8UwAgfPDBBzpfPyoqSgAgXL9+Xfj999+FjIwM4dNPPxUsLCwEZ2dn4d69e8LPP/8sABC++OILjdfGxsZWam/ZsqUAQIiNjdU4d8mSJQIA4cCBA5VqUKlUgiAIwueffy6YmJgIP//8s8bxzZs3CwCEkydPqtsACObm5sLNmzfVbUlJSQIA4V//+pe67YMPPhAACBkZGZXe9/79+5XaQkNDhdatW6uf5+TkCI0aNRKGDRumcd7SpUsFABp//suWLROsra2FGzduaJy7aNEiwdTUVMjMzKz0fkSGjENLRCL497//jSNHjlR6dOzYUeO87777DgAwb948jfb58+cDAL799tsa1/Daa6/B1NRUo83e3h6nT5/G3bt3dbrWqFGjkJeXh59++knd9uWXX0KlUmHUqFEAACsrK5ibm+Onn36qNNSjrfbt26NZs2bw9PTEtGnT0KZNG3z77bdo3Lgx9u/fD7lcjv79++OPP/5QPwICAmBjY4Njx45pXMvT0xOhoaEabV999RU6deqEf/zjH5Xeu2Iy8f79+9GhQwd4e3trvE/FMNeT7xMSEgIvLy/1844dO8LOzg63bt3S6jP/fd5ORU9ecHAwbt26BYVCAQCIj49HeXk5ZsyYofHaN998s9L19u/fj169eqFJkyYa9YeEhECpVOLEiRNa1UVkKDi0RCSC7t27o2vXrpXaK35cKvz6668wMTFBmzZtNM5zcXGBvb09fv311xrX4OnpWaltzZo1mDBhAjw8PBAQEIDBgwdj/PjxaN269VOvNXDgQMjlcuzduxf9+vUD8HhYqXPnzmjXrh0AwMLCAqtXr8b8+fPh7OyMnj174qWXXsL48ePh4uKiVc1fffUV7OzsYGZmBnd3d42AkJaWBoVCAScnpypfm5eX98zPn56ejvDw8KfWkJaWhqtXr6qHfp71Pi1atKh0TpMmTbQOcydPnkRUVBQSExNx//59jWMKhQJyuVz99+DJvycODg5o0qRJpfovX76sdf1Eho5BhkgCanNrsVKprLK9qjt0Ro4ciV69euHgwYP44Ycf8MEHH2D16tU4cOAABg0aVO17WFhYYNiwYTh48CA2btyI3NxcnDx5Eu+//77GeXPmzEFYWBgOHTqEuLg4LF68GCtXrsSPP/6ILl26PPOz9O7dWz2H5EkqlQpOTk744osvqjz+5A93Te9QUqlUeO6557Bu3boqj3t4eGg8f7LXq4IgCM98r/T0dPTr1w/e3t5Yt24dPDw8YG5uju+++w7r16+v0eRclUqF/v37Y+HChVUerwieRFLBIENkwFq2bAmVSoW0tDR06NBB3Z6bm4vCwkK0bNlS3dakSZNKC6o9fPgQ2dnZOr2nq6srZsyYgRkzZiAvLw/+/v5YsWLFU4MM8Hh4aceOHYiPj8fVq1chCIJ6WOnvvLy8MH/+fMyfPx9paWno3Lkz1q5di507d+pUZ1XXPXr0KIKCgmocUry8vNR3WD3tnKSkJPTr109va9dUd52YmBiUlZXh8OHDGj07Tw5fVfw9uHnzpkZPU35+fqWeHy8vL5SUlCAkJEQvtROJjXNkiAzY4MGDAaDSnSQVvQFDhgxRt3l5eVWa37Bly5Zqe2SepFQq1XMuKjg5OcHNza3SbcVVCQkJgYODA/bu3Yu9e/eie/fuGj+q9+/fr3QHjZeXF2xtbbW6/rOMHDkSSqUSy5Ytq3SsvLxcq1Vzw8PDkZSUVOXdYBU9KCNHjsSdO3ewdevWSuc8ePBAfQeYLirW8HmyxorenL/33igUCmzbtk3jvH79+qFRo0aVbsvesGFDpfcaOXIkEhMTERcXV+lYYWEhysvLda6fSEzskSEyYJ06dcKECROwZcsWFBYWIjg4GGfOnMGOHTswbNgw9OnTR33u1KlT1YvE9e/fH0lJSYiLi6t2KOZJxcXFcHd3x4gRI9CpUyfY2Njg6NGjOHv2LNauXfvM15uZmWH48OHYs2cP7t27hw8//FDj+I0bN9CvXz+MHDkSPj4+aNSoEQ4ePIjc3FyMHj1aty+mCsHBwZg2bRpWrlyJS5cuYcCAATAzM0NaWhr279+Pjz/+GCNGjHjqNd566y18+eWXeOWVVzB58mQEBASgoKAAhw8fxubNm9GpUye8+uqr2LdvH9544w0cO3YMQUFBUCqVuHbtGvbt26dem0YXAQEBAIB3330Xo0ePhpmZGcLCwjBgwACYm5sjLCwM06ZNQ0lJCbZu3QonJyeNnjZnZ2fMnj0ba9euxcsvv4yBAwciKSkJ33//PZo2barR4/PWW2/h8OHDeOmllzBx4kQEBATg3r17SE5Oxpdffonbt29r/XeGyCCIe9MUUcNScevz2bNnqzweHByscfu1IAjCo0ePhOjoaMHT01MwMzMTPDw8hMjISKG0tFTjPKVSKbz99ttC06ZNhcaNGwuhoaHCzZs3q739+skaysrKhLfeekvo1KmTYGtrK1hbWwudOnUSNm7cqPXnO3LkiABAkMlkQlZWlsaxP/74Q4iIiBC8vb0Fa2trQS6XCz169BD27dv3zOtW3H79+++/P/PcLVu2CAEBAYKVlZVga2srPPfcc8LChQuFu3fvqs9p2bKlMGTIkCpfn5+fL8ycOVNo3ry5YG5uLri7uwsTJkwQ/vjjD/U5Dx8+FFavXi34+voKFhYWQpMmTYSAgAAhOjpaUCgU6vMAVHk7+5N/JoLw+Lbo5s2bCyYmJhq3Yh8+fFjo2LGjYGlpKbRq1UpYvXq18N///rfS7drl5eXC4sWLBRcXF8HKykro27evcPXqVcHR0VF44403NN6ruLhYiIyMFNq0aSOYm5sLTZs2FZ5//nnhww8/FB4+fPjM75jIkMgEQYsZZ0REJDmFhYVo0qQJli9fjnfffVfscojqBOfIEBEZgQcPHlRqq5hb9eKLL9ZvMUT1iHNkiIiMwN69e7F9+3YMHjwYNjY2SEhIwO7duzFgwAAEBQWJXR5RnWGQISIyAh07dkSjRo2wZs0aFBUVqScAL1++XOzSiOoU58gQERGRZHGODBEREUkWgwwRERFJltHPkVGpVLh79y5sbW31tpw4ERER1S1BEFBcXAw3NzeYmFTf72L0Qebu3buVNnEjIiIiacjKyoK7u3u1x40+yNja2gJ4/EXY2dmJXA0RERFpo6ioCB4eHurf8eoYfZCpGE6ys7NjkCEiIpKYZ00L4WRfIiIikiwGGSIiIpIsBhkiIiKSLKOfI6MtpVKJR48eiV1Gg2FmZgZTU1OxyyAiIolr8EFGEATk5OSgsLBQ7FIaHHt7e7i4uHB9HyIiqrEGH2QqQoyTkxMaN27MH9V6IAgC7t+/j7y8PACAq6uryBUREZFUNeggo1Qq1SHG0dFR7HIaFCsrKwBAXl4enJycOMxEREQ10qAn+1bMiWncuLHIlTRMFd875yYREVFNNeggU4HDSeLg905ERLXVoIeWiIiIGiqlSsCZjALkFZfCydYS3T0dYGoivX9gMsgQERE1MLEp2YiOSUW2olTd5iq3RFSYDwb6SesGDA4t6YFSJSAxPR9fX7qDxPR8KFVCnb/n77//junTp6NFixawsLCAi4sLQkNDcfLkyTp/byIikq7YlGxM33lBI8QAQI6iFNN3XkBsSrZIldUMe2RqSaxUGx4ejocPH2LHjh1o3bo1cnNzER8fj/z8/Dp5v4cPH8Lc3LxOrk1ERPVDqRIQHZOKqv65LQCQAYiOSUV/HxfJDDOxR6YWxEq1hYWF+Pnnn7F69Wr06dMHLVu2RPfu3REZGYmXX35Zfc60adPg7OwMS0tL+Pn54ZtvvlFf46uvvoKvry8sLCzQqlUrrF27VuM9WrVqhWXLlmH8+PGws7PD66+/DgBISEhAr169YGVlBQ8PD8yaNQv37t1Tv27jxo1o27YtLC0t4ezsjBEjRtTJd0BERLo7k1FQ6Tfr7wQA2YpSnMkoqL+iaolBpoaelWqBx6m2LoaZbGxsYGNjg0OHDqGsrKzScZVKhUGDBuHkyZPYuXMnUlNTsWrVKvVaLefPn8fIkSMxevRoJCcnY+nSpVi8eDG2b9+ucZ0PP/wQnTp1wsWLF7F48WKkp6dj4MCBCA8Px+XLl7F3714kJCRg5syZAIBz585h1qxZeO+993D9+nXExsaid+/eev/8RERUM3nF1YeYmpxnCGSCINT9hA4RFRUVQS6XQ6FQwM7OTuNYaWkpMjIy4OnpCUtLS52um5iejzFbTz3zvN2v9USgl/4X2/vqq6/w2muv4cGDB/D390dwcDBGjx6Njh074ocffsCgQYNw9epVtGvXrtJrx44di99//x0//PCDum3hwoX49ttvceXKFQCPe2S6dOmCgwcPqs+ZOnUqTE1N8emnn6rbEhISEBwcjHv37uG7777DpEmT8Ntvv8HW1vaZn6E23z8REelO7N8uXTzt9/vv2CNTQ2Kn2vDwcNy9exeHDx/GwIED8dNPP8Hf3x/bt2/HpUuX4O7uXmWIAYCrV68iKChIoy0oKAhpaWlQKpXqtq5du2qck5SUhO3bt6t7hGxsbBAaGgqVSoWMjAz0798fLVu2ROvWrfHqq6/iiy++wP379/X/4YmIqEa6ezrAVW6J6ma/yPB4nmd3T4f6LKtWGGRqyMlWux4Ebc+rCUtLS/Tv3x+LFy/GL7/8gokTJyIqKkq9/H9tWVtbazwvKSnBtGnTcOnSJfUjKSkJaWlp8PLygq2tLS5cuIDdu3fD1dUVS5YsQadOnbghJxGRgTA1kSEqzAcAKoWZiudRYT6SmegLMMjUmCGmWh8fH9y7dw8dO3bEb7/9hhs3blR5XocOHSrdpn3y5Em0a9fuqXse+fv7IzU1FW3atKn0qLijqVGjRggJCcGaNWtw+fJl3L59Gz/++KP+PiQREdXKQD9XbBrnDxe55j+0XeSW2DTOX3LryPD26xqqSLXTd16ADNCY9FvXqTY/Px+vvPIKJk+ejI4dO8LW1hbnzp3DmjVrMHToUAQHB6N3794IDw/HunXr0KZNG1y7dg0ymQwDBw7E/Pnz0a1bNyxbtgyjRo1CYmIiNmzYgI0bNz71fd9++2307NkTM2fOxNSpU2FtbY3U1FQcOXIEGzZswDfffINbt26hd+/eaNKkCb777juoVCq0b99e798BERHV3EA/V/T3ceHKvg1dRap9ch0ZlzpeR8bGxgY9evTA+vXrkZ6ejkePHsHDwwOvvfYa3nnnHQCPJwMvWLAAY8aMwb1799CmTRusWrUKwOOelX379mHJkiVYtmwZXF1d8d5772HixIlPfd+OHTvi+PHjePfdd9GrVy8IggAvLy+MGjUKAGBvb48DBw5g6dKlKC0tRdu2bbF79274+vrWyfdAREQ1Z2oiE31Crz7wriU93DVjLPtV1DfetURERNXR9q4l9sjogbGkWiIiIqnhZF8iIiKSLAYZIiIikiwGGSIiIpIsBhkARj7f2WDxeyciotpq0EHGzMwMALiMvkgqvveKPwciIiJdNei7lkxNTWFvb4+8vDwAQOPGjSGT8bbpuiYIAu7fv4+8vDzY29s/dTVhIiKip2nQQQYAXFxcAEAdZqj+2Nvbq79/IiKimmjwQUYmk8HV1RVOTk549OiR2OU0GGZmZuyJISKiWhM1yBQXF2Px4sU4ePAg8vLy0KVLF3z88cfo1q0bgMdDEFFRUdi6dSsKCwsRFBSETZs2oW3btnqvxdTUlD+sREREEiPqZN+pU6fiyJEj+Pzzz5GcnIwBAwYgJCQEd+7cAQCsWbMGn3zyCTZv3ozTp0/D2toaoaGhKC0tfcaViYiIqCEQba+lBw8ewNbWFl9//TWGDBmibg8ICMCgQYOwbNkyuLm5Yf78+ViwYAEAQKFQwNnZGdu3b8fo0aO1eh9t92ogIiIiw6Ht77doPTLl5eVQKpWVNgu0srJCQkICMjIykJOTg5CQEPUxuVyOHj16IDExsdrrlpWVoaioSONBRERExkm0IGNra4vAwEAsW7YMd+/ehVKpxM6dO5GYmIjs7Gzk5OQAAJydnTVe5+zsrD5WlZUrV0Iul6sfHh4edfo5iIiISDyizpH5/PPPIQgCmjdvDgsLC3zyyScYM2YMTExqXlZkZCQUCoX6kZWVpceKiYiIyJCIGmS8vLxw/PhxlJSUICsrC2fOnMGjR4/QunVr9foiubm5Gq/Jzc196tojFhYWsLOz03gQERGRcTKILQqsra3h6uqKP//8E3FxcRg6dCg8PT3h4uKC+Ph49XlFRUU4ffo0AgMDRayWiIiIDIWo68jExcVBEAS0b98eN2/exFtvvQVvb29MmjQJMpkMc+bMwfLly9G2bVt4enpi8eLFcHNzw7Bhw8Qsm4iIqMFTqgScyShAXnEpnGwt0d3TAaYm9b/Nj6hBRqFQIDIyEr/99hscHBwQHh6OFStWqDcRXLhwIe7du4fXX38dhYWFeOGFFxAbG1vpTiciIiKqP7Ep2YiOSUW24q913VzllogK88FAP9d6rUW0dWTqC9eRISIi0p/YlGxM33kBT4aHir6YTeP89RJmDH4dGSIiIpIWpUpAdExqpRADQN0WHZMKpar++kgYZIiIiEgrZzIKNIaTniQAyFaU4kxGQb3VxCBDREREWskr1m6vQ23P0wcGGSIiItKKk612N9toe54+MMgQERGRVrp7OsBVbonqbrKW4fHdS909HeqtJgYZIiIi0oqpiQxRYT4AUCnMVDyPCvOp1/VkGGSIiKhBU6oEJKbn4+tLd5CYnl+vd9xI0UA/V2wa5w8XuebwkYvcUm+3XutC1AXxiIiIxGRIC7tJyUA/V/T3cTGIlX25IB4RETVI9bWwG9UMF8QjIiKqhiEu7EY1wyBDREQNRsV8mPVHrhvcwm5UM5wjQ0REDUJV82GepT4XdqOaYZAhIiKjV918mGepz4XdqGYYZIiIyKg9bT5MdWR4fDtxfS7sRjXDOTJERGTUnrXR4ZPEWtiNaoY9MkREZNR0nefiwnVkJIVBhoiIjJq281xm9mmDoDZNRVvYjWqGQYaIiIxaxUaHOYrSKufJVMyHmdu/HQOMBHGODBERGTVD3OiQ9IdBhoiIjJ6hbXRI+sOhJSIiahAMaaND0h8GGSIiajBMTWQI9HIUuwzSIw4tERERkWQxyBAREZFkMcgQERGRZDHIEBERkWQxyBAREZFk8a4lIiKieqRUCbwFXI8YZIiIiOpJbEo2omNSNXbjduUmlbXCoSUiIqJ6EJuSjek7L2iEGADIUZRi+s4LiE3JFqkyaWOQISIiqmNKlYDomNQqN62saIuOSYVSVdUZ9DQMMkRERHXsTEZBpZ6YvxMAZCtKcSajoP6KMhKiBhmlUonFixfD09MTVlZW8PLywrJlyyAIfyVSQRCwZMkSuLq6wsrKCiEhIUhLSxOxaiIiIt3kFVcfYmpyHv1F1CCzevVqbNq0CRs2bMDVq1exevVqrFmzBv/617/U56xZswaffPIJNm/ejNOnT8Pa2hqhoaEoLeUfNhERSYOTreWzT9LhPPqLqHct/fLLLxg6dCiGDBkCAGjVqhV2796NM2fOAHjcG/PRRx/hn//8J4YOHQoA+N///gdnZ2ccOnQIo0ePFq12IiIibXX3dICr3BI5itIq58nIALjIH9+KTboRtUfm+eefR3x8PG7cuAEASEpKQkJCAgYNGgQAyMjIQE5ODkJCQtSvkcvl6NGjBxITE0WpmYiISFemJjJEhfkAeBxa/q7ieVSYD9eTqQFRe2QWLVqEoqIieHt7w9TUFEqlEitWrMDYsWMBADk5OQAAZ2dnjdc5Ozurjz2prKwMZWVl6udFRUV1VD0REZH2Bvq5YtM4/0rryLhwHZlaETXI7Nu3D1988QV27doFX19fXLp0CXPmzIGbmxsmTJhQo2uuXLkS0dHReq6UiIio9gb6uaK/jwtX9tUjmfD3W4TqmYeHBxYtWoSIiAh12/Lly7Fz505cu3YNt27dgpeXFy5evIjOnTurzwkODkbnzp3x8ccfV7pmVT0yHh4eUCgUsLOzq9PPQ0RERPpRVFQEuVz+zN9vUefI3L9/HyYmmiWYmppCpVIBADw9PeHi4oL4+Hj18aKiIpw+fRqBgYFVXtPCwgJ2dnYaDyIiIjJOog4thYWFYcWKFWjRogV8fX1x8eJFrFu3DpMnTwYAyGQyzJkzB8uXL0fbtm3h6emJxYsXw83NDcOGDROzdCIiIjIAogaZf/3rX1i8eDFmzJiBvLw8uLm5Ydq0aViyZIn6nIULF+LevXt4/fXXUVhYiBdeeAGxsbGwtOS99kRERA2dqHNk6oO2Y2xERERkOCQxR4aIiIioNhhkiIiISLIYZIiIiEiyGGSIiIhIshhkiIiISLIYZIiIiEiyRF1HhoiIpEupErhnEImOQYaIiHQWm5JdaRdnV+7iTCLg0BIREekkNiUb03de0AgxAJCjKMX0nRcQm5ItUmXUEDHIEBGR1pQqAdExqahqSfiKtuiYVChVRr1oPBkQBhkiItLamYyCSj0xfycAyFaU4kxGQf0VZcSUKgGJ6fn4+tIdJKbnMyBWgXNkiIhIa3nF1YeYmpxH1eM8JO2wR4aIiLTmZGup1/OoapyHpD0GGSIi0lp3Twe4yi1R3U3WMjzuNeju6VCfZRkVzkPSDYMMERFpzdREhqgwHwCoFGYqnkeF+XA9mVrgPCTdMMgQEZFOBvq5YtM4f7jINYePXOSW2DTOn/M3aonzkHTDyb5ERKSzgX6u6O/jwpV96wDnIemGQYaIiGrE1ESGQC9HscswOhXzkHIUpVXOk5Hhce8X5yE9xqElIiIiA8J5SLphkCEiIjIwnIekPQ4tERERGSDOQ9IOgwwREZGB4jykZ+PQEhEREUkWgwwRERFJFoMMERERSRaDDBEREUkWgwwRERFJFoMMERERSRaDDBEREUkWgwwRERFJFoMMERERSRaDDBEREUmWqEGmVatWkMlklR4REREAgNLSUkRERMDR0RE2NjYIDw9Hbm6umCUTERGRARE1yJw9exbZ2dnqx5EjRwAAr7zyCgBg7ty5iImJwf79+3H8+HHcvXsXw4cPF7NkIiIiMiAyQRAEsYuoMGfOHHzzzTdIS0tDUVERmjVrhl27dmHEiBEAgGvXrqFDhw5ITExEz549tbpmUVER5HI5FAoF7Ozs6rJ8IiIi0hNtf78NZo7Mw4cPsXPnTkyePBkymQznz5/Ho0ePEBISoj7H29sbLVq0QGJiooiVEhERkaFoJHYBFQ4dOoTCwkJMnDgRAJCTkwNzc3PY29trnOfs7IycnJxqr1NWVoaysjL186Kiorool4iI6plSJeBMRgHyikvhZGuJ7p4OMDWRiV0Wicxggsxnn32GQYMGwc3NrVbXWblyJaKjo/VUFRERGYLYlGxEx6QiW1GqbnOVWyIqzAcD/VxFrIzEVqOhpZ9//hnjxo1DYGAg7ty5AwD4/PPPkZCQUKMifv31Vxw9ehRTp05Vt7m4uODhw4coLCzUODc3NxcuLi7VXisyMhIKhUL9yMrKqlFNRERkGGJTsjF95wWNEAMAOYpSTN95AbEp2SJVRoZA5yDz1VdfITQ0FFZWVrh48aJ6GEehUOD999+vURHbtm2Dk5MThgwZom4LCAiAmZkZ4uPj1W3Xr19HZmYmAgMDq72WhYUF7OzsNB5ERCRNSpWA6JhUVHVXSkVbdEwqlCqDuW+F6pnOQWb58uXYvHkztm7dCjMzM3V7UFAQLly4oHMBKpUK27Ztw4QJE9Co0V8jXXK5HFOmTMG8efNw7NgxnD9/HpMmTUJgYKDWdywREZG0nckoqNQT83cCgGxFKc5kFNRfUWRQdJ4jc/36dfTu3btSu1wurzQMpI2jR48iMzMTkydPrnRs/fr1MDExQXh4OMrKyhAaGoqNGzfq/B5ERCRNecXVh5ianEfGR+cg4+Ligps3b6JVq1Ya7QkJCWjdurXOBQwYMADVLWVjaWmJf//73/j3v/+t83WJiEj6nGwt9XoeGR+dh5Zee+01zJ49G6dPn4ZMJsPdu3fxxRdfYMGCBZg+fXpd1EhERA1Ud08HuMotUd1N1jI8vnupu6dDfZZFBkTnHplFixZBpVKhX79+uH//Pnr37g0LCwssWLAAb775Zl3USEREDZSpiQxRYT6YvvMCZIDGpN+KcBMV5sP1ZBownbYoUCqVOHnyJDp27IjGjRvj5s2bKCkpgY+PD2xsbOqyzhrjFgVEJBVc8K16XEem4dH291vnvZYsLS1x9epVeHp61rrI+sAgQ0RSwB/qZ2PQa1jqbK8lPz8/3Lp1q1bFERHRX7jgm3ZMTWQI9HLE0M7NEejlyBBDAGq4jsyCBQvwzTffIDs7G0VFRRoPIiLSHhd8I6odnSf7Dh48GADw8ssvQyb7Kw0LggCZTAalUqm/6oiIjJwuC74FejnWX2FEEqFzkDl27Fhd1EFE1CBxwTei2tE5yAQHB9dFHUREDRIXfCOqHZ2DDAAUFhbis88+w9WrVwEAvr6+mDx5MuRyuV6LIyIydhULvuUoSqucJyMD4MIF34iqpfNk33PnzsHLywvr169HQUEBCgoKsG7dOnh5edVo00giooasYsE3AJVWr+WCb0TPpvM6Mr169UKbNm2wdetW9W7V5eXlmDp1Km7duoUTJ07USaE1xXVkiEgKuI4MkaY6WxDPysoKFy9ehLe3t0Z7amoqunbtivv379es4jrCIENEUsEF34j+ou3vt85zZOzs7JCZmVkpyGRlZcHW1lb3SomICMBfC74RkfZ0niMzatQoTJkyBXv37kVWVhaysrKwZ88eTJ06FWPGjKmLGomIiIiqpHOPzIcffgiZTIbx48ejvLwcAGBmZobp06dj1apVei+QiIiIqDo6z5GpcP/+faSnpwMAvLy80LhxY70Wpi+cI0NERCQ9dTZHRqFQQKlUwsHBAc8995y6vaCgAI0aNWJYICIionqj8xyZ0aNHY8+ePZXa9+3bh9GjR+ulKCIiIiJt6BxkTp8+jT59+lRqf/HFF3H69Gm9FEVERESkDZ2DTFlZmXqS7989evQIDx480EtRRERERNrQOch0794dW7ZsqdS+efNmBAQE6KUoIiIiIm3oPNl3+fLlCAkJQVJSEvr16wcAiI+Px9mzZ/HDDz/ovUAiIiKi6ujcIxMUFITExER4eHhg3759iImJQZs2bXD58mX06tWrLmokIpIspUpAYno+vr50B4np+VCqarTiBRFVo8bryEgF15EhIrFwI0iimtP291vrHpny8nKUlZVptOXm5iI6OhoLFy5EQkJCzaslIjIysSnZmL7zgkaIAYAcRSmm77yA2JRskSojMi5aB5nXXnsNs2bNUj8vLi5Gt27d8O9//xtxcXHo06cPvvvuuzopkohISpQqAdExqaiqu7uiLTomlcNMRHqgdZA5efIkwsPD1c//97//QalUIi0tDUlJSZg3bx4++OCDOimSiEhKzmQUVOqJ+TsBQLaiFGcyCuqvKCIjpXWQuXPnDtq2bat+Hh8fj/DwcMjlcgDAhAkTcOXKFf1XSEQkMXnF1YeYmpxHRNXTOshYWlpqLHh36tQp9OjRQ+N4SUmJfqsjIpIgJ1tLvZ5HRNXTOsh07twZn3/+OQDg559/Rm5uLvr27as+np6eDjc3N/1XSEQkMd09HeAqt4SsmuMyPL57qbunQ32WRWSUtA4yS5YswccffwwvLy+EhoZi4sSJcHX96/bBgwcPIigoqE6KJCKSElMTGaLCfACgUpipeB4V5gNTk+qiDhFpS+sgExwcjPPnz2PWrFnYtm0btm7dqnG8c+fOmDt3rs4F3LlzB+PGjYOjoyOsrKzw3HPP4dy5c+rjgiBgyZIlcHV1hZWVFUJCQpCWlqbz+xARVacuFq0b6OeKTeP84SLXHD5ykVti0zh/riNDpCeiLoj3559/okuXLujTpw+mT5+OZs2aIS0tDV5eXvDy8gIArF69GitXrsSOHTvg6emJxYsXIzk5GampqbC0fPb4MhfEI6KnqetF65QqAWcyCpBXXAon28fDSeyJIXo2bX+/RQ0yixYtwsmTJ/Hzzz9XeVwQBLi5uWH+/PlYsGABAEChUMDZ2Rnbt2/H6NGjn/keDDJEVJ2KReue/J9gRcxgzwmRePS+sm9dOHz4MLp27YpXXnkFTk5O6NKli8aQVUZGBnJychASEqJuk8vl6NGjBxITE8UomYiMBBetIzIOogaZW7duYdOmTWjbti3i4uIwffp0zJo1Czt27AAA5OTkAACcnZ01Xufs7Kw+9qSysjIUFRVpPIiInsRF64iMQyMx31ylUqFr1654//33AQBdunRBSkoKNm/ejAkTJtTomitXrkR0dLQ+yyQiI8RF64iMQ416ZAoLC/Gf//wHkZGRKCh4/K+VCxcu4M6dOzpdx9XVFT4+PhptHTp0QGZmJgDAxcUFwOPNKf8uNzdXfexJkZGRUCgU6kdWVpZONRFRw8BF64iMg85B5vLly2jXrh1Wr16NDz/8EIWFhQCAAwcOIDIyUqdrBQUF4fr16xptN27cQMuWLQEAnp6ecHFxQXx8vPp4UVERTp8+jcDAwCqvaWFhATs7O40HEdGTuGgdkXHQOcjMmzcPEydORFpamsbtz4MHD8aJEyd0utbcuXNx6tQpvP/++7h58yZ27dqFLVu2ICIiAgAgk8kwZ84cLF++HIcPH0ZycjLGjx8PNzc3DBs2TNfSiYjUuGgdkXHQOcicPXsW06ZNq9TevHnzaifgVqdbt244ePAgdu/eDT8/PyxbtgwfffQRxo4dqz5n4cKFePPNN/H666+jW7duKCkpQWxsrFZryBARPQ0XrSOSPp3XkXFyckJcXBy6dOkCW1tbJCUloXXr1jhy5AgmT55scHNSuI4MET0LF60jMjza/n7rfNfSyy+/jPfeew/79u0D8Hj4JzMzE2+//TbCw8NrXjERkUhMTWQI9HIUuwwiqgGdh5bWrl2LkpISODk54cGDBwgODkabNm1ga2uLFStW1EWNRERERFXSuUdGLpfjyJEjSEhIwOXLl1FSUgJ/f3+N1XeJiIiI6oOoey3VB86RISIikp46myPzySefVNkuk8lgaWmJNm3aoHfv3jA1NdX10kREREQ60TnIrF+/Hr///jvu37+PJk2aAAD+/PNPNG7cGDY2NsjLy0Pr1q1x7NgxeHh46L1gIiIiogo6T/Z9//330a1bN6SlpSE/Px/5+fm4ceMGevTogY8//hiZmZlwcXHB3Llz66JeIiIiIjWd58h4eXnhq6++QufOnTXaL168iPDwcNy6dQu//PILwsPDkZ2drc9aa4RzZIiIiKRH299vnXtksrOzUV5eXqm9vLxcvbKvm5sbiouLdb00ERERkU50DjJ9+vTBtGnTcPHiRXXbxYsXMX36dPTt2xcAkJycDE9PT/1VSURERFQFnYPMZ599BgcHBwQEBMDCwgIWFhbo2rUrHBwc8NlnnwEAbGxssHbtWr0XS0RERPR3NV5H5tq1a7hx4wYAoH379mjfvr1eC9MXzpEhIiKSnjpbR6aCt7c3vL29a/pyIiIiolqrUZD57bffcPjwYWRmZuLhw4cax9atW6eXwoiIiIieRecgEx8fj5dffhmtW7fGtWvX4Ofnh9u3b0MQBPj7+9dFjURERERV0nmyb2RkJBYsWIDk5GRYWlriq6++QlZWFoKDg/HKK6/URY1EZASUKgGJ6fn4+tIdJKbnQ6ky6m3eiKie6Nwjc/XqVezevfvxixs1woMHD2BjY4P33nsPQ4cOxfTp0/VeJBFJW2xKNqJjUpGtKFW3ucotERXmg4F+riJWRkRSp3OPjLW1tXpejKurK9LT09XH/vjjD/1VRkRGITYlG9N3XtAIMQCQoyjF9J0XEJsi/grgRCRdOvfI9OzZEwkJCejQoQMGDx6M+fPnIzk5GQcOHEDPnj3rokYikiilSkB0TCqqGkQSAMgARMekor+PC0xNZPVcHREZA52DzLp161BSUgIAiI6ORklJCfbu3Yu2bdvyjiUi0nAmo6BST8zfCQCyFaU4k1GAQC/H+iuMiIyGzkGmdevW6v+2trbG5s2b9VoQERmPvOLqQ0xNziMiepLOc2Rat26N/Pz8Su2FhYUaIYeIyMnWUq/nERE9Secgc/v2bSiVykrtZWVluHPnjl6KIiLj0N3TAa5yS1Q3+0WGx3cvdfd0qM+yiMiIaD20dPjwYfV/x8XFQS6Xq58rlUrEx8ejVatWei2OiKTN1ESGqDAfTN95ATJAY9JvRbiJCvPhRF8iqjGtN400MXnceSOTyfDkS8zMzNCqVSusXbsWL730kv6rrAVuGkkkPq4jQ0S60vumkSqVCgDg6emJs2fPomnTprWvkogahIF+rujv44IzGQXIKy6Fk+3j4ST2xBBRbel811JGRkZd1EFERs7URMZbrIlI72q0+3V8fDzi4+ORl5en7qmp8N///lcvhRERERE9i85BJjo6Gu+99x66du0KV1dXyGTsGiYiIiJx6BxkNm/ejO3bt+PVV1+ti3qIiIiItKbzOjIPHz7E888/Xxe1EBEREelE5yAzdepU7Nq1qy5qISIiItKJzkNLpaWl2LJlC44ePYqOHTvCzMxM47guG0cuXboU0dHRGm3t27fHtWvX1O81f/587NmzB2VlZQgNDcXGjRvh7Oysa9lERERkhHQOMpcvX0bnzp0BACkpKRrHajLx19fXF0ePHv2roEZ/lTR37lx8++232L9/P+RyOWbOnInhw4fj5MmTOr8PERERGR+dg8yxY8f0W0CjRnBxcanUrlAo8Nlnn2HXrl3o27cvAGDbtm3o0KEDTp06hZ49e+q1DiIiIpIenefIVLh58ybi4uLw4MEDAKi0bYG20tLS4ObmhtatW2Ps2LHIzMwEAJw/fx6PHj1CSEiI+lxvb2+0aNECiYmJNS2biIiIjIjOQSY/Px/9+vVDu3btMHjwYGRnZwMApkyZgvnz5+t0rR49emD79u2IjY3Fpk2bkJGRgV69eqG4uBg5OTkwNzeHvb29xmucnZ2Rk5NT7TXLyspQVFSk8SAiIiLjpHOQmTt3LszMzJCZmYnGjRur20eNGoXY2FidrjVo0CC88sor6NixI0JDQ/Hdd9+hsLAQ+/bt07UstZUrV0Iul6sfHh4eNb4WERERGTadg8wPP/yA1atXw93dXaO9bdu2+PXXX2tVjL29Pdq1a4ebN2/CxcUFDx8+RGFhocY5ubm5Vc6pqRAZGQmFQqF+ZGVl1aomIiIiMlw6B5l79+5p9MRUKCgogIWFRa2KKSkpQXp6OlxdXREQEAAzMzPEx8erj1+/fh2ZmZkIDAys9hoWFhaws7PTeBAREZFx0jnI9OrVC//73//Uz2UyGVQqFdasWYM+ffrodK0FCxbg+PHjuH37Nn755Rf84x//gKmpKcaMGQO5XI4pU6Zg3rx5OHbsGM6fP49JkyYhMDCQdywRERERgBrcfr1mzRr069cP586dw8OHD7Fw4UJcuXIFBQUFOq/v8ttvv2HMmDHIz89Hs2bN8MILL+DUqVNo1qwZAGD9+vUwMTFBeHi4xoJ4RERERAAgE2pw37RCocCGDRuQlJSEkpIS+Pv7IyIiAq6urnVRY60UFRVBLpdDoVBwmImIiEgitP39rlGQkRIGGSIiIunR9vdb5zky27Ztw/79+yu179+/Hzt27ND1ckREREQ1pnOQWblyJZo2bVqp3cnJCe+//75eiiIiqopSJSAxPR9fX7qDxPR8KFVG3aFMRFrQebJvZmYmPD09K7W3bNlSvb0AEZG+xaZkIzomFdmKUnWbq9wSUWE+GOhnePPziKh+6Nwj4+TkhMuXL1dqT0pKgqOjo16KIiL6u9iUbEzfeUEjxABAjqIU03deQGxKtkiVEZHYdA4yY8aMwaxZs3Ds2DEolUoolUr8+OOPmD17NkaPHl0XNRJRA6ZUCYiOSUVVg0gVbdExqRxmImqgdB5aWrZsGW7fvo1+/fqhUaPHL1epVBg/fjznyBCR3p3JKKjUE/N3AoBsRSnOZBQg0Iu9wkQNjU5BRhAE5OTkYPv27Vi+fDkuXboEKysrPPfcc2jZsmVd1UhEDVhecfUhpibnEZFx0TnItGnTBleuXEHbtm3Rtm3buqqLiAgA4GRrqdfziMi46DRHxsTEBG3btkV+fn5d1UNEpKG7pwNc5ZaQVXNchsd3L3X3dKjPsojIQOg82XfVqlV46623kJKSUhf1EBFpMDWRISrMBwAqhZmK51FhPjA1qS7qEJEx03mLgiZNmuD+/fsoLy+Hubk5rKysNI4XFBTotcDa4hYFRMaB68gQNSza/n7rfNfSRx99VJu6iIhqZKCfK/r7uOBMRgHyikvhZPt4OIk9MUQNGzeNJCIiIoNTZ5tGAkB6ejr++c9/YsyYMcjLywMAfP/997hy5UrNqiUiIiKqAZ2DzPHjx/Hcc8/h9OnTOHDgAEpKSgA83qIgKipK7wUSERERVUfnILNo0SIsX74cR44cgbm5ubq9b9++OHXqlF6LIyIiInoanYNMcnIy/vGPf1Rqd3Jywh9//KGXooiIiIi0oXOQsbe3R3Z25Z1mL168iObNm+ulKCIiIiJt6BxkRo8ejbfffhs5OTmQyWRQqVQ4efIkFixYgPHjx9dFjURERERV0jnIvP/++/D29oaHhwdKSkrg4+OD3r174/nnn8c///nPuqiRiIiIqEo1XkcmKysLycnJKCkpQZcuXQx2A0muI0NERCQ9el/ZV6VS4YMPPsDhw4fx8OFD9OvXD1FRUZW2KCAiIiKqL1oPLa1YsQLvvPMObGxs0Lx5c3z88ceIiIioy9qIRKdUCUhMz8fXl+4gMT0fSpVRL4RNRCQ5Wg8ttW3bFgsWLMC0adMAAEePHsWQIUPw4MEDmJjUaIHgesGhJaopblJIRCQevW9RkJmZicGDB6ufh4SEQCaT4e7du7WrlMgAxaZkY/rOCxohBgByFKWYvvMCYlMqL0FARET1T+sgU15eDktLS402MzMzPHr0SO9FEYlJqRIQHZOKqroqK9qiY1I5zEREZAC0nuwrCAImTpwICwsLdVtpaSneeOMNWFtbq9sOHDig3wqJ6tmZjIJKPTF/JwDIVpTiTEYBAr0c668wIiKqROsgM2HChEpt48aN02sxRIYgr7j6EFOT84yFUiXgTEYB8opL4WRrie6eDjA1kYldFhE1cFoHmW3bttVlHUQGw8nW8tkn6XCeMeDEZyIyVIZ7uxGRSLp7OsBVbonq+hpkePwj3t3ToT7LEg0nPhORIWOQIXqCqYkMUWE+AFApzFQ8jwrzaRDDKpz4TESGjkGGqAoD/VyxaZw/XOSaw0cucktsGuffYIZTdJn4TEQkBoMJMqtWrYJMJsOcOXPUbaWlpYiIiICjoyNsbGwQHh6O3Nxc8YqkBmWgnysS3u6L3a/1xMejO2P3az2R8HbfBhNiAE58JiLDZxBB5uzZs/j000/RsWNHjfa5c+ciJiYG+/fvx/Hjx3H37l0MHz5cpCqpITI1kSHQyxFDOzdHoJdjgxhO+jtOfCYiQyd6kCkpKcHYsWOxdetWNGnSRN2uUCjw2WefYd26dejbty8CAgKwbds2/PLLLzh16pSIFRM1HJz4TESGTvQgExERgSFDhiAkJESj/fz583j06JFGu7e3N1q0aIHExMRqr1dWVoaioiKNBxHVDCc+E5GhEzXI7NmzBxcuXMDKlSsrHcvJyYG5uTns7e012p2dnZGTk1PtNVeuXAm5XK5+eHh46LtsogaFE5+JyJBpvSCevmVlZWH27Nk4cuRIpT2caiMyMhLz5s1TPy8qKmKYIaqlgX6u6O/jwpV9icjgiBZkzp8/j7y8PPj7+6vblEolTpw4gQ0bNiAuLg4PHz5EYWGhRq9Mbm4uXFxcqr2uhYWFxn5QRKQfFROfiYgMiWhBpl+/fkhOTtZomzRpEry9vfH222/Dw8MDZmZmiI+PR3h4OADg+vXryMzMRGBgoBglExERkYERLcjY2trCz89Po83a2hqOjo7q9ilTpmDevHlwcHCAnZ0d3nzzTQQGBqJnz55ilExEREQGRrQgo43169fDxMQE4eHhKCsrQ2hoKDZu3Ch2WURERGQgZIIgGPUmKUVFRZDL5VAoFLCzsxO7HCIiItKCtr/foq8jQ0RERFRTDDJEREQkWQwyREREJFkMMkRERCRZDDJEREQkWQwyREREJFkMMkRERCRZDDJEREQkWQwyREREJFkGvUUBUUOjVAk4k1GAvOJSONlaorunA0xNZGKXRURksBhkiAxEbEo2omNSka0oVbe5yi0RFeaDgX6uIlZGRGS4OLREZABiU7IxfecFjRADADmKUkzfeQGxKdkiVUZEZNgYZIhEplQJiI5JRVW7t1a0RcekQqky6v1diYhqhEGGSGRnMgoq9cT8nQAgW1GKMxkF9VcUEZFEMMgQiSyvuPoQU5PziIgaEgYZIpE52Vrq9TwiooaEQYZIZN09HeAqt0R1N1nL8Pjupe6eDvVZFhGRJDDIEInM1ESGqDAfAKgUZiqeR4X5cD0ZIqIqMMgQGYCBfq7YNM4fLnLN4SMXuSU2jfPnOjJERNXggnhEBmKgnyv6+7hwZV8iIh0wyBAZEFMTGQK9HMUug4hIMji0RERERJLFIENERESSxSBDREREksUgQ0RERJLFIENERESSxSBDREREksUgQ0RERJLFIENERESSxSBDREREksUgQ0RERJLFLQqo3ihVgk77COl6vtikVi8RkTEQNchs2rQJmzZtwu3btwEAvr6+WLJkCQYNGgQAKC0txfz587Fnzx6UlZUhNDQUGzduhLOzs4hVU03EpmQjOiYV2YpSdZur3BJRYT5V7uys6/lik1q9RETGQtShJXd3d6xatQrnz5/HuXPn0LdvXwwdOhRXrlwBAMydOxcxMTHYv38/jh8/jrt372L48OFilkw1EJuSjek7L2j8yANAjqIU03deQGxKdq3OF5vU6iUiMiYyQRAEsYv4OwcHB3zwwQcYMWIEmjVrhl27dmHEiBEAgGvXrqFDhw5ITExEz549tbpeUVER5HI5FAoF7Ozs6rJ0qoJSJeCF1T9W+pGvIAPgIrdEwtt9YWoi0/l8sUmtXiIiqdD299tgJvsqlUrs2bMH9+7dQ2BgIM6fP49Hjx4hJCREfY63tzdatGiBxMTEaq9TVlaGoqIijQeJ50xGQbU/8gAgAMhWlOJMRkGNzheb1OolIjI2ogeZ5ORk2NjYwMLCAm+88QYOHjwIHx8f5OTkwNzcHPb29hrnOzs7Iycnp9rrrVy5EnK5XP3w8PCo409AT5NXXP2PfFXn6Xq+2KRWLxGRsRE9yLRv3x6XLl3C6dOnMX36dEyYMAGpqak1vl5kZCQUCoX6kZWVpcdqSVdOtpY6nafr+WKTWr1ERMZG9Nuvzc3N0aZNGwBAQEAAzp49i48//hijRo3Cw4cPUVhYqNErk5ubCxcXl2qvZ2FhAQsLi7oum7TU3dMBrnJL5ChKUdVkrIo5JN09HWp0vtikVi8RkbERvUfmSSqVCmVlZQgICICZmRni4+PVx65fv47MzEwEBgaKWCHpwtREhqgwHwCPf9T/ruJ5VJiPeiKsrueLTWr1EhEZG1GDTGRkJE6cOIHbt28jOTkZkZGR+OmnnzB27FjI5XJMmTIF8+bNw7Fjx3D+/HlMmjQJgYGBWt+xRIZhoJ8rNo3zh4tcc3jFRW6JTeP8K62zouv5YpNavURExkTU26+nTJmC+Ph4ZGdnQy6Xo2PHjnj77bfRv39/AH8tiLd7926NBfGeNrT0JN5+bTi4si8REWlL299vg1tHRt8YZIiIiKRHcuvIEBEREelK9LuWiAwBh4WIiKSJQYYaPG74SEQkXRxaogaNGz4SEUkbgww1WEqVgOiY1CoXsqtoi45JhVJl1PPhiYgkjUGGGixu+EhEJH0MMtRgccNHIiLpY5ChBosbPhIRSR+DDDVYFRs+VneTtQyP717iho9ERIaLQYYMllIlIDE9H19fuoPE9Hy9T7rlho9ERNLHdWTIINXX2i4VGz4++V4uXEeGiEgSuNcSGZyKtV2e/ItZ0S9SFztKc2VfIiLDou3vN3tkyKA8a20XGR6v7dLfx0WvQcPURIZAL0e9XY+IiOoH58iQQeHaLkREpAv2yDQQUhk64douRESkCwaZBkBKmyJybRciItIFh5aMnNQ2ReTaLkREpAsGGSMmxU0RubYLERHpgkHGiEl14mzF2i4ucs3hIxe5ZZ3cek1ERNLFOTJGTMoTZwf6uaK/j4skJigTEZF4GGSMmNQnznJtFyIiehYOLRkxTpwlIiJjxyBjxDhxloiIjB2DjJHjxFkiIjJmnCPTAHDiLBERGSsGmQaCE2eJiMgYcWiJiIiIJIs9MlRvpLJxJRERSQeDDNULKW1cSURE0sGhJapzUtu4koiIpINBhuqUFDeuJCIi6WCQMTBKlYDE9Hx8fekOEtPzJf8DL9WNK4mISBpEDTIrV65Et27dYGtrCycnJwwbNgzXr1/XOKe0tBQRERFwdHSEjY0NwsPDkZubK1LFdSs2JRsvrP4RY7aewuw9lzBm6ym8sPpHSQ+9SHnjSiIiMnyiBpnjx48jIiICp06dwpEjR/Do0SMMGDAA9+7dU58zd+5cxMTEYP/+/Th+/Dju3r2L4cOHi1h13TDWeSRS37iSiIgMm0wQBIMZu/j999/h5OSE48ePo3fv3lAoFGjWrBl27dqFESNGAACuXbuGDh06IDExET179nzmNYuKiiCXy6FQKGBnZ1fXH6FGlCoBL6z+sdohGBkebymQ8HZfyd2uXPHZchSlVc6TkfJnIyKiuqPt77dBzZFRKBQAAAeHx7sxnz9/Ho8ePUJISIj6HG9vb7Ro0QKJiYlVXqOsrAxFRUUaD0NnzPNIuHElERHVJYMJMiqVCnPmzEFQUBD8/PwAADk5OTA3N4e9vb3Guc7OzsjJyanyOitXroRcLlc/PDw86rr0WjP2eSTcuJKIiOqKwSyIFxERgZSUFCQkJNTqOpGRkZg3b576eVFRkcGHmYYwj4QbVxIRUV0wiCAzc+ZMfPPNNzhx4gTc3d3V7S4uLnj48CEKCws1emVyc3Ph4uJS5bUsLCxgYWFR1yXrVXdPB7jKLZ85j6S7p0N9l6ZX3LiSiIj0TdShJUEQMHPmTBw8eBA//vgjPD09NY4HBATAzMwM8fHx6rbr168jMzMTgYGB9V1uneE8EiIiopoRtUcmIiICu3btwtdffw1bW1v1vBe5XA4rKyvI5XJMmTIF8+bNg4ODA+zs7PDmm28iMDBQqzuWpKRiHsmT+xG5cD8iIiKiaol6+7VMVnUPw7Zt2zBx4kQAjxfEmz9/Pnbv3o2ysjKEhoZi48aN1Q4tPUkKt1//HXeIJiIi0v7326DWkakLUgsyREREJNF1ZIiIiIh0YRB3LUkNh3+IiIgMA4OMjmJTsitNyHXlhFwiIiJRcGhJB8a6sSMREZFUMchoSakSEB2TWuWCdRVt0TGpUKqMeu40ERGRQWGQ0ZIxb+xIREQkVQwyWjL2jR2JiIikiEFGSw1hY0ciIiKpYZDRUsXGjtXdZC3D47uXpL6xIxERkZQwyGiJGzsSEREZHgYZHVRs7Ogi1xw+cpFbYtM4f64jQ0REVM+4IJ6OBvq5or+PC1f2JSIiMgAMMjVgaiJDoJej2GUQERE1eBxaIiIiIslikCEiIiLJYpAhIiIiyWKQISIiIslikCEiIiLJYpAhIiIiyWKQISIiIslikCEiIiLJYpAhIiIiyTL6lX0FQQAAFBUViVwJERERaavid7vid7w6Rh9kiouLAQAeHh4iV0JERES6Ki4uhlwur/a4THhW1JE4lUqFu3fvwtbWFjJZzTZ2LCoqgoeHB7KysmBnZ6fnCsVnzJ/PmD8bwM8nZcb82QB+PikzlM8mCAKKi4vh5uYGE5PqZ8IYfY+MiYkJ3N3d9XItOzs7o/sL+3fG/PmM+bMB/HxSZsyfDeDnkzJD+GxP64mpwMm+REREJFkMMkRERCRZDDJasLCwQFRUFCwsLMQupU4Y8+cz5s8G8PNJmTF/NoCfT8qk9tmMfrIvERERGS/2yBAREZFkMcgQERGRZDHIEBERkWQxyBAREZFkMcg8xYkTJxAWFgY3NzfIZDIcOnRI7JL0ZuXKlejWrRtsbW3h5OSEYcOG4fr162KXpTebNm1Cx44d1Qs6BQYG4vvvvxe7rDqxatUqyGQyzJkzR+xS9GLp0qWQyWQaD29vb7HL0qs7d+5g3LhxcHR0hJWVFZ577jmcO3dO7LL0olWrVpX+/GQyGSIiIsQurdaUSiUWL14MT09PWFlZwcvLC8uWLXvmXkBSUlxcjDlz5qBly5awsrLC888/j7Nnz4pd1lMZ/cq+tXHv3j106tQJkydPxvDhw8UuR6+OHz+OiIgIdOvWDeXl5XjnnXcwYMAApKamwtraWuzyas3d3R2rVq1C27ZtIQgCduzYgaFDh+LixYvw9fUVuzy9OXv2LD799FN07NhR7FL0ytfXF0ePHlU/b9TIeP5X9eeffyIoKAh9+vTB999/j2bNmiEtLQ1NmjQRuzS9OHv2LJRKpfp5SkoK+vfvj1deeUXEqvRj9erV2LRpE3bs2AFfX1+cO3cOkyZNglwux6xZs8QuTy+mTp2KlJQUfP7553Bzc8POnTsREhKC1NRUNG/eXOzyqiaQVgAIBw8eFLuMOpOXlycAEI4fPy52KXWmSZMmwn/+8x+xy9Cb4uJioW3btsKRI0eE4OBgYfbs2WKXpBdRUVFCp06dxC6jzrz99tvCCy+8IHYZ9Wb27NmCl5eXoFKpxC6l1oYMGSJMnjxZo2348OHC2LFjRapIv+7fvy+YmpoK33zzjUa7v7+/8O6774pU1bNxaIkAAAqFAgDg4OAgciX6p1QqsWfPHty7dw+BgYFil6M3ERERGDJkCEJCQsQuRe/S0tLg5uaG1q1bY+zYscjMzBS7JL05fPgwunbtildeeQVOTk7o0qULtm7dKnZZdeLhw4fYuXMnJk+eXONNew3J888/j/j4eNy4cQMAkJSUhISEBAwaNEjkyvSjvLwcSqUSlpaWGu1WVlZISEgQqapnM57+WqoxlUqFOXPmICgoCH5+fmKXozfJyckIDAxEaWkpbGxscPDgQfj4+Ihdll7s2bMHFy5cMPix65ro0aMHtm/fjvbt2yM7OxvR0dHo1asXUlJSYGtrK3Z5tXbr1i1s2rQJ8+bNwzvvvIOzZ89i1qxZMDc3x4QJE8QuT68OHTqEwsJCTJw4UexS9GLRokUoKiqCt7c3TE1NoVQqsWLFCowdO1bs0vTC1tYWgYGBWLZsGTp06ABnZ2fs3r0biYmJaNOmjdjlVU/sLiGpgBEPLb3xxhtCy5YthaysLLFL0auysjIhLS1NOHfunLBo0SKhadOmwpUrV8Quq9YyMzMFJycnISkpSd1mTENLT/rzzz8FOzs7oxkWNDMzEwIDAzXa3nzzTaFnz54iVVR3BgwYILz00ktil6E3u3fvFtzd3YXdu3cLly9fFv73v/8JDg4Owvbt28UuTW9u3rwp9O7dWwAgmJqaCt26dRPGjh0reHt7i11atRhktGSsQSYiIkJwd3cXbt26JXYpda5fv37C66+/LnYZtXbw4EH1/2QqHgAEmUwmmJqaCuXl5WKXqHddu3YVFi1aJHYZetGiRQthypQpGm0bN24U3NzcRKqobty+fVswMTERDh06JHYpeuPu7i5s2LBBo23ZsmVC+/btRaqo7pSUlAh3794VBEEQRo4cKQwePFjkiqrHOTINlCAImDlzJg4ePIgff/wRnp6eYpdU51QqFcrKysQuo9b69euH5ORkXLp0Sf3o2rUrxo4di0uXLsHU1FTsEvWqpKQE6enpcHV1FbsUvQgKCqq01MGNGzfQsmVLkSqqG9u2bYOTkxOGDBkidil6c//+fZiYaP5smpqaQqVSiVRR3bG2toarqyv+/PNPxMXFYejQoWKXVC3OkXmKkpIS3Lx5U/08IyMDly5dgoODA1q0aCFiZbUXERGBXbt24euvv4atrS1ycnIAAHK5HFZWViJXV3uRkZEYNGgQWrRogeLiYuzatQs//fQT4uLixC6t1mxtbSvNZbK2toajo6NRzHFasGABwsLC0LJlS9y9exdRUVEwNTXFmDFjxC5NL+bOnYvnn38e77//PkaOHIkzZ85gy5Yt2LJli9il6Y1KpcK2bdswYcIEo7p1PiwsDCtWrECLFi3g6+uLixcvYt26dZg8ebLYpelNXFwcBEFA+/btcfPmTbz11lvw9vbGpEmTxC6temJ3CRmyY8eOCQAqPSZMmCB2abVW1ecCIGzbtk3s0vRi8uTJQsuWLQVzc3OhWbNmQr9+/YQffvhB7LLqjDHNkRk1apTg6uoqmJubC82bNxdGjRol3Lx5U+yy9ComJkbw8/MTLCwsBG9vb2HLli1il6RXcXFxAgDh+vXrYpeiV0VFRcLs2bOFFi1aCJaWlkLr1q2Fd999VygrKxO7NL3Zu3ev0Lp1a8Hc3FxwcXERIiIihMLCQrHLeiqZIBjRkoRERETUoHCODBEREUkWgwwRERFJFoMMERERSRaDDBEREUkWgwwRERFJFoMMERERSRaDDBEREUkWgwwR0TO0atUKH330kfq5TCbDoUOHanXNiRMnYtiwYbW6BhExyBA1eNX9oP7000+QyWQoLCys95qeJSMjA//3f/8HNzc3WFpawt3dHUOHDsW1a9cAALdv34ZMJsOlS5fq5P2zs7MxaNCgOrk2EenGeDbBICJJevToEczMzHQ6v3///mjfvj0OHDgAV1dX/Pbbb/j+++/rLXS5uLjUy/sQ0bOxR4aItPbVV1/B19cXFhYWaNWqFdauXatxvKohF3t7e2zfvh3AXz0le/fuRXBwMCwtLfHFF1/g119/RVhYGJo0aQJra2v4+vriu+++q7KGK1euID09HRs3bkTPnj3RsmVLBAUFYfny5ejZsycAqHdz79KlC2QyGV588UUAwIsvvog5c+ZoXG/YsGGYOHGi+nleXh7CwsJgZWUFT09PfPHFF5VqePJzZmVlYeTIkbC3t4eDgwOGDh2K27dvq48rlUrMmzcP9vb2cHR0xMKFC8HdYYj0g0GGiLRy/vx5jBw5EqNHj0ZycjKWLl2KxYsXq0OKLhYtWoTZs2fj6tWrCA0NRUREBMrKynDixAkkJydj9erVsLGxqfK1zZo1g4mJCb788ksolcoqzzlz5gwA4OjRo8jOzsaBAwe0rm3ixInIysrCsWPH8OWXX2Ljxo3Iy8ur9vxHjx4hNDQUtra2+Pnnn3Hy5EnY2Nhg4MCBePjwIQBg7dq12L59O/773/8iISEBBQUFOHjwoNY1EVH1OLRERPjmm28qBYcnQ8K6devQr18/LF68GADQrl07pKam4oMPPtDo0dDGnDlzMHz4cPXzzMxMhIeH47nnngMAtG7dutrXNm/eHJ988gkWLlyI6OhodO3aFX369MHYsWPVr2vWrBkAwNHRUadhoBs3buD777/HmTNn0K1bNwDAZ599hg4dOlT7mr1790KlUuE///kPZDIZAGDbtm2wt7fHTz/9hAEDBuCjjz5CZGSk+jNv3rwZcXFxWtdFRNVjjwwRoU+fPrh06ZLG4z//+Y/GOVevXkVQUJBGW1BQENLS0qrtGalO165dNZ7PmjULy5cvR1BQEKKionD58uWnvj4iIgI5OTn44osvEBgYiP3798PX1xdHjhzRqY4nXb16FY0aNUJAQIC6zdvbG/b29tW+JikpCTdv3oStrS1sbGxgY2MDBwcHlJaWIj09HQqFAtnZ2ejRo4f6NY0aNar0HRBRzTDIEBGsra3Rpk0bjUfz5s11vo5MJqs09+PRo0dVvt/fTZ06Fbdu3cKrr76K5ORkdO3aFf/617+e+l62trYICwvDihUrkJSUhF69emH58uVPfY2JiYlW9emipKQEAQEBlYLgjRs38H//93+1ujYRPRuDDBFppUOHDjh58qRG28mTJ9GuXTuYmpoCeDykk52drT6elpaG+/fva3V9Dw8PvPHGGzhw4ADmz5+PrVu3al2bTCaDt7c37t27BwAwNzcHUHl47Mn6lEolUlJS1M+9vb1RXl6O8+fPq9uuX7/+1Luh/P39kZaWBicnp0phUC6XQy6Xw9XVFadPn1a/5sn3IKKaY5AhIq3Mnz8f8fHxWLZsGW7cuIEdO3Zgw4YNWLBggfqcvn37YsOGDbh48SLOnTuHN954Q6tbq+fMmYO4uDhkZGTgwoULOHbsWLXzUi5duoShQ4fiyy+/RGpqKm7evInPPvsM//3vfzF06FAAgJOTE6ysrBAbG4vc3FwoFAp1fd9++y2+/fZbXLt2DdOnT9cIKe3bt8fAgQMxbdo0nD59GufPn8fUqVNhZWVVbe1jx45F06ZNMXToUPz888/IyMjATz/9hFmzZuG3334DAMyePRurVq3CoUOHcO3aNcyYMcMg1+chkiIGGSLSir+/P/bt24c9e/bAz88PS5YswXvvvacx0Xft2rXw8PBAr1698H//939YsGABGjdu/MxrK5VKREREoEOHDhg4cCDatWuHjRs3Vnmuu7s7WrVqhejoaPTo0QP+/v74+OOPER0djXfffRfA4zkon3zyCT799FO4ubmpA87kyZMxYcIEjB8/HsHBwWjdujX69Omjcf1t27bBzc0NwcHBGD58OF5//XU4OTlVW3vjxo1x4sQJtGjRAsOHD0eHDh0wZcoUlJaWws7ODsDjEPjqq69iwoQJCAwMhK2tLf7xj38883shomeTCVzMgIiIiCSKPTJEREQkWQwyREREJFkMMkRERCRZDDJEREQkWQwyREREJFkMMkRERCRZDDJEREQkWQwyREREJFkMMkRERCRZDDJEREQkWQwyREREJFkMMkRERCRZ/w8hkgBXCXZ7SwAAAABJRU5ErkJggg==",
180 | "text/plain": [
181 | ""
182 | ]
183 | },
184 | "metadata": {},
185 | "output_type": "display_data"
186 | }
187 | ],
188 | "source": [
189 | "# Plotting the distribution of scores\n",
190 | "s_data.plot(x='Hours', y='Scores', style='o') \n",
191 | "plt.title('Hours vs Percentage') \n",
192 | "plt.xlabel('Hours Studied') \n",
193 | "plt.ylabel('Percentage Score') \n",
194 | "plt.show()"
195 | ]
196 | },
197 | {
198 | "cell_type": "markdown",
199 | "metadata": {
200 | "id": "fiQaULio4Rzr"
201 | },
202 | "source": [
203 | "**From the graph above, we can clearly see that there is a positive linear relation between the number of hours studied and percentage of score.**"
204 | ]
205 | },
206 | {
207 | "cell_type": "markdown",
208 | "metadata": {
209 | "id": "WWtEr64M4jdz"
210 | },
211 | "source": [
212 | "### **Preparing the data**\n",
213 | "\n",
214 | "The next step is to divide the data into \"attributes\" (inputs) and \"labels\" (outputs)."
215 | ]
216 | },
217 | {
218 | "cell_type": "code",
219 | "execution_count": 4,
220 | "metadata": {
221 | "id": "LiJ5210e4tNX"
222 | },
223 | "outputs": [],
224 | "source": [
225 | "X = s_data.iloc[:, :-1].values \n",
226 | "y = s_data.iloc[:, 1].values "
227 | ]
228 | },
229 | {
230 | "cell_type": "code",
231 | "execution_count": 5,
232 | "metadata": {
233 | "colab": {
234 | "base_uri": "https://localhost:8080/"
235 | },
236 | "id": "0DrNCxfV_0sS",
237 | "outputId": "31344c84-6445-4b80-f7a9-17ea56604245"
238 | },
239 | "outputs": [
240 | {
241 | "data": {
242 | "text/plain": [
243 | "array([[2.5],\n",
244 | " [5.1],\n",
245 | " [3.2],\n",
246 | " [8.5],\n",
247 | " [3.5],\n",
248 | " [1.5],\n",
249 | " [9.2],\n",
250 | " [5.5],\n",
251 | " [8.3],\n",
252 | " [2.7],\n",
253 | " [7.7],\n",
254 | " [5.9],\n",
255 | " [4.5],\n",
256 | " [3.3],\n",
257 | " [1.1],\n",
258 | " [8.9],\n",
259 | " [2.5],\n",
260 | " [1.9],\n",
261 | " [6.1],\n",
262 | " [7.4],\n",
263 | " [2.7],\n",
264 | " [4.8],\n",
265 | " [3.8],\n",
266 | " [6.9],\n",
267 | " [7.8]])"
268 | ]
269 | },
270 | "execution_count": 5,
271 | "metadata": {},
272 | "output_type": "execute_result"
273 | }
274 | ],
275 | "source": [
276 | "X"
277 | ]
278 | },
279 | {
280 | "cell_type": "code",
281 | "execution_count": 6,
282 | "metadata": {
283 | "colab": {
284 | "base_uri": "https://localhost:8080/"
285 | },
286 | "id": "HKJA37KL_0sT",
287 | "outputId": "6ecc3cb9-084d-42eb-de9f-1c57256cca6d"
288 | },
289 | "outputs": [
290 | {
291 | "data": {
292 | "text/plain": [
293 | "array([21, 47, 27, 75, 30, 20, 88, 60, 81, 25, 85, 62, 41, 42, 17, 95, 30,\n",
294 | " 24, 67, 69, 30, 54, 35, 76, 86])"
295 | ]
296 | },
297 | "execution_count": 6,
298 | "metadata": {},
299 | "output_type": "execute_result"
300 | }
301 | ],
302 | "source": [
303 | "y"
304 | ]
305 | },
306 | {
307 | "cell_type": "markdown",
308 | "metadata": {
309 | "id": "Riz-ZiZ34fO4"
310 | },
311 | "source": [
312 | "Now that we have our attributes and labels, the next step is to split this data into training and test sets. We'll do this by using Scikit-Learn's built-in train_test_split() method:"
313 | ]
314 | },
315 | {
316 | "cell_type": "code",
317 | "execution_count": 7,
318 | "metadata": {
319 | "id": "udFYso1M4BNw"
320 | },
321 | "outputs": [],
322 | "source": [
323 | "from sklearn.model_selection import train_test_split\n",
324 | "\n",
325 | "X_train, X_test, y_train, y_test = train_test_split(X, y, \n",
326 | " test_size=0.2, random_state=0) "
327 | ]
328 | },
329 | {
330 | "cell_type": "code",
331 | "execution_count": 8,
332 | "metadata": {
333 | "colab": {
334 | "base_uri": "https://localhost:8080/"
335 | },
336 | "id": "LDQkaigQ_0sT",
337 | "outputId": "6162a217-b98c-4c7d-a51a-e417cd8b95cd"
338 | },
339 | "outputs": [
340 | {
341 | "data": {
342 | "text/plain": [
343 | "array([[3.8],\n",
344 | " [1.9],\n",
345 | " [7.8],\n",
346 | " [6.9],\n",
347 | " [1.1],\n",
348 | " [5.1],\n",
349 | " [7.7],\n",
350 | " [3.3],\n",
351 | " [8.3],\n",
352 | " [9.2],\n",
353 | " [6.1],\n",
354 | " [3.5],\n",
355 | " [2.7],\n",
356 | " [5.5],\n",
357 | " [2.7],\n",
358 | " [8.5],\n",
359 | " [2.5],\n",
360 | " [4.8],\n",
361 | " [8.9],\n",
362 | " [4.5]])"
363 | ]
364 | },
365 | "execution_count": 8,
366 | "metadata": {},
367 | "output_type": "execute_result"
368 | }
369 | ],
370 | "source": [
371 | "X_train"
372 | ]
373 | },
374 | {
375 | "cell_type": "markdown",
376 | "metadata": {
377 | "id": "a6WXptFU5CkC"
378 | },
379 | "source": [
380 | "### **Training the Algorithm**\n",
381 | "Now that we have split our data into training and testing sets, we can finally train our algorithm on it. "
382 | ]
383 | },
384 | {
385 | "cell_type": "code",
386 | "execution_count": 9,
387 | "metadata": {
388 | "colab": {
389 | "base_uri": "https://localhost:8080/"
390 | },
391 | "id": "qddCuaS84fpK",
392 | "outputId": "41a29249-38ab-4773-f7f6-e1ede34e7536"
393 | },
394 | "outputs": [],
395 | "source": [
396 | "from sklearn.linear_model import LinearRegression \n",
397 | "\n",
398 | "regressor = LinearRegression()"
399 | ]
400 | },
401 | {
402 | "cell_type": "code",
403 | "execution_count": 10,
404 | "metadata": {},
405 | "outputs": [
406 | {
407 | "name": "stdout",
408 | "output_type": "stream",
409 | "text": [
410 | "Training complete.\n"
411 | ]
412 | }
413 | ],
414 | "source": [
415 | "regressor.fit(X_train, y_train) \n",
416 | "\n",
417 | "print(\"Training complete.\")"
418 | ]
419 | },
420 | {
421 | "cell_type": "code",
422 | "execution_count": 11,
423 | "metadata": {},
424 | "outputs": [
425 | {
426 | "data": {
427 | "text/plain": [
428 | "array([16.88414476, 33.73226078, 75.357018 , 26.79480124, 60.49103328])"
429 | ]
430 | },
431 | "execution_count": 11,
432 | "metadata": {},
433 | "output_type": "execute_result"
434 | }
435 | ],
436 | "source": [
437 | "regressor.predict(X_test)"
438 | ]
439 | },
440 | {
441 | "cell_type": "code",
442 | "execution_count": 12,
443 | "metadata": {
444 | "colab": {
445 | "base_uri": "https://localhost:8080/",
446 | "height": 430
447 | },
448 | "id": "LO3cIcQV_0sU",
449 | "outputId": "9f399f85-9909-4797-b6e2-8b54b017aeda"
450 | },
451 | "outputs": [
452 | {
453 | "data": {
454 | "text/plain": [
455 | ""
456 | ]
457 | },
458 | "execution_count": 12,
459 | "metadata": {},
460 | "output_type": "execute_result"
461 | },
462 | {
463 | "data": {
464 | "image/png": "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uDt48KAKCwt18cUXa/ny5Tpy5IjdJcXFa6+9piuuuEI33nij8vPzdfnll+vZZ5+1u6xRcerUKTU1NWnVqlUxb+yZaK666iq1trbq448/liR9+OGH2rlzpxYtWmRzZSP39ddfKxgMKjMzM+J8VlaWdu7caVNVw5Ma90XHoFAopJqaGl199dUqLy+3u5y42L9/v9xutwKBgCZOnKht27aprKzM7rLi5qWXXtLevXuTYj42WnPmzNHzzz+vSy65RB6PR/X19fre976njo4OZWdn213eiHzyySdqbGzUunXr9OCDD2r37t266667NH78eK1cudLu8uLqlVdeUU9Pj2699Va7S4mbBx54QH6/X6WlpUpPT1cwGNQjjzyi5cuX213aiGVnZ8vtdmvDhg2aMWOGCgoKtHXrVrW1tenb3/623eWdn923XkaLUnza5Sc/+Yk5depU8+jRo3aXEjd9fX3mwYMHzffff9984IEHzL/4i78w//CHP9hdVlwcOXLEzM/PNz/88MPwuVSadjnXF198Yebk5KTEtNm4ceNMt9sdce7OO+80586da1NFo+e6664z/+Zv/sbuMuJq69at5pQpU8ytW7ea//3f/23++te/NnNzc83nn3/e7tLi4tChQ+b3v/99U5KZnp5uXnnlleby5cvN0tJSu0s7L8JHEqqurjanTJlifvLJJ3aXMqquvfZa8/bbb7e7jLjYtm1b+C+H/kOS6XA4zPT0dPPrr7+2u8S4u+KKK8wHHnjA7jJGrLi42Fy9enXEuU2bNpmFhYU2VTQ6Pv30UzMtLc185ZVX7C4lrqZMmWI+9dRTEec2bNhgXnLJJTZVNDpOnjxpHjt2zDRN0/zhD39o/vVf/7XNFZ0faz6SiGmauuOOO7Rt2za99dZbKikpsbukURUKhdTX12d3GXFx7bXXav/+/dq3b1/4uOKKK7R8+XLt27dP6enpdpcYVydPntThw4flcrnsLmXErr766gGPtH/88ceaOnWqTRWNjs2bNys/P1+LFy+2u5S4+uqrr5SWFvlVl56erlAoZFNFo2PChAlyuVz64osvtH37di1ZssTuks4rpdZ8nDx5UocOHQq/7urq0r59+5Sbm6vi4mIbK4uP6upqbdmyRa+++qqys7Pl9XolSYZhKCsry+bqRqa2tlaLFi1ScXGxent7tWXLFv3+97/X9u3b7S4tLrKzsweszZkwYYLy8vJSYs3Ovffeq6qqKk2dOlXHjh1TXV2d0tPTdcstt9hd2oitXbtWV111lR599FH98Ic/VHt7u5555hk988wzdpcWN6FQSJs3b9bKlStT5hHpflVVVXrkkUdUXFysmTNn6oMPPtAvfvELrVq1yu7S4mL79u0yTVOXXHKJDh06pPvuu0+lpaW67bbb7C7t/Oy+9RJPb7/9tilpwLFy5Uq7S4uLwT6bJHPz5s12lzZiq1atMqdOnWqOHz/enDx5snnttdea//Ef/2F3WaMqldZ83HTTTabL5TLHjx9vXnjhheZNN91kHjp0yO6y4qa5udksLy83MzIyzNLSUvOZZ56xu6S42r59uynJPHDggN2lxJ3f7zfvvvtus7i42MzMzDQvvvhi82c/+5nZ19dnd2lx8W//9m/mxRdfbI4fP950Op1mdXW12dPTY3dZ38hhminS5g0AACQF1nwAAABLET4AAIClCB8AAMBShA8AAGApwgcAALAU4QMAAFiK8AEAACxF+AAAAJYifAAAAEsRPgAAgKUIHwAAwFKEDwAAYKn/BzhaPkf9yNp3AAAAAElFTkSuQmCC",
465 | "text/plain": [
466 | ""
467 | ]
468 | },
469 | "metadata": {},
470 | "output_type": "display_data"
471 | }
472 | ],
473 | "source": [
474 | "plt.scatter(X,y)"
475 | ]
476 | },
477 | {
478 | "cell_type": "code",
479 | "execution_count": 13,
480 | "metadata": {},
481 | "outputs": [
482 | {
483 | "name": "stdout",
484 | "output_type": "stream",
485 | "text": [
486 | "The calculated parameters are theta_1: 9.910656480642233, and theta_2: 2.0181600414346974\n"
487 | ]
488 | }
489 | ],
490 | "source": [
491 | "print(f\"The calculated parameters are theta_1: {regressor.coef_[0]}, and theta_2: {regressor.intercept_}\")"
492 | ]
493 | },
494 | {
495 | "cell_type": "code",
496 | "execution_count": 14,
497 | "metadata": {},
498 | "outputs": [],
499 | "source": [
500 | "# Plotting the regression line\n",
501 | "line = regressor.coef_*X_test+regressor.intercept_"
502 | ]
503 | },
504 | {
505 | "cell_type": "code",
506 | "execution_count": 15,
507 | "metadata": {},
508 | "outputs": [
509 | {
510 | "data": {
511 | "text/plain": [
512 | "array([21, 47, 27, 75, 30, 20, 88, 60, 81, 25, 85, 62, 41, 42, 17, 95, 30,\n",
513 | " 24, 67, 69, 30, 54, 35, 76, 86])"
514 | ]
515 | },
516 | "execution_count": 15,
517 | "metadata": {},
518 | "output_type": "execute_result"
519 | }
520 | ],
521 | "source": [
522 | "y"
523 | ]
524 | },
525 | {
526 | "cell_type": "code",
527 | "execution_count": 16,
528 | "metadata": {
529 | "colab": {
530 | "base_uri": "https://localhost:8080/",
531 | "height": 430
532 | },
533 | "id": "J61NX2_2-px7",
534 | "outputId": "20d96bf4-8f2c-4a15-c004-b34a63f0f815"
535 | },
536 | "outputs": [
537 | {
538 | "data": {
539 | "image/png": "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",
540 | "text/plain": [
541 | ""
542 | ]
543 | },
544 | "metadata": {},
545 | "output_type": "display_data"
546 | },
547 | {
548 | "data": {
549 | "image/png": "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",
550 | "text/plain": [
551 | ""
552 | ]
553 | },
554 | "metadata": {},
555 | "output_type": "display_data"
556 | }
557 | ],
558 | "source": [
559 | "preds = regressor.predict(X)\n",
560 | "\n",
561 | "plt.subplot(1, 2, 1)\n",
562 | "plt.scatter(X, y)\n",
563 | "plt.plot(X, preds)\n",
564 | "plt.show()\n",
565 | "\n",
566 | "# Plotting for the test data\n",
567 | "plt.subplot(1, 2, 2)\n",
568 | "plt.scatter(X_test, y_test, color=\"red\")\n",
569 | "plt.plot(X_test, line)\n",
570 | "plt.show()"
571 | ]
572 | },
573 | {
574 | "cell_type": "markdown",
575 | "metadata": {
576 | "id": "JCQn-g4m5OK2"
577 | },
578 | "source": [
579 | "### **Making Predictions**\n",
580 | "Now that we have trained our algorithm, it's time to make some predictions."
581 | ]
582 | },
583 | {
584 | "cell_type": "code",
585 | "execution_count": 15,
586 | "metadata": {
587 | "colab": {
588 | "base_uri": "https://localhost:8080/"
589 | },
590 | "id": "Tt-Fmzu55EGM",
591 | "outputId": "f03a010b-399e-49c2-ab18-1f41f4b13a89"
592 | },
593 | "outputs": [
594 | {
595 | "name": "stdout",
596 | "output_type": "stream",
597 | "text": [
598 | "[[1.5]\n",
599 | " [3.2]\n",
600 | " [7.4]\n",
601 | " [2.5]\n",
602 | " [5.9]]\n"
603 | ]
604 | }
605 | ],
606 | "source": [
607 | "print(X_test) # Testing data - In Hours\n",
608 | "y_pred = regressor.predict(X_test) # Predicting the scores"
609 | ]
610 | },
611 | {
612 | "cell_type": "code",
613 | "execution_count": 16,
614 | "metadata": {
615 | "colab": {
616 | "base_uri": "https://localhost:8080/",
617 | "height": 206
618 | },
619 | "id": "6bmZUMZh5QLb",
620 | "outputId": "943e567f-fe9d-43ad-9c81-a841d1026ef1"
621 | },
622 | "outputs": [
623 | {
624 | "data": {
625 | "text/html": [
626 | "\n",
627 | " \n",
628 | "
\n",
629 | "
\n",
630 | "\n",
643 | "
\n",
644 | " \n",
645 | " \n",
646 | " | \n",
647 | " Actual | \n",
648 | " Predicted | \n",
649 | "
\n",
650 | " \n",
651 | " \n",
652 | " \n",
653 | " 0 | \n",
654 | " 20 | \n",
655 | " 16.884145 | \n",
656 | "
\n",
657 | " \n",
658 | " 1 | \n",
659 | " 27 | \n",
660 | " 33.732261 | \n",
661 | "
\n",
662 | " \n",
663 | " 2 | \n",
664 | " 69 | \n",
665 | " 75.357018 | \n",
666 | "
\n",
667 | " \n",
668 | " 3 | \n",
669 | " 30 | \n",
670 | " 26.794801 | \n",
671 | "
\n",
672 | " \n",
673 | " 4 | \n",
674 | " 62 | \n",
675 | " 60.491033 | \n",
676 | "
\n",
677 | " \n",
678 | "
\n",
679 | "
\n",
680 | "
\n",
690 | " \n",
691 | " \n",
728 | "\n",
729 | " \n",
753 | "
\n",
754 | "
\n",
755 | " "
756 | ],
757 | "text/plain": [
758 | " Actual Predicted\n",
759 | "0 20 16.884145\n",
760 | "1 27 33.732261\n",
761 | "2 69 75.357018\n",
762 | "3 30 26.794801\n",
763 | "4 62 60.491033"
764 | ]
765 | },
766 | "execution_count": 16,
767 | "metadata": {},
768 | "output_type": "execute_result"
769 | }
770 | ],
771 | "source": [
772 | "# Comparing Actual vs Predicted\n",
773 | "df = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred}) \n",
774 | "df "
775 | ]
776 | },
777 | {
778 | "cell_type": "code",
779 | "execution_count": 21,
780 | "metadata": {
781 | "colab": {
782 | "base_uri": "https://localhost:8080/"
783 | },
784 | "id": "KAFO8zbx-AH1",
785 | "outputId": "3c003ec3-e681-47fb-a684-e71ab2cee7f5"
786 | },
787 | "outputs": [
788 | {
789 | "name": "stdout",
790 | "output_type": "stream",
791 | "text": [
792 | "No of Hours = 9.5\n",
793 | "Predicted Score = 96.16939660753593\n"
794 | ]
795 | }
796 | ],
797 | "source": [
798 | "#You can also test with your own data\n",
799 | "hours = 9.5\n",
800 | "own_pred = regressor.predict([[9.5]])\n",
801 | "print(\"No of Hours = {}\".format(hours))\n",
802 | "print(\"Predicted Score = {}\".format(own_pred[0]))"
803 | ]
804 | },
805 | {
806 | "cell_type": "markdown",
807 | "metadata": {
808 | "id": "0AAsPVA_6KmK"
809 | },
810 | "source": [
811 | "### **Evaluating the model**\n",
812 | "\n",
813 | "The final step is to evaluate the performance of algorithm. This step is particularly important to compare how well different algorithms perform on a particular dataset. For simplicity here, we have chosen the mean square error. There are many such metrics."
814 | ]
815 | },
816 | {
817 | "cell_type": "code",
818 | "execution_count": 22,
819 | "metadata": {
820 | "colab": {
821 | "base_uri": "https://localhost:8080/"
822 | },
823 | "id": "r5UOrRH-5VCQ",
824 | "outputId": "a4bc5295-e596-40c4-faee-f72ef065f366"
825 | },
826 | "outputs": [
827 | {
828 | "name": "stdout",
829 | "output_type": "stream",
830 | "text": [
831 | "Mean Absolute Error: 4.183859899002982\n"
832 | ]
833 | }
834 | ],
835 | "source": [
836 | "from sklearn import metrics \n",
837 | "print('Mean Absolute Error:', \n",
838 | " metrics.mean_absolute_error(y_test, y_pred)) "
839 | ]
840 | },
841 | {
842 | "cell_type": "code",
843 | "execution_count": 18,
844 | "metadata": {
845 | "id": "1MzDbtLh_0sX"
846 | },
847 | "outputs": [],
848 | "source": []
849 | }
850 | ],
851 | "metadata": {
852 | "colab": {
853 | "provenance": []
854 | },
855 | "kernelspec": {
856 | "display_name": "Python 3 (ipykernel)",
857 | "language": "python",
858 | "name": "python3"
859 | },
860 | "language_info": {
861 | "codemirror_mode": {
862 | "name": "ipython",
863 | "version": 3
864 | },
865 | "file_extension": ".py",
866 | "mimetype": "text/x-python",
867 | "name": "python",
868 | "nbconvert_exporter": "python",
869 | "pygments_lexer": "ipython3",
870 | "version": "3.12.4"
871 | }
872 | },
873 | "nbformat": 4,
874 | "nbformat_minor": 0
875 | }
876 |
--------------------------------------------------------------------------------