From 2f05bb8db878e4746026afff9aa722c7660346d4 Mon Sep 17 00:00:00 2001 From: CampusX <53361867+campusx-official@users.noreply.github.com> Date: Mon, 16 Aug 2021 19:14:39 +0530 Subject: [PATCH] Add files via upload --- adaboost_demo.ipynb | 3294 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3294 insertions(+) create mode 100644 adaboost_demo.ipynb diff --git a/adaboost_demo.ipynb b/adaboost_demo.ipynb new file mode 100644 index 0000000..e70ab71 --- /dev/null +++ b/adaboost_demo.ipynb @@ -0,0 +1,3294 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "adaboost-demo.ipynb", + "provenance": [], + "collapsed_sections": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "code", + "metadata": { + "id": "jclMT5MNSTlE" + }, + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from mlxtend.plotting import plot_decision_regions" + ], + "execution_count": 317, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "EF5WoGjUSayH" + }, + "source": [ + "df = pd.DataFrame()" + ], + "execution_count": 318, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "-gqo-BzHSc-h" + }, + "source": [ + "df['X1'] = [1,2,3,4,5,6,6,7,9,9]\n", + "df['X2'] = [5,3,6,8,1,9,5,8,9,2]\n", + "df['label'] = [1,1,0,1,0,1,0,1,0,0]" + ], + "execution_count": 319, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "4pFG25FGSfNT", + "outputId": "99b7a943-650f-4a79-82a1-47eb20d68b63" + }, + "source": [ + "df" + ], + "execution_count": 320, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2label
0151
1231
2360
3481
4510
5691
6650
7781
8990
9920
\n", + "
" + ], + "text/plain": [ + " X1 X2 label\n", + "0 1 5 1\n", + "1 2 3 1\n", + "2 3 6 0\n", + "3 4 8 1\n", + "4 5 1 0\n", + "5 6 9 1\n", + "6 6 5 0\n", + "7 7 8 1\n", + "8 9 9 0\n", + "9 9 2 0" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 320 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 296 + }, + "id": "o_LksXPgSgug", + "outputId": "2fca409c-1dcd-4944-c690-cf7b8fc85b08" + }, + "source": [ + "import seaborn as sns\n", + "sns.scatterplot(x=df['X1'],y=df['X2'],hue=df['label'])" + ], + "execution_count": 321, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 321 + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEGCAYAAABvtY4XAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAZYElEQVR4nO3dfXRV9Z3v8feXEAiPghgQCRCUFlFUMNFKsXQqUtQ62plxeXXEqzi3tF3ejnrv6nTsXev23q77hx07badT21sqU3VUqCLWNU6lOq2t9VaxAakiFKs8SKKVIwLKk3ngc/84h6ckxCScnX2y83mtdVY4v3Oyfx9I+GTnd/bZOyRhZmbZ0y/tAGZmlgwXvJlZRrngzcwyygVvZpZRLngzs4zqn3aAI5100kmqrq5OO4aZWa+xatWqdyRVtvdYSRV8dXU1dXV1accwM+s1ImLLsR7zEo2ZWUa54M3MMsoFb2aWUSW1Bt+epqYm6uvr2b9/f9pRjqmiooKqqirKy8vTjmJmdkjJF3x9fT3Dhg2jurqaiEg7ThuS2L59O/X19UyaNCntOGZmhyRa8BFxC/A5IIAfSfpOV7exf//+ki13gIhg1KhR5HK5tKNYX5J7Ff70Ekhw8lkw+vS0E1k3bH13Ly837GJfYwtTTh7GGWOH069f8bousYKPiGnky/18oBFYERGPS3qtG9sqdryiKvV8ljF/Wgv3Xg77duTvDxwONzwOp5yTbi7rks3v7GHBPb9j0zt7ACgvC+7/m4/xsVNHFW2OJF9knQqslLRXUjPwa+AvE5zPrG94Zfnhcgf44D1Yc396eaxb6rbsOFTuAE0t4ltPvcrexuaizZFkwa8FPhERoyJiMHAZML71kyJiYUTURUTd8SxzDB06tMPHN2/ezLRp07q0zRtvvJFly5Z1O5NZIt75Y9ux3Ib8co31Grn32x44svXdvexrbCnaHIkVvKT1wDeAJ4EVwBqgTXJJiyTVSqqtrGz33bZmdqSzrmo7NuN68FJhrzJjwsg2Y9ecP4FRQwcWbY5Ej4OXtFhSjaTZwA7g1STnA9i9ezdz5szh3HPP5ayzzuKxxx479FhzczPXXXcdU6dO5aqrrmLv3r0ArFq1ik9+8pPU1NQwb9483nrrraRjmnVf9Wy49B9g0EioOAHm/h847aK0U1kXTR9/Av987QxOHl5BRXk/Fs4+latqqoo7iaTEbsDowscJwB+AER09v6amRq2tW7euzVh7hgwZIklqamrSrl27JEm5XE6nnXaaDhw4oE2bNgnQs88+K0lasGCB7rzzTjU2NmrmzJnatm2bJGnp0qVasGCBJOmGG27Qww8/3Kn5O5vTrGh2vSntakg7hR2n3Hv71bBjr5pbDnTr84E6HaNTkz4O/pGIGAU0ATdL2pnwfEjiq1/9Ks888wz9+vWjoaGBt99+G4Dx48cza9YsAObPn893v/tdLrnkEtauXcvcuXMBaGlpYezYsUnHNDt+w/19mgUnDSvekkxriRa8pE8kuf32PPDAA+RyOVatWkV5eTnV1dWH3gXb+nDGiEASZ555Js8991xPRzUzS1TmzkWza9cuRo8eTXl5OU8//TRbthw+k+Ybb7xxqMgffPBBLrzwQqZMmUIulzs03tTUxCuvvJJKdjOzYspcwV933XXU1dVx1llncd9993H66Yff4TdlyhTuuusupk6dyo4dO/jiF7/IgAEDWLZsGV/5ylc455xzmD59Or/97W9T/BuYmRVHqISOna2trVXrC36sX7+eqVOnppSo83pLTjPLlohYJam2vccytwdvZmZ5Lngzs4xywZuZZZQL3swso1zwZmYZ5YI3M8soF3wnrFixgilTpjB58mTuuOOOtOOYmXWKC/5DtLS0cPPNN/PEE0+wbt06lixZwrp169KOZWb2oUr+ottd9dMXG7jz5xt4c+c+ThkxiC/Pm8JnZ4zr9vZeeOEFJk+ezKmnngrANddcw2OPPcYZZ5xRrMhmZonI1B78T19s4PblL9Owcx8CGnbu4/blL/PTFxu6vc2GhgbGjz98IaqqqioaGrq/PTOznpKpgr/z5xvY13T0RaP2NbVw5883pJTIzCw9mSr4N3fu69J4Z4wbN46tW7ceul9fX8+4cd1f8jEz6ymZKvhTRgzq0nhnnHfeefzxj39k06ZNNDY2snTpUq644opub8860NIMB4p3wWFLyYGW/NfSUpdowUfEbRHxSkSsjYglEVGR5HxfnjeFQeVlR40NKi/jy/OmdHub/fv353vf+x7z5s1j6tSpXH311Zx55pnHG9WO9MFu2PAE3P9X8JPrYdNvoKUp7VTWVS1N+a/dT66HB66CDSvyX1tLTWJH0UTEOOBvgTMk7YuIh4BrgHuSmvPg0TLFPIoG4LLLLuOyyy4rRkRrz6Zfw9K/Pnz/1Sdgwc9gwsz0MlnX1dfBfX8OB09BvvFpuGYJnO7/O2lJ+jDJ/sCgiGgCBgNvJjwfn50x7rgL3XpQcyM8d9fRYzoA6//dBd/brP+3w+V+0PN3weSLof+AdDL1cYkt0UhqAL4JvAG8BeyS9GTr50XEwoioi4i6XC6XVBwrVQGUtXPRYRdC79O/va/jIPJfZEtDYgUfESOBK4FJwCnAkIiY3/p5khZJqpVUW1lZmVQcK1VlA2DWl9qOTfGv9b3O6Z/Jf+0OioCZN0P/8vQy9XFJLtFcDGySlAOIiOXAx4H7E5zTeqMJs+CGx+GV5TBgKJxxJYyrSTuVddW4mvxrJ688Bk17YNpfwbjz0k7VpyVZ8G8AF0TEYGAfMAeo6/hTrE8qHwiTPpG/We8VAVXn5W9WEpJcg18JLANWAy8X5lqU1HxmZna0RI+Dl/Q1SadLmibpekkfJDlfUm666SZGjx7NtGnT0o5iZtZpmXona1JuvPFGVqxYkXYMM7MuyV7Bv/QQfHsa/K8R+Y8vPXTcm5w9ezYnnnhiEcKZmfWcbJ0P/qWH4N/+FpoKJxfbtTV/H+Dsq9PLZWaWgmztwf/i64fL/aCmfflxM7M+JlsFv6u+a+NmZhmWrYI/oapr42ZmGZatgp/zP6G81bnfywflx4/Dtddey8yZM9mwYQNVVVUsXrz4uLZnZtYTsvUi68EXUn/x9fyyzAlV+XI/zhdYlyxZUoRwZmY9K1sFD/ky9xEzZmYZW6IxM7NDekXBq/VFBEpMqeczs76p5Au+oqKC7du3l2yJSmL79u1UVCR6uVkzsy4r+TX4qqoq6uvrKeWrPVVUVFBV5UMxzay0lHzBl5eXM2nSpLRjmJn1OiW/RGNmZt3jgjczy6gkL7o9JSLWHHF7LyJuTWo+MzM7WmJr8JI2ANMBIqIMaAAeTWo+MzM7Wk8t0cwBXpe0pYfmMzPr83qq4K8B2j2hS0QsjIi6iKgr5UMhzcx6m8QLPiIGAFcAD7f3uKRFkmol1VZWViYdx8ysz+iJPfhLgdWS3u6BuczMrKAnCv5ajrE8Y2ZmyUm04CNiCDAXWJ7kPGZm1laipyqQtAcYleQcZmbWPr+T1cwso1zwZmYZ5YI3M8soF7yZWUa54M3MMsoFb2aWUS54M7OMcsGbmWWUC97MLKNc8GZmGeWCNzPLKBe8mVlGueDNzDLKBW9mllEueDOzjEr0fPARMQK4G5gGCLhJ0nNJzmkd27J9D69t283A/v346MnDGD2sIu1IZpaQRAse+CdghaSrChffHpzwfNaBtQ27uH7xSnbsbQJg+vgR/PO10xl/4pCUk5lZEhJboomIE4DZwGIASY2SdiY1n3WsqfkAP/rNxkPlDrBm606e3/huiqnMLElJrsFPAnLAjyPixYi4u3CN1qNExMKIqIuIulwul2Ccvm1vYzO/39r25+tr23ankMbMekKSBd8fOBf4gaQZwB7g71s/SdIiSbWSaisrKxOM07cNH1TOn59zSpvx2uoTU0hjZj0hyYKvB+olrSzcX0a+8C0FEcFVNVVcOu1kAAaU9ePWiz9C7cSRKSczs6Qk9iKrpD9FxNaImCJpAzAHWJfUfPbhJo4awreuns5tc/fSv18wcdQQyvpF2rHMLCFJH0XzJeCBwhE0G4EFCc9nH2LQgDI+OmZY2jHMrAckWvCS1gC1Sc5hZmbt8ztZzcwyygVvZpZRLngzs4xywZuZZZQL3swso1zwZmYZ5YI3M8soF7yZWUa54M3MMsoFb2aWUS54M7OMcsGbmWWUC97MLKNc8GZmGeWCNzPLKBe8mVlGdXjBj4gYDlRKer3V+NmSXvqwjUfEZuB9oAVollTci398sBu2roQNK+CEcfCRT8OYM4o6hVmpOXBA/L5+J79Yv40WiYtPH8P0CSN8+UVr45gFHxFXA98BtkVEOXCjpN8VHr6Hzl9A+1OS3jmulMey4QlY/l8O3//td2HBCqj8aCLTmZWCNVt38p8WPUdTiwBY9MxGln7uAs6bdGLKyazUdLRE81WgRtJ08tdS/deI+IvCY+nvKux5B3759aPH9m6Ht9akk8eshzz6Yv2hcgdoOSDuX7klxURWqjpaoimT9BaApBci4lPA4xExHlAHn3ckAU9GhIAfSlrU+gkRsRBYCDBhwoTOJz/QDE372o43N3Z+G2a90Pv7m9uM7d7fjCQi0t/3stLR0R78+xFx2sE7hbL/M+BK4MxObv9CSecClwI3R8Ts1k+QtEhSraTaysrKzicfdjLMuvXosf4DYezZnd+GWS90Vc34NmPzL5jocrc2OtqD/wKtlmIkvR8RlwC3d2bjkhoKH7dFxKPA+cAz3cza1tlXw8BhULcYRkyEmf8VTj6raJs3K0U11SP48Y3nseiZ12k+IBbOPo3zvf5u7Qip/dWWiNgI/F/gHyW1FMbGAP8InP5hR8RExBCgX+GHwhDgKeDrklYc63Nqa2tVV1fX9b9F017oNwDKOjwoyCxTGptbABjQvyzlJJamiFh1rD7uaImmBjgVWBMRF0XELcALwHPk98Q/zBjg2Yj4feHz/r2jcj8u5YNd7tbnDOhf5nK3Dh2zFSXtAL5QKPb/AN4ELpBU35kNS9oInFOUlGZm1mXH3IOPiBER8UPyh0heAiwDnoiIi3oqnJmZdV9H6xqrge8DN0tqJn+443Tg+xGxRdK1PZLQzMy6paOCn916OUbSGuDjEfG5ZGOZmdnxOuYSTUdr7ZJ+lEwcMzMrFp9N0swso1zwZmYZ5YI3M8soF7yZWUa54M3MMsoFb2aWUS54M7OMcsGbmWWUC97MLKNc8GZmGeWCNzPLKBe8mVlGJV7wEVEWES9GxONJz2VmZof1xB78LcD6HpjHzMyOkGjBR0QV8Bng7iTnMTOztpLeg/8O8HfAgWM9ISIWRkRdRNTlcrmE45iZ9R2JFXxEXA5sk7Sqo+dJWiSpVlJtZWVlUnHMzPqcJPfgZwFXRMRmYClwUUTcn+B8ZmZ2hMQKXtLtkqokVQPXAL+UND+p+czM7Gg+Dt7MLKP698Qkkn4F/Kon5jIzszzvwZuZZZQL3swso1zwZmYZ5YI3M8soF7yZWUa54M3MMsoFb2aWUS54M7OMcsGbmWWUC97MLKNc8GZmGeWCNzPLKBe8mVlGueDNzDLKBW9mllGJnQ8+IiqAZ4CBhXmWSfpaUvOVnPffhndfh/JBcNJHYMDQtBOZWR+T5AU/PgAukrQ7IsqBZyPiCUnPJzhnaXh7Hfxkfr7gAc69AS76HzB0TLq5zKxPSfKarJK0u3C3vHBTUvOVjOZGePbbh8sdYPW9UF+XXiYz65MSXYOPiLKIWANsA56StLKd5yyMiLqIqMvlcknG6Rn7d8KmX7Ud3/aHHo9iZn1bogUvqUXSdKAKOD8iprXznEWSaiXVVlZWJhmnZ1SMgFM/1XZ89NSez2JmfVqPHEUjaSfwNHBJT8yXqv4DYNZtMGry4bGaBVBVk14mM+uTkjyKphJokrQzIgYBc4FvJDVfSRkzFW78Gby7sXAUzWQfRWNmPS7Jo2jGAvdGRBn53xQekvR4gvOVlmFj8jczs5QkVvCSXgJmJLV9MzPrmN/JamaWUS54M7OMcsGbmWWUC97MLKNc8GZmGeWCNzPLKBe8mVlGueDNzDLKBW9mllEueDOzjHLBm5lllAvezCyjXPBmZhnlgjczyygXvJlZRrngzcwyKslL9o0H7gPGAAIWSfqnpOYzM+ttNr+zh5fqd7GnsZkzxg5n2rgTKOsXRdt+kpfsawb+u6TVETEMWBURT0lal+CcZma9wsbcbv7z4pXU79wPQFm/4L6bzmfW5JOKNkdiSzSS3pK0uvDn94H1wLik5jMz603qtuw4VO4ALQfEt5/awJ4Pmos2R4+swUdENfnrs65s57GFEVEXEXW5XK4n4piZpe7dPY1txt7a9QH7m1qKNkfiBR8RQ4FHgFslvdf6cUmLJNVKqq2srEw6jplZSaiZMKLN2PwLJjBq6MCizZFowUdEOflyf0DS8iTnMjPrTc6uGsEPr6/h1MohjBxczm1zP8JfzKgq6hxJHkUTwGJgvaRvJTWPmVlvNLC8jHlnnsz51SfS2HKA0cMGkq/N4klyD34WcD1wUUSsKdwuS3A+M7NeZ+SQAYwZXlH0cocE9+AlPQsUP7GZmXWK38lqZpZRLngzs4xywZuZZZQL3swso1zwZmYZ5YI3M8soF7yZWUa54M3MMsoFb2aWUS54M7OMcsGbmWWUC97MLKNc8GZmGeWCNzPLKBe8mVlGueDNPsQHTS00NhfvQshmPSXJS/b9C3A5sE3StKTmMUvKng+a+X+vvcOPntlIWVnw+dmnMfO0UVSUl6UdzaxTktyDvwe4JMHtmyVq5abtLPzXVfxuyw6e3/guC+75Hau27Eg7llmnJVbwkp4B3k1q+2ZJksR9z21pM/7I6voU0ph1T+pr8BGxMCLqIqIul8ulHccMgIhg+MC2K5jDB5ankMase1IveEmLJNVKqq2srEw7jtkh82dOpKzf4evGl5cFV04/JcVEZl2T2IusZr1dzcQTeejzM/nl+rcpKwsuOn00Z48bkXYss05zwZsdQ1m/oGbiSGomjkw7ilm3JLZEExFLgOeAKRFRHxF/k9RcZmbWVmJ78JKuTWrbZmb24VJ/kdXMzJLhgjczyygXvJlZRrngzcwyKiSlneGQiMgBbd8f3jknAe8UMU6xOFfXOFfXOFfXZDHXREntvku0pAr+eEREnaTatHO05lxd41xd41xd09dyeYnGzCyjXPBmZhmVpYJflHaAY3CurnGurnGurulTuTKzBm9mZkfL0h68mZkdwQVvZpZRvb7gI+JfImJbRKxNO8tBETE+Ip6OiHUR8UpE3JJ2JoCIqIiIFyLi94Vc/zvtTEeKiLKIeDEiHk87y5EiYnNEvBwRayKiLu08B0XEiIhYFhF/iIj1ETGzBDJNKfw7Hby9FxG3pp0LICJuK3zfr42IJRFRkXYmgIi4pZDplWL/W/X6NfiImA3sBu6TNC3tPAARMRYYK2l1RAwDVgGflbQu5VwBDJG0OyLKgWeBWyQ9n2augyLivwG1wHBJl6ed56CI2AzUSiqpN8hExL3AbyTdHREDgMGSdqad66CIKAMagI9J6u4bGIuVZRz57/czJO2LiIeAn0m6J+Vc04ClwPlAI7AC+IKk14qx/V6/B1+KF/eW9Jak1YU/vw+sB8almwqUt7twt7xwK4mf8BFRBXwGuDvtLL1BRJwAzAYWA0hqLKVyL5gDvJ52uR+hPzAoIvoDg4E3U84DMBVYKWmvpGbg18BfFmvjvb7gS11EVAMzgJXpJskrLIOsAbYBT0kqiVzAd4C/Aw6kHaQdAp6MiFURsTDtMAWTgBzw48Ky1t0RMSTtUK1cAyxJOwSApAbgm8AbwFvALklPppsKgLXAJyJiVEQMBi4Dxhdr4y74BEXEUOAR4FZJ76WdB0BSi6TpQBVwfuFXxFRFxOXANkmr0s5yDBdKOhe4FLi5sCyYtv7AucAPJM0A9gB/n26kwwpLRlcAD6edBSAiRgJXkv/BeAowJCLmp5sKJK0HvgE8SX55Zg3QUqztu+ATUljjfgR4QNLytPO0Vvh1/mngkrSzALOAKwpr3UuBiyLi/nQjHVbY+0PSNuBR8uulaasH6o/4DWwZ+cIvFZcCqyW9nXaQgouBTZJykpqA5cDHU84EgKTFkmokzQZ2AK8Wa9su+AQUXsxcDKyX9K208xwUEZURMaLw50HAXOAP6aYCSbdLqpJUTf7X+l9KSn3vCiAihhReKKewBPJp8r9Wp0rSn4CtETGlMDQHSPVF/FaupUSWZwreAC6IiMGF/59zyL82lrqIGF34OIH8+vuDxdp2Ytdk7SmFi3v/GXBSRNQDX5O0ON1UzAKuB14urHcDfFXSz1LMBDAWuLdwdEM/4CFJJXVIYgkaAzya7wT6Aw9KWpFupEO+BDxQWA7ZCCxIOQ9w6AfhXODzaWc5SNLKiFgGrAaagRcpndMWPBIRo4Am4OZivlje6w+TNDOz9nmJxswso1zwZmYZ5YI3M8soF7yZWUa54M3MMsoFb3aEwplAN0XEiYX7Iwv3qyNiRUTsLLWzXZodiwve7AiStgI/AO4oDN0BLJK0GbiT/PsbzHoFF7xZW98m/67HW4ELyZ+kCkm/AN5PM5hZV/T6d7KaFZukpoj4MvmTP326cO4Ss17He/Bm7buU/GllUz/bpll3ueDNWomI6eTPpXIBcFvhCl1mvY4L3uwIhTMN/oD8OfzfIP/C6jfTTWXWPS54s6N9DnhD0lOF+98HpkbEJyPiN+QvYDEnIuojYl5qKc06wWeTNDPLKO/Bm5lllAvezCyjXPBmZhnlgjczyygXvJlZRrngzcwyygVvZpZR/x/wYLQEZS4qHgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "z1FU8a3eSlg3" + }, + "source": [ + "df['weights'] = 1/df.shape[0]" + ], + "execution_count": 322, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "vPmSZVAVS0r6", + "outputId": "3fca2438-7733-4f88-8060-42ae35b3502c" + }, + "source": [ + "df" + ], + "execution_count": 323, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2labelweights
01510.1
12310.1
23600.1
34810.1
45100.1
56910.1
66500.1
77810.1
89900.1
99200.1
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights\n", + "0 1 5 1 0.1\n", + "1 2 3 1 0.1\n", + "2 3 6 0 0.1\n", + "3 4 8 1 0.1\n", + "4 5 1 0 0.1\n", + "5 6 9 1 0.1\n", + "6 6 5 0 0.1\n", + "7 7 8 1 0.1\n", + "8 9 9 0 0.1\n", + "9 9 2 0 0.1" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 323 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "N3TjT8veS5N-" + }, + "source": [ + "from sklearn.tree import DecisionTreeClassifier" + ], + "execution_count": 324, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "UScWCgRyTA1G" + }, + "source": [ + "dt1 = DecisionTreeClassifier(max_depth=1)" + ], + "execution_count": 325, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "aCPCyBdgTEYG" + }, + "source": [ + "X = df.iloc[:,0:2].values\n", + "y = df.iloc[:,2].values" + ], + "execution_count": 326, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1V126mCBTNnC", + "outputId": "16aa7d42-7b7d-4868-b1c8-83fc51f5df15" + }, + "source": [ + "# Step 2 - Train 1st model\n", + "dt1.fit(X,y)" + ], + "execution_count": 327, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',\n", + " max_depth=1, max_features=None, max_leaf_nodes=None,\n", + " min_impurity_decrease=0.0, min_impurity_split=None,\n", + " min_samples_leaf=1, min_samples_split=2,\n", + " min_weight_fraction_leaf=0.0, presort='deprecated',\n", + " random_state=None, splitter='best')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 327 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 300 + }, + "id": "Z3CITcNwioZY", + "outputId": "cdc825af-a828-42c2-f726-ea780afa5c90" + }, + "source": [ + "from sklearn.tree import plot_tree\n", + "plot_tree(dt1)" + ], + "execution_count": 328, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[Text(167.4, 163.07999999999998, 'X[1] <= 2.5\\ngini = 0.5\\nsamples = 10\\nvalue = [5, 5]'),\n", + " Text(83.7, 54.360000000000014, 'gini = 0.0\\nsamples = 2\\nvalue = [2, 0]'),\n", + " Text(251.10000000000002, 54.360000000000014, 'gini = 0.469\\nsamples = 8\\nvalue = [3, 5]')]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 328 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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xYUMDAzo7Nmz1bpXVZFMH6jO9vxUg9Xx2muvEQBatmxZjcsi0k3Q5fZZ/9pnbGwsGRkZkUgkkn4oeXl5kUgkosDAQCooKFC5LGVqddBt3749NW3atNrHS3z00UcEQG5OTEkj/PTTT+WOeeuttwgA9e3bVy5v5cqVBIDmzZunsLwRI0bIHXPt2jUyNDQkMzMzKioqkqYratSnT58mANSnTx+F17Nnzx4CQO+99540TVP3auPGjRQeHq7Wdv78+Rqdc926dQSAHB0d6eHDhzW+BiLdBF1un/Wzfe7fv186L7Rks7e3pzVr1sh9aFaHukFXp3MveHl5YevWrRg/fjzef/99hQsgVkZESEpKQmJiIm7duoUnT56AiKTrKykbAB8wYIBcmmTxOkV5krWwJCvBPi8sLEwuzdHRET179kRSUhJOnz6NPn36KL2OI0eOAHi2XIkikqVOTp48KU1T914po+vluZOSkjB9+nQYGxtj69at0pVc6wJun/WvfS5atAiffvopJk2ahPfffx/29vb4448/EBkZiXfffRfnz5/HmjVrtHZ+hdSJ0FTD3sT169fJw8ND+mljY2NDQUFB9N1338n8SUNEVFBQIP0kV7bNnz9f5hjJ/leuXJE7t+QTXtEM88pm+JeUV/nPqsrefvttAkA7duyQO0/lnsSUKVNU+rOpTZs21bpXtcX//vc/atq0KQmCQNu3b9do2dBBT5fbZ/1qn0eOHCEANGTIELm8wsJCsre3J0EQ6Ny5czU6jypts/Km056ug4MDTp06hV9//RX79u1DYmIidu3ahV27duHLL79EcnKytGckmZW+X79+WLBgAdzd3WFubg4DAwNs2LABkyZNkvyiyVG0TLMqedoieTPLx8cHzs7OSvd76aWXpP9W515VRZvLc1d29epV+Pn54f79+1i1apXC3ldtx+2zfrXP2NhYAEBwcLBcXpMmTeDv749NmzYhOTlZp0ux63xqR0NDQ/j5+cHPzw/As1/W8PBwHD9+HCtWrMAnn3wCANizZw8MDAywZ88emJuby5Rx5coVndb52rVr6Ny5s1z69evXATxbvK8qLVu2BACEhIQgIiJC5fOqeq+qos3luSVycnIwYMAA5OTk4OOPP8Z7772n1vlqE26f9ad9/v333wAACwsLhfmSdGVLu2uL3l+OaNWqFSIjIwEA586dk6YXFBTA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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 340 + }, + "id": "uY_6_xIGTQWe", + "outputId": "b877ea07-54a0-47e8-a3dc-623418c7752b" + }, + "source": [ + "plot_decision_regions(X, y, clf=dt1, legend=2)" + ], + "execution_count": 329, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mlxtend/plotting/decision_regions.py:244: MatplotlibDeprecationWarning: Passing unsupported keyword arguments to axis() will raise a TypeError in 3.3.\n", + " ax.axis(xmin=xx.min(), xmax=xx.max(), y_min=yy.min(), y_max=yy.max())\n" + ], + "name": "stderr" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 329 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dPrZxbHTTWd7" + }, + "source": [ + "df['y_pred'] = dt1.predict(X)" + ], + "execution_count": 330, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "kxDkSAFNTloe", + "outputId": "1b9ceb04-f546-4e90-afad-10eac5c6b375" + }, + "source": [ + "df" + ], + "execution_count": 331, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2labelweightsy_pred
01510.11
12310.11
23600.11
34810.11
45100.10
56910.11
66500.11
77810.11
89900.11
99200.10
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights y_pred\n", + "0 1 5 1 0.1 1\n", + "1 2 3 1 0.1 1\n", + "2 3 6 0 0.1 1\n", + "3 4 8 1 0.1 1\n", + "4 5 1 0 0.1 0\n", + "5 6 9 1 0.1 1\n", + "6 6 5 0 0.1 1\n", + "7 7 8 1 0.1 1\n", + "8 9 9 0 0.1 1\n", + "9 9 2 0 0.1 0" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 331 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "yGzI8uq-Tm29" + }, + "source": [ + "def calculate_model_weight(error):\n", + "\n", + " return 0.5*np.log((1-error)/(error))" + ], + "execution_count": 332, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "qfY_9p0aUCDa", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "0477cac7-7192-460b-b02e-3f49b54913c7" + }, + "source": [ + "# Step 3 - calculate model weight\n", + "alpha1 = calculate_model_weight(0.3)\n", + "alpha1" + ], + "execution_count": 333, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.42364893019360184" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 333 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "PqFYf75LUEAG" + }, + "source": [ + "# Step 4 - Update weights\n", + "def update_row_weights(row,alpha=0.423):\n", + " if row['label'] == row['y_pred']:\n", + " return row['weights'] * np.exp(-alpha)\n", + " else:\n", + " return row['weights'] * np.exp(alpha)" + ], + "execution_count": 334, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "xKzvNNO8UWnj" + }, + "source": [ + "df['updated_weights'] = df.apply(update_row_weights,axis=1)" + ], + "execution_count": 335, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "pBfKBm5mUwtg", + "outputId": "a57e4af3-d7b6-429b-db71-76b4a18401ae" + }, + "source": [ + "df" + ], + "execution_count": 336, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2labelweightsy_predupdated_weights
01510.110.065508
12310.110.065508
23600.110.152653
34810.110.065508
45100.100.065508
56910.110.065508
66500.110.152653
77810.110.065508
89900.110.152653
99200.100.065508
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights y_pred updated_weights\n", + "0 1 5 1 0.1 1 0.065508\n", + "1 2 3 1 0.1 1 0.065508\n", + "2 3 6 0 0.1 1 0.152653\n", + "3 4 8 1 0.1 1 0.065508\n", + "4 5 1 0 0.1 0 0.065508\n", + "5 6 9 1 0.1 1 0.065508\n", + "6 6 5 0 0.1 1 0.152653\n", + "7 7 8 1 0.1 1 0.065508\n", + "8 9 9 0 0.1 1 0.152653\n", + "9 9 2 0 0.1 0 0.065508" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 336 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "fQcGzVY8rqDX", + "outputId": "67dbb3ef-0514-43d7-afe7-811e9ad3a4d0" + }, + "source": [ + "df['updated_weights'].sum()" + ], + "execution_count": 337, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.9165153319682015" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 337 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "a_l7TmfnUxiD" + }, + "source": [ + "df['nomalized_weights'] = df['updated_weights']/df['updated_weights'].sum()" + ], + "execution_count": 338, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "TlC--WA3U_L5", + "outputId": "4166220b-2e7f-4899-a2cf-c7535806d315" + }, + "source": [ + "df" + ], + "execution_count": 339, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2labelweightsy_predupdated_weightsnomalized_weights
01510.110.0655080.071475
12310.110.0655080.071475
23600.110.1526530.166559
34810.110.0655080.071475
45100.100.0655080.071475
56910.110.0655080.071475
66500.110.1526530.166559
77810.110.0655080.071475
89900.110.1526530.166559
99200.100.0655080.071475
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights y_pred updated_weights nomalized_weights\n", + "0 1 5 1 0.1 1 0.065508 0.071475\n", + "1 2 3 1 0.1 1 0.065508 0.071475\n", + "2 3 6 0 0.1 1 0.152653 0.166559\n", + "3 4 8 1 0.1 1 0.065508 0.071475\n", + "4 5 1 0 0.1 0 0.065508 0.071475\n", + "5 6 9 1 0.1 1 0.065508 0.071475\n", + "6 6 5 0 0.1 1 0.152653 0.166559\n", + "7 7 8 1 0.1 1 0.065508 0.071475\n", + "8 9 9 0 0.1 1 0.152653 0.166559\n", + "9 9 2 0 0.1 0 0.065508 0.071475" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 339 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "BiGnCS0zU_wJ", + "outputId": "c2203815-f5d1-4fc6-b089-b791ab47e644" + }, + "source": [ + "df['nomalized_weights'].sum()" + ], + "execution_count": 340, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1.0" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 340 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "K1f2ULYHVEkO" + }, + "source": [ + "df['cumsum_upper'] = np.cumsum(df['nomalized_weights'])" + ], + "execution_count": 341, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "xBWo1m45VTTd" + }, + "source": [ + "df['cumsum_lower'] = df['cumsum_upper'] - df['nomalized_weights']" + ], + "execution_count": 342, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "oFyKwqOTVfI1", + "outputId": "ea1353e8-b573-4f9f-ac81-007d2dca43c3" + }, + "source": [ + "df[['X1','X2','label','weights','y_pred','updated_weights','cumsum_lower','cumsum_upper']]" + ], + "execution_count": 343, + "outputs": [ + { + "output_type": "execute_result", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
X1X2labelweightsy_predupdated_weightscumsum_lowercumsum_upper
01510.110.0655080.0000000.071475
12310.110.0655080.0714750.142950
23600.110.1526530.1429500.309508
34810.110.0655080.3095080.380983
45100.100.0655080.3809830.452458
56910.110.0655080.4524580.523933
66500.110.1526530.5239330.690492
77810.110.0655080.6904920.761967
89900.110.1526530.7619670.928525
99200.100.0655080.9285251.000000
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights y_pred updated_weights cumsum_lower cumsum_upper\n", + "0 1 5 1 0.1 1 0.065508 0.000000 0.071475\n", + "1 2 3 1 0.1 1 0.065508 0.071475 0.142950\n", + "2 3 6 0 0.1 1 0.152653 0.142950 0.309508\n", + "3 4 8 1 0.1 1 0.065508 0.309508 0.380983\n", + "4 5 1 0 0.1 0 0.065508 0.380983 0.452458\n", + "5 6 9 1 0.1 1 0.065508 0.452458 0.523933\n", + "6 6 5 0 0.1 1 0.152653 0.523933 0.690492\n", + "7 7 8 1 0.1 1 0.065508 0.690492 0.761967\n", + "8 9 9 0 0.1 1 0.152653 0.761967 0.928525\n", + "9 9 2 0 0.1 0 0.065508 0.928525 1.000000" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 343 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "EopBs2EdVtQx" + }, + "source": [ + "def create_new_dataset(df):\n", + "\n", + " indices = []\n", + "\n", + " for i in range(df.shape[0]):\n", + " a = np.random.random()\n", + " for index,row in df.iterrows():\n", + " if row['cumsum_upper'] > a and a > row['cumsum_lower']:\n", + " indices.append(index)\n", + " return indices" + ], + "execution_count": 344, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "yNCXzhisV8oc", + "outputId": "e63ca1ff-22c6-4be0-a8ab-3aa9f9369c4c" + }, + "source": [ + "index_values = create_new_dataset(df)\n", + "\n", + "index_values" + ], + "execution_count": 345, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[4, 2, 0, 8, 3, 9, 6, 8, 4, 0]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 345 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "1Kv4SeR2V-6p" + }, + "source": [ + "second_df = df.iloc[index_values,[0,1,2,3]]" + ], + "execution_count": 346, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "jBM7A-ZHARJ9", + "outputId": "4ec0d6a8-76ec-42f0-b3c8-cbe6926b2bcd" + }, + "source": [ + "second_df" + ], + "execution_count": 347, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2labelweights
45100.1
23600.1
01510.1
89900.1
34810.1
99200.1
66500.1
89900.1
45100.1
01510.1
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights\n", + "4 5 1 0 0.1\n", + "2 3 6 0 0.1\n", + "0 1 5 1 0.1\n", + "8 9 9 0 0.1\n", + "3 4 8 1 0.1\n", + "9 9 2 0 0.1\n", + "6 6 5 0 0.1\n", + "8 9 9 0 0.1\n", + "4 5 1 0 0.1\n", + "0 1 5 1 0.1" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 347 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "PL0CKvkiXP2J" + }, + "source": [ + "dt2 = DecisionTreeClassifier(max_depth=1)" + ], + "execution_count": 348, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "pLgfOuq_XVJg" + }, + "source": [ + "X = second_df.iloc[:,0:2].values\n", + "y = second_df.iloc[:,2].values" + ], + "execution_count": 349, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IZV0apJZXcbl", + "outputId": "5b6be595-36e5-4c80-de75-39de4f88f08f" + }, + "source": [ + "dt2.fit(X,y)" + ], + "execution_count": 350, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',\n", + " max_depth=1, max_features=None, max_leaf_nodes=None,\n", + " min_impurity_decrease=0.0, min_impurity_split=None,\n", + " min_samples_leaf=1, min_samples_split=2,\n", + " min_weight_fraction_leaf=0.0, presort='deprecated',\n", + " random_state=None, splitter='best')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 350 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 300 + }, + "id": "Dra7Xk7knVoy", + "outputId": "b0888c62-0c46-49dd-d319-95e1019aaf6c" + }, + "source": [ + "plot_tree(dt2)" + ], + "execution_count": 351, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[Text(167.4, 163.07999999999998, 'X[0] <= 4.5\\ngini = 0.42\\nsamples = 10\\nvalue = [7, 3]'),\n", + " Text(83.7, 54.360000000000014, 'gini = 0.375\\nsamples = 4\\nvalue = [1, 3]'),\n", + " Text(251.10000000000002, 54.360000000000014, 'gini = 0.0\\nsamples = 6\\nvalue = [6, 0]')]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 351 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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w8PVXmzu6empUtve3t4QiUTYv3+/3DTI48ePERMTAzMzM5W+zOvbt6/S/syePRsAsHjxYhARIiIiih2bmZmJnj174vbt2xg7dqxGVn2wioODbiU2fPhwGBkZYf369YiPj5eV5+Tk4Ouvv65yD1epX78+/P39kZaWhunTp8vK8/PzERQUhLy8PIwbNw7GxsbFjhs6dCicnJywd+/eMvchOzsbvXr1wtWrVxEQEICff/65zG2yioWnFyqxxo0bY8GCBZg6dSo6d+6MLl26wMLCArGxsTAwMEDv3r2xf/9+uSBTmf300084e/YsVqxYgZMnT8LZ2Rnnz59HUlIS2rRpg2+//VbumLt37yIxMRHPnz8v8/m/+eYbnD17FgYGBhCJRBgxYoTcPrVr11b4hDJWOXDQreSCg4PRoEEDLF68GNHR0TAzM4O3tzd+/PFHDB06FAAULgGrrKysrHDhwgV89913iIyMxN69e2FtbY3p06dj1qxZStfwakpmZiYAoKCgAFu3blW4j52dHQfdSoxzpOmRPnOkvXr1Cvb29nj9+jWeP38OAwMDvfSD6QfnSNMfntOt5G7fvi33sfjly5cYM2YM0tPTMWDAAA64jOkQX+nqkS6udOfNm4d58+ahTZs2aNCgATIzM5GQkID09HTY29sjPj6+THdTsYqJr3T1h+d0K7nu3bvj6tWriI+PR0JCAogItra2CAwMxPTp01GnTh19d5GxKoWvdPVIn3O6rGrjK1394TldxhjTIQ66jDGmQxx0WbkwZ84cCIKA8PBwfXdFJ6KiovD999+jV69eqFOnDgRBQIsWLd57XHZ2NmbOnAkHBwdIJBLY2NggKCgI6enpOug10wT+Io0xPZg4caIsfZCqsrOz4e7ujosXL6JRo0bo06cP/vzzT6xevRqHDx/GuXPnONVPBcBXuozpQY8ePTB//nwcO3ZM5QcP/fDDD7h48SL69++PxMREbN++HdeuXcP48eORkpKCr7/+Wsu9Zhqh73TEVXkDp2CXkaYt37Bhg767onPJyckEgJo3b650n9zcXDIzMyNjY2NKTU0tVpeTk0N16tQhkUhEDx8+VOmc4BTsetv4SreCiI2NhY+PD2xtbSEWi1G3bl24ubnhm2++KfaYwpycHISFhaF3795o2LAhJBIJLCws0L17dxw+fFhh256enhAEASkpKdi8eTNc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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 340 + }, + "id": "RjhOT6sGXeQw", + "outputId": "3d4b0ccf-5b0a-4d74-b9b3-89ec7788b461" + }, + "source": [ + "plot_decision_regions(X, y, clf=dt2, legend=2)" + ], + "execution_count": 352, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mlxtend/plotting/decision_regions.py:244: MatplotlibDeprecationWarning: Passing unsupported keyword arguments to axis() will raise a TypeError in 3.3.\n", + " ax.axis(xmin=xx.min(), xmax=xx.max(), y_min=yy.min(), y_max=yy.max())\n" + ], + "name": "stderr" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 352 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Ipwxb1SfXjTw" + }, + "source": [ + "second_df['y_pred'] = dt2.predict(X)" + ], + "execution_count": 353, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "zLwingKnY8-O", + "outputId": "39447b3c-af1f-4cc2-c301-e5c32bfffdbf" + }, + "source": [ + "second_df" + ], + "execution_count": 354, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2labelweightsy_pred
45100.10
23600.11
01510.11
89900.10
34810.11
99200.10
66500.10
89900.10
45100.10
01510.11
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights y_pred\n", + "4 5 1 0 0.1 0\n", + "2 3 6 0 0.1 1\n", + "0 1 5 1 0.1 1\n", + "8 9 9 0 0.1 0\n", + "3 4 8 1 0.1 1\n", + "9 9 2 0 0.1 0\n", + "6 6 5 0 0.1 0\n", + "8 9 9 0 0.1 0\n", + "4 5 1 0 0.1 0\n", + "0 1 5 1 0.1 1" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 354 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "6pBVQyzhaFQh" + }, + "source": [ + "alpha2 = calculate_model_weight(0.1)" + ], + "execution_count": 355, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7213_TjKGbKg", + "outputId": "45ca8360-97f9-4cf2-f065-9d93ad92f10f" + }, + "source": [ + "alpha2" + ], + "execution_count": 356, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1.0986122886681098" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 356 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gTEwEvniGcK_" + }, + "source": [ + "# Step 4 - Update weights\n", + "def update_row_weights(row,alpha=1.09):\n", + " if row['label'] == row['y_pred']:\n", + " return row['weights'] * np.exp(-alpha)\n", + " else:\n", + " return row['weights'] * np.exp(alpha)" + ], + "execution_count": 357, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "irgFSCPsGndY" + }, + "source": [ + "second_df['updated_weights'] = second_df.apply(update_row_weights,axis=1)" + ], + "execution_count": 358, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "oSbaVAKEGweU", + "outputId": "c4245359-a726-4b42-d725-d38ea43e8e9c" + }, + "source": [ + "second_df" + ], + "execution_count": 359, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2labelweightsy_predupdated_weights
45100.100.033622
23600.110.297427
01510.110.033622
89900.100.033622
34810.110.033622
99200.100.033622
66500.100.033622
89900.100.033622
45100.100.033622
01510.110.033622
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights y_pred updated_weights\n", + "4 5 1 0 0.1 0 0.033622\n", + "2 3 6 0 0.1 1 0.297427\n", + "0 1 5 1 0.1 1 0.033622\n", + "8 9 9 0 0.1 0 0.033622\n", + "3 4 8 1 0.1 1 0.033622\n", + "9 9 2 0 0.1 0 0.033622\n", + "6 6 5 0 0.1 0 0.033622\n", + "8 9 9 0 0.1 0 0.033622\n", + "4 5 1 0 0.1 0 0.033622\n", + "0 1 5 1 0.1 1 0.033622" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 359 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "09h9zhMxGxfs" + }, + "source": [ + "second_df['nomalized_weights'] = second_df['updated_weights']/second_df['updated_weights'].sum()" + ], + "execution_count": 360, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "efMNKx7rG52o", + "outputId": "8e26dbb7-55ca-4ffc-fabf-3b4c8fdeb7f8" + }, + "source": [ + "second_df" + ], + "execution_count": 361, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2labelweightsy_predupdated_weightsnomalized_weights
45100.100.0336220.056034
23600.110.2974270.495694
01510.110.0336220.056034
89900.100.0336220.056034
34810.110.0336220.056034
99200.100.0336220.056034
66500.100.0336220.056034
89900.100.0336220.056034
45100.100.0336220.056034
01510.110.0336220.056034
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights y_pred updated_weights nomalized_weights\n", + "4 5 1 0 0.1 0 0.033622 0.056034\n", + "2 3 6 0 0.1 1 0.297427 0.495694\n", + "0 1 5 1 0.1 1 0.033622 0.056034\n", + "8 9 9 0 0.1 0 0.033622 0.056034\n", + "3 4 8 1 0.1 1 0.033622 0.056034\n", + "9 9 2 0 0.1 0 0.033622 0.056034\n", + "6 6 5 0 0.1 0 0.033622 0.056034\n", + "8 9 9 0 0.1 0 0.033622 0.056034\n", + "4 5 1 0 0.1 0 0.033622 0.056034\n", + "0 1 5 1 0.1 1 0.033622 0.056034" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 361 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1sMhvRe3G7RU", + "outputId": "12c4e536-3cb5-4ea6-c8e3-9e2f48cb0f57" + }, + "source": [ + "second_df['nomalized_weights'].sum()" + ], + "execution_count": 362, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.9999999999999999" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 362 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Kaq0KSZCG_14" + }, + "source": [ + "second_df['cumsum_upper'] = np.cumsum(second_df['nomalized_weights'])" + ], + "execution_count": 363, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Gu7pLdLjHGpE" + }, + "source": [ + "second_df['cumsum_lower'] = second_df['cumsum_upper'] - second_df['nomalized_weights']" + ], + "execution_count": 364, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "dSn7g8PIHPos", + "outputId": "5da673bc-4776-47c7-dae2-bbb3a980af8d" + }, + "source": [ + "second_df[['X1','X2','label','weights','y_pred','nomalized_weights','cumsum_lower','cumsum_upper']]" + ], + "execution_count": 365, + "outputs": [ + { + "output_type": "execute_result", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
X1X2labelweightsy_prednomalized_weightscumsum_lowercumsum_upper
45100.100.0560340.0000000.056034
23600.110.4956940.0560340.551728
01510.110.0560340.5517280.607762
89900.100.0560340.6077620.663796
34810.110.0560340.6637960.719830
99200.100.0560340.7198300.775864
66500.100.0560340.7758640.831898
89900.100.0560340.8318980.887932
45100.100.0560340.8879320.943966
01510.110.0560340.9439661.000000
\n", + "
" + ], + "text/plain": [ + " X1 X2 label ... nomalized_weights cumsum_lower cumsum_upper\n", + "4 5 1 0 ... 0.056034 0.000000 0.056034\n", + "2 3 6 0 ... 0.495694 0.056034 0.551728\n", + "0 1 5 1 ... 0.056034 0.551728 0.607762\n", + "8 9 9 0 ... 0.056034 0.607762 0.663796\n", + "3 4 8 1 ... 0.056034 0.663796 0.719830\n", + "9 9 2 0 ... 0.056034 0.719830 0.775864\n", + "6 6 5 0 ... 0.056034 0.775864 0.831898\n", + "8 9 9 0 ... 0.056034 0.831898 0.887932\n", + "4 5 1 0 ... 0.056034 0.887932 0.943966\n", + "0 1 5 1 ... 0.056034 0.943966 1.000000\n", + "\n", + "[10 rows x 8 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 365 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0evQl9P3HUEo" + }, + "source": [ + "index_values = create_new_dataset(second_df)" + ], + "execution_count": 366, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Y8zYrI1bHdP3" + }, + "source": [ + "third_df = second_df.iloc[index_values,[0,1,2,3]]" + ], + "execution_count": 367, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "wLLDZMk4HkLk", + "outputId": "725d890c-0c0a-4324-e862-95818d97147f" + }, + "source": [ + "third_df" + ], + "execution_count": 368, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2labelweights
34810.1
01510.1
66500.1
01510.1
01510.1
34810.1
01510.1
01510.1
01510.1
01510.1
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights\n", + "3 4 8 1 0.1\n", + "0 1 5 1 0.1\n", + "6 6 5 0 0.1\n", + "0 1 5 1 0.1\n", + "0 1 5 1 0.1\n", + "3 4 8 1 0.1\n", + "0 1 5 1 0.1\n", + "0 1 5 1 0.1\n", + "0 1 5 1 0.1\n", + "0 1 5 1 0.1" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 368 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "zpjjNjOgHlOr", + "outputId": "231b9076-7c2a-4d75-9277-6c71fb9038c1" + }, + "source": [ + "dt3 = DecisionTreeClassifier(max_depth=1)\n", + "\n", + "X = second_df.iloc[:,0:2].values\n", + "y = second_df.iloc[:,2].values\n", + "\n", + "dt3.fit(X,y)" + ], + "execution_count": 369, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',\n", + " max_depth=1, max_features=None, max_leaf_nodes=None,\n", + " min_impurity_decrease=0.0, min_impurity_split=None,\n", + " min_samples_leaf=1, min_samples_split=2,\n", + " min_weight_fraction_leaf=0.0, presort='deprecated',\n", + " random_state=None, splitter='best')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 369 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 340 + }, + "id": "EJqD7RmSOKom", + "outputId": "6f1a1215-157a-45d2-a95e-8e822ca81296" + }, + "source": [ + "plot_decision_regions(X, y, clf=dt3, legend=2)" + ], + "execution_count": 370, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/mlxtend/plotting/decision_regions.py:244: MatplotlibDeprecationWarning: Passing unsupported keyword arguments to axis() will raise a TypeError in 3.3.\n", + " ax.axis(xmin=xx.min(), xmax=xx.max(), y_min=yy.min(), y_max=yy.max())\n" + ], + "name": "stderr" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 370 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "VisTdFb8NfNT" + }, + "source": [ + "third_df['y_pred'] = dt3.predict(X)" + ], + "execution_count": 371, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 362 + }, + "id": "8FaqjGoqN-8r", + "outputId": "b983a442-9732-473e-ac65-6642d3d87b95" + }, + "source": [ + "third_df" + ], + "execution_count": 372, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
X1X2labelweightsy_pred
34810.10
01510.11
66500.11
01510.10
01510.11
34810.10
01510.10
01510.10
01510.10
01510.11
\n", + "
" + ], + "text/plain": [ + " X1 X2 label weights y_pred\n", + "3 4 8 1 0.1 0\n", + "0 1 5 1 0.1 1\n", + "6 6 5 0 0.1 1\n", + "0 1 5 1 0.1 0\n", + "0 1 5 1 0.1 1\n", + "3 4 8 1 0.1 0\n", + "0 1 5 1 0.1 0\n", + "0 1 5 1 0.1 0\n", + "0 1 5 1 0.1 0\n", + "0 1 5 1 0.1 1" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 372 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RBPcPiksOcvu", + "outputId": "c02642df-1dc0-47a2-de63-b4b6e498d0fa" + }, + "source": [ + "alpha3 = calculate_model_weight(0.7)\n", + "alpha3" + ], + "execution_count": 373, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-0.4236489301936017" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 373 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "bUYtJlZPpDaf", + "outputId": "1205eab8-28b5-4e31-a6c1-12fbff7102c2" + }, + "source": [ + "print(alpha1,alpha2,alpha3)" + ], + "execution_count": 374, + "outputs": [ + { + "output_type": "stream", + "text": [ + "0.42364893019360184 1.0986122886681098 -0.4236489301936017\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pxtz976hR-Oh" + }, + "source": [ + "### Prediction" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dnwU7oa6SAx9", + "outputId": "9b83244d-abc6-452e-8271-bbcf583b2de8" + }, + "source": [ + "query = np.array([1,5]).reshape(1,2)\n", + "dt1.predict(query)" + ], + "execution_count": 375, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([1])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 375 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Yblc8IoJSREF", + "outputId": "f4b5eced-8a0c-43c5-b1a7-bbfbdebb147d" + }, + "source": [ + "dt2.predict(query)" + ], + "execution_count": 376, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([1])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 376 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "hok5Ku_PSTTJ", + "outputId": "f00b4804-6f7b-40bc-a35a-f9c694173dde" + }, + "source": [ + "dt3.predict(query)" + ], + "execution_count": 377, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([1])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 377 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "XAwvSWAmSVia", + "outputId": "80fe3256-9710-4bc8-ade3-3671e85a9611" + }, + "source": [ + "alpha1*1 + alpha2*(1) + alpha3*(1)" + ], + "execution_count": 378, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1.09861228866811" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 378 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FOBeTyBYSb51", + "outputId": "06c20b38-ade0-460d-e363-d60f76a1409a" + }, + "source": [ + "np.sign(1.09)" + ], + "execution_count": 379, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1.0" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 379 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gWVkt4HBShlu", + "outputId": "7a3a28eb-a801-470e-82d2-621a6b200b94" + }, + "source": [ + "query = np.array([9,9]).reshape(1,2)\n", + "dt1.predict(query)" + ], + "execution_count": 380, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([1])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 380 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "361upwpuSun5", + "outputId": "d4b9be8a-8ded-41c7-bfde-4afa0af33e9c" + }, + "source": [ + "dt2.predict(query)" + ], + "execution_count": 381, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([0])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 381 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9xHMQd2ESw6a", + "outputId": "b2871d99-63c1-4fc0-f94c-f164e6c417e9" + }, + "source": [ + "dt3.predict(query)" + ], + "execution_count": 382, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([0])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 382 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "P_ldTMKsS0iV", + "outputId": "d3d023e5-ca27-4ca3-ac89-82c1acb6708c" + }, + "source": [ + "alpha1*(1) + alpha2*(-1) + alpha3*(-1)" + ], + "execution_count": 383, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-0.2513144282809062" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 383 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "LA_CIXxzS7ha", + "outputId": "db5a98e5-71ba-4074-f7b2-b9b47a995dcb" + }, + "source": [ + "np.sign(-0.25)" + ], + "execution_count": 384, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-1.0" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 384 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "QBbsLhusTFNe" + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file