From 1e8d4736ba68cf27d99f92a27d2f6bba652d70e7 Mon Sep 17 00:00:00 2001 From: arsalanyavari Date: Tue, 23 Jul 2024 05:41:40 +0330 Subject: [PATCH] Add simple linear regression --- .gitignore | 2 + .../simple_linear_regression/.gitignore | 2 + .../dataset/archive.zip | Bin 0 -> 796 bytes .../simple_regression.ipynb | 472 ++++++++++++++++++ .../simple_regression.md | 289 +++++++++++ .../simple_regression_11_0.png | Bin 0 -> 18076 bytes .../simple_regression_13_0.png | Bin 0 -> 20948 bytes .../simple_regression_16_1.png | Bin 0 -> 19857 bytes .../simple_regression_9_0.png | Bin 0 -> 12801 bytes 9 files changed, 765 insertions(+) create mode 100644 .gitignore create mode 100644 regression/simple_linear_regression/.gitignore create mode 100644 regression/simple_linear_regression/dataset/archive.zip create mode 100644 regression/simple_linear_regression/simple_regression.ipynb create mode 100644 regression/simple_linear_regression/simple_regression.md create mode 100644 regression/simple_linear_regression/simple_regression_files/simple_regression_11_0.png create mode 100644 regression/simple_linear_regression/simple_regression_files/simple_regression_13_0.png create mode 100644 regression/simple_linear_regression/simple_regression_files/simple_regression_16_1.png create mode 100644 regression/simple_linear_regression/simple_regression_files/simple_regression_9_0.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4940046 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +venv + diff --git a/regression/simple_linear_regression/.gitignore b/regression/simple_linear_regression/.gitignore new file mode 100644 index 0000000..37eca35 --- /dev/null +++ b/regression/simple_linear_regression/.gitignore @@ -0,0 +1,2 @@ +*.csv +.ipynb_checkpoints diff --git a/regression/simple_linear_regression/dataset/archive.zip b/regression/simple_linear_regression/dataset/archive.zip new file mode 100644 index 0000000000000000000000000000000000000000..be999659c8258aba7fda9c7146b9d9912b251535 GIT binary patch literal 796 zcmWIWW@gc4VBp|jSl<0B?3vIe*8fnz$soc|oSa{js+U|`#>gPRu$ut_DxkD%uOr`K z2M*@garEzW2Lj)pL)|U;nKv6+iS;%I^Ps=y&m)``$S$KB{epg0C4wczv94 zP+w1BsB%*bOC0Fn~NABwCf~a zKUPPMmhY3#_-g6%@|xT^u-DySov+Eg_^#!JS7$E#@k2AtZlC@B55K;B{Q0jm{#U_@ zJJao1%HCz$i`>fp_W$vpvNxsiPO{poj=aApCuX0mr4&JoQ^Y!{GA?esSmit=gYm!k+%@?Y{KB z-r^PS|4O~qnUfT=;N%}($-M98pUu|K2tVN(_rNE data.csv && for file in *.csv; do (tail -n +2 \"$file\"; echo) >> data.csv; done && sed -i '/^$/d' data.csv" + ] + }, + { + "cell_type": "markdown", + "id": "52ec2f48", + "metadata": {}, + "source": [ + "Import needed libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "dd17f780", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn import linear_model\n", + "from sklearn.metrics import r2_score\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "id": "57b33a77", + "metadata": {}, + "source": [ + "Read data from data.csv using pandas and store in data frame structure. Also shuffle data to have uniform distribution. " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a102a751", + "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", + "
HoursScores
07.469
13.835
23.530
31.619
45.147
\n", + "
" + ], + "text/plain": [ + " Hours Scores\n", + "0 7.4 69\n", + "1 3.8 35\n", + "2 3.5 30\n", + "3 1.6 19\n", + "4 5.1 47" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df = pd.read_csv(\"data.csv\")\n", + "df.head()\n", + "df = df.sample(frac=1.0, random_state=42).reset_index(drop=True)\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "93002df5", + "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", + "
HoursScores
count121.000000121.000000
mean5.21487653.495868
std2.49918924.988705
min1.00000012.000000
25%3.00000030.000000
50%5.10000054.000000
75%7.40000075.000000
max9.80000099.000000
\n", + "
" + ], + "text/plain": [ + " Hours Scores\n", + "count 121.000000 121.000000\n", + "mean 5.214876 53.495868\n", + "std 2.499189 24.988705\n", + "min 1.000000 12.000000\n", + "25% 3.000000 30.000000\n", + "50% 5.100000 54.000000\n", + "75% 7.400000 75.000000\n", + "max 9.800000 99.000000" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# summarize data\n", + "df.describe() " + ] + }, + { + "cell_type": "markdown", + "id": "7ebceb4d", + "metadata": {}, + "source": [ + "Print the histogram chart of data" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "39faae37", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiUAAAGzCAYAAADwumcoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAxbklEQVR4nO3deXzTdZ7H8XfapoEC5ZSjUKCiI3KIR8FFGIGBUhFBVLxAp4OrswgeDC4qumALMig+FtERZXXXY3fEa0fQ8YIOh4ggUhBGVpfDYdQFgQGGFugYYvPdP9xmSZMeaX9pvklez8ejD8wvv+T7TvL7fXyTtNRljDECAACIsZRYBwAAAJAoJQAAwBKUEgAAYAVKCQAAsAKlBAAAWIFSAgAArEApAQAAVqCUAAAAK1BKAACAFSglAADACpSSJPLiiy/K5XKppKQk7PVDhw5Vnz59GjkVgHj1+eefa/z48erWrZuaNGmizp07Ky8vT7/5zW9iHQ1xilICAIjYhg0blJubq+3bt+u2227TU089pVtvvVUpKSl64oknYh0PcSot1gGQ3E6ePKlmzZrFOgaACM2bN08tW7bU5s2b1apVq6DrDh061Gg5ysvLlZGR0WjrIbp4pwTV+uGHHzR37lz16NFDHo9H3bt31wMPPCCv1xu0n8vlUmFhYcjtu3fvrl/84heBy5UfH3344YeaMmWK2rdvry5dukiSjh8/rmnTpql79+7yeDxq37698vLytHXr1mg+RAD19NVXX6l3794hhUSS2rdvH3T5t7/9rQYMGKCMjAy1bt1al156qVauXBm0z9NPP63evXvL4/EoKytLU6dO1bFjx4L2qfyIecuWLbr00kuVkZGhBx54QJLk9Xr10EMP6ayzzpLH41F2drbuvffekHlVXFyswYMHq1WrVmrevLnOOeecwH0g9ninJAmVlpbq8OHDIdt9Pl/Q5VtvvVUvvfSSxo8fr3vuuUebNm3S/Pnz9eWXX2rZsmX1Xn/KlCk644wzNHv2bJ08eVKSNHnyZP3nf/6n7rjjDvXq1UtHjhzR+vXr9eWXX+rCCy+s91oAoqNbt27auHGjduzYUeP3ohUVFamwsFCXXHKJ5syZo/T0dG3atEmrV6/WyJEjJUmFhYUqKirSiBEjdPvtt2vnzp165plntHnzZn388cdyu92B+zty5IhGjRqlG264QTfddJM6dOggv9+vsWPHav369frlL3+pc889V59//rkef/xx7dq1S8uXL5ck/dd//ZeuuOIKnXfeeZozZ448Ho/27Nmjjz/+OKrPFSJgkDReeOEFI6nGr969extjjNm2bZuRZG699dag+/jHf/xHI8msXr06sE2Seeihh0LW69atmykoKAhZf/DgweaHH34I2rdly5Zm6tSpzj1YAFG1cuVKk5qaalJTU83AgQPNvffea1asWGFOnToV2Gf37t0mJSXFXHXVVaaioiLo9n6/3xhjzKFDh0x6eroZOXJk0D5PPfWUkWSef/75wLYhQ4YYSWbJkiVB9/Uf//EfJiUlxXz00UdB25csWWIkmY8//tgYY8zjjz9uJJm//OUvzjwJcBwf3yShxYsXq7i4OOTrvPPOC+zz3nvvSZKmT58edNt77rlHkvTuu+/We/3bbrtNqampQdtatWqlTZs2af/+/fW+XwCNJy8vTxs3btTYsWO1fft2LViwQPn5+ercubPefvttSdLy5cvl9/s1e/ZspaQE/+/G5XJJkv7whz/o1KlTmjZtWtA+t912mzIzM0Nmjcfj0aRJk4K2vfHGGzr33HPVs2dPHT58OPD1s5/9TJK0Zs0aSQp81PTWW2/J7/c792TAMXx8k4QGDBig3NzckO2tW7cOfKzz9ddfKyUlRWeddVbQPh07dlSrVq309ddf13v9nJyckG0LFixQQUGBsrOzddFFF+nyyy/Xz3/+c5155pn1XgdAdPXv319vvvmmTp06pe3bt2vZsmV6/PHHNX78eG3btk1fffWVUlJS1KtXr2rvo3KWnHPOOUHb09PTdeaZZ4bMms6dOys9PT1o2+7du/Xll1/qjDPOCLtG5TfeXn/99frXf/1X3Xrrrbr//vs1fPhwXX311Ro/fnxIaUJsUEpQo8q/zdRHRUVF2O1NmzYN2Xbdddfppz/9qZYtW6aVK1fqscce06OPPqo333xTo0aNqncGANGXnp6u/v37q3///vrJT36iSZMm6Y033ojKWuHmh9/vV9++fbVw4cKwt8nOzg7cdt26dVqzZo3effddffDBB3rttdf0s5/9TCtXrgx5BxeNj2qIsLp16ya/36/du3cHbT948KCOHTumbt26Bba1bt065LvkT506pe+++y6iNTt16qQpU6Zo+fLl2rt3r9q2bat58+bV+zEAaHyV78J+99136tGjh/x+v7744otq96+cJTt37gzafurUKe3duzdo1lSnR48eOnr0qIYPH64RI0aEfJ3+LkxKSoqGDx+uhQsX6osvvtC8efO0evXqwEc8iC1KCcK6/PLLJUmLFi0K2l75N5HRo0cHtvXo0UPr1q0L2u/ZZ5+t9p2SqioqKlRaWhq0rX379srKygr5cT4AdlizZo2MMSHbK78f7ZxzztG4ceOUkpKiOXPmhHwPR+VtR4wYofT0dD355JNB9/dv//ZvKi0tDZo11bnuuuu0b98+PffccyHX/e1vfwv8lN/Ro0dDrj///PMliVljCT6+QVj9+vVTQUGBnn32WR07dkxDhgzRp59+qpdeeknjxo3TsGHDAvveeuutmjx5sq655hrl5eVp+/btWrFihdq1a1entY4fP64uXbpo/Pjx6tevn5o3b64//OEP2rx5s/75n/85Wg8RQAPceeedKi8v11VXXaWePXvq1KlT2rBhg1577TV1795dkyZNUqtWrfTggw9q7ty5+ulPf6qrr75aHo9HmzdvVlZWlubPn68zzjhDM2fOVFFRkS677DKNHTtWO3fu1NNPP63+/fvrpptuqjXLzTffrNdff12TJ0/WmjVrNGjQIFVUVOi///u/9frrr2vFihXKzc3VnDlztG7dOo0ePVrdunXToUOH9PTTT6tLly4aPHhwIzxrqFWMf/oHjajyR3I3b94c9vohQ4YEfiTYGGN8Pp8pKioyOTk5xu12m+zsbDNz5kzz/fffB92uoqLC3HfffaZdu3YmIyPD5Ofnmz179lT7I8FV1/d6vWbGjBmmX79+pkWLFqZZs2amX79+5umnn3buwQNw1Pvvv29uueUW07NnT9O8eXOTnp5uzjrrLHPnnXeagwcPBu37/PPPmwsuuMB4PB7TunVrM2TIEFNcXBy0z1NPPWV69uxp3G636dChg7n99tvNX//616B9qs6o0506dco8+uijpnfv3oF1LrroIlNUVGRKS0uNMcasWrXKXHnllSYrK8ukp6ebrKwsc+ONN5pdu3Y598SgQVzGhHn/DQAAoJHxPSUAAMAKlBIAAGAFSgkAALACpQQAAFiBUgIAAKxAKQEAAFaw7h9P8/v92r9/v1q0aNGg37sCIJQxRsePH1dWVlbS/gIyZgwQHU7MF+tKyf79+wO/PAlAdHz77bfq0qVLrGPEBDMG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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "viz = df[[\"Hours\", \"Scores\"]]\n", + "viz.hist()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "55722cea", + "metadata": {}, + "source": [ + "Print scatter chart of data to recognize the patterns of data. Based on the below chart we must answer to this question \"Is Linear Simple Regression good or not?\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d647bbf0", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGwCAYAAABPSaTdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAABGCUlEQVR4nO3de3RU9bn/8U8YCCRcgkQJhIQSEQURLUp/CoiFklO81AMG9CB4O7XYloskAbKgFUFF0VABKaZWbUWPgGIN8VKrtZhwTVFRFAUxRKgYuViVREUJDvP7Y3dCJpnL3pM99/drraxp9uyZ2SldnWft7+f7PEkul8slAACAONUq0hcAAAAQShQ7AAAgrlHsAACAuEaxAwAA4hrFDgAAiGsUOwAAIK5R7AAAgLjWOtIXEA1OnDihTz/9VB07dlRSUlKkLwcAAJjgcrn01VdfKTMzU61a+b5/Q7Ej6dNPP1V2dnakLwMAAARh//79ysrK8vk8xY6kjh07SjL+y+rUqVOErwYAAJhRV1en7Ozshu9xXyh2pIalq06dOlHsAAAQYwJFUAgoAwCAuEaxAwAA4hrFDgAAiGsUOwAAIK5R7AAAgLhGsQMAAOJaRIudDRs26Morr1RmZqaSkpJUVlbm8bzL5dLtt9+u7t27KyUlRbm5uaqqqvI454svvtDEiRPVqVMnde7cWTfffLO+/vrrMP4VAAAgmkW02Pnmm2903nnn6cEHH/T6fHFxsZYtW6aHHnpIW7duVfv27TVq1Ch99913DedMnDhR77//vl599VW9+OKL2rBhg2655ZZw/QkAACDKJblcLlekL0IyGgKtXbtWY8aMkWTc1cnMzNSMGTM0c+ZMSVJtba0yMjK0YsUKjR8/Xrt27dLZZ5+tN954Q4MGDZIkvfzyy7r88sv1ySefKDMz09Rn19XVKS0tTbW1tTQVBAAgRpj9/o7azM7evXt18OBB5ebmNhxLS0vThRdeqMrKSklSZWWlOnfu3FDoSFJubq5atWqlrVu3+nzvY8eOqa6uzuMHAADYy+mUKiqk1auNR6czMtcRtcXOwYMHJUkZGRkexzMyMhqeO3jwoLp27erxfOvWrdWlS5eGc7xZuHCh0tLSGn4YAgoAgL1KS6VevaQRI6QJE4zHXr2M4+EWtcVOKM2ZM0e1tbUNP/v374/0JQEAEDdKS6Vx46RPPvE8XlNjHA93wRO1xU63bt0kSYcOHfI4fujQoYbnunXrpsOHD3s8//333+uLL75oOMebtm3bNgz9ZPgnAAD2cTql6dMlb4lg97H8/PAuaUVtsZOTk6Nu3bpp3bp1Dcfq6uq0detWDR48WJI0ePBgHTlyRNu2bWs457XXXtOJEyd04YUXhv2aAQBIBP6yOBs3Nr+j05jLJe3fb5wXLq3D91HNff3119qzZ0/D73v37tX27dvVpUsX9ezZU/n5+VqwYIH69OmjnJwczZ07V5mZmQ07tvr166dLL71UkyZN0kMPPaTjx49r6tSpGj9+vOmdWAAAwLzSUuPOTeOCJitLeuABKS9POnDA3PuYPc8OES123nzzTY0YMaLh98LCQknSjTfeqBUrVqioqEjffPONbrnlFh05ckQXX3yxXn75ZbVr167hNStXrtTUqVM1cuRItWrVSmPHjtWyZcvC/rcAABDv3FmcpktU7izOX/4ide9u7r3MnmeHqOmzE0n02QEAwD+n09hN5WuJKinJuMOzZ4/Uu7dRAHmrMNzn7d0rORwtu6aY77MDAACih9kszpYtxpKWZBQ2jbl/X7q05YWOFRQ7AAAgICtZnLw8Y0mrRw/P57KyjON5efZfnz8RzewAAIDYYDWLk5cnjR5t3BE6cMA4PmxYeO/ouFHsAACAgIYNM+7MBMriDBt28pjDIQ0fHrZL9IllLAAAEJDDETiL84tfSGvWRHYOljcUOwAAwBRfWZwuXYyfefMiPwfLG7aei63nAABY4XSezOJUVRlFTlPuuz2hDCSb/f4mswMAQJSrr5dKSqTqaqOHzeTJUnJy5K7HncVx997xxuUyCp78fCOoHIlgshvLWAAARLGiIik1VSookJYvNx5TU43jkRaNc7C84c4OAABRqqhIWrSo+XGn8+Tx4uLwXlNj0TgHyxvu7AAAEIXq66XFi/2fs3ixcV6kROMcLG8odgAAiEIlJYG3bzudxnlWOZ3G9vDVq1u2Tdzde6fpVnS3pCQpO9uz904kUOwAABCFqqvtPc+ttNQIFY8Y0fJt4mZ674R7DpY3FDsAAESh3r3tPU8yCppx45qHimtqjOPBFDzRNgfLG/rsiD47AIDoU19v7Lryt8TkcEhHj5rbhu7eJu5r95R73MPevcHdiWnceydcc7DoswMAQAxLTpYKC73vxnIrLDTfb8fsNvHf/17KyLBesETLHCxvKHYAAIhS7m3lixd73uFxOIxCx8q2c7PbvwsKTv7nrCwjkxMNS1EtwTKWWMYCAEQ3OzooV1QYYWQrwjHyoSXMfn9T7IhiBwAQ/9yZnZoaY8nKrJZmeULJ7Pc3u7EAAIhBVnvl+Nsm7k+0jHxoCYodAABiTLC9cnxtEzcj0iMfWoJiBwCAGNLSXjl5edK+fVJ5ubRqlbRkibnPjfTIh5YgsyMyOwCA2BCKXjmBsjxkdgAAQNiY7ZVjJV8TKyMfWoJiBwCAGGE2N2M1XxMLIx9agqaCAADECLO5mWDyNXl50ujR4R/5EA4UOwAAxIhhw4y7LYHyNcOGBff+0TzyoSVYxgIAIEZEIl9jtZ9PNKLYAQAghoQzXxNsP59ow9ZzsfUcABB7nM7Q5mvc/XyaVgnRNC+L2VgWUOwAAHBSKPr5hAJ9dgAAiCKxlH0JRT+fSGI3FgAAIVZaKk2f7llAZGUZYeNILwV5E6p+PpHCnR0AAEKopbOsIiGU/XwigcyOyOwAAEIjGrIv9fVSSYlUXS317i1NniwlJ/t/TazMyyKzAwBAhEU6+1JUJKWmSgUF0vLlxmNqqnHcn3ibl0WxAwBAiEQy+1JUJC1a1DwI7XQaxwMVPPE0L4tlLLGMBQAIjYoKoxFfIOXl9o5pqK837uD42/HlcEhHj5pb0orWeVksYwEAEGHuWVZNl4IaO+00Ixtj53b0kpLA7+V0GucF4p6Xde21xmO0FDpWUOwAABAi/rIvbp99Jl13nb2jGKqr7T0v1lHsAAAQQr6yL97YtR29d297z4t1ZHZEZgcAEHru7EtNjbEr6rPPvJ9nx7ZuOzM70YzMDgAgYdTXG1uhp00zHuvrI31FzbmzLz16+C50JHu2oycnS4WF/s8pLIztQscKxkUAAGJaUZG0eLHnXYyZM40v8+LiyF2XL+Haju7+25v+d+NwRO9/N6FCsQMAiFnuXjJNuXvJSNH3pR7OUQzFxdKCBdY7KMcbMjsiswMAsShWcymxMoohFpDZAQDEJXc+5yc/sa+XTDjF2yiGWECxAwCIGY1nPW3ebO410dhLJp5GMcQCMjsAgJjgK58TSLT2ksnLk0aPjt5RDPGEzI7I7ABAtDOTz/EmGjM7sI/Z72/u7AAAop6ZWU/eNO0lY/dQy2gekomTKHYAAFHPau7GWy+Z0lJp+nTpk09OHsvKMsLCwWRk7H4/hA4BZQBA1DObuxk6VFqyxFi6alrojBvnWZhIwc+isvv9EFpkdkRmBwCiXUt66rj72jQtTNys9rWx+/0QPPrsAADiRktmPW3c6LswkbzPonI6pYoKafVq47FxkRXM+yGyyOwAAGJCsLOerM6iCpTFCddsK9iHYgcAEDOCmfVkZRaVO4vTNODhzuL85S/hnW0Fe5DZEZkdAIhnZmdR7dljFE+Bsjju85htFXlkdgAAkLlZVL/4hXTXXeayOFu2MNsq1lDsAADinq9ZVF26GD/z5hnLY2YcOMBsq1jDMpZYxgKARNG443FVlVHkWFVeLg0f3vz96KAcfoyLAACgCYfDKFTcOR6r0tKkZ56Rtm8/GYx2Fz6IXixjAQASTqBeOb7U1ho7wQoKjCaHRUX2XxvsR7EDAEg4dvTAcTqlRYsoeGIBxQ4AIOGY7YEzZ47UKsA35eLFxjgLRC+KHQBAXPI38mHYMGPnVNOt425JSVJ2tnTqqdKJE4E/p6TErqtGKFDsAADiTmmpEUAeMUKaMMF47NXr5DRyM713li41GgOaUV1tw0UjZKK62HE6nZo7d65ycnKUkpKi3r1766677lLj3fIul0u33367unfvrpSUFOXm5qqqqiqCVw0AiCT3yIemAWT3yAd3wWOmV07v3uY+0+x5iIyo7rNzzz33aPHixXr88cfVv39/vfnmm/rf//1f3X333br11lslSffdd58WLlyoxx9/XDk5OZo7d6527NihnTt3ql27dqY+hz47ABAf3FvKA418aDzKwV+vnPp6Y9dV4yWwphwO6ehR//O5EBpx0Wdny5YtGj16tK644gpJUq9evbR69Wq9/vrrkoy7OkuXLtVtt92m0aNHS5KeeOIJZWRkqKysTOPHj/f6vseOHdOxY8cafq+rqwvxXwIACIdAW8rdIx/mz5dGjjxZ2PjqlZOcbExUX7TI93sWFlLoRLuoXsYaMmSI1q1bpw8//FCS9M4772jTpk267LLLJEl79+7VwYMHlZub2/CatLQ0XXjhhaqsrPT5vgsXLlRaWlrDT3Z2dmj/EABAWJjdUr5gQfMcjy/FxdKsWc07IzscxvHi4qAuFWEU1Xd2Zs+erbq6OvXt21cOh0NOp1N33323Jk6cKEk6ePCgJCkjI8PjdRkZGQ3PeTNnzhwVFhY2/F5XV0fBAwBxwOyWcjd3jifQPKviYqNAKikxwsi9e5/soIzoF9XFzpo1a7Ry5UqtWrVK/fv31/bt25Wfn6/MzEzdeOONQb9v27Zt1bZtWxuvFAAQDdxbymtqjCWrQFwuI8eTny+NHu1/rlVysnEeYk9UL2PNmjVLs2fP1vjx4zVgwABdf/31Kigo0MKFCyVJ3bp1kyQdOnTI43WHDh1qeA4AEJv89cnxxd+Wcl/cOZ6NG4O9UkS7qC52jh49qlZNWlc6HA6d+E+Hp5ycHHXr1k3r1q1reL6urk5bt27V4MGDw3qtAAD7BOqT44+vLeWB2DFCAtEpqoudK6+8Unfffbf++te/at++fVq7dq0WL16sq666SpKUlJSk/Px8LViwQM8//7x27NihG264QZmZmRozZkxkLx4AEBSzfXL8ycuT9u2Tysul224z97lW8z6IHVHdZ+err77S3LlztXbtWh0+fFiZmZm69tprdfvttyv5P6kwl8ulefPm6eGHH9aRI0d08cUXq6SkRGeeeabpz6HPDgBEh2D65Jh9T185nmDeE9HB7Pd3VBc74UKxAwCh4a9hnzcVFcaSVSDl5b5743jjvlskeRY87lxPoN1YiE5mv7+jehkLABC7gsndmM3NWM3XmBkNgfgV1VvPAQCxyX0npenaQaC+NmZzM8Hka/LyjO3lVu40IT6wjCWWsQDATi3J3ZCvgRUsYwEALKuvl5YulaZNMx7r662/h9n5VN762vjrk+P+felSCh1YQ7EDAJAkFRUZE74LCqTly43H1FTjuBUtzd2Qr4HdyOwAAFRU5H2yt9N58rjZgZd25G7I18BOZHZEZgdAYquvN+7g+BvH4HBIR4+aG3xJ7gbhQmYHAGBKSUnguVNOp3GeGYmeu7Ej9wR7UewAQIKrrrb3PClxczd25Z5gLzI7AJDgeve29zy3RMvd2Jl7gr3I7IjMDoDE03iMQ3q6dPnl9mV2EpHduSeYQ2YHAOBV0zEOo0ZJKSn+X1NYyJe0P3bnnmAvlrEAIIH4GuPwzTfGY6tW0okTJ487HEahw/KLf6HIPcE+FDsAkCCcTmn6dO/bwV0uY6dU9+5GqHbfPiOjM3kyd3TMCFXuCfYgsyMyOwASQ0WFsXQVSHm5NHz4yd8b53vcIWMpcYLHZpDZiQyz39/c2QGABBHMGIfSUuNuUONZV+npxuPnn588lpVl9NaJ1y3lgSQnG8t93nZjuZF7ihwCygCQIKyOcXDne5oO9fz8c89CRzK6JY8bZ7wmURUXS7NmNb/D5XAYx8k9RQ7LWGIZC0BisDLGQTLO9Te93N/rE31Jq6TECCOTewotlrEAIAF5y9e4Cw/3GIdx44zCpHHB03SMQ0WFtUJHMt5v/35p/nxp5MjEzfEkJ0v5+ZG+CjTGMhYAxImm/XNGjDB+b7y0ZHaMg9l8jzcLFnj/bCBSWMYSy1gAYp+v/jnuOzZN51H5uwMkmd+55Y+vzwbsYvb7m2JHFDsAYps7i+Nr2SmYLE2gfI9Z5HgQSoyLAIAEsXGj/3xN4yxNRUXgsQbSyXyPdPIOTTDcn71xY/DvAbQUxQ4AxDiz+RqrWRpf+Z709JO9duy+RiAUKHYAIMaZ7Z/jZqUnTl6eMTqivFxatcp4PHTI+Ckvl267LTTXCNiJzI7I7ACIbcHka+zK0ljp3UNmB3YjswMACSKYfI1dWRp/n920d48/TqeRJ1q92nyuCDCLYgcA4oCvfE0gdmRpzPbu8cVMfyCgJVjGEstYAOKHu3/OunVGIDmQphPO7fhsK5PQrfYHAhqjz44FFDsA4k0sZGlC0R8IiYXMDgAkMLuyNKFQX298treJ6o3Rowd2odgBgDjV0ixNKBQVSampUkGBVFZm7jX06EFLMfUcAOJYXp40erT1LE0oFBVJixZZfx09etBSZHZEZgcAQq2+3rijY2VLOZkdBGL2+5s7OwAQQcHsYIpFJSXWCx0pcrkixBcyOwAQIYnUX6a62tr5kcwVIf5Q7ABABLj7yzTdjWRlblUs6d3b3HnXX2/0/tm7l0IH9iGzIzI7AMIrEfvLmMnsOBzS0aNScnL4rguxjT47ABBloqm/TLhnUSUnS4WF/s8pLKTQQWgQUAaAMCgqkhYvtlZUhKq/TGmpNH26Z8GVlWU0IQzl0lFxsfHY9L8Hh8ModNzPA3ZjGUssYwEIrWD7y9g5t8otGmZR1dcbu7Oqq40sz+TJ3NFBcJiNZQHFDoBQCba/zKmnSkuWGN2P7dqOnohZIcQ3MjsAEAWs9peRjLsun30mXXedvdvRN26MfFYIiASKHQAIIav9Zbyxazu62QwQs6gQbyh2ACCEzPaXmTjRWLryxh02yM9v2a4pszOmmEWFeEOxAwAhNHly4PyLwyHdcIP073/7PsfbEpPV7ePDhhmZHHcYuamkJCk72zgPiCcUOwAQQmb7y3z+ubn3cy8xBTNqwuEwtpdLzQseZlEhnlHsAECIFRdLs2Y1LyIcDuN4cbG1JaaWjJrIyzO2l/fo4XmcWVSIZ2w9F1vPAYSHv/4y7m3hNTXNe+BIJ7eF79ljvLal28cTZdo64ht9diyg2AEQDdx3bCTPgicpyfj9jjuk48elBQsCv1coGhIC0cbs9zfjIgAgSriXmJqOcujSxXicN8/8e7F9HDiJYgcAokhenjR69Mklpqoqaf5870tb/rB9HDiJYgcAoozDYSxBuXM8Vgodd2aH7ePASRQ7AGBSS0O9Vl8faLxDU2wfB7xj6zkAmBBMX5uWvt5q7obt44B3FDsAEEBL+tq05PVmcze33Wbsvtq7l0IH8Iat52LrOQDf3LmZYPvatOT1ZnvvBOqpA8Qrs9/f3NkBAD8C5WbcM6vGjTOyMvX1wb2+8cwrN8Y7APag2AEAP8zmZsrKpIICKTVVKiqy/npf5zHeAWg5dmMBgB9W+9U4ndKiRcZ/tjrzypemvXcY7wBYQ2ZHZHYA+BYoN+OLwyEdPWo8krsBQoPMDgDYwF9uxh+nU7r5ZuNuzJIl3l9P7gYID4odAAjAV24mkCefNPrpFBRIM2eSuwEihWUssYwFwBx3B+Q//1n6v/8z/zr3HZynn5ZOO43cDWAXs9/fFDui2AFgTX29sevK6TT/GrI5gP3I7ACAF/X1RkZm2jTvfXH8cTqligrp2WeNvjpW+OunAyC0or7Yqamp0XXXXaf09HSlpKRowIABevPNNxued7lcuv3229W9e3elpKQoNzdXVVVVEbxiANGqqMi4I1NQIC1f7r0vji9NZ1s9/bTUoYPUyuL/i1qddwWg5Wwpdurq6lRWVqZdu3bZ8XYNvvzySw0dOlRt2rTR3/72N+3cuVP333+/TjnllIZziouLtWzZMj300EPaunWr2rdvr1GjRum7776z9VoAxLaiIqP/TdOlJ3dfHH8Fj6/ZVt98Y9yx+d//lcaMMXcdVvv2AGi5oDI711xzjS655BJNnTpV3377rc477zzt27dPLpdLTz31lMaOHWvLxc2ePVubN2/WRh/3fV0ulzIzMzVjxgzNnDlTklRbW6uMjAytWLFC48ePN/U5ZHaA+GYmY+Pui5OcbPzuDiPX1Ej5+dK//+39de4szp49Uu/e9NMBwimkmZ0NGzZo2LBhkqS1a9fK5XLpyJEjWrZsmRYsWBDcFXvx/PPPa9CgQbr66qvVtWtXDRw4UI888kjD83v37tXBgweVm5vbcCwtLU0XXnihKisrfb7vsWPHVFdX5/EDIH6VlAQOEzudxnmS55LVddf5LnSkk1mcLVuYYwVEq6CKndraWnXp0kWS9PLLL2vs2LFKTU3VFVdcYWte5qOPPtIf/vAH9enTR6+88op+/etf69Zbb9Xjjz8uSTp48KAkKSMjw+N1GRkZDc95s3DhQqWlpTX8ZGdn23bNAKJPdbX583wtWQVy4ABzrIBoFdRsrOzsbFVWVqpLly56+eWX9dRTT0kyMjbt2rWz7eJOnDihQYMG6Z577pEkDRw4UO+9954eeugh3XjjjUG/75w5c1RYWNjwe11dHQUPEMd69zZ3Xk6ONH26tbEQbu4sDnOsgOgT1J2d/Px8TZw4UVlZWerevbuGDx8uyVjeGjBggG0X1717d5199tkex/r166ePP/5YktStWzdJ0qFDhzzOOXToUMNz3rRt21adOnXy+AEQvyZPDlxsOBzSgAHW7+gkJUnZ2UZB0/i9hg+Xrr3WeKTQASIrqGJn8uTJqqys1J///Gdt3rxZrf6z9/L000+3NbMzdOhQ7d692+PYhx9+qB/84AeSpJycHHXr1k3r1q1reL6urk5bt27V4MGDbbsOALEtOVlqdDPXq8JC/9kcb8jiADHC1QLHjh1zffDBB67jx4+35G18ev31112tW7d23X333a6qqirXypUrXampqa4nn3yy4Zx7773X1blzZ9dzzz3nevfdd12jR4925eTkuL799lvTn1NbW+uS5KqtrQ3FnwEgSsya5XI5HC6XsVBl/DgcxnGXy+UqL/d8LtBPdrbL9eyzEf2TgIRm9vs7qK3nR48e1bRp0xqCwh9++KFOP/10TZs2TT169NDs2bNtK8ZefPFFzZkzR1VVVcrJyVFhYaEmTZrU8LzL5dK8efP08MMP68iRI7r44otVUlKiM8880/RnsPUcSBz19cauq+pqI8szebLndvNevfxvHz/1VGOKeY8eZHGASAvpbKzp06dr8+bNWrp0qS699FK9++67Ov300/Xcc89p/vz5evvtt1t08eFGsQMkNndPnQMHpKoqaf5843jj/3d0L1mxqwqIHma/v4PajVVWVqann35aF110kZIaNZTo37+/qs3u8QSAKFBaauzAahxMTk83Hj///OSxrCwjm0OhA8SeoIqdzz77TF27dm12/JtvvvEofgAgmrl76jS9v/3FF8axO+6Q+vRh+zgQ64LajTVo0CD99a9/bfjdXeA8+uij7IICEBOcTt89dVwuY9nq0Uela65h+zgQ64K6s3PPPffosssu086dO/X999/rgQce0M6dO7VlyxatX7/e7msEgIAa527M3InZuNF/Tx33GIiNG41iB0DsCurOzsUXX6x33nlH33//vQYMGKC///3v6tq1qyorK3XBBRfYfY0A4FfjWVYTJhiPvXoZx305cMDce5s9D0D0snxn5/jx4/rlL3+puXPnegzlBIBI8JW7qakxjvvaPeUe7xCI2fMARC/Ld3batGmjZ599NhTXAgCWBMrdSFJ+vveJ58OGGTusfO2p8DYGAkBsCmoZa8yYMSorK7P5UgDAGrO5m/nzpYoKz6LH4ZAeeMD4z00LHsZAAPElqIBynz59dOedd2rz5s264IIL1L59e4/nb731VlsuDgD8MZunWbDA+MnKMgoc97JWXp6xzNW0zw49dYD4ElQH5ZycHN9vmJSkjz76qEUXFW50UAZiU0WFEUY2y1cXZKs7uQBEh5COi4g3FDtAbAo0y8qbpCTjzs3evRQ0QKwz+/0dVGanMZfLJeolAL7U1xtLQtOmGY/19fa9t7/cjS+N++cASAxBFztPPPGEBgwYoJSUFKWkpOjcc8/V//3f/9l5bQBiXFGRlJoqFRRIy5cbj6mpxnG7uHM3PXpYex39c4DEEVSxs3jxYv3617/W5ZdfrjVr1mjNmjW69NJL9atf/UpLliyx+xoBxKCiImnRoubbvp1O47jdBc++fVJ5uXTbbeZeQ/8cIHEEHVC+4447dMMNN3gcf/zxxzV//nzt3bvXtgsMBzI7gL3q6407ON7627g5HNLRo1Jysr2fHSjHQ2YHiB8hzewcOHBAQ4YMaXZ8yJAhOsC9YSDhlZT4L3Qk4/mSEuvv7XQau7BWr27eO0eifw6A5oIqds444wytWbOm2fGnn35affr0afFFAYht1dX2nudmdgaWrxxPVpbv8REA4ldQTQXvuOMO/c///I82bNigoUOHSpI2b96sdevWeS2CACSW3r3tPU+yPgMrL08aPZr+OQBa0Gdn27ZtWrJkiXbt2iVJ6tevn2bMmKGBAwfaeoHhQGYHsFcwmR1/jf3cORxfoyHI4QCJyez3d1B3diTpggsu0JNPPhnsywHEseRkqbDQ2HXlS2HhyUKntNT7yAb3aAezM7A2bpSGD7flTwAQR4Iqdl566SU5HA6NGjXK4/grr7yiEydO6LLLLrPl4gDEruJi43Hx4uYDOAsLTz5vZnnq2DFzn8n+CADeBBVQnj17tpxe7k+7XC7Nnj27xRcFID4UFxtLVUuWSFOnGo9Hj54sdJxO446Ot8V097H8fKlrV3OfR+8cAN4EdWenqqpKZ599drPjffv21Z49e1p8UQDiR3KyUbA05s7nrFtnbnlKMpa1AvXOGTbMtssGEEeCurOTlpbmdbL5nj171L59+xZfFID41Xj7+IIF5l5z+DC9cwAEL6hiZ/To0crPz1d1oyYZe/bs0YwZM/Tf//3ftl0cgPjizuf4u5vjTffu9M4BELygtp7X1tbq0ksv1ZtvvqmsrCxJ0v79+3XJJZeotLRUnTt3tvs6Q4qt50DoBdo+7o23LeX+tqgDSCwh3XqelpamLVu26NVXX9U777yjlJQUnXfeeRrGgjmQ0PwVIoG2jzfla3nK4WB7OQBrLC1jVVZW6sUXX5QkJSUl6ac//am6du2q3/3udxo7dqxuueUWHTO7RxRAXAk0ysHqtnCWpwDYxVKxc+edd+r9999v+H3Hjh2aNGmS/uu//kuzZ8/WCy+8oIULF9p+kQCim68sjrtXTmmp+W3ht90mlZcbS1cUOgDsYCmz0717d73wwgsaNGiQJOm3v/2t1q9fr02bNkmSnnnmGc2bN087d+4MzdWGCJkdIHhmRzns2WPMwgq0fZyRDwDMMvv9benOzpdffqmMjIyG39evX+/RLflHP/qR9rubYgCIGk6nVFEhrV5tPPqbWWWV2VEOW7awfRxAZFgqdjIyMrR3715JUn19vd566y1ddNFFDc9/9dVXatOmjb1XCKBFAmVpWspsFufAAbaPA4gMS7uxLr/8cs2ePVv33XefysrKlJqa6rED691331Xv3r1tv0gAwTEzd6qlBYbZLI77vLw8afRoto8DCB9LmZ1///vfysvL06ZNm9ShQwc9/vjjuuqqqxqeHzlypC666CLdfffdIbnYUCGzg3hkNkvT0oyM+3PI4gAIN7Pf30E3FezQoYMcTf6f64svvlCHDh2UnJxs/YojiGIH8aiiwliyCqS8PLi+NY176lRVSfPmGYVN4/9HcWdxWKICEAohbyroTZcuXYJ5OwAhYCVLY1VpqTGtvPFdo/R04/Hzz08ey8oyQscUOgAiKahiB0D0s5qlMctXDuiLL4zHO+6Q+vQhiwMgegS1jBVvWMZCPApFliZcOSAAMCMkfXYAxA6Hw/6+NmZ76mzcaOlSfaqvN65x2jTjsb7envcFkFgodoA4Zndfm1DmgJoqKpJSU6WCAmn5cuMxNdU4DgBWkNkB4pydfW1ClQNqqqhIWrSo+XGn8+Tx4uKWfQaAxEFmR2R2ALPC0VOnvt64g+NvpIXDIR09KsVYlwsANiOzA8B2ocgBNVVSEnh2l9NpnAcAZlDsALAk1POtqqvtPQ8AyOwAsCyU863MjtdjDB8As8jsiMwO4NZ4BESkmgKS2QFgFpkdAJaUlhrh4xEjpAkTjMdevYzj4ZScLBUW+j+nsJBCB4B5FDsAGkZANG0YWFNjHA93wVNcLM2a1fyuksNhHGfbOQArWMYSy1hIbNE8AqK+3th1VV1tZHQmT+aODoCTQjr1HED0spq7sTICYvhw2y/Xr+RkKT8/vJ8JIP5Q7ABxpLRUmj7ds3jJyjJ64/jaEh7OERAAEAlkdoA4EWzuJlwjIAAgUsjsiMwOYl9Lcjds9QYQq9h6DiQQK7kbN6dTqqiQ7rrL3HiGLVtsuVQACDsyO0AcsJq78ZbtseszACDaUOwAccBK7sad7bG6gE1mB0CsotgB4sCwYUYmp6bGexHjzuwMGWL0q7FS6LhfO2yYfdcLAOFEZgewoL5eWrpUmjbNeKyvj/QVGRwOY3u5ZBQnjbl/X7rUyN1YWbpq/NpwNxQEALtQ7AAmFRUZu5YKCqTly43H1FTjeDTIy5P+8hepRw/P41lZxvG8POu5m8avBYBYxTIWYEJRkbRoUfPjTufJ49EwrykvTxo92ncHZbO5m9tuk0aOjMzUcwCwG312RJ8d+BdPfWjc/XgCZXsiMQcLAKyizw5gk5ISc31oSkrCcz0tYTbb463xYDRmlQDADIodIIDqanvPizQz2Z7Goj2rBACBkNkBAujd297zokGgbI9brGSVAMAfMjsiswP/4imzY0Wi/t0AYgeZHcAmyclSYaH/cwoLI/OF755vtXq18RgoW2RFPGWVACS2mCp27r33XiUlJSk/P7/h2HfffacpU6YoPT1dHTp00NixY3Xo0KHIXSTiUnGxNGtW82Ueh8M4HomlnNJSY2fViBHShAnGY69exnE7xFtWCUDiipli54033tAf//hHnXvuuR7HCwoK9MILL+iZZ57R+vXr9emnnyqPDmgIgeJiY8lmyRJp6lTj8ejRyBU648Y174ZcU2Mct6PgicesEoDEFBOZna+//lrnn3++SkpKtGDBAv3whz/U0qVLVVtbq9NOO02rVq3SuHHjJEkffPCB+vXrp8rKSl100UWm3p/MDmKJu1eOr7EPdvXKIbMDINrFVWZnypQpuuKKK5Sbm+txfNu2bTp+/LjH8b59+6pnz56qrKz0+X7Hjh1TXV2dxw8QKzZu9D/fyuWS9u83zmuJaM4qAYAVUb/1/KmnntJbb72lN954o9lzBw8eVHJysjp37uxxPCMjQwcPHvT5ngsXLtQdd9xh96UCYWF2vpXVOVjeuJfoFi/2vMPjcBiFDtvOAcSCqL6zs3//fk2fPl0rV65Uu3btbHvfOXPmqLa2tuFn//79tr03EGpm51uZPS+QaMoqAUAwovrOzrZt23T48GGdf/75DcecTqc2bNig5cuX65VXXlF9fb2OHDnicXfn0KFD6tatm8/3bdu2rdq2bRvKSwdCZtgwI5MTaL7VsGH2fWZystRoEyQAxJSovrMzcuRI7dixQ9u3b2/4GTRokCZOnNjwn9u0aaN169Y1vGb37t36+OOPNXjw4AheOWA/d0+dNWukSZOMY1bmWwFAoorqOzsdO3bUOeec43Gsffv2Sk9Pbzh+8803q7CwUF26dFGnTp00bdo0DR482PROLCAWlJZK06d7BpPT043Hzz8/eSwryyh06L4AACdFdbFjxpIlS9SqVSuNHTtWx44d06hRo1RCS1fEEXdPnaZLVl98YRy74w6pTx/f860AINHFRJ+dUKPPDiKpvt4YuVBdbTTomzz55HbucPXUAYBYFFd9doB4VVRkNO4rKJCWLzceU1ON41L4euoAQDyL+WUsIFYVFUmLFjU/7nSePD5woLn3sqOnDgDEK+7sABFQX2806vNn8WLp1FPNvZ9dPXUAIB5xZwcIE6fTWG46cEDavNn/zCn3+Tt2hL+nDgDEG4odIAy8bR03Y+9e6YEHjN1YSUmeBQ89dQDAHJaxgBBzbx23WuhIxu6svDzpL3+RevTwfC4ryzhOTx0A8I+t52LrOUIn0NZxfxwOYwZV423o7mUweuoAgPnvb5axgBAKtHXcn0sukWbM8Oy9M3y4rZcHAAmBZSwghILZEp6UZPyUl3vvvQMAsIY7O0AImd0SPmWKUeC8/75R5DTVuPdOcbF91wcAiYDMjsjsIHTcmZ1AW8f37jXOTU31vyW9aY4HABIZ4yIAH5xOqaJCWr3aeAzU76YlHA5j67h0cqu4W9Ot4yUl5nrvMOcWAKyh2EFCKS017rSMGCFNmGA89uplHA8Vs1vHq6vNvZ/Z8wAABjI7SBjufjdNl5NqaozjoexZk5cnjR7tf+t4797m3svseQAAA5kdkdlJBIH63TTOzkSqd019PZkdALCCzA7QSKB+Ny6XtH+/cZ5VdmWAkpOlwkL/5xQWUugAgFUsYyEhmO13Y7UvjreZV1lZRig5mCUx97byxYs9iyaHwyh02HYOANZR7CAhmO13Y/Y8KXQZoOJiacECY9dVdbVnB2UAgHVkdkRmJxFY6XdjJrMTCxkgAIh3ZHYQF+zKw1jpd2NGKDNAAAB7UewgatndE8dsvxszQpUBAgDYj8wOolKo8jBm+t2YEYoMEAAgNMjsiMxOtImFPIzdGSAAgHVkdhCz7MzDhGoOlt0ZIABA6FDsIOrYlYcJ9RwsOzNAAIDQIbODqGNHHiZcc7DsygABAEKHzI7I7ESL+nqjkV5VlbRypVRb6/vctDRp4kSpT5/mDfeiIfPj/ltoCggAoWP2+5tiRxQ70aCoqPmIBLOajlKoqDCWrAIpL5eGD7f+eYF4+1sY9wAA9jP7/c0yFiKuqEhatCj41zudJ19fXBzZHji+/pam1wgACB8Cyoio+nrjLog/rVpJf/6z8ejP4sXG+0WqB46Zv8V9jQCA8KHYQUSVlAReujpxQnr+eePRH6dTuvlm4zErq/mWcLekJCk72wgS28nM3+J0GucBAMKHYgcRVV1t73lPPinl5krffmvsxApnDxy7/xYAgD0odhBRvXvbe57bF18Yj126eB4PZQ+cUP0tAICWYTeW2I0VSfX1Umqq/+Ufh0M6ckTq3Nnabq2kJKPh34oV0uHDoe+BY/ZvOXqUbegAYAfGRSAmJCcbW7L9KSyUOnQIfF5TLpfRa8fhkK691thm7qvQsWOshNm/hUIHAMKLreeIOPdW7EC9aXydF4iZsRLTp3s2IczKMmZfWV3uMvu3AADCh2UssYwVLcx2HXaft369VFYW+H39NQ/0NVbCHWQONt9DB2UACD06KFtAsROb3GMhamqaFytS4LEQ0TBWAgAQPDI7iHsOh7HUJFnbYu7O58yf77vQkYwCav9+487P0qU0AwSAWEWxg5iWl2csNfXo4Xnc1xbz0lLjbs6IEdKCBeY+o6xMKigwdloVFdlx1QCAcCKgjJiXlyeNHi1t3GiEkX1tMfeVzzGL+VYAEJvI7IjMTiIIlM+xgl45ABAdyOwgqtnR18aKjRvtKXQk5lsBQKxhGQthZ2dfG7MC9dqxivlWABA7uLODsHLnZpreZampMY6Xlobmc7t3N3debq6585hvBQCxg8yOyOyESyT72pjtybN7t9SxI/OtACAWkNlB1AmUm3H3tdm40f/71NcbfW+mTTPf/8ZsT56UFOZbAUC8odhB2JjNzfg7r6jI6HdTUCAtX26t/43ZnjzFxdKsWc3vLjkcxnG2nQNAbGEZSyxjhUtFhdHMLxBfs6yKik72ufHGbCHidAbuySMx3woAoh2zsSyg2AmPlsyyqq837uCQpQEAuJHZQVCCycOYFewsK8m4wxKoFw/9bwAA3lDsoEFL8jBmWZ1l5Wa2rw39bwAATdFUEJJ852FCMQ/K7Cyrxsz2taH/DQCgKTI7IrMT6jyM2UBwJK8RABB7yOzAtFDmYUpLjVDyiBHShAnGY69e1jslJyfT/wYAEByKHYQsD2P3aAj63wAAgkGxg5DkYZxOY9int0VS97H8fOvTzouLjaWqJUukqVONx6NHKXQAAL6R2RGZHTvzMO58zrp10oIFgT/bVwNBAAACIbMD0+zKwzTO55gpdCTzIyQAAAgWW88h6eQy0OLFnnd4HA6j0Am0TOTO51i9T9i9u7XzAQCwimUssYzVWDDzoNxjIPxNNG/K32gIAADMMPv9zZ2dBOat/01yshEctmLjRuuFjtR8NASDNwEAoUBmJ0HZ1f9Gsp678TYaIhyjKgAAiYliJwHZ3f/GbO7mttuM3Vd79zYvdBYtar4bzD2qgoIHANASZHaUWJmdQPmaYLI07vesqfEeUPb3noyBAAAEi63nCaK+3si+TJtmPNbX+z8/UL7G5ZL27zfOC8TplCoqpDVrpEmTjGPuPI6br3yOWyhHVQAAIEV5sbNw4UL96Ec/UseOHdW1a1eNGTNGu3fv9jjnu+++05QpU5Senq4OHTpo7NixOnToUISuOLyCybmYzdcEOq9p5mfePKlLF+OnMW/5nMZCNaoCAAC3qC521q9frylTpuif//ynXn31VR0/flw//elP9c033zScU1BQoBdeeEHPPPOM1q9fr08//VR5vr5Z40iwORez+Rp/5/nK/HzxhfT559Idd0irVnnP5zQVilEVAAA0FlOZnc8++0xdu3bV+vXrdckll6i2tlannXaaVq1apXHjxkmSPvjgA/Xr10+VlZW66KKLTL1vrGV2WpJzaUm+pvHr7cr8kNkBAAQrLjM7tbW1kqQu/1kr2bZtm44fP67c3NyGc/r27auePXuqsrLS5/scO3ZMdXV1Hj+xxGzO5eabjUxN047IDzxg/Ger+RrJ3syPZN+oCgAAfImZYufEiRPKz8/X0KFDdc4550iSDh48qOTkZHXu3Nnj3IyMDB08eNDney1cuFBpaWkNP9nZ2aG8dNuZza88+aT3/jl5eUaOpkcPz/MD5Wsk+zI/jRUXS7NmNS+wHA7jOBPNAQAtETMdlKdMmaL33ntPmzZtavF7zZkzR4WNbifU1dXFVMFjNb/i7p/TuJDJy5NGj27eQTnQ0pMdmR9viouN4aF0UAYA2C0mip2pU6fqxRdf1IYNG5SVldVwvFu3bqqvr9eRI0c87u4cOnRI3bp18/l+bdu2Vdu2bUN5ySE1ebI0c2bgpSw3l8tYosrPNwocd0HjcEjDh1v77GHDjDtAgTI/w4ZZe18puFEVAAAEEtXLWC6XS1OnTtXatWv12muvKScnx+P5Cy64QG3atNG6desaju3evVsff/yxBg8eHO7LDRszOZem3Fma+fOb53gCcffTWb3auBO0eLFxPJjMDwAA4RbVu7EmT56sVatW6bnnntNZZ53VcDwtLU0pKSmSpF//+td66aWXtGLFCnXq1EnTpk2TJG3ZssX058Tabiy3oiKj8LBSuLhlZRlB5UC79EtLpenTPUPJWVnStdcaxU/j49nZRqGTADv/AQBRwOz3d1QXO0lNbx38x2OPPaabbrpJktFUcMaMGVq9erWOHTumUaNGqaSkxO8yVlOxWuxIJyeFr18vlZWZf537v1p/gWR3P52m/wtxv3bNGunUU61lfgAAsEtcFDvhEsvFjlug/jne+OuJE4oZWgAA2Cku++zEOqtzrKzw1z/HF389cezupwMAQKRQ7IRJMHOsrPLVPycQbz1xQtFPBwCASKDYCYNg51gFIy9P2rfPmEt1223mXuOtJ06o+ukAABBuZHYU2sxOsLOfnE7rDf+aaskcrJbO0AIAINTI7EQJs3OsSkpO/l5aahQaI0ZIEyZ4H/lgRkvmYLV0hhYAANGCYifEzM6xcp/n3u7dNBzsHvlgteBpyRyslrwWAIBoERPjImKZ2TlWvXsbd3imT/e+bORr5IMZwc7BaulrAQCIBmR2FD2ZnS1bjCWrQG67TRo5kqIDAJDYyOxECTNzrAoLjfPMbuNesCD4HA8AAImGYicMioulWbOa34VxOIzjxcXG71a3cQeb4wEAIJGwjKXwjYtwz7GqrjYyOpMnN99ubufIBwAA4hmzsSyI5Gyspv10PvtM+p//MZ6z8i9TXi4NHx6SSwQAICqZ/f5mN1YElZYau68abzPPypJmzpRWr/Y/m6opxjYAAOAdxU6EuPvpNL17U1Mj/e530po10qmnSuvWGYHkQBjbAACAdyxjKfzLWO5sjq87N41zOBJjGwAA8Iat51Fs40b/S1Qul7R/v3EeYxsAAGgZip0IMJuvcZ/H2AYAAIJHZicCzOZrGp/H2AYAAIJDsRMBw4YZd2UC5XCGDfM87nCwvRwAAKtYxgoRp1OqqDC2kFdUeM7GIocDAED4UOyEQGmpsYNqxAhpwgTvc6zI4QAAEB5sPZe9W8999c9x37FpWsg07aBMDgcAAHMYF2GBXcWOlf45FDQAALQMfXYiwEr/HAAAEB4UOzay2j8HAACEHsWOjYLpnwMAAEKLYsdG7v45TbeTuyUlSdnZzfvnAACA0KHYsRH9cwAAiD4UOzajfw4AANGFcREhwBwrAACiB8VOiDDHCgCA6MAyFgAAiGsUOwAAIK5R7AAAgLhGsQMAAOIaxQ4AAIhrFDsAACCuUewAAIC4RrEDAADiGsUOAACIa3RQluRyuSRJdXV1Eb4SAABglvt72/097gvFjqSvvvpKkpSdnR3hKwEAAFZ99dVXSktL8/l8kitQOZQATpw4oU8//VQdO3ZUUlJSpC8nKtXV1Sk7O1v79+9Xp06dIn05aIR/m+jEv0v04t8mOgXz7+JyufTVV18pMzNTrVr5TuZwZ0dSq1atlJWVFenLiAmdOnXi/xyiFP820Yl/l+jFv010svrv4u+OjhsBZQAAENcodgAAQFyj2IEpbdu21bx589S2bdtIXwqa4N8mOvHvEr34t4lOofx3IaAMAADiGnd2AABAXKPYAQAAcY1iBwAAxDWKHQAAENcoduDXwoUL9aMf/UgdO3ZU165dNWbMGO3evTvSl4Um7r33XiUlJSk/Pz/SlwJJNTU1uu6665Senq6UlBQNGDBAb775ZqQvK6E5nU7NnTtXOTk5SklJUe/evXXXXXcFnKkE+23YsEFXXnmlMjMzlZSUpLKyMo/nXS6Xbr/9dnXv3l0pKSnKzc1VVVVViz6TYgd+rV+/XlOmTNE///lPvfrqqzp+/Lh++tOf6ptvvon0peE/3njjDf3xj3/UueeeG+lLgaQvv/xSQ4cOVZs2bfS3v/1NO3fu1P33369TTjkl0peW0O677z794Q9/0PLly7Vr1y7dd999Ki4u1u9///tIX1rC+eabb3TeeefpwQcf9Pp8cXGxli1bpoceekhbt25V+/btNWrUKH333XdBfyZbz2HJZ599pq5du2r9+vW65JJLIn05Ce/rr7/W+eefr5KSEi1YsEA//OEPtXTp0khfVkKbPXu2Nm/erI0bN0b6UtDIz372M2VkZOhPf/pTw7GxY8cqJSVFTz75ZASvLLElJSVp7dq1GjNmjCTjrk5mZqZmzJihmTNnSpJqa2uVkZGhFStWaPz48UF9Dnd2YEltba0kqUuXLhG+EkjSlClTdMUVVyg3NzfSl4L/eP755zVo0CBdffXV6tq1qwYOHKhHHnkk0peV8IYMGaJ169bpww8/lCS988472rRpky677LIIXxka27t3rw4ePOjx/2lpaWm68MILVVlZGfT7MggUpp04cUL5+fkaOnSozjnnnEhfTsJ76qmn9NZbb+mNN96I9KWgkY8++kh/+MMfVFhYqN/85jd64403dOuttyo5OVk33nhjpC8vYc2ePVt1dXXq27evHA6HnE6n7r77bk2cODHSl4ZGDh48KEnKyMjwOJ6RkdHwXDAodmDalClT9N5772nTpk2RvpSEt3//fk2fPl2vvvqq2rVrF+nLQSMnTpzQoEGDdM8990iSBg4cqPfee08PPfQQxU4ErVmzRitXrtSqVavUv39/bd++Xfn5+crMzOTfJQGwjAVTpk6dqhdffFHl5eXKysqK9OUkvG3btunw4cM6//zz1bp1a7Vu3Vrr16/XsmXL1Lp1azmdzkhfYsLq3r27zj77bI9j/fr108cffxyhK4IkzZo1S7Nnz9b48eM1YMAAXX/99SooKNDChQsjfWlopFu3bpKkQ4cOeRw/dOhQw3PBoNiBXy6XS1OnTtXatWv12muvKScnJ9KXBEkjR47Ujh07tH379oafQYMGaeLEidq+fbscDkekLzFhDR06tFl7hg8//FA/+MEPInRFkKSjR4+qVSvPrzyHw6ETJ05E6IrgTU5Ojrp166Z169Y1HKurq9PWrVs1ePDgoN+XZSz4NWXKFK1atUrPPfecOnbs2LBmmpaWppSUlAhfXeLq2LFjs9xU+/btlZ6eTp4qwgoKCjRkyBDdc889uuaaa/T666/r4Ycf1sMPPxzpS0toV155pe6++2717NlT/fv319tvv63Fixfr5z//eaQvLeF8/fXX2rNnT8Pve/fu1fbt29WlSxf17NlT+fn5WrBggfr06aOcnBzNnTtXmZmZDTu2guIC/JDk9eexxx6L9KWhiR//+Meu6dOnR/oy4HK5XnjhBdc555zjatu2ratv376uhx9+ONKXlPDq6upc06dPd/Xs2dPVrl071+mnn+767W9/6zp27FikLy3hlJeXe/1eufHGG10ul8t14sQJ19y5c10ZGRmutm3bukaOHOnavXt3iz6TPjsAACCukdkBAABxjWIHAADENYodAAAQ1yh2AABAXKPYAQAAcY1iBwAAxDWKHQAAENcodgAAQFyj2AEQF8rKynTGGWfI4XAoPz8/otdy0003WWptP3/+fP3whz8M2fUAiY5iB0gwvr6IKyoqlJSUpCNHjoT9muzwy1/+UuPGjdP+/ft11113WX59r169tHTpUvsvzISZM2d6DD4EYC8GgQIIq+PHj6tNmza2vufXX3+tw4cPa9SoUcrMzLT1vcOhQ4cO6tChQ6QvA4hb3NkB4NOzzz6r/v37q23bturVq5fuv/9+j+eTkpJUVlbmcaxz585asWKFJGnfvn1KSkrS008/rR//+Mdq166dVq5cqX/961+68sordcopp6h9+/bq37+/XnrpJZ/X8eWXX+qGG27QKaecotTUVF122WWqqqqSZNyR6tixoyTpJz/5iZKSklRRUdHsPVwul+bPn6+ePXuqbdu2yszM1K233ipJGj58uP71r3+poKBASUlJSkpKkuR9eWnp0qXq1atXw+9Op1OFhYXq3Lmz0tPTVVRUpMYjB5944gmlp6fr2LFjHu8zZswYXX/99V4/x3337Xe/+526d++u9PR0TZkyRcePH28458CBA7riiiuUkpKinJwcrVq1KqJ3p4BoRrEDwKtt27bpmmuu0fjx47Vjxw7Nnz9fc+fObShkrJg9e7amT5+uXbt2adSoUZoyZYqOHTumDRs2aMeOHbrvvvv83tm46aab9Oabb+r5559XZWWlXC6XLr/8ch0/flxDhgzR7t27JRnF2YEDBzRkyJBm7/Hss89qyZIl+uMf/6iqqiqVlZVpwIABkqTS0lJlZWXpzjvv1IEDB3TgwAHTf9v999+vFStW6M9//rM2bdqkL774QmvXrm14/uqrr5bT6dTzzz/fcOzw4cP661//qp///Oc+37e8vFzV1dUqLy/X448/rhUrVnj8d3/DDTfo008/VUVFhZ599lk9/PDDOnz4sOnrBhIJy1hAAnrxxRebFRdOp9Pj98WLF2vkyJGaO3euJOnMM8/Uzp07tWjRIt10002WPi8/P195eXkNv3/88ccaO3ZsQ7Fx+umn+3xtVVWVnn/+eW3evLmhiFm5cqWys7NVVlamq6++Wl27dpUkdenSRd26dfP6Ph9//LG6deum3NxctWnTRj179tT/+3//r+F1DodDHTt29Pl6X5YuXao5c+Y0/H0PPfSQXnnllYbnU1JSNGHCBD322GO6+uqrJUlPPvmkevbsqeHDh/t831NOOUXLly+Xw+FQ3759dcUVV2jdunWaNGmSPvjgA/3jH//QG2+8oUGDBkmSHn30UfXp08fStQOJgjs7QAIaMWKEtm/f7vHz6KOPepyza9cuDR061OPY0KFDVVVV1awwCsT9hex26623asGCBRo6dKjmzZund9991+drd+3apdatW+vCCy9sOJaenq6zzjpLu3btMn0NV199tb799ludfvrpmjRpktauXavvv//e0t/RVG1trQ4cOOBxba1bt272906aNEl///vfVVNTI0lasWKFbrrppoblMm/69+8vh8PR8Hv37t0b7tzs3r1brVu31vnnn9/w/BlnnKFTTjmlRX8PEK8odoAE1L59e51xxhkePz169LD8PklJSR75FEkeuZLGn9fYL37xC3300Ue6/vrrtWPHDg0aNEi///3vLX++FdnZ2dq9e7dKSkqUkpKiyZMn65JLLvF6vW6tWrUy9fcFMnDgQJ133nl64okntG3bNr3//vsB7441DXEnJSXpxIkTlj8bAMUOAB/69eunzZs3exzbvHmzzjzzzIY7DqeddppHvqWqqkpHjx419f7Z2dn61a9+pdLSUs2YMUOPPPKIz+v4/vvvtXXr1oZjn3/+uXbv3q2zzz7b0t+UkpKiK6+8UsuWLVNFRYUqKyu1Y8cOSVJycnKzO1annXaaDh486FHwbN++veE/p6WlqXv37h7X9v3332vbtm3NPvsXv/iFVqxYoccee0y5ubnKzs62dO2NnXXWWfr+++/19ttvNxzbs2ePvvzyy6DfE4hnFDsAvJoxY4bWrVunu+66Sx9++KEef/xxLV++XDNnzmw45yc/+YmWL1+ut99+W2+++aZ+9atfmdpWnp+fr1deeUV79+7VW2+9pfLycvXr18/ruX369NHo0aM1adIkbdq0Se+8846uu+469ejRQ6NHjzb996xYsUJ/+tOf9N577+mjjz7Sk08+qZSUFP3gBz+QZPTZ2bBhg2pqavTvf/9bkrFL67PPPlNxcbGqq6v14IMP6m9/+5vH+06fPl333nuvysrK9MEHH2jy5MleexVNmDBBn3zyiR555BG/wWQz+vbtq9zcXN1yyy16/fXX9fbbb+uWW25RSkqK36UxIFFR7ADw6vzzz9eaNWv01FNP6ZxzztHtt9+uO++802P55f7771d2draGDRumCRMmaObMmUpNTQ343k6nU1OmTFG/fv106aWX6swzz1RJSYnP8x977DFdcMEF+tnPfqbBgwfL5XLppZdestSvp3PnznrkkUc0dOhQnXvuufrHP/6hF154Qenp6ZKkO++8U/v27VPv3r112mmnSTLuKpWUlOjBBx/Ueeedp9dff92j2JOMovD666/XjTfeqMGDB6tjx4666qqrmn1+Wlqaxo4dqw4dOljqruzLE088oYyMDF1yySW66qqrNGnSJHXs2FHt2rVr8XsD8SbJ1XRBGgAQEiNHjlT//v21bNky29/7k08+UXZ2tv7xj39o5MiRtr8/EMsodgAgxL788ktVVFRo3Lhx2rlzp84666wWv+drr72mr7/+WgMGDNCBAwdUVFSkmpoaffjhh7Z3qAZiHX12ACDEBg4cqC+//FL33XefLYWOZOwK+81vfqOPPvpIHTt21JAhQ7Ry5UoKHcAL7uwAAIC4RkAZAADENYodAAAQ1yh2AABAXKPYAQAAcY1iBwAAxDWKHQAAENcodgAAQFyj2AEAAHHt/wN6VCdOABRX4wAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(df.Hours, df.Scores, color=\"blue\")\n", + "plt.ylabel(\"Scores\")\n", + "plt.xlabel(\"Hours of studying\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "0068030a", + "metadata": {}, + "outputs": [], + "source": [ + "# print(df)\n", + "train, test = train_test_split(df, test_size=0.20, random_state=42)\n", + "# test, evaluate = train_test_split(test, test_size=0.5, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "bf8122b1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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MzO1detW9e3bV//4xz/01FNPSTIzNj169Aja4JqbmzVixAjdddddkqQLLrhAb7/9th566CFdf/31AV/35ptvVlFRkev3hoYGCh4ghmVnWzsvK0vKz3efhqqTf5tbsY8VEHkCurNTUFCga665RhkZGUpLS9PYsWMlmdNbw4cPD9rg0tLSdM4557gdGzp0qA4ePChJSk1NlSTV19e7nVNfX+96zpPu3bvrtNNOc/sBELumT/ddbNjt0vDhbTLIqlSOapShZm8TWTablJlpVjQtrjV2rPTTn5qPFDpAeAVU7EyfPl1bt27Vn//8Z23evFldupiXOfPMM4Oa2RkzZoz27t3rduy9997TN7/5TUnSoEGDlJqaqnXr1rmeb2ho0Pbt2zVq1KigjQNAdEtIMLdsaE9RkfTxx22PN8uufN1/8p8J4wBRydEBx48fd7z77ruOEydOdOQyXr366quOrl27Ou68807Hvn37HCtWrHAkJSU5nnzySdc5d999t6NPnz6O5557zvHWW285Jk2a5Bg0aJDjyy+/tPw+x44dc0hyHDt2LBQfA0CEmDvX4bDbHQ5zosr8sdvN4w6Hw7F+vftzLX+u1LOOg8pwP5iZ6XA8+2xYPxMQz6x+fwe09LyxsVGzZs1yBYXfe+89nXnmmZo1a5YGDBigefPmBa0Ye/HFF3XzzTdr3759GjRokIqKijRt2jTX8w6HQwsWLNDDDz+so0eP6nvf+57Kysp01llnWX4Plp4D8aOpyVx1VVVlZnmmT3dfbp6VJa/Lx+0ylHtGpZ66r05dBhDGAcItpHtj5efna/PmzSotLdWPfvQjvfXWWzrzzDP13HPPaeHChXrjjTc6NPjORrEDxDdnT526OmnfPmnhQvN4y/86OmesWFUFRA6r398BrcZau3atnn76aY0cOVK2Fg0lhg0bpiqrazwBIAKUl5srsFoGk/v1Mx9bZngyMsxoDoUOEH0CKnY+/PBD9e/fv83xL774wq34AYBI5uyp0/r+9iefmMduu00aPJjl40C0C2g11ogRI/TXv/7V9buzwHn00UdZBQUgKhhG2546Tg6HOW316KPS1VezfByIdgHd2bnrrrt06aWXavfu3fr66691//33a/fu3dqyZYs2bNgQ7DECgE8tczdW7sRUVrbtqdPSyV0gVFlpFjsAoldAd3a+973v6c0339TXX3+t4cOH65///Kf69++vrVu36qKLLgr2GAGgXS33spo61XzMyjKPe1NnfRcIAFHO7zs7J06c0K9+9SvNnz/fbVNOAAgHb7mb2lrzuLfVU2n+7QIBIIr5fWenW7duevbZZ0MxFgDwi6/cjSQVFHje8Twnx1xh5W1NhYddIABEqYCmsa644gqtXbs2yEMBAP/4yt3YHIbOrKnQ3oWrpIoKt6rHbpfuv//keewCAcS0gALKgwcP1u23367NmzfroosuUs+ePd2ev+mmm4IyOABoT3t5mitVrvuVr0wdkhbJ/MnIMCuck/NaubnmNFfrPjv01AFiS0AdlAcNGuT9gjab3n///Q4NqrPRQRmIThUVZhi5tStVrtXKk+Rwv33tpQ2yvyu5AESGkG4XEWsodoDo5Gkvqy4ydEBZGqBDnufpbTbz1k11NRUNEOWsfn8HlNlpyeFwiHoJgDdNTeaU0KxZ5mNTU/Cu7Sl3k6NKZXordCT3BjoA4kLAxc4TTzyh4cOHKzExUYmJifr2t7+t//u//wvm2ABEueJiKSlJKiyUli0zH5OSzOPB4szdDBhg/p4mGugAcBdQQHnp0qWaP3++Zs6cqTFjxkiSNm3apF//+tf66KOPVFhYGNRBAog+xcXSkiVtjxvGqeMlJcF5r9xcadIk82aNsS7NDCP7QgMdIG4EHFC+7bbb9LOf/czt+OOPP66FCxequro6aAPsDGR2gOBqajLv4Hjqb+Nkt0uNjVJCQpDf3FOQpyUyO0DMCGlmp66uTqNHj25zfPTo0arj1jAQ98rK2i90JPP5sjL/r20Y5iqsVW1b55hooAOglYCKnW9961t65pln2hx/+umnNXjw4A4PCkB0q6oK7nlOlvfAah3kccrI8L5/BICYFVBm57bbbtP/+3//Txs3bnRldjZv3qx169Z5LIIAxJfs7OCeJwWwB1bLIA8NdIC4FnCfnR07dui+++7Tnj17JElDhw7V7NmzdcEFFwR1gJ2BzA4QXIFkdtpr7OeM4XjbGoIYDhCfrH5/B3RnR5IuuugiPfnkk4G+HEAMS0iQioo8r8ZyKio6VeiUl3vessG5s4OvPbBats4ZOzYoHwFADAmo2Pnb3/4mu92uiRMnuh1/6aWX1NzcrEsvvTQogwMQvZzLypcudb/DY7ebhY7zeSvTU8ePW3tP1kcA8CSggPK8efNkeLg/7XA4NG/evA4PCkBsKCkxp6ruu0+aOdN8bGw8VegYhnlHx9NkuvNYQYHUv7+196N1DgBPArqzs2/fPp1zzjltjg8ZMkT79+/v8KAAxI6EBLNgacmZz1m3ztr0lGROa/lqnZOTE7RhA4ghAd3ZSU5O9riz+f79+9WzZ88ODwpA7Gq5fHyRlU7Hko4coXUOgMAFVOxMmjRJBQUFqmrRJGP//v2aPXu2/vu//ztogwMQW5z5nPbu5niSlkbrHACBC2jp+bFjx/SjH/1Ir7/+ujIyMiRJNTU1uuSSS1ReXq4+ffoEe5whxdJzIPR8LR/3xNOS8vaWqAOILyFdep6cnKwtW7bo5Zdf1ptvvqnExESdd955ymHCHIhr7RUivpaPt+ZtespuZ3k5AP/4NY21detWvfjii5Ikm82mH/7wh+rfv79+97vfafLkybrxxht13OoaUQAxxddWDv4uC2d6CkCw+FXs3H777XrnnXdcv+/atUvTpk3Tf/3Xf2nevHl64YUXtHjx4qAPEkBk85bFcfbKKS+3viz8lluk9evNqSsKHQDB4FdmJy0tTS+88IJGjBghSfrf//1fbdiwQZs2bZIk/eUvf9GCBQu0e/fu0Iw2RMjsAIGzupXD/v3mXli+lo+z5QMAq6x+f/t1Z+fTTz9VSkqK6/cNGza4dUv+zne+oxpnUwwAEcMwpIoKadUq87G9Pav8ZXUrhy1bWD4OIDz8KnZSUlJUXV0tSWpqatK///1vjRw50vX8Z599pm7dugV3hAA6xFeWpqOsZnHq6lg+DiA8/FqN9eMf/1jz5s3TPffco7Vr1yopKcltBdZbb72l7OzsoA8SQGCs7DvV0QLDahbHeV5urjRpEsvHAXQevzI7H330kXJzc7Vp0yb16tVLjz/+uK688krX8+PHj9fIkSN15513hmSwoUJmB7HIapamoxkZ5/uQxQHQ2ax+fwfcVLBXr16yt/ov1yeffKJevXopISHB/xGHEcUOYlFFhTll5cv69YH1rWnZU2ffPmnBArOwaflfFGcWhykqAKEQ8qaCnvTt2zeQywEIAX+yNP4qLzd3K29516hfP/Px449PHcvIMEPHFDoAwimgYgdA5PM3S2OVtxzQJ5+Yj7fdJg0eTBYHQOQIaBor1jCNhVgUiixNZ+WAAMCKkPTZARA97Pbg97Wx2lOnstKvoXplNBnaWVqhLbNWaWdphYymIDYIAhA3KHaAGBbsvjahzAG1tq24XPVJWTq/cJxGL5uq8wvHqT4pS9uKg9QgCEDcILMDxLhg9rUJVQ6otW3F5frukjxJ7vNvqUatUpfkaZtWa2QJqWcA1pDZEZkdwKrO6KljNBmqT8pSqnHI463nZtlUZ89QamO17AkEg4B4RmYHQNCFIgfU2q6ySqV7KXQkqYscGmDUaFdZkIJBAGIexQ4Av4R6f6vGKmuBH6vnAQCZHQB+C+X+VknZ1gI/Vs8DADI7IrMDOLXcAiJcTQFPZXZq1UVt//NEZgeAE5kdAH4pLzfDx+PGSVOnmo9ZWebxzmRPsOtgkRkMapZ7MMj5e01RKYUOAMsodgC4toBo3TCwttY83tkFz8iSXL06d7UO292DQXX2DL06l2XnAPzDNJaYxkJ8i+QtIIwmQ7vKKtVYVaek7DQNn57DHR0ALiHd9RxA5PI3d+PPFhBjxwZ9uO2yJ9h1fkEnvymAmEOxA8SQ8nIpP9+9eMnIMHvjeFsS3plbQABAOJDZAWJEoLmbztoCAgDChcyOyOwg+nUkd9PUJCUlmdfwxm6XGhulhISgDRkAOoyl50Ac8Sd342QYUkWFdMcd7Rc6znO3bAnKUAGg05HZAWKAv7kbT9meYL0HAEQaih0gBviTu3Fme/ydwCazAyBaUewAMSAnx8zk1NZ6LmKcmZ3Ro6XsbP8KHedrc3KCN14A6ExkdgA/GE2GdpZWaMusVdpZWiGjyUfYpZPY7ebycsksTlpy/l5aauZu/Jm6avnazm4oCADBQrEDWLStuFz1SVk6v3CcRi+bqvMLx6k+KUvbijt5LwUvcnOl1aulAe47LCgjwzyem+t/7qblawEgWjGNBViwrbhc312SJ7XahTvVqFXqkjxtU2Ts15SbK02a5L2DstXczS23SOPHh2fXcwAINvrsiD47aJ/RZKg+KUupxiGPt0KbZVOdPUOpjdURv2+Tsx+Pr2xPOPbBAgB/0WcHCJJdZZVK91LoSFIXOTTAqNGuskovZ0QOq9keT40HS0ulWbPMx6amEA8UAIKIYgfwobHKWtDF6nnhZiXb01JxsdlhubBQWrbMfExKMo8DQDQgswP4kJRtLehi9bxI4Cvb41RcLC1Z0vb1hnHqeElJ6McLAB1BZkdkdtC+U5mdWnVR2/+7RFNmxx/smQUg0pHZAYLEnmDXwSIz6NIs96CL8/eaotLwFDrODa5WrTIffW1y5YeyMmt7ZpWVBe0tASAkoqrYufvuu2Wz2VRQUOA69tVXX2nGjBnq16+fevXqpcmTJ6u+vj58g0RMGlmSq1fnrtZhu3vQpc6eoVfnhmnZeXm5ubRq3Dhp6lTzMSvLPB4EVVXBPQ8AwiVqip3XXntNf/zjH/Xtb3/b7XhhYaFeeOEF/eUvf9GGDRv0wQcfKJcOaAiBkSW5Smk8oJ33rdeWmSu18771Sm2sDl+hk5fXth1yba15PAgFT3Z2cM8DgHCJiszO559/rgsvvFBlZWVatGiRzj//fJWWlurYsWM644wztHLlSuXl5UmS3n33XQ0dOlRbt27VyJEjLV2fzA6iirNZjrd9H4LULIfMDoBIF1OZnRkzZuiyyy7ThAkT3I7v2LFDJ06ccDs+ZMgQDRw4UFu3bvV6vePHj6uhocHtB4galZXtb3DlcEg1NeZ5HZCQIBUVtX9OURGFDoDIF/FLz5966in9+9//1muvvdbmucOHDyshIUF9+vRxO56SkqLDhw97vebixYt12223BXuoQOewusGVvxtheeBcVr50qfsdHrvdLHRYdg4gGkT0nZ2amhrl5+drxYoV6tGjR9Cue/PNN+vYsWOun5qamqBdGwg5qxtcWT3Ph5ISc6rqvvukmTPNx8ZGCh0A0SOi7+zs2LFDR44c0YUXXug6ZhiGNm7cqGXLlumll15SU1OTjh496nZ3p76+XqmpqV6v2717d3Xv3j2UQwdCJyfHzOT42uAqJydob5mQILVYBAkAUSWi7+yMHz9eu3bt0s6dO10/I0aM0DXXXOP6527dumndunWu1+zdu1cHDx7UqFGjwjhyIPhcLXWesevtafeb7Q392eAKAOJURN/Z6d27t84991y3Yz179lS/fv1cx3/xi1+oqKhIffv21WmnnaZZs2Zp1KhRlldiAdGgvFzKz2+ZS87VL/ut1v3KV9LHLcLKGRlmoUP7BQBwiehix4r77rtPXbp00eTJk3X8+HFNnDhRZbR0RQxxttRpPWP1p09y9Zhjkl65rVKXDG5ngysAiHNR0Wcn1Oizg3BqajK3XKiqMhv0TZ9+ajl3J7XUAYCoFFN9doBYVVxsNu4rLJSWLTMfk5LM41KntdQBgJgW9dNYQLQqLpaWLGl73DBOHb/gAmvXCkJLHQCIWdzZAcKgqcls1NeepUulfv2sXS9ILXUAICZxZwfoLIZhzjfV1en5zWlyGDmSvAdtDEPatavTW+oAQMzhzg7QGcrLzaTxuHHS1KnKe3CcDihLV6r93ckPHJDuv9/8Z1rqAEBgKHaAUHOuHW+VNB6gWq1WXrsFT3a22TJn9WppwAD35zIyzOO01AGA9rH0XCw9Rwj5WDveLJsOKUODVK3mVlNadru5B1XLZegnZ8FoqQMAsv79TWYHCCUfa8e7yKGBqlGOKrVBY92eu+QSafZs9947Y8d6vAwAoB1MYwGhZHFNeJpOnWezmT/r13vuvQMA8A93doBQsrgmfPKMNH3DJr3zjlnktNay905JSRDHBwBxgMyOyOwghJyZHV9rx6ur1WTYlZRkvsSb1jkeAIhnbBcBeGEYUkWFtGqV+dhecdFhdrvlteNlZb7HYhjmPloAAOsodhBXWrW70bhx5u/l7be76RiLa8erqqxdzup5AAATmR3EDWe7m9azSbW15vGQ9qzJzZUmTWp37Xh2trVLWT0PAGAisyMyO/HAR7ubltGZsPWuaWoSmR0A8AOZHaAFH+1u5HBINTXmef4KVgYoIUEqKmr/nKIiCh0A8BfTWIgLFtvdWD7Pqbxcys93L6QyMsxMciBTYs5l5UuXuhdNdrtZ6LDsHAD8R7GDuGCx3Y3l86TQZYBKSqRFi8xVV1VV7h2UAQD+I7MjMjvxwI92N5YyO9GQAQKAWEdmBzEhWHkYP9rdWBLKDBAAILgodhCxgt0Tx2K7G0tClQECAAQfmR1EpFDlYSy0u7EkFBkgAEBokNkRmZ1IEw15mGBngAAA/iOzg6gVzDxMqPbBCnYGCAAQOhQ7iDjBysOEeh+sYGaAAAChQ2YHEScYeZjO2gcrWBkgAEDokNkRmZ1I0dRkNtLbt09asUJqaPCeh0lONu/WDB7ctuFeJGR+nJ+FpoAAEDpWv78pdkSxEwmKi9tukWBV660UKirMKStf1q+Xxo71//188fRZ2O4BAILP6vc301gIu+JiacmSwF9vGKdeX1IS3h443j5L6zECADoPAWWEVVOTeRekPV26SH/+s/nYnqVLzeuFqweOlc/iHCMAoPNQ7CCsysp8T101N0vPP28+tscwpF/8wnzMyGi7JNzJZpMyM80gcTBZ+SyGYZ4HAOg8FDsIq6qq4J735JPShAnSl1+a4ebO7IET7M8CAAgOih2EVXZ2cM9z+uQT87FvX/fjoeyBE6rPAgDoGFZjidVY4dTUJCUltT/9Y7dLR49Kffr4t1rLZjMb/i1fLh05EvoeOFY/S2Mjy9ABIBjYLgJRISHBXJLdnqIiqVcv3+e15nCYvXbsdumnPzWXmXsrdIKxrYTVz0KhAwCdi6XnCDvnUmxfvWm8neeLlW0l8vPdmxBmZJh7X/k73WX1swAAOg/TWGIaK1JY7TrsPG/DBmntWt/Xba95oLdtJZxB5kDzPXRQBoDQo4OyHyh2opNzW4jaWu/bSrS3LUQkbCsBAAgcmR3EPLvdnGqS/Fti7sznLFzovdCRzAKqpsa881NaSjNAAIhWFDuIarm55lTTgAHux70tMS8vN+/mjBsnLVpk7T3WrpUKC82VVsXFwRg1AKAzEVBG1MvNlSZNkiorzTCytyXm3vI5VrG/FQBEJzI7IrMTD3zlc/xBrxwAiAxkdhDRgtHXxh+VlcEpdCT2twKAaMM0FjpdMPvaWOWr146/2N8KAKIHd3bQqZy5mdZ3WWprzePl5aF537Q0a+dNmGDtPPa3AoDoQWZHZHY6Szj72ljtybN3r9S7N/tbAUA0ILODiOMrN+Psa1NZ2f51mprMvjezZlnvf2O1J09iIvtbAUCsodhBp7Gam2nvvOJis99NYaG0bJl//W+s9uQpKZHmzm17d8luN4+z7BwAogvTWGIaq7NUVJjN/HzxtpdVcfGpPjeeWC1EDMN3Tx6J/a0AINKxN5YfKHY6R0f2smpqMu/gkKUBADiR2UFAAsnDWBXoXlaSeYfFVy8e+t8AADyh2IFLR/IwVvm7l5WT1b429L8BALRGU0FI8p6HCcV+UFb3smrJal8b+t8AAFojsyMyO6HOw1gNBIdzjACA6ENmB5aFMg9TXm6GkseNk6ZONR+zsvzvlJyQQP8bAEBgKHYQsjxMsLeGoP8NACAQFDsISR7GMMzNPj1NkjqPFRT4v9t5SYk5VXXffdLMmeZjYyOFDgDAOzI7IrMTzDyMM5+zbp20aJHv9/bWQBAAAF/I7MCyYOVhWuZzrBQ6kvUtJAAACBRLzyHp1DTQ0qXud3jsdrPQ8TVN5Mzn+HufMC3Nv/MBAPAX01hiGqulQPaDcm4D0d6O5q21tzUEAABWWP3+5s5OHPPU/yYhwQwO+6Oy0v9CR2q7NQQbbwIAQoHMTpwKVv8byf/cjaetITpjqwoAQHyi2IlDwe5/YzV3c8st5uqr6uq2hc6SJW1Xgzm3qqDgAQB0BJkdxVdmx1e+JpAsjfOatbWeA8rtXZNtIAAAgWLpeZwwmgztLK3QllmrtLO0QkZT+136fOVrHA6ppsY8z+d7G1JFhfTMM9K0aeZrnXkcJ2/5HKdQblUBAIAU4cXO4sWL9Z3vfEe9e/dW//79dcUVV2jv3r1u53z11VeaMWOG+vXrp169emny5Mmqr68P04g717bictUnZen8wnEavWyqzi8cp/qkLG0r9j4PZTVf4+u81pmfBQukfv2kvn3dz/OUz2kpVFtVAADgFNHFzoYNGzRjxgxt27ZNL7/8sk6cOKEf/vCH+uKLL1znFBYW6oUXXtBf/vIXbdiwQR988IFyvX2zxpBtxeX67pI8pRrut2lSjVp9d0me14LHar6mvfO8ZX4++cT8ue02aeVKz/mc1kKxVQUAAC1FVWbnww8/VP/+/bVhwwZdcsklOnbsmM444wytXLlSeXl5kqR3331XQ4cO1datWzVy5EhL1422zI7RZKg+KUupxiGP1WqzbKqzZyi1sVr2BPe5o47ka1q+PliZHzI7AIBAxWRm59ixY5KkvifnSnbs2KETJ05owoQJrnOGDBmigQMHauvWrV6vc/z4cTU0NLj9RJNdZZVK91LoSFIXOTTAqNHyX1SqoqJtR+T77zf/2d98jRTczI8UvK0qAADwJmqKnebmZhUUFGjMmDE699xzJUmHDx9WQkKC+vTp43ZuSkqKDh8+7PVaixcvVnJysusnMzMzlEMPusYqa8Gbfz1Z57F/Tm6umaMZMMD9fF/5Gil4mZ+WSkqkuXPbFlh2u3mcHc0BAB0RNR2UZ8yYobffflubNm3q8LVuvvlmFbW4ndDQ0BBVBU9StrXgTZ3M85z9c1oWMrm50qRJbTso+5p6Ckbmx5OSEnPzUDooAwCCLSqKnZkzZ+rFF1/Uxo0blZGR4TqempqqpqYmHT161O3uTn19vVJTU71er3v37urevXsohxxSw6fn6IM5GUo1atVFbYM3zbLpkDJUqRxJp5aEFxSYBY6zoLHbpbFj/XvvnBzzDpCvzE9Ojn/XlQLbqgIAAF8iehrL4XBo5syZWrNmjV555RUNGjTI7fmLLrpI3bp107p161zH9u7dq4MHD2rUqFGdPdxOY0+w62CRGbxplnvwxvl7gUrVrFO3aZxZmoUL1SbH45Ozoc6qVbJXVuj+peaLA8n8AADQ2SJ6Ndb06dO1cuVKPffcczr77LNdx5OTk5WYmChJ+s1vfqO//e1vWr58uU477TTNmjVLkrRlyxbL7xNtq7GcthWXa+DSfKW3WH5+UJkqUKnWqP3l9xkZZlDZ5yr98nIpP989lZyRoW0/vV9Xrcp1O5yZaRY6cbDyHwAQAax+f0d0sWNrfevgpMcee0w33HCDJLOp4OzZs7Vq1SodP35cEydOVFlZWbvTWK1Fa7EjmcvQd5VV6r0NdSpbm6ZK5bjd0fHG+a+23UCys6FO6/+JnHyx8cxqVX4j16/MDwAAwRITxU5nieZix8lX/xxP2u2JE4pNtAAACKKY7LMT7ZqazGmeWbPMx6am4F27vf453rTbEyfYDXUAAAgTip1OUlxsdgouLJSWLTMfk5LM48HirX+OLx574oSioQ4AAGFAsdMJioulJUvaroAyDPN4sAueAwfMfaluucXaazz2xAlVQx0AADoZmR2FNrMT6N5PhuF/w7/WOrQPVkc30QIAIMTI7ESIsjLfPW0MwzzPqbzcrDPGjZOmTpXHLR+s6NA+WB3dRAsAgAhBsRNiVVX+nedc7d06G+zc8sHfgqcj+2B17MUAAESGqNguIpplZ1s/zzDM/n2eZo28bflgRaD7YHX8xQAAhB+ZHUVOZmfLFnPKypsuMpSjSpXdUqdzxlN0AADiG5mdCJGQILXYYN2joiLzvPZWcV+pch1Qlio0Tucs6kCQBwCAOEOx0wlKSqS5c9vehLHbzeMlJebv3lZxX6lyrVaeBihIQR4AAOII01jqvO0imprMVVdVVWZGZ/r0tsvNW6/27iJDB5SlATrkuTJlCTgAIE6xN5Yfwrk3Vut+Oh99JF19tfmcwyF9XxWqUDtBHqf166WxY0M6VgAAIonV729WY4VRebm5+qrlMvOMDGnOHGnVKvN4mti2AQCAjqDYCRNnP53W99Vqa6Xf/U56+mnpjDMkY12atMjCBdm2AQAAj5jGUudPYzmzOd42FXeL4YhtGwAA8ISl5xGsstJ7oSOZNU1NjXke2zYAANAxFDthYDVe4zqPbRsAAAgYmZ0wsBqvcTuPbRsAAAgIxU4Y5OSYN2V8xXByclo9YbezvBwAAD8xjRUihiFVVJhLyCsq3PfGIoYDAEDnodgJgfJycwHVuHHSVC/bWBHDAQCgc7D0XMFdeu6tf47zjk3rQqZ1B2ViOAAAWMN2EX4IVrHjV/8cChoAADqEPjth4Ff/HAAA0CkodoLI7/45AAAg5Ch2giig/jkAACCkKHaCyNk/p/VyciebTcrM9NA/BwAAhAzFThDRPwcAgMhDsRNk9M8BACCysF1ECLCNFQAAkYNiJ0TYxgoAgMjANBYAAIhpFDsAACCmUewAAICYRrEDAABiGsUOAACIaRQ7AAAgplHsAACAmEaxAwAAYhrFDgAAiGl0UJbkcDgkSQ0NDWEeCQAAsMr5ve38HveGYkfSZ599JknKzMwM80gAAIC/PvvsMyUnJ3t93ubwVQ7FgebmZn3wwQfq3bu3bDZbuIcTkRoaGpSZmamamhqddtpp4R4OWuBvE5n4u0Qu/jaRKZC/i8Ph0Geffab09HR16eI9mcOdHUldunRRRkZGuIcRFU477TT+4xCh+NtEJv4ukYu/TWTy9+/S3h0dJwLKAAAgplHsAACAmEaxA0u6d++uBQsWqHv37uEeClrhbxOZ+LtELv42kSmUfxcCygAAIKZxZwcAAMQ0ih0AABDTKHYAAEBMo9gBAAAxjWIH7Vq8eLG+853vqHfv3urfv7+uuOIK7d27N9zDQit33323bDabCgoKwj0USKqtrdW1116rfv36KTExUcOHD9frr78e7mHFNcMwNH/+fA0aNEiJiYnKzs7WHXfc4XNPJQTfxo0bdfnllys9PV02m01r1651e97hcOjWW29VWlqaEhMTNWHCBO3bt69D70mxg3Zt2LBBM2bM0LZt2/Tyyy/rxIkT+uEPf6gvvvgi3EPDSa+99pr++Mc/6tvf/na4hwJJn376qcaMGaNu3brp73//u3bv3q17771Xp59+eriHFtfuuece/eEPf9CyZcu0Z88e3XPPPSopKdHvf//7cA8t7nzxxRc677zz9OCDD3p8vqSkRA888IAeeughbd++XT179tTEiRP11VdfBfyeLD2HXz788EP1799fGzZs0CWXXBLu4cS9zz//XBdeeKHKysq0aNEinX/++SotLQ33sOLavHnztHnzZlVWVoZ7KGjhJz/5iVJSUvSnP/3JdWzy5MlKTEzUk08+GcaRxTebzaY1a9boiiuukGTe1UlPT9fs2bM1Z84cSdKxY8eUkpKi5cuXa8qUKQG9D3d24Jdjx45Jkvr27RvmkUCSZsyYocsuu0wTJkwI91Bw0vPPP68RI0boqquuUv/+/XXBBRfokUceCfew4t7o0aO1bt06vffee5KkN998U5s2bdKll14a5pGhperqah0+fNjtv2nJycm6+OKLtXXr1oCvy0agsKy5uVkFBQUaM2aMzj333HAPJ+499dRT+ve//63XXnst3ENBC++//77+8Ic/qKioSL/97W/12muv6aabblJCQoKuv/76cA8vbs2bN08NDQ0aMmSI7Ha7DMPQnXfeqWuuuSbcQ0MLhw8fliSlpKS4HU9JSXE9FwiKHVg2Y8YMvf3229q0aVO4hxL3ampqlJ+fr5dfflk9evQI93DQQnNzs0aMGKG77rpLknTBBRfo7bff1kMPPUSxE0bPPPOMVqxYoZUrV2rYsGHauXOnCgoKlJ6ezt8lDjCNBUtmzpypF198UevXr1dGRka4hxP3duzYoSNHjujCCy9U165d1bVrV23YsEEPPPCAunbtKsMwwj3EuJWWlqZzzjnH7djQoUN18ODBMI0IkjR37lzNmzdPU6ZM0fDhw3XdddepsLBQixcvDvfQ0EJqaqokqb6+3u14fX2967lAUOygXQ6HQzNnztSaNWv0yiuvaNCgQeEeEiSNHz9eu3bt0s6dO10/I0aM0DXXXKOdO3fKbreHe4hxa8yYMW3aM7z33nv65je/GaYRQZIaGxvVpYv7V57dbldzc3OYRgRPBg0apNTUVK1bt851rKGhQdu3b9eoUaMCvi7TWGjXjBkztHLlSj333HPq3bu3a840OTlZiYmJYR5d/Ordu3eb3FTPnj3Vr18/8lRhVlhYqNGjR+uuu+7S1VdfrVdffVUPP/ywHn744XAPLa5dfvnluvPOOzVw4EANGzZMb7zxhpYuXaqf//zn4R5a3Pn888+1f/9+1+/V1dXauXOn+vbtq4EDB6qgoECLFi3S4MGDNWjQIM2fP1/p6emuFVsBcQDtkOTx57HHHgv30NDK97//fUd+fn64hwGHw/HCCy84zj33XEf37t0dQ4YMcTz88MPhHlLca2hocOTn5zsGDhzo6NGjh+PMM890/O///q/j+PHj4R5a3Fm/fr3H75Xrr7/e4XA4HM3NzY758+c7UlJSHN27d3eMHz/esXfv3g69J312AABATCOzAwAAYhrFDgAAiGkUOwAAIKZR7AAAgJhGsQMAAGIaxQ4AAIhpFDsAACCmUewAAICYRrEDICasXbtW3/rWt2S321VQUBDWsdxwww1+tbZfuHChzj///JCNB4h3FDtAnPH2RVxRUSGbzaajR492+piC4Ve/+pXy8vJUU1OjO+64w+/XZ2VlqbS0NPgDs2DOnDluGx8CCC42AgXQqU6cOKFu3boF9Zqff/65jhw5ookTJyo9PT2o1+4MvXr1Uq9evcI9DCBmcWcHgFfPPvushg0bpu7duysrK0v33nuv2/M2m01r1651O9anTx8tX75cknTgwAHZbDY9/fTT+v73v68ePXpoxYoV+s9//qPLL79cp59+unr27Klhw4bpb3/7m9dxfPrpp/rZz36m008/XUlJSbr00ku1b98+SeYdqd69e0uSfvCDH8hms6mioqLNNRwOhxYuXKiBAweqe/fuSk9P10033SRJGjt2rP7zn/+osLBQNptNNptNkufppdLSUmVlZbl+NwxDRUVF6tOnj/r166fi4mK13HLwiSeeUL9+/XT8+HG361xxxRW67rrrPL6P8+7b7373O6Wlpalfv36aMWOGTpw44Tqnrq5Ol112mRITEzVo0CCtXLkyrHengEhGsQPAox07dujqq6/WlClTtGvXLi1cuFDz5893FTL+mDdvnvLz87Vnzx5NnDhRM2bM0PHjx7Vx40bt2rVL99xzT7t3Nm644Qa9/vrrev7557V161Y5HA79+Mc/1okTJzR69Gjt3btXklmc1dXVafTo0W2u8eyzz+q+++7TH//4R+3bt09r167V8OHDJUnl5eXKyMjQ7bffrrq6OtXV1Vn+bPfee6+WL1+uP//5z9q0aZM++eQTrVmzxvX8VVddJcMw9Pzzz7uOHTlyRH/961/185//3Ot1169fr6qqKq1fv16PP/64li9f7vbv/mc/+5k++OADVVRU6Nlnn9XDDz+sI0eOWB43EE+YxgLi0IsvvtimuDAMw+33pUuXavz48Zo/f74k6ayzztLu3bu1ZMkS3XDDDX69X0FBgXJzc12/Hzx4UJMnT3YVG2eeeabX1+7bt0/PP/+8Nm/e7CpiVqxYoczMTK1du1ZXXXWV+vfvL0nq27evUlNTPV7n4MGDSk1N1YQJE9StWzcNHDhQ3/3ud12vs9vt6t27t9fXe1NaWqqbb77Z9fkeeughvfTSS67nExMTNXXqVD322GO66qqrJElPPvmkBg4cqLFjx3q97umnn65ly5bJbrdryJAhuuyyy7Ru3TpNmzZN7777rv71r3/ptdde04gRIyRJjz76qAYPHuzX2IF4wZ0dIA6NGzdOO3fudPt59NFH3c7Zs2ePxowZ43ZszJgx2rdvX5vCyBfnF7LTTTfdpEWLFmnMmDFasGCB3nrrLa+v3bNnj7p27aqLL77Ydaxfv346++yztWfPHstjuOqqq/Tll1/qzDPP1LRp07RmzRp9/fXXfn2O1o4dO6a6ujq3sXXt2rXN5502bZr++c9/qra2VpK0fPly3XDDDa7pMk+GDRsmu93u+j0tLc1152bv3r3q2rWrLrzwQtfz3/rWt3T66ad36PMAsYpiB4hDPXv21Le+9S23nwEDBvh9HZvN5pZPkeSWK2n5fi398pe/1Pvvv6/rrrtOu3bt0ogRI/T73//e7/f3R2Zmpvbu3auysjIlJiZq+vTpuuSSSzyO16lLly6WPp8vF1xwgc477zw98cQT2rFjh9555x2fd8dah7htNpuam5v9fm8AFDsAvBg6dKg2b97sdmzz5s0666yzXHcczjjjDLd8y759+9TY2Gjp+pmZmfr1r3+t8vJyzZ49W4888ojXcXz99dfavn2769jHH3+svXv36pxzzvHrMyUmJuryyy/XAw88oIqKCm3dulW7du2SJCUkJLS5Y3XGGWfo8OHDbgXPzp07Xf+cnJystLQ0t7F9/fXX2rFjR5v3/uUvf6nly5frscce04QJE5SZmenX2Fs6++yz9fXXX+uNN95wHdu/f78+/fTTgK8JxDKKHQAezZ49W+vWrdMdd9yh9957T48//riWLVumOXPmuM75wQ9+oGXLlumNN97Q66+/rl//+teWlpUXFBTopZdeUnV1tf79739r/fr1Gjp0qMdzBw8erEmTJmnatGnatGmT3nzzTV177bUaMGCAJk2aZPnzLF++XH/605/09ttv6/3339eTTz6pxMREffOb35Rk9tnZuHGjamtr9dFHH0kyV2l9+OGHKikpUVVVlR588EH9/e9/d7tufn6+7r77bq1du1bvvvuupk+f7rFX0dSpU3Xo0CE98sgj7QaTrRgyZIgmTJigG2+8Ua+++qreeOMN3XjjjUpMTGx3agyIVxQ7ADy68MIL9cwzz+ipp57Sueeeq1tvvVW333672/TLvffeq8zMTOXk5Gjq1KmaM2eOkpKSfF7bMAzNmDFDQ4cO1Y9+9COdddZZKisr83r+Y489posuukg/+clPNGrUKDkcDv3tb3/zq19Pnz599Mgjj2jMmDH69re/rX/961964YUX1K9fP0nS7bffrgMHDig7O1tnnHGGJPOuUllZmR588EGdd955evXVV92KPcksCq+77jpdf/31GjVqlHr37q0rr7yyzfsnJydr8uTJ6tWrl1/dlb154oknlJKSoksuuURXXnmlpk2bpt69e6tHjx4dvjYQa2yO1hPSAICQGD9+vIYNG6YHHngg6Nc+dOiQMjMz9a9//Uvjx48P+vWBaEaxAwAh9umnn6qiokJ5eXnavXu3zj777A5f85VXXtHnn3+u4cOHq66uTsXFxaqtrdV7770X9A7VQLSjzw4AhNgFF1ygTz/9VPfcc09QCh3JXBX229/+Vu+//7569+6t0aNHa8WKFRQ6gAfc2QEAADGNgDIAAIhpFDsAACCmUewAAICYRrEDAABiGsUOAACIaRQ7AAAgplHsAACAmEaxAwAAYtr/B8c/eloJo4EMAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "ax1 = fig.add_subplot()\n", + "ax1.scatter(train.Hours, train.Scores, color=\"blue\")\n", + "ax1.scatter(test.Hours, test.Scores, color=\"red\")\n", + "plt.ylabel(\"Scores\")\n", + "plt.xlabel(\"Hours of studying\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "70a01055", + "metadata": {}, + "source": [ + "Find the best fitted line based on distribution of data. " + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "92f95186", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coefficients:\t [[9.86089296]]\n", + "Intercept:\t [1.93973905]\n" + ] + } + ], + "source": [ + "reg = linear_model.LinearRegression()\n", + "train_x = np.asanyarray(train[['Hours']])\n", + "train_y = np.asanyarray(train[['Scores']])\n", + "reg.fit(train_x, train_y)\n", + "\n", + "print(\"Coefficients:\\t\", reg.coef_)\n", + "print(\"Intercept:\\t\", reg.intercept_)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "a3bb7499", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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TJ3qfwPTpLUDkIAi2sYqKCjQunXr1KlTJ7388st64oknJFk5NqHmyYSioaFBAwcO1B133CFJGjBggD744AM98MADuvrqqyO+b2ZmpjIzM6M1TQAJbuJEacaMxnN2fvMb6ZRT7NtCmKYV4xSNbryBJ60dgMQS0cpOcXGxxo8fr/z8fOXl5WnY0X+qV61apf79+0dtcnl5eTrttNO8xvr27avPPvtMkpSbmytJ2rNnj9c1e/bscT8HABkZ0rRpwa+ZNk1av95/RcflWf1UDWZoncoBJJaIgp2JEydq3bp1+tvf/qa1a9eqRQvrNieddFJUc3aGDBmibdu2eY19+OGHOvHEEyVZycq5ublasWKF+/m6ujqtX79egwYNito8ACS/QHVxHA5rvLQ0cA0cU4Z+qudtniDQAZJBk46e19fXq6qqSr169VLLltEvxrxhwwYNHjxYf/jDH3T55Zfrrbfe0oQJE7Ro0SKNHz9eknVi649//KPX0fP333+fo+cAbAWroFxZaSUje7KrnVO50mSbCkgAoX5/RxTsHDx4UNdff707UfjDDz/USSedpOuvv17dunXTrFmzIp+5jxdeeEE33nijtm/frp49e2ratGmaMGGC+3nTNHXzzTdr0aJF2rdvn84991yVl5frlFNOCfk9CHYASFZOT48eVjKy7ZaVpO4FJrVygAQR02BnypQpWrt2rcrKynTBBRfo/fff10knnaRnn31Wt9xyi959990mTb65EewA6c2zps727dKcm/0DnZd0oS42XuIIOZBAYlpUcPny5XryySf1wx/+UIZHnYl+/fppR6gFLQAgAVRUSFOmHEtMDtTyoaBAerqMQAdIRhEFO1988YW6dOniN/7NN994BT8AkMhcNXVMM3Cn8qVLTK0MVkEZQMKL6DTWwIED9eKLL7p/dwU4Dz30EKegACQFp9Na0QkU6MzUXepeYOryy62aOQQ6QPKKaGXnjjvu0IUXXqgtW7boyJEjuvfee7Vlyxa9+eabeuONN6I9RwBoVMi9rI5avVraudOUafPffO4GntXWdZy8ApJbRCs75557rt577z0dOXJE/fv31z//+U916dJF69at01lnnRXtOQJAUCH1svIxbLgRPNA5KlDtHQDJI+yVncOHD+s3v/mNZs+e7dWUEwDiwTPvxpOrl5Xt6Smb3MJCvaoVKvQbz8uL4mQB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kE2aNEkffPCB1qxZE++ppL3q6mpNmTJFr776qlq3bh3v6cBDQ0ODBg4cqDvuuEOSNGDAAH3wwQd64IEHCHbi6KmnntLjjz+uJUuWqF+/ftq0aZOKi4vVtWtX/l7SANtYCMnkyZP1wgsvaOXKlcrPz4/3dNLexo0btXfvXp155plq2bKlWrZsqTfeeEMLFixQy5Yt5XQ64z3FtJWXl6fTTjvNa6xv37767LPP4jQjSNLMmTM1a9YsjR07Vv3799dVV12lqVOnat68efGeGjzk5uZKkvbs2eM1vmfPHvdzkSDYQVCmaWry5MlatmyZXn/9dfXs2TPeU4KkESNGaPPmzdq0aZP7Z+DAgRo/frw2bdokh8MR7ymmrSFDhviVZ/jwww914oknxmlGkKSDBw+qRQvvrzyHw6GGhoY4zQh2evbsqdzcXK1YscI9VldXp/Xr12vQoEER35dtLAQ1adIkLVmyRM8++6zat2/v3jPNzs5WVlZWnGeXvtq3b++XN9W2bVt17tyZfKo4mzp1qgYPHqw77rhDl19+ud566y0tWrRIixYtivfU0toll1yi22+/Xd27d1e/fv307rvvav78+frlL38Z76mlnQMHDuijjz5y/15VVaVNmzapU6dO6t69u4qLizV37lz17t1bPXv21OzZs9W1a1f3ia2ImEAQkmx/Hn744XhPDT5+9KMfmVOmTIn3NGCa5vPPP2+efvrpZmZmptmnTx9z0aJF8Z5S2qurqzOnTJlidu/e3WzdurV50kknmf/3f/9nHjp0KN5TSzsrV660/V65+uqrTdM0zYaGBnP27NlmTk6OmZmZaY4YMcLctm1bk96TOjsAACClkbMDAABSGsEOAABIaQQ7AAAgpRHsAACAlEawAwAAUhrBDgAASGkEOwAAIKUR7AAAgJRGsAMgJSxfvlwnn3yyHA6HiouL4zqXa665JqzS9rfccou+//3vx2w+QLoj2AHSTKAv4srKShmGoX379jX7nKLhN7/5jcaMGaPq6mrddtttYb++R48eKisri/7EQjBjxgyvxocAootGoACa1eHDh9WqVauo3vPAgQPau3evRo4cqa5du0b13s2hXbt2ateuXbynAaQsVnYABPTMM8+oX79+yszMVI8ePXT33Xd7PW8YhpYvX+411rFjRy1evFiS9Mknn8gwDD355JP60Y9+pNatW+vxxx/Xp59+qksuuUTHHXec2rZtq379+umll14KOI+vv/5aP//5z3XcccepTZs2uvDCC7V9+3ZJ1opU+/btJUnnn3++DMNQZWWl3z1M09Qtt9yi7t27KzMzU127dtUNN9wgSRo2bJg+/fRTTZ06VYZhyDAMSfbbS2VlZerRo4f7d6fTqWnTpqljx47q3LmzSkpK5Nly8NFHH1Xnzp116NAhr/tceumluuqqq2zfx7X69qc//Ul5eXnq3LmzJk2apMOHD7uv2bVrly666CJlZWWpZ8+eWrJkSVxXp4BERrADwNbGjRt1+eWXa+zYsdq8ebNuueUWzZ492x3IhGPWrFmaMmWKtm7dqpEjR2rSpEk6dOiQVq1apc2bN+vOO+8MurJxzTXX6O2339Zzzz2ndevWyTRN/eQnP9Hhw4c1ePBgbdu2TZIVnO3atUuDBw/2u8czzzyje+65R3/5y1+0fft2LV++XP3795ckVVRUKD8/X7feeqt27dqlXbt2hfzZ7r77bi1evFh/+9vftGbNGn311VdatmyZ+/nLLrtMTqdTzz33nHts7969evHFF/XLX/4y4H1XrlypHTt2aOXKlXrkkUe0ePFir//tf/7zn+vzzz9XZWWlnnnmGS1atEh79+4Ned5AOmEbC0hDL7zwgl9w4XQ6vX6fP3++RowYodmzZ0uSTjnlFG3ZskV33XWXrrnmmrDer7i4WEVFRe7fP/vsM40ePdodbJx00kkBX7t9+3Y999xzWrt2rTuIefzxx1VQUKDly5frsssuU5cuXSRJnTp1Um5uru19PvvsM+Xm5qqwsFCtWrVS9+7d9YMf/MD9OofDofbt2wd8fSBlZWW68cYb3Z/vgQce0CuvvOJ+PisrS+PGjdPDDz+syy67TJL02GOPqXv37ho2bFjA+x533HFauHChHA6H+vTpo4suukgrVqzQhAkT9J///EevvfaaNmzYoIEDB0qSHnroIfXu3TusuQPpgpUdIA0NHz5cmzZt8vp56KGHvK7ZunWrhgwZ4jU2ZMgQbd++3S8waozrC9nlhhtu0Ny5czVkyBDdfPPNev/99wO+duvWrWrZsqXOOecc91jnzp116qmnauvWrSHP4bLLLtO3336rk046SRMmTNCyZct05MiRsD6Hr9raWu3atctrbi1btvT7vBMmTNA///lP1dTUSJIWL16sa665xr1dZqdfv35yOBzu3/Py8twrN9u2bVPLli115plnup8/+eSTddxxxzXp8wCpimAHSENt27bVySef7PXTrVu3sO9jGIZXfookr7wSz/fz9Otf/1off/yxrrrqKm3evFkDBw7Un//857DfPxwFBQXatm2bysvLlZWVpYkTJ+q8886zna9LixYtQvp8jRkwYIDOOOMMPfroo9q4caP+/e9/N7o65pvEbRiGGhoawn5vAAQ7AALo27ev1q5d6zW2du1anXLKKe4VhxNOOMErv2X79u06ePBgSPcvKCjQb3/7W1VUVGj69Ol68MEHA87jyJEjWr9+vXvsv//9r7Zt26bTTjstrM+UlZWlSy65RAsWLFBlZaXWrVunzZs3S5IyMjL8VqxOOOEE7d692yvg2bRpk/vP2dnZysvL85rbkSNHtHHjRr/3/vWvf63Fixfr4YcfVmFhoQoKCsKau6dTTz1VR44c0bvvvuse++ijj/T1119HfE8glRHsALA1ffp0rVixQrfddps+/PBDPfLII1q4cKFmzJjhvub888/XwoUL9e677+rtt9/Wb3/725COlRcXF+uVV15RVVWV3nnnHa1cuVJ9+/a1vbZ3794aNWqUJkyYoDVr1ui9997TlVdeqW7dumnUqFEhf57Fixfrr3/9qz744AN9/PHHeuyxx5SVlaUTTzxRklVnZ9WqVaqpqdGXX34pyTql9cUXX6i0tFQ7duzQfffdp3/84x9e950yZYr++Mc/avny5frPf/6jiRMn2tYqGjdunHbu3KkHH3wwaGJyKPr06aPCwkJde+21euutt/Tuu+/q2muvVVZWVtCtMSBdEewAsHXmmWfqqaee0hNPPKHTTz9dc+bM0a233uq1/XL33XeroKBAQ4cO1bhx4zRjxgy1adOm0Xs7nU5NmjRJffv21QUXXKBTTjlF5eXlAa9/+OGHddZZZ+niiy/WoEGDZJqmXnrppbDq9XTs2FEPPvighgwZou9973t67bXX9Pzzz6tz586SpFtvvVWffPKJevXqpRNOOEGStapUXl6u++67T2eccYbeeustr2BPsoLCq666SldffbUGDRqk9u3b62c/+5nf+2dnZ2v06NFq165dWNWVA3n00UeVk5Oj8847Tz/72c80YcIEtW/fXq1bt27yvYFUY5i+G9IAgJgYMWKE+vXrpwULFkT93jt37lRBQYFee+01jRgxIur3B5IZwQ4AxNjXX3+tyspKjRkzRlu2bNGpp57a5Hu+/vrrOnDggPr3769du3appKRENTU1+vDDD6NeoRpIdtTZAYAYGzBggL7++mvdeeedUQl0JOtU2O9//3t9/PHHat++vQYPHqzHH3+cQAewwcoOAABIaSQoAwCAlEawAwAAUhrBDgAASGkEOwAAIKUR7AAAgJRGsAMAAFIawQ4AAEhpBDsAACCl/X9OXRTvxFOFyQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(train.Hours, train.Scores, color=\"blue\")\n", + "plt.plot(train_x, reg.coef_[0][0]*train_x + reg.intercept_[0], \"-r\")\n", + "# y = theta1 x + theta0\n", + "plt.ylabel(\"Scores\")\n", + "plt.xlabel(\"Hours of studying\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "42079719", + "metadata": {}, + "source": [ + "Testing model based on Test data. Measure the R2 and MSE." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "e109f595", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean absolute error: 3.17\n", + "Residual sum of squares (MSE): 0.41\n", + "R2-score: 0.97\n" + ] + } + ], + "source": [ + "test_x = np.asanyarray(test[['Hours']])\n", + "test_y = np.asanyarray(test[['Scores']])\n", + "\n", + "test_y_ = reg.predict(test_x)\n", + "\n", + "print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(test_y_ - test_y)))\n", + "print(\"Residual sum of squares (MSE): %.2f\" % np.mean(test_y_ - test_y)**2)\n", + "print(\"R2-score: %.2f\" % r2_score(test_y_, test_y))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "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.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/regression/simple_linear_regression/simple_regression.md b/regression/simple_linear_regression/simple_regression.md new file mode 100644 index 0000000..030c201 --- /dev/null +++ b/regression/simple_linear_regression/simple_regression.md @@ -0,0 +1,289 @@ +# Simple Regression + +Configure the project. Indeed you create a dataset in csv format. + + +```python +! rm -rf *.csv +! unzip ./dataset/archive.zip +! head -n 1 *.csv | head -n 2 | tail -n 1 > data.csv && for file in *.csv; do (tail -n +2 "$file"; echo) >> data.csv; done && sed -i '/^$/d' data.csv +``` + + Archive: ./dataset/archive.zip + inflating: score.csv + inflating: score_updated.csv + + +Import needed libraries + + +```python +import matplotlib.pyplot as plt +import pandas as pd +import numpy as np +import pylab as pl +from sklearn.model_selection import train_test_split +from sklearn import linear_model +from sklearn.metrics import r2_score + +%matplotlib inline +``` + +Read data from data.csv using pandas and store in data frame structure. Also shuffle data to have uniform distribution. + + +```python +df = pd.read_csv("data.csv") +df.head() +df = df.sample(frac=1.0, random_state=42).reset_index(drop=True) +df.head() +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HoursScores
07.469
13.835
23.530
31.619
45.147
+
+ + + + +```python +# summarize data +df.describe() +``` + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
HoursScores
count121.000000121.000000
mean5.21487653.495868
std2.49918924.988705
min1.00000012.000000
25%3.00000030.000000
50%5.10000054.000000
75%7.40000075.000000
max9.80000099.000000
+
+ + + +Print the histogram chart of data + + +```python +viz = df[["Hours", "Scores"]] +viz.hist() +plt.show() +``` + + + +![png](simple_regression_files/simple_regression_9_0.png) + + + +Print scatter chart of data to recognize the patterns of data. Based on the below chart we must answer to this question "Is Linear Simple Regression good or not?" + + +```python +plt.scatter(df.Hours, df.Scores, color="blue") +plt.ylabel("Scores") +plt.xlabel("Hours of studying") +plt.show() +``` + + + +![png](simple_regression_files/simple_regression_11_0.png) + + + + +```python +# print(df) +train, temp = train_test_split(df, test_size=0.25, random_state=42) +test, evaluate = train_test_split(temp, test_size=0.5, random_state=42) +``` + + +```python +fig = plt.figure() +ax1 = fig.add_subplot() +ax1.scatter(train.Hours, train.Scores, color="blue") +ax1.scatter(test.Hours, test.Scores, color="red") +ax1.scatter(evaluate.Hours, evaluate.Scores, color="green") +plt.ylabel("Scores") +plt.xlabel("Hours of studying") +plt.show() +``` + + + +![png](simple_regression_files/simple_regression_13_0.png) + + + +Find the best fitted line based on distribution of data. + + +```python +reg = linear_model.LinearRegression() +train_x = np.asanyarray(train[['Hours']]) +train_y = np.asanyarray(train[['Scores']]) +reg.fit(train_x, train_y) + +print("Coefficients:\t", reg.coef_) +print("Intercept:\t", reg.intercept_) +``` + + Coefficients: [[9.86801899]] + Intercept: [1.90944816] + + + +```python +plt.scatter(train.Hours, train.Scores, color="blue") +plt.plot(train_x, reg.coef_[0][0]*train_x + reg.intercept_[0], "-r") +# y = theta1 x + theta0 +plt.ylabel("Scores") +plt.xlabel("Hours of studying") +``` + + + + + Text(0.5, 0, 'Hours of studying') + + + + + +![png](simple_regression_files/simple_regression_16_1.png) + + + +Testing model based on Test data. Measure the R2 and MSE. + + +```python +test_x = np.asanyarray(test[['Hours']]) +test_y = np.asanyarray(test[['Scores']]) + +test_y_ = reg.predict(test_x) + +print("Mean absolute error: %.2f" % np.mean(np.absolute(test_y_ - test_y))) +print("Residual sum of squares (MSE): %.2f" % np.mean(test_y_ - test_y)**2) +print("R2-score: %.2f" % r2_score(test_y_, test_y)) +``` + + Mean absolute error: 2.95 + Residual sum of squares (MSE): 1.62 + R2-score: 0.97 + diff --git a/regression/simple_linear_regression/simple_regression_files/simple_regression_11_0.png b/regression/simple_linear_regression/simple_regression_files/simple_regression_11_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0b5cf60e910046db1f8aadca298c720a8667ce GIT binary patch literal 18076 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 KRdM_UJeR#vP3 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 Bcx(Uw literal 0 HcmV?d00001 diff --git a/regression/simple_linear_regression/simple_regression_files/simple_regression_9_0.png b/regression/simple_linear_regression/simple_regression_files/simple_regression_9_0.png new file mode 100644 index 0000000000000000000000000000000000000000..26d9c4b92691c544a6b29a7152eb3e18d9fed309 GIT binary patch literal 12801 zcmdUV2RzmL|Nl|lx+S?yn+6HtTG>=k?h?k`ub?^Aj%MV1MS(iqFcpJwZGhe)5oh8XUKBR$_@}U}d+o7f+ znW}47rNP0$;W-k>Zp1|Gz{%ZB5k8=tD3NK}5?3p>_ukJf@xm(Hy2YJ@miVqLjqIeE zLrh|w=Aw;FP0DCC3bl{`sE7fP!{Q2i;lERuhsb_cL~d( z>Z+xsr9zjPZgVMF6lu9j%P`YzVer%=Sv0(b#hF}Ev-xuGLE5C?;DbfBc%4`S&rHo+ zJ-WiS4i)K_gH>Klql@RbxUQ+CD|h7^*FRXv+z9Y!is3F_{(KEC{P{j+_lxK;k|*ht z4E0n_K`Xj`^row8@qE?lV7P~do?gz|hx@WMvNbISE6Z9%C!W3WIl1DV&bmK3CT9BU z@cUE!K2nCC#*x$Gty)Icg|Xy$&6ml?U$FVSK_-&MV+}2PUz?B&{2HS;#72V!1ieMS=B)$r|6d0_LVxMxX$+6 z99>O5e*Admt5-K-^&A5U&6t$sWoMhdLd9&YyzY+?XV?@UJ$l5+$@w|p@EPazxe}|1 z)&x%i#;nkTXzH`ESnpVYzrQZ-I2Ldvgg%wQw)B!P-Z@gtdGchne`ZJgIH z)2U5T3+uO4#_YG@FxOXfttpl_mUR>7w;7vTI&vVvZO|i5z${dPIc#ONHziDZOC+o9 z`03l>f(GuxKb^^}%Y!3lFb?i5wuz6pYg$>iyQvVuY1bsNRcOXE%B ztLs8g6sa%vY%kP}J1U~LzCMG+ z)KU{KuFY@DDZzt)AsOtu=uBD|GPJ8Er@@m*g#ls(BslTJ6!v$*5zc~(>N0O3~=Kb^dik(^y7HIvs;>x)2pn=~eX$|U3 z3-3AevV41MUC8^Jy}l2ri(cB-TfyS8^^L1HQW|SoI_2f$S=IOX`gWh^ToG;=IbklX+=Cwb zXhOm)174N8%$$Y3f$_G_M%w*rQYe#nnk~Nkr(zgEVq+C!DsVUp)$2UTLgFsdFF4fF z%*jjReHCtbeZ@A}9z;UdIv>j1J9^=r?<(GHx;^FbhHp*vw~-*r)x2kH;%@T?`+TQ6 zIp**c!sgxT>GEOBVxG$x{?shFhtFL3%{yU>=la#FPmn)9qNJG);;sHv=|L>?Bu&4O zmk8j#y8m7I#!?fTV$cch1APW$;fVGW`F+L6NQSnf>|5wH!@gWeKxe_UP}k9+FMR2< zzS7v(c!2C6g>uz~dk^M2)z4MKG6xT@z0_ee3XM({bt3%cO)WoeBOgrr943z>c`WkM z>Z;xLiXA66H&vWaSJ`~|OrhP7lqA&VDct6qogd{!)DV2NOs@3y29YiBmhpb6>Py-% zXw;y<5`9)~LHS*m@juv}j`hug!L2x27t-fvs3jfPPYRmb7vb8A{zpU)MY8}{F@xpeRnwl|$ zHf)|itB8z%S*!ZZn-M$}v-}}U;+pVqI+4u+1vQfvZ<{65)FM2TgEREgk7QTrjuWyH zH2-u`LtTBcW_!Jcv^JAxRr}<4V@pfdGf}5PD2@H6qbXNlV4O+v~JEdespK5-w|(dOLXDkm+4zYL7$qH*9!`;oiMFj`Gv}Qq65Qe*?xWs2x4uDai>Kr% zed8{{+)?ggC2;rSFKT*vjD>9g8caM_W-SJ6OQt?Oe^|D;(%)jZy@pHj$!g8$NDy;r zlvtZgNrPQ|--V}q^0b<|`rWJ7u7&W`<>(YO>UoSupXK6edXb(UpObUmX*5JQ4sJno z^+VDny}I8#wy994q=-dH1Rfpuhw$jtJc|l(eY3B|uSTcPygg~CV%NzizAN=%EL!jw zKX2{gH$C_ZlX5f7%+&^XXuE49_Fr`Nh6OqOIrUnO@rOMEdjoR)k$*<|g>~~=5{z48 z^xFxd#du>hy{O}h0b950{IaJ9m#!|xio);10AgZ`%7id(dapXxzIs!6FWp~ak%g-+qAHLtE zVBJh}vP^D+l8nHIn<-Z`yfzvWOl>OfLYq zVT5UznwsW}c76;bpXM{ZS2yy(+o3ROcBsZMLENny)>m`BXpN)-9z*VerY9T_dE5%f($9=MTNo zmN26_ZigA=&O7!@bnrDcSBfb2+N@5b%D~4=O{8o5$?B-20qa#$cIJmE+scZ7o7Pqr z^5ACo+6)z0#lnUojH#l~2Z=u^cpt7&a~%1wf3CNH-QHtiunM+Vd|#nOO0Ir|B@CGI zt+g4KsnpoLQpC;81;4x^E1VdH;o>f%?{x-nAoZfu4ayqdU6CS!DMGu_Ui z8Uo3?ScQF8VMhFGeCgk7D2x0@5X9(?`2LMq2uA2(W!?TQhH- zjkXe6A$I+;81sD`)~jvVpHARaoi)2YPEUnlZ`UMwC`66oT?1o!1M7#~IXnPs17S+5 zm@m&(UT?!n8v=wo)vuMSmkG2DKHdE7y)R8pP5_$oRtLTE?pvJJ($gE5w7Q^PX%bpe zscKJv-l08fQK~Qzbhj^i6(oK0`)sHr-0s_V;-9>UW^)Z=bGL4 zbwXg-J_!nnj*Vq6>BpPTXl8j2p1#@PH1M=dU%z%uG&js1!!^VfAWy=4zu}or;T}h9 zG}_8!MF(wS%`pj2c|&8+VNz=fj}I}a;&SzO_XEyyZj)SvXDGKu#BMV>GKAHi39CQ) z8b9YMycRU}@@HmRgBq^8y85*vsGwS>vyY_g4&yI0J6RJO=&~nDPbs%C+V!ev!HDP; zFsA2MNq$*AacVGZ)ji@ICc*t6d|$j>^{q2kf`9Id!D91}KLEgSbmTxO`a`Q!2V83i zJjz}Oqy5czmDj3ef3b~aM_Nd^>s(f`P5<7x1=k87$MOk))u~h{Pd?`}yf=2j0ptLV zb_9;aa!F@%pF8&nfaaw3uc(H{@R=p>nV+7^m|VyE6}~KQ^PouLL>l%RUihDG>_1lh zzr68Y)QVk9p7!0Y2q}(Xhk8L}e(z70@)j%$9n-k_iv37YhIc5%7iTIAFA0N>2&flr z6aVM<;lFh?e^g`s*8bg%gRa2?E}QNz$wT%9V4Tg3327W4kc8%gColatVNs8z7eM;c zfo49|(=sr~h2llFZeO`e_MkUWX>OoQ&A2|)h4uWs4|Pbx>bwx96|#(iC479P97s}8G{7tC1nb;#2Rd0VEzDF`Ye^xEi<0-Q2;+!QJ4R>;TlMO*bqsANe|4~H`K*K#_^5Uv$&8y*drNKTvR4J7H+J@u4k;EBBkQcDL= zh<66tfLE$=xLuQ|jbH83et05zc~ zUEEz(=G(%l7=c@`>^w-iiLDerKxERbf%}qG!Xz}G?cz1mi1r}vY-1*c<33VYmD<|c zOBk3Fov_kMdD&cGn!Ps-j;s%DA--b!=a+_)LIsGl^>ze+le(Mv82JF~=e+l_ve(}w6 zaWZ|~NU3!OoT=`L{b?8`fBL@iiMKJMlIV#R!bF)^dn02Dj%Of$_=9I?EV}W2zSpYl z%UcCkfNQ&W?nfy;fnF^BJN+#N+;efX-U{}LCm?#DG0%7JJEVX{RyR<%3G{9SksVm4 zcNKmJTKBwqGd|Ukehq!#zyWn_?TnHkUtP5G7I|VH-WD(If~ejbTOrJ#ce%=6rjaQhaC5ErIcgi5Y~C*=wT$ zLy!Sms9^W2W#_pNdLhnPmpWQ*okE4}WtHt0TzQqM=;ej&t%YgeT`|0dxuE7fzhgnc zD)<933H5@~aEMVP3Dkl;#Rvlcz?FZ&c7WE^+`Y=cqiXQY`0LmFis-h9$hL`W2T7GI zhjSj$>q>l={Q7dGJgmHI&*;=J=gII()VmCi&D_BIV5_eP;)06TnrS#z1kN&tlCs)l zN{!i%w8ymw<YZ zi~GL;%$F0;YfnX;(hwyMVGwD+i9;AgUw7~8O1GC&=l4(zCJ@$yvRUO|t#Vq4aD3-q zIv#Gv2;#1W8ZexX)6gKgxNV8<=k1zn;n$5MjYo#H^E?^-#a&Mye%Y%R>F%DG{lt}E z-W(ejO2tkHN=bbIqZs`H;l-OugfDL&ih->0ez0zI@#E;?Z`N)V_@cyvgHI-z-QioO zfB)9rsY(*vH`1*X$AmgB(~S~ha;A;!sn36jH$5f0pW zRK}qn)rdwPp<=jj-o9+9pzpzhT~(kxl>_o}0ZO>J6kF2?im;&j*V_n*0tOiPUjez2 z^s7ml*9V2 zWp-SnP~eAon=fi`m8Wd%h~)Zg0jOZHzDto%Ah7<|j4Hi{WnacYHsYVB6A1MvOoo zY?yPswzjxo3D{>K1`Qkm)Pkeb^~xG|Z5bD1JmAGWWvaj$N50hy3z#;40w|J)SRm-m z5<5d=bH_>h`Sv^?UUVN@biZ6&fu9fGrx#svx|}x|xA0_*Uik@dkPVY!Q9GB3rl|>4 zn~A77AUtSEfjWY5x)|~;X!0_VZGb!qvcZP@gC=mr&_}#Wz!X?o-&E%P>14yNhW9=Y zzKOFL*9EtOTH6UyCQ=kwpA`%|zzkj6vf4jY4^#wV*a=#7pI5^0%OOMp6v?e&maR(# zW^JyXKXCnp`fG@01?2EFY=@6i6??wbt5dKSt#f_WNmpWrOau<5(s&mh(q$9hwPRl z8``<{xYpzouH1k+{oM+VP$UkE6?T6x-~Y#J{f}hwUzUshW#at((~}LZGJA|21|kT) z8F%0BTSc}g%6hQ!*7g$bb~3S5oHy=AUo6VLjCv;GaQP^^awizV>D@1N<*n#YiU9yj z(+bV;i*UF?p3CMTw0xJTr8n%0);<0PuA~B7dDgn?JFevUj=`9hG$jo=d9l@1#ZH_C zoi2Z;QDQTq(4a_bfC1hG4Pu3N+u9(5j&h*48k}L1yLUU?`+wR!&6KYUKrf}@-uv(C z&8Br7EZRqS1F$H*Er4cJ_vENhL^Dl8BAqcYUyTU_clQSGwO~=7oysi@<_pyAMd>!)&hsShG6dFR&(|vMYf%9eeHf zA+*v=8y}W19bV?};ToZ%E!KV_>?pBzQI#L8RUaUBm-^2t#l1lMvFi1CN;+E94Xqzj z5$^xFl+W588>{Xd42)og*G#C>Z@npwFl;Atf$n;_)0g#|vlTAaCfEeUdJ1ri$o~cV z`rq9{Z{cM8w!9IG8y4yfz*j=H10o>8bWHuYNd&C1_H@13+4cO9WY& zspTKL$r{;B`&hhxaVFQ&7^=hP6qz)g(D$55Rp#AyGH?e9xN~G?6&9+aJ7KrI!g>95 z`z%&VX4XBA(wG;n-Lq*?;oihmYe;bas7vzBtn^-6>1)k&SL^=^{5Hss^=K9AK_7IK$d;8lw$g8h zLsly|MTl8>XLbK-$y4B45Irc};aiVVJh=W2;bLBzKi5oMK1(F4Lz1SlQlboRt0JQx zBzRIGj4{3Jh(iAi{K-0WTbvC6_F!iU!MH#e?N<`O2hply_gLRUkLapPRa4wE2MI1P zWXNatKZ_XRzpPWSjZ2WQ<|)L6#=?PRt9n3^9-sA?=~EPQ9cQgwXnJ$hr0voGS$)x zp<%!*6nMoAVHHreKh=dW$gF^)z2sSSzbQ2}75ySbKCE$q*j1|8N6pT3Re#)f^UCh3t*w0l)+R4~|U{{NY$uI%9fC?9m_Ag#@FxMg$B> zT>`xRw*;$}Gt<&xp zkR9WveBO&)J%%7aht{Ya$poro2~gvH6Id*e;m`otecZ7&O*Cf5KGq%bU4OabHJ>{2 z14JU0U@vXTXnhzL{HU9vSIIHEp3Ep-e8y=sgQH+)bbp3z0?S|;^oL9R)XWkYAQSk{ zF6>a32gM-sHcn}i&=?Gz@V+O<{1BkU2yp9DGhmKj>|Nzd5l5y7Q-J zBjlMQzz{FA=rCeRy#kN2LrEC_0xXX#NEjm0Jjk9#OxZerlg<}S)AWHHuMC9kCa^C( zo>Pe*^#l;Rsdg*`pClUPLr*h?;=G@)C)qSml0M+Q`0mgHHO4RaA4A$rdC@Rii^CxL?pIQ@>br4 z=-(Z0Ph^&5+jzYZ#X3&aXqR_6L!V4Elbg(CM4ZJmgJvp<7}XuLGm06us> z66}bIih5eJUQr_eDMiJDYTGr_rU5pX8GadS@j>|AD4{oy&au}d76S%01~%viB!@?U z;3dECpu6#hTj$uiM4TtXBkoFVe0{GipV9H8!+Ws!cWQM@UX$%V(B0=lVdD< zcX_g%0Iu-?v-MO1BS%;3*4B3gf&YClO&E~%;2HB1-tlroFGAFdG*AHn- z)PuYg+&_20u5$6pZ7gri#%Be7i0K7uTsOW>`thh3!dClsE?qzdl3A2z8UQGZzG_1x zS}28H5DsK#h>J=>umso?A%_|0fR0m25YvFE)D00#C^$_3mc`I4E|4J0f{0c5mj{%~ z15RzVVwxd{mh)1l=qmX7XjYq{YW*2p9xmf%iqW$i+m(5IHt6(wm{^d!Ei!IH7=-J7 zy=9awCS7dZdm7tDvn;ke+p7kFnGiClvj_9}oNVB-N2`kIjEo5#U2H=zEkQcu8Yd9; zuF&xr{RSR9bU|7`cTl6W0Lucz%@FP7(!;%(V9Mu*s=fRJ*fwTLRo+@om!86yCANcs zx+4M+2`%N|(?>y;?!kix+Vzw(Tk8v2w{Bq|1C-g>sSe2s^TA3Fpi@RUDP0Zsckg56 z7{lIP0FUsCmU=YCO@{o~X0R^^C z9}8CT1)DzE4cc>Tcdo;kio4E!0-FpjOa~d7^VRFNpxw{@XjI(_>K?{cI1lIsuyQ!Kxs?#`m*~Bu2!G6k=xO(18E43yRC$sP z^tsNLO-zFY7kD$dujMJ9%<7O|jcw`hUea8@7UHn`lCljgfW|;4vP1GM>P0yAsR)Ry za6akf6?3^-AIe18CmoX~Vg~DJ^3lfUUl9C z;*|u|b_F@6?Rwf21TZ0X+jLiUbY$ew83iGFz-Ut28%}WF++U+1@eK`vn7<(Bg}8k9 z<>6kc17yAiD5Ff^S$tR3E0&fVA&81S`(3xj31A@l~A$Oq!a$*Y{ zrjnv!Af1SP68yS-Q0;M+n2dFkUM!ta|Dr)G-H{nceT6siR5a_^zx~M+&c_tM4`H^T zjUfMk;j(H^9*u$fsqXga<`q?=V7{8|%>^aM>Ic`4@PnB?c znqPWrrKAP}anq*&nvnx?>eA4{AVE~u=kGJ%x|{X-59ZIg=QSM+bTMT&h1j@!Gi000 zVOiM%6lsB7-V6ixOzQ}LU9w*sfKyiP>i^VK`({{5(9bb;!F>W%5~V1oESr1z_JjWi Dn@@IL literal 0 HcmV?d00001