From 447ef9a578582efbc40e7d6af40d0a58a9b5f3ef Mon Sep 17 00:00:00 2001 From: Kyle Date: Sun, 18 Feb 2024 07:44:25 -0500 Subject: [PATCH] Update --- PracticalLab6.ipynb | 3601 +++++++++++++++++++++++++++++++++++++-- docs/PracticalLab6.html | 1099 ++++++++++-- 2 files changed, 4487 insertions(+), 213 deletions(-) diff --git a/PracticalLab6.ipynb b/PracticalLab6.ipynb index fb891eb..06003f9 100644 --- a/PracticalLab6.ipynb +++ b/PracticalLab6.ipynb @@ -11,7 +11,7 @@ }, { "cell_type": "code", - "execution_count": 213, + "execution_count": 62, "metadata": {}, "outputs": [], "source": [ @@ -20,6 +20,7 @@ "import seaborn as sns\n", "from sklearn import datasets\n", "import matplotlib.pyplot as plt\n", + "import plotly.graph_objects as go\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.model_selection import train_test_split\n", "\n", @@ -36,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 214, + "execution_count": 63, "metadata": {}, "outputs": [ { @@ -134,7 +135,7 @@ "4 0 non-virginica " ] }, - "execution_count": 214, + "execution_count": 63, "metadata": {}, "output_type": "execute_result" } @@ -162,7 +163,7 @@ }, { "cell_type": "code", - "execution_count": 215, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -198,7 +199,7 @@ }, { "cell_type": "code", - "execution_count": 216, + "execution_count": 65, "metadata": {}, "outputs": [ { @@ -227,7 +228,7 @@ }, { "cell_type": "code", - "execution_count": 217, + "execution_count": 66, "metadata": {}, "outputs": [ { @@ -510,7 +511,7 @@ " max 1.000000 2.000000" ] }, - "execution_count": 217, + "execution_count": 66, "metadata": {}, "output_type": "execute_result" } @@ -529,7 +530,7 @@ }, { "cell_type": "code", - "execution_count": 218, + "execution_count": 67, "metadata": {}, "outputs": [ { @@ -609,7 +610,7 @@ }, { "cell_type": "code", - "execution_count": 219, + "execution_count": 68, "metadata": {}, "outputs": [ { @@ -642,7 +643,7 @@ }, { "cell_type": "code", - "execution_count": 220, + "execution_count": 69, "metadata": {}, "outputs": [ { @@ -673,7 +674,7 @@ }, { "cell_type": "code", - "execution_count": 221, + "execution_count": 70, "metadata": {}, "outputs": [ { @@ -705,12 +706,12 @@ }, { "cell_type": "code", - "execution_count": 222, + "execution_count": 71, "metadata": {}, "outputs": [ { "data": { - "image/png": "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t2PHjqlz58750QsAAAByYDm4de7cWUuWLMmPXgAAAJADt06Vvvrqq84/V6tWTcOHD9cPP/ygqKgoFSvmer1H//79PdshAAAAJLkZ3F555RWX5aCgIK1YsUIrVqxwWe9wOAhuAAAA+cSt4HbgwIH87gMAAAC5sHyN2+jRo3XmzJlM68+ePavRo0d7pCkAAABkZjm4jRo1SqdOncq0/syZMxo1apRHmgIAAEBmloObMcZl0t1LfvzxR5UqVcojTQEAACAztyfgLVmypBwOhxwOh2rUqOES3tLT03Xq1Ck99thj+dIkAAAALAS3SZMmyRij3r17a9SoUQoNDXW+5+vrq4iICDVq1ChfmgQAAICF4JaQkCBJqlKliho3bpxp/jYAAADkL8vPKo2NjdXZs2d19uxZl/UOh0N+fn7y9eWZfgAAAPnBcnArUaJEljcnXFKxYkX17NlTzz//vIoUsXzvAwAAALJhObjNnDlTzz77rHr27Klbb71VkrR+/Xq9++67eu655/THH39owoQJ8vPz0zPPPOPxhgEAAK5XloPbu+++q4kTJ6pLly7OdR07dlRUVJTefPNNLVu2TJUqVdKYMWMIbgAAAB5k+VzmmjVrFBsbm2l9bGys1q5dK0lq0qSJUlJSrr47AADglhYtWmjAgAHebsOpoPVTWFgObuHh4Xr77bczrX/77bcVHh4uSfrzzz9VsmTJq+8OAABcM+fOnfN2C8iF5eA2YcIEvfLKK6pbt64eeughPfTQQ4qJidGkSZM0ceJESdKGDRt03333ebxZAACQWc+ePbVixQpNnjzZOVn+/v371adPH1WpUkUBAQGKjIzU5MmTM33u7rvv1pgxY1ShQgVFRkZKunh2LSYmRv7+/qpfv74WLlwoh8Oh5ORk52e3b9+utm3bKigoSOXKldODDz6o//73v9n2c/DgwRy/w/Lly+VwOLRs2TLVr19fxYsXV+PGjbVnzx7nNvv371d8fLzKlSunoKAgNWjQQN98841LnYiICL344ovq0aOHgoKCVLlyZX366af6448/FB8fr6CgIEVHR2vjxo0un1u1apWaNm2qgIAAhYeHq3///jp9+rTz/X//+9+qXr26/P39Va5cOXXq1Mntvx9Pshzc7rrrLu3evVtt27bVX3/9pb/++ktt27bV7t271aFDB0lS37599fLLL3u8WQAAkNnkyZPVqFEjPfzwwzpy5IiOHDmiihUrqmLFivr444+1c+dOjRgxQs8884w++ugjl88uW7ZMe/bs0dKlS/X5558rNTXVee365s2b9cILL2jIkCEunzl+/Lhuv/12xcbGauPGjfr666/1+++/O69/z6qfS2flcvPss89q4sSJ2rhxo4oWLarevXs73zt16pTatWunZcuWacuWLbrzzjvVsWPHTJdnvfLKK4qLi9OWLVvUvn17Pfjgg+rRo4ceeOABbd68WVWrVlWPHj1kjJF0MRDeeeed+uc//6mtW7fqww8/1KpVq/T4449LkjZu3Kj+/ftr9OjR2rNnj77++ms1a9bM2l+Sh1i+OUG6OAnvuHHjPN0LAADIg9DQUPn6+qp48eIKCwtzrh81apTzz1WqVNHatWv10UcfudxgGBgYqLfeess5D+sbb7whh8Oh6dOny9/fX7Vq1dIvv/yihx9+2PmZ119/XbGxsRo7dqxz3TvvvKPw8HDt3btXNWrUyLIfd4wZM0bNmzeXJA0dOlTt27fX33//LX9/f9WtW1d169Z1bvvCCy9owYIF+vTTT50hS5LatWunRx99VJI0YsQITZ06VQ0aNFDnzp0lSUOGDFGjRo30+++/KywsTElJSerevbvzmrzq1avr1VdfVfPmzTV16lSlpKQoMDBQHTp0UHBwsCpXrpzl9f7XQp6C2/Hjx7V+/XodPXpUGRkZLu/16NHDI40BAICrM2XKFL3zzjtKSUnR2bNnde7cOcXExLhsExUV5TJ5/p49exQdHS1/f3/nukvTf13y448/6rvvvlNQUFCmfe7fv181atTIc8/R0dHOP5cvX16SdPToUVWqVEmnTp3SyJEj9cUXX+jIkSO6cOGCzp49m+mI2+U1ypUr5/yeV647evSowsLC9OOPP2rr1q2aPXu2cxtjjDIyMnTgwAG1bt1alStX1k033aQ777xTd955p+655x4VL148z98zrywHt88++0zdu3fXqVOnFBIS4jIZr8PhILgBAFAAzJ07V4MGDdLEiRPVqFEjBQcH61//+pfWrVvnsl1gYKDl2qdOnVLHjh310ksvZXrvUtjKq8sfqXkpY1w6SDRo0CAtXbpUEyZMULVq1RQQEKBOnTpluqkiqxo51T116pQeffRR9e/fP1M/lSpVkq+vrzZv3qzly5dryZIlGjFihEaOHKkNGzaoRIkSV/V9rbIc3P7v//5PvXv31tixY72SNAEAQGa+vr5KT093Lq9evVqNGzdWv379nOv279+fa53IyEi9//77SktLk5+fn6SLNx1e7pZbbtEnn3yiiIgIFS2adZS4sh9PWL16tXr27Kl77rlH0sXAldtND+645ZZbtHPnTlWrVi3bbYoWLapWrVqpVatWev7551WiRAl9++23uvfee696/1ZYvjnhl19+Uf/+/T0e2saNGyeHw8GcLwAA5EFERITWrVungwcP6r///a+qV6+ujRs3avHixdq7d6+GDx+eKYBl5f7771dGRoYeeeQR7dq1S4sXL9aECRMk/e9IVWJiov766y9169ZNGzZs0P79+7V48WL16tXLGdau7OfKS6vyonr16po/f76Sk5P1448/Onu9WkOGDNGaNWv0+OOPKzk5Wfv27dOiRYuc1819/vnnevXVV5WcnKxDhw5p1qxZysjIcN6Fey1ZDm5t2rTJdAvt1dqwYYPefPNNl3PSAADAfYMGDZKPj49q1aqlG264QW3atNG9996r++67Tw0bNtSff/7pcvQtOyEhIfrss8+UnJysmJgYPfvssxoxYoQkOa97q1ChglavXq309HTdcccdioqK0oABA1SiRAnnc8qv7McTE/O//PLLKlmypBo3bqyOHTuqTZs2uuWWW666bnR0tFasWKG9e/eqadOmio2N1YgRI1ShQgVJF5/TPn/+fN1+++2qWbOm3njjDX3wwQeqXbv2Ve/bKsunStu3b6+nn35aO3fuVFRUlMs5Y+nidCFWnDp1St27d9f06dP14osvWm0HAABIqlGjhvMJRpfMmDFDM2bMcFmXlJTk/PPMmTOzrNW4cWP9+OOPzuXZs2erWLFiqlSpknPdpaNfVvrJSYsWLZzTc1wSExPjsi4iIkLffvutyzaJiYkuy1mdOr2ybkRERKZ1DRo00JIlS7LsrUmTJlq+fHluX+GasBzcLt0OPHr06EzvORwOy+ezExMT1b59e7Vq1SrX4JaWlqa0tDTncmpqqqV9AQCA3M2aNUs33XSTbrzxRv34448aMmSIunTpooCAAG+3dt2zfKo0IyMj25fV0DZ37lxt3rzZJf3nJCkpSaGhoc6Xu5P5AQAA9/3222964IEHVLNmTT311FPq3Lmzpk2bdlU1H3vsMQUFBWX5euyxxzzUeeGXp3ncLrk0IV5eHD58WE8++aSWLl3qdo1hw4Zp4MCBzuXU1FTCGwAAHjZ48GANHjzYozVHjx6tQYMGZfleSEiIR/dVmFkObunp6Ro7dqzeeOMN/f7779q7d69uuukmDR8+XBEREerTp49bdTZt2qSjR4+6XFSYnp6u77//Xq+//rrS0tLk4+Pj8hk/Pz/nrckAAMA+ypYtq7Jly3q7DduzfKp0zJgxmjlzpsaPH+8y03KdOnX01ltvuV2nZcuW2rZtm5KTk52v+vXrq3v37kpOTs4U2gAAAK53lo+4zZo1S9OmTVPLli1dzknXrVtXu3fvdrtOcHCw6tSp47IuMDBQpUuXzrQeAAAAeZyAN6uZhTMyMnT+/HmPNAUAAIDMLB9xq1WrllauXKnKlSu7rJ83b55iY2OvqpmCMkcKAABAQWQ5uI0YMUIJCQn65ZdflJGRofnz52vPnj2aNWuWPv/88/zoEQAAAMpDcIuPj9dnn32m0aNHKzAwUCNGjNAtt9yizz77TK1bt86PHgEAKLTqPT3rmu5v0796XNP95ReHw6EFCxbo7rvvvqo6LVq0UExMjCZNmuTW9gcPHlSVKlW0ZcsWxcTEXNW+8yJP87g1bdpUS5cu9XQvAAAAbjly5IhKlix51XXmz5+f6fGdOQkPD9eRI0dUpkyZq953XlzVBLwAAADeEBYWluP758+fdyuQlSpVytJ+fXx8ct13fnLrrtKSJUuqVKlSbr0AAEDh0aJFC/Xv31+DBw9WqVKlFBYWppEjRzrfT0lJUXx8vIKCghQSEqIuXbro999/d74/cuRIxcTE6L333lNERIRCQ0PVtWtXnTx5Msv9ZWRkqGLFipo6darL+i1btqhIkSI6dOiQpIunShcuXCjp4ulLh8OhDz/8UM2bN5e/v79mz56tCxcuqH///ipRooRKly6tIUOGKCEhweX0aosWLTRgwADnckREhMaOHavevXsrODhYlSpVcnnc16V9JScnO9ft2LFDHTp0UEhIiIKDg9W0aVPt379fkrRhwwa1bt1aZcqUUWhoqJo3b67Nmzdb+Stw4dYRN3fP+wIAgMLn3Xff1cCBA7Vu3TqtXbtWPXv2VFxcnFq2bOkMbStWrNCFCxeUmJio++67z2WmiP3792vhwoX6/PPPdezYMXXp0kXjxo3TmDFjMu2rSJEi6tatm+bMmaO+ffs618+ePVtxcXGZZrW43NChQzVx4kTFxsbK399fL730kmbPnq0ZM2aoZs2amjx5shYuXKjbbrstx+87ceJEvfDCC3rmmWc0b9489e3bV82bN1dkZGSmbX/55Rc1a9ZMLVq00LfffquQkBCtXr1aFy5ckCSdPHlSCQkJeu2112SM0cSJE9WuXTvt27dPwcHBuf3oM3EruCUkJFguDAAACofo6Gg9//zzkqTq1avr9ddf17JlyyRJ27Zt04EDB5zPDp81a5Zq166tDRs2qEGDBpIuHkWbOXOmM6g8+OCDWrZsWZbBTZK6d++uiRMnKiUlRZUqVVJGRobmzp2r5557Lsc+BwwYoHvvvde5/Nprr2nYsGG65557JEmvv/66vvzyy1y/b7t27dSvXz9J0pAhQ/TKK6/ou+++yzK4TZkyRaGhoZo7d67z1GyNGjWc799+++0u20+bNk0lSpTQihUr1KFDh1x7uZLlCXgBAMD1JTo62mW5fPnyOnr0qHbt2qXw8HBnaJMuzvdaokQJ7dq1y7kuIiLC5ejSpc9LF4+kBQUFOV8rV65UTEyMatasqTlz5kiSVqxYoaNHj6pz58459lm/fn3nn0+cOKHff/9dt956q3Odj4+P6tWrZ+n7OhwOhYWFOfu9UnJyspo2bZrt9XS///67Hn74YVWvXl2hoaEKCQnRqVOnlJKSkmsfWeHmBAAAkKMrQ4nD4VBGRoZHPn/XXXepYcOGzvduvPFGSRePus2ZM0dDhw7VnDlzdOedd6p06dI57icwMNDtnvLa75UCAgJyrJWQkKA///xTkydPVuXKleXn56dGjRrp3LlzeeqNI24AACBPatasqcOHD+vw4cPOdTt37tTx48dVq1Ytt2oEBwerWrVqztelIHT//fdr+/bt2rRpk+bNm6fu3btb6i00NFTlypXThg0bnOvS09Ov6saArERHR2vlypXZPvZz9erV6t+/v9q1a6fatWvLz89P//3vf/O8P4IbAADIk1atWikqKkrdu3fX5s2btX79evXo0UPNmzd3OW2ZFxEREWrcuLH69Omj9PR03XXXXZZrPPHEE0pKStKiRYu0Z88ePfnkkzp27JgcDsdV9Xa5xx9/XKmpqeratas2btyoffv26b333tOePXskXbwm8L333tOuXbu0bt06de/ePdejdDnhVCkAAF5k5ycZOBwOLVq0SE888YSaNWumIkWK6M4779Rrr73mkfrdu3dXv3791KNHjzyFnSFDhui3335Tjx495OPjo0ceeURt2rSRj4+PR/qTpNKlS+vbb7/V008/rebNm8vHx0cxMTGKi4uTJL399tt65JFHdMsttyg8PFxjx47VoEGD8rw/t4Lb5Xdo5Gb+/Pl5bgYAABQsl0/rccml+dMkqVKlSlq0aFG2nx85cqTLvG/Sxbs/L587LTt9+/Z1mRLkcsYY558jIiJcli8pWrSoXnvtNWeQzMjIUM2aNdWlSxfnNld+v4MHD2aqc/mcbVntKzo6WosXL86yz9jYWJfTtZLUqVOnLLd1h1vBLTQ0NM87AAAA8IZDhw5pyZIlat68udLS0vT666/rwIEDuv/++73dWp65FdxmzJiR330AAAB4VJEiRTRz5kwNGjRIxhjVqVNH33zzjWrWrOnt1vKMa9wAAEChFB4ertWrV3u7DY/KU3CbN2+ePvroI6WkpGSah8TTt9kCAADgIsvTgbz66qvq1auXypUrpy1btujWW29V6dKl9fPPP6tt27b50SMAAACUh+D273//W9OmTdNrr70mX19fDR48WEuXLlX//v114sSJ/OgRAAAAykNwS0lJUePGjSVdfMzDyZMnJV18YOwHH3zg2e4AAADgZDm4hYWF6a+//pJ0ce6WH374QZJ04MCBLOdQAQAAgGdYDm633367Pv30U0lSr1699NRTT6l169a67777dM8993i8QQAAAFxk+a7SadOmKSMjQ5KUmJio0qVLa82aNbrrrrv06KOPerxBAAAKs5TRUdd0f5VGbPNYrZEjR2rhwoUuTxbIi+XLl+u2227TsWPHVKJECbc+07NnTx0/ftzlKQ7XA8vBrUiRIipS5H8H6rp27aquXbt6tCkAAFDwDRo0SE888cRV12ncuLGOHDli6UlNkydPvi4v0crTPG7Hjh3T22+/rV27dkmSatWqpV69eqlUqVIebQ4AABRcQUFBCgoKyvb9c+fOydfXN9c6vr6+CgsLs7Tv6/VxnJavcfv+++9VpUoVvfrqqzp27JiOHTumV199VVWqVNH333+fHz0CAAAvmDZtmipUqOC8ROqS+Ph49e7dWyNHjlRMTIxzfc+ePXX33XdrzJgxqlChgiIjIyVJa9asUUxMjPz9/VW/fn0tXLhQDofDeYp1+fLlcjgcOn78uCRp5syZKlGihBYvXqyaNWsqKChId955p44cOZJpX5dkZGRo/Pjxqlatmvz8/FSpUiWNGTPG+f6QIUNUo0YNFS9eXDfddJOGDx+u8+fPe/YHdg1YPuKWmJioLl26aOrUqfLx8ZEkpaenq1+/fkpMTNS2bZ47dw4AALync+fOeuKJJ/Tdd9+pZcuWkqS//vpLX3/9tb788kutXLky02eWLVumkJAQLV26VJKUmpqqjh07ql27dpozZ44OHTqkAQMG5LrvM2fOaMKECXrvvfdUpEgRPfDAAxo0aJBmz56d5fbDhg3T9OnT9corr6hJkyY6cuSIdu/e7Xw/ODhYM2fOVIUKFbRt2zY9/PDDCg4O1uDBg/Pwk/Eey8Htp59+0rx585yhTZJ8fHw0cOBAzZo1y6PNAQAA7ylZsqTatm2rOXPmOIPbvHnzVKZMGd12221ZBrfAwEC99dZbzlOkb7zxhhwOh6ZPny5/f3/VqlVLv/zyix5++OEc933+/Hm98cYbqlq1qiTp8ccf1+jRo7Pc9uTJk5o8ebJef/11JSQkSJKqVq2qJk2aOLd57rnnnH+OiIjQoEGDNHfuXNsFN8unSm+55RbntW2X27Vrl+rWreuRpgAAQMHQvXt3ffLJJ0pLS5MkzZ49W127dnW5UfFyUVFRLte17dmzR9HR0fL393euu/XWW3Pdb/HixZ2hTZLKly+vo0ePZrntrl27lJaW5gyXWfnwww8VFxensLAwBQUF6bnnnlNKSkqufRQ0lo+49e/fX08++aR++ukn/eMf/5Ak/fDDD5oyZYrGjRunrVu3OreNjo72XKcAAOCa69ixo4wx+uKLL9SgQQOtXLlSr7zySrbbBwYGemS/xYoVc1l2OBzZ3kUaEBCQY621a9eqe/fuGjVqlNq0aaPQ0FDNnTtXEydO9Eiv15Ll4NatWzdJyvLQYrdu3Zw/WIfDofT09KvvEAAAeI2/v7/uvfdezZ49Wz/99JMiIyN1yy23uP35yMhIvf/++0pLS5Ofn58kacOGDR7tsXr16goICNCyZcv00EMPZXp/zZo1qly5sp599lnnukOHDnm0h2vFcnA7cOBAfvQBAAAKqO7du6tDhw7asWOHHnjgAUufvf/++/Xss8/qkUce0dChQ5WSkqIJEyZIungUzRP8/f01ZMgQDR48WL6+voqLi9Mff/yhHTt2qE+fPqpevbpSUlI0d+5cNWjQQF988YUWLFjgkX1fa5aDW+XKlfOjDwAArkuefJJBfrn99ttVqlQp7dmzR/fff7+lz4aEhOizzz5T3759FRMTo6ioKI0YMUL333+/y3VvV2v48OEqWrSoRowYoV9//VXly5fXY489Jkm666679NRTT+nxxx9XWlqa2rdvr+HDh2vkyJEe2/+1YvnmBEl67733FBcXpwoVKjgPNU6aNEmLFi3yaHMAAMD7ihQpol9//VXGGN10003O9SNHjnR53NXMmTOzfARV48aN9eOPPyotLU0bN25URkaGihUrpkqVKkmSWrRoIWOM83FXlx5ndbm7777b5Rq3K/dVpEgRPfvsszp48KDOnTunQ4cOadiwYc73x48fr//+9786efKk5s6dqwEDBmTahx1YDm5Tp07VwIED1a5dOx0/ftx5HVuJEiU0adIkT/cHAABsbtasWVq1apUOHDighQsXasiQIerSpUuuNxUgM8vB7bXXXtP06dP17LPPuszlVr9+fSbfBQAAmfz222964IEHVLNmTT311FPq3Lmzpk2b5u22bClPNyfExsZmWu/n56fTp097pCkAAFB4DB482HYT3RZUlo+4ValSxeV89iVff/21atas6YmeAAAAkAXLR9wGDhyoxMRE/f333zLGaP369frggw+UlJSkt956Kz96BAAAgPIQ3B566CEFBAToueee05kzZ3T//ferQoUKmjx5srp27ZofPQIAAEB5CG7SxYn4unfvrjNnzujUqVMqW7asp/sCAADAFSxf43b27FmdOXNG0sUHwJ49e1aTJk3SkiVLLO986tSpio6OVkhIiEJCQtSoUSN99dVXlusAAABcDywHt/j4eM2aNUuSdPz4cd16662aOHGi4uPjNXXqVEu1KlasqHHjxmnTpk3auHGjbr/9dsXHx2vHjh1W2wIAACj0LAe3zZs3q2nTppKkefPmKSwsTIcOHdKsWbP06quvWqrVsWNHtWvXTtWrV1eNGjU0ZswYBQUF6Ycffshy+7S0NKWmprq8AAAArheWg9uZM2cUHBwsSVqyZInuvfdeFSlSRP/4xz+cj7/Ki/T0dM2dO1enT59Wo0aNstwmKSlJoaGhzld4eHie9wcAAGA3loNbtWrVtHDhQh0+fFiLFy/WHXfcIUk6evSoQkJCLDewbds2BQUFyc/PT4899pgWLFigWrVqZbntsGHDdOLECefr8OHDlvcHAABgV5aD24gRIzRo0CBFRESoYcOGzqNjS5YsyfKJCrmJjIxUcnKy1q1bp759+yohIUE7d+7Mcls/Pz/njQyXXgAAANcLy9OBdOrUSU2aNNGRI0dUt25d5/qWLVvqnnvusdyAr6+vqlWrJkmqV6+eNmzYoMmTJ+vNN9+0XAsAAKAwy9M8bmFhYQoLC3NZd+utt3qkoYyMDKWlpXmkFgAAQGGSp+DmKcOGDVPbtm1VqVIlnTx5UnPmzNHy5cu1ePFib7YFAABQIHk1uB09elQ9evTQkSNHFBoaqujoaC1evFitW7f2ZlsAAAAFkleD29tvv+3N3QMAANiK5btKAQAA4B0ENwAAAJsguAEAANgEwQ0AAMAmCG4AAAA2QXADAACwCYIbAACATRDcAAAAbILgBgAAYBMENwAAAJsguAEAANgEwQ0AAMAmCG4AAAA2QXADAACwCYIbAACATRDcAAAAbILgBgAAYBMENwAAAJsguAEAANgEwQ0AAMAmCG4AAAA2QXADAACwCYIbAACATRDcAAAAbILgBgAAYBMENwAAAJsguAEAANgEwQ0AAMAmCG4AAAA2QXADAACwCYIbAACATRDcAAAAbILgBgAAYBMENwAAAJsguAEAANgEwQ0AAMAmCG4AAAA2QXADAACwCYIbAACATRDcAAAAbMKrwS0pKUkNGjRQcHCwypYtq7vvvlt79uzxZksAAAAFlleD24oVK5SYmKgffvhBS5cu1fnz53XHHXfo9OnT3mwLAACgQCrqzZ1//fXXLsszZ85U2bJltWnTJjVr1sxLXQEAABRMXg1uVzpx4oQkqVSpUlm+n5aWprS0NOdyamrqNekLAACgICgwNydkZGRowIABiouLU506dbLcJikpSaGhoc5XeHj4Ne4SAADAewpMcEtMTNT27ds1d+7cbLcZNmyYTpw44XwdPnz4GnYIAADgXQXiVOnjjz+uzz//XN9//70qVqyY7XZ+fn7y8/O7hp0BAAAUHF4NbsYYPfHEE1qwYIGWL1+uKlWqeLMdAACAAs2rwS0xMVFz5szRokWLFBwcrN9++02SFBoaqoCAAG+2BgAAUOB49Rq3qVOn6sSJE2rRooXKly/vfH344YfebAsAAKBA8vqpUgAAALinwNxVCgAAgJwR3AAAAGyC4AYAAGATBDcAAACbILgBAADYBMENAADAJghuAAAANkFwAwAAsAmCGwAAgE0Q3AAAAGyC4AYAAGATBDcAAACbILgBAADYBMENAADAJghuAAAANkFwAwAAsAmCGwAAgE0Q3AAAAGyC4AYAAGATBDcAAACbILgBAADYBMENAADAJghuAAAANkFwAwAAsAmCGwAAgE0Q3AAAAGyC4AYAAGATBDcAAACbILgBAADYBMENAADAJghuAAAANkFwAwAAsAmCGwAAgE0Q3AAAAGyC4AYAAGATBDcAAACbILgBAADYBMENAADAJghuAAAANkFwAwAAsAmCGwAAgE14Nbh9//336tixoypUqCCHw6GFCxd6sx0AAIACzavB7fTp06pbt66mTJnizTYAAABsoag3d962bVu1bdvW7e3T0tKUlpbmXE5NTc2PtgAAAAokW13jlpSUpNDQUOcrPDzc2y0BAABcM7YKbsOGDdOJEyecr8OHD3u7JQAAgGvGq6dKrfLz85Ofn5+32wAAAPAKWx1xAwAAuJ4R3AAAAGzCq6dKT506pZ9++sm5fODAASUnJ6tUqVKqVKmSFzsDAAAoeLwa3DZu3KjbbrvNuTxw4EBJUkJCgmbOnOmlrgAAAAomrwa3Fi1ayBjjzRYAAABsg2vcAAAAbILgBgAAYBMENwAAAJsguAEAANgEwQ0AAMAmCG4AAAA2QXADAACwCYIbAACATRDcAAAAbILgBgAAYBMENwAAAJsguAEAANgEwQ0AAMAmCG4AAAA2QXADAACwCYIbAACATRDcAAAAbILgBgAAYBMENwAAAJsguAEAANgEwQ0AAMAmCG4AAAA2QXADAACwCYIbAACATRDcAAAAbILgBgAAYBMENwAAAJsguAEAANgEwQ0AAMAmCG4AAAA2QXADAACwCYIbAACATRDcAAAAbILgBgAAYBMENwAAAJsguAEAANgEwQ0AAMAmCG4AAAA2QXADAACwCYIbAACATRSI4DZlyhRFRETI399fDRs21Pr1673dEgAAQIHj9eD24YcfauDAgXr++ee1efNm1a1bV23atNHRo0e93RoAAECB4vXg9vLLL+vhhx9Wr169VKtWLb3xxhsqXry43nnnHW+3BgAAUKAU9ebOz507p02bNmnYsGHOdUWKFFGrVq20du3aTNunpaUpLS3NuXzixAlJUmpqqtLTzma7n9TUVEt95VTrZLF0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", + "image/png": "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Dm6dO3fW8uXLc6MXAAAAXINbp0qnTZvm/LlKlSoaMWKEfvjhB0VERKhQIdfrPQYMGODZDgEAACDJzeA2efJkl+XAwECtXr1aq1evdlnvcDgIbgAAALnEreCWmJiY230AAAAgG5avcRszZozOnTuXYf358+c1ZswYjzQFAACAjCwHt9GjR+vMmTMZ1p87d06jR4/2SFMAAADIyHJwM8a4TLqb7scff1Tx4sU90hQAAAAycnsC3mLFisnhcMjhcKhatWou4S01NVVnzpzRk08+mStNAgAAwEJwmzJliowx6tOnj0aPHq2QkBDne76+vgoPD1eDBg1ypUkAAABYCG4xMTGSpEqVKqlhw4YZ5m8DAABA7rL8rNLo6GidP39e58+fd1nvcDjk5+cnX1+e6QcAAJAbLAe3okWLZnpzQrry5curV69eGjlypAoUsHzvAwAAALJgObjNmTNHL7zwgnr16qU777xTkrRp0ya9++67evHFF/XHH39o4sSJ8vPz0/PPP+/xhgEAAG5WloPbu+++q0mTJqlLly7OdR06dFBERITefPNNrVy5UhUqVNDYsWMJbgAAAB5k+Vzm+vXrFR0dnWF9dHS0NmzYIElq3LixkpKSrr87AADglubNm2vgwIHebsMpr/WTX1gObmFhYXr77bczrH/77bcVFhYmSfrzzz9VrFix6+8OAADcMBcuXPB2C8iG5eA2ceJETZ48WXXq1NGjjz6qRx99VFFRUZoyZYomTZokSdq8ebO6du3q8WYBAEBGvXr10urVqzV16lTnZPmHDh1S3759ValSJQUEBKh69eqaOnVqhs/df//9Gjt2rMqVK6fq1atLunx2LSoqSv7+/qpbt66WLFkih8Oh7du3Oz+7a9cutWnTRoGBgSpTpoweeeQR/fe//82yn8OHD1/zO6xatUoOh0MrV65U3bp1VbhwYTVs2FD79+93bnPo0CF17NhRZcqUUWBgoOrVq6dvvvnGpU54eLhefvll9ezZU4GBgapYsaI+/fRT/fHHH+rYsaMCAwMVGRmpLVu2uHxu7dq1atKkiQICAhQWFqYBAwbo7Nmzzvf//e9/q2rVqvL391eZMmXUqVMnt/98PMlycLvvvvu0b98+tWnTRn/99Zf++usvtWnTRvv27VP79u0lSU899ZReffVVjzcLAAAymjp1qho0aKDHHntMx44d07Fj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+/vrlVde0bx58zR79mzVqFFDU6dO1ZIlS3TXXXdd8/tOmjRJL730kp5//nktXLhQTz31lJo1a6bq1atn2PaXX35R06ZN1bx5c3377bcKDg7WunXrdOnSJUnS6dOnFRMTo9dee03GGE2aNElt27bVwYMHFRQUlN2vPgO3gltMTIzlwgAAIH+IjIzUyJEjJUlVq1bV66+/rpUrV0qSdu7cqcTEROezw+fOnatatWpp8+bNqlevnqTLR9HmzJnjDCqPPPKIVq5cmWlwk6QePXpo0qRJSkpKUoUKFZSWlqYFCxboxRdfvGafAwcO1IMPPuhcfu211zR8+HA98MADkqTXX39dX375Zbbft23bturXr58kaejQoZo8ebK+++67TIPb9OnTFRISogULFjhPzVarVs35/t133+2y/cyZM1W0aFGtXr1a7du3z7aXq1megBcAANxcIiMjXZbLli2r48ePa+/evQoLC3OGNunyfK9FixbV3r17nevCw8Ndji6lf166fCQtMDDQ+VqzZo2ioqJUo0YNzZ8/X5K0evVqHT9+XJ07d75mn3Xr1nX+fOrUKf3++++68847net8fHx0xx13WPq+DodDoaGhzn6vtn37djVp0iTL6+l+//13PfbYY6patapCQkIUHBysM2fOKCkpKds+MsPNCQAA4JquDiUOh0NpaWke+fx9992n+vXrO9+75ZZbJF0+6jZ//nwNGzZM8+fP17333qsSJUpccz9FihRxu6ec9nu1gICAa9aKiYnRn3/+qalTp6pixYry8/NTgwYNdOHChRz1xhE3AACQIzVq1NDRo0d19OhR57o9e/bo5MmTqlmzpls1goKCVKVKFecrPQg99NBD2rVrl7Zu3aqFCxeqR48elnoLCQlRmTJltHnzZue61NTU67oxIDORkZFas2ZNlo/9XLdunQYMGKC2bduqVq1a8vPz03//+98c74/gBgAAcqRly5aKiIhQjx49tG3bNm3atEk9e/ZUs2bNXE5b5kR4eLgaNmyovn37KjU1Vffdd5/lGk8//bTi4+O1dOlS7d+/X88884xOnDghh8NxXb1dqX///kpOTla3bt20ZcsWHTx4UO+99572798v6fI1ge+995727t2rjRs3qkePHtkepbsWTpUCAOBFdn6SgcPh0NKlS/X000+radOmKlCggO6991699tprHqnfo0cP9evXTz179sxR2Bk6dKh+++039ezZUz4+Pnr88cfVunVr+fj4eKQ/SSpRooS+/fZbPffcc2rWrJl8fHwUFRWlRo0aSZLefvttPf7447r99tsVFhamcePGafDgwTnen1vB7co7NLKzaNGiHDcDAADyliun9UiXPn+aJFWoUEFLly7N8vOjRo1ymfdNunz355Vzp2XlqaeecpkS5ErGGOfP4eHhLsvpChYsqNdee80ZJNPS0lSjRg116dLFuc3V3+/w4cMZ6lw5Z1tm+4qMjNSyZcsy7TM6OtrldK0kderUKdNt3eFWcAsJCcnxDgAAALzhyJEjWr58uZo1a6aUlBS9/vrrSkxM1EMPPeTt1nLMreA2e/bs3O4DAADAowoUKKA5c+Zo8ODBMsaodu3a+uabb1SjRg1vt5ZjXOMGAADypbCwMK1bt87bbXhUjoLbwoUL9dFHHykpKSnDPCSevs0WAAAAl1meDmTatGnq3bu3ypQpo4SEBN15550qUaKEfv75Z7Vp0yY3egQAAIByENz+/e9/a+bMmXrttdfk6+urIUOGaMWKFRowYIBOnTqVGz0CAABAOQhuSUlJatiwoaTLj3k4ffq0pMsPjP3ggw882x0AAACcLAe30NBQ/fXXX5Iuz93yww8/SJISExMznUMFAAAAnmE5uN1999369NNPJUm9e/fWs88+q1atWqlr16564IEHPN4gAAAALrN8V+nMmTOVlpYmSYqNjVWJEiW0fv163XfffXriiSc83iAAAPlZ0piIG7q/CnE7PVZr1KhRWrJkicuTBXJi1apVuuuuu3TixAkVLVrUrc/06tVLJ0+edHmKw83AcnArUKCAChT434G6bt26qVu3bh5tCgAA5H2DBw/W008/fd11GjZsqGPHjll6UtPUqVNvyku0cjSP24kTJ/T2229r7969kqSaNWuqd+/eKl68uEebAwAAeVdgYKACAwOzfP/ChQvy9fXNto6vr69CQ0Mt7ftmfRyn5Wvcvv/+e1WqVEnTpk3TiRMndOLECU2bNk2VKlXS999/nxs9AgAAL5g5c6bKlSvnvEQqXceOHdWnTx+NGjVKUVFRzvW9evXS/fffr7Fjx6pcuXKqXr26JGn9+vWKioqSv7+/6tatqyVLlsjhcDhPsa5atUoOh0MnT56UJM2ZM0dFixbVsmXLVKNGDQUGBuree+/VsWPHMuwrXVpamiZMmKAqVarIz89PFSpU0NixY53vDx06VNWqVVPhwoV16623asSIEbp48aJnf2E3gOUjbrGxserSpYtmzJghHx8fSVJqaqr69eun2NhY7dzpuXPnAADAezp37qynn35a3333nVq0aCFJ+uuvv/T111/ryy+/1Jo1azJ8ZuXKlQoODtaKFSskScnJyerQoYPatm2r+fPn68iRIxo4cGC2+z537pwmTpyo9957TwUKFNDDDz+swYMHa968eZluP3z4cM2aNUuTJ09W48aNdezYMe3bt8/5flBQkObMmaNy5cpp586deuyxxxQUFKQhQ4bk4DfjPZaD208//aSFCxc6Q5sk+fj4aNCgQZo7d65HmwMAAN5TrFgxtWnTRvPnz3cGt4ULF6pkyZK66667Mg1uRYoU0VtvveU8RfrGG2/I4XBo1qxZ8vf3V82aNfXLL7/oscceu+a+L168qDfeeEOVK1eWJPXv319jxozJdNvTp09r6tSpev311xUTEyNJqly5sho3buzc5sUXX3T+HB4ersGDB2vBggW2C26WT5XefvvtzmvbrrR3717VqVPHI00BAIC8oUePHvrkk0+UkpIiSZo3b566devmcqPilSIiIlyua9u/f78iIyPl7+/vXHfnnXdmu9/ChQs7Q5sklS1bVsePH89027179yolJcUZLjPz4YcfqlGjRgoNDVVgYKBefPFFJSUlZdtHXmP5iNuAAQP0zDPP6KefftI//vEPSdIPP/yg6dOna/z48dqxY4dz28jISM91CgAAbrgOHTrIGKMvvvhC9erV05o1azR58uQsty9SpIhH9luoUCGXZYfDkeVdpAEBAdestWHDBvXo0UOjR49W69atFRISogULFmjSpEke6fVGshzcunfvLkmZHlrs3r278xfrcDiUmpp6/R0CAACv8ff314MPPqh58+bpp59+UvXq1XX77be7/fnq1avr/fffV0pKivz8/CRJmzdv9miPVatWVUBAgFauXKlHH300w/vr169XxYoV9cILLzjXHTlyxKM93CiWg1tiYmJu9AEAAPKoHj16qH379tq9e7cefvhhS5996KGH9MILL+jxxx/XsGHDlJSUpIkTJ0q6fBTNE/z9/TV06FANGTJEvr6+atSokf744w/t3r1bffv2VdWqVZWUlKQFCxaoXr16+uKLL7R48WKP7PtGsxzcKlasmBt9AABwU/Lkkwxyy913363ixYtr//79euihhyx9Njg4WJ999pmeeuopRUVFKSIiQnFxcXrooYdcrnu7XiNGjFDBggUVFxenX3/9VWXLltWTTz4pSbrvvvv07LPPqn///kpJSVG7du00YsQIjRo1ymP7v1Es35wgSe+9954aNWqkcuXKOQ81TpkyRUuXLvVocwAAwPsKFCigX3/9VcYY3Xrrrc71o0aNcnnc1Zw5czJ9BFXDhg31448/KiUlRVu2bFFaWpoKFSqkChUqSJKaN28uY4zzcVfpj7O60v333+9yjdvV+ypQoIBeeOEFHT58WBcuXNCRI0c0fPhw5/sTJkzQf//7X50+fVoLFizQwIEDM+zDDiwHtxkzZmjQoEFq27atTp486byOrWjRopoyZYqn+wMAADY3d+5crV27VomJiVqyZImGDh2qLl26ZHtTATKyHNxee+01zZo1Sy+88ILLXG5169Zl8l0AAJDBb7/9pocfflg1atTQs88+q86dO2vmzJnebsuWcnRzQnR0dIb1fn5+Onv2rEeaAgAA+ceQIUNsN9FtXmX5iFulSpVczmen+/rrr1WjRg1P9AQAAIBMWD7iNmjQIMXGxurvv/+WMUabNm3SBx98oPj4eL311lu50SMAAACUg+D26KOPKiAgQC+++KLOnTunhx56SOXKldPUqVPVrVu33OgRAAAAykFwky5PxNejRw+dO3dOZ86cUenSpT3dFwAAAK5i+Rq38+fP69y5c5IuPwD2/PnzmjJlipYvX2555zNmzFBkZKSCg4MVHBysBg0a6KuvvrJcBwAA4GZgObh17NhRc+fOlSSdPHlSd955pyZNmqSOHTtqxowZlmqVL19e48eP19atW7Vlyxbdfffd6tixo3bv3m21LQAAgHzPcnDbtm2bmjRpIklauHChQkNDdeTIEc2dO1fTpk2zVKtDhw5q27atqlatqmrVqmns2LEKDAzUDz/8kOn2KSkpSk5OdnkBAADcLCwHt3PnzikoKEiStHz5cj344IMqUKCA/vGPfzgff5UTqampWrBggc6ePasGDRpkuk18fLxCQkKcr7CwsBzvDwAAwG4sB7cqVapoyZIlOnr0qJYtW6Z77rlHknT8+HEFBwdbbmDnzp0KDAyUn5+fnnzySS1evFg1a9bMdNvhw4fr1KlTztfRo0ct7w8A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0ZMne8rv/y/Iiz156v9Pdu8pKChIDofD7e2BrDiMMcZbO//11191yy23aP369WrQoIFz/ZAhQ7R69Wpt3LjRZftRo0Zp9OjRN7pNAACuy6lTpxQcHOztNpAPePWIm1XDhw/XoEGDnMtpaWn666+/VKJEiSz/JZOcnKywsDAdPXr0uv+j8VQteqIneqInerq5egoKCsrxvoAreTW4lSxZUj4+Pvr9999d1v/+++8KDQ3NsL2fn5/8/Pxc1hUtWtStfQUHB3vsXzueqkVPN7aOJ2vR042t48la9HRj63iyVn7vCXCHV29O8PX11R133KGVK1c616WlpWnlypUup04BAACQB06VDho0SDExMapbt67uvPNOTZkyRWfPnlXv3r293RoAAECe4vXg1rVrV/3xxx+Ki4vTb7/9pqioKH399dcqU6aMR+r7+flp5MiRGU6xerMWPdETPdETPdETkBNevasUAAAA7vP6BLwAAABwD8ENAADAJghuAAAANkFwAwAAsAlbB7f4+HjVq1dPQUFBKl26tO6//37t378/2899/PHHuu222+Tv76+IiAh9+eWXOao1a9YsNWnSRMWKFVOxYsXUsmVL9evXz3KdRYsWqW7duipatKiKFCmiqKgovffeezn+fukWLFggh8OhmjVrWq4zZ84cORwOl5e/v3+Oezp58qRiY2NVtmxZ+fn5qWTJkqpWrZqlOs2bN8/Qk8PhUPXq1XPU05QpU1S9enUFBAQoLCxMjRo10h133GGpzsWLFzVmzBhVrlxZ/v7+qlOnjr7++mvNmDFDkZGRzsk5GzRooK+++uqatTIbl5Is19q9e7f++c9/Kjw8XA6HQ1OmTMlRnczG96ZNm3JUK6sxnpPfU7r08X3//ffnqKesxnhOerp6fFerVk1ffvml5VpZjfHatWtb7unq8f3ss8/q77//ttxTVmP8auPHj5fD4dDAgQOv2VdW49xKnazGeE56utY4t/rd0l09NgGPMjbWunVrM3v2bLNr1y6zfft207ZtW1OhQgVz5syZLD+zbt064+PjYyZMmGD27NljXnzxRVOoUCHTqFEjy7UeeughM336dJOQkGD27t1revXqZQoWLGheffVVS3W+++47s2jRIrNnzx7z008/mSlTphgfHx9zxx13WO4pXWJiornllltMkyZNTOnSpS3XmT17tgkODjbHjh1z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t96a4zr79u0zkpx/yRiTs3Fw8eJFM2rUKFO5cmXj7+9vwsLCclRn1apVpkaNGsbPz8+UKFHCPPLII+aXX34xffr0MRUrVjS+vr6mVKlSpkWLFi49uzsujTGWayUmJmb6PUJDQy3VyWp8jxw50nJPWY3xnPyernTlX45Wa2U1xnPS09Xje+zYsebSpUs5qpXZGLdaJ7Px3a9fP3PixAnLtbIa45m5OtxYGedW6mQ1xps1a2a51rXGudXvdiWCG3KLw5hMjpsDAAAgz8lX87gBAADkZwQ3AAAAmyC4AQAA2ATBDQAAwCYIbgAAADZBcAMAALAJghsAAIBNENwAAABsguAG2EyvXr10//33e6yew+HQkiVLsnz/8OHDcjgc2r59+zXrNG/e3OUZlO66cOGCqlSpovXr11v+rJV9hIeHa8uWLbm2DwC4EQhuwE3u2LFjatOmjdvbr1q1Sg6HQydPnvTI/t944w1VqlRJDRs29Ei9zPj6+mrw4MEaOnRoru0DAG4EghtwkwsNDZWfn59X9m2M0euvv66+ffvm+r569OihtWvXavfu3bm+LwDILQQ3wIKFCxcqIiJCAQEBKlGihFq2bKmzZ88633/rrbdUo0YN+fv767bbbtO///1v53vppxwXLFighg0byt/fX7Vr19bq1aud26Smpqpv376qVKmSAgICVL16dU2dOtXt/owxKlWqlBYuXOhcFxUVpbJlyzqX165dKz8/P507d05SxlOlmzZtUnR0tPz9/VW3bl0lJCS4fIe77rpLklSsWDE5HA716tXL+X5aWpqGDBmi4sWLKzQ0VKNGjbpmv1u3btWhQ4fUrl07l/X/+c9/1L17dxUvXlxFihRR3bp1tXHjRknSqFGjFBUVpXfeeUcVKlRQYGCg+vXrp9TUVE2YMEGhoaEqXbq0xo4d61KzWLFiatSokRYsWJD9LxIA8qiC3m4AsItjx46pe/fumjBhgh544AGdPn1aa9askTFGkjRv3jzFxcXp9ddfV3R0tBISEvTYY4+pSJEiiomJcdZ57rnnNGXKFNWsWVOvvvqqOnTooMTERJUoUUJpaWkqX768Pv74Y5UoUULr16/X448/rrJly6pLly7Z9uhwONS0aVOtWrVKnTp10okTJ7R3714FBARo3759uu2227R69WrVq1dPhQsXzvD5M2fOqH379mrVqpXef/99JSYm6plnnnG+HxYWpk8++UT//Oc/tX//fgUHBysgIMD5/rvvvqtBgwZp48aN2rBhg3r16qVGjRqpVatWmfa7Zs0aVatWTUFBQS49NGvWTLfccos+/fRThYaGatu2bUpLS3Nuc+jQIX311Vf6+uuvdejQIXXq1Ek///yzqlWrptWrV2v9+vXq06ePWrZsqfr16zs/d+edd2rNmjXZ/h4BIM8yANyydetWI8kcPnw40/crV65s5s+f77LupZdeMg0aNDDGGJOYmGgkmfHjxzvfv3jxoilfvrx55ZVXstxvbGys+ec//+lcjomJMR07dsxy+2nTpplatWoZY4xZsmSJqV+/vunYsaOZMWOGMcaYli1bmueff965vSSzePFiY4wxb775pilRooQ5f/688/0ZM2YYSSYhIcEYY8x3331nJJkTJ0647LdZs2amcePGLuvq1atnhg4dmmWvzzzzjLn77rtd1r355psmKCjI/Pnnn5l+ZuTIkaZw4cImOTnZua5169YmPDzcpKamOtdVr17dxMfHu3x26tSpJjw8PMt+ACCv41Qp4KY6deqoRYsWioiIUOfOnTVr1iydOHFCknT27FkdOnRIffv2VWBgoPP18ssv69ChQy51GjRo4Py5YMGCqlu3rvbu3etcN336dN1xxx0qVaqUAgMDNXPmTCUlJbndZ7NmzbRnzx798ccfWr16tZo3b67mzZtr1apVunjxotavX6/mzZtn+tm9e/cqMjJS/v7+mfabncjISJflsmXL6vjx41luf/78eZd9SdL27dsVHR2t4sWLZ/m58PBwl6N0ZcqUUc2aNVWgQAGXdVfvOyAgwHmKGADsiOAGuMnHx0crVqzQV199pZo1a+q1115T9erVlZiYqDNnzkiSZs2ape3btztfu3bt0g8//OD2PhYsWKDBgwerb9++Wr58ubZv367evXvrwoULbteIiIhQ8eLFtXr1apfgtnr1am3evFkXL17MtTs4CxUq5LLscDhcTnFerWTJks7wm+7KU69W9uPOvv/66y+VKlUq2/oAkFcR3AALHA6HGjVqpNGjRyshIUG+vr5avHixypQpo3Llyunnn39WlSpVXF6VKlVyqXFlkLt06ZK2bt2qGjVqSJLWrVunhg0bql+/foqOjlaVKlUyHLFzp8cmTZpo6dKl2r17txo3bqzIyEilpKTozTffVN26dVWkSJFMP1ujRg3t2LFDf//9d6b9Spen1pAu30hxvaKjo7Vv3z7ndYLS5aN227dv119//XXd9a+2a9cuRUdHe7wuANwoBDfATRs3btS4ceO0ZcsWJSUladGiRfrjjz+coWv06NGKj4/XtGnTdODAAe3cuVOzZ8/Wq6++6lJn+vTpWrx4sfbt26fY2FidOHFCffr0kSRVrVpVW7Zs0bJly3TgwAGNGDFCmzdvttxr8+bN9cEHHygqKkqBgYEqUKCAmjZtqnnz5qlZs2ZZfu6hhx6Sw+HQY489pj179ujLL7/UxIkTXbapWLGiHA6HPv/8c/3xxx/Oo405cdddd+nMmTMuU3R0795doaGhuv/++7Vu3Tr9/PPP+uSTT7Rhw4Yc7yfdmjVrdM8991x3HQDwFoIb4Kbg4GB9//33atu2rapVq6YXX3xRkyZNck5e++ijj+qtt97S7NmzFRERoWbNmmnOnDkZjriNHz9e48ePV506dbR27Vp9+umnKlmypCTpiSee0IMPPqiuXbuqfv36+vPPP9WvXz/LvTZr1kypqaku17I1b948w7qrBQYG6rPPPtPOnTsVHR2tF154Qa+88orLNrfccotGjx6tYcOGqUyZMurfv7/l/tKVKFFCDzzwgObNm+dc5+vrq+XLl6t06dJq27atIiIiNH78ePn4+OR4P5K0YcMGnTp1Sp06dbquOgDgTQ5z5TkKALnm8OHDqlSpkhISEhQVFeXtdvKMHTt2qFWrVjp06JACAwNzbT9du3ZVnTp19Pzzz+faPgAgt3HEDYBXRUZG6pVXXlFiYmKu7ePChQuKiIjQs88+m2v7AIAbgSNuwA3CETcAwPUiuAEAANgEp0oBAABsguAGAABgEwQ3AAAAmyC4AQAA2ATBDQAAwCYIbgAAADZBcAMAALAJghsAAIBN/D+DrYP7x+oX+wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -720,7 +721,7 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAm4AAAHqCAYAAAC9YcJAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABMgElEQVR4nO3de3zP9f//8fvbZgfbbJbTMJvDzAjD8MFHU5FUos8nCTlUOhKSHD7OiklKKimHSNE6fAsfJWlscmwxcmoOYZJzmE0N2+v3h9/eH2872Pu99/bei9v1cnlfLl7P9+v9eD3ebK/uPV8ni2EYhgAAAFDilXJ1AwAAACgYghsAAIBJENwAAABMguAGAABgEgQ3AAAAkyC4AQAAmATBDQAAwCQIbgAAACZBcAMAADAJghsAAIBJuDS4hYaGymKx5Hj179/flW0BAACUSO6u3HhiYqIyMzOtyzt37lT79u3VtWvXAn3eMAxduHBBfn5+slgsRdUmAABAiWApSQ+ZHzx4sJYvX659+/YVKIilpqbK399f58+fV9myZYuhQwAAANdx6YzbtS5duqRPPvlEQ4YMyTO0ZWRkKCMjw7qcmppaXO0BAAC4XIm5OGHJkiU6d+6c+vbtm+c6MTEx8vf3t76Cg4OLr0EAAAAXKzGHSjt06CAPDw/997//zXOd3GbcgoODOVQKAABuCSXiUOnhw4f1ww8/6Kuvvsp3PU9PT3l6ehZTVwAAACVLiThUOn/+fFWsWFH333+/q1sBAAAosVwe3LKysjR//nz16dNH7u4lYgIQAACgRHJ5cPvhhx+UkpKiJ554wtWtAAAAlGgl5uIER3AfNwAAcCtx+YwbAAAACobgBgAAYBIENwAAAJMguAEAAJgEwQ0AAMAkCG4AAAAmQXADAAAwCYIbAACASRDcAAAATIKHgwIAioRhGEpPT7cu+/j4yGKxuLAjwPwIbgCAIpGenq7OnTtbl5cuXSpfX18XdgSYH4dKAQAATILgBgAAYBIENwAAAJMguAEAAJgEwQ0AAMAkCG4AAAAmQXADAAAwCYIbAACASRDcAAAATILgBgAAYBIENwAAAJMguAEAAJgEwQ0AAMAkCG4AAAAmQXADAAAwCYIbAACASRDcAAAATILgBgAAYBIENwAAAJMguAEAAJgEwQ0AAMAkCG4AAAAmQXADAAAwCYIbAACASRDcAAAATILgBgAAYBIENwAAAJMguAEAAJgEwQ0AAMAkCG4AAAAmQXADAAAwCYIbAACASRDcAAAATMLd1Q0AAEoOwzCUnp5uXfbx8ZHFYnFhRwCuRXADABNzdtBKT09X586drctLly6Vr69voXoE4DwENwAwsVslaJXkmcCS3BtuPgQ3AECJV5IDaknuDTcfLk4AAAAwCZcHt6NHj+qxxx7TbbfdJm9vbzVo0EA///yzq9sCAAAocVx6qPTs2bNq3bq17rzzTq1YsUIVKlTQvn37VK5cOVe2BQAAUCK5NLi99tprCg4O1vz5861jNWrUcGFHAAAAJZdLD5UuW7ZMUVFR6tq1qypWrKjGjRtrzpw5rmwJAFBIKRMbKGViA/0+tZXN+O9TWyllYgMXdQXcHFwa3H777TfNmjVLYWFhWrlypZ577jkNHDhQH330Ua7rZ2RkKDU11eYFAABwq3DpodKsrCxFRUVp8uTJkqTGjRtr586dev/999WnT58c68fExGjChAnF3SYAAECJ4NIZt6CgINWrV89mLCIiQikpKbmuP3LkSJ0/f976OnLkSHG0CQAAUCK4dMatdevWSk5Othnbu3evQkJCcl3f09NTnp6exdEaAABAiePSGbcXX3xRmzZt0uTJk7V//34tXrxYs2fPVv/+/V3ZFgAAQInk0hm3Zs2a6euvv9bIkSM1ceJE1ahRQ2+99ZZ69uzpyrYAALih7CtkL16xSKpgHf99aiuVcTdUfewOF3WGm5nLn1X6wAMP6IEHHnB1GwAAACWeyx95BQAAgIIhuAEAAJgEwQ0AAMAkCG4AAAAmQXADAAAwCYIbAACASbj8diAAkH0/rLxwPywAuIrgBgDI92aydSf+4qKuAFyP4AYAxcwwDKWnp1uXfXx8ZLFYXNgRALMguAFAMUtPT1fnzp2ty0uXLpWvr68LOwJgFlycAAAAYBLMuAFAAXB4E0BJQHADgALg8KZr5HfRRBl3gyuOccvhUCkAAIBJMOMGAEAheLsZmtn6lM0yUFQIbgAAFILFIpVxJ6yheBDcAAC3HC42gVkR3AAAtxwuNoFZEdyAWwTPAwUA8+OqUgAAAJNgxg0AUCS42hJwPoIbAJiQGW5My9WWgPNxqBQAAMAkCG4AAAAmQXADAAAwCc5xAwBYcUEBULIR3AAAVlxQAJRsHCoFAAAwCWbcAAC3jPxuo1J34i8u6gooOGbcAAAATILgBgAAYBIcKgWAfHBoDUBJwowbAACASRDcAAAATILgBgAAYBKc4wYAxSS/8+XKuBuqPnaHizor+XiiA3AVwQ0AUOLxRAfgKg6VAgAAmATBDQAAwCQIbgAAACZBcAMAADAJghsAAIBJENwAAABMguAGAABgEgQ3AAAAkyC4AQAAmARPTgDgMMMwlJ6ebl328fGRxWJx2voAAFsENwAOS09PV+fOna3LS5cula+vr9PWBwDY4lApAACASbg0uI0fP14Wi8XmVbduXVe2BAC58nYzNLP1KevL240HngMofi4/VFq/fn398MMP1mV3d5e3BAA5WCxSGXfC2s0iO4hfuwyYgctTkru7uypXruzqNgDYKWViA128YpFUwTr2+9RWKuNuqPrYHa5rDCgAgjjMyuXBbd++fapSpYq8vLzUsmVLxcTEqHr16q5uCwCKDLM9ABzl0uDWokULLViwQOHh4Tp27JgmTJigNm3aaOfOnfLz88uxfkZGhjIyMqzLqampxdkuADgFsz0AHOXS4NaxY0frnxs2bKgWLVooJCREn3/+uZ588skc68fExGjChAnF2SKAEqjpywvzfG/L672LsRMAKF4uP1R6rYCAANWpU0f79+/P9f2RI0dqyJAh1uXU1FQFBwcXV3sAUOJw2BW4tZSo4JaWlqYDBw6oV69eub7v6ekpT0/PYu4KQF4IDa7HYVfg1uLS+7gNHTpUCQkJOnTokDZs2KCHHnpIbm5u6t69uyvbAlBA2aEh+8XTqwCgaLl0xu33339X9+7ddebMGVWoUEH//Oc/tWnTJlWoUOHGHwYAALjFuDS4xcbGunLzAAAApsKzSgEAAEyC4AYAAGASBDcAAACTILgBAACYBMENAADAJAhuAAAAJlGinpwAAMUtv+eeStLXfsXUCAAUADNuAAAAJsGMG4Ailz2rZblySf7XjLcdEyvD3YNZLQAoIGbcAAAATIIZNwD5MgxD6enp1mUfHx9ZeJo8ALgEwQ24yTg7aKWnp6tz587W5aVLl8rX17dQPQIAHENwA24yBC0AuHlxjhsAAIBJENwAAABMguAGAABgEgQ3AAAAkyC4AQAAmATBDQAAwCS4HQiAXPGYKgAoeZhxAwAAMAmCGwAAgElwqBRwEM/wBAAUN4Ib4CAeLQUAKG4OBbfLly/r+PHjunjxoipUqKDAwEBn9wXAAU1fXnjLX0yQMrFBvu9XH7ujmDoBAOcr8DluFy5c0KxZsxQdHa2yZcsqNDRUERERqlChgkJCQvTUU08pMTGxKHsFAAC4pRVoxu3NN9/UpEmTVKtWLXXq1En/+c9/VKVKFXl7e+vPP//Uzp079eOPP+qee+5RixYt9M477ygsLKyoewdgMoZbaZ1v2N1mGQBQcAUKbomJiVq7dq3q16+f6/vNmzfXE088offff1/z58/Xjz/+SHADkJPFIsPdw9VdAIBpFSi4ffrppwUq5unpqWeffbZQDQEoWZglA4CSg6tKAeSPWTIAKDHsDm5///233nnnHa1Zs0YnT55UVlaWzftbt251WnMAAAD4H7uD25NPPqnvv/9eDz/8sJo3b84NRwEAAIqJ3cFt+fLl+vbbb9W6deui6AcAAAB5sPtZpVWrVpWf3y1yJ08AAIASxO7g9sYbb2j48OE6fPhwUfQD3JIMw1BaWpr1ZRiGq1sCAJRAdh8qjYqK0t9//62aNWuqTJkyKl3a9tYAf/75p9OaA24VPPcUAFAQdge37t276+jRo5o8ebIqVarExQkAAADFxO7gtmHDBm3cuFGNGjUqin4AAACQB7vPcatbt67++uuvougFAAAA+bA7uE2ZMkUvvfSS4uPjdebMGaWmptq8AAAAUDTsPlR67733SpLuvvtum3HDMGSxWJSZmemczoASqunLCyVJliuX5H/NeNsxsTLcPbTl9d6uaez/49miAHDzsju4rVmzpij6AOAsPFsUAG5adge36OjoougDAAAAN2B3cJs/f758fX3VtWtXm/EvvvhCFy9eVJ8+fZzWHHCzK+mHXQEAJYvdFyfExMSofPnyOcYrVqyoyZMnO6UpAAAA5GR3cEtJSVGNGjVyjIeEhCglJcUpTQEAACAnu4NbxYoV9csvv+QY3759u2677TanNAUAAICc7A5u3bt318CBA7VmzRplZmYqMzNTq1ev1qBBg/Too48WRY8AAACQAxcnvPLKKzp06JDuvvtuubtf/XhWVpZ69+7NOW4AAABFyO7g5uHhoc8++0yvvvqqtm3bJm9vbzVo0EAhISFF0R8AAAD+P7sPlWYLCwtT165d9cADDzgltE2ZMkUWi0WDBw8udC0AAICbUYGC25QpUwr8YPnNmzfrm2++sauJxMREffDBB2rYsKFdnwMAALiVFCi47d69W9WrV9fzzz+vFStW6NSpU9b3rly5ol9++UXvvfeeWrVqpW7dusnPz6/ADaSlpalnz56aM2eOypUrZ/83AAAAuEUU6By3hQsXavv27Xr33XfVo0cPpaamys3NTZ6enrp48aIkqXHjxurXr5/69u0rLy+vAjfQv39/3X///WrXrp1effXVfNfNyMhQRkaGdTk1NbXA2wFKMh4MDwAoiAJfnNCoUSPNmTNHH3zwgX755RcdPnxYf/31l8qXL6/IyMhcn6ZwI7Gxsdq6dasSExMLtH5MTIwmTJhg93aAEo8HwwMACsDuq0pLlSqlyMhIRUZGFmrDR44c0aBBg7Rq1aoCz9CNHDlSQ4YMsS6npqYqODi4UH0AAACYhd3BzVm2bNmikydPqkmTJtaxzMxMrV27Vu+++64yMjLk5uZm8xlPT095enoWd6sAAAAlgsuC2913360dO3bYjD3++OOqW7euhg8fniO0ASUN56UBAIqby4Kbn5+fbr/9dpsxHx8f3XbbbTnGAWcwDEPp6enWZR8fH1ksFscLcl4aAKCYuSy4AcUtPT1dnTt3ti4vXbpUvr6+LuwIAAD7lKjgFh8f7+oWAAAASiy7g1t6erqmTJmiuLg4nTx5UllZWTbv//bbb05rDnD64U0AAEzM7uDWr18/JSQkqFevXgoKCuI/oihSHN4EAOB/7A5uK1as0DfffKPWrVsXRT8AAADIQ4GeVXqtcuXKKTAwsCh6AQAAQD7sDm6vvPKKxo4da31GKQAAAIpHgQ6VNm7c2OZctv3796tSpUoKDQ1V6dK2Nx3dunWrczsEAACApAIGty5duhRxGwAAALiRAgW3cePGFXUfAAAAuAG7z3GrWbOmzpw5k2P83LlzqlmzplOaAgAAQE52B7dDhw4pMzMzx3hGRoZ+//13pzQFAACAnAp8H7dly5ZZ/7xy5Ur5+/tblzMzMxUXF6caNWo4tzsAAABYFTi4ZV+gYLFY1KdPH5v3SpcurdDQUL3xxhtObQ4AAAD/U+Dglv1M0ho1aigxMVHly5cvsqYAAACQk92PvDp48GBR9AEAAIAbsDu4vf3227mOWywWeXl5qXbt2rrjjjvk5uZW6OYAAADwP3YHt+nTp+vUqVO6ePGiypUrJ0k6e/asypQpI19fX508eVI1a9bUmjVrFBwc7PSGcWto+vJCSZLlyiX5XzPedkysDHcPbXm9t2saA4ASqm3btoqMjNRbb73l6lYklbx+bhZ23w5k8uTJatasmfbt26czZ87ozJkz2rt3r1q0aKEZM2YoJSVFlStX1osvvlgU/QIAgCJy6dIlV7eAG7A7uI0ePVrTp09XrVq1rGO1a9fWtGnTNHLkSFWrVk1Tp07V+vXrndooAADIXd++fZWQkKAZM2bIYrHIYrHowIEDevLJJ1WjRg15e3srPDxcM2bMyPG5Ll26aNKkSapSpYrCw8MlSRs2bFBkZKS8vLwUFRWlJUuWyGKxaNu2bdbP7ty5Ux07dpSvr68qVaqkXr166fTp03n2c+jQoXy/Q3x8vCwWi+Li4hQVFaUyZcqoVatWSk5Otq5z4MABde7cWZUqVZKvr6+aNWumH374waZOaGioXn31VfXu3Vu+vr4KCQnRsmXLdOrUKXXu3Fm+vr5q2LChfv75Z5vPrVu3Tm3atJG3t7eCg4M1cOBApaenW99/7733FBYWJi8vL1WqVEkPP/xwgf99nMnu4Hbs2DFduXIlx/iVK1d0/PhxSVKVKlV04cKFwncHAABuaMaMGWrZsqWeeuopHTt2TMeOHVO1atVUrVo1ffHFF9q9e7fGjh2r//znP/r8889tPhsXF6fk5GStWrVKy5cvV2pqqjp16qQGDRpo69ateuWVVzR8+HCbz5w7d0533XWXGjdurJ9//lnfffedTpw4oUceeSTPfgp6+tSoUaP0xhtv6Oeff5a7u7ueeOIJ63tpaWm67777FBcXp6SkJN17773q1KmTUlJSbGpMnz5drVu3VlJSku6//3716tVLvXv31mOPPaatW7eqVq1a6t27twzDkHQ1EN57773697//rV9++UWfffaZ1q1bpwEDBkiSfv75Zw0cOFATJ05UcnKyvvvuO91xxx32/SM5id3nuN1555165plnNHfuXDVu3FiSlJSUpOeee0533XWXJGnHjh3cjBclStOXF3K+HICblr+/vzw8PFSmTBlVrlzZOj5hwgTrn2vUqKGNGzfq888/twYsSfLx8dHcuXPl4eEhSXr//fdlsVg0Z84ceXl5qV69ejp69Kieeuop62feffddNW7cWJMnT7aOffjhhwoODtbevXtVp06dXPspiEmTJik6OlqSNGLECN1///36+++/5eXlpUaNGqlRo0bWdV955RV9/fXXWrZsmTVkSdJ9992nZ555RpI0duxYzZo1S82aNVPXrl0lScOHD1fLli114sQJVa5cWTExMerZs6cGDx4sSQoLC9Pbb7+t6OhozZo1SykpKfLx8dEDDzwgPz8/hYSEWDNQcbN7xm3evHkKDAxU06ZN5enpKU9PT0VFRSkwMFDz5s2TJPn6+nIzXgAAXGzmzJlq2rSpKlSoIF9fX82ePTvH7FSDBg2soU2SkpOT1bBhQ3l5eVnHmjdvbvOZ7du3a82aNfL19bW+6tatK+nq7FVhNGzY0PrnoKAgSdLJkyclXZ1xGzp0qCIiIhQQECBfX1/t2bMnx3e6tkalSpWs3/P6sey627dv14IFC2y+T4cOHZSVlaWDBw+qffv2CgkJUc2aNdWrVy8tWrRIFy9eLNT3dJTdM26VK1fWqlWr9Ouvv2rv3r2SpPDwcOtxcenqrBwAAHCd2NhYDR06VG+88YZatmwpPz8/vf7669q8ebPNej4+PnbXTktLU6dOnfTaa6/leC87bDmqdOnS1j9bLBZJ/3sIwNChQ7Vq1SpNmzZNtWvXlre3tx5++OEcF1XkViO/umlpaXrmmWc0cODAHP1Ur15dHh4e2rp1q+Lj4/X9999r7NixGj9+vBITExUQEFCo72svu4Nbtrp161rTNQAAcC0PDw9lZmZal9evX69WrVrp+eeft44VZDYsPDxcn3zyiTIyMuTp6SlJSkxMtFmnSZMm+r//+z+FhobK3T33KHF9P86wfv169e3bVw899JCkq4HrRhc9FESTJk20e/du1a5dO8913N3d1a5dO7Vr107jxo1TQECAVq9erX/961+F3r497D5UmpmZqXnz5qlHjx5q166d7rrrLpsXAAAofqGhodq8ebMOHTqk06dPKywsTD///LNWrlypvXv3asyYMTkCWG569OihrKwsPf3009qzZ49WrlypadOmSfrfTFX//v31559/qnv37kpMTNSBAwe0cuVKPf7449awdn0/2bNbhREWFqavvvpK27Zt0/bt2629Ftbw4cO1YcMGDRgwQNu2bdO+ffu0dOlS63lzy5cv19tvv61t27bp8OHDWrhwobKysmyONhYXu4PboEGDNGjQIGVmZur222+3nih4/QmDAACg+AwdOlRubm6qV6+eKlSooA4dOuhf//qXunXrphYtWujMmTM2s295KVu2rP773/9q27ZtioyM1KhRozR27FhJsp73VqVKFa1fv16ZmZm655571KBBAw0ePFgBAQEqVapUrv1cfx6aI958802VK1dOrVq1UqdOndShQwc1adKk0HUbNmyohIQE7d27V23atFHjxo01duxYValSRZIUEBCgr776SnfddZciIiL0/vvv69NPP1X9+vULvW172X2oNDY2Vp9//rnuu+++ougHAAA4oE6dOtq4caPN2Pz58zV//nybsZiYGOufFyxYkGutVq1aafv27dblRYsWqXTp0qpevbp1LHv2y55+8tO2bVvr7TmyRUZG2oyFhoZq9erVNuv079/fZjm3Q6fX1w0NDc0x1qxZM33//fe59vbPf/5T8fHxN/oKxcLu4Obh4ZHvMWAAAGBuCxcuVM2aNVW1alVt375dw4cP1yOPPCJvb29Xt3bLs/tQ6UsvvaQZM2bkSKoAAODmcPz4cT322GOKiIjQiy++qK5du2r27NmFqvnss8/a3G7j2tezzz7rpM5vfnbPuK1bt05r1qzRihUrVL9+fZvLayXlO20KAABKvmHDhmnYsGFOrTlx4kQNHTo01/fKli3r1G3dzOwObgEBAdbLcAEAAAqiYsWKqlixoqvbMD27g9v1JzkCRclwK63zDbvbLAMAcKuy+xw36eoD5X/44Qd98MEH1ofJ//HHH0pLS3Nqc4AsFhnuHtaX/v89hAAAuBXZPeN2+PBh3XvvvUpJSVFGRobat28vPz8/vfbaa8rIyND7779fFH0CAADc8hy6AW9UVJTOnj1rc1nwQw89pLi4OKc2BwAAgP+xe8btxx9/1IYNG+Th4WEzHhoaqqNHjzqtMQAAANiye8YtKysr14fG/v777/Lz83NKUwAAAPmxWCxasmRJoeu0bdtWgwcPLvD6hw4dksVi0bZt2wq9bUfYPeN2zz336K233rLeiM9isSgtLU3jxo3jMVgAANip6csLi3V7W17vXazbKyrHjh1TuXLlCl3nq6++ynFP2vwEBwfr2LFjKl++fKG37Qi7g9sbb7yhDh06qF69evr777/Vo0cP7du3T+XLl9enn35aFD0CAADYqFy5cr7vX758uUCBLDAw0K7turm53XDbRcnuQ6XVqlXT9u3b9Z///EcvvviiGjdurClTpigpKYkb6wEAcJNp27atBg4cqGHDhikwMFCVK1fW+PHjre+npKSoc+fO8vX1VdmyZfXII4/oxIkT1vfHjx+vyMhIffzxxwoNDZW/v78effRR6+3ErpeVlaVq1app1qxZNuNJSUkqVaqUDh8+LMn2UGn24cvPPvtM0dHR8vLy0qJFi3TlyhUNHDhQAQEBuu222zR8+HD16dNHXbp0sfl+1x4qDQ0N1eTJk/XEE0/Iz89P1atXt3ncV26HSnft2qUHHnhAZcuWlZ+fn9q0aaMDBw5IkhITE9W+fXuVL19e/v7+io6O1tatW+35J7Dh0H3c3N3d9dhjj2nq1Kl677331K9fPx48CwDATeqjjz6Sj4+PNm/erKlTp2rixIlatWqVsrKy1LlzZ/35559KSEjQqlWr9Ntvv6lbt242nz9w4ICWLFmi5cuXa/ny5UpISNCUKVNy3VapUqXUvXt3LV682GZ80aJFat26tUJCQvLsc8SIERo0aJD27NmjDh066LXXXtOiRYs0f/58rV+/XqmpqQU6L+6NN95QVFSUkpKS9Pzzz+u5555TcnJyrusePXpUd9xxhzw9PbV69Wpt2bJFTzzxhK5cuSJJunDhgvr06aN169Zp06ZNCgsL03333ZdncL2RAh0qXbZsWYELPvjggw41AgAASqaGDRtq3LhxkqSwsDC9++671luA7dixQwcPHlRwcLAkaeHChapfv74SExPVrFkzSVdn0RYsWGC9iLFXr16Ki4vTpEmTct1ez5499cYbbyglJUXVq1dXVlaWYmNjNXr06Hz7HDx4sP71r39Zl9955x2NHDnS+qjOd999V99+++0Nv+99992n559/XpI0fPhwTZ8+XWvWrFF4eHiOdWfOnCl/f3/FxsZaD83WqVPH+v5dd91ls/7s2bMVEBCghIQEPfDAAzfs5XoFCm7XTinmx2Kx5HrFKQAAMK+GDRvaLAcFBenkyZPas2ePgoODraFNkurVq6eAgADt2bPHGtxCQ0Nt7jyR/Xnp6kzaM888Y31vxYoVatOmjSIiIrR48WKNGDFCCQkJOnnypLp27Zpvn1FRUdY/nz9/XidOnFDz5s2tY25ubmratKmysrIK/H0tFosqV65s7fd627ZtU5s2bfI8n+7EiRMaPXq04uPjdfLkSWVmZurixYtKSUnJt4e8FCi43egLAgCAm9f1ocRisdiVDfL7/IMPPqgWLVpY36tataqkq7Nu2cFt8eLFuvfee3Xbbbflux0fH58C9+Rov9e70aliffr00ZkzZzRjxgyFhITI09NTLVu21KVLlxzqzaFz3AAAACIiInTkyBEdOXLEOrZ7926dO3dO9erVK1ANPz8/1a5d2/rKDkI9evTQzp07tWXLFn355Zfq2bOnXb35+/urUqVKSkxMtI5lZmYW6sKA3DRs2FA//vijLl++nOv769ev18CBA3Xfffepfv368vT01OnTpx3eHsENAAA4pF27dmrQoIF69uyprVu36qefflLv3r0VHR1tc9jSEaGhoWrVqpWefPJJZWZmOnQO/QsvvKCYmBgtXbpUycnJGjRokM6ePSuLxVKo3q41YMAApaam6tFHH9XPP/+sffv26eOPP7ZezBAWFqaPP/5Ye/bs0ebNm9WzZ89CXdBJcAMAAA6xWCxaunSpypUrpzvuuEPt2rVTzZo19dlnnzmlfs+ePbV9+3Y99NBDDoWd4cOHq3v37urdu7datmwpX19fdejQQV5eXk7pT5Juu+02rV69WmlpaYqOjlbTpk01Z84c6+HWefPm6ezZs2rSpIl69eqlgQMHFur2aXbfgBcAADhPSX+SQXx8fI6xa2+pUb16dS1dujTPz48fP97mvm/S1as/C/KYqeeee07PPfdcru8ZhmH9c2hoqM1yNnd3d73zzjt65513JF09Zz8iIkKPPPKIdZ3rv9+hQ4dy1Ln2nm25bathw4ZauXJlrn02btzY5nCtJD388MO5rlsQBDcAAHBTOnz4sL7//ntFR0crIyND7777rg4ePKgePXq4ujWHFSi4paamFrhg2bJlHW4GAADAWUqVKqUFCxZo6NChMgxDt99+u3744QdFRES4ujWHFSi4BQQE3PBEPsMw7L6P26xZszRr1izrtGT9+vU1duxYdezYscA1AAAAchMcHKz169e7ug2nKlBwW7NmTZFsvFq1apoyZYrCwsJkGIY++ugjde7cWUlJSapfv36RbBMAAMCsChTcoqOji2TjnTp1slmeNGmSZs2apU2bNhHcAAAAruPwxQnZj2u4/s6/1z8Wo6AyMzP1xRdfKD09XS1btsx1nYyMDGVkZFiX7Tn3DgAAwOzsDm6nTp3S448/rhUrVuT6vr3PKt2xY4datmypv//+W76+vvr666/zvNtyTEyMJkyYYG/LAAAANwW7b8A7ePBgnTt3Tps3b5a3t7e+++47ffTRRwoLC9OyZcvsbiA8PFzbtm3T5s2b9dxzz6lPnz7avXt3ruuOHDlS58+ft76ufcQGAADAzc7uGbfVq1dr6dKlioqKUqlSpRQSEqL27durbNmyiomJ0f33329XPQ8PD9WuXVuS1LRpUyUmJmrGjBn64IMPcqzr6ekpT09Pe1sGJEmGW2mdb9jdZhkAADOxe8YtPT3d+qiGcuXK6dSpU5KkBg0aOOXBrVlZWTbnsQFOY7HIcPewvuTEZ9UBwK1o/PjxioyMLHSd+Ph4WSwWnTt3rsCf6du3r7p06VLobZuN3TNu4eHhSk5OVmhoqBo1aqQPPvhAoaGhev/99xUUFGRXrZEjR6pjx46qXr26Lly4oMWLFys+Pj7Px0YAAHCzSZnYoFi3V33sDqfVGjp0qF544YVC12nVqpWOHTsmf3//An9mxowZuT7m6mZnd3AbNGiQjh07JkkaN26c7r33Xi1atEgeHh5asGCBXbVOnjyp3r17W/+xsp/11b59e3vbAgAAxczX11e+vr55vn/p0iV5eHjcsI6Hh4cqV65s17btCXk3E7sPlT722GPq27evpKvnpB0+fFiJiYk6cuSIunXrZletefPm6dChQ8rIyNDJkyf1ww8/ENoAACghZs+erSpVqigrK8tmvHPnznriiSdyHCrNPnw5adIkValSReHh4ZKkDRs2KDIyUl5eXoqKitKSJUtksVisD2+//lDpggULFBAQoJUrVyoiIkK+vr669957rRNH124rW1ZWlqZOnaratWvL09NT1atX16RJk6zvDx8+XHXq1FGZMmVUs2ZNjRkzRpcvX3buX1gxsDu4TZw4URcvXrQulylTRk2aNJGPj48mTpzo1OYAAIDrdO3aVWfOnLF5gtKff/6p7777Tj179sz1M3FxcUpOTtaqVau0fPlypaamqlOnTtZz4V955RUNHz78htu+ePGipk2bpo8//lhr165VSkqKhg4dmuf6I0eO1JQpUzRmzBjt3r1bixcvVqVKlazv+/n5acGCBdq9e7dmzJihOXPmaPr06Xb8bZQMdge3CRMmKC0tLcf4xYsXuccaAAA3kXLlyqljx45avHixdezLL79U+fLldeedd+b6GR8fH82dO1f169dX/fr1tXjxYlksFs2ZM0f16tVTx44d9fLLL99w25cvX9b777+vqKgoNWnSRAMGDFBcXFyu6164cEEzZszQ1KlT1adPH9WqVUv//Oc/1a9fP+s6o0ePVqtWrRQaGqpOnTpp6NCh+vzzz+38G3E9u4Nb9sPkr7d9+3YFBgY6pSkAAFAy9OzZU//3f/9nvePDokWL9Oijj6pUqdwjRIMGDWzOa0tOTlbDhg3l5eVlHWvevPkNt1umTBnVqlXLuhwUFKSTJ0/muu6ePXuUkZGhu+++O896n332mVq3bq3KlSvL19dXo0ePVkpKyg37KGkKHNzKlSunwMBAWSwW1alTR4GBgdaXv7+/2rdvr0ceeaQoewUAAMWsU6dOMgxD33zzjY4cOaIff/wxz8Ok0tUZN2coXdr2XpsWiyXPq0i9vb3zrbVx40b17NlT9913n5YvX66kpCSNGjUqx2M7zaDAV5W+9dZbMgxDTzzxhCZMmGBzNYeHh4dCQ0PzfMYoAAAwJy8vL/3rX//SokWLtH//foWHh6tJkyYF/nx4eLg++eQTZWRkWG+in5iY6NQew8LC5O3trbi4OJvDo9k2bNigkJAQjRo1yjp2+PBhp/ZQXAoc3Pr06SNJqlGjhlq3bi13d4efTw8AAEykZ8+eeuCBB7Rr1y499thjdn22R48eGjVqlJ5++mmNGDFCKSkpmjZtmiTleuqVI7y8vDR8+HANGzZMHh4eat26tU6dOqVdu3bpySefVFhYmFJSUhQbG6tmzZrpm2++0ddff+2UbRc3u89xi46O1uHDhzV69Gh1797derx5xYoV2rVrl9MbBAAArnXXXXcpMDBQycnJ6tGjh12fLVu2rP773/9q27ZtioyM1KhRozR27FhJsjnvrbDGjBmjl156SWPHjlVERIS6detmzSgPPvigXnzxRQ0YMECRkZHasGGDxowZ47RtFye7p80SEhLUsWNHtW7dWmvXrtWkSZNUsWJFbd++XfPmzdOXX35ZFH0CAHBTcuaTDIpKqVKl9Mcff+QYHz9+vMaPH29dzutG/K1atdL27duty4sWLVLp0qVVvXp1SVLbtm1tzl/r27ev9Z6x2bp06WKzzvXbKlWqlEaNGmVzOPRaU6dO1dSpU23GBg8enOu6JZndM24jRozQq6++qlWrVtlcNXLXXXdp06ZNTm0OAACY38KFC7Vu3TodPHhQS5Ys0fDhw/XII4/c8KIC5GT3jNuOHTts7ueSrWLFijp9+rRTmgIAADeP48ePa+zYsTp+/LiCgoLUtWtXm6caoODsDm4BAQE6duyYatSoYTOelJSkqlWrOq0xAABwcxg2bJiGDRvm6jZuCnYfKn300Uc1fPhwHT9+XBaLRVlZWVq/fr2GDh2q3r17F0WPAAAAkAPBbfLkyapbt66Cg4OVlpamevXq6Y477lCrVq00evToougRAAAAcuBQqYeHh+bMmaMxY8Zo586dSktLU+PGjRUWFlYU/QEAAOD/c/guutWrV1dwcLAk591ADwAAAHmz+1CpJM2bN0+33367vLy85OXlpdtvv11z5851dm8AAAC4ht0zbmPHjtWbb76pF154wfps0o0bN+rFF19USkqKJk6c6PQmAQAA4EBwmzVrlubMmaPu3btbxx588EE1bNhQL7zwAsENAACgiNh9qPTy5cuKiorKMd60aVNduXLFKU0BAAAgJ7uDW69evTRr1qwc47Nnz1bPnj2d0hQAAABycuiq0nnz5un777/XP/7xD0nS5s2blZKSot69e2vIkCHW9d58803ndAkAAAD7g9vOnTvVpEkTSdKBAwckSeXLl1f58uW1c+dO63rcIgQAAMC57A5ua9asKYo+AAAAcAMO3ccNAAAAxY/gBgAAYBIENwAAAJMguAEAAJgEwQ0AAMAkCG4AAAAmQXADAAAwCYIbAACASRDcAAAATILgBgAAYBIENwAAAJMguAEAAJgEwQ0AAMAkCG4AAAAmQXADAAAwCYIbAACASRDcAAAATILgBgAAYBIENwAAAJMguAEAAJgEwQ0AAMAkCG4AAAAmQXADAAAwCYIbAACASRDcAAAATILgBgAAYBIuDW4xMTFq1qyZ/Pz8VLFiRXXp0kXJycmubAkAAKDEcmlwS0hIUP/+/bVp0yatWrVKly9f1j333KP09HRXtgUAAFAiubty4999953N8oIFC1SxYkVt2bJFd9xxh4u6AgAAKJlcGtyud/78eUlSYGBgru9nZGQoIyPDupyamlosfQEAAJQEJebihKysLA0ePFitW7fW7bffnus6MTEx8vf3t76Cg4OLuUsAAADXKTHBrX///tq5c6diY2PzXGfkyJE6f/689XXkyJFi7BAAAMC1SsSh0gEDBmj58uVau3atqlWrlud6np6e8vT0LMbOAAAASg6XBjfDMPTCCy/o66+/Vnx8vGrUqOHKdgAAAEo0lwa3/v37a/HixVq6dKn8/Px0/Phx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1ltvOVxrzpw5atOmjcqVK6dy5cqpXbt2NuvbU+urr75SVFSUAgIC5OPjo8jISH388ccO93at2NhYWSwW642O7a21YMECWSwWm5eXl5fDfZ07d079+/dXUFCQPD09VadOHX377bdau3atOnXqpCpVqshisWjJkiU3/G7x8fFq0qSJPD09Vbt2bS1YsMD6nr31jh07ph49eqhOnToqVaqUBg8e7HCtr776Su3bt1eFChVUtmxZtWzZUitXrnSo1rp169S6dWvddttt8vb2Vt26dTV9+nSHe7vW+vXr5e7ursjISIdqxcfH5/jZsFgsOn78uEN9ZWRkaNSoUQoJCZGnp6dCQ0P14YcfOtRb3759c+2tfv36DvW2aNEiNWrUSGXKlFFQUJCeeOIJnTlzxqHepKu/NxEREfL29lZ4eLgWLlyomJgYNWvWTH5+fqpYsaK6dOmi5OTkG9b64osvVLduXXl5ealBgwb69ttvJcmhenntIx2pldc+0pFa+e0jHf17y3btPtKRWjfaRwLOclMEt88++0xDhgzRuHHjtHXrVjVq1EgdOnTQyZMnc13/4sWLqlmzpqZMmZLj0Vr21oqPj1f37t21Zs0abdy4UcHBwbrnnnt09OhRu2sFBgZq1KhR2rhxo3755Rc9/vjjevzxx63/sbe3XrZDhw5p6NChatOmjcPfU7p6h/Bjx45ZX4cPH3ao1qVLl9S+fXsdOnRIX375pZKTkzVnzhxVrVpV6enpatSokWbOnJnvd8p28OBB3X///brzzju1bds2DR48WP369bP+ndlbLyMjQxUqVNDo0aPVqFEjm/fsrbV27Vq1b99e3377rbZs2aI777xTnTp1UlJSkt21fHx8NGDAAK1du1Z79uzR6NGjNXr0aM2ePduh3rKdO3dOvXv31t133+3w98yWnJxs8/NRsWJFh2o98sgjiouL07x585ScnKxPP/1U4eHhDvU2Y8YMm56OHDmiwMBAde3a1e5a69evV+/evfXkk09q165d+uKLL/TTTz/pqaeecqi3WbNmaeTIkRo/frx27dqlCRMmqH///vriiy/Uv39/bdq0SatWrdLly5d1zz33KD09Pc9aGzZsUPfu3fXkk08qKSlJXbp0UZcuXbRz504lJCTYXS+vfaQjtfLaR65cudLuWvntIx3pLdv1+0hHa+W1jwScyrgJNG/e3Ojf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wa2g9fLbR7q7uys5OVnTp093+O8sex+5f/9+uz4H3Ijpz3Hz8PBQ06ZNFRcXZx3LyspSXFyczf/9FGWtqVOn6pVXXtF3332nqKgop/aVlZWljIwMu+vVrVtXO3bs0LZt26yvBx98UHfeeae2b9+uJk2aFKq3zMxM7dixQ9WqVbP7e7Zu3Vr79++37iQlae/evQoKCrL7P6otW7a02bYkrVq1yu5/+6Ly6aef6vHHH9enn36q+++/36m1s3827FW2bNkcPxvPPvuswsPDtW3bNrVo0aLQvW3bts3uICNd/dn4448/lJaWZh3bu3evSpUqVaiwkZCQoP379+d7HtONXLx40ToTli37fz6MQjzyuXTp0qpWrZrc3NwUGxur+++/XwMHDtTXX3+t1atXW8N6fvL7PTAMQwMGDLCrXl4crZXbPtJZfWX/HthbL799ZFJSkqZNm1ao3rL3kY78HgD5cs01Ec4VGxtreHp6GgsWLDB2795tPP3000ZAQIBx/PhxwzAMo1evXsaIESOs62dkZBhJSUlGUlKSERQUZAwdOtRISkoy9u3bZ3etKVOmGB4eHsaXX35pHDt2zPq6cOGC3bUmT55sfP/998aBAweM3bt3G9OmTTPc3d2NOXPmOPQ9r3ftFVP21powYYKxcuVK48CBA8aWLVuMRx991PDy8jJ27dpld62UlBTDz8/PGDBggJGcnGwsX77cqFixovHqq68aFy5csP7bSDLefPNNIykpyTh8+LBhGIYxYsQIo1evXtZav/32m1GmTBnj5ZdfNvbs2WPMnDnTcHNzM7777jvDMAy76xmGYV2/adOmRo8ePYykpCRj165ddtdatGiR4e7ubsycOdPmZ+PcuXN213r33XeNZcuWGXv37jX27t1rzJ071/Dz8zNGjRrl8Pe81rVXldpba/r06caSJUuMffv2GTt27DAGDRpklCpVyvjhhx/srnXhwgWjWrVqxsMPP2zs2rXLSEhIMMLCwox+/foV6ns+9thjRosWLWzG7K01f/58w93d3XjvvfeMAwcOGOvWrTOioqKM5s2bO1QvOTnZ+Pjjj429e/camzdvNrp162YEBgYajz32mOHv72/Ex8fb/NxcvHjR+tnrf6fWr19vuLu7G9OmTTP27NljjBs3zihdurSxY8cO47nnnrO7Xl77yB49ethdK699ZL9+/eyuld8+0pHveb3sfaQjtfLbRwLOdFMEN8MwjHfeeceoXr264eHhYTRv3tzYtGmT9b3o6GijT58+1uWDBw8aknK8oqOj7a4VEhKSa61x48bZXWvUqFFG7dq1DS8vL6NcuXJGy5YtjdjYWIe/5/Wuv9TdnlqDBw+2rlupUiXjvvvuM7Zu3epwXxs2bDBatGhheHp6GjVr1jQmTZpkXLlyxXprietf2Z/v06eP9d8p25o1a4zIyEjDw8PDqFmzpjF//nyb9+ytl9v6ISEhdteKjo7Oc317a7399ttG/fr1jTJlyhhly5Y1GjdubLz33ntGZmamw9/zWtcGN3trvfbaa0atWrUMLy8vIzAw0Gjbtq2xevVqh/vas2eP0a5dO8Pb29uoVq2aMWTIEOt/MB2pd+7cOcPb29uYPXu2zbgjtd5++22jXr16hre3txEUFGT07NnT+P333x2qt3v3biMyMtLw9vY2ypYta3Tu3Nn49ddfc60hyebnOrffqc8//9yoU6eO4eHhYdSvX9/45ptvDMPI/ef5RvXy2kc6UiuvfaQjtfLbRzr693at7H2kI7VutI8EnMViGIWY4wcAAECxMf05bgAAALcKghsAAIBJENwAAABMguAGAABgEgQ3AAAAkyC4AQAAmATBDQAAwCQIboCJxMfHy2Kx6Ny5c06p17dv3xs+dL1t27YaPHhwvussWLBAAQEBDvUwZswYPf300w59tqBGjBihF154oUi3AQDFgeAGuEBhgo4zzZgxQwsWLLDrM6GhoXrrrbecsv3jx49rxowZGjVqlFPq5WXo0KH66KOP9NtvvxXpdgCgqBHcgFuYv7+/SwPk3Llz1apVK4WEhBTpdsqXL68OHTpo1qxZRbodAChqBDfATm3bttWAAQM0YMAA+fv7q3z58hozZoyufXpcRkaGhg4dqqpVq8rHx0ctWrRQfHy8pKuHOx9//HGdP39eFotFFotF48ePlyR9/PHHioqKkp+fnypXrqwePXro5MmTBe5t6NCheuCBB6zLb731liwWi7777jvrWO3atTV37lxJOQ+Vpqenq3fv3vL19VVQUJDeeOONHN/98OHDevHFF629X2vlypWKiIiQr6+v7r33Xh07dizffmNjY9WpUyebsaysLE2dOlW1a9eWp6enqlevrkmTJkmSDh06JIvFos8//1xt2rSRt7e3mjVrpr179yoxMVFRUVHy9fVVx44dderUKZu6nTp1Umxs7A3+BgGgZCO4AQ746KOP5O7urp9++kkzZszQm2++aQ1DkjRgwABt3LhRsbGx+uWXX9S1a1fde++92rdvn1q1aqW33npLZcuW1bFjx3Ts2DENHTpUknT58mW98sor2r59u5YsWaJDhw6pb9++Be4rOjpa69atU2ZmpiQpISFB5cuXt4bGo0eP6sCBA2rbtm2un3/55ZeVkJCgpUuX6vvvv1d8fLy2bt1qff+rr75StWrVNHHiRGvv2S5evKhp06bp448/1tq1a5WSkmL9Xrn5888/tXv3bkVFRdmMjxw5UlOmTNGYMWO0e/duLV68WJUqVbJZZ9y4cRo9erS2bt0qd3d39ejRQ8OGDdOMGTP0448/av/+/Ro7dqzNZ5o3b67ff/9dhw4dutFfIwCUXC5+yD1gOtHR0UZERISRlZVlHRs+fLgRERFhGIZhHD582HBzczOOHj1q87m7777bGDlypGEYhjF//nzD39//httKTEw0JBkXLlwwDMMw1qxZY0gyzp49m+v6Z8+eNUqVKmUkJiYaWVlZRmBgoBETE2O0aNHCMAzD+OSTT4yqVata1+/Tp4/RuXNnwzAM48KFC4aHh4fx+eefW98/c+aM4e3tbQwaNMg6FhISYkyfPt1mu/PnzzckGfv377eOzZw506hUqVKe3y0pKcmQZKSkpFjHUlNTDU9PT2POnDm5fubgwYOGJGPu3LnWsU8//dSQZMTFxVnHYmJijPDwcJvPnj9/3pBkxMfH59kTAJR0zLgBDvjHP/5hc5iwZcuW2rdvnzIzM7Vjxw5lZmaqTp068vX1tb4SEhJ04MCBfOtu2bJFnTp1UvXq1eXn56fo6GhJUkpKSoH6CggIUKNGjRQfH68dO3bIw8NDTz/9tJKSkpSWlqaEhARrzesdOHBAly5dUosWLaxjgYGBCg8PL9C2y5Qpo1q1almXg4KC8j3M+9dff0mSvLy8rGN79uxRRkaG7r777ny31bBhQ+ufs2fjGjRoYDN2/ba9vb0lXZ0ZBACzcnd1A8DNJi0tTW5ubtqyZYvc3Nxs3vP19c3zc+np6erQoYM6dOigRYsWqUKFCkpJSVGHDh106dKlAm+/bdu2io+Pl6enp6KjoxUYGKiIiAitW7dOCQkJeumllxz+bvkpXbq0zbLFYrE57+965cuXlySdPXtWFSpUkPS/cGXPtrID9PVjWVlZNp/5888/Jcm6LQAwI2bcAAds3rzZZnnTpk0KCwuTm5ubGjdurMzMTJ08eVK1a9e2eVWuXFmS5OHhYT0PLduvv/6qM2fOaMqUKWrTpo3q1q1r14UJ2bLPc4uLi7Oey9a2bVt9+umn2rt3b57nt9WqVUulS5e2+W5nz57V3r17bdbLrXdH1KpVS2XLltXu3butY2FhYfL29lZcXFyh619v586dKl26tOrXr+/02gBQXAhugANSUlI0ZMgQJScn69NPP9U777yjQYMGSZLq1Kmjnj17qnfv3vrqq6908OBB/fTTT4qJidE333wj6eq90NLS0hQXF6fTp0/r4sWLql69ujw8PPTOO+/ot99+07Jly/TKK6/Y3dsdd9yhCxcuaPny5TbBbdGiRQoKClKdOnVy/Zyvr6+efPJJvfzyy1q9erV27typvn37qlQp291EaGio1q5dq6NHj+r06dN295etVKlSateundatW2cd8/Ly0vDhwzVs2DAtXLhQBw4c0KZNmzRv3jyHt5Ptxx9/tF6JCgBmRXADHNC7d2/99ddfat68ufr3769BgwbZ3P1//vz56t27t1566SWFh4erS5cuSkxMVPXq1SVJrVq10rPPPqtu3bqpQoUKmjp1qipUqKAFCxboiy++UL169TRlyhRNmzbN7t7KlSunBg0aqEKFCqpbt66kq2EuKysrz/Pbsr3++utq06aNOnXqpHbt2umf//ynmjZtarPOxIkTdejQIdWqVavQhx379eun2NhYm8OaY8aM0UsvvaSxY8cqIiJC3bp1c2jm8XqxsbF66qmnCl0HAFzJYuR3EgqAHNq2bavIyEinPT3gVmYYhlq0aKEXX3xR3bt3L7LtrFixQi+99JJ++eUXubtzai8A82LGDYDLWCwWzZ49W1euXCnS7aSnp2v+/PmENgCmx14MgEtFRkYqMjKySLfx8MMPF2l9ACguHCoFAAAwCQ6VAgAAmATBDQAAwCQIbgAAACZBcAMAADAJghsAAIBJENwAAABMguAGAABgEgQ3AAAAkyC4AQAAmMT/A17mHashqAxdAAAAAElFTkSuQmCC", + "image/png": "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CgoMDHR2XwAc0OyVBbf8xQQpExrm+371MTuKqRMAcL4Cn+N24cIFzZw5U1FRUfLz81NoaKjq1aunChUqKCQkRE8//bQSExOLslcAAIBbWoFm3N566y1NnDhRtWrVUufOnfWf//xHVapUkbe3t/7880/t3LlTP/74o+655x61bNlS7777rsLCwoq6dwAmY7iV1vlGPWyWAQAFV6DglpiYqLVr16pBgwa5vt+iRQs98cQT+uCDDzRv3jz9+OOPBDcAOVksMtw9XN0FAJhWgYLbZ599VqBinp6eeu655wrVEICShVkyACg5uKoUQP6YJQOAEsPu4Pb333/r3Xff1Zo1a3Ty5EllZWXZvL9161anNQcAAID/sTu4Pfnkk/rhhx/08MMPq0WLFtxwFAAAoJjYHdyWLVum7777Tm3atCmKfgAAAJAHu4Nb1apV5et7i9zJEygmPD4LAFAQdj9k/s0339SwYcN0+PDhougHuCVlPz4r+3VtiAMAIJvdM26RkZH6+++/VbNmTZUpU0alS9veGuDPP/90WnMAAAD4H7uDW48ePXT06FFNmjRJlSpV4nAOAABAMbE7uG3YsEEbN25U48aNi6IfAAAA5MHuc9zq1q2rv/76qyh6AQAAQD7snnGbPHmyXn75ZU2cOFENGzbMcY6bn5+f05oDYD8eUQUANy+7g9u9994rSbr77rttxg3DkMViUWZmpnM6A0qoZq8skCRZrlyS/zXj7UbHynD30JY3+rimsWw8ogoAblp2B7c1a9YURR8AAAC4AbuDW1RUVFH0AQAAgBuwO7jNmzdPPj4+6tatm834l19+qYsXL6pv375Oaw642ZX4w64AgBLF7qtKY2JiVL58+RzjFStW1KRJk5zSFAAAAHKyO7ilpKSoRo0aOcZDQkKUkpLilKYAAACQk93BrWLFivrll19yjG/fvl233XabU5oCAABATnYHtx49emjgwIFas2aNMjMzlZmZqdWrV2vQoEF69NFHi6JHAAAAyIGLE1599VUdOnRId999t9zdr348KytLffr04Rw3AACAImR3cPPw8NDnn3+u1157Tdu2bZO3t7caNmyokJCQougPAAAA/5/dh0qzhYWFqVu3bnrggQecEtomT54si8WiwYMHF7oWAADAzahAwW3y5MkFfrD85s2b9e2339rVRGJioj788EM1atTIrs8BAADcSgoU3Hbv3q3q1avrhRde0PLly3Xq1Cnre1euXNEvv/yi999/X61bt1b37t3l6+tb4AbS0tLUq1cvzZ49W+XKlbP/GwAAANwiChTcFixYoFWrVuny5cvq2bOnKleuLA8PD/n6+srT01NNmjTRRx99pD59+ujXX3/VHXfcUeAG+vfvr/vvv1/t27e/4boZGRlKTU21eQEAANwqCnxxQuPGjTV79mx9+OGH+uWXX3T48GH99ddfKl++vCIiInJ9msKNxMbGauvWrUpMTCzQ+jExMRo/frzd2wFKOsOttM436mGzDADA9ey+qrRUqVKKiIhQREREoTZ85MgRDRo0SCtXrpSXl1eBPjNixAgNGTLEupyamqrg4OBC9QGUCBaLDHcPV3cBACjh7A5uzrJlyxadPHlSTZs2tY5lZmZq7dq1eu+995SRkSE3Nzebz3h6esrT07O4WwVyxSwZAKC4uSy43X333dqxY4fN2OOPP666detq2LBhOUIbUOIwSwYAKGYuC26+vr66/fbbbcbKli2r2267Lcc44AyGYSg9Pd26XLZsWVksFhd2BACAfVwW3IDilp6eri5duliXlyxZIh8fHxd2BACAfUpUcIuPj3d1CwAAACWW3cEtPT1dkydPVlxcnE6ePKmsrCyb93/77TenNQdweBMAgP+xO7g99dRTSkhIUO/evRUUFMR/RFGkOLwJAMD/2B3cli9frm+//VZt2rQpin4AAACQhwI98upa5cqVU2BgYFH0AgAAgHzYHdxeffVVjRkzRhcvXiyKfgAAAJCHAh0qbdKkic25bPv371elSpUUGhqq0qVt7xa/detW53YIAAAASQUMbl27di3iNgAAAHAjBQpuY8eOLeo+AAAAcAN2n+NWs2ZNnTlzJsf4uXPnVLNmTac0BQAAgJzsDm6HDh1SZmZmjvGMjAz9/vvvTmkKAAAAORX4Pm5Lly61/nnFihXy9/e3LmdmZiouLk41atRwbncAAACwKnBwy75AwWKxqG/fvjbvlS5dWqGhoXrzzTed2hwAAAD+p8DBLfuZpDVq1FBiYqLKly9fZE0BAAAgJ7sfeXXw4MGi6AMAAAA3YHdwe+edd3Idt1gs8vLyUu3atXXHHXfIzc2t0M0BAADgf+wObtOmTdOpU6d08eJFlStXTpJ09uxZlSlTRj4+Pjp58qRq1qypNWvWKDg42OkN49bQ7JUFkiTLlUvyv2a83ehYGe4e2vJGH9c0BgAlVLt27RQREaG3337b1a1IKnn93Czsvh3IpEmT1Lx5c+3bt09nzpzRmTNntHfvXrVs2VLTp09XSkqKKleurJdeeqko+gUAAEXk0qVLrm4BN2B3cBs1apSmTZumWrVqWcdq166tqVOnasSIEapWrZqmTJmi9evXO7VRAACQu379+ikhIUHTp0+XxWKRxWLRgQMH9OSTT6pGjRry9vZWeHi4pk+fnuNzXbt21cSJE1WlShWFh4dLkjZs2KCIiAh5eXkpMjJSixcvlsVi0bZt26yf3blzpzp16iQfHx9VqlRJvXv31unTp/Ps59ChQ/l+h/j4eFksFsXFxSkyMlJlypRR69atlZycbF3nwIED6tKliypVqiQfHx81b95cq1atsqkTGhqq1157TX369JGPj49CQkK0dOlSnTp1Sl26dJGPj48aNWqkn3/+2eZz69atU9u2beXt7a3g4GANHDhQ6enp1vfff/99hYWFycvLS5UqVdLDDz9c4H8fZ7I7uB07dkxXrlzJMX7lyhUdP35cklSlShVduHCh8N0BAIAbmj59ulq1aqWnn35ax44d07Fjx1StWjVVq1ZNX375pXbv3q0xY8boP//5j7744gubz8bFxSk5OVkrV67UsmXLlJqaqs6dO6thw4baunWrXn31VQ0bNszmM+fOndNdd92lJk2a6Oeff9b333+vEydO6JFHHsmzn4KePjVy5Ei9+eab+vnnn+Xu7q4nnnjC+l5aWpruu+8+xcXFKSkpSffee686d+6slJQUmxrTpk1TmzZtlJSUpPvvv1+9e/dWnz599Nhjj2nr1q2qVauW+vTpI8MwJF0NhPfee6/+/e9/65dfftHnn3+udevWacCAAZKkn3/+WQMHDtSECROUnJys77//XnfccYd9/0hOYvc5bnfeeaeeffZZzZkzR02aNJEkJSUl6fnnn9ddd90lSdqxYwc340WJ0uyVBZwvB+Cm5e/vLw8PD5UpU0aVK1e2jo8fP9765xo1amjjxo364osvrAFLksqWLas5c+bIw8NDkvTBBx/IYrFo9uzZ8vLyUv369XX06FE9/fTT1s+89957atKkiSZNmmQd++ijjxQcHKy9e/eqTp06ufZTEBMnTlRUVJQkafjw4br//vv1999/y8vLS40bN1bjxo2t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obJYLHr77bcdrjV79my1bdtW5cqVU7ly5dS+fXub9e2p9fXXXysyMlIBAQEqW7asIiIi9Mknnzjc27ViY2NlsVisNzq2t9b8+fNlsVhsXl5eXg73de7cOfXv319BQUHy9PRUnTp19N1332nt2rXq3LmzqlSpIovFosWLF9/wu8XHx6tp06by9PRU7dq1NX/+fOt79tY7duyYevbsqTp16qhUqVIaPHiww7W+/vprdejQQRUqVJCfn59atWqlFStWOFRr3bp1atOmjW677TZ5e3urbt26mjZtmsO9XWv9+vVyd3dXRESEQ7Xi4+Nz/GxYLBYdP37cob4yMjI0cuRIhYSEyNPTU6Ghofroo48c6q1fv3659tagQQOHelu4cKEaN26sMmXKKCgoSE888YTOnDnjUG/S1d+bevXqydvbW+Hh4VqwYIFiYmLUvHlz+fr6qmLFiuratauSk5NvWOvLL79U3bp15eXlpYYNG+q7776TJIfq5bWPdKRWXvtIR2rlt4909O8t27X7SEdq3WgfCTjLTRHcPv/8cw0ZMkRjx47V1q1b1bhxY3Xs2FEnT57Mdf2LFy+qZs2amjx5co5Ha9lbKz4+Xj169NCaNWu0ceNGBQcH65577tHRo0ftrhUYGKiRI0dq48aN+uWXX/T444/r8ccft/7H3t562Q4dOqTo6Gi1bdvW4e8pXb1D+LFjx6yvw4cPO1Tr0qVL6tChgw4dOqSvvvpKycnJmj17tqpWrar09HQ1btxYM2bMyPc7ZTt48KDuv/9+3Xnnndq2bZsGDx6sp556yvp3Zm+9jIwMVahQQaNGjVLjxo1t3rO31tq1a9WhQwd999132rJli+6880517txZSUlJdtcqW7asBgwYoLVr12rPnj0aNWqURo0apVmzZjnUW7Zz586pT58+uvvuux3+ntmSk5Ntfj4qVqzoUK1HHnlEcXFxmjt3rpKTk/XZZ58pPDzcod6mT59u09ORI0cUGBiobt262V1r/fr16tOnj5588knt2rVLX375pX766Sc9/fTTDvU2c+ZMjRgxQuPGjdOuXbs0fvx49e/fX19++aX69++vTZs2aeXKlbp8+bLuuecepaen51lrw4YN6tGjh5588kklJSWpa9eu6tq1q3bu3KmEhAS76+W1j3SkVl77yBUrVthdK799pCO9Zbt+H+lorbz2kYBTGTeB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d73y5ctLks6ePasKFSpI+l+4smdb2QH6+rGsrCybz/z555+SZN0WAJgRM26AAzZv3myzvGnTJoWFhcnNzU1NmjRRZmamTp48qdq1a9u8KleuLEny8PCwnoeW7ddff9WZM2c0efJktW3bVnXr1rXrwoRs2ee5xcXFWc9la9eunT777DPt3bs3z/PbatWqpdKlS9t8t7Nnz2rv3r026+XWuyNq1aolPz8/7d692zoWFhYmb29vxcXFFbr+9Xbu3KnSpUurQYMGTq8NAMWF4AY4ICUlRUOGDFFycrI+++wzvfvuuxo0aJAkqU6dOurVq5f69Omjr7/+WgcPHtRPP/2kmJgYffvtt5Ku3gstLS1NcXFxOn36tC5evKjq1avLw8ND7777rn777TctXbpUr776qt293XHHHbpw4YKWLVtmE9wWLlyooKAg1alTJ9fP+fj46Mknn9Qrr7yi1atXa+fOnerXr59KlbLdTYSGhmrt2rU6evSoTp8+bXd/2UqVKqX27dtr3bp11jEvLy8NGzZMQ4cO1YIFC3TgwAFt2rRJc+fOdXg72X788UfrlagAYFYEN8ABffr00V9//aUWLVqof//+GjRokM3d/+fNm6c+ffro5ZdfVnh4uLp27arExERVr15dktS6dWs999xz6t69uypUqKApU6aoQoUKmj9/vr788kvVr19fkydP1tSpU+3urVy5cmrYsKEqVKigunXrSroa5rKysvI8vy3bG2+8obZt26pz585q3769/vnPf6pZs2Y260yYMEGHDh1SrVq1Cn3Y8amnnlJsbKzNYc3Ro0fr5Zdf1pgxY1SvXj11797doZnH68XGxurpp58udB0AcCWLkd9JKAByaNeunSIiIpz29IBbmWEYatmypV566SX16NGjyLazfPlyvfzyy/rll1/k7s6pvQDMixk3AC5jsVg0a9YsXblypUi3k56ernnz5hHaAJgeezEALhUREaGIiIgi3cbDDz9cpPUBoLhwqBQAAMAkOFQKAABgEgQ3AAAAkyC4AQAAmATBDQAAwCQIbgAAACZBcAMAADAJghsAAIBJENwAAABMguAGAABgEv8P4kEJrhlnnEYAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -744,17 +745,22 @@ }, { "cell_type": "code", - "execution_count": 223, + "execution_count": 72, "metadata": {}, "outputs": [], "source": [ + "# Add index column\n", + "iris_dataframe['index'] = iris_dataframe.reset_index().index\n", + "\n", "target_names = {\n", " 0:0,\n", " 1:1,\n", " 2:1\n", "}\n", "x = np.array(iris.data)\n", - "y = np.array(iris_dataframe['target'].map(target_names))\n", + "target = np.array(iris_dataframe['target'].map(target_names)).reshape(-1, 1)\n", + "index = np.array(iris_dataframe['index']).reshape(-1, 1)\n", + "y = np.concatenate((target, index), axis=1)\n", "\n", "train_ratio = 0.8\n", "validation_ratio = 0.1\n", @@ -771,131 +777,813 @@ "### 7. Run four logistic regression models" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**One feature model**
\n", + "According the 4 histograms above, feature 'petal width (cm)' distinguishes best between viriginica and non-viriginica.
\n", + "So 'petal width (cm)' is chosen as the feature to build this model." + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [], + "source": [ + "models = list()\n", + "model1feature = LogisticRegression(max_iter = 1000, random_state=42)\n", + "model1feature.fit(x_train[:, 3:4], y_train[:, 0])\n", + "models.append(model1feature)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Two feature model**
\n", + "According the Scatter graph above, feature 'petal width (cm)' and 'petal length (cm)' distinguishes best between viriginica and non-viriginica.
\n", + "So I chosen 'petal width (cm)' and 'petal length (cm)' as traning feature for this model." + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "model2feature = LogisticRegression(max_iter = 1000, random_state=42)\n", + "model2feature.fit(x_train[:, 2:4], y_train[:, 0])\n", + "models.append(model2feature)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Three feature model**
\n", + "Chosen 'sepal length (cm)', 'petal width (cm)' and 'petal length (cm)' for traning this model" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "model3feature = LogisticRegression(max_iter = 1000, random_state=42)\n", + "model3feature.fit(np.delete(x_train, [1], axis=1), y_train[:, 0])\n", + "models.append(model3feature)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Four feature model**
\n", + "Chosen all feature for traning this model" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [], + "source": [ + "model4feature = LogisticRegression(max_iter = 1000, random_state=42)\n", + "model4feature.fit(x_train, y_train[:, 0])\n", + "models.append(model4feature)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 8. Evaluate the models on the validation set" + ] + }, { "cell_type": "code", - "execution_count": 224, + "execution_count": 77, + "metadata": {}, + "outputs": [], + "source": [ + "result_pds = list()\n", + "for i in range(x.shape[1]):\n", + " result_pds.append(pd.DataFrame(columns=['Index', 'Probability', 'Prediction', 'GroundTruth'], index=range(15)))\n", + " result_pds[i]['Prediction'] = models[i].predict(x_val[:, :i+1])\n", + " result_pds[i]['Probability'] = models[i].predict_proba(x_val[:, :i+1])[:, 1]\n", + " result_pds[i]['GroundTruth'] = y_val[:, 0]\n", + " result_pds[i]['Index'] = y_val[:, 1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print first model's result" + ] + }, + { + "cell_type": "code", + "execution_count": 78, "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "(150, 4)\n" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IndexProbabilityPredictionGroundTruth
0261.010
1181.010
21181.011
31451.011
4781.011
51271.011
61081.011
7551.011
8301.010
9291.010
101411.011
111101.011
12191.010
131321.011
14641.011
\n", + "
" + ], + "text/plain": [ + " Index Probability Prediction GroundTruth\n", + "0 26 1.0 1 0\n", + "1 18 1.0 1 0\n", + "2 118 1.0 1 1\n", + "3 145 1.0 1 1\n", + "4 78 1.0 1 1\n", + "5 127 1.0 1 1\n", + "6 108 1.0 1 1\n", + "7 55 1.0 1 1\n", + "8 30 1.0 1 0\n", + "9 29 1.0 1 0\n", + "10 141 1.0 1 1\n", + "11 110 1.0 1 1\n", + "12 19 1.0 1 0\n", + "13 132 1.0 1 1\n", + "14 64 1.0 1 1" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "log_reg = list()\n", - "for i in range(x.shape[1]):\n", - " log_reg.append(LogisticRegression(max_iter = 1000, random_state=42))\n", - " log_reg[i].fit(x_train[:,i].reshape(-1, 1), y_train)" + "result_pds[0]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### 8. Evaluate the models on the validation set" + "Print second model's result" ] }, { "cell_type": "code", - "execution_count": 229, + "execution_count": 79, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.9333333333333333\n", - "0.8666666666666667\n", - "1.0\n", - "1.0\n" - ] - }, { "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IndexProbabilityPredictionGroundTruth
0260.99978310
1180.99997510
21180.99999911
31450.99999511
4780.99997011
51270.99997911
61080.99999211
7550.99993011
8300.99951610
9290.99944010
101410.99999711
111100.99999411
12190.99988710
131320.99998811
14640.99991911
\n", + "
" + ], "text/plain": [ - "[ Index Probability Prediction GroundTruth\n", - " 0 NaN 0.260944 0 0\n", - " 1 NaN 0.769338 1 0\n", - " 2 NaN 0.999510 1 1\n", - " 3 NaN 0.988022 1 1\n", - " 4 NaN 0.897246 1 1\n", - " 5 NaN 0.923282 1 1\n", - " 6 NaN 0.988022 1 1\n", - " 7 NaN 0.769338 1 1\n", - " 8 NaN 0.156741 0 0\n", - " 9 NaN 0.118837 0 0\n", - " 10 NaN 0.993658 1 1\n", - " 11 NaN 0.977490 1 1\n", - " 12 NaN 0.327335 0 0\n", - " 13 NaN 0.969238 1 1\n", - " 14 NaN 0.707603 1 1,\n", " Index Probability Prediction GroundTruth\n", - " 0 NaN 0.465581 0 0\n", - " 1 NaN 0.202501 0 0\n", - " 2 NaN 0.911153 1 1\n", - " 3 NaN 0.749313 1 1\n", - " 4 NaN 0.802685 1 1\n", - " 5 NaN 0.749313 1 1\n", - " 6 NaN 0.933143 1 1\n", - " 7 NaN 0.847014 1 1\n", - " 8 NaN 0.687131 1 0\n", - " 9 NaN 0.617400 1 0\n", - " 10 NaN 0.687131 1 1\n", - " 11 NaN 0.617400 1 1\n", - " 12 NaN 0.202501 0 0\n", - " 13 NaN 0.847014 1 1\n", - " 14 NaN 0.802685 1 1,\n", + "0 26 0.999783 1 0\n", + "1 18 0.999975 1 0\n", + "2 118 0.999999 1 1\n", + "3 145 0.999995 1 1\n", + "4 78 0.999970 1 1\n", + "5 127 0.999979 1 1\n", + "6 108 0.999992 1 1\n", + "7 55 0.999930 1 1\n", + "8 30 0.999516 1 0\n", + "9 29 0.999440 1 0\n", + "10 141 0.999997 1 1\n", + "11 110 0.999994 1 1\n", + "12 19 0.999887 1 0\n", + "13 132 0.999988 1 1\n", + "14 64 0.999919 1 1" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result_pds[1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print third model's result" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IndexProbabilityPredictionGroundTruth
0260.92498610
1180.97831010
21180.99885411
31450.99670111
4780.98942811
51270.99461011
61080.99393511
7550.98523011
8300.84790010
9290.87324810
101410.99731411
111100.99760911
12190.96822610
131320.99606011
14640.97079111
\n", + "
" + ], + "text/plain": [ " Index Probability Prediction GroundTruth\n", - " 0 NaN 0.044860 0 0\n", - " 1 NaN 0.058422 0 0\n", - " 2 NaN 0.999992 1 1\n", - " 3 NaN 0.999057 1 1\n", - " 4 NaN 0.993416 1 1\n", - " 5 NaN 0.997829 1 1\n", - " 6 NaN 0.999822 1 1\n", - " 7 NaN 0.993416 1 1\n", - " 8 NaN 0.044860 0 0\n", - " 9 NaN 0.044860 0 0\n", - " 10 NaN 0.998755 1 1\n", - " 11 NaN 0.998755 1 1\n", - " 12 NaN 0.034332 0 0\n", - " 13 NaN 0.999690 1 1\n", - " 14 NaN 0.924876 1 1,\n", + "0 26 0.924986 1 0\n", + "1 18 0.978310 1 0\n", + "2 118 0.998854 1 1\n", + "3 145 0.996701 1 1\n", + "4 78 0.989428 1 1\n", + "5 127 0.994610 1 1\n", + "6 108 0.993935 1 1\n", + "7 55 0.985230 1 1\n", + "8 30 0.847900 1 0\n", + "9 29 0.873248 1 0\n", + "10 141 0.997314 1 1\n", + "11 110 0.997609 1 1\n", + "12 19 0.968226 1 0\n", + "13 132 0.996060 1 1\n", + "14 64 0.970791 1 1" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result_pds[2]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Print fourth model's result" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IndexProbabilityPredictionGroundTruth
0260.03863100
1180.04147900
21180.99999511
31450.99949011
4780.99386511
51270.99797911
61080.99986311
7550.99234611
8300.03854100
9290.03395200
101410.99936211
111100.99891211
12190.02104700
131320.99978111
14640.93934911
\n", + "
" + ], + "text/plain": [ " Index Probability Prediction GroundTruth\n", - " 0 NaN 0.187328 0 0\n", - " 1 NaN 0.131044 0 0\n", - " 2 NaN 0.998634 1 1\n", - " 3 NaN 0.998634 1 1\n", - " 4 NaN 0.960827 1 1\n", - " 5 NaN 0.988712 1 1\n", - " 6 NaN 0.988712 1 1\n", - " 7 NaN 0.913030 1 1\n", - " 8 NaN 0.089802 0 0\n", - " 9 NaN 0.089802 0 0\n", - " 10 NaN 0.998634 1 1\n", - " 11 NaN 0.995137 1 1\n", - " 12 NaN 0.131044 0 0\n", - " 13 NaN 0.997913 1 1\n", - " 14 NaN 0.913030 1 1]" + "0 26 0.038631 0 0\n", + "1 18 0.041479 0 0\n", + "2 118 0.999995 1 1\n", + "3 145 0.999490 1 1\n", + "4 78 0.993865 1 1\n", + "5 127 0.997979 1 1\n", + "6 108 0.999863 1 1\n", + "7 55 0.992346 1 1\n", + "8 30 0.038541 0 0\n", + "9 29 0.033952 0 0\n", + "10 141 0.999362 1 1\n", + "11 110 0.998912 1 1\n", + "12 19 0.021047 0 0\n", + "13 132 0.999781 1 1\n", + "14 64 0.939349 1 1" ] }, - "execution_count": 229, + "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "result_pds = list()\n", - "for i in range(x.shape[1]):\n", - " result_pds.append(pd.DataFrame(columns=['Index', 'Probability', 'Prediction', 'GroundTruth'], index=range(15)))\n", - " result_pds[i]['Prediction'] = log_reg[i].predict(x_val[:, i].reshape(-1, 1))\n", - " result_pds[i]['Probability'] = log_reg[i].predict_proba(x_val[:, i].reshape(-1, 1))[:, 1]\n", - " result_pds[i]['GroundTruth'] = y_val\n", - " print((result_pds[i]['Prediction'] == result_pds[i]['GroundTruth']).sum()/15)\n", - "result_pds" + "result_pds[3]" ] }, { @@ -903,21 +1591,21 @@ "metadata": {}, "source": [ "### 9. Print the accuracy of each model\n", - "accuracy = count(predication == GroudTruth)/Sample Number" + "accuracy = (count(predication == GroudTruth) / count(Validation set))" ] }, { "cell_type": "code", - "execution_count": 238, + "execution_count": 82, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "The accuracy of Model 0 is: 93.33%\n", - "The accuracy of Model 1 is: 86.67%\n", - "The accuracy of Model 2 is: 100.00%\n", + "The accuracy of Model 0 is: 66.67%\n", + "The accuracy of Model 1 is: 66.67%\n", + "The accuracy of Model 2 is: 66.67%\n", "The accuracy of Model 3 is: 100.00%\n" ] } @@ -926,6 +1614,2693 @@ "for i in range(x.shape[1]):\n", " print('The accuracy of Model {:} is: {:.2f}%'.format(i, (result_pds[i][\"Prediction\"] == result_pds[i][\"GroundTruth\"]).sum()/15*100))" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 10. Plot the decision boundary for models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**One feature model graph**" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxoAAAE8CAYAAABHKsdQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAABMqElEQVR4nO3dd3gU5drH8d8mpJFGSYBQQiCUBAQ50pR+KEYQNFhA9AgRFBUQLBQVKYIoAiLFI2JLEEQUFVAEESlRmuQAQTiEKhBABFFIoyRk5/1j3+xhSUI2MMkC+X6uKxdk5tnnueeemc3eO81iGIYhAAAAADCRm6sDAAAAAHDzodAAAAAAYDoKDQAAAACmo9AAAAAAYDoKDQAAAACmo9AAAAAAYDoKDQAAAACmo9AAAAAAYDoKDQAAAACmo9AAABPt27dPd955pwIDA2WxWLR48WJXh1Ss0tPT9fjjj6tSpUqyWCx69tlnXR1SiTN27FhZLJarem1MTIzCwsLMDQhAiUWhAcA0O3bs0AMPPKDq1avL29tbVapUUadOnTRz5swiG3P+/PmaNm1arum///67xo4dq8TExCIbOy99+vTRjh07NGHCBM2dO1dNmjQp1vFd7fXXX1dcXJyefvppzZ07V48++miRjPPuu+8qLi6uSPoGAJijlKsDAHBz2LBhg/75z38qNDRUTzzxhCpVqqQjR45o06ZNmj59up555pkiGXf+/PnauXNnrm/Of//9d7366qsKCwtTo0aNimTsy507d04bN27UyJEjNWjQoGIZ83qzevVq3X777RozZkyRjvPuu+8qKChIMTExRToOAODqUWgAMMWECRMUGBiohIQElSlTxmHeyZMnXRNUEcjIyJCvr2+e8/78809JyrX8RTXe9ejkyZOqV6+eq8O4KoZh6Pz58/Lx8XF1KABwU+DUKQCmOHDggOrXr5/nh+wKFSrkmjZv3jw1a9ZMpUuXVtmyZdWmTRv98MMP9vlLlizR3XffrcqVK8vLy0vh4eEaP368srOz7W3atWun7777TocPH5bFYpHFYlFYWJjWrl2rpk2bSpIee+wx+7xLT7X55ZdfdNdddykwMFClS5dW27ZttX79eocYc85137Vrlx5++GGVLVtWrVq1ynP5x44dq+rVq0uShg0bZo8lx7Zt29S5c2cFBATIz89PHTp00KZNmxz6iIuLk8ViUXx8vAYMGKAKFSqoatWqeSf8/508eVL9+vVTxYoV5e3trVtvvVVz5sxxaHPo0CFZLBZNmTJF77//vsLDw+Xl5aWmTZsqISEhV5+7d+/WAw88oHLlysnb21tNmjTRN998c8U41q5dK4vFooMHD+q7776z5/zQoUOSpAsXLmjMmDGqVauWvLy8VK1aNQ0fPlwXLlxw6Cc2Nlbt27dXhQoV5OXlpXr16mnWrFkObcLCwvTf//5X8fHx9nHatWsnKf/rE3JymxNPTj9du3bVihUr1KRJE/n4+Gj27NmSpDNnzujZZ59VtWrV5OXlpVq1aunNN9+U1Wq9Yh4u7Xft2rX2fhs0aKC1a9dKkr7++ms1aNBA3t7eaty4sbZt25arj9WrV6t169by9fVVmTJldO+99yopKSlXu3Xr1qlp06by9vZWeHi4Pf68zJs3T40bN5aPj4/KlSunhx56SEeOHClweQDganFEA4Apqlevro0bN2rnzp265ZZbrtj21Vdf1dixY9WiRQuNGzdOnp6e+uWXX7R69WrdeeedkmwfDP38/PT888/Lz89Pq1ev1ujRo5WamqrJkydLkkaOHKmUlBQdPXpUb7/9tiTJz89PkZGRGjdunEaPHq3+/furdevWkqQWLVpIsn2I69y5sxo3bqwxY8bIzc3N/gH3559/VrNmzRziffDBB1W7dm29/vrrMgwjz2W67777VKZMGT333HPq1auXunTpIj8/P0nSf//7X7Vu3VoBAQEaPny4PDw8NHv2bLVr107x8fFq3ry5Q18DBgxQcHCwRo8erYyMjHzzeO7cObVr10779+/XoEGDVKNGDS1cuFAxMTE6c+aMhgwZ4tB+/vz5SktL05NPPimLxaJJkybpvvvu02+//SYPDw97rC1btlSVKlX04osvytfXV1988YWio6P11VdfqXv37nnGEhkZqblz5+q5555T1apV9cILL0iSgoODZbVadc8992jdunXq37+/IiMjtWPHDr399tvau3evwwXzs2bNUv369XXPPfeoVKlS+vbbbzVgwABZrVYNHDhQkjRt2jQ988wz8vPz08iRIyVJFStWzDdPV7Jnzx716tVLTz75pJ544gnVrVtXZ8+eVdu2bXXs2DE9+eSTCg0N1YYNG/TSSy/p+PHjeV4TdLn9+/fr4Ycf1pNPPql//etfmjJlirp166b33ntPL7/8sgYMGCBJeuONN9SjRw/t2bNHbm627/5+/PFHde7cWTVr1tTYsWN17tw5zZw5Uy1bttTWrVvtBeyOHTt05513Kjg4WGPHjtXFixc1ZsyYPHMxYcIEjRo1Sj169NDjjz+uP//8UzNnzlSbNm20bds2U4/CAYCdAQAm+OGHHwx3d3fD3d3duOOOO4zhw4cbK1asMDIzMx3a7du3z3BzczO6d+9uZGdnO8yzWq32/589ezbXGE8++aRRunRp4/z58/Zpd999t1G9evVcbRMSEgxJRmxsbK4xateubURFReUar0aNGkanTp3s08aMGWNIMnr16uVUDg4ePGhIMiZPnuwwPTo62vD09DQOHDhgn/b7778b/v7+Rps2bezTYmNjDUlGq1atjIsXLxY43rRp0wxJxrx58+zTMjMzjTvuuMPw8/MzUlNTHeIqX7688ffff9vbLlmyxJBkfPvtt/ZpHTp0MBo0aOCQY6vVarRo0cKoXbt2gTFVr17duPvuux2mzZ0713BzczN+/vlnh+nvvfeeIclYv369fVpe6z0qKsqoWbOmw7T69esbbdu2zdU2Z51dLie3Bw8edIhVkvH99987tB0/frzh6+tr7N2712H6iy++aLi7uxvJycm5+r9UTr8bNmywT1uxYoUhyfDx8TEOHz5snz579mxDkrFmzRr7tEaNGhkVKlQw/vrrL/u07du3G25ubkbv3r3t06Kjow1vb2+H/nbt2mW4u7s75ODQoUOGu7u7MWHCBIc4d+zYYZQqVcphep8+ffLcnwDganDqFABTdOrUSRs3btQ999yj7du3a9KkSYqKilKVKlUcTrtZvHixrFarRo8ebf8GN8elp7xcep58WlqaTp06pdatW+vs2bPavXv3VceZmJioffv26eGHH9Zff/2lU6dO6dSpU8rIyFCHDh30008/5To95qmnnrrq8bKzs/XDDz8oOjpaNWvWtE8PCQnRww8/rHXr1ik1NdXhNU888YTc3d0L7HvZsmWqVKmSevXqZZ/m4eGhwYMHKz09XfHx8Q7te/bsqbJly9p/zznS89tvv0mS/v77b61evVo9evSw5/zUqVP666+/FBUVpX379unYsWOFzsHChQsVGRmpiIgIe5+nTp1S+/btJUlr1qyxt710vaekpOjUqVNq27atfvvtN6WkpBR67ILUqFFDUVFRueJt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Y8eOVaNGja65n7Vr18pisejMmTNOvyYmJkbdu3e/5rHhGlwMDgAAUEJ169ZNWVlZ+v7773PN+/nnn9WmTRtt375dzzzzzDWP1aJFCx0/flyBgYFOv2b69Ok8O+MGxhENAACA64nVKh06JO3YYfv3Gm4vWpB+/fpp5cqVOnr0aK55sbGxatKkiRo2bKjy5cvn20dmZqZTY3l6eqpSpUqFulg+MDBQZcqUcbo9ri8UGgAAANeLpCRp4kRp9Ghp/HjbvxMn2qYXga5duyo4OFhxcXEO09PT07Vw4UL169cv16lTMTExio6O1oQJE1S5cmXVrVtXkrRhwwY1atRI3t7eatKkiRYvXiyLxaLExERJuU+diouLU5kyZbRixQpFRkbKz89Pd911l44fP+4w1qWnTlmtVk2aNEm1atWSl5eXQkNDNWHCBPv8ESNGqE6dOipdurRq1qypUaNG8ZR2F6LQAAAAuB4kJUkzZkjbtklBQVLdurZ/t22zTS+CYqNUqVLq3bu34uLiHG5junDhQmVnZ6tXr155vm7VqlXas2ePVq5cqaVLlyo1NVXdunVTgwYNtHXrVo0fP14jRowocPyzZ89qypQpmjt3rn766SclJydr6NCh+bZ/6aWXNHHiRI0aNUq7du3S/PnzVbFiRft8f39/xcXFadeuXZo+fbo++OADvf3224XICMzENRoAAACuZrVKixZJp05J9epJOacXBQTYft+1S1q82FZ8mPzQur59+2ry5MmKj49Xu3btJNlOm7r//vvzvZ7C19dXH374oTw9PSVJ7733niwWiz744AN5e3urXr16OnbsmJ544okrjp2VlaX33ntP4eHhkqRBgwZp3LhxebZNS0vT9OnT9c4776hPnz6SpPDwcLVq1cre5pVXXrH/PywsTEOHDtWCBQs0fPhw55IBU3FEAwAAwNWSk6Xdu6Vq1f5XZOSwWKSqVW1HNJKTTR86IiJCLVq00McffyxJ2r9/v37++Wf169cv39c0aNDAXmRI0p49e9SwYUN5e3vbpzVr1qzAsUuXLm0vMiQpJCREJ0+ezLNtUlKSLly4oA4dOuTb3+eff66WLVuqUqVK8vPz0yuvvKLkIsgZnEOhAQAA4GppadL585Kvb97zfX1t89PSimT4fv366auvvlJaWppiY2MVHh6utm3b5tveN784C8nDw8Phd4vFku+T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ZTt3qsstt8iDJ4Pnz+Qng2dt2KBlp0+rS9my8uDJ4Pkz+Um8N+wHgBv8yeBOvc/wZHDT98EC886TwYukrxv2fcZMLti2Sl6hgUIh765B3l2DvLsGeXcN8u4a5N01yLtrmFFoXAdfWwAAAAC42VBoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYAAAAA01FoAAAAADAdhQYA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "decision_boundary_point = np.array(-models[0].intercept_ / models[0].coef_[0])\n", + "\n", + "y_pred = np.array(result_pds[0]['Prediction'])\n", + "y_virginica = x_val[y_pred == 1, : ]\n", + "y_non_virginica = x_val[y_pred == 0, : ]\n", + "\n", + "plt.figure(figsize=(10, 3))\n", + "plt.scatter(y_virginica, np.zeros_like(y_virginica), color='red', alpha=0.5, label='Virginica')\n", + "plt.scatter(y_non_virginica, np.zeros_like(y_non_virginica), color='black', alpha=0.5, label='Non-Virginica')\n", + "plt.scatter(decision_boundary_point, np.zeros_like(decision_boundary_point), color='blue', alpha=0.5, label='Decision Boundary')\n", + "plt.title('Scatter for one feature model')\n", + "plt.xlabel('petal width (cm)')\n", + "plt.yticks([])\n", + "plt.grid(axis='x')\n", + "plt.legend()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Two features model graph**" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "marker": { + "color": "red" + }, + "mode": "markers", + "name": "Virginica", + "type": "scatter", + "x": [ + 1.6, + 1.7, + 6.9, + 5.2, + 4.5, + 4.9, + 5.8, + 4.5, + 1.6, + 1.6, + 5.1, + 5.1, + 1.5, + 5.6, + 3.6 + ], + "y": [ + 0.4, + 0.3, + 2.3, + 2.3, + 1.5, + 1.8, + 1.8, + 1.3, + 0.2, + 0.2, + 2.3, + 2, + 0.3, + 2.2, + 1.3 + ] + }, + { + "marker": { + "color": "black" + }, + "mode": "markers", + "name": "Non-Virginica", + "type": "scatter", + "x": [], + "y": [] + }, + { + "mode": "lines", + "name": "Decision Boundary", + "type": "scatter", + "x": [ + 0.5, + 0.5747474747474748, + 0.6494949494949496, + 0.7242424242424242, + 0.798989898989899, + 0.8737373737373738, + 0.9484848484848485, + 1.0232323232323233, + 1.097979797979798, + 1.1727272727272728, + 1.2474747474747476, + 1.3222222222222224, + 1.396969696969697, + 1.471717171717172, + 1.5464646464646465, + 1.6212121212121213, + 1.6959595959595961, + 1.770707070707071, + 1.8454545454545457, + 1.9202020202020205, + 1.9949494949494953, + 2.06969696969697, + 2.144444444444445, + 2.2191919191919194, + 2.293939393939394, + 2.368686868686869, + 2.443434343434344, + 2.5181818181818185, + 2.592929292929293, + 2.667676767676768, + 2.7424242424242427, + 2.8171717171717177, + 2.8919191919191922, + 2.966666666666667, + 3.041414141414142, + 3.1161616161616164, + 3.1909090909090914, + 3.265656565656566, + 3.340404040404041, + 3.4151515151515155, + 3.4898989898989905, + 3.564646464646465, + 3.6393939393939396, + 3.7141414141414146, + 3.788888888888889, + 3.863636363636364, + 3.9383838383838388, + 4.013131313131314, + 4.087878787878788, + 4.162626262626263, + 4.237373737373738, + 4.3121212121212125, + 4.386868686868688, + 4.461616161616162, + 4.536363636363637, + 4.611111111111112, + 4.685858585858586, + 4.760606060606061, + 4.835353535353536, + 4.910101010101011, + 4.984848484848485, + 5.05959595959596, + 5.134343434343435, + 5.20909090909091, + 5.2838383838383844, + 5.358585858585859, + 5.433333333333334, + 5.508080808080809, + 5.582828282828284, + 5.657575757575758, + 5.732323232323233, + 5.807070707070708, + 5.881818181818183, + 5.956565656565657, + 6.031313131313132, + 6.106060606060606, + 6.180808080808082, + 6.255555555555556, + 6.330303030303031, + 6.4050505050505055, + 6.479797979797981, + 6.554545454545456, + 6.62929292929293, + 6.704040404040405, + 6.778787878787879, + 6.853535353535355, + 6.928282828282829, + 7.003030303030304, + 7.077777777777778, + 7.152525252525253, + 7.227272727272728, + 7.302020202020203, + 7.3767676767676775, + 7.451515151515152, + 7.5262626262626275, + 7.601010101010102, + 7.675757575757577, + 7.750505050505051, + 7.825252525252526, + 7.9 + ], + "y": [ + 6.081864669174985, + 5.899858642990835, + 5.7178526168066846, + 5.535846590622533, + 5.353840564438383, + 5.171834538254233, + 4.9898285120700825, + 4.807822485885932, + 4.625816459701781, + 4.443810433517631, + 4.26180440733348, + 4.079798381149329, + 3.89779235496518, + 3.7157863287810287, + 3.533780302596879, + 3.351774276412728, + 3.1697682502285778, + 2.9877622240444275, + 2.8057561978602763, + 2.623750171676126, + 2.4417441454919757, + 2.2597381193078254, + 2.0777320931236742, + 1.8957260669395248, + 1.7137200407553745, + 1.5317140145712234, + 1.3497079883870722, + 1.1677019622029228, + 0.9856959360187725, + 0.8036899098346213, + 0.621683883650471, + 0.4396778574663198, + 0.2576718312821704, + 0.07566580509802012, + -0.10634022108613106, + -0.28834624727028046, + -0.47035227345443165, + -0.6523582996385819, + -0.8343643258227331, + -1.0163703520068825, + -1.1983763781910337, + -1.380382404375185, + -1.5623884305593343, + -1.7443944567434855, + -1.9264004829276349, + -2.108406509111786, + -2.2904125352959355, + -2.4724185614800884, + -2.654424587664236, + -2.836430613848389, + -3.0184366400325384, + -3.200442666216688, + -3.382448692400841, + -3.5644547185849884, + -3.7464607447691396, + -3.9284667709532908, + -4.11047279713744, + -4.29247882332159, + -4.4744848495057425, + -4.656490875689892, + -4.838496901874043, + -5.0205029280581925, + -5.2025089542423455, + -5.384514980426495, + -5.566521006610644, + -5.7485270327947955, + -5.930533058978945, + -6.112539085163096, + -6.294545111347247, + -6.476551137531397, + -6.658557163715546, + -6.840563189899699, + -7.022569216083848, + -7.204575242268, + -7.386581268452149, + -7.568587294636298, + -7.750593320820451, + -7.932599347004601, + -8.11460537318875, + -8.296611399372901, + -8.478617425557053, + -8.660623451741204, + -8.842629477925355, + -9.024635504109503, + -9.206641530293654, + -9.388647556477805, + -9.570653582661956, + -9.752659608846104, + -9.934665635030255, + -10.116671661214406, + -10.298677687398557, + -10.480683713582708, + -10.662689739766856, + -10.844695765951007, + -11.026701792135158, + -11.20870781831931, + -11.39071384450346, + -11.572719870687608, + -11.75472589687176, + -11.93673192305591 + ] + } + ], + "layout": { + "height": 600, + "showlegend": true, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Scatter for two feature model" + }, + "width": 800, + "xaxis": { + "title": { + "text": "petal length (cm)" + } + }, + "yaxis": { + "title": { + "text": "petal width (cm)" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "y_pred = np.array(result_pds[1]['Prediction'])\n", + "y_virginica = x_val[y_pred == 1, : ]\n", + "y_non_virginica = x_val[y_pred == 0, : ]\n", + "\n", + "features = x_val[:, 2:4]\n", + "virginica = features[y_pred == 1, :]\n", + "non_virginica = features[y_pred == 0, :]\n", + "\n", + "trace0 = go.Scatter(x=virginica[:, 0], y=virginica[:, 1], mode='markers', marker=dict(color='red'), name='Virginica')\n", + "trace1 = go.Scatter(x=non_virginica[:, 1], y=non_virginica[:, 1], mode='markers', marker=dict(color='black'), name='Non-Virginica')\n", + "\n", + "x_min, x_max = features[:, 0].min() - 1, features[:, 0].max() + 1\n", + "y_min, y_max = features[:, 1].min() - 1, features[:, 1].max() + 1\n", + "\n", + "random_x = np.linspace(x_min, x_max, 100)\n", + "random_y = -models[1].intercept_ / models[1].coef_[0][1] - models[1].coef_[0][0] / models[1].coef_[0][1] * random_x\n", + "\n", + "trace2 = go.Scatter(x=random_x, y=random_y, mode='lines', name='Decision Boundary')\n", + "\n", + "layout = go.Layout(title='Scatter for two feature model',\n", + " xaxis=dict(title='petal length (cm)'),\n", + " yaxis=dict(title='petal width (cm)'),\n", + " showlegend=True, width=800, height=600)\n", + "\n", + "fig = go.Figure(data=[trace0, trace1, trace2], layout=layout)\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Three features model graph**" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "marker": { + "color": "red" + }, + "mode": "markers", + "name": "Virginica", + "type": "scatter3d", + "x": [ + 5, + 5.7, + 7.7, + 6.7, + 6, + 6.1, + 6.7, + 5.7, + 4.8, + 4.7, + 6.9, + 6.5, + 5.1, + 6.4, + 5.6 + ], + "y": [ + 1.6, + 1.7, + 6.9, + 5.2, + 4.5, + 4.9, + 5.8, + 4.5, + 1.6, + 1.6, + 5.1, + 5.1, + 1.5, + 5.6, + 3.6 + ], + "z": [ + 0.4, + 0.3, + 2.3, + 2.3, + 1.5, + 1.8, + 1.8, + 1.3, + 0.2, + 0.2, + 2.3, + 2, + 0.3, + 2.2, + 1.3 + ] + }, + { + "marker": { + "color": "black" + }, + "mode": "markers", + "name": "Non-Virginica", + "type": "scatter3d", + "x": [], + "y": [], + "z": [] + }, + { + "colorscale": [ + [ + 0, + "lightgray" + ], + [ + 1, + "lightgray" + ] + ], + "name": "Decision Boundary", + "opacity": 0.5, + "showscale": false, + "surfacecolor": [ + [ + 6.515341102540549, + 6.3407727868978165, + 6.166204471255084, + 5.991636155612351, + 5.817067839969619, + 5.642499524326886, + 5.467931208684154, + 5.293362893041421, + 5.118794577398689, + 4.944226261755957 + ], + [ + 4.531874224181604, + 4.357305908538872, + 4.18273759289614, + 4.0081692772534065, + 3.8336009616106743, + 3.659032645967941, + 3.484464330325209, + 3.3098960146824767, + 3.1353276990397445, + 2.9607593833970123 + ], + [ + 2.5484073458226595, + 2.3738390301799273, + 2.199270714537195, + 2.024702398894462, + 1.8501340832517297, + 1.6755657676089966, + 1.5009974519662643, + 1.326429136323532, + 1.1518608206807999, + 0.9772925050380676 + ], + [ + 0.5649404674637166, + 0.3903721518209844, + 0.21580383617825216, + 0.041235520535519044, + -0.1333327951072132, + -0.3079011107499463, + -0.48246942639267854, + -0.6570377420354108, + -0.831606057678143, + -1.0061743733208752 + ], + [ + -1.4185264108952271, + -1.5930947265379594, + -1.7676630421806916, + -1.9422313578234247, + -2.116799673466157, + -2.29136798910889, + -2.4659363047516223, + -2.6405046203943545, + -2.8150729360370867, + -2.989641251679819 + ], + [ + -3.4019932892541718, + -3.576561604896904, + -3.7511299205396362, + -3.9256982361823693, + -4.100266551825102, + -4.274834867467835, + -4.449403183110567, + -4.623971498753299, + -4.798539814396031, + -4.973108130038764 + ], + [ + -5.385460167613116, + -5.560028483255849, + -5.734596798898581, + -5.909165114541314, + -6.083733430184046, + -6.258301745826779, + -6.432870061469512, + -6.607438377112244, + -6.782006692754976, + -6.956575008397708 + ], + [ + -7.368927045972061, + -7.543495361614793, + -7.7180636772575255, + -7.892631992900259, + -8.06720030854299, + -8.241768624185724, + -8.416336939828456, + -8.590905255471188, + -8.76547357111392, + -8.940041886756653 + ], + [ + -9.352393924331006, + -9.526962239973738, + -9.70153055561647, + -9.876098871259202, + -10.050667186901936, + -10.225235502544669, + -10.3998038181874, + -10.574372133830133, + -10.748940449472865, + -10.923508765115598 + ], + [ + -11.335860802689949, + -11.51042911833268, + -11.684997433975413, + -11.859565749618145, + -12.03413406526088, + -12.208702380903611, + -12.383270696546344, + -12.557839012189076, + -12.732407327831808, + -12.90697564347454 + ] + ], + "type": "surface", + "x": [ + [ + 3.7, + 4.2555555555555555, + 4.811111111111111, + 5.366666666666667, + 5.9222222222222225, + 6.477777777777778, + 7.033333333333333, + 7.588888888888889, + 8.144444444444444, + 8.7 + ], + [ + 3.7, + 4.2555555555555555, + 4.811111111111111, + 5.366666666666667, + 5.9222222222222225, + 6.477777777777778, + 7.033333333333333, + 7.588888888888889, + 8.144444444444444, + 8.7 + ], + [ + 3.7, + 4.2555555555555555, + 4.811111111111111, + 5.366666666666667, + 5.9222222222222225, + 6.477777777777778, + 7.033333333333333, + 7.588888888888889, + 8.144444444444444, + 8.7 + ], + [ + 3.7, + 4.2555555555555555, + 4.811111111111111, + 5.366666666666667, + 5.9222222222222225, + 6.477777777777778, + 7.033333333333333, + 7.588888888888889, + 8.144444444444444, + 8.7 + ], + [ + 3.7, + 4.2555555555555555, + 4.811111111111111, + 5.366666666666667, + 5.9222222222222225, + 6.477777777777778, + 7.033333333333333, + 7.588888888888889, + 8.144444444444444, + 8.7 + ], + [ + 3.7, + 4.2555555555555555, + 4.811111111111111, + 5.366666666666667, + 5.9222222222222225, + 6.477777777777778, + 7.033333333333333, + 7.588888888888889, + 8.144444444444444, + 8.7 + ], + [ + 3.7, + 4.2555555555555555, + 4.811111111111111, + 5.366666666666667, + 5.9222222222222225, + 6.477777777777778, + 7.033333333333333, + 7.588888888888889, + 8.144444444444444, + 8.7 + ], + [ + 3.7, + 4.2555555555555555, + 4.811111111111111, + 5.366666666666667, + 5.9222222222222225, + 6.477777777777778, + 7.033333333333333, + 7.588888888888889, + 8.144444444444444, + 8.7 + ], + [ + 3.7, + 4.2555555555555555, + 4.811111111111111, + 5.366666666666667, + 5.9222222222222225, + 6.477777777777778, + 7.033333333333333, + 7.588888888888889, + 8.144444444444444, + 8.7 + ], + [ + 3.7, + 4.2555555555555555, + 4.811111111111111, + 5.366666666666667, + 5.9222222222222225, + 6.477777777777778, + 7.033333333333333, + 7.588888888888889, + 8.144444444444444, + 8.7 + ] + ], + "y": [ + [ + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5, + 0.5 + ], + [ + 1.3222222222222224, + 1.3222222222222224, + 1.3222222222222224, + 1.3222222222222224, + 1.3222222222222224, + 1.3222222222222224, + 1.3222222222222224, + 1.3222222222222224, + 1.3222222222222224, + 1.3222222222222224 + ], + [ + 2.144444444444445, + 2.144444444444445, + 2.144444444444445, + 2.144444444444445, + 2.144444444444445, + 2.144444444444445, + 2.144444444444445, + 2.144444444444445, + 2.144444444444445, + 2.144444444444445 + ], + [ + 2.966666666666667, + 2.966666666666667, + 2.966666666666667, + 2.966666666666667, + 2.966666666666667, + 2.966666666666667, + 2.966666666666667, + 2.966666666666667, + 2.966666666666667, + 2.966666666666667 + ], + [ + 3.788888888888889, + 3.788888888888889, + 3.788888888888889, + 3.788888888888889, + 3.788888888888889, + 3.788888888888889, + 3.788888888888889, + 3.788888888888889, + 3.788888888888889, + 3.788888888888889 + ], + [ + 4.611111111111112, + 4.611111111111112, + 4.611111111111112, + 4.611111111111112, + 4.611111111111112, + 4.611111111111112, + 4.611111111111112, + 4.611111111111112, + 4.611111111111112, + 4.611111111111112 + ], + [ + 5.433333333333334, + 5.433333333333334, + 5.433333333333334, + 5.433333333333334, + 5.433333333333334, + 5.433333333333334, + 5.433333333333334, + 5.433333333333334, + 5.433333333333334, + 5.433333333333334 + ], + [ + 6.255555555555556, + 6.255555555555556, + 6.255555555555556, + 6.255555555555556, + 6.255555555555556, + 6.255555555555556, + 6.255555555555556, + 6.255555555555556, + 6.255555555555556, + 6.255555555555556 + ], + [ + 7.077777777777778, + 7.077777777777778, + 7.077777777777778, + 7.077777777777778, + 7.077777777777778, + 7.077777777777778, + 7.077777777777778, + 7.077777777777778, + 7.077777777777778, + 7.077777777777778 + ], + [ + 7.9, + 7.9, + 7.9, + 7.9, + 7.9, + 7.9, + 7.9, + 7.9, + 7.9, + 7.9 + ] + ], + "z": [ + [ + 6.515341102540549, + 6.3407727868978165, + 6.166204471255084, + 5.991636155612351, + 5.817067839969619, + 5.642499524326886, + 5.467931208684154, + 5.293362893041421, + 5.118794577398689, + 4.944226261755957 + ], + [ + 4.531874224181604, + 4.357305908538872, + 4.18273759289614, + 4.0081692772534065, + 3.8336009616106743, + 3.659032645967941, + 3.484464330325209, + 3.3098960146824767, + 3.1353276990397445, + 2.9607593833970123 + ], + [ + 2.5484073458226595, + 2.3738390301799273, + 2.199270714537195, + 2.024702398894462, + 1.8501340832517297, + 1.6755657676089966, + 1.5009974519662643, + 1.326429136323532, + 1.1518608206807999, + 0.9772925050380676 + ], + [ + 0.5649404674637166, + 0.3903721518209844, + 0.21580383617825216, + 0.041235520535519044, + -0.1333327951072132, + -0.3079011107499463, + -0.48246942639267854, + -0.6570377420354108, + -0.831606057678143, + -1.0061743733208752 + ], + [ + -1.4185264108952271, + -1.5930947265379594, + -1.7676630421806916, + -1.9422313578234247, + -2.116799673466157, + -2.29136798910889, + -2.4659363047516223, + -2.6405046203943545, + -2.8150729360370867, + -2.989641251679819 + ], + [ + -3.4019932892541718, + -3.576561604896904, + -3.7511299205396362, + -3.9256982361823693, + -4.100266551825102, + -4.274834867467835, + -4.449403183110567, + -4.623971498753299, + -4.798539814396031, + -4.973108130038764 + ], + [ + -5.385460167613116, + -5.560028483255849, + -5.734596798898581, + -5.909165114541314, + -6.083733430184046, + -6.258301745826779, + -6.432870061469512, + -6.607438377112244, + -6.782006692754976, + -6.956575008397708 + ], + [ + -7.368927045972061, + -7.543495361614793, + -7.7180636772575255, + -7.892631992900259, + -8.06720030854299, + -8.241768624185724, + -8.416336939828456, + -8.590905255471188, + -8.76547357111392, + -8.940041886756653 + ], + [ + -9.352393924331006, + -9.526962239973738, + -9.70153055561647, + -9.876098871259202, + -10.050667186901936, + -10.225235502544669, + -10.3998038181874, + -10.574372133830133, + -10.748940449472865, + -10.923508765115598 + ], + [ + -11.335860802689949, + -11.51042911833268, + -11.684997433975413, + -11.859565749618145, + -12.03413406526088, + -12.208702380903611, + -12.383270696546344, + -12.557839012189076, + -12.732407327831808, + -12.90697564347454 + ] + ] + } + ], + "layout": { + "height": 600, + "scene": { + "xaxis": { + "title": { + "text": "sepal length (cm)" + } + }, + "yaxis": { + "title": { + "text": "petal length (cm)" + } + }, + "zaxis": { + "title": { + "text": "petal width (cm)" + } + } + }, + "showlegend": true, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Scatter for three feature model" + }, + "width": 800 + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "y_pred = np.array(result_pds[0]['Prediction'])\n", + "y_virginica = x_val[y_pred == 1, : ]\n", + "y_non_virginica = x_val[y_pred == 0, : ]\n", + "\n", + "features = np.delete(x_val, [1], axis=1)\n", + "virginica = features[y_pred == 1, :]\n", + "non_virginica = features[y_pred == 0, :]\n", + "\n", + "trace0 = go.Scatter3d(x=virginica[:, 0], y=virginica[:, 1], z=virginica[:, 2], mode='markers', marker=dict(color='red'), name='Virginica')\n", + "trace1 = go.Scatter3d(x=non_virginica[:, 1], y=non_virginica[:, 1], z=non_virginica[:, 2], mode='markers', marker=dict(color='black'), name='Non-Virginica')\n", + "\n", + "x_min, x_max = features[:, 0].min() - 1, features[:, 0].max() + 1\n", + "y_min, y_max = features[:, 1].min() - 1, features[:, 1].max() + 1\n", + "z_min, z_max = features[:, 2].min() - 1, features[:, 2].max() + 1\n", + "\n", + "random_x, random_y = np.meshgrid(np.linspace(x_min, x_max, 10), np.linspace(y_min, y_max, 10))\n", + "random_z = -models[2].intercept_ / models[2].coef_[0][2] - models[2].coef_[0][0] / models[2].coef_[0][2] * random_x - models[2].coef_[0][1] / models[2].coef_[0][2] * random_y\n", + "\n", + "trace2 = go.Surface(x=random_x, y=random_y, z=random_z, surfacecolor=random_z, colorscale=[[0, 'lightgray'], [1, 'lightgray']], opacity=0.5, showscale=False, name='Decision Boundary')\n", + "\n", + "layout = go.Layout(title='Scatter for three feature model',\n", + " scene=dict(xaxis=dict(title='sepal length (cm)'),\n", + " yaxis=dict(title='petal length (cm)'),\n", + " zaxis=dict(title='petal width (cm)')),\n", + " showlegend=True, width=800, height=600)\n", + "\n", + "fig = go.Figure(data=[trace0, trace1, trace2], layout=layout)\n", + "fig.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 11. Failure models\n", + "According to the above graphs, the three models with significant prediction errors all have an accuracy of 66%." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 12. Best Models\n", + "According to the test results in this report, the model with 4 features is the best one." + ] } ], "metadata": { diff --git a/docs/PracticalLab6.html b/docs/PracticalLab6.html index 997fc0b..8c1d909 100644 --- a/docs/PracticalLab6.html +++ b/docs/PracticalLab6.html @@ -7501,6 +7501,7 @@

Practical Lab 6 - Logistic Regres import seaborn as sns from sklearn import datasets import matplotlib.pyplot as plt +import plotly.graph_objects as go from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split @@ -8225,13 +8226,13 @@

5. Use s @@ -8255,13 +8256,18 @@

6. S + + + + +