Team Ai
Apppublic

alejandrocl86/IBM_Applied_Data_Science_Capstone

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
7_Machine_Learning.ipynb1854 linesDownload Raw Back to notebooks
1{2 "cells": [3  {4   "cell_type": "markdown",5   "metadata": {},6   "source": [7    "<p style=\"text-align:center\">\n",8    "    <a href=\"https://skills.network/?utm_medium=Exinfluencer&utm_source=Exinfluencer&utm_content=000026UJ&utm_term=10006555&utm_id=NA-SkillsNetwork-Channel-SkillsNetworkCoursesIBMDS0321ENSkillsNetwork26802033-2022-01-01\">\n",9    "    <img src=\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/assets/logos/SN_web_lightmode.png\" width=\"200\" alt=\"Skills Network Logo\"  />\n",10    "    </a>\n",11    "</p>\n"12   ]13  },14  {15   "cell_type": "markdown",16   "metadata": {},17   "source": [18    "# **Space X  Falcon 9 First Stage Landing Prediction**\n"19   ]20  },21  {22   "cell_type": "markdown",23   "metadata": {},24   "source": [25    "## Assignment:  Machine Learning Prediction\n"26   ]27  },28  {29   "cell_type": "markdown",30   "metadata": {},31   "source": [32    "Estimated time needed: **60** minutes\n"33   ]34  },35  {36   "cell_type": "markdown",37   "metadata": {},38   "source": [39    "Space X advertises Falcon 9 rocket launches on its website with a cost of 62 million dollars; other providers cost upward of 165 million dollars each, much of the savings is because Space X can reuse the first stage. Therefore if we can determine if the first stage will land, we can determine the cost of a launch. This information can be used if an alternate company wants to bid against space X for a rocket launch.   In this lab, you will create a machine learning pipeline  to predict if the first stage will land given the data from the preceding labs.\n"40   ]41  },42  {43   "cell_type": "markdown",44   "metadata": {},45   "source": [46    "![](https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DS0701EN-SkillsNetwork/api/Images/landing_1.gif)\n"47   ]48  },49  {50   "cell_type": "markdown",51   "metadata": {},52   "source": [53    "Several examples of an unsuccessful landing are shown here:\n"54   ]55  },56  {57   "cell_type": "markdown",58   "metadata": {},59   "source": [60    "![](https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBMDeveloperSkillsNetwork-DS0701EN-SkillsNetwork/api/Images/crash.gif)\n"61   ]62  },63  {64   "cell_type": "markdown",65   "metadata": {},66   "source": [67    "Most unsuccessful landings are planed. Space X; performs a controlled landing in the oceans.\n"68   ]69  },70  {71   "cell_type": "markdown",72   "metadata": {},73   "source": [74    "## Objectives\n"75   ]76  },77  {78   "cell_type": "markdown",79   "metadata": {},80   "source": [81    "Perform exploratory  Data Analysis and determine Training Labels\n",82    "\n",83    "*   create a column for the class\n",84    "*   Standardize the data\n",85    "*   Split into training data and test data\n",86    "\n",87    "\\-Find best Hyperparameter for SVM, Classification Trees and Logistic Regression\n",88    "\n",89    "*   Find the method performs best using test data\n"90   ]91  },92  {93   "cell_type": "markdown",94   "metadata": {},95   "source": [96    "## Import Libraries and Define Auxiliary Functions\n"97   ]98  },99  {100   "cell_type": "markdown",101   "metadata": {},102   "source": [103    "We will import the following libraries for the lab\n"104   ]105  },106  {107   "cell_type": "code",108   "execution_count": 1,109   "metadata": {},110   "outputs": [],111   "source": [112    "import pandas as pd\n",113    "import numpy as np\n",114    "import matplotlib.pyplot as plt\n",115    "import seaborn as sns\n",116    "from sklearn import preprocessing\n",117    "from sklearn.model_selection import train_test_split\n",118    "from sklearn.model_selection import GridSearchCV\n",119    "from sklearn.linear_model import LogisticRegression\n",120    "from sklearn.svm import SVC\n",121    "from sklearn.tree import DecisionTreeClassifier\n",122    "from sklearn.neighbors import KNeighborsClassifier"123   ]124  },125  {126   "cell_type": "markdown",127   "metadata": {},128   "source": [129    "This function is to plot the confusion matrix.\n"130   ]131  },132  {133   "cell_type": "code",134   "execution_count": 2,135   "metadata": {},136   "outputs": [],137   "source": [138    "def plot_confusion_matrix(y,y_predict):\n",139    "    \"this function plots the confusion matrix\"\n",140    "    from sklearn.metrics import confusion_matrix\n",141    "\n",142    "    cm = confusion_matrix(y, y_predict)\n",143    "    ax= plt.subplot()\n",144    "    sns.heatmap(cm, annot=True, ax = ax); #annot=True to annotate cells\n",145    "    ax.set_xlabel('Predicted labels')\n",146    "    ax.set_ylabel('True labels')\n",147    "    ax.set_title('Confusion Matrix'); \n",148    "    ax.xaxis.set_ticklabels(['did not land', 'land']); ax.yaxis.set_ticklabels(['did not land', 'landed']) \n",149    "    plt.show() "150   ]151  },152  {153   "cell_type": "markdown",154   "metadata": {},155   "source": [156    "## Load the dataframe\n"157   ]158  },159  {160   "cell_type": "markdown",161   "metadata": {},162   "source": [163    "Load the data\n"164   ]165  },166  {167   "cell_type": "code",168   "execution_count": 3,169   "metadata": {},170   "outputs": [],171   "source": [172    "# from js import fetch\n",173    "# import io\n",174    "\n",175    "URL1 = \"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBM-DS0321EN-SkillsNetwork/datasets/dataset_part_2.csv\"\n",176    "# resp1 = await fetch(URL1)\n",177    "# text1 = io.BytesIO((await resp1.arrayBuffer()).to_py())\n",178    "data = pd.read_csv(URL1)"179   ]180  },181  {182   "cell_type": "code",183   "execution_count": 4,184   "metadata": {},185   "outputs": [186    {187     "data": {188      "text/html": [189       "<div>\n",190       "<style scoped>\n",191       "    .dataframe tbody tr th:only-of-type {\n",192       "        vertical-align: middle;\n",193       "    }\n",194       "\n",195       "    .dataframe tbody tr th {\n",196       "        vertical-align: top;\n",197       "    }\n",198       "\n",199       "    .dataframe thead th {\n",200       "        text-align: right;\n",201       "    }\n",202       "</style>\n",203       "<table border=\"1\" class=\"dataframe\">\n",204       "  <thead>\n",205       "    <tr style=\"text-align: right;\">\n",206       "      <th></th>\n",207       "      <th>FlightNumber</th>\n",208       "      <th>Date</th>\n",209       "      <th>BoosterVersion</th>\n",210       "      <th>PayloadMass</th>\n",211       "      <th>Orbit</th>\n",212       "      <th>LaunchSite</th>\n",213       "      <th>Outcome</th>\n",214       "      <th>Flights</th>\n",215       "      <th>GridFins</th>\n",216       "      <th>Reused</th>\n",217       "      <th>Legs</th>\n",218       "      <th>LandingPad</th>\n",219       "      <th>Block</th>\n",220       "      <th>ReusedCount</th>\n",221       "      <th>Serial</th>\n",222       "      <th>Longitude</th>\n",223       "      <th>Latitude</th>\n",224       "      <th>Class</th>\n",225       "    </tr>\n",226       "  </thead>\n",227       "  <tbody>\n",228       "    <tr>\n",229       "      <th>0</th>\n",230       "      <td>1</td>\n",231       "      <td>2010-06-04</td>\n",232       "      <td>Falcon 9</td>\n",233       "      <td>6104.959412</td>\n",234       "      <td>LEO</td>\n",235       "      <td>CCAFS SLC 40</td>\n",236       "      <td>None None</td>\n",237       "      <td>1</td>\n",238       "      <td>False</td>\n",239       "      <td>False</td>\n",240       "      <td>False</td>\n",241       "      <td>NaN</td>\n",242       "      <td>1.0</td>\n",243       "      <td>0</td>\n",244       "      <td>B0003</td>\n",245       "      <td>-80.577366</td>\n",246       "      <td>28.561857</td>\n",247       "      <td>0</td>\n",248       "    </tr>\n",249       "    <tr>\n",250       "      <th>1</th>\n",251       "      <td>2</td>\n",252       "      <td>2012-05-22</td>\n",253       "      <td>Falcon 9</td>\n",254       "      <td>525.000000</td>\n",255       "      <td>LEO</td>\n",256       "      <td>CCAFS SLC 40</td>\n",257       "      <td>None None</td>\n",258       "      <td>1</td>\n",259       "      <td>False</td>\n",260       "      <td>False</td>\n",261       "      <td>False</td>\n",262       "      <td>NaN</td>\n",263       "      <td>1.0</td>\n",264       "      <td>0</td>\n",265       "      <td>B0005</td>\n",266       "      <td>-80.577366</td>\n",267       "      <td>28.561857</td>\n",268       "      <td>0</td>\n",269       "    </tr>\n",270       "    <tr>\n",271       "      <th>2</th>\n",272       "      <td>3</td>\n",273       "      <td>2013-03-01</td>\n",274       "      <td>Falcon 9</td>\n",275       "      <td>677.000000</td>\n",276       "      <td>ISS</td>\n",277       "      <td>CCAFS SLC 40</td>\n",278       "      <td>None None</td>\n",279       "      <td>1</td>\n",280       "      <td>False</td>\n",281       "      <td>False</td>\n",282       "      <td>False</td>\n",283       "      <td>NaN</td>\n",284       "      <td>1.0</td>\n",285       "      <td>0</td>\n",286       "      <td>B0007</td>\n",287       "      <td>-80.577366</td>\n",288       "      <td>28.561857</td>\n",289       "      <td>0</td>\n",290       "    </tr>\n",291       "    <tr>\n",292       "      <th>3</th>\n",293       "      <td>4</td>\n",294       "      <td>2013-09-29</td>\n",295       "      <td>Falcon 9</td>\n",296       "      <td>500.000000</td>\n",297       "      <td>PO</td>\n",298       "      <td>VAFB SLC 4E</td>\n",299       "      <td>False Ocean</td>\n",300       "      <td>1</td>\n",301       "      <td>False</td>\n",302       "      <td>False</td>\n",303       "      <td>False</td>\n",304       "      <td>NaN</td>\n",305       "      <td>1.0</td>\n",306       "      <td>0</td>\n",307       "      <td>B1003</td>\n",308       "      <td>-120.610829</td>\n",309       "      <td>34.632093</td>\n",310       "      <td>0</td>\n",311       "    </tr>\n",312       "    <tr>\n",313       "      <th>4</th>\n",314       "      <td>5</td>\n",315       "      <td>2013-12-03</td>\n",316       "      <td>Falcon 9</td>\n",317       "      <td>3170.000000</td>\n",318       "      <td>GTO</td>\n",319       "      <td>CCAFS SLC 40</td>\n",320       "      <td>None None</td>\n",321       "      <td>1</td>\n",322       "      <td>False</td>\n",323       "      <td>False</td>\n",324       "      <td>False</td>\n",325       "      <td>NaN</td>\n",326       "      <td>1.0</td>\n",327       "      <td>0</td>\n",328       "      <td>B1004</td>\n",329       "      <td>-80.577366</td>\n",330       "      <td>28.561857</td>\n",331       "      <td>0</td>\n",332       "    </tr>\n",333       "  </tbody>\n",334       "</table>\n",335       "</div>"336      ],337      "text/plain": [338       "   FlightNumber        Date BoosterVersion  PayloadMass Orbit    LaunchSite   \n",339       "0             1  2010-06-04       Falcon 9  6104.959412   LEO  CCAFS SLC 40  \\\n",340       "1             2  2012-05-22       Falcon 9   525.000000   LEO  CCAFS SLC 40   \n",341       "2             3  2013-03-01       Falcon 9   677.000000   ISS  CCAFS SLC 40   \n",342       "3             4  2013-09-29       Falcon 9   500.000000    PO   VAFB SLC 4E   \n",343       "4             5  2013-12-03       Falcon 9  3170.000000   GTO  CCAFS SLC 40   \n",344       "\n",345       "       Outcome  Flights  GridFins  Reused   Legs LandingPad  Block   \n",346       "0    None None        1     False   False  False        NaN    1.0  \\\n",347       "1    None None        1     False   False  False        NaN    1.0   \n",348       "2    None None        1     False   False  False        NaN    1.0   \n",349       "3  False Ocean        1     False   False  False        NaN    1.0   \n",350       "4    None None        1     False   False  False        NaN    1.0   \n",351       "\n",352       "   ReusedCount Serial   Longitude   Latitude  Class  \n",353       "0            0  B0003  -80.577366  28.561857      0  \n",354       "1            0  B0005  -80.577366  28.561857      0  \n",355       "2            0  B0007  -80.577366  28.561857      0  \n",356       "3            0  B1003 -120.610829  34.632093      0  \n",357       "4            0  B1004  -80.577366  28.561857      0  "358      ]359     },360     "execution_count": 4,361     "metadata": {},362     "output_type": "execute_result"363    }364   ],365   "source": [366    "data.head()"367   ]368  },369  {370   "cell_type": "code",371   "execution_count": 5,372   "metadata": {},373   "outputs": [],374   "source": [375    "URL2 = 'https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBM-DS0321EN-SkillsNetwork/datasets/dataset_part_3.csv'\n",376    "# resp2 = await fetch(URL2)\n",377    "# text2 = io.BytesIO((await resp2.arrayBuffer()).to_py())\n",378    "X = pd.read_csv(URL2)"379   ]380  },381  {382   "cell_type": "code",383   "execution_count": 6,384   "metadata": {},385   "outputs": [386    {387     "data": {388      "text/html": [389       "<div>\n",390       "<style scoped>\n",391       "    .dataframe tbody tr th:only-of-type {\n",392       "        vertical-align: middle;\n",393       "    }\n",394       "\n",395       "    .dataframe tbody tr th {\n",396       "        vertical-align: top;\n",397       "    }\n",398       "\n",399       "    .dataframe thead th {\n",400       "        text-align: right;\n",401       "    }\n",402       "</style>\n",403       "<table border=\"1\" class=\"dataframe\">\n",404       "  <thead>\n",405       "    <tr style=\"text-align: right;\">\n",406       "      <th></th>\n",407       "      <th>FlightNumber</th>\n",408       "      <th>PayloadMass</th>\n",409       "      <th>Flights</th>\n",410       "      <th>Block</th>\n",411       "      <th>ReusedCount</th>\n",412       "      <th>Orbit_ES-L1</th>\n",413       "      <th>Orbit_GEO</th>\n",414       "      <th>Orbit_GTO</th>\n",415       "      <th>Orbit_HEO</th>\n",416       "      <th>Orbit_ISS</th>\n",417       "      <th>...</th>\n",418       "      <th>Serial_B1058</th>\n",419       "      <th>Serial_B1059</th>\n",420       "      <th>Serial_B1060</th>\n",421       "      <th>Serial_B1062</th>\n",422       "      <th>GridFins_False</th>\n",423       "      <th>GridFins_True</th>\n",424       "      <th>Reused_False</th>\n",425       "      <th>Reused_True</th>\n",426       "      <th>Legs_False</th>\n",427       "      <th>Legs_True</th>\n",428       "    </tr>\n",429       "  </thead>\n",430       "  <tbody>\n",431       "    <tr>\n",432       "      <th>0</th>\n",433       "      <td>1.0</td>\n",434       "      <td>6104.959412</td>\n",435       "      <td>1.0</td>\n",436       "      <td>1.0</td>\n",437       "      <td>0.0</td>\n",438       "      <td>0.0</td>\n",439       "      <td>0.0</td>\n",440       "      <td>0.0</td>\n",441       "      <td>0.0</td>\n",442       "      <td>0.0</td>\n",443       "      <td>...</td>\n",444       "      <td>0.0</td>\n",445       "      <td>0.0</td>\n",446       "      <td>0.0</td>\n",447       "      <td>0.0</td>\n",448       "      <td>1.0</td>\n",449       "      <td>0.0</td>\n",450       "      <td>1.0</td>\n",451       "      <td>0.0</td>\n",452       "      <td>1.0</td>\n",453       "      <td>0.0</td>\n",454       "    </tr>\n",455       "    <tr>\n",456       "      <th>1</th>\n",457       "      <td>2.0</td>\n",458       "      <td>525.000000</td>\n",459       "      <td>1.0</td>\n",460       "      <td>1.0</td>\n",461       "      <td>0.0</td>\n",462       "      <td>0.0</td>\n",463       "      <td>0.0</td>\n",464       "      <td>0.0</td>\n",465       "      <td>0.0</td>\n",466       "      <td>0.0</td>\n",467       "      <td>...</td>\n",468       "      <td>0.0</td>\n",469       "      <td>0.0</td>\n",470       "      <td>0.0</td>\n",471       "      <td>0.0</td>\n",472       "      <td>1.0</td>\n",473       "      <td>0.0</td>\n",474       "      <td>1.0</td>\n",475       "      <td>0.0</td>\n",476       "      <td>1.0</td>\n",477       "      <td>0.0</td>\n",478       "    </tr>\n",479       "    <tr>\n",480       "      <th>2</th>\n",481       "      <td>3.0</td>\n",482       "      <td>677.000000</td>\n",483       "      <td>1.0</td>\n",484       "      <td>1.0</td>\n",485       "      <td>0.0</td>\n",486       "      <td>0.0</td>\n",487       "      <td>0.0</td>\n",488       "      <td>0.0</td>\n",489       "      <td>0.0</td>\n",490       "      <td>1.0</td>\n",491       "      <td>...</td>\n",492       "      <td>0.0</td>\n",493       "      <td>0.0</td>\n",494       "      <td>0.0</td>\n",495       "      <td>0.0</td>\n",496       "      <td>1.0</td>\n",497       "      <td>0.0</td>\n",498       "      <td>1.0</td>\n",499       "      <td>0.0</td>\n",500       "      <td>1.0</td>\n",501       "      <td>0.0</td>\n",502       "    </tr>\n",503       "    <tr>\n",504       "      <th>3</th>\n",505       "      <td>4.0</td>\n",506       "      <td>500.000000</td>\n",507       "      <td>1.0</td>\n",508       "      <td>1.0</td>\n",509       "      <td>0.0</td>\n",510       "      <td>0.0</td>\n",511       "      <td>0.0</td>\n",512       "      <td>0.0</td>\n",513       "      <td>0.0</td>\n",514       "      <td>0.0</td>\n",515       "      <td>...</td>\n",516       "      <td>0.0</td>\n",517       "      <td>0.0</td>\n",518       "      <td>0.0</td>\n",519       "      <td>0.0</td>\n",520       "      <td>1.0</td>\n",521       "      <td>0.0</td>\n",522       "      <td>1.0</td>\n",523       "      <td>0.0</td>\n",524       "      <td>1.0</td>\n",525       "      <td>0.0</td>\n",526       "    </tr>\n",527       "    <tr>\n",528       "      <th>4</th>\n",529       "      <td>5.0</td>\n",530       "      <td>3170.000000</td>\n",531       "      <td>1.0</td>\n",532       "      <td>1.0</td>\n",533       "      <td>0.0</td>\n",534       "      <td>0.0</td>\n",535       "      <td>0.0</td>\n",536       "      <td>1.0</td>\n",537       "      <td>0.0</td>\n",538       "      <td>0.0</td>\n",539       "      <td>...</td>\n",540       "      <td>0.0</td>\n",541       "      <td>0.0</td>\n",542       "      <td>0.0</td>\n",543       "      <td>0.0</td>\n",544       "      <td>1.0</td>\n",545       "      <td>0.0</td>\n",546       "      <td>1.0</td>\n",547       "      <td>0.0</td>\n",548       "      <td>1.0</td>\n",549       "      <td>0.0</td>\n",550       "    </tr>\n",551       "    <tr>\n",552       "      <th>...</th>\n",553       "      <td>...</td>\n",554       "      <td>...</td>\n",555       "      <td>...</td>\n",556       "      <td>...</td>\n",557       "      <td>...</td>\n",558       "      <td>...</td>\n",559       "      <td>...</td>\n",560       "      <td>...</td>\n",561       "      <td>...</td>\n",562       "      <td>...</td>\n",563       "      <td>...</td>\n",564       "      <td>...</td>\n",565       "      <td>...</td>\n",566       "      <td>...</td>\n",567       "      <td>...</td>\n",568       "      <td>...</td>\n",569       "      <td>...</td>\n",570       "      <td>...</td>\n",571       "      <td>...</td>\n",572       "      <td>...</td>\n",573       "      <td>...</td>\n",574       "    </tr>\n",575       "    <tr>\n",576       "      <th>85</th>\n",577       "      <td>86.0</td>\n",578       "      <td>15400.000000</td>\n",579       "      <td>2.0</td>\n",580       "      <td>5.0</td>\n",581       "      <td>2.0</td>\n",582       "      <td>0.0</td>\n",583       "      <td>0.0</td>\n",584       "      <td>0.0</td>\n",585       "      <td>0.0</td>\n",586       "      <td>0.0</td>\n",587       "      <td>...</td>\n",588       "      <td>0.0</td>\n",589       "      <td>0.0</td>\n",590       "      <td>1.0</td>\n",591       "      <td>0.0</td>\n",592       "      <td>0.0</td>\n",593       "      <td>1.0</td>\n",594       "      <td>0.0</td>\n",595       "      <td>1.0</td>\n",596       "      <td>0.0</td>\n",597       "      <td>1.0</td>\n",598       "    </tr>\n",599       "    <tr>\n",600       "      <th>86</th>\n",601       "      <td>87.0</td>\n",602       "      <td>15400.000000</td>\n",603       "      <td>3.0</td>\n",604       "      <td>5.0</td>\n",605       "      <td>2.0</td>\n",606       "      <td>0.0</td>\n",607       "      <td>0.0</td>\n",608       "      <td>0.0</td>\n",609       "      <td>0.0</td>\n",610       "      <td>0.0</td>\n",611       "      <td>...</td>\n",612       "      <td>1.0</td>\n",613       "      <td>0.0</td>\n",614       "      <td>0.0</td>\n",615       "      <td>0.0</td>\n",616       "      <td>0.0</td>\n",617       "      <td>1.0</td>\n",618       "      <td>0.0</td>\n",619       "      <td>1.0</td>\n",620       "      <td>0.0</td>\n",621       "      <td>1.0</td>\n",622       "    </tr>\n",623       "    <tr>\n",624       "      <th>87</th>\n",625       "      <td>88.0</td>\n",626       "      <td>15400.000000</td>\n",627       "      <td>6.0</td>\n",628       "      <td>5.0</td>\n",629       "      <td>5.0</td>\n",630       "      <td>0.0</td>\n",631       "      <td>0.0</td>\n",632       "      <td>0.0</td>\n",633       "      <td>0.0</td>\n",634       "      <td>0.0</td>\n",635       "      <td>...</td>\n",636       "      <td>0.0</td>\n",637       "      <td>0.0</td>\n",638       "      <td>0.0</td>\n",639       "      <td>0.0</td>\n",640       "      <td>0.0</td>\n",641       "      <td>1.0</td>\n",642       "      <td>0.0</td>\n",643       "      <td>1.0</td>\n",644       "      <td>0.0</td>\n",645       "      <td>1.0</td>\n",646       "    </tr>\n",647       "    <tr>\n",648       "      <th>88</th>\n",649       "      <td>89.0</td>\n",650       "      <td>15400.000000</td>\n",651       "      <td>3.0</td>\n",652       "      <td>5.0</td>\n",653       "      <td>2.0</td>\n",654       "      <td>0.0</td>\n",655       "      <td>0.0</td>\n",656       "      <td>0.0</td>\n",657       "      <td>0.0</td>\n",658       "      <td>0.0</td>\n",659       "      <td>...</td>\n",660       "      <td>0.0</td>\n",661       "      <td>0.0</td>\n",662       "      <td>1.0</td>\n",663       "      <td>0.0</td>\n",664       "      <td>0.0</td>\n",665       "      <td>1.0</td>\n",666       "      <td>0.0</td>\n",667       "      <td>1.0</td>\n",668       "      <td>0.0</td>\n",669       "      <td>1.0</td>\n",670       "    </tr>\n",671       "    <tr>\n",672       "      <th>89</th>\n",673       "      <td>90.0</td>\n",674       "      <td>3681.000000</td>\n",675       "      <td>1.0</td>\n",676       "      <td>5.0</td>\n",677       "      <td>0.0</td>\n",678       "      <td>0.0</td>\n",679       "      <td>0.0</td>\n",680       "      <td>0.0</td>\n",681       "      <td>0.0</td>\n",682       "      <td>0.0</td>\n",683       "      <td>...</td>\n",684       "      <td>0.0</td>\n",685       "      <td>0.0</td>\n",686       "      <td>0.0</td>\n",687       "      <td>1.0</td>\n",688       "      <td>0.0</td>\n",689       "      <td>1.0</td>\n",690       "      <td>1.0</td>\n",691       "      <td>0.0</td>\n",692       "      <td>0.0</td>\n",693       "      <td>1.0</td>\n",694       "    </tr>\n",695       "  </tbody>\n",696       "</table>\n",697       "<p>90 rows × 83 columns</p>\n",698       "</div>"699      ],700      "text/plain": [701       "    FlightNumber   PayloadMass  Flights  Block  ReusedCount  Orbit_ES-L1   \n",702       "0            1.0   6104.959412      1.0    1.0          0.0          0.0  \\\n",703       "1            2.0    525.000000      1.0    1.0          0.0          0.0   \n",704       "2            3.0    677.000000      1.0    1.0          0.0          0.0   \n",705       "3            4.0    500.000000      1.0    1.0          0.0          0.0   \n",706       "4            5.0   3170.000000      1.0    1.0          0.0          0.0   \n",707       "..           ...           ...      ...    ...          ...          ...   \n",708       "85          86.0  15400.000000      2.0    5.0          2.0          0.0   \n",709       "86          87.0  15400.000000      3.0    5.0          2.0          0.0   \n",710       "87          88.0  15400.000000      6.0    5.0          5.0          0.0   \n",711       "88          89.0  15400.000000      3.0    5.0          2.0          0.0   \n",712       "89          90.0   3681.000000      1.0    5.0          0.0          0.0   \n",713       "\n",714       "    Orbit_GEO  Orbit_GTO  Orbit_HEO  Orbit_ISS  ...  Serial_B1058   \n",715       "0         0.0        0.0        0.0        0.0  ...           0.0  \\\n",716       "1         0.0        0.0        0.0        0.0  ...           0.0   \n",717       "2         0.0        0.0        0.0        1.0  ...           0.0   \n",718       "3         0.0        0.0        0.0        0.0  ...           0.0   \n",719       "4         0.0        1.0        0.0        0.0  ...           0.0   \n",720       "..        ...        ...        ...        ...  ...           ...   \n",721       "85        0.0        0.0        0.0        0.0  ...           0.0   \n",722       "86        0.0        0.0        0.0        0.0  ...           1.0   \n",723       "87        0.0        0.0        0.0        0.0  ...           0.0   \n",724       "88        0.0        0.0        0.0        0.0  ...           0.0   \n",725       "89        0.0        0.0        0.0        0.0  ...           0.0   \n",726       "\n",727       "    Serial_B1059  Serial_B1060  Serial_B1062  GridFins_False  GridFins_True   \n",728       "0            0.0           0.0           0.0             1.0            0.0  \\\n",729       "1            0.0           0.0           0.0             1.0            0.0   \n",730       "2            0.0           0.0           0.0             1.0            0.0   \n",731       "3            0.0           0.0           0.0             1.0            0.0   \n",732       "4            0.0           0.0           0.0             1.0            0.0   \n",733       "..           ...           ...           ...             ...            ...   \n",734       "85           0.0           1.0           0.0             0.0            1.0   \n",735       "86           0.0           0.0           0.0             0.0            1.0   \n",736       "87           0.0           0.0           0.0             0.0            1.0   \n",737       "88           0.0           1.0           0.0             0.0            1.0   \n",738       "89           0.0           0.0           1.0             0.0            1.0   \n",739       "\n",740       "    Reused_False  Reused_True  Legs_False  Legs_True  \n",741       "0            1.0          0.0         1.0        0.0  \n",742       "1            1.0          0.0         1.0        0.0  \n",743       "2            1.0          0.0         1.0        0.0  \n",744       "3            1.0          0.0         1.0        0.0  \n",745       "4            1.0          0.0         1.0        0.0  \n",746       "..           ...          ...         ...        ...  \n",747       "85           0.0          1.0         0.0        1.0  \n",748       "86           0.0          1.0         0.0        1.0  \n",749       "87           0.0          1.0         0.0        1.0  \n",750       "88           0.0          1.0         0.0        1.0  \n",751       "89           1.0          0.0         0.0        1.0  \n",752       "\n",753       "[90 rows x 83 columns]"754      ]755     },756     "execution_count": 6,757     "metadata": {},758     "output_type": "execute_result"759    }760   ],761   "source": [762    "X.head(100)"763   ]764  },765  {766   "cell_type": "markdown",767   "metadata": {},768   "source": [769    "## TASK  1\n"770   ]771  },772  {773   "cell_type": "markdown",774   "metadata": {},775   "source": [776    "Create a NumPy array from the column <code>Class</code> in <code>data</code>, by applying the method <code>to_numpy()</code>  then\n",777    "assign it  to the variable <code>Y</code>,make sure the output is a  Pandas series (only one bracket df\\['name of  column']).\n"778   ]779  },780  {781   "cell_type": "code",782   "execution_count": 7,783   "metadata": {},784   "outputs": [],785   "source": [786    "Y = data['Class'].to_numpy()"787   ]788  },789  {790   "cell_type": "markdown",791   "metadata": {},792   "source": [793    "## TASK  2\n"794   ]795  },796  {797   "cell_type": "markdown",798   "metadata": {},799   "source": [800    "Standardize the data in <code>X</code> then reassign it to the variable  <code>X</code> using the transform provided below.\n"801   ]802  },803  {804   "cell_type": "code",805   "execution_count": 8,806   "metadata": {},807   "outputs": [],808   "source": [809    "# students get this \n",810    "transform = preprocessing.StandardScaler()\n",811    "X = transform.fit_transform(X)"812   ]813  },814  {815   "cell_type": "markdown",816   "metadata": {},817   "source": [818    "We split the data into training and testing data using the  function  <code>train_test_split</code>.   The training data is divided into validation data, a second set used for training  data; then the models are trained and hyperparameters are selected using the function <code>GridSearchCV</code>.\n"819   ]820  },821  {822   "cell_type": "markdown",823   "metadata": {},824   "source": [825    "## TASK  3\n"826   ]827  },828  {829   "cell_type": "markdown",830   "metadata": {},831   "source": [832    "Use the function train_test_split to split the data X and Y into training and test data. Set the parameter test_size to  0.2 and random_state to 2. The training data and test data should be assigned to the following labels.\n"833   ]834  },835  {836   "cell_type": "markdown",837   "metadata": {},838   "source": [839    "<code>X_train, X_test, Y_train, Y_test</code>\n"840   ]841  },842  {843   "cell_type": "code",844   "execution_count": 9,845   "metadata": {},846   "outputs": [],847   "source": [848    "X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size=0.2, random_state=2)"849   ]850  },851  {852   "cell_type": "markdown",853   "metadata": {},854   "source": [855    "we can see we only have 18 test samples.\n"856   ]857  },858  {859   "cell_type": "code",860   "execution_count": 10,861   "metadata": {},862   "outputs": [863    {864     "data": {865      "text/plain": [866       "(18,)"867      ]868     },869     "execution_count": 10,870     "metadata": {},871     "output_type": "execute_result"872    }873   ],874   "source": [875    "Y_test.shape"876   ]877  },878  {879   "cell_type": "markdown",880   "metadata": {},881   "source": [882    "## TASK  4\n"883   ]884  },885  {886   "cell_type": "markdown",887   "metadata": {},888   "source": [889    "Create a logistic regression object  then create a  GridSearchCV object  <code>logreg_cv</code> with cv = 10.  Fit the object to find the best parameters from the dictionary <code>parameters</code>.\n"890   ]891  },892  {893   "cell_type": "code",894   "execution_count": 11,895   "metadata": {},896   "outputs": [],897   "source": [898    "parameters ={'C':[0.01,0.1,1],\n",899    "             'penalty':['l2'],\n",900    "             'solver':['lbfgs']}"901   ]902  },903  {904   "cell_type": "code",905   "execution_count": 12,906   "metadata": {},907   "outputs": [908    {909     "data": {910      "text/html": [911       "<style>#sk-container-id-1 {color: black;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(cv=10, estimator=LogisticRegression(),\n",912       "             param_grid={&#x27;C&#x27;: [0.01, 0.1, 1], &#x27;penalty&#x27;: [&#x27;l2&#x27;],\n",913       "                         &#x27;solver&#x27;: [&#x27;lbfgs&#x27;]})</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GridSearchCV</label><div class=\"sk-toggleable__content\"><pre>GridSearchCV(cv=10, estimator=LogisticRegression(),\n",914       "             param_grid={&#x27;C&#x27;: [0.01, 0.1, 1], &#x27;penalty&#x27;: [&#x27;l2&#x27;],\n",915       "                         &#x27;solver&#x27;: [&#x27;lbfgs&#x27;]})</pre></div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">estimator: LogisticRegression</label><div class=\"sk-toggleable__content\"><pre>LogisticRegression()</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LogisticRegression</label><div class=\"sk-toggleable__content\"><pre>LogisticRegression()</pre></div></div></div></div></div></div></div></div></div></div>"916      ],917      "text/plain": [918       "GridSearchCV(cv=10, estimator=LogisticRegression(),\n",919       "             param_grid={'C': [0.01, 0.1, 1], 'penalty': ['l2'],\n",920       "                         'solver': ['lbfgs']})"921      ]922     },923     "execution_count": 12,924     "metadata": {},925     "output_type": "execute_result"926    }927   ],928   "source": [929    "parameters ={\"C\":[0.01,0.1,1],'penalty':['l2'], 'solver':['lbfgs']}# l1 lasso l2 ridge\n",930    "lr=LogisticRegression()\n",931    "logreg_cv = GridSearchCV(lr, parameters, cv=10)\n",932    "logreg_cv.fit(X_train,Y_train)"933   ]934  },935  {936   "cell_type": "markdown",937   "metadata": {},938   "source": [939    "We output the <code>GridSearchCV</code> object for logistic regression. We display the best parameters using the data attribute <code>best_params\\_</code> and the accuracy on the validation data using the data attribute <code>best_score\\_</code>.\n"940   ]941  },942  {943   "cell_type": "code",944   "execution_count": 13,945   "metadata": {},946   "outputs": [947    {948     "name": "stdout",949     "output_type": "stream",950     "text": [951      "tuned hpyerparameters :(best parameters)  {'C': 0.01, 'penalty': 'l2', 'solver': 'lbfgs'}\n",952      "accuracy : 0.8464285714285713\n"953     ]954    }955   ],956   "source": [957    "print(\"tuned hpyerparameters :(best parameters) \",logreg_cv.best_params_)\n",958    "print(\"accuracy :\",logreg_cv.best_score_)"959   ]960  },961  {962   "cell_type": "markdown",963   "metadata": {},964   "source": [965    "## TASK  5\n"966   ]967  },968  {969   "cell_type": "markdown",970   "metadata": {},971   "source": [972    "Calculate the accuracy on the test data using the method <code>score</code>:\n"973   ]974  },975  {976   "cell_type": "code",977   "execution_count": 14,978   "metadata": {},979   "outputs": [980    {981     "data": {982      "text/plain": [983       "0.8333333333333334"984      ]985     },986     "execution_count": 14,987     "metadata": {},988     "output_type": "execute_result"989    }990   ],991   "source": [992    "logreg_score = logreg_cv.score(X_test, Y_test)\n",993    "logreg_score"994   ]995  },996  {997   "cell_type": "markdown",998   "metadata": {},999   "source": [1000    "Lets look at the confusion matrix:\n"1001   ]1002  },1003  {1004   "cell_type": "code",1005   "execution_count": 15,1006   "metadata": {},1007   "outputs": [1008    {1009     "data": {1010      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhIAAAHHCAYAAADqJrG+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABD30lEQVR4nO3dd3RU1fr/8c+EkEkISQg9USABFIJUQbh0uESKghSV6jU0vQpIL3IVSACNghRBEUEFRBS5IiCoKFX0ggiEANJLKNKlSguQOb8//DFfxySaDGc4k+H9cs1amX327P2cLAcedjs2wzAMAQAAuMHP6gAAAEDORSIBAADcRiIBAADcRiIBAADcRiIBAADcRiIBAADcRiIBAADcRiIBAADcRiIBAADcRiIBeNDevXvVuHFjhYWFyWazaeHChaa2f/DgQdlsNs2cOdPUdnOyBg0aqEGDBlaHAdw1SCTg8/bv369///vfKlmypAIDAxUaGqratWvrzTff1NWrVz3ad1xcnLZt26ZXXnlFs2fPVrVq1Tza353UuXNn2Ww2hYaGZvh73Lt3r2w2m2w2m954441st3/s2DHFx8crOTnZhGgBeIq/1QEAnvTll1/qySeflN1u19NPP63y5cvr+vXr+uGHHzRo0CBt375d06ZN80jfV69e1bp16/TSSy+pV69eHumjRIkSunr1qnLnzu2R9v+Ov7+/rly5osWLF6tt27Yu1+bMmaPAwEBdu3bNrbaPHTumhIQERUVFqXLlyln+3LfffutWfwDcQyIBn5WSkqL27durRIkSWrlypSIiIpzXevbsqX379unLL7/0WP+nT5+WJOXLl89jfdhsNgUGBnqs/b9jt9tVu3ZtffLJJ+kSiY8//liPPvqo5s+ff0diuXLlivLkyaOAgIA70h+A3zG1AZ81ZswYXbp0Se+//75LEnFL6dKl1adPH+f7mzdvatSoUSpVqpTsdruioqL0n//8R6mpqS6fi4qKUvPmzfXDDz+oevXqCgwMVMmSJfXhhx8668THx6tEiRKSpEGDBslmsykqKkrS71MCt37+o/j4eNlsNpeyZcuWqU6dOsqXL5/y5s2rMmXK6D//+Y/zemZrJFauXKm6desqODhY+fLlU8uWLbVz584M+9u3b586d+6sfPnyKSwsTF26dNGVK1cy/8X+SceOHfX111/r/PnzzrINGzZo79696tixY7r6Z8+e1cCBA1WhQgXlzZtXoaGhatasmbZs2eKss3r1aj300EOSpC5dujinSG7dZ4MGDVS+fHlt2rRJ9erVU548eZy/lz+vkYiLi1NgYGC6+2/SpInCw8N17NixLN8rgPRIJOCzFi9erJIlS6pWrVpZqt+9e3cNHz5cDz74oCZMmKD69esrMTFR7du3T1d33759euKJJ/Twww9r3LhxCg8PV+fOnbV9+3ZJUps2bTRhwgRJUocOHTR79mxNnDgxW/Fv375dzZs3V2pqqkaOHKlx48bpscce0//+97+//Nzy5cvVpEkTnTp1SvHx8erfv7/Wrl2r2rVr6+DBg+nqt23bVr/99psSExPVtm1bzZw5UwkJCVmOs02bNrLZbPr888+dZR9//LHKli2rBx98MF39AwcOaOHChWrevLnGjx+vQYMGadu2bapfv77zL/WYmBiNHDlSkvTss89q9uzZmj17turVq+ds58yZM2rWrJkqV66siRMnqmHDhhnG9+abb6pQoUKKi4tTWlqaJOndd9/Vt99+q8mTJysyMjLL9wogAwbggy5cuGBIMlq2bJml+snJyYYko3v37i7lAwcONCQZK1eudJaVKFHCkGSsWbPGWXbq1CnDbrcbAwYMcJalpKQYkoyxY8e6tBkXF2eUKFEiXQwjRoww/viVnDBhgiHJOH36dKZx3+pjxowZzrLKlSsbhQsXNs6cOeMs27Jli+Hn52c8/fTT6frr2rWrS5utW7c2ChQokGmff7yP4OBgwzAM44knnjAaNWpkGIZhpKWlGUWLFjUSEhIy/B1cu3bNSEtLS3cfdrvdGDlypLNsw4YN6e7tlvr16xuSjKlTp2Z4rX79+i5l33zzjSHJGD16tHHgwAEjb968RqtWrf72HgH8PUYk4JMuXrwoSQoJCclS/a+++kqS1L9/f5fyAQMGSFK6tRTlypVT3bp1ne8LFSqkMmXK6MCBA27H/Ge31lYsWrRIDocjS585fvy4kpOT1blzZ+XPn99ZXrFiRT388MPO+/yj5557zuV93bp1debMGefvMCs6duyo1atX68SJE1q5cqVOnDiR4bSG9Pu6Cj+/3//oSUtL05kzZ5zTNklJSVnu0263q0uXLlmq27hxY/373//WyJEj1aZNGwUGBurdd9/Ncl8AMkciAZ8UGhoqSfrtt9+yVP/QoUPy8/NT6dKlXcqLFi2qfPny6dChQy7lxYsXT9dGeHi4zp0752bE6bVr1061a9dW9+7dVaRIEbVv317z5s37y6TiVpxlypRJdy0mJka//vqrLl++7FL+53sJDw+XpGzdyyOPPKKQkBB9+umnmjNnjh566KF0v8tbHA6HJkyYoPvuu092u10FCxZUoUKFtHXrVl24cCHLfd5zzz3ZWlj5xhtvKH/+/EpOTtakSZNUuHDhLH8WQOZIJOCTQkNDFRkZqZ9//jlbn/vzYsfM5MqVK8NywzDc7uPW/P0tQUFBWrNmjZYvX65//etf2rp1q9q1a6eHH344Xd3bcTv3covdblebNm00a9YsLViwINPRCEl69dVX1b9/f9WrV08fffSRvvnmGy1btkwPPPBAlkdepN9/P9mxefNmnTp1SpK0bdu2bH0WQOZIJOCzmjdvrv3792vdunV/W7dEiRJyOBzau3evS/nJkyd1/vx55w4MM4SHh7vscLjlz6MekuTn56dGjRpp/Pjx2rFjh1555RWtXLlSq1atyrDtW3Hu3r073bVdu3apYMGCCg4Ovr0byETHjh21efNm/fbbbxkuUL3ls88+U8OGDfX++++rffv2aty4sWJjY9P9TrKa1GXF5cuX1aVLF5UrV07PPvusxowZow0bNpjWPnA3I5GAzxo8eLCCg4PVvXt3nTx5Mt31/fv3680335T0+9C8pHQ7K8aPHy9JevTRR02Lq1SpUrpw4YK2bt3qLDt+/LgWLFjgUu/s2bPpPnvrYKY/b0m9JSIiQpUrV9asWbNc/mL++eef9e233zrv0xMaNmyoUaNG6a233lLRokUzrZcrV650ox3//e9/dfToUZeyWwlPRklXdg0ZMkSHDx/WrFmzNH78eEVFRSkuLi7T3yOArONAKvisUqVK6eOPP1a7du0UExPjcrLl2rVr9d///ledO3eWJFWqVElxcXGaNm2azp8/r/r16+unn37SrFmz1KpVq0y3Frqjffv2GjJkiFq3bq3evXvrypUreuedd3T//fe7LDYcOXKk1qxZo0cffVQlSpTQqVOnNGXKFN17772qU6dOpu2PHTtWzZo1U82aNdWtWzddvXpVkydPVlhYmOLj4027jz/z8/PTyy+//Lf1mjdvrpEjR6pLly6qVauWtm3bpjlz5qhkyZIu9UqVKqV8+fJp6tSpCgkJ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i4szWrZsmen106dPG5KMbdu2GYZhGCkpKYYk47333kvX986dOw3DMIwOHToYjzzyiEs77dq1M8LCwv42HuCv1K9f3+X79kcbNmwwJBm//fabYRiGsWrVKkOSsXz5cmedL7/80pBkXL161TAMw6hZs6bRo0cPl3Zq1KiRpe8OYAVGJHKw/fv36/r166pRo4azLH/+/CpTpkymn9m5c6eKFSumyMhIZ1lWnwJXsWJFl/cRERHOYdtb7RYrVsx5vVy5csqXL5927tyZpfYzs3fvXnXo0EElS5ZUaGiooqKiJP0+lZJZfBEREZLkEt8ff09S1u8byKpNmzapRYsWKl68uEJCQlS/fn1J/L8K30YigSzLnTu3y3ubzZZuesETWrRoobNnz2r69Olav3691q9fL0m6fv16pvHZbDZJuiPxAdLvU3BNmjRRaGio5syZow0bNmjBggWS+H8Vvo1EIgcrVaqUcufO7fyLVZLOnTunPXv2ZPqZmJgYHTlyRMePH3eW/fjjj7cdy612jxw54izbsWOHzp8/r3LlykmSAgIClJaWlq12z5w5o927d+vll19Wo0aNFBMTo3PnzrkV3x9/T5I59w3csmvXLp05c0avvfaa6tatq7Jly7ostMwq/l9FTsP2zxwsb9686tatmwYNGqQCBQqocOHCeumll+Tnl3l+GBsbq/vvv19xcXEaO3asLl68qJdeeum2Y4mNjVWFChXUqVMnTZw4UTdv3lSPHj1Uv359VatWTdLvu0dSUlKUnJyse++9VyEhIX/79MPw8HAVKFBA06ZNU0REhA4fPqwXX3wx2/H17t1btWvX1htvvKGWLVvqm2++0dKlS926VyAjxYsXV0BAgCZPnqznnntOP//8s0aNGpXtdvr06aPOnTurWrVqql27tubMmaPt27erZMmSHogauH2MSORwY8eOVd26ddWiRQvFxsaqTp06qlq1aqb1/fz8tGDBAl29elXVq1dX9+7d9corr9x2HDabTYsWLVJ4eLjq1aun2NhYlSxZUp9++qmzzuOPP66mTZuqYcOGKlSokD755JO/bdfPz09z587Vpk2bVL58efXr109jx47Ndnz/+Mc/NH36dL355puqVKmSvv32W7388svZbgfITKFChTRz5kz997//Vbly5fTaa6/pjTfeyHY77dq107BhwzR48GBVrVpVhw4d0vPPP++BiAFz8BhxAADgNkYkAACA20gkAACA20gkAACA20gkAACA20gkAACA20gkAACA20gkAACA20gkAAt17txZrVq1cr5v0KCB+vbte8fjWL16tWw2m86fP59pHZvNpoULF2a5zfj4eFWuXPm24jp48KBsNpuSk5Nvqx0AnkMiAfxJ586dZbPZZLPZFBAQoNKlS2vkyJG6efOmx/v+/PPPs3ysclb+8gcAT+NZG0AGmjZtqhkzZig1NVVfffWVevbsqdy5c2vo0KHp6l6/fl0BAQGm9Js/f35T2gGAO4URCSADdrtdRYsWVYkSJfT8888rNjZWX3zxhaT/m4545ZVXFBkZqTJlykiSjhw5orZt2ypfvnzKnz+/WrZsqYMHDzrbTEtLU//+/ZUvXz4VKFBAgwcP1p9PqP/z1EZqaqqGDBmiYsWKyW63q3Tp0nr//fd18OBBNWzYUNLvDzaz2Wzq3LmzpN8fR52YmKjo6GgFBQWpUqVK+uyzz1z6+eqrr3T//fcrKChIDRs2dIkzq4YMGaL7779fefLkUcmSJTVs2DDduHEjXb13331XxYoVU548edS2bVtduHDB5fp7772nmJgYBQYGqmzZspoyZUqmfZ47d06dOnVSoUKFFBQUpPvuu08zZszIduwAzMOIBJAFQUFBOnPmjPP9ihUrFBoaqmXLlkmSbty4oSZNmqhmzZr6/vvv5e/vr9GjR6tp06baunWrAgICNG7cOM2cOVMffPCBYmJiNG7cOC1YsED//Oc/M+336aef1rp16zRp0iRVqlRJKSkp+vXXX1WsWDHNnz9fjz/+uHbv3q3Q0FAFBQVJkhITE/XRRx9p6tSpuu+++7RmzRo99dRTKlSokOrXr68jR46oTZs26tmzp5599llt3LhRAwYMyPbvJCQkRDNnzlRkZKS2bdumZ555RiEhIRo8eLCzzr59+zRv3jwtXrxYFy9eVLdu3dSjRw/NmTNHkjRnzhwNHz5cb731lqpUqaLNmzfrmWeeUXBwsOLi4tL1OWzYMO3YsUNff/21ChYsqH379unq1avZjh2AiQwALuLi4oyWLVsahmEYDofDWLZsmWG3242BAwc6rxcpUsRITU11fmb27NlGmTJlDIfD4SxLTU01goKCjG+++cYwDMOIiIgwxowZ47x+48YN495773X2ZRiGUb9+faNPnz6GYRjG7t27DUnGsmXLMoxz1apVhiTj3LlzzrJr164ZefLkMdauXetSt1u3bkaHDh0MwzCMoUOHGuXKlXO5PmTIkHRt/ZkkY8GCBZleHzt2rFG1alXn+xEjRhi5cuUyfvnlF2fZ119/bfj5+RnHjx83DMMwSpUqZXz88ccu7YwaNcqoWbOmYRiGkZKSYkgyNm/ebBiGYbRo0cLo0qVLpjEAuPMYkQAysGTJEuXNm1c3btyQw+FQx44dFR8f77xeoUIFl3URW7Zs0b59+xQSEuLSzrVr17R//35duHBBx48fV40aNZzX/P39Va1atXTTG7ckJycrV65cql+/fpbj3rdvn65cuaKHH37Ypfz69euqUqWKJGnnzp0ucUhSzZo1s9zHLZ9++qkmTZqk/fv369KlS7p586ZCQ0Nd6hQvXlz33HOPSz8Oh0O7d+9WSEiI9u/fr27duumZZ55x1rl586bCwsIy7PP555/X448/rqSkJDVu3FitWrVSrVq1sh07APOQSAAZaNiwod555x0FBAQoMjJS/v6uX5Xg4GCX95cuXVLVqlWdQ/Z/VKhQIbdiuDVVkR2XLl2SJH355Zcuf4FLv6/7MMu6devUqVMnJSQkqEmTJgoLC9PcuXM1bty4bMc6ffr0dIlNrly5MvxMs2bNdOjQIX311VdatmyZGjVqpJ49e+qNN95w/2YA3BYSCSADwcHBKl26dJbrP/jgg/r0009VuHDhdP8qvyUiIkLr169XvXr1JP3+L+9NmzbpwQcfzLB+hQoV5HA49N133yk2Njbd9VsjImlpac6ycuXKyW636/Dhw5mOZMTExDgXjt7y448//v1N/sHatWtVokQJvfTSS86yQ4cOpat3+PBhHTt2TJGRkc5+/Pz8VKZMGRUpUkSRkZE6cOCAOnXqlOW+CxUqpLi4OMXFxalu3boaNGgQiQRgIXZtACbo1KmTChYsqJYtW+r7779XSkqKVq9erd69e+uXX36RJPXp00evvfaaFi5cqF27dqlHjx5/eQZEVFSU4uLi1LVrVy1cuNDZ5rx58yRJJUqUkM1m05IlS3T69GldunRJISEhGjhwoPr166dZs2Zp//79SkpK0uTJkzVr1ixJ0nPPPae9e/dq0KBB2r17tz7++GPNnDkzW/d733336fDhw5o7d67279+vSZMmacGCBenqBQYGKi4uTlu2bNH333+v3r17q23btipatKgkKSEhQYmJiZo0aZL27Nmjbdu2acaMGRo/fnyG/Q4fPlyLFi3Svn37tH37di1ZskQxMTHZih2AuUgkABPkyZNHa9asUfHixdWmTRvFxMSoW7duunbtmnOEYsCAAfrXv/6luLg41axZUyEhIWrduvVftvvOO+/oiSeeUI8ePVS2bFk988wzunz5siTpnnvuUUJCgl588UUVKVJEvXr1kiSNGjVKw4YNU2JiomJiYtS0aVN9+eWXio6OlvT7uoX58+dr4cKFqlSpkqZOnapXX301W/f72GOPqV+/furVq5cqV66stWvXatiwYenqlS5dWm3atNEjjzyixo0bq2LFii7bO7t376733ntPM2bMUIUKFVS/fn3NnDnTGeufBQQEaOjQoapYsaLq1aunXLlyae7cudmKHYC5bEZmK70AAAD+BiMSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbf8PkAtlXISM2hwAAAAASUVORK5CYII=",1011      "text/plain": [1012       "<Figure size 640x480 with 2 Axes>"1013      ]1014     },1015     "metadata": {},1016     "output_type": "display_data"1017    }1018   ],1019   "source": [1020    "logreg_yhat=logreg_cv.predict(X_test)\n",1021    "plot_confusion_matrix(Y_test,logreg_yhat)"1022   ]1023  },1024  {1025   "cell_type": "markdown",1026   "metadata": {},1027   "source": [1028    "Examining the confusion matrix, we see that logistic regression can distinguish between the different classes.  We see that the major problem is false positives.\n"1029   ]1030  },1031  {1032   "cell_type": "markdown",1033   "metadata": {},1034   "source": [1035    "## TASK  6\n"1036   ]1037  },1038  {1039   "cell_type": "markdown",1040   "metadata": {},1041   "source": [1042    "Create a support vector machine object then  create a  <code>GridSearchCV</code> object  <code>svm_cv</code> with cv - 10.  Fit the object to find the best parameters from the dictionary <code>parameters</code>.\n"1043   ]1044  },1045  {1046   "cell_type": "code",1047   "execution_count": 16,1048   "metadata": {},1049   "outputs": [],1050   "source": [1051    "parameters = {'kernel':('linear', 'rbf', 'poly', 'sigmoid'),\n",1052    "              'C': np.logspace(-3, 3, 5),\n",1053    "              'gamma': np.logspace(-3, 3, 5)}\n",1054    "svm = SVC()\n",1055    "svm_cv = GridSearchCV(svm, parameters, cv=10)"1056   ]1057  },1058  {1059   "cell_type": "code",1060   "execution_count": 17,1061   "metadata": {},1062   "outputs": [1063    {1064     "data": {1065      "text/html": [1066       "<style>#sk-container-id-2 {color: black;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(cv=10, estimator=SVC(),\n",1067       "             param_grid={&#x27;C&#x27;: array([1.00000000e-03, 3.16227766e-02, 1.00000000e+00, 3.16227766e+01,\n",1068       "       1.00000000e+03]),\n",1069       "                         &#x27;gamma&#x27;: array([1.00000000e-03, 3.16227766e-02, 1.00000000e+00, 3.16227766e+01,\n",1070       "       1.00000000e+03]),\n",1071       "                         &#x27;kernel&#x27;: (&#x27;linear&#x27;, &#x27;rbf&#x27;, &#x27;poly&#x27;, &#x27;sigmoid&#x27;)})</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" ><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GridSearchCV</label><div class=\"sk-toggleable__content\"><pre>GridSearchCV(cv=10, estimator=SVC(),\n",1072       "             param_grid={&#x27;C&#x27;: array([1.00000000e-03, 3.16227766e-02, 1.00000000e+00, 3.16227766e+01,\n",1073       "       1.00000000e+03]),\n",1074       "                         &#x27;gamma&#x27;: array([1.00000000e-03, 3.16227766e-02, 1.00000000e+00, 3.16227766e+01,\n",1075       "       1.00000000e+03]),\n",1076       "                         &#x27;kernel&#x27;: (&#x27;linear&#x27;, &#x27;rbf&#x27;, &#x27;poly&#x27;, &#x27;sigmoid&#x27;)})</pre></div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" ><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">estimator: SVC</label><div class=\"sk-toggleable__content\"><pre>SVC()</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" ><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">SVC</label><div class=\"sk-toggleable__content\"><pre>SVC()</pre></div></div></div></div></div></div></div></div></div></div>"1077      ],1078      "text/plain": [1079       "GridSearchCV(cv=10, estimator=SVC(),\n",1080       "             param_grid={'C': array([1.00000000e-03, 3.16227766e-02, 1.00000000e+00, 3.16227766e+01,\n",1081       "       1.00000000e+03]),\n",1082       "                         'gamma': array([1.00000000e-03, 3.16227766e-02, 1.00000000e+00, 3.16227766e+01,\n",1083       "       1.00000000e+03]),\n",1084       "                         'kernel': ('linear', 'rbf', 'poly', 'sigmoid')})"1085      ]1086     },1087     "execution_count": 17,1088     "metadata": {},1089     "output_type": "execute_result"1090    }1091   ],1092   "source": [1093    "svm_cv.fit(X_train, Y_train)  # Обучение модели"1094   ]1095  },1096  {1097   "cell_type": "code",1098   "execution_count": 18,1099   "metadata": {},1100   "outputs": [1101    {1102     "name": "stdout",1103     "output_type": "stream",1104     "text": [1105      "tuned hpyerparameters :(best parameters)  {'C': 1.0, 'gamma': 0.03162277660168379, 'kernel': 'sigmoid'}\n",1106      "accuracy : 0.8482142857142856\n"1107     ]1108    }1109   ],1110   "source": [1111    "print(\"tuned hpyerparameters :(best parameters) \",svm_cv.best_params_)\n",1112    "print(\"accuracy :\",svm_cv.best_score_)"1113   ]1114  },1115  {1116   "cell_type": "markdown",1117   "metadata": {},1118   "source": [1119    "## TASK  7\n"1120   ]1121  },1122  {1123   "cell_type": "markdown",1124   "metadata": {},1125   "source": [1126    "Calculate the accuracy on the test data using the method <code>score</code>:\n"1127   ]1128  },1129  {1130   "cell_type": "code",1131   "execution_count": 19,1132   "metadata": {},1133   "outputs": [1134    {1135     "data": {1136      "text/plain": [1137       "0.8333333333333334"1138      ]1139     },1140     "execution_count": 19,1141     "metadata": {},1142     "output_type": "execute_result"1143    }1144   ],1145   "source": [1146    "svm_score = svm_cv.score(X_test, Y_test)\n",1147    "svm_score"1148   ]1149  },1150  {1151   "cell_type": "markdown",1152   "metadata": {},1153   "source": [1154    "We can plot the confusion matrix\n"1155   ]1156  },1157  {1158   "cell_type": "code",1159   "execution_count": 20,1160   "metadata": {},1161   "outputs": [1162    {1163     "data": {1164      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhIAAAHHCAYAAADqJrG+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABD30lEQVR4nO3dd3RU1fr/8c+EkEkISQg9USABFIJUQbh0uESKghSV6jU0vQpIL3IVSACNghRBEUEFRBS5IiCoKFX0ggiEANJLKNKlSguQOb8//DFfxySaDGc4k+H9cs1amX327P2cLAcedjs2wzAMAQAAuMHP6gAAAEDORSIBAADcRiIBAADcRiIBAADcRiIBAADcRiIBAADcRiIBAADcRiIBAADcRiIBAADcRiIBeNDevXvVuHFjhYWFyWazaeHChaa2f/DgQdlsNs2cOdPUdnOyBg0aqEGDBlaHAdw1SCTg8/bv369///vfKlmypAIDAxUaGqratWvrzTff1NWrVz3ad1xcnLZt26ZXXnlFs2fPVrVq1Tza353UuXNn2Ww2hYaGZvh73Lt3r2w2m2w2m954441st3/s2DHFx8crOTnZhGgBeIq/1QEAnvTll1/qySeflN1u19NPP63y5cvr+vXr+uGHHzRo0CBt375d06ZN80jfV69e1bp16/TSSy+pV69eHumjRIkSunr1qnLnzu2R9v+Ov7+/rly5osWLF6tt27Yu1+bMmaPAwEBdu3bNrbaPHTumhIQERUVFqXLlyln+3LfffutWfwDcQyIBn5WSkqL27durRIkSWrlypSIiIpzXevbsqX379unLL7/0WP+nT5+WJOXLl89jfdhsNgUGBnqs/b9jt9tVu3ZtffLJJ+kSiY8//liPPvqo5s+ff0diuXLlivLkyaOAgIA70h+A3zG1AZ81ZswYXbp0Se+//75LEnFL6dKl1adPH+f7mzdvatSoUSpVqpTsdruioqL0n//8R6mpqS6fi4qKUvPmzfXDDz+oevXqCgwMVMmSJfXhhx8668THx6tEiRKSpEGDBslmsykqKkrS71MCt37+o/j4eNlsNpeyZcuWqU6dOsqXL5/y5s2rMmXK6D//+Y/zemZrJFauXKm6desqODhY+fLlU8uWLbVz584M+9u3b586d+6sfPnyKSwsTF26dNGVK1cy/8X+SceOHfX111/r/PnzzrINGzZo79696tixY7r6Z8+e1cCBA1WhQgXlzZtXoaGhatasmbZs2eKss3r1aj300EOSpC5dujinSG7dZ4MGDVS+fHlt2rRJ9erVU548eZy/lz+vkYiLi1NgYGC6+2/SpInCw8N17NixLN8rgPRIJOCzFi9erJIlS6pWrVpZqt+9e3cNHz5cDz74oCZMmKD69esrMTFR7du3T1d33759euKJJ/Twww9r3LhxCg8PV+fOnbV9+3ZJUps2bTRhwgRJUocOHTR79mxNnDgxW/Fv375dzZs3V2pqqkaOHKlx48bpscce0//+97+//Nzy5cvVpEkTnTp1SvHx8erfv7/Wrl2r2rVr6+DBg+nqt23bVr/99psSExPVtm1bzZw5UwkJCVmOs02bNrLZbPr888+dZR9//LHKli2rBx98MF39AwcOaOHChWrevLnGjx+vQYMGadu2bapfv77zL/WYmBiNHDlSkvTss89q9uzZmj17turVq+ds58yZM2rWrJkqV66siRMnqmHDhhnG9+abb6pQoUKKi4tTWlqaJOndd9/Vt99+q8mTJysyMjLL9wogAwbggy5cuGBIMlq2bJml+snJyYYko3v37i7lAwcONCQZK1eudJaVKFHCkGSsWbPGWXbq1CnDbrcbAwYMcJalpKQYkoyxY8e6tBkXF2eUKFEiXQwjRoww/viVnDBhgiHJOH36dKZx3+pjxowZzrLKlSsbhQsXNs6cOeMs27Jli+Hn52c8/fTT6frr2rWrS5utW7c2ChQokGmff7yP4OBgwzAM44knnjAaNWpkGIZhpKWlGUWLFjUSEhIy/B1cu3bNSEtLS3cfdrvdGDlypLNsw4YN6e7tlvr16xuSjKlTp2Z4rX79+i5l33zzjSHJGD16tHHgwAEjb968RqtWrf72HgH8PUYk4JMuXrwoSQoJCclS/a+++kqS1L9/f5fyAQMGSFK6tRTlypVT3bp1ne8LFSqkMmXK6MCBA27H/Ge31lYsWrRIDocjS585fvy4kpOT1blzZ+XPn99ZXrFiRT388MPO+/yj5557zuV93bp1debMGefvMCs6duyo1atX68SJE1q5cqVOnDiR4bSG9Pu6Cj+/3//oSUtL05kzZ5zTNklJSVnu0263q0uXLlmq27hxY/373//WyJEj1aZNGwUGBurdd9/Ncl8AMkciAZ8UGhoqSfrtt9+yVP/QoUPy8/NT6dKlXcqLFi2qfPny6dChQy7lxYsXT9dGeHi4zp0752bE6bVr1061a9dW9+7dVaRIEbVv317z5s37y6TiVpxlypRJdy0mJka//vqrLl++7FL+53sJDw+XpGzdyyOPPKKQkBB9+umnmjNnjh566KF0v8tbHA6HJkyYoPvuu092u10FCxZUoUKFtHXrVl24cCHLfd5zzz3ZWlj5xhtvKH/+/EpOTtakSZNUuHDhLH8WQOZIJOCTQkNDFRkZqZ9//jlbn/vzYsfM5MqVK8NywzDc7uPW/P0tQUFBWrNmjZYvX65//etf2rp1q9q1a6eHH344Xd3bcTv3covdblebNm00a9YsLViwINPRCEl69dVX1b9/f9WrV08fffSRvvnmGy1btkwPPPBAlkdepN9/P9mxefNmnTp1SpK0bdu2bH0WQOZIJOCzmjdvrv3792vdunV/W7dEiRJyOBzau3evS/nJkyd1/vx55w4MM4SHh7vscLjlz6MekuTn56dGjRpp/Pjx2rFjh1555RWtXLlSq1atyrDtW3Hu3r073bVdu3apYMGCCg4Ovr0byETHjh21efNm/fbbbxkuUL3ls88+U8OGDfX++++rffv2aty4sWJjY9P9TrKa1GXF5cuX1aVLF5UrV07PPvusxowZow0bNpjWPnA3I5GAzxo8eLCCg4PVvXt3nTx5Mt31/fv3680335T0+9C8pHQ7K8aPHy9JevTRR02Lq1SpUrpw4YK2bt3qLDt+/LgWLFjgUu/s2bPpPnvrYKY/b0m9JSIiQpUrV9asWbNc/mL++eef9e233zrv0xMaNmyoUaNG6a233lLRokUzrZcrV650ox3//e9/dfToUZeyWwlPRklXdg0ZMkSHDx/WrFmzNH78eEVFRSkuLi7T3yOArONAKvisUqVK6eOPP1a7du0UExPjcrLl2rVr9d///ledO3eWJFWqVElxcXGaNm2azp8/r/r16+unn37SrFmz1KpVq0y3Frqjffv2GjJkiFq3bq3evXvrypUreuedd3T//fe7LDYcOXKk1qxZo0cffVQlSpTQqVOnNGXKFN17772qU6dOpu2PHTtWzZo1U82aNdWtWzddvXpVkydPVlhYmOLj4027jz/z8/PTyy+//Lf1mjdvrpEjR6pLly6qVauWtm3bpjlz5qhkyZIu9UqVKqV8+fJp6tSpCgkJ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i4szWrZsmen106dPG5KMbdu2GYZhGCkpKYYk47333kvX986dOw3DMIwOHToYjzzyiEs77dq1M8LCwv42HuCv1K9f3+X79kcbNmwwJBm//fabYRiGsWrVKkOSsXz5cmedL7/80pBkXL161TAMw6hZs6bRo0cPl3Zq1KiRpe8OYAVGJHKw/fv36/r166pRo4azLH/+/CpTpkymn9m5c6eKFSumyMhIZ1lWnwJXsWJFl/cRERHOYdtb7RYrVsx5vVy5csqXL5927tyZpfYzs3fvXnXo0EElS5ZUaGiooqKiJP0+lZJZfBEREZLkEt8ff09S1u8byKpNmzapRYsWKl68uEJCQlS/fn1J/L8K30YigSzLnTu3y3ubzZZuesETWrRoobNnz2r69Olav3691q9fL0m6fv16pvHZbDZJuiPxAdLvU3BNmjRRaGio5syZow0bNmjBggWS+H8Vvo1EIgcrVaqUcufO7fyLVZLOnTunPXv2ZPqZmJgYHTlyRMePH3eW/fjjj7cdy612jxw54izbsWOHzp8/r3LlykmSAgIClJaWlq12z5w5o927d+vll19Wo0aNFBMTo3PnzrkV3x9/T5I59w3csmvXLp05c0avvfaa6tatq7Jly7ostMwq/l9FTsP2zxwsb9686tatmwYNGqQCBQqocOHCeumll+Tnl3l+GBsbq/vvv19xcXEaO3asLl68qJdeeum2Y4mNjVWFChXUqVMnTZw4UTdv3lSPHj1Uv359VatWTdLvu0dSUlKUnJyse++9VyEhIX/79MPw8HAVKFBA06ZNU0REhA4fPqwXX3wx2/H17t1btWvX1htvvKGWLVvqm2++0dKlS926VyAjxYsXV0BAgCZPnqznnntOP//8s0aNGpXtdvr06aPOnTurWrVqql27tubMmaPt27erZMmSHogauH2MSORwY8eOVd26ddWiRQvFxsaqTp06qlq1aqb1/fz8tGDBAl29elXVq1dX9+7d9corr9x2HDabTYsWLVJ4eLjq1aun2NhYlSxZUp9++qmzzuOPP66mTZuqYcOGKlSokD755JO/bdfPz09z587Vpk2bVL58efXr109jx47Ndnz/+Mc/NH36dL355puqVKmSvv32W7388svZbgfITKFChTRz5kz997//Vbly5fTaa6/pjTfeyHY77dq107BhwzR48GBVrVpVhw4d0vPPP++BiAFz8BhxAADgNkYkAACA20gkAACA20gkAACA20gkAACA20gkAACA20gkAACA20gkAACA20gkAAt17txZrVq1cr5v0KCB+vbte8fjWL16tWw2m86fP59pHZvNpoULF2a5zfj4eFWuXPm24jp48KBsNpuSk5Nvqx0AnkMiAfxJ586dZbPZZLPZFBAQoNKlS2vkyJG6efOmx/v+/PPPs3ysclb+8gcAT+NZG0AGmjZtqhkzZig1NVVfffWVevbsqdy5c2vo0KHp6l6/fl0BAQGm9Js/f35T2gGAO4URCSADdrtdRYsWVYkSJfT8888rNjZWX3zxhaT/m4545ZVXFBkZqTJlykiSjhw5orZt2ypfvnzKnz+/WrZsqYMHDzrbTEtLU//+/ZUvXz4VKFBAgwcP1p9PqP/z1EZqaqqGDBmiYsWKyW63q3Tp0nr//fd18OBBNWzYUNLvDzaz2Wzq3LmzpN8fR52YmKjo6GgFBQWpUqVK+uyzz1z6+eqrr3T//fcrKChIDRs2dIkzq4YMGaL7779fefLkUcmSJTVs2DDduHEjXb13331XxYoVU548edS2bVtduHDB5fp7772nmJgYBQYGqmzZspoyZUqmfZ47d06dOnVSoUKFFBQUpPvuu08zZszIduwAzMOIBJAFQUFBOnPmjPP9ihUrFBoaqmXLlkmSbty4oSZNmqhmzZr6/vvv5e/vr9GjR6tp06baunWrAgICNG7cOM2cOVMffPCBYmJiNG7cOC1YsED//Oc/M+336aef1rp16zRp0iRVqlRJKSkp+vXXX1WsWDHNnz9fjz/+uHbv3q3Q0FAFBQVJkhITE/XRRx9p6tSpuu+++7RmzRo99dRTKlSokOrXr68jR46oTZs26tmzp5599llt3LhRAwYMyPbvJCQkRDNnzlRkZKS2bdumZ555RiEhIRo8eLCzzr59+zRv3jwtXrxYFy9eVLdu3dSjRw/NmTNHkjRnzhwNHz5cb731lqpUqaLNmzfrmWeeUXBwsOLi4tL1OWzYMO3YsUNff/21ChYsqH379unq1avZjh2AiQwALuLi4oyWLVsahmEYDofDWLZsmWG3242BAwc6rxcpUsRITU11fmb27NlGmTJlDIfD4SxLTU01goKCjG+++cYwDMOIiIgwxowZ47x+48YN495773X2ZRiGUb9+faNPnz6GYRjG7t27DUnGsmXLMoxz1apVhiTj3LlzzrJr164ZefLkMdauXetSt1u3bkaHDh0MwzCMoUOHGuXKlXO5PmTIkHRt/ZkkY8GCBZleHzt2rFG1alXn+xEjRhi5cuUyfvnlF2fZ119/bfj5+RnHjx83DMMwSpUqZXz88ccu7YwaNcqoWbOmYRiGkZKSYkgyNm/ebBiGYbRo0cLo0qVLpjEAuPMYkQAysGTJEuXNm1c3btyQw+FQx44dFR8f77xeoUIFl3URW7Zs0b59+xQSEuLSzrVr17R//35duHBBx48fV40aNZzX/P39Va1atXTTG7ckJycrV65cql+/fpbj3rdvn65cuaKHH37Ypfz69euqUqWKJGnnzp0ucUhSzZo1s9zHLZ9++qkmTZqk/fv369KlS7p586ZCQ0Nd6hQvXlz33HOPSz8Oh0O7d+9WSEiI9u/fr27duumZZ55x1rl586bCwsIy7PP555/X448/rqSkJDVu3FitWrVSrVq1sh07APOQSAAZaNiwod555x0FBAQoMjJS/v6uX5Xg4GCX95cuXVLVqlWdQ/Z/VKhQIbdiuDVVkR2XLl2SJH355Zcuf4FLv6/7MMu6devUqVMnJSQkqEmTJgoLC9PcuXM1bty4bMc6ffr0dIlNrly5MvxMs2bNdOjQIX311VdatmyZGjVqpJ49e+qNN95w/2YA3BYSCSADwcHBKl26dJbrP/jgg/r0009VuHDhdP8qvyUiIkLr169XvXr1JP3+L+9NmzbpwQcfzLB+hQoV5HA49N133yk2Njbd9VsjImlpac6ycuXKyW636/Dhw5mOZMTExDgXjt7y448//v1N/sHatWtVokQJvfTSS86yQ4cOpat3+PBhHTt2TJGRkc5+/Pz8VKZMGRUpUkSRkZE6cOCAOnXqlOW+CxUqpLi4OMXFxalu3boaNGgQiQRgIXZtACbo1KmTChYsqJYtW+r7779XSkqKVq9erd69e+uXX36RJPXp00evvfaaFi5cqF27dqlHjx5/eQZEVFSU4uLi1LVrVy1cuNDZ5rx58yRJJUqUkM1m05IlS3T69GldunRJISEhGjhwoPr166dZs2Zp//79SkpK0uTJkzVr1ixJ0nPPPae9e/dq0KBB2r17tz7++GPNnDkzW/d733336fDhw5o7d67279+vSZMmacGCBenqBQYGKi4uTlu2bNH333+v3r17q23btipatKgkKSEhQYmJiZo0aZL27Nmjbdu2acaMGRo/fnyG/Q4fPlyLFi3Svn37tH37di1ZskQxMTHZih2AuUgkABPkyZNHa9asUfHixdWmTRvFxMSoW7duunbtmnOEYsCAAfrXv/6luLg41axZUyEhIWrduvVftvvOO+/oiSeeUI8ePVS2bFk988wzunz5siTpnnvuUUJCgl588UUVKVJEvXr1kiSNGjVKw4YNU2JiomJiYtS0aVN9+eWXio6OlvT7uoX58+dr4cKFqlSpkqZOnapXX301W/f72GOPqV+/furVq5cqV66stWvXatiwYenqlS5dWm3atNEjjzyixo0bq2LFii7bO7t376733ntPM2bMUIUKFVS/fn3NnDnTGeufBQQEaOjQoapYsaLq1aunXLlyae7cudmKHYC5bEZmK70AAAD+BiMSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbSQSAADAbf8PkAtlXISM2hwAAAAASUVORK5CYII=",1165      "text/plain": [1166       "<Figure size 640x480 with 2 Axes>"1167      ]1168     },1169     "metadata": {},1170     "output_type": "display_data"1171    }1172   ],1173   "source": [1174    "svm_yhat=svm_cv.predict(X_test)\n",1175    "plot_confusion_matrix(Y_test,svm_yhat)"1176   ]1177  },1178  {1179   "cell_type": "markdown",1180   "metadata": {},1181   "source": [1182    "## TASK  8\n"1183   ]1184  },1185  {1186   "cell_type": "markdown",1187   "metadata": {},1188   "source": [1189    "Create a decision tree classifier object then  create a  <code>GridSearchCV</code> object  <code>tree_cv</code> with cv = 10.  Fit the object to find the best parameters from the dictionary <code>parameters</code>.\n"1190   ]1191  },1192  {1193   "cell_type": "code",1194   "execution_count": 21,1195   "metadata": {},1196   "outputs": [],1197   "source": [1198    "parameters = {'criterion': ['gini', 'entropy'],\n",1199    "              'splitter': ['best', 'random'],\n",1200    "              'max_depth': [2*n for n in range(1,10)],\n",

Showing the first 1,200 of 1854 lines. Download the file for the rest.