a b/breast_cancer.ipynb
1
{
2
 "cells": [
3
  {
4
   "cell_type": "markdown",
5
   "id": "24fda7b6-4e16-44c9-abef-9c790cf286d0",
6
   "metadata": {},
7
   "source": [
8
    "Breast cancer"
9
   ]
10
  },
11
  {
12
   "cell_type": "code",
13
   "execution_count": 59,
14
   "id": "6853550c-51ef-4fe6-8e66-b51eb64eb4c4",
15
   "metadata": {},
16
   "outputs": [],
17
   "source": [
18
    "# Importing libraries\n",
19
    "\n",
20
    "import pandas as pd\n",
21
    "\n",
22
    "import numpy as np\n",
23
    "import seaborn as sns\n",
24
    "import matplotlib.pyplot as plt\n",
25
    "\n",
26
    "import warnings\n",
27
    "warnings.filterwarnings('ignore')\n",
28
    "\n",
29
    "sns.set()\n",
30
    "plt.style.use('ggplot')"
31
   ]
32
  },
33
  {
34
   "cell_type": "code",
35
   "execution_count": 60,
36
   "id": "fbe6e81a-874c-4df0-a5b4-5382d1c4b644",
37
   "metadata": {},
38
   "outputs": [
39
    {
40
     "data": {
41
      "text/html": [
42
       "<div>\n",
43
       "<style scoped>\n",
44
       "    .dataframe tbody tr th:only-of-type {\n",
45
       "        vertical-align: middle;\n",
46
       "    }\n",
47
       "\n",
48
       "    .dataframe tbody tr th {\n",
49
       "        vertical-align: top;\n",
50
       "    }\n",
51
       "\n",
52
       "    .dataframe thead th {\n",
53
       "        text-align: right;\n",
54
       "    }\n",
55
       "</style>\n",
56
       "<table border=\"1\" class=\"dataframe\">\n",
57
       "  <thead>\n",
58
       "    <tr style=\"text-align: right;\">\n",
59
       "      <th></th>\n",
60
       "      <th>id</th>\n",
61
       "      <th>diagnosis</th>\n",
62
       "      <th>radius_mean</th>\n",
63
       "      <th>texture_mean</th>\n",
64
       "      <th>perimeter_mean</th>\n",
65
       "      <th>area_mean</th>\n",
66
       "      <th>smoothness_mean</th>\n",
67
       "      <th>compactness_mean</th>\n",
68
       "      <th>concavity_mean</th>\n",
69
       "      <th>concave points_mean</th>\n",
70
       "      <th>...</th>\n",
71
       "      <th>texture_worst</th>\n",
72
       "      <th>perimeter_worst</th>\n",
73
       "      <th>area_worst</th>\n",
74
       "      <th>smoothness_worst</th>\n",
75
       "      <th>compactness_worst</th>\n",
76
       "      <th>concavity_worst</th>\n",
77
       "      <th>concave points_worst</th>\n",
78
       "      <th>symmetry_worst</th>\n",
79
       "      <th>fractal_dimension_worst</th>\n",
80
       "      <th>Unnamed: 32</th>\n",
81
       "    </tr>\n",
82
       "  </thead>\n",
83
       "  <tbody>\n",
84
       "    <tr>\n",
85
       "      <th>0</th>\n",
86
       "      <td>842302</td>\n",
87
       "      <td>M</td>\n",
88
       "      <td>17.99</td>\n",
89
       "      <td>10.38</td>\n",
90
       "      <td>122.80</td>\n",
91
       "      <td>1001.0</td>\n",
92
       "      <td>0.11840</td>\n",
93
       "      <td>0.27760</td>\n",
94
       "      <td>0.3001</td>\n",
95
       "      <td>0.14710</td>\n",
96
       "      <td>...</td>\n",
97
       "      <td>17.33</td>\n",
98
       "      <td>184.60</td>\n",
99
       "      <td>2019.0</td>\n",
100
       "      <td>0.1622</td>\n",
101
       "      <td>0.6656</td>\n",
102
       "      <td>0.7119</td>\n",
103
       "      <td>0.2654</td>\n",
104
       "      <td>0.4601</td>\n",
105
       "      <td>0.11890</td>\n",
106
       "      <td>NaN</td>\n",
107
       "    </tr>\n",
108
       "    <tr>\n",
109
       "      <th>1</th>\n",
110
       "      <td>842517</td>\n",
111
       "      <td>M</td>\n",
112
       "      <td>20.57</td>\n",
113
       "      <td>17.77</td>\n",
114
       "      <td>132.90</td>\n",
115
       "      <td>1326.0</td>\n",
116
       "      <td>0.08474</td>\n",
117
       "      <td>0.07864</td>\n",
118
       "      <td>0.0869</td>\n",
119
       "      <td>0.07017</td>\n",
120
       "      <td>...</td>\n",
121
       "      <td>23.41</td>\n",
122
       "      <td>158.80</td>\n",
123
       "      <td>1956.0</td>\n",
124
       "      <td>0.1238</td>\n",
125
       "      <td>0.1866</td>\n",
126
       "      <td>0.2416</td>\n",
127
       "      <td>0.1860</td>\n",
128
       "      <td>0.2750</td>\n",
129
       "      <td>0.08902</td>\n",
130
       "      <td>NaN</td>\n",
131
       "    </tr>\n",
132
       "    <tr>\n",
133
       "      <th>2</th>\n",
134
       "      <td>84300903</td>\n",
135
       "      <td>M</td>\n",
136
       "      <td>19.69</td>\n",
137
       "      <td>21.25</td>\n",
138
       "      <td>130.00</td>\n",
139
       "      <td>1203.0</td>\n",
140
       "      <td>0.10960</td>\n",
141
       "      <td>0.15990</td>\n",
142
       "      <td>0.1974</td>\n",
143
       "      <td>0.12790</td>\n",
144
       "      <td>...</td>\n",
145
       "      <td>25.53</td>\n",
146
       "      <td>152.50</td>\n",
147
       "      <td>1709.0</td>\n",
148
       "      <td>0.1444</td>\n",
149
       "      <td>0.4245</td>\n",
150
       "      <td>0.4504</td>\n",
151
       "      <td>0.2430</td>\n",
152
       "      <td>0.3613</td>\n",
153
       "      <td>0.08758</td>\n",
154
       "      <td>NaN</td>\n",
155
       "    </tr>\n",
156
       "    <tr>\n",
157
       "      <th>3</th>\n",
158
       "      <td>84348301</td>\n",
159
       "      <td>M</td>\n",
160
       "      <td>11.42</td>\n",
161
       "      <td>20.38</td>\n",
162
       "      <td>77.58</td>\n",
163
       "      <td>386.1</td>\n",
164
       "      <td>0.14250</td>\n",
165
       "      <td>0.28390</td>\n",
166
       "      <td>0.2414</td>\n",
167
       "      <td>0.10520</td>\n",
168
       "      <td>...</td>\n",
169
       "      <td>26.50</td>\n",
170
       "      <td>98.87</td>\n",
171
       "      <td>567.7</td>\n",
172
       "      <td>0.2098</td>\n",
173
       "      <td>0.8663</td>\n",
174
       "      <td>0.6869</td>\n",
175
       "      <td>0.2575</td>\n",
176
       "      <td>0.6638</td>\n",
177
       "      <td>0.17300</td>\n",
178
       "      <td>NaN</td>\n",
179
       "    </tr>\n",
180
       "    <tr>\n",
181
       "      <th>4</th>\n",
182
       "      <td>84358402</td>\n",
183
       "      <td>M</td>\n",
184
       "      <td>20.29</td>\n",
185
       "      <td>14.34</td>\n",
186
       "      <td>135.10</td>\n",
187
       "      <td>1297.0</td>\n",
188
       "      <td>0.10030</td>\n",
189
       "      <td>0.13280</td>\n",
190
       "      <td>0.1980</td>\n",
191
       "      <td>0.10430</td>\n",
192
       "      <td>...</td>\n",
193
       "      <td>16.67</td>\n",
194
       "      <td>152.20</td>\n",
195
       "      <td>1575.0</td>\n",
196
       "      <td>0.1374</td>\n",
197
       "      <td>0.2050</td>\n",
198
       "      <td>0.4000</td>\n",
199
       "      <td>0.1625</td>\n",
200
       "      <td>0.2364</td>\n",
201
       "      <td>0.07678</td>\n",
202
       "      <td>NaN</td>\n",
203
       "    </tr>\n",
204
       "  </tbody>\n",
205
       "</table>\n",
206
       "<p>5 rows × 33 columns</p>\n",
207
       "</div>"
208
      ],
209
      "text/plain": [
210
       "         id diagnosis  radius_mean  texture_mean  perimeter_mean  area_mean  \\\n",
211
       "0    842302         M        17.99         10.38          122.80     1001.0   \n",
212
       "1    842517         M        20.57         17.77          132.90     1326.0   \n",
213
       "2  84300903         M        19.69         21.25          130.00     1203.0   \n",
214
       "3  84348301         M        11.42         20.38           77.58      386.1   \n",
215
       "4  84358402         M        20.29         14.34          135.10     1297.0   \n",
216
       "\n",
217
       "   smoothness_mean  compactness_mean  concavity_mean  concave points_mean  \\\n",
218
       "0          0.11840           0.27760          0.3001              0.14710   \n",
219
       "1          0.08474           0.07864          0.0869              0.07017   \n",
220
       "2          0.10960           0.15990          0.1974              0.12790   \n",
221
       "3          0.14250           0.28390          0.2414              0.10520   \n",
222
       "4          0.10030           0.13280          0.1980              0.10430   \n",
223
       "\n",
224
       "   ...  texture_worst  perimeter_worst  area_worst  smoothness_worst  \\\n",
225
       "0  ...          17.33           184.60      2019.0            0.1622   \n",
226
       "1  ...          23.41           158.80      1956.0            0.1238   \n",
227
       "2  ...          25.53           152.50      1709.0            0.1444   \n",
228
       "3  ...          26.50            98.87       567.7            0.2098   \n",
229
       "4  ...          16.67           152.20      1575.0            0.1374   \n",
230
       "\n",
231
       "   compactness_worst  concavity_worst  concave points_worst  symmetry_worst  \\\n",
232
       "0             0.6656           0.7119                0.2654          0.4601   \n",
233
       "1             0.1866           0.2416                0.1860          0.2750   \n",
234
       "2             0.4245           0.4504                0.2430          0.3613   \n",
235
       "3             0.8663           0.6869                0.2575          0.6638   \n",
236
       "4             0.2050           0.4000                0.1625          0.2364   \n",
237
       "\n",
238
       "   fractal_dimension_worst  Unnamed: 32  \n",
239
       "0                  0.11890          NaN  \n",
240
       "1                  0.08902          NaN  \n",
241
       "2                  0.08758          NaN  \n",
242
       "3                  0.17300          NaN  \n",
243
       "4                  0.07678          NaN  \n",
244
       "\n",
245
       "[5 rows x 33 columns]"
246
      ]
247
     },
248
     "execution_count": 60,
249
     "metadata": {},
250
     "output_type": "execute_result"
251
    }
252
   ],
253
   "source": [
254
    "#Diagnosis (malignant (cancerous) or benign (non-cancerous))\n",
255
    "df = pd.read_csv(r'C:\\Users\\Pranshu Saini\\Desktop\\disease-prediction-main\\docpat\\datasets\\breast_cancer.csv')\n",
256
    "df.head()"
257
   ]
258
  },
259
  {
260
   "cell_type": "code",
261
   "execution_count": 61,
262
   "id": "37a2d7c4-ce0a-4532-bb12-60c908f91992",
263
   "metadata": {},
264
   "outputs": [],
265
   "source": [
266
    "df.drop(['id', 'Unnamed: 32'], axis = 1, inplace = True)"
267
   ]
268
  },
269
  {
270
   "cell_type": "code",
271
   "execution_count": 62,
272
   "id": "85a23ebe-5735-4535-8ac4-aa1dcde8c0e5",
273
   "metadata": {},
274
   "outputs": [
275
    {
276
     "data": {
277
      "text/plain": [
278
       "array(['M', 'B'], dtype=object)"
279
      ]
280
     },
281
     "execution_count": 62,
282
     "metadata": {},
283
     "output_type": "execute_result"
284
    }
285
   ],
286
   "source": [
287
    "df.diagnosis.unique()"
288
   ]
289
  },
290
  {
291
   "cell_type": "code",
292
   "execution_count": 63,
293
   "id": "31f9fac3-323d-4556-94f5-b2a2f1390a3d",
294
   "metadata": {},
295
   "outputs": [],
296
   "source": [
297
    "df['diagnosis'] = df['diagnosis'].apply(lambda val: 1 if val == 'M' else 0)"
298
   ]
299
  },
300
  {
301
   "cell_type": "code",
302
   "execution_count": 64,
303
   "id": "551ba2a1-6f0d-4644-aca9-226671a1d2dc",
304
   "metadata": {},
305
   "outputs": [
306
    {
307
     "data": {
308
      "text/html": [
309
       "<div>\n",
310
       "<style scoped>\n",
311
       "    .dataframe tbody tr th:only-of-type {\n",
312
       "        vertical-align: middle;\n",
313
       "    }\n",
314
       "\n",
315
       "    .dataframe tbody tr th {\n",
316
       "        vertical-align: top;\n",
317
       "    }\n",
318
       "\n",
319
       "    .dataframe thead th {\n",
320
       "        text-align: right;\n",
321
       "    }\n",
322
       "</style>\n",
323
       "<table border=\"1\" class=\"dataframe\">\n",
324
       "  <thead>\n",
325
       "    <tr style=\"text-align: right;\">\n",
326
       "      <th></th>\n",
327
       "      <th>diagnosis</th>\n",
328
       "      <th>radius_mean</th>\n",
329
       "      <th>texture_mean</th>\n",
330
       "      <th>perimeter_mean</th>\n",
331
       "      <th>area_mean</th>\n",
332
       "      <th>smoothness_mean</th>\n",
333
       "      <th>compactness_mean</th>\n",
334
       "      <th>concavity_mean</th>\n",
335
       "      <th>concave points_mean</th>\n",
336
       "      <th>symmetry_mean</th>\n",
337
       "      <th>...</th>\n",
338
       "      <th>radius_worst</th>\n",
339
       "      <th>texture_worst</th>\n",
340
       "      <th>perimeter_worst</th>\n",
341
       "      <th>area_worst</th>\n",
342
       "      <th>smoothness_worst</th>\n",
343
       "      <th>compactness_worst</th>\n",
344
       "      <th>concavity_worst</th>\n",
345
       "      <th>concave points_worst</th>\n",
346
       "      <th>symmetry_worst</th>\n",
347
       "      <th>fractal_dimension_worst</th>\n",
348
       "    </tr>\n",
349
       "  </thead>\n",
350
       "  <tbody>\n",
351
       "    <tr>\n",
352
       "      <th>count</th>\n",
353
       "      <td>569.000000</td>\n",
354
       "      <td>569.000000</td>\n",
355
       "      <td>569.000000</td>\n",
356
       "      <td>569.000000</td>\n",
357
       "      <td>569.000000</td>\n",
358
       "      <td>569.000000</td>\n",
359
       "      <td>569.000000</td>\n",
360
       "      <td>569.000000</td>\n",
361
       "      <td>569.000000</td>\n",
362
       "      <td>569.000000</td>\n",
363
       "      <td>...</td>\n",
364
       "      <td>569.000000</td>\n",
365
       "      <td>569.000000</td>\n",
366
       "      <td>569.000000</td>\n",
367
       "      <td>569.000000</td>\n",
368
       "      <td>569.000000</td>\n",
369
       "      <td>569.000000</td>\n",
370
       "      <td>569.000000</td>\n",
371
       "      <td>569.000000</td>\n",
372
       "      <td>569.000000</td>\n",
373
       "      <td>569.000000</td>\n",
374
       "    </tr>\n",
375
       "    <tr>\n",
376
       "      <th>mean</th>\n",
377
       "      <td>0.372583</td>\n",
378
       "      <td>14.127292</td>\n",
379
       "      <td>19.289649</td>\n",
380
       "      <td>91.969033</td>\n",
381
       "      <td>654.889104</td>\n",
382
       "      <td>0.096360</td>\n",
383
       "      <td>0.104341</td>\n",
384
       "      <td>0.088799</td>\n",
385
       "      <td>0.048919</td>\n",
386
       "      <td>0.181162</td>\n",
387
       "      <td>...</td>\n",
388
       "      <td>16.269190</td>\n",
389
       "      <td>25.677223</td>\n",
390
       "      <td>107.261213</td>\n",
391
       "      <td>880.583128</td>\n",
392
       "      <td>0.132369</td>\n",
393
       "      <td>0.254265</td>\n",
394
       "      <td>0.272188</td>\n",
395
       "      <td>0.114606</td>\n",
396
       "      <td>0.290076</td>\n",
397
       "      <td>0.083946</td>\n",
398
       "    </tr>\n",
399
       "    <tr>\n",
400
       "      <th>std</th>\n",
401
       "      <td>0.483918</td>\n",
402
       "      <td>3.524049</td>\n",
403
       "      <td>4.301036</td>\n",
404
       "      <td>24.298981</td>\n",
405
       "      <td>351.914129</td>\n",
406
       "      <td>0.014064</td>\n",
407
       "      <td>0.052813</td>\n",
408
       "      <td>0.079720</td>\n",
409
       "      <td>0.038803</td>\n",
410
       "      <td>0.027414</td>\n",
411
       "      <td>...</td>\n",
412
       "      <td>4.833242</td>\n",
413
       "      <td>6.146258</td>\n",
414
       "      <td>33.602542</td>\n",
415
       "      <td>569.356993</td>\n",
416
       "      <td>0.022832</td>\n",
417
       "      <td>0.157336</td>\n",
418
       "      <td>0.208624</td>\n",
419
       "      <td>0.065732</td>\n",
420
       "      <td>0.061867</td>\n",
421
       "      <td>0.018061</td>\n",
422
       "    </tr>\n",
423
       "    <tr>\n",
424
       "      <th>min</th>\n",
425
       "      <td>0.000000</td>\n",
426
       "      <td>6.981000</td>\n",
427
       "      <td>9.710000</td>\n",
428
       "      <td>43.790000</td>\n",
429
       "      <td>143.500000</td>\n",
430
       "      <td>0.052630</td>\n",
431
       "      <td>0.019380</td>\n",
432
       "      <td>0.000000</td>\n",
433
       "      <td>0.000000</td>\n",
434
       "      <td>0.106000</td>\n",
435
       "      <td>...</td>\n",
436
       "      <td>7.930000</td>\n",
437
       "      <td>12.020000</td>\n",
438
       "      <td>50.410000</td>\n",
439
       "      <td>185.200000</td>\n",
440
       "      <td>0.071170</td>\n",
441
       "      <td>0.027290</td>\n",
442
       "      <td>0.000000</td>\n",
443
       "      <td>0.000000</td>\n",
444
       "      <td>0.156500</td>\n",
445
       "      <td>0.055040</td>\n",
446
       "    </tr>\n",
447
       "    <tr>\n",
448
       "      <th>25%</th>\n",
449
       "      <td>0.000000</td>\n",
450
       "      <td>11.700000</td>\n",
451
       "      <td>16.170000</td>\n",
452
       "      <td>75.170000</td>\n",
453
       "      <td>420.300000</td>\n",
454
       "      <td>0.086370</td>\n",
455
       "      <td>0.064920</td>\n",
456
       "      <td>0.029560</td>\n",
457
       "      <td>0.020310</td>\n",
458
       "      <td>0.161900</td>\n",
459
       "      <td>...</td>\n",
460
       "      <td>13.010000</td>\n",
461
       "      <td>21.080000</td>\n",
462
       "      <td>84.110000</td>\n",
463
       "      <td>515.300000</td>\n",
464
       "      <td>0.116600</td>\n",
465
       "      <td>0.147200</td>\n",
466
       "      <td>0.114500</td>\n",
467
       "      <td>0.064930</td>\n",
468
       "      <td>0.250400</td>\n",
469
       "      <td>0.071460</td>\n",
470
       "    </tr>\n",
471
       "    <tr>\n",
472
       "      <th>50%</th>\n",
473
       "      <td>0.000000</td>\n",
474
       "      <td>13.370000</td>\n",
475
       "      <td>18.840000</td>\n",
476
       "      <td>86.240000</td>\n",
477
       "      <td>551.100000</td>\n",
478
       "      <td>0.095870</td>\n",
479
       "      <td>0.092630</td>\n",
480
       "      <td>0.061540</td>\n",
481
       "      <td>0.033500</td>\n",
482
       "      <td>0.179200</td>\n",
483
       "      <td>...</td>\n",
484
       "      <td>14.970000</td>\n",
485
       "      <td>25.410000</td>\n",
486
       "      <td>97.660000</td>\n",
487
       "      <td>686.500000</td>\n",
488
       "      <td>0.131300</td>\n",
489
       "      <td>0.211900</td>\n",
490
       "      <td>0.226700</td>\n",
491
       "      <td>0.099930</td>\n",
492
       "      <td>0.282200</td>\n",
493
       "      <td>0.080040</td>\n",
494
       "    </tr>\n",
495
       "    <tr>\n",
496
       "      <th>75%</th>\n",
497
       "      <td>1.000000</td>\n",
498
       "      <td>15.780000</td>\n",
499
       "      <td>21.800000</td>\n",
500
       "      <td>104.100000</td>\n",
501
       "      <td>782.700000</td>\n",
502
       "      <td>0.105300</td>\n",
503
       "      <td>0.130400</td>\n",
504
       "      <td>0.130700</td>\n",
505
       "      <td>0.074000</td>\n",
506
       "      <td>0.195700</td>\n",
507
       "      <td>...</td>\n",
508
       "      <td>18.790000</td>\n",
509
       "      <td>29.720000</td>\n",
510
       "      <td>125.400000</td>\n",
511
       "      <td>1084.000000</td>\n",
512
       "      <td>0.146000</td>\n",
513
       "      <td>0.339100</td>\n",
514
       "      <td>0.382900</td>\n",
515
       "      <td>0.161400</td>\n",
516
       "      <td>0.317900</td>\n",
517
       "      <td>0.092080</td>\n",
518
       "    </tr>\n",
519
       "    <tr>\n",
520
       "      <th>max</th>\n",
521
       "      <td>1.000000</td>\n",
522
       "      <td>28.110000</td>\n",
523
       "      <td>39.280000</td>\n",
524
       "      <td>188.500000</td>\n",
525
       "      <td>2501.000000</td>\n",
526
       "      <td>0.163400</td>\n",
527
       "      <td>0.345400</td>\n",
528
       "      <td>0.426800</td>\n",
529
       "      <td>0.201200</td>\n",
530
       "      <td>0.304000</td>\n",
531
       "      <td>...</td>\n",
532
       "      <td>36.040000</td>\n",
533
       "      <td>49.540000</td>\n",
534
       "      <td>251.200000</td>\n",
535
       "      <td>4254.000000</td>\n",
536
       "      <td>0.222600</td>\n",
537
       "      <td>1.058000</td>\n",
538
       "      <td>1.252000</td>\n",
539
       "      <td>0.291000</td>\n",
540
       "      <td>0.663800</td>\n",
541
       "      <td>0.207500</td>\n",
542
       "    </tr>\n",
543
       "  </tbody>\n",
544
       "</table>\n",
545
       "<p>8 rows × 31 columns</p>\n",
546
       "</div>"
547
      ],
548
      "text/plain": [
549
       "        diagnosis  radius_mean  texture_mean  perimeter_mean    area_mean  \\\n",
550
       "count  569.000000   569.000000    569.000000      569.000000   569.000000   \n",
551
       "mean     0.372583    14.127292     19.289649       91.969033   654.889104   \n",
552
       "std      0.483918     3.524049      4.301036       24.298981   351.914129   \n",
553
       "min      0.000000     6.981000      9.710000       43.790000   143.500000   \n",
554
       "25%      0.000000    11.700000     16.170000       75.170000   420.300000   \n",
555
       "50%      0.000000    13.370000     18.840000       86.240000   551.100000   \n",
556
       "75%      1.000000    15.780000     21.800000      104.100000   782.700000   \n",
557
       "max      1.000000    28.110000     39.280000      188.500000  2501.000000   \n",
558
       "\n",
559
       "       smoothness_mean  compactness_mean  concavity_mean  concave points_mean  \\\n",
560
       "count       569.000000        569.000000      569.000000           569.000000   \n",
561
       "mean          0.096360          0.104341        0.088799             0.048919   \n",
562
       "std           0.014064          0.052813        0.079720             0.038803   \n",
563
       "min           0.052630          0.019380        0.000000             0.000000   \n",
564
       "25%           0.086370          0.064920        0.029560             0.020310   \n",
565
       "50%           0.095870          0.092630        0.061540             0.033500   \n",
566
       "75%           0.105300          0.130400        0.130700             0.074000   \n",
567
       "max           0.163400          0.345400        0.426800             0.201200   \n",
568
       "\n",
569
       "       symmetry_mean  ...  radius_worst  texture_worst  perimeter_worst  \\\n",
570
       "count     569.000000  ...    569.000000     569.000000       569.000000   \n",
571
       "mean        0.181162  ...     16.269190      25.677223       107.261213   \n",
572
       "std         0.027414  ...      4.833242       6.146258        33.602542   \n",
573
       "min         0.106000  ...      7.930000      12.020000        50.410000   \n",
574
       "25%         0.161900  ...     13.010000      21.080000        84.110000   \n",
575
       "50%         0.179200  ...     14.970000      25.410000        97.660000   \n",
576
       "75%         0.195700  ...     18.790000      29.720000       125.400000   \n",
577
       "max         0.304000  ...     36.040000      49.540000       251.200000   \n",
578
       "\n",
579
       "        area_worst  smoothness_worst  compactness_worst  concavity_worst  \\\n",
580
       "count   569.000000        569.000000         569.000000       569.000000   \n",
581
       "mean    880.583128          0.132369           0.254265         0.272188   \n",
582
       "std     569.356993          0.022832           0.157336         0.208624   \n",
583
       "min     185.200000          0.071170           0.027290         0.000000   \n",
584
       "25%     515.300000          0.116600           0.147200         0.114500   \n",
585
       "50%     686.500000          0.131300           0.211900         0.226700   \n",
586
       "75%    1084.000000          0.146000           0.339100         0.382900   \n",
587
       "max    4254.000000          0.222600           1.058000         1.252000   \n",
588
       "\n",
589
       "       concave points_worst  symmetry_worst  fractal_dimension_worst  \n",
590
       "count            569.000000      569.000000               569.000000  \n",
591
       "mean               0.114606        0.290076                 0.083946  \n",
592
       "std                0.065732        0.061867                 0.018061  \n",
593
       "min                0.000000        0.156500                 0.055040  \n",
594
       "25%                0.064930        0.250400                 0.071460  \n",
595
       "50%                0.099930        0.282200                 0.080040  \n",
596
       "75%                0.161400        0.317900                 0.092080  \n",
597
       "max                0.291000        0.663800                 0.207500  \n",
598
       "\n",
599
       "[8 rows x 31 columns]"
600
      ]
601
     },
602
     "execution_count": 64,
603
     "metadata": {},
604
     "output_type": "execute_result"
605
    }
606
   ],
607
   "source": [
608
    "df.describe()"
609
   ]
610
  },
611
  {
612
   "cell_type": "code",
613
   "execution_count": 65,
614
   "id": "97ded7b0-cb65-43db-a79e-80bb90e43d89",
615
   "metadata": {},
616
   "outputs": [
617
    {
618
     "data": {
619
      "text/plain": [
620
       "diagnosis                  0\n",
621
       "radius_mean                0\n",
622
       "texture_mean               0\n",
623
       "perimeter_mean             0\n",
624
       "area_mean                  0\n",
625
       "smoothness_mean            0\n",
626
       "compactness_mean           0\n",
627
       "concavity_mean             0\n",
628
       "concave points_mean        0\n",
629
       "symmetry_mean              0\n",
630
       "fractal_dimension_mean     0\n",
631
       "radius_se                  0\n",
632
       "texture_se                 0\n",
633
       "perimeter_se               0\n",
634
       "area_se                    0\n",
635
       "smoothness_se              0\n",
636
       "compactness_se             0\n",
637
       "concavity_se               0\n",
638
       "concave points_se          0\n",
639
       "symmetry_se                0\n",
640
       "fractal_dimension_se       0\n",
641
       "radius_worst               0\n",
642
       "texture_worst              0\n",
643
       "perimeter_worst            0\n",
644
       "area_worst                 0\n",
645
       "smoothness_worst           0\n",
646
       "compactness_worst          0\n",
647
       "concavity_worst            0\n",
648
       "concave points_worst       0\n",
649
       "symmetry_worst             0\n",
650
       "fractal_dimension_worst    0\n",
651
       "dtype: int64"
652
      ]
653
     },
654
     "execution_count": 65,
655
     "metadata": {},
656
     "output_type": "execute_result"
657
    }
658
   ],
659
   "source": [
660
    "# checking for null values\n",
661
    "\n",
662
    "df.isna().sum()"
663
   ]
664
  },
665
  {
666
   "cell_type": "code",
667
   "execution_count": 66,
668
   "id": "f73513a5-0374-4ed0-a1d4-43ac2c9c41b1",
669
   "metadata": {},
670
   "outputs": [
671
    {
672
     "name": "stdout",
673
     "output_type": "stream",
674
     "text": [
675
      "The reduced dataframe has 23 columns.\n",
676
      "     diagnosis  texture_mean  smoothness_mean  compactness_mean  \\\n",
677
      "0            1         10.38          0.11840           0.27760   \n",
678
      "1            1         17.77          0.08474           0.07864   \n",
679
      "2            1         21.25          0.10960           0.15990   \n",
680
      "3            1         20.38          0.14250           0.28390   \n",
681
      "4            1         14.34          0.10030           0.13280   \n",
682
      "..         ...           ...              ...               ...   \n",
683
      "564          1         22.39          0.11100           0.11590   \n",
684
      "565          1         28.25          0.09780           0.10340   \n",
685
      "566          1         28.08          0.08455           0.10230   \n",
686
      "567          1         29.33          0.11780           0.27700   \n",
687
      "568          0         24.54          0.05263           0.04362   \n",
688
      "\n",
689
      "     concave points_mean  symmetry_mean  fractal_dimension_mean  texture_se  \\\n",
690
      "0                0.14710         0.2419                 0.07871      0.9053   \n",
691
      "1                0.07017         0.1812                 0.05667      0.7339   \n",
692
      "2                0.12790         0.2069                 0.05999      0.7869   \n",
693
      "3                0.10520         0.2597                 0.09744      1.1560   \n",
694
      "4                0.10430         0.1809                 0.05883      0.7813   \n",
695
      "..                   ...            ...                     ...         ...   \n",
696
      "564              0.13890         0.1726                 0.05623      1.2560   \n",
697
      "565              0.09791         0.1752                 0.05533      2.4630   \n",
698
      "566              0.05302         0.1590                 0.05648      1.0750   \n",
699
      "567              0.15200         0.2397                 0.07016      1.5950   \n",
700
      "568              0.00000         0.1587                 0.05884      1.4280   \n",
701
      "\n",
702
      "     area_se  smoothness_se  ...  symmetry_se  fractal_dimension_se  \\\n",
703
      "0     153.40       0.006399  ...      0.03003              0.006193   \n",
704
      "1      74.08       0.005225  ...      0.01389              0.003532   \n",
705
      "2      94.03       0.006150  ...      0.02250              0.004571   \n",
706
      "3      27.23       0.009110  ...      0.05963              0.009208   \n",
707
      "4      94.44       0.011490  ...      0.01756              0.005115   \n",
708
      "..       ...            ...  ...          ...                   ...   \n",
709
      "564   158.70       0.010300  ...      0.01114              0.004239   \n",
710
      "565    99.04       0.005769  ...      0.01898              0.002498   \n",
711
      "566    48.55       0.005903  ...      0.01318              0.003892   \n",
712
      "567    86.22       0.006522  ...      0.02324              0.006185   \n",
713
      "568    19.15       0.007189  ...      0.02676              0.002783   \n",
714
      "\n",
715
      "     texture_worst  area_worst  smoothness_worst  compactness_worst  \\\n",
716
      "0            17.33      2019.0           0.16220            0.66560   \n",
717
      "1            23.41      1956.0           0.12380            0.18660   \n",
718
      "2            25.53      1709.0           0.14440            0.42450   \n",
719
      "3            26.50       567.7           0.20980            0.86630   \n",
720
      "4            16.67      1575.0           0.13740            0.20500   \n",
721
      "..             ...         ...               ...                ...   \n",
722
      "564          26.40      2027.0           0.14100            0.21130   \n",
723
      "565          38.25      1731.0           0.11660            0.19220   \n",
724
      "566          34.12      1124.0           0.11390            0.30940   \n",
725
      "567          39.42      1821.0           0.16500            0.86810   \n",
726
      "568          30.37       268.6           0.08996            0.06444   \n",
727
      "\n",
728
      "     concavity_worst  concave points_worst  symmetry_worst  \\\n",
729
      "0             0.7119                0.2654          0.4601   \n",
730
      "1             0.2416                0.1860          0.2750   \n",
731
      "2             0.4504                0.2430          0.3613   \n",
732
      "3             0.6869                0.2575          0.6638   \n",
733
      "4             0.4000                0.1625          0.2364   \n",
734
      "..               ...                   ...             ...   \n",
735
      "564           0.4107                0.2216          0.2060   \n",
736
      "565           0.3215                0.1628          0.2572   \n",
737
      "566           0.3403                0.1418          0.2218   \n",
738
      "567           0.9387                0.2650          0.4087   \n",
739
      "568           0.0000                0.0000          0.2871   \n",
740
      "\n",
741
      "     fractal_dimension_worst  \n",
742
      "0                    0.11890  \n",
743
      "1                    0.08902  \n",
744
      "2                    0.08758  \n",
745
      "3                    0.17300  \n",
746
      "4                    0.07678  \n",
747
      "..                       ...  \n",
748
      "564                  0.07115  \n",
749
      "565                  0.06637  \n",
750
      "566                  0.07820  \n",
751
      "567                  0.12400  \n",
752
      "568                  0.07039  \n",
753
      "\n",
754
      "[569 rows x 23 columns]\n"
755
     ]
756
    }
757
   ],
758
   "source": [
759
    "# removing highly correlated features\n",
760
    "\n",
761
    "corr_matrix = df.corr().abs() \n",
762
    "\n",
763
    "mask = np.triu(np.ones_like(corr_matrix, dtype = bool))\n",
764
    "tri_df = corr_matrix.mask(mask)\n",
765
    "\n",
766
    "to_drop = [x for x in tri_df.columns if any(tri_df[x] > 0.92)]\n",
767
    "\n",
768
    "df = df.drop(to_drop, axis = 1)\n",
769
    "\n",
770
    "print(f\"The reduced dataframe has {df.shape[1]} columns.\")\n",
771
    "print(df)\n"
772
   ]
773
  },
774
  {
775
   "cell_type": "code",
776
   "execution_count": 57,
777
   "id": "62fb56f2",
778
   "metadata": {},
779
   "outputs": [
780
    {
781
     "name": "stdout",
782
     "output_type": "stream",
783
     "text": [
784
      "[1.0, 10.38, 0.1184, 0.2776, 0.1471, 0.2419, 0.07871, 0.9053, 153.4, 0.006399, 0.04904, 0.05373, 0.01587, 0.03003, 0.006193, 17.33, 2019.0, 0.1622, 0.6656, 0.7119, 0.2654, 0.4601, 0.1189]\n",
785
      "23\n"
786
     ]
787
    }
788
   ],
789
   "source": [
790
    "# Filter rows where diagnosis == 1\n",
791
    "filtered_df = df[df['diagnosis'] == 1]\n",
792
    "\n",
793
    "# Select the first row and convert it to a list\n",
794
    "if not filtered_df.empty:  # Ensure there is at least one matching row\n",
795
    "    first_row_values = filtered_df.iloc[0].tolist()\n",
796
    "    print(first_row_values)\n",
797
    "else:\n",
798
    "    print(\"No rows with diagnosis == 1\")\n",
799
    "print(len(first_row_values))"
800
   ]
801
  },
802
  {
803
   "cell_type": "code",
804
   "execution_count": 67,
805
   "id": "05eb4899-946c-44c2-bc4f-e2046b236c50",
806
   "metadata": {},
807
   "outputs": [
808
    {
809
     "data": {
810
      "text/plain": [
811
       "['radius_mean',\n",
812
       " 'perimeter_mean',\n",
813
       " 'area_mean',\n",
814
       " 'concavity_mean',\n",
815
       " 'radius_se',\n",
816
       " 'perimeter_se',\n",
817
       " 'radius_worst',\n",
818
       " 'perimeter_worst']"
819
      ]
820
     },
821
     "execution_count": 67,
822
     "metadata": {},
823
     "output_type": "execute_result"
824
    }
825
   ],
826
   "source": [
827
    "to_drop"
828
   ]
829
  },
830
  {
831
   "cell_type": "code",
832
   "execution_count": 68,
833
   "id": "ccb85aaf-b9e3-47a1-9b79-83f9ac2a2ea6",
834
   "metadata": {},
835
   "outputs": [
836
    {
837
     "name": "stdout",
838
     "output_type": "stream",
839
     "text": [
840
      "<class 'pandas.core.frame.DataFrame'>\n",
841
      "RangeIndex: 569 entries, 0 to 568\n",
842
      "Data columns (total 23 columns):\n",
843
      " #   Column                   Non-Null Count  Dtype  \n",
844
      "---  ------                   --------------  -----  \n",
845
      " 0   diagnosis                569 non-null    int64  \n",
846
      " 1   texture_mean             569 non-null    float64\n",
847
      " 2   smoothness_mean          569 non-null    float64\n",
848
      " 3   compactness_mean         569 non-null    float64\n",
849
      " 4   concave points_mean      569 non-null    float64\n",
850
      " 5   symmetry_mean            569 non-null    float64\n",
851
      " 6   fractal_dimension_mean   569 non-null    float64\n",
852
      " 7   texture_se               569 non-null    float64\n",
853
      " 8   area_se                  569 non-null    float64\n",
854
      " 9   smoothness_se            569 non-null    float64\n",
855
      " 10  compactness_se           569 non-null    float64\n",
856
      " 11  concavity_se             569 non-null    float64\n",
857
      " 12  concave points_se        569 non-null    float64\n",
858
      " 13  symmetry_se              569 non-null    float64\n",
859
      " 14  fractal_dimension_se     569 non-null    float64\n",
860
      " 15  texture_worst            569 non-null    float64\n",
861
      " 16  area_worst               569 non-null    float64\n",
862
      " 17  smoothness_worst         569 non-null    float64\n",
863
      " 18  compactness_worst        569 non-null    float64\n",
864
      " 19  concavity_worst          569 non-null    float64\n",
865
      " 20  concave points_worst     569 non-null    float64\n",
866
      " 21  symmetry_worst           569 non-null    float64\n",
867
      " 22  fractal_dimension_worst  569 non-null    float64\n",
868
      "dtypes: float64(22), int64(1)\n",
869
      "memory usage: 102.4 KB\n"
870
     ]
871
    }
872
   ],
873
   "source": [
874
    "df.info()"
875
   ]
876
  },
877
  {
878
   "cell_type": "code",
879
   "execution_count": 13,
880
   "id": "00204005-3df0-420d-a39e-8335e2acc8d3",
881
   "metadata": {},
882
   "outputs": [
883
    {
884
     "data": {
885
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAG4CAYAAABrdsxmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8GUlEQVR4nO3de1yUdd7/8ffAzCCoxCCYIR4jFcQk9PZw22puZZgd1LbbDmql3WJqabXl7m0H01zbtFZNy9ZaOojbmqZ3aYorZbmtrHlnaQlpnvAcwXgCYhiY3x/+ZlYElYFh5hp7PR8PHg+5Dt/rc30ua95e13dmTC6XyyUAAAADCgl0AQAAAOdDUAEAAIZFUAEAAIZFUAEAAIZFUAEAAIZFUAEAAIZFUAEAAIZFUAEAAIZFUAEAAIZFUAFq8Morr6hjx45Vfjp16qSUlBQNGDBATz/9tHbv3l1tv4MHD6pjx44aN25cAKr2r4Y81/379+uaa67Rtm3bJEn/+te/PNfh/vvvv+C+69at82z7wQcf+KymxYsXq2PHjjp58qTPxnQ7+/zO/rn66qt1ww03aPr06SoqKvLJsX744QeNGzdOvXv3Vrdu3TR69Gh99913VbZxOBy64YYblJmZ6ZNjAvVhDnQBgJFdf/31SkxMlCRVVlbq9OnTysvL09KlS/Xhhx9q7ty5uu666zzbR0ZGasKECWrfvn2AKvafhjpXl8ulp556Stdff72uvvrqauu//PJLHT9+XFFRUTXun5WV5dN63MecNWuWz8c9V6dOnXTDDTdIOtOH0tJS7dy5U5mZmfrss8+0fPlyXXbZZXUef/fu3br77rtVWVmpW2+9VSaTSR9++KHuvvtuLV682NNvq9Wqxx57TE8//bSuv/56tWjRwifnB9SJC0A18+bNc3Xo0MG1fPnyGtdv2LDB1blzZ1dKSopr3759fq7u0vbBBx+4EhMTq/Q1JyfH1aFDB1efPn0ueF3Kyspc11xzjSslJeWC23lj1apVrq5du7o6dOjg6tChg+vEiRP1HvNc7vObPHlyjevfeOMNV4cOHVxz5syp13EeeOABV1JSkmvHjh2eZd9//72ra9eurqFDh1bZtrKy0nX77be7Hn744XodE6gvHv0AddCvXz9NnDhRJSUlevXVVwNdziXD5XJp0aJF6tu3r9q0aVNt/a9+9StZLBb9/e9/r3H/jRs3qri4WL/+9a/rXUtRUZHGjx+vxx57TNHR0TXW4y933HGHpDN3dupq3759+uKLL6rcJZSkDh066LbbbtO3336r3Nxcz3KTyaR7771X69at0549e+pePFBPBBWgjoYPH66wsDCtW7dOTqdT0vnnbezcuVNPPPGE+vXrp+TkZKWmpuquu+6q8THFTz/9pGeeeUa/+tWv1LVrV91zzz366quvdP/991d5Af7ggw/UsWNHbdq0SW+++aYGDBig5ORk3XDDDXrttddUUVFRZdzKykotWbJEgwcP1tVXX61u3brpgQce0BdffFGthu3btys9PV3XXnutunTpoptuukmzZ8/W6dOnPdvUdK5Op1Pz58/XrbfeqpSUFPXo0UOjR4/Wpk2batXTzz//XLt379Ztt91W4/omTZqoT58++uKLL1RSUlJtfVZWluLi4tSlS5dq62qaA3LuzyuvvOLZfteuXcrOztbQoUO1cuVKXX755bU6h4ZgNp95Sm+1Wj3L3P2/2I97no475PTs2bPa+O5lmzdvrrJ84MCBMpvNeuuttxritIBaYY4KUEfh4eFKSkrS1q1blZubW+OLoyRt27ZNI0aMkNVq1YABAxQdHa39+/crOztbjzzyiBYuXKj+/ftLkux2u+655x7t379f1157rTp27KicnBzdd999ioqKksViqTb+rFmztHfvXqWlpal///5avXq15syZo59//lmPPvqopDMh5dFHH9XatWvVqlUr3XHHHSopKVF2drZGjx6tp59+Wvfee68kae/evXrggQcUEhKitLQ0RUZGauvWrVq0aJG2b9+ut99++7w9mT59ut577z316NFDffv21alTp/Txxx9r9OjRysjIqPFF8myrVq1SSEiI/vM///O82wwYMEAbNmzQZ599poEDB3qWOxwOffrpp567D+eaMGHCBY8tST169PD8uXXr1vrf//1fdezY8aL7NbTly5dLkm666SbPMvccoYtx3z05cOCAJKlVq1bVtmnZsqWkM3ddztakSRN17dpVa9as0dSpUxUSwr9t4X8EFaAe3P/KLigoOO82c+fOldPp1AcffKArr7zSs/zjjz/Wo48+qlWrVnmCyvz587V//349+eSTGj16tKQzIeOxxx7TmjVrPC8oZ8vPz9fKlSs9jyZGjBihtLQ0LVu2zBNUPvzwQ61du1bXXnutXnnlFUVEREg68+J199136w9/+IP69u2rVq1aaenSpTp16pTefvtt9erVy3Oc9PR0bdiwQbt27dJVV11VrY7Tp09r6dKl+o//+A+9++67nuV33nmnfvOb3ygzM/OiQWXz5s2Kj48/70RZ6cwEZ7PZrPXr11cJKps2bdLJkyeVlpamr7/+utp+Dz/88AWPfa4rrrhCV1xxhVf71Fdubm6VuzplZWXauXOnPv/8cw0ePFj/9V//5VkXGRnp1TkdP37cs9+5mjZtKkk6depUtXXJycnasmWLcnNz1blz51ofD/AVggpQD+5b8Wc/EjnX/fffrzvuuKNKSJH+fbu9sLBQklRRUaGPPvpILVu2rPIW3JCQED355JNat25djeMPGDCgyvyJ+Ph4XXnllcrLy1NZWZnCwsK0YsUKSdLUqVM9IUU686/rhx56SNOmTdPKlSv18MMPq7KyUtKZxz9nB5WZM2dKkqKjo2uso7KyUi6XS0eOHFFBQYFiY2MlSV26dNH69esv+s6RoqIiHT161BPazicqKko9evTQhg0b5HA4PNdg7dq1uuKKK9S1a9cag0owyMvLU15eXrXlISEhCgsLk91uP2//L6a8vFxS1cdHbu5lDoej2rqEhARJ0nfffUdQQUAQVIB6KC4ulqQqL/7n+tWvfiXpzF2XvLw85efna+/evfq///s/SfLMJdm/f79OnDihXr16KTQ0tMoYcXFx532hb9u2bbVl7n8hOxwOhYWFKS8vT5dffnmNt/27desmSZ4XyCFDhuivf/2rZs+ercWLF6tv377q27ev+vTpc8HzjIyM1M0336zVq1erf//+uuaaa9S3b1/179/f82J3Ie7AZrPZLrrtgAED9M9//lObNm1Sv3795HQ69cknn2jw4MEymUw17nP2nYrz6dGjx0Xv+jSkIUOG6IUXXvD8XlZWpqNHj+r999/XokWLtGXLFq1YsUJhYWE6efLkBR/Dud1www1KTExUo0aNJP07sJzNHVDCw8OrrXNfD199jgvgLYIKUA+HDh2SVPNzf7fDhw/r+eef1yeffCKXy6WQkBC1bdtW3bp1044dOzzb2e12SVJMTEyN4zRv3lw//vhjteU1/QvZ/WLtcrkknbnjc6FxJennn3+WdOazPJYuXaqFCxfqs88+09KlS7V06VJFRERo5MiRmjRp0nnDwB//+EclJyfr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AgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADIugAgAADMtcn51XrFihb775RlOnTvUs27dvnzIyMrRnzx5FRkZq0KBBuvnmmz3rKysrtWzZMmVnZ6ukpERJSUkaPXq0mjdvXp9SAADAJajOd1SysrL03nvvVVl26tQpTZ8+XS1atNDMmTP1m9/8RpmZmfr000892yxfvlxZWVlKT0/X9OnTVVlZqRkzZsjpdNb9LAAAwCXJ66BSVFSkF154QYsXL1ZcXFyVdevXr5fZbNaYMWMUHx+v/v37a9CgQVq5cqUkyel0atWqVRo2bJhSU1PVtm1bTZo0SYWFhcrJyfHJCQEAgEuH10Flz549MpvNmj17thISEqqsy8vLU1JSkkJDQz3LkpOTdeTIER0/flz79u1TaWmpkpOTPesbN26sdu3aKTc3tx6nAQAALkVez1Hp3r27unfvXuO6wsJCtWrVqsqy6Ohoz7rCwkJJUkxMTJVtbDabZ11dmc31mm7T4OP5i8lkksViCXQZtebuc7D2O5jQa/+gz/4RrH02mUyBLqFOGqLPtR3Tp0cuKyur9iLp/r28vFxlZWU1Fme1WlVcXFyvY9tstnrtXxP7sUM+H7OhhYaGyhYbG+gyvNYQ1w81o9f+QZ/9I9j6bC88FugS6iSQffZpULFarSovL6+yzP17WFiYrFarpDNzVdx/liSHw6GwsLB6Hdtut/t0Qm6wpXS3iooKFRQUBLqMWjObzbLZbD6/fqiOXvsHffaPYO2zqaIi0CXUSUP02X0NL7qdLw8aExMju91eZVlRUZGkM4+AKv7/BSoqKlKLFi0829jtdrVp06Zex3Y6ndVCUn0FY1RxuVw+74M/NMT1Q83otX/QZ/8Itj5bXK5Al1AngeyzTz/wLTExUXl5eaqsrPQs+/bbbxUXF6fLLrtMbdq0UXh4uHbs2OFZX1xcrL179yoxMdGXpQAAgEuAT4NK//79VVJSotdee00HDx7Uhg0btHr1ag0ePFjSmfkq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",
886
      "text/plain": [
887
       "<Figure size 640x480 with 1 Axes>"
888
      ]
889
     },
890
     "metadata": {},
891
     "output_type": "display_data"
892
    }
893
   ],
894
   "source": [
895
    "df.describe()\n",
896
    "plt.hist(df['diagnosis'])\n",
897
    "plt.title('Diagnosis (M=1 , B=0)')\n",
898
    "plt.show()"
899
   ]
900
  },
901
  {
902
   "cell_type": "code",
903
   "execution_count": null,
904
   "id": "d387c1e9-bce6-4b0d-9a60-64abc4428ffc",
905
   "metadata": {},
906
   "outputs": [],
907
   "source": []
908
  },
909
  {
910
   "cell_type": "code",
911
   "execution_count": 14,
912
   "id": "91687a11-60d1-4f73-9643-7db868ba4d26",
913
   "metadata": {},
914
   "outputs": [
915
    {
916
     "name": "stdout",
917
     "output_type": "stream",
918
     "text": [
919
      "(569, 22)\n"
920
     ]
921
    }
922
   ],
923
   "source": [
924
    "# creating features and label \n",
925
    "\n",
926
    "X = df.drop('diagnosis', axis = 1)\n",
927
    "y = df['diagnosis']\n",
928
    "print(X.shape)"
929
   ]
930
  },
931
  {
932
   "cell_type": "code",
933
   "execution_count": 15,
934
   "id": "d7835666-a4a1-4813-a05a-2f78a7226fb9",
935
   "metadata": {},
936
   "outputs": [],
937
   "source": [
938
    "# splitting data into training and test set\n",
939
    "\n",
940
    "from sklearn.model_selection import train_test_split\n",
941
    "\n",
942
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.30, random_state = 0)"
943
   ]
944
  },
945
  {
946
   "cell_type": "code",
947
   "execution_count": 16,
948
   "id": "597ed2b7-1e2c-4c4a-9dc0-b6fd1584fd9d",
949
   "metadata": {},
950
   "outputs": [],
951
   "source": [
952
    "# scaling data\n",
953
    "\n",
954
    "from sklearn.preprocessing import StandardScaler\n",
955
    "\n",
956
    "scaler = StandardScaler()\n",
957
    "\n",
958
    "X_train = scaler.fit_transform(X_train)\n",
959
    "X_test = scaler.transform(X_test)"
960
   ]
961
  },
962
  {
963
   "cell_type": "code",
964
   "execution_count": 17,
965
   "id": "2a3673cf-d003-45be-9709-aa624c8ff82d",
966
   "metadata": {},
967
   "outputs": [],
968
   "source": [
969
    "#Logistic Regression"
970
   ]
971
  },
972
  {
973
   "cell_type": "code",
974
   "execution_count": 18,
975
   "id": "56268b65-d0c7-459a-b271-621c24323747",
976
   "metadata": {},
977
   "outputs": [
978
    {
979
     "data": {
980
      "text/html": [
981
       "<style>#sk-container-id-1 {\n",
982
       "  /* Definition of color scheme common for light and dark mode */\n",
983
       "  --sklearn-color-text: black;\n",
984
       "  --sklearn-color-line: gray;\n",
985
       "  /* Definition of color scheme for unfitted estimators */\n",
986
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
987
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
988
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
989
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
990
       "  /* Definition of color scheme for fitted estimators */\n",
991
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
992
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
993
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
994
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
995
       "\n",
996
       "  /* Specific color for light theme */\n",
997
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
998
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
999
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
1000
       "  --sklearn-color-icon: #696969;\n",
1001
       "\n",
1002
       "  @media (prefers-color-scheme: dark) {\n",
1003
       "    /* Redefinition of color scheme for dark theme */\n",
1004
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
1005
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
1006
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
1007
       "    --sklearn-color-icon: #878787;\n",
1008
       "  }\n",
1009
       "}\n",
1010
       "\n",
1011
       "#sk-container-id-1 {\n",
1012
       "  color: var(--sklearn-color-text);\n",
1013
       "}\n",
1014
       "\n",
1015
       "#sk-container-id-1 pre {\n",
1016
       "  padding: 0;\n",
1017
       "}\n",
1018
       "\n",
1019
       "#sk-container-id-1 input.sk-hidden--visually {\n",
1020
       "  border: 0;\n",
1021
       "  clip: rect(1px 1px 1px 1px);\n",
1022
       "  clip: rect(1px, 1px, 1px, 1px);\n",
1023
       "  height: 1px;\n",
1024
       "  margin: -1px;\n",
1025
       "  overflow: hidden;\n",
1026
       "  padding: 0;\n",
1027
       "  position: absolute;\n",
1028
       "  width: 1px;\n",
1029
       "}\n",
1030
       "\n",
1031
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
1032
       "  border: 1px dashed var(--sklearn-color-line);\n",
1033
       "  margin: 0 0.4em 0.5em 0.4em;\n",
1034
       "  box-sizing: border-box;\n",
1035
       "  padding-bottom: 0.4em;\n",
1036
       "  background-color: var(--sklearn-color-background);\n",
1037
       "}\n",
1038
       "\n",
1039
       "#sk-container-id-1 div.sk-container {\n",
1040
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
1041
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
1042
       "     so we also need the `!important` here to be able to override the\n",
1043
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
1044
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
1045
       "  display: inline-block !important;\n",
1046
       "  position: relative;\n",
1047
       "}\n",
1048
       "\n",
1049
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
1050
       "  display: none;\n",
1051
       "}\n",
1052
       "\n",
1053
       "div.sk-parallel-item,\n",
1054
       "div.sk-serial,\n",
1055
       "div.sk-item {\n",
1056
       "  /* draw centered vertical line to link estimators */\n",
1057
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
1058
       "  background-size: 2px 100%;\n",
1059
       "  background-repeat: no-repeat;\n",
1060
       "  background-position: center center;\n",
1061
       "}\n",
1062
       "\n",
1063
       "/* Parallel-specific style estimator block */\n",
1064
       "\n",
1065
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
1066
       "  content: \"\";\n",
1067
       "  width: 100%;\n",
1068
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
1069
       "  flex-grow: 1;\n",
1070
       "}\n",
1071
       "\n",
1072
       "#sk-container-id-1 div.sk-parallel {\n",
1073
       "  display: flex;\n",
1074
       "  align-items: stretch;\n",
1075
       "  justify-content: center;\n",
1076
       "  background-color: var(--sklearn-color-background);\n",
1077
       "  position: relative;\n",
1078
       "}\n",
1079
       "\n",
1080
       "#sk-container-id-1 div.sk-parallel-item {\n",
1081
       "  display: flex;\n",
1082
       "  flex-direction: column;\n",
1083
       "}\n",
1084
       "\n",
1085
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
1086
       "  align-self: flex-end;\n",
1087
       "  width: 50%;\n",
1088
       "}\n",
1089
       "\n",
1090
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
1091
       "  align-self: flex-start;\n",
1092
       "  width: 50%;\n",
1093
       "}\n",
1094
       "\n",
1095
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
1096
       "  width: 0;\n",
1097
       "}\n",
1098
       "\n",
1099
       "/* Serial-specific style estimator block */\n",
1100
       "\n",
1101
       "#sk-container-id-1 div.sk-serial {\n",
1102
       "  display: flex;\n",
1103
       "  flex-direction: column;\n",
1104
       "  align-items: center;\n",
1105
       "  background-color: var(--sklearn-color-background);\n",
1106
       "  padding-right: 1em;\n",
1107
       "  padding-left: 1em;\n",
1108
       "}\n",
1109
       "\n",
1110
       "\n",
1111
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
1112
       "clickable and can be expanded/collapsed.\n",
1113
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
1114
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
1115
       "*/\n",
1116
       "\n",
1117
       "/* Pipeline and ColumnTransformer style (default) */\n",
1118
       "\n",
1119
       "#sk-container-id-1 div.sk-toggleable {\n",
1120
       "  /* Default theme specific background. It is overwritten whether we have a\n",
1121
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
1122
       "  background-color: var(--sklearn-color-background);\n",
1123
       "}\n",
1124
       "\n",
1125
       "/* Toggleable label */\n",
1126
       "#sk-container-id-1 label.sk-toggleable__label {\n",
1127
       "  cursor: pointer;\n",
1128
       "  display: block;\n",
1129
       "  width: 100%;\n",
1130
       "  margin-bottom: 0;\n",
1131
       "  padding: 0.5em;\n",
1132
       "  box-sizing: border-box;\n",
1133
       "  text-align: center;\n",
1134
       "}\n",
1135
       "\n",
1136
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
1137
       "  /* Arrow on the left of the label */\n",
1138
       "  content: \"▸\";\n",
1139
       "  float: left;\n",
1140
       "  margin-right: 0.25em;\n",
1141
       "  color: var(--sklearn-color-icon);\n",
1142
       "}\n",
1143
       "\n",
1144
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
1145
       "  color: var(--sklearn-color-text);\n",
1146
       "}\n",
1147
       "\n",
1148
       "/* Toggleable content - dropdown */\n",
1149
       "\n",
1150
       "#sk-container-id-1 div.sk-toggleable__content {\n",
1151
       "  max-height: 0;\n",
1152
       "  max-width: 0;\n",
1153
       "  overflow: hidden;\n",
1154
       "  text-align: left;\n",
1155
       "  /* unfitted */\n",
1156
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
1157
       "}\n",
1158
       "\n",
1159
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
1160
       "  /* fitted */\n",
1161
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
1162
       "}\n",
1163
       "\n",
1164
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
1165
       "  margin: 0.2em;\n",
1166
       "  border-radius: 0.25em;\n",
1167
       "  color: var(--sklearn-color-text);\n",
1168
       "  /* unfitted */\n",
1169
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
1170
       "}\n",
1171
       "\n",
1172
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
1173
       "  /* unfitted */\n",
1174
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
1175
       "}\n",
1176
       "\n",
1177
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
1178
       "  /* Expand drop-down */\n",
1179
       "  max-height: 200px;\n",
1180
       "  max-width: 100%;\n",
1181
       "  overflow: auto;\n",
1182
       "}\n",
1183
       "\n",
1184
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
1185
       "  content: \"▾\";\n",
1186
       "}\n",
1187
       "\n",
1188
       "/* Pipeline/ColumnTransformer-specific style */\n",
1189
       "\n",
1190
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
1191
       "  color: var(--sklearn-color-text);\n",
1192
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
1193
       "}\n",
1194
       "\n",
1195
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
1196
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
1197
       "}\n",
1198
       "\n",
1199
       "/* Estimator-specific style */\n",
1200
       "\n",
1201
       "/* Colorize estimator box */\n",
1202
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
1203
       "  /* unfitted */\n",
1204
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
1205
       "}\n",
1206
       "\n",
1207
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
1208
       "  /* fitted */\n",
1209
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
1210
       "}\n",
1211
       "\n",
1212
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
1213
       "#sk-container-id-1 div.sk-label label {\n",
1214
       "  /* The background is the default theme color */\n",
1215
       "  color: var(--sklearn-color-text-on-default-background);\n",
1216
       "}\n",
1217
       "\n",
1218
       "/* On hover, darken the color of the background */\n",
1219
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
1220
       "  color: var(--sklearn-color-text);\n",
1221
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
1222
       "}\n",
1223
       "\n",
1224
       "/* Label box, darken color on hover, fitted */\n",
1225
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
1226
       "  color: var(--sklearn-color-text);\n",
1227
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
1228
       "}\n",
1229
       "\n",
1230
       "/* Estimator label */\n",
1231
       "\n",
1232
       "#sk-container-id-1 div.sk-label label {\n",
1233
       "  font-family: monospace;\n",
1234
       "  font-weight: bold;\n",
1235
       "  display: inline-block;\n",
1236
       "  line-height: 1.2em;\n",
1237
       "}\n",
1238
       "\n",
1239
       "#sk-container-id-1 div.sk-label-container {\n",
1240
       "  text-align: center;\n",
1241
       "}\n",
1242
       "\n",
1243
       "/* Estimator-specific */\n",
1244
       "#sk-container-id-1 div.sk-estimator {\n",
1245
       "  font-family: monospace;\n",
1246
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
1247
       "  border-radius: 0.25em;\n",
1248
       "  box-sizing: border-box;\n",
1249
       "  margin-bottom: 0.5em;\n",
1250
       "  /* unfitted */\n",
1251
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
1252
       "}\n",
1253
       "\n",
1254
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
1255
       "  /* fitted */\n",
1256
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
1257
       "}\n",
1258
       "\n",
1259
       "/* on hover */\n",
1260
       "#sk-container-id-1 div.sk-estimator:hover {\n",
1261
       "  /* unfitted */\n",
1262
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
1263
       "}\n",
1264
       "\n",
1265
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
1266
       "  /* fitted */\n",
1267
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
1268
       "}\n",
1269
       "\n",
1270
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
1271
       "\n",
1272
       "/* Common style for \"i\" and \"?\" */\n",
1273
       "\n",
1274
       ".sk-estimator-doc-link,\n",
1275
       "a:link.sk-estimator-doc-link,\n",
1276
       "a:visited.sk-estimator-doc-link {\n",
1277
       "  float: right;\n",
1278
       "  font-size: smaller;\n",
1279
       "  line-height: 1em;\n",
1280
       "  font-family: monospace;\n",
1281
       "  background-color: var(--sklearn-color-background);\n",
1282
       "  border-radius: 1em;\n",
1283
       "  height: 1em;\n",
1284
       "  width: 1em;\n",
1285
       "  text-decoration: none !important;\n",
1286
       "  margin-left: 1ex;\n",
1287
       "  /* unfitted */\n",
1288
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
1289
       "  color: var(--sklearn-color-unfitted-level-1);\n",
1290
       "}\n",
1291
       "\n",
1292
       ".sk-estimator-doc-link.fitted,\n",
1293
       "a:link.sk-estimator-doc-link.fitted,\n",
1294
       "a:visited.sk-estimator-doc-link.fitted {\n",
1295
       "  /* fitted */\n",
1296
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
1297
       "  color: var(--sklearn-color-fitted-level-1);\n",
1298
       "}\n",
1299
       "\n",
1300
       "/* On hover */\n",
1301
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
1302
       ".sk-estimator-doc-link:hover,\n",
1303
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
1304
       ".sk-estimator-doc-link:hover {\n",
1305
       "  /* unfitted */\n",
1306
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
1307
       "  color: var(--sklearn-color-background);\n",
1308
       "  text-decoration: none;\n",
1309
       "}\n",
1310
       "\n",
1311
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
1312
       ".sk-estimator-doc-link.fitted:hover,\n",
1313
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
1314
       ".sk-estimator-doc-link.fitted:hover {\n",
1315
       "  /* fitted */\n",
1316
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
1317
       "  color: var(--sklearn-color-background);\n",
1318
       "  text-decoration: none;\n",
1319
       "}\n",
1320
       "\n",
1321
       "/* Span, style for the box shown on hovering the info icon */\n",
1322
       ".sk-estimator-doc-link span {\n",
1323
       "  display: none;\n",
1324
       "  z-index: 9999;\n",
1325
       "  position: relative;\n",
1326
       "  font-weight: normal;\n",
1327
       "  right: .2ex;\n",
1328
       "  padding: .5ex;\n",
1329
       "  margin: .5ex;\n",
1330
       "  width: min-content;\n",
1331
       "  min-width: 20ex;\n",
1332
       "  max-width: 50ex;\n",
1333
       "  color: var(--sklearn-color-text);\n",
1334
       "  box-shadow: 2pt 2pt 4pt #999;\n",
1335
       "  /* unfitted */\n",
1336
       "  background: var(--sklearn-color-unfitted-level-0);\n",
1337
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
1338
       "}\n",
1339
       "\n",
1340
       ".sk-estimator-doc-link.fitted span {\n",
1341
       "  /* fitted */\n",
1342
       "  background: var(--sklearn-color-fitted-level-0);\n",
1343
       "  border: var(--sklearn-color-fitted-level-3);\n",
1344
       "}\n",
1345
       "\n",
1346
       ".sk-estimator-doc-link:hover span {\n",
1347
       "  display: block;\n",
1348
       "}\n",
1349
       "\n",
1350
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
1351
       "\n",
1352
       "#sk-container-id-1 a.estimator_doc_link {\n",
1353
       "  float: right;\n",
1354
       "  font-size: 1rem;\n",
1355
       "  line-height: 1em;\n",
1356
       "  font-family: monospace;\n",
1357
       "  background-color: var(--sklearn-color-background);\n",
1358
       "  border-radius: 1rem;\n",
1359
       "  height: 1rem;\n",
1360
       "  width: 1rem;\n",
1361
       "  text-decoration: none;\n",
1362
       "  /* unfitted */\n",
1363
       "  color: var(--sklearn-color-unfitted-level-1);\n",
1364
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
1365
       "}\n",
1366
       "\n",
1367
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
1368
       "  /* fitted */\n",
1369
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
1370
       "  color: var(--sklearn-color-fitted-level-1);\n",
1371
       "}\n",
1372
       "\n",
1373
       "/* On hover */\n",
1374
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
1375
       "  /* unfitted */\n",
1376
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
1377
       "  color: var(--sklearn-color-background);\n",
1378
       "  text-decoration: none;\n",
1379
       "}\n",
1380
       "\n",
1381
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
1382
       "  /* fitted */\n",
1383
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
1384
       "}\n",
1385
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression()</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\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression()</pre></div> </div></div></div></div>"
1386
      ],
1387
      "text/plain": [
1388
       "LogisticRegression()"
1389
      ]
1390
     },
1391
     "execution_count": 18,
1392
     "metadata": {},
1393
     "output_type": "execute_result"
1394
    }
1395
   ],
1396
   "source": [
1397
    "# fitting data to model\n",
1398
    "\n",
1399
    "from sklearn.linear_model import LogisticRegression\n",
1400
    "\n",
1401
    "log_reg = LogisticRegression()\n",
1402
    "log_reg.fit(X_train, y_train)"
1403
   ]
1404
  },
1405
  {
1406
   "cell_type": "code",
1407
   "execution_count": 19,
1408
   "id": "0c5dee15-65a4-42db-a13e-830bda27448a",
1409
   "metadata": {},
1410
   "outputs": [],
1411
   "source": [
1412
    "# model predictions\n",
1413
    "\n",
1414
    "y_pred = log_reg.predict(X_test)"
1415
   ]
1416
  },
1417
  {
1418
   "cell_type": "code",
1419
   "execution_count": 20,
1420
   "id": "9d60f6bb-7df3-45a3-b7b9-941a3a426bc1",
1421
   "metadata": {},
1422
   "outputs": [
1423
    {
1424
     "name": "stdout",
1425
     "output_type": "stream",
1426
     "text": [
1427
      "0.9899497487437185\n",
1428
      "0.9590643274853801\n",
1429
      "[[106   2]\n",
1430
      " [  5  58]]\n",
1431
      "              precision    recall  f1-score   support\n",
1432
      "\n",
1433
      "           0       0.95      0.98      0.97       108\n",
1434
      "           1       0.97      0.92      0.94        63\n",
1435
      "\n",
1436
      "    accuracy                           0.96       171\n",
1437
      "   macro avg       0.96      0.95      0.96       171\n",
1438
      "weighted avg       0.96      0.96      0.96       171\n",
1439
      "\n"
1440
     ]
1441
    }
1442
   ],
1443
   "source": [
1444
    "# accuracy score\n",
1445
    "\n",
1446
    "from sklearn.metrics import accuracy_score, confusion_matrix, classification_report\n",
1447
    "\n",
1448
    "print(accuracy_score(y_train, log_reg.predict(X_train)))\n",
1449
    "\n",
1450
    "log_reg_acc = accuracy_score(y_test, log_reg.predict(X_test))\n",
1451
    "print(log_reg_acc)\n",
1452
    "\n",
1453
    "# confusion matrix\n",
1454
    "\n",
1455
    "print(confusion_matrix(y_test, y_pred))\n",
1456
    "\n",
1457
    "# classification report\n",
1458
    "\n",
1459
    "print(classification_report(y_test, y_pred))"
1460
   ]
1461
  },
1462
  {
1463
   "cell_type": "code",
1464
   "execution_count": 21,
1465
   "id": "4562d0a2-f764-4616-bb97-51bfed00c49f",
1466
   "metadata": {},
1467
   "outputs": [],
1468
   "source": [
1469
    "#K Neighbors Classifier (KNN)"
1470
   ]
1471
  },
1472
  {
1473
   "cell_type": "code",
1474
   "execution_count": 22,
1475
   "id": "e5f1df4d-ca96-43a1-8075-f4154f7e8423",
1476
   "metadata": {},
1477
   "outputs": [
1478
    {
1479
     "data": {
1480
      "text/html": [
1481
       "<style>#sk-container-id-2 {\n",
1482
       "  /* Definition of color scheme common for light and dark mode */\n",
1483
       "  --sklearn-color-text: black;\n",
1484
       "  --sklearn-color-line: gray;\n",
1485
       "  /* Definition of color scheme for unfitted estimators */\n",
1486
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
1487
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
1488
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
1489
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
1490
       "  /* Definition of color scheme for fitted estimators */\n",
1491
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
1492
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
1493
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
1494
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
1495
       "\n",
1496
       "  /* Specific color for light theme */\n",
1497
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
1498
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
1499
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
1500
       "  --sklearn-color-icon: #696969;\n",
1501
       "\n",
1502
       "  @media (prefers-color-scheme: dark) {\n",
1503
       "    /* Redefinition of color scheme for dark theme */\n",
1504
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
1505
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
1506
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
1507
       "    --sklearn-color-icon: #878787;\n",
1508
       "  }\n",
1509
       "}\n",
1510
       "\n",
1511
       "#sk-container-id-2 {\n",
1512
       "  color: var(--sklearn-color-text);\n",
1513
       "}\n",
1514
       "\n",
1515
       "#sk-container-id-2 pre {\n",
1516
       "  padding: 0;\n",
1517
       "}\n",
1518
       "\n",
1519
       "#sk-container-id-2 input.sk-hidden--visually {\n",
1520
       "  border: 0;\n",
1521
       "  clip: rect(1px 1px 1px 1px);\n",
1522
       "  clip: rect(1px, 1px, 1px, 1px);\n",
1523
       "  height: 1px;\n",
1524
       "  margin: -1px;\n",
1525
       "  overflow: hidden;\n",
1526
       "  padding: 0;\n",
1527
       "  position: absolute;\n",
1528
       "  width: 1px;\n",
1529
       "}\n",
1530
       "\n",
1531
       "#sk-container-id-2 div.sk-dashed-wrapped {\n",
1532
       "  border: 1px dashed var(--sklearn-color-line);\n",
1533
       "  margin: 0 0.4em 0.5em 0.4em;\n",
1534
       "  box-sizing: border-box;\n",
1535
       "  padding-bottom: 0.4em;\n",
1536
       "  background-color: var(--sklearn-color-background);\n",
1537
       "}\n",
1538
       "\n",
1539
       "#sk-container-id-2 div.sk-container {\n",
1540
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
1541
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
1542
       "     so we also need the `!important` here to be able to override the\n",
1543
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
1544
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
1545
       "  display: inline-block !important;\n",
1546
       "  position: relative;\n",
1547
       "}\n",
1548
       "\n",
1549
       "#sk-container-id-2 div.sk-text-repr-fallback {\n",
1550
       "  display: none;\n",
1551
       "}\n",
1552
       "\n",
1553
       "div.sk-parallel-item,\n",
1554
       "div.sk-serial,\n",
1555
       "div.sk-item {\n",
1556
       "  /* draw centered vertical line to link estimators */\n",
1557
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
1558
       "  background-size: 2px 100%;\n",
1559
       "  background-repeat: no-repeat;\n",
1560
       "  background-position: center center;\n",
1561
       "}\n",
1562
       "\n",
1563
       "/* Parallel-specific style estimator block */\n",
1564
       "\n",
1565
       "#sk-container-id-2 div.sk-parallel-item::after {\n",
1566
       "  content: \"\";\n",
1567
       "  width: 100%;\n",
1568
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
1569
       "  flex-grow: 1;\n",
1570
       "}\n",
1571
       "\n",
1572
       "#sk-container-id-2 div.sk-parallel {\n",
1573
       "  display: flex;\n",
1574
       "  align-items: stretch;\n",
1575
       "  justify-content: center;\n",
1576
       "  background-color: var(--sklearn-color-background);\n",
1577
       "  position: relative;\n",
1578
       "}\n",
1579
       "\n",
1580
       "#sk-container-id-2 div.sk-parallel-item {\n",
1581
       "  display: flex;\n",
1582
       "  flex-direction: column;\n",
1583
       "}\n",
1584
       "\n",
1585
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
1586
       "  align-self: flex-end;\n",
1587
       "  width: 50%;\n",
1588
       "}\n",
1589
       "\n",
1590
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
1591
       "  align-self: flex-start;\n",
1592
       "  width: 50%;\n",
1593
       "}\n",
1594
       "\n",
1595
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
1596
       "  width: 0;\n",
1597
       "}\n",
1598
       "\n",
1599
       "/* Serial-specific style estimator block */\n",
1600
       "\n",
1601
       "#sk-container-id-2 div.sk-serial {\n",
1602
       "  display: flex;\n",
1603
       "  flex-direction: column;\n",
1604
       "  align-items: center;\n",
1605
       "  background-color: var(--sklearn-color-background);\n",
1606
       "  padding-right: 1em;\n",
1607
       "  padding-left: 1em;\n",
1608
       "}\n",
1609
       "\n",
1610
       "\n",
1611
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
1612
       "clickable and can be expanded/collapsed.\n",
1613
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
1614
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
1615
       "*/\n",
1616
       "\n",
1617
       "/* Pipeline and ColumnTransformer style (default) */\n",
1618
       "\n",
1619
       "#sk-container-id-2 div.sk-toggleable {\n",
1620
       "  /* Default theme specific background. It is overwritten whether we have a\n",
1621
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
1622
       "  background-color: var(--sklearn-color-background);\n",
1623
       "}\n",
1624
       "\n",
1625
       "/* Toggleable label */\n",
1626
       "#sk-container-id-2 label.sk-toggleable__label {\n",
1627
       "  cursor: pointer;\n",
1628
       "  display: block;\n",
1629
       "  width: 100%;\n",
1630
       "  margin-bottom: 0;\n",
1631
       "  padding: 0.5em;\n",
1632
       "  box-sizing: border-box;\n",
1633
       "  text-align: center;\n",
1634
       "}\n",
1635
       "\n",
1636
       "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
1637
       "  /* Arrow on the left of the label */\n",
1638
       "  content: \"▸\";\n",
1639
       "  float: left;\n",
1640
       "  margin-right: 0.25em;\n",
1641
       "  color: var(--sklearn-color-icon);\n",
1642
       "}\n",
1643
       "\n",
1644
       "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
1645
       "  color: var(--sklearn-color-text);\n",
1646
       "}\n",
1647
       "\n",
1648
       "/* Toggleable content - dropdown */\n",
1649
       "\n",
1650
       "#sk-container-id-2 div.sk-toggleable__content {\n",
1651
       "  max-height: 0;\n",
1652
       "  max-width: 0;\n",
1653
       "  overflow: hidden;\n",
1654
       "  text-align: left;\n",
1655
       "  /* unfitted */\n",
1656
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
1657
       "}\n",
1658
       "\n",
1659
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
1660
       "  /* fitted */\n",
1661
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
1662
       "}\n",
1663
       "\n",
1664
       "#sk-container-id-2 div.sk-toggleable__content pre {\n",
1665
       "  margin: 0.2em;\n",
1666
       "  border-radius: 0.25em;\n",
1667
       "  color: var(--sklearn-color-text);\n",
1668
       "  /* unfitted */\n",
1669
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
1670
       "}\n",
1671
       "\n",
1672
       "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
1673
       "  /* unfitted */\n",
1674
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
1675
       "}\n",
1676
       "\n",
1677
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
1678
       "  /* Expand drop-down */\n",
1679
       "  max-height: 200px;\n",
1680
       "  max-width: 100%;\n",
1681
       "  overflow: auto;\n",
1682
       "}\n",
1683
       "\n",
1684
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
1685
       "  content: \"▾\";\n",
1686
       "}\n",
1687
       "\n",
1688
       "/* Pipeline/ColumnTransformer-specific style */\n",
1689
       "\n",
1690
       "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
1691
       "  color: var(--sklearn-color-text);\n",
1692
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
1693
       "}\n",
1694
       "\n",
1695
       "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
1696
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
1697
       "}\n",
1698
       "\n",
1699
       "/* Estimator-specific style */\n",
1700
       "\n",
1701
       "/* Colorize estimator box */\n",
1702
       "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
1703
       "  /* unfitted */\n",
1704
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
1705
       "}\n",
1706
       "\n",
1707
       "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
1708
       "  /* fitted */\n",
1709
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
1710
       "}\n",
1711
       "\n",
1712
       "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
1713
       "#sk-container-id-2 div.sk-label label {\n",
1714
       "  /* The background is the default theme color */\n",
1715
       "  color: var(--sklearn-color-text-on-default-background);\n",
1716
       "}\n",
1717
       "\n",
1718
       "/* On hover, darken the color of the background */\n",
1719
       "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
1720
       "  color: var(--sklearn-color-text);\n",
1721
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
1722
       "}\n",
1723
       "\n",
1724
       "/* Label box, darken color on hover, fitted */\n",
1725
       "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
1726
       "  color: var(--sklearn-color-text);\n",
1727
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
1728
       "}\n",
1729
       "\n",
1730
       "/* Estimator label */\n",
1731
       "\n",
1732
       "#sk-container-id-2 div.sk-label label {\n",
1733
       "  font-family: monospace;\n",
1734
       "  font-weight: bold;\n",
1735
       "  display: inline-block;\n",
1736
       "  line-height: 1.2em;\n",
1737
       "}\n",
1738
       "\n",
1739
       "#sk-container-id-2 div.sk-label-container {\n",
1740
       "  text-align: center;\n",
1741
       "}\n",
1742
       "\n",
1743
       "/* Estimator-specific */\n",
1744
       "#sk-container-id-2 div.sk-estimator {\n",
1745
       "  font-family: monospace;\n",
1746
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
1747
       "  border-radius: 0.25em;\n",
1748
       "  box-sizing: border-box;\n",
1749
       "  margin-bottom: 0.5em;\n",
1750
       "  /* unfitted */\n",
1751
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
1752
       "}\n",
1753
       "\n",
1754
       "#sk-container-id-2 div.sk-estimator.fitted {\n",
1755
       "  /* fitted */\n",
1756
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
1757
       "}\n",
1758
       "\n",
1759
       "/* on hover */\n",
1760
       "#sk-container-id-2 div.sk-estimator:hover {\n",
1761
       "  /* unfitted */\n",
1762
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
1763
       "}\n",
1764
       "\n",
1765
       "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
1766
       "  /* fitted */\n",
1767
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
1768
       "}\n",
1769
       "\n",
1770
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
1771
       "\n",
1772
       "/* Common style for \"i\" and \"?\" */\n",
1773
       "\n",
1774
       ".sk-estimator-doc-link,\n",
1775
       "a:link.sk-estimator-doc-link,\n",
1776
       "a:visited.sk-estimator-doc-link {\n",
1777
       "  float: right;\n",
1778
       "  font-size: smaller;\n",
1779
       "  line-height: 1em;\n",
1780
       "  font-family: monospace;\n",
1781
       "  background-color: var(--sklearn-color-background);\n",
1782
       "  border-radius: 1em;\n",
1783
       "  height: 1em;\n",
1784
       "  width: 1em;\n",
1785
       "  text-decoration: none !important;\n",
1786
       "  margin-left: 1ex;\n",
1787
       "  /* unfitted */\n",
1788
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
1789
       "  color: var(--sklearn-color-unfitted-level-1);\n",
1790
       "}\n",
1791
       "\n",
1792
       ".sk-estimator-doc-link.fitted,\n",
1793
       "a:link.sk-estimator-doc-link.fitted,\n",
1794
       "a:visited.sk-estimator-doc-link.fitted {\n",
1795
       "  /* fitted */\n",
1796
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
1797
       "  color: var(--sklearn-color-fitted-level-1);\n",
1798
       "}\n",
1799
       "\n",
1800
       "/* On hover */\n",
1801
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
1802
       ".sk-estimator-doc-link:hover,\n",
1803
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
1804
       ".sk-estimator-doc-link:hover {\n",
1805
       "  /* unfitted */\n",
1806
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
1807
       "  color: var(--sklearn-color-background);\n",
1808
       "  text-decoration: none;\n",
1809
       "}\n",
1810
       "\n",
1811
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
1812
       ".sk-estimator-doc-link.fitted:hover,\n",
1813
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
1814
       ".sk-estimator-doc-link.fitted:hover {\n",
1815
       "  /* fitted */\n",
1816
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
1817
       "  color: var(--sklearn-color-background);\n",
1818
       "  text-decoration: none;\n",
1819
       "}\n",
1820
       "\n",
1821
       "/* Span, style for the box shown on hovering the info icon */\n",
1822
       ".sk-estimator-doc-link span {\n",
1823
       "  display: none;\n",
1824
       "  z-index: 9999;\n",
1825
       "  position: relative;\n",
1826
       "  font-weight: normal;\n",
1827
       "  right: .2ex;\n",
1828
       "  padding: .5ex;\n",
1829
       "  margin: .5ex;\n",
1830
       "  width: min-content;\n",
1831
       "  min-width: 20ex;\n",
1832
       "  max-width: 50ex;\n",
1833
       "  color: var(--sklearn-color-text);\n",
1834
       "  box-shadow: 2pt 2pt 4pt #999;\n",
1835
       "  /* unfitted */\n",
1836
       "  background: var(--sklearn-color-unfitted-level-0);\n",
1837
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
1838
       "}\n",
1839
       "\n",
1840
       ".sk-estimator-doc-link.fitted span {\n",
1841
       "  /* fitted */\n",
1842
       "  background: var(--sklearn-color-fitted-level-0);\n",
1843
       "  border: var(--sklearn-color-fitted-level-3);\n",
1844
       "}\n",
1845
       "\n",
1846
       ".sk-estimator-doc-link:hover span {\n",
1847
       "  display: block;\n",
1848
       "}\n",
1849
       "\n",
1850
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
1851
       "\n",
1852
       "#sk-container-id-2 a.estimator_doc_link {\n",
1853
       "  float: right;\n",
1854
       "  font-size: 1rem;\n",
1855
       "  line-height: 1em;\n",
1856
       "  font-family: monospace;\n",
1857
       "  background-color: var(--sklearn-color-background);\n",
1858
       "  border-radius: 1rem;\n",
1859
       "  height: 1rem;\n",
1860
       "  width: 1rem;\n",
1861
       "  text-decoration: none;\n",
1862
       "  /* unfitted */\n",
1863
       "  color: var(--sklearn-color-unfitted-level-1);\n",
1864
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
1865
       "}\n",
1866
       "\n",
1867
       "#sk-container-id-2 a.estimator_doc_link.fitted {\n",
1868
       "  /* fitted */\n",
1869
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
1870
       "  color: var(--sklearn-color-fitted-level-1);\n",
1871
       "}\n",
1872
       "\n",
1873
       "/* On hover */\n",
1874
       "#sk-container-id-2 a.estimator_doc_link:hover {\n",
1875
       "  /* unfitted */\n",
1876
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
1877
       "  color: var(--sklearn-color-background);\n",
1878
       "  text-decoration: none;\n",
1879
       "}\n",
1880
       "\n",
1881
       "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
1882
       "  /* fitted */\n",
1883
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
1884
       "}\n",
1885
       "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</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\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;KNeighborsClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.neighbors.KNeighborsClassifier.html\">?<span>Documentation for KNeighborsClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>KNeighborsClassifier()</pre></div> </div></div></div></div>"
1886
      ],
1887
      "text/plain": [
1888
       "KNeighborsClassifier()"
1889
      ]
1890
     },
1891
     "execution_count": 22,
1892
     "metadata": {},
1893
     "output_type": "execute_result"
1894
    }
1895
   ],
1896
   "source": [
1897
    "from sklearn.neighbors import KNeighborsClassifier\n",
1898
    "\n",
1899
    "knn = KNeighborsClassifier()\n",
1900
    "knn.fit(X_train, y_train)"
1901
   ]
1902
  },
1903
  {
1904
   "cell_type": "code",
1905
   "execution_count": 23,
1906
   "id": "6b97f6ac-8aaf-4d21-bb52-7daf80946b1b",
1907
   "metadata": {},
1908
   "outputs": [],
1909
   "source": [
1910
    "# model predictions \n",
1911
    "\n",
1912
    "y_pred = knn.predict(X_test)"
1913
   ]
1914
  },
1915
  {
1916
   "cell_type": "code",
1917
   "execution_count": 24,
1918
   "id": "b5c9a2e3-f6c1-4b0d-b3fb-3062a1f94601",
1919
   "metadata": {},
1920
   "outputs": [
1921
    {
1922
     "name": "stdout",
1923
     "output_type": "stream",
1924
     "text": [
1925
      "0.9623115577889447\n",
1926
      "0.935672514619883\n"
1927
     ]
1928
    }
1929
   ],
1930
   "source": [
1931
    "# accuracy score\n",
1932
    "\n",
1933
    "print(accuracy_score(y_train, knn.predict(X_train)))\n",
1934
    "\n",
1935
    "knn_acc = accuracy_score(y_test, knn.predict(X_test))\n",
1936
    "print(knn_acc)"
1937
   ]
1938
  },
1939
  {
1940
   "cell_type": "code",
1941
   "execution_count": 25,
1942
   "id": "e883bd32-64a0-4b11-acfb-caaf79e2e4d4",
1943
   "metadata": {},
1944
   "outputs": [
1945
    {
1946
     "name": "stdout",
1947
     "output_type": "stream",
1948
     "text": [
1949
      "[[105   3]\n",
1950
      " [  8  55]]\n"
1951
     ]
1952
    }
1953
   ],
1954
   "source": [
1955
    "# confusion matrix\n",
1956
    "\n",
1957
    "print(confusion_matrix(y_test, y_pred))"
1958
   ]
1959
  },
1960
  {
1961
   "cell_type": "code",
1962
   "execution_count": 26,
1963
   "id": "f7efba3c-78c6-416e-a0a6-37b3e1274792",
1964
   "metadata": {},
1965
   "outputs": [
1966
    {
1967
     "name": "stdout",
1968
     "output_type": "stream",
1969
     "text": [
1970
      "              precision    recall  f1-score   support\n",
1971
      "\n",
1972
      "           0       0.93      0.97      0.95       108\n",
1973
      "           1       0.95      0.87      0.91        63\n",
1974
      "\n",
1975
      "    accuracy                           0.94       171\n",
1976
      "   macro avg       0.94      0.92      0.93       171\n",
1977
      "weighted avg       0.94      0.94      0.94       171\n",
1978
      "\n"
1979
     ]
1980
    }
1981
   ],
1982
   "source": [
1983
    "# classification report\n",
1984
    "\n",
1985
    "print(classification_report(y_test, y_pred))"
1986
   ]
1987
  },
1988
  {
1989
   "cell_type": "code",
1990
   "execution_count": 27,
1991
   "id": "257247cb-3666-4f34-9fcb-4f577a0f76d0",
1992
   "metadata": {},
1993
   "outputs": [],
1994
   "source": [
1995
    "#Support Vector Machine (SVM)"
1996
   ]
1997
  },
1998
  {
1999
   "cell_type": "code",
2000
   "execution_count": 28,
2001
   "id": "9b313b13-c437-4a06-8dbd-687744187b8e",
2002
   "metadata": {},
2003
   "outputs": [
2004
    {
2005
     "data": {
2006
      "text/html": [
2007
       "<style>#sk-container-id-3 {\n",
2008
       "  /* Definition of color scheme common for light and dark mode */\n",
2009
       "  --sklearn-color-text: black;\n",
2010
       "  --sklearn-color-line: gray;\n",
2011
       "  /* Definition of color scheme for unfitted estimators */\n",
2012
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
2013
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
2014
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
2015
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
2016
       "  /* Definition of color scheme for fitted estimators */\n",
2017
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
2018
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
2019
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
2020
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
2021
       "\n",
2022
       "  /* Specific color for light theme */\n",
2023
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
2024
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
2025
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
2026
       "  --sklearn-color-icon: #696969;\n",
2027
       "\n",
2028
       "  @media (prefers-color-scheme: dark) {\n",
2029
       "    /* Redefinition of color scheme for dark theme */\n",
2030
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
2031
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
2032
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
2033
       "    --sklearn-color-icon: #878787;\n",
2034
       "  }\n",
2035
       "}\n",
2036
       "\n",
2037
       "#sk-container-id-3 {\n",
2038
       "  color: var(--sklearn-color-text);\n",
2039
       "}\n",
2040
       "\n",
2041
       "#sk-container-id-3 pre {\n",
2042
       "  padding: 0;\n",
2043
       "}\n",
2044
       "\n",
2045
       "#sk-container-id-3 input.sk-hidden--visually {\n",
2046
       "  border: 0;\n",
2047
       "  clip: rect(1px 1px 1px 1px);\n",
2048
       "  clip: rect(1px, 1px, 1px, 1px);\n",
2049
       "  height: 1px;\n",
2050
       "  margin: -1px;\n",
2051
       "  overflow: hidden;\n",
2052
       "  padding: 0;\n",
2053
       "  position: absolute;\n",
2054
       "  width: 1px;\n",
2055
       "}\n",
2056
       "\n",
2057
       "#sk-container-id-3 div.sk-dashed-wrapped {\n",
2058
       "  border: 1px dashed var(--sklearn-color-line);\n",
2059
       "  margin: 0 0.4em 0.5em 0.4em;\n",
2060
       "  box-sizing: border-box;\n",
2061
       "  padding-bottom: 0.4em;\n",
2062
       "  background-color: var(--sklearn-color-background);\n",
2063
       "}\n",
2064
       "\n",
2065
       "#sk-container-id-3 div.sk-container {\n",
2066
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
2067
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
2068
       "     so we also need the `!important` here to be able to override the\n",
2069
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
2070
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
2071
       "  display: inline-block !important;\n",
2072
       "  position: relative;\n",
2073
       "}\n",
2074
       "\n",
2075
       "#sk-container-id-3 div.sk-text-repr-fallback {\n",
2076
       "  display: none;\n",
2077
       "}\n",
2078
       "\n",
2079
       "div.sk-parallel-item,\n",
2080
       "div.sk-serial,\n",
2081
       "div.sk-item {\n",
2082
       "  /* draw centered vertical line to link estimators */\n",
2083
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
2084
       "  background-size: 2px 100%;\n",
2085
       "  background-repeat: no-repeat;\n",
2086
       "  background-position: center center;\n",
2087
       "}\n",
2088
       "\n",
2089
       "/* Parallel-specific style estimator block */\n",
2090
       "\n",
2091
       "#sk-container-id-3 div.sk-parallel-item::after {\n",
2092
       "  content: \"\";\n",
2093
       "  width: 100%;\n",
2094
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
2095
       "  flex-grow: 1;\n",
2096
       "}\n",
2097
       "\n",
2098
       "#sk-container-id-3 div.sk-parallel {\n",
2099
       "  display: flex;\n",
2100
       "  align-items: stretch;\n",
2101
       "  justify-content: center;\n",
2102
       "  background-color: var(--sklearn-color-background);\n",
2103
       "  position: relative;\n",
2104
       "}\n",
2105
       "\n",
2106
       "#sk-container-id-3 div.sk-parallel-item {\n",
2107
       "  display: flex;\n",
2108
       "  flex-direction: column;\n",
2109
       "}\n",
2110
       "\n",
2111
       "#sk-container-id-3 div.sk-parallel-item:first-child::after {\n",
2112
       "  align-self: flex-end;\n",
2113
       "  width: 50%;\n",
2114
       "}\n",
2115
       "\n",
2116
       "#sk-container-id-3 div.sk-parallel-item:last-child::after {\n",
2117
       "  align-self: flex-start;\n",
2118
       "  width: 50%;\n",
2119
       "}\n",
2120
       "\n",
2121
       "#sk-container-id-3 div.sk-parallel-item:only-child::after {\n",
2122
       "  width: 0;\n",
2123
       "}\n",
2124
       "\n",
2125
       "/* Serial-specific style estimator block */\n",
2126
       "\n",
2127
       "#sk-container-id-3 div.sk-serial {\n",
2128
       "  display: flex;\n",
2129
       "  flex-direction: column;\n",
2130
       "  align-items: center;\n",
2131
       "  background-color: var(--sklearn-color-background);\n",
2132
       "  padding-right: 1em;\n",
2133
       "  padding-left: 1em;\n",
2134
       "}\n",
2135
       "\n",
2136
       "\n",
2137
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
2138
       "clickable and can be expanded/collapsed.\n",
2139
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
2140
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
2141
       "*/\n",
2142
       "\n",
2143
       "/* Pipeline and ColumnTransformer style (default) */\n",
2144
       "\n",
2145
       "#sk-container-id-3 div.sk-toggleable {\n",
2146
       "  /* Default theme specific background. It is overwritten whether we have a\n",
2147
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
2148
       "  background-color: var(--sklearn-color-background);\n",
2149
       "}\n",
2150
       "\n",
2151
       "/* Toggleable label */\n",
2152
       "#sk-container-id-3 label.sk-toggleable__label {\n",
2153
       "  cursor: pointer;\n",
2154
       "  display: block;\n",
2155
       "  width: 100%;\n",
2156
       "  margin-bottom: 0;\n",
2157
       "  padding: 0.5em;\n",
2158
       "  box-sizing: border-box;\n",
2159
       "  text-align: center;\n",
2160
       "}\n",
2161
       "\n",
2162
       "#sk-container-id-3 label.sk-toggleable__label-arrow:before {\n",
2163
       "  /* Arrow on the left of the label */\n",
2164
       "  content: \"▸\";\n",
2165
       "  float: left;\n",
2166
       "  margin-right: 0.25em;\n",
2167
       "  color: var(--sklearn-color-icon);\n",
2168
       "}\n",
2169
       "\n",
2170
       "#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {\n",
2171
       "  color: var(--sklearn-color-text);\n",
2172
       "}\n",
2173
       "\n",
2174
       "/* Toggleable content - dropdown */\n",
2175
       "\n",
2176
       "#sk-container-id-3 div.sk-toggleable__content {\n",
2177
       "  max-height: 0;\n",
2178
       "  max-width: 0;\n",
2179
       "  overflow: hidden;\n",
2180
       "  text-align: left;\n",
2181
       "  /* unfitted */\n",
2182
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
2183
       "}\n",
2184
       "\n",
2185
       "#sk-container-id-3 div.sk-toggleable__content.fitted {\n",
2186
       "  /* fitted */\n",
2187
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
2188
       "}\n",
2189
       "\n",
2190
       "#sk-container-id-3 div.sk-toggleable__content pre {\n",
2191
       "  margin: 0.2em;\n",
2192
       "  border-radius: 0.25em;\n",
2193
       "  color: var(--sklearn-color-text);\n",
2194
       "  /* unfitted */\n",
2195
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
2196
       "}\n",
2197
       "\n",
2198
       "#sk-container-id-3 div.sk-toggleable__content.fitted pre {\n",
2199
       "  /* unfitted */\n",
2200
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
2201
       "}\n",
2202
       "\n",
2203
       "#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
2204
       "  /* Expand drop-down */\n",
2205
       "  max-height: 200px;\n",
2206
       "  max-width: 100%;\n",
2207
       "  overflow: auto;\n",
2208
       "}\n",
2209
       "\n",
2210
       "#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
2211
       "  content: \"▾\";\n",
2212
       "}\n",
2213
       "\n",
2214
       "/* Pipeline/ColumnTransformer-specific style */\n",
2215
       "\n",
2216
       "#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2217
       "  color: var(--sklearn-color-text);\n",
2218
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
2219
       "}\n",
2220
       "\n",
2221
       "#sk-container-id-3 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2222
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
2223
       "}\n",
2224
       "\n",
2225
       "/* Estimator-specific style */\n",
2226
       "\n",
2227
       "/* Colorize estimator box */\n",
2228
       "#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2229
       "  /* unfitted */\n",
2230
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
2231
       "}\n",
2232
       "\n",
2233
       "#sk-container-id-3 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2234
       "  /* fitted */\n",
2235
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
2236
       "}\n",
2237
       "\n",
2238
       "#sk-container-id-3 div.sk-label label.sk-toggleable__label,\n",
2239
       "#sk-container-id-3 div.sk-label label {\n",
2240
       "  /* The background is the default theme color */\n",
2241
       "  color: var(--sklearn-color-text-on-default-background);\n",
2242
       "}\n",
2243
       "\n",
2244
       "/* On hover, darken the color of the background */\n",
2245
       "#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {\n",
2246
       "  color: var(--sklearn-color-text);\n",
2247
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
2248
       "}\n",
2249
       "\n",
2250
       "/* Label box, darken color on hover, fitted */\n",
2251
       "#sk-container-id-3 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
2252
       "  color: var(--sklearn-color-text);\n",
2253
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
2254
       "}\n",
2255
       "\n",
2256
       "/* Estimator label */\n",
2257
       "\n",
2258
       "#sk-container-id-3 div.sk-label label {\n",
2259
       "  font-family: monospace;\n",
2260
       "  font-weight: bold;\n",
2261
       "  display: inline-block;\n",
2262
       "  line-height: 1.2em;\n",
2263
       "}\n",
2264
       "\n",
2265
       "#sk-container-id-3 div.sk-label-container {\n",
2266
       "  text-align: center;\n",
2267
       "}\n",
2268
       "\n",
2269
       "/* Estimator-specific */\n",
2270
       "#sk-container-id-3 div.sk-estimator {\n",
2271
       "  font-family: monospace;\n",
2272
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
2273
       "  border-radius: 0.25em;\n",
2274
       "  box-sizing: border-box;\n",
2275
       "  margin-bottom: 0.5em;\n",
2276
       "  /* unfitted */\n",
2277
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
2278
       "}\n",
2279
       "\n",
2280
       "#sk-container-id-3 div.sk-estimator.fitted {\n",
2281
       "  /* fitted */\n",
2282
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
2283
       "}\n",
2284
       "\n",
2285
       "/* on hover */\n",
2286
       "#sk-container-id-3 div.sk-estimator:hover {\n",
2287
       "  /* unfitted */\n",
2288
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
2289
       "}\n",
2290
       "\n",
2291
       "#sk-container-id-3 div.sk-estimator.fitted:hover {\n",
2292
       "  /* fitted */\n",
2293
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
2294
       "}\n",
2295
       "\n",
2296
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
2297
       "\n",
2298
       "/* Common style for \"i\" and \"?\" */\n",
2299
       "\n",
2300
       ".sk-estimator-doc-link,\n",
2301
       "a:link.sk-estimator-doc-link,\n",
2302
       "a:visited.sk-estimator-doc-link {\n",
2303
       "  float: right;\n",
2304
       "  font-size: smaller;\n",
2305
       "  line-height: 1em;\n",
2306
       "  font-family: monospace;\n",
2307
       "  background-color: var(--sklearn-color-background);\n",
2308
       "  border-radius: 1em;\n",
2309
       "  height: 1em;\n",
2310
       "  width: 1em;\n",
2311
       "  text-decoration: none !important;\n",
2312
       "  margin-left: 1ex;\n",
2313
       "  /* unfitted */\n",
2314
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
2315
       "  color: var(--sklearn-color-unfitted-level-1);\n",
2316
       "}\n",
2317
       "\n",
2318
       ".sk-estimator-doc-link.fitted,\n",
2319
       "a:link.sk-estimator-doc-link.fitted,\n",
2320
       "a:visited.sk-estimator-doc-link.fitted {\n",
2321
       "  /* fitted */\n",
2322
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
2323
       "  color: var(--sklearn-color-fitted-level-1);\n",
2324
       "}\n",
2325
       "\n",
2326
       "/* On hover */\n",
2327
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
2328
       ".sk-estimator-doc-link:hover,\n",
2329
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
2330
       ".sk-estimator-doc-link:hover {\n",
2331
       "  /* unfitted */\n",
2332
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
2333
       "  color: var(--sklearn-color-background);\n",
2334
       "  text-decoration: none;\n",
2335
       "}\n",
2336
       "\n",
2337
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
2338
       ".sk-estimator-doc-link.fitted:hover,\n",
2339
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
2340
       ".sk-estimator-doc-link.fitted:hover {\n",
2341
       "  /* fitted */\n",
2342
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
2343
       "  color: var(--sklearn-color-background);\n",
2344
       "  text-decoration: none;\n",
2345
       "}\n",
2346
       "\n",
2347
       "/* Span, style for the box shown on hovering the info icon */\n",
2348
       ".sk-estimator-doc-link span {\n",
2349
       "  display: none;\n",
2350
       "  z-index: 9999;\n",
2351
       "  position: relative;\n",
2352
       "  font-weight: normal;\n",
2353
       "  right: .2ex;\n",
2354
       "  padding: .5ex;\n",
2355
       "  margin: .5ex;\n",
2356
       "  width: min-content;\n",
2357
       "  min-width: 20ex;\n",
2358
       "  max-width: 50ex;\n",
2359
       "  color: var(--sklearn-color-text);\n",
2360
       "  box-shadow: 2pt 2pt 4pt #999;\n",
2361
       "  /* unfitted */\n",
2362
       "  background: var(--sklearn-color-unfitted-level-0);\n",
2363
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
2364
       "}\n",
2365
       "\n",
2366
       ".sk-estimator-doc-link.fitted span {\n",
2367
       "  /* fitted */\n",
2368
       "  background: var(--sklearn-color-fitted-level-0);\n",
2369
       "  border: var(--sklearn-color-fitted-level-3);\n",
2370
       "}\n",
2371
       "\n",
2372
       ".sk-estimator-doc-link:hover span {\n",
2373
       "  display: block;\n",
2374
       "}\n",
2375
       "\n",
2376
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
2377
       "\n",
2378
       "#sk-container-id-3 a.estimator_doc_link {\n",
2379
       "  float: right;\n",
2380
       "  font-size: 1rem;\n",
2381
       "  line-height: 1em;\n",
2382
       "  font-family: monospace;\n",
2383
       "  background-color: var(--sklearn-color-background);\n",
2384
       "  border-radius: 1rem;\n",
2385
       "  height: 1rem;\n",
2386
       "  width: 1rem;\n",
2387
       "  text-decoration: none;\n",
2388
       "  /* unfitted */\n",
2389
       "  color: var(--sklearn-color-unfitted-level-1);\n",
2390
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
2391
       "}\n",
2392
       "\n",
2393
       "#sk-container-id-3 a.estimator_doc_link.fitted {\n",
2394
       "  /* fitted */\n",
2395
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
2396
       "  color: var(--sklearn-color-fitted-level-1);\n",
2397
       "}\n",
2398
       "\n",
2399
       "/* On hover */\n",
2400
       "#sk-container-id-3 a.estimator_doc_link:hover {\n",
2401
       "  /* unfitted */\n",
2402
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
2403
       "  color: var(--sklearn-color-background);\n",
2404
       "  text-decoration: none;\n",
2405
       "}\n",
2406
       "\n",
2407
       "#sk-container-id-3 a.estimator_doc_link.fitted:hover {\n",
2408
       "  /* fitted */\n",
2409
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
2410
       "}\n",
2411
       "</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(estimator=SVC(probability=True),\n",
2412
       "             param_grid={&#x27;C&#x27;: [0.01, 0.05, 0.5, 0.1, 1, 10, 15, 20],\n",
2413
       "                         &#x27;gamma&#x27;: [0.0001, 0.001, 0.01, 0.1]})</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 fitted 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 fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;GridSearchCV<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.model_selection.GridSearchCV.html\">?<span>Documentation for GridSearchCV</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>GridSearchCV(estimator=SVC(probability=True),\n",
2414
       "             param_grid={&#x27;C&#x27;: [0.01, 0.05, 0.5, 0.1, 1, 10, 15, 20],\n",
2415
       "                         &#x27;gamma&#x27;: [0.0001, 0.001, 0.01, 0.1]})</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 fitted 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 fitted sk-toggleable__label-arrow fitted\">estimator: SVC</label><div class=\"sk-toggleable__content fitted\"><pre>SVC(probability=True)</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted 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 fitted sk-toggleable__label-arrow fitted\">&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(probability=True)</pre></div> </div></div></div></div></div></div></div></div></div>"
2416
      ],
2417
      "text/plain": [
2418
       "GridSearchCV(estimator=SVC(probability=True),\n",
2419
       "             param_grid={'C': [0.01, 0.05, 0.5, 0.1, 1, 10, 15, 20],\n",
2420
       "                         'gamma': [0.0001, 0.001, 0.01, 0.1]})"
2421
      ]
2422
     },
2423
     "execution_count": 28,
2424
     "metadata": {},
2425
     "output_type": "execute_result"
2426
    }
2427
   ],
2428
   "source": [
2429
    "from sklearn.svm import SVC\n",
2430
    "from sklearn.model_selection import GridSearchCV\n",
2431
    "\n",
2432
    "svc = SVC(probability=True)\n",
2433
    "parameters = {\n",
2434
    "    'gamma' : [0.0001, 0.001, 0.01, 0.1],\n",
2435
    "    'C' : [0.01, 0.05, 0.5, 0.1, 1, 10, 15, 20]\n",
2436
    "}\n",
2437
    "\n",
2438
    "grid_search = GridSearchCV(svc, parameters)\n",
2439
    "grid_search.fit(X_train, y_train)"
2440
   ]
2441
  },
2442
  {
2443
   "cell_type": "code",
2444
   "execution_count": 29,
2445
   "id": "8e4df41f-e105-4673-9fdf-f18db0ebbbe7",
2446
   "metadata": {},
2447
   "outputs": [
2448
    {
2449
     "data": {
2450
      "text/plain": [
2451
       "0.9774683544303798"
2452
      ]
2453
     },
2454
     "execution_count": 29,
2455
     "metadata": {},
2456
     "output_type": "execute_result"
2457
    }
2458
   ],
2459
   "source": [
2460
    "# best parameters\n",
2461
    "\n",
2462
    "grid_search.best_params_\n",
2463
    "\n",
2464
    "# best score \n",
2465
    "\n",
2466
    "grid_search.best_score_"
2467
   ]
2468
  },
2469
  {
2470
   "cell_type": "code",
2471
   "execution_count": 30,
2472
   "id": "6076c39d-66fa-47f2-bffb-6575d3375b4c",
2473
   "metadata": {},
2474
   "outputs": [
2475
    {
2476
     "data": {
2477
      "text/html": [
2478
       "<style>#sk-container-id-4 {\n",
2479
       "  /* Definition of color scheme common for light and dark mode */\n",
2480
       "  --sklearn-color-text: black;\n",
2481
       "  --sklearn-color-line: gray;\n",
2482
       "  /* Definition of color scheme for unfitted estimators */\n",
2483
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
2484
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
2485
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
2486
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
2487
       "  /* Definition of color scheme for fitted estimators */\n",
2488
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
2489
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
2490
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
2491
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
2492
       "\n",
2493
       "  /* Specific color for light theme */\n",
2494
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
2495
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
2496
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
2497
       "  --sklearn-color-icon: #696969;\n",
2498
       "\n",
2499
       "  @media (prefers-color-scheme: dark) {\n",
2500
       "    /* Redefinition of color scheme for dark theme */\n",
2501
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
2502
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
2503
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
2504
       "    --sklearn-color-icon: #878787;\n",
2505
       "  }\n",
2506
       "}\n",
2507
       "\n",
2508
       "#sk-container-id-4 {\n",
2509
       "  color: var(--sklearn-color-text);\n",
2510
       "}\n",
2511
       "\n",
2512
       "#sk-container-id-4 pre {\n",
2513
       "  padding: 0;\n",
2514
       "}\n",
2515
       "\n",
2516
       "#sk-container-id-4 input.sk-hidden--visually {\n",
2517
       "  border: 0;\n",
2518
       "  clip: rect(1px 1px 1px 1px);\n",
2519
       "  clip: rect(1px, 1px, 1px, 1px);\n",
2520
       "  height: 1px;\n",
2521
       "  margin: -1px;\n",
2522
       "  overflow: hidden;\n",
2523
       "  padding: 0;\n",
2524
       "  position: absolute;\n",
2525
       "  width: 1px;\n",
2526
       "}\n",
2527
       "\n",
2528
       "#sk-container-id-4 div.sk-dashed-wrapped {\n",
2529
       "  border: 1px dashed var(--sklearn-color-line);\n",
2530
       "  margin: 0 0.4em 0.5em 0.4em;\n",
2531
       "  box-sizing: border-box;\n",
2532
       "  padding-bottom: 0.4em;\n",
2533
       "  background-color: var(--sklearn-color-background);\n",
2534
       "}\n",
2535
       "\n",
2536
       "#sk-container-id-4 div.sk-container {\n",
2537
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
2538
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
2539
       "     so we also need the `!important` here to be able to override the\n",
2540
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
2541
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
2542
       "  display: inline-block !important;\n",
2543
       "  position: relative;\n",
2544
       "}\n",
2545
       "\n",
2546
       "#sk-container-id-4 div.sk-text-repr-fallback {\n",
2547
       "  display: none;\n",
2548
       "}\n",
2549
       "\n",
2550
       "div.sk-parallel-item,\n",
2551
       "div.sk-serial,\n",
2552
       "div.sk-item {\n",
2553
       "  /* draw centered vertical line to link estimators */\n",
2554
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
2555
       "  background-size: 2px 100%;\n",
2556
       "  background-repeat: no-repeat;\n",
2557
       "  background-position: center center;\n",
2558
       "}\n",
2559
       "\n",
2560
       "/* Parallel-specific style estimator block */\n",
2561
       "\n",
2562
       "#sk-container-id-4 div.sk-parallel-item::after {\n",
2563
       "  content: \"\";\n",
2564
       "  width: 100%;\n",
2565
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
2566
       "  flex-grow: 1;\n",
2567
       "}\n",
2568
       "\n",
2569
       "#sk-container-id-4 div.sk-parallel {\n",
2570
       "  display: flex;\n",
2571
       "  align-items: stretch;\n",
2572
       "  justify-content: center;\n",
2573
       "  background-color: var(--sklearn-color-background);\n",
2574
       "  position: relative;\n",
2575
       "}\n",
2576
       "\n",
2577
       "#sk-container-id-4 div.sk-parallel-item {\n",
2578
       "  display: flex;\n",
2579
       "  flex-direction: column;\n",
2580
       "}\n",
2581
       "\n",
2582
       "#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
2583
       "  align-self: flex-end;\n",
2584
       "  width: 50%;\n",
2585
       "}\n",
2586
       "\n",
2587
       "#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
2588
       "  align-self: flex-start;\n",
2589
       "  width: 50%;\n",
2590
       "}\n",
2591
       "\n",
2592
       "#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
2593
       "  width: 0;\n",
2594
       "}\n",
2595
       "\n",
2596
       "/* Serial-specific style estimator block */\n",
2597
       "\n",
2598
       "#sk-container-id-4 div.sk-serial {\n",
2599
       "  display: flex;\n",
2600
       "  flex-direction: column;\n",
2601
       "  align-items: center;\n",
2602
       "  background-color: var(--sklearn-color-background);\n",
2603
       "  padding-right: 1em;\n",
2604
       "  padding-left: 1em;\n",
2605
       "}\n",
2606
       "\n",
2607
       "\n",
2608
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
2609
       "clickable and can be expanded/collapsed.\n",
2610
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
2611
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
2612
       "*/\n",
2613
       "\n",
2614
       "/* Pipeline and ColumnTransformer style (default) */\n",
2615
       "\n",
2616
       "#sk-container-id-4 div.sk-toggleable {\n",
2617
       "  /* Default theme specific background. It is overwritten whether we have a\n",
2618
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
2619
       "  background-color: var(--sklearn-color-background);\n",
2620
       "}\n",
2621
       "\n",
2622
       "/* Toggleable label */\n",
2623
       "#sk-container-id-4 label.sk-toggleable__label {\n",
2624
       "  cursor: pointer;\n",
2625
       "  display: block;\n",
2626
       "  width: 100%;\n",
2627
       "  margin-bottom: 0;\n",
2628
       "  padding: 0.5em;\n",
2629
       "  box-sizing: border-box;\n",
2630
       "  text-align: center;\n",
2631
       "}\n",
2632
       "\n",
2633
       "#sk-container-id-4 label.sk-toggleable__label-arrow:before {\n",
2634
       "  /* Arrow on the left of the label */\n",
2635
       "  content: \"▸\";\n",
2636
       "  float: left;\n",
2637
       "  margin-right: 0.25em;\n",
2638
       "  color: var(--sklearn-color-icon);\n",
2639
       "}\n",
2640
       "\n",
2641
       "#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
2642
       "  color: var(--sklearn-color-text);\n",
2643
       "}\n",
2644
       "\n",
2645
       "/* Toggleable content - dropdown */\n",
2646
       "\n",
2647
       "#sk-container-id-4 div.sk-toggleable__content {\n",
2648
       "  max-height: 0;\n",
2649
       "  max-width: 0;\n",
2650
       "  overflow: hidden;\n",
2651
       "  text-align: left;\n",
2652
       "  /* unfitted */\n",
2653
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
2654
       "}\n",
2655
       "\n",
2656
       "#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
2657
       "  /* fitted */\n",
2658
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
2659
       "}\n",
2660
       "\n",
2661
       "#sk-container-id-4 div.sk-toggleable__content pre {\n",
2662
       "  margin: 0.2em;\n",
2663
       "  border-radius: 0.25em;\n",
2664
       "  color: var(--sklearn-color-text);\n",
2665
       "  /* unfitted */\n",
2666
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
2667
       "}\n",
2668
       "\n",
2669
       "#sk-container-id-4 div.sk-toggleable__content.fitted pre {\n",
2670
       "  /* unfitted */\n",
2671
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
2672
       "}\n",
2673
       "\n",
2674
       "#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
2675
       "  /* Expand drop-down */\n",
2676
       "  max-height: 200px;\n",
2677
       "  max-width: 100%;\n",
2678
       "  overflow: auto;\n",
2679
       "}\n",
2680
       "\n",
2681
       "#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
2682
       "  content: \"▾\";\n",
2683
       "}\n",
2684
       "\n",
2685
       "/* Pipeline/ColumnTransformer-specific style */\n",
2686
       "\n",
2687
       "#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2688
       "  color: var(--sklearn-color-text);\n",
2689
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
2690
       "}\n",
2691
       "\n",
2692
       "#sk-container-id-4 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2693
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
2694
       "}\n",
2695
       "\n",
2696
       "/* Estimator-specific style */\n",
2697
       "\n",
2698
       "/* Colorize estimator box */\n",
2699
       "#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2700
       "  /* unfitted */\n",
2701
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
2702
       "}\n",
2703
       "\n",
2704
       "#sk-container-id-4 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
2705
       "  /* fitted */\n",
2706
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
2707
       "}\n",
2708
       "\n",
2709
       "#sk-container-id-4 div.sk-label label.sk-toggleable__label,\n",
2710
       "#sk-container-id-4 div.sk-label label {\n",
2711
       "  /* The background is the default theme color */\n",
2712
       "  color: var(--sklearn-color-text-on-default-background);\n",
2713
       "}\n",
2714
       "\n",
2715
       "/* On hover, darken the color of the background */\n",
2716
       "#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {\n",
2717
       "  color: var(--sklearn-color-text);\n",
2718
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
2719
       "}\n",
2720
       "\n",
2721
       "/* Label box, darken color on hover, fitted */\n",
2722
       "#sk-container-id-4 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
2723
       "  color: var(--sklearn-color-text);\n",
2724
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
2725
       "}\n",
2726
       "\n",
2727
       "/* Estimator label */\n",
2728
       "\n",
2729
       "#sk-container-id-4 div.sk-label label {\n",
2730
       "  font-family: monospace;\n",
2731
       "  font-weight: bold;\n",
2732
       "  display: inline-block;\n",
2733
       "  line-height: 1.2em;\n",
2734
       "}\n",
2735
       "\n",
2736
       "#sk-container-id-4 div.sk-label-container {\n",
2737
       "  text-align: center;\n",
2738
       "}\n",
2739
       "\n",
2740
       "/* Estimator-specific */\n",
2741
       "#sk-container-id-4 div.sk-estimator {\n",
2742
       "  font-family: monospace;\n",
2743
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
2744
       "  border-radius: 0.25em;\n",
2745
       "  box-sizing: border-box;\n",
2746
       "  margin-bottom: 0.5em;\n",
2747
       "  /* unfitted */\n",
2748
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
2749
       "}\n",
2750
       "\n",
2751
       "#sk-container-id-4 div.sk-estimator.fitted {\n",
2752
       "  /* fitted */\n",
2753
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
2754
       "}\n",
2755
       "\n",
2756
       "/* on hover */\n",
2757
       "#sk-container-id-4 div.sk-estimator:hover {\n",
2758
       "  /* unfitted */\n",
2759
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
2760
       "}\n",
2761
       "\n",
2762
       "#sk-container-id-4 div.sk-estimator.fitted:hover {\n",
2763
       "  /* fitted */\n",
2764
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
2765
       "}\n",
2766
       "\n",
2767
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
2768
       "\n",
2769
       "/* Common style for \"i\" and \"?\" */\n",
2770
       "\n",
2771
       ".sk-estimator-doc-link,\n",
2772
       "a:link.sk-estimator-doc-link,\n",
2773
       "a:visited.sk-estimator-doc-link {\n",
2774
       "  float: right;\n",
2775
       "  font-size: smaller;\n",
2776
       "  line-height: 1em;\n",
2777
       "  font-family: monospace;\n",
2778
       "  background-color: var(--sklearn-color-background);\n",
2779
       "  border-radius: 1em;\n",
2780
       "  height: 1em;\n",
2781
       "  width: 1em;\n",
2782
       "  text-decoration: none !important;\n",
2783
       "  margin-left: 1ex;\n",
2784
       "  /* unfitted */\n",
2785
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
2786
       "  color: var(--sklearn-color-unfitted-level-1);\n",
2787
       "}\n",
2788
       "\n",
2789
       ".sk-estimator-doc-link.fitted,\n",
2790
       "a:link.sk-estimator-doc-link.fitted,\n",
2791
       "a:visited.sk-estimator-doc-link.fitted {\n",
2792
       "  /* fitted */\n",
2793
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
2794
       "  color: var(--sklearn-color-fitted-level-1);\n",
2795
       "}\n",
2796
       "\n",
2797
       "/* On hover */\n",
2798
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
2799
       ".sk-estimator-doc-link:hover,\n",
2800
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
2801
       ".sk-estimator-doc-link:hover {\n",
2802
       "  /* unfitted */\n",
2803
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
2804
       "  color: var(--sklearn-color-background);\n",
2805
       "  text-decoration: none;\n",
2806
       "}\n",
2807
       "\n",
2808
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
2809
       ".sk-estimator-doc-link.fitted:hover,\n",
2810
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
2811
       ".sk-estimator-doc-link.fitted:hover {\n",
2812
       "  /* fitted */\n",
2813
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
2814
       "  color: var(--sklearn-color-background);\n",
2815
       "  text-decoration: none;\n",
2816
       "}\n",
2817
       "\n",
2818
       "/* Span, style for the box shown on hovering the info icon */\n",
2819
       ".sk-estimator-doc-link span {\n",
2820
       "  display: none;\n",
2821
       "  z-index: 9999;\n",
2822
       "  position: relative;\n",
2823
       "  font-weight: normal;\n",
2824
       "  right: .2ex;\n",
2825
       "  padding: .5ex;\n",
2826
       "  margin: .5ex;\n",
2827
       "  width: min-content;\n",
2828
       "  min-width: 20ex;\n",
2829
       "  max-width: 50ex;\n",
2830
       "  color: var(--sklearn-color-text);\n",
2831
       "  box-shadow: 2pt 2pt 4pt #999;\n",
2832
       "  /* unfitted */\n",
2833
       "  background: var(--sklearn-color-unfitted-level-0);\n",
2834
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
2835
       "}\n",
2836
       "\n",
2837
       ".sk-estimator-doc-link.fitted span {\n",
2838
       "  /* fitted */\n",
2839
       "  background: var(--sklearn-color-fitted-level-0);\n",
2840
       "  border: var(--sklearn-color-fitted-level-3);\n",
2841
       "}\n",
2842
       "\n",
2843
       ".sk-estimator-doc-link:hover span {\n",
2844
       "  display: block;\n",
2845
       "}\n",
2846
       "\n",
2847
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
2848
       "\n",
2849
       "#sk-container-id-4 a.estimator_doc_link {\n",
2850
       "  float: right;\n",
2851
       "  font-size: 1rem;\n",
2852
       "  line-height: 1em;\n",
2853
       "  font-family: monospace;\n",
2854
       "  background-color: var(--sklearn-color-background);\n",
2855
       "  border-radius: 1rem;\n",
2856
       "  height: 1rem;\n",
2857
       "  width: 1rem;\n",
2858
       "  text-decoration: none;\n",
2859
       "  /* unfitted */\n",
2860
       "  color: var(--sklearn-color-unfitted-level-1);\n",
2861
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
2862
       "}\n",
2863
       "\n",
2864
       "#sk-container-id-4 a.estimator_doc_link.fitted {\n",
2865
       "  /* fitted */\n",
2866
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
2867
       "  color: var(--sklearn-color-fitted-level-1);\n",
2868
       "}\n",
2869
       "\n",
2870
       "/* On hover */\n",
2871
       "#sk-container-id-4 a.estimator_doc_link:hover {\n",
2872
       "  /* unfitted */\n",
2873
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
2874
       "  color: var(--sklearn-color-background);\n",
2875
       "  text-decoration: none;\n",
2876
       "}\n",
2877
       "\n",
2878
       "#sk-container-id-4 a.estimator_doc_link.fitted:hover {\n",
2879
       "  /* fitted */\n",
2880
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
2881
       "}\n",
2882
       "</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>SVC(C=10, gamma=0.01, probability=True)</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\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-6\" type=\"checkbox\" checked><label for=\"sk-estimator-id-6\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;SVC<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.svm.SVC.html\">?<span>Documentation for SVC</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>SVC(C=10, gamma=0.01, probability=True)</pre></div> </div></div></div></div>"
2883
      ],
2884
      "text/plain": [
2885
       "SVC(C=10, gamma=0.01, probability=True)"
2886
      ]
2887
     },
2888
     "execution_count": 30,
2889
     "metadata": {},
2890
     "output_type": "execute_result"
2891
    }
2892
   ],
2893
   "source": [
2894
    "svc = SVC(C = 10, gamma = 0.01, probability=True)\n",
2895
    "svc.fit(X_train, y_train)"
2896
   ]
2897
  },
2898
  {
2899
   "cell_type": "code",
2900
   "execution_count": 31,
2901
   "id": "1f87cfee-c742-4c21-beaf-ab385161289a",
2902
   "metadata": {},
2903
   "outputs": [],
2904
   "source": [
2905
    "# model predictions \n",
2906
    "\n",
2907
    "y_pred = svc.predict(X_test)"
2908
   ]
2909
  },
2910
  {
2911
   "cell_type": "code",
2912
   "execution_count": 32,
2913
   "id": "0d2dbb00-9681-440b-9c0b-db06448077d4",
2914
   "metadata": {},
2915
   "outputs": [
2916
    {
2917
     "name": "stdout",
2918
     "output_type": "stream",
2919
     "text": [
2920
      "0.9874371859296482\n",
2921
      "0.9766081871345029\n",
2922
      "[[107   1]\n",
2923
      " [  3  60]]\n",
2924
      "              precision    recall  f1-score   support\n",
2925
      "\n",
2926
      "           0       0.97      0.99      0.98       108\n",
2927
      "           1       0.98      0.95      0.97        63\n",
2928
      "\n",
2929
      "    accuracy                           0.98       171\n",
2930
      "   macro avg       0.98      0.97      0.97       171\n",
2931
      "weighted avg       0.98      0.98      0.98       171\n",
2932
      "\n"
2933
     ]
2934
    }
2935
   ],
2936
   "source": [
2937
    "# accuracy score\n",
2938
    "\n",
2939
    "print(accuracy_score(y_train, svc.predict(X_train)))\n",
2940
    "\n",
2941
    "svc_acc = accuracy_score(y_test, svc.predict(X_test))\n",
2942
    "print(svc_acc)\n",
2943
    "\n",
2944
    "# confusion matrix\n",
2945
    "\n",
2946
    "print(confusion_matrix(y_test, y_pred))\n",
2947
    "\n",
2948
    "# classification report\n",
2949
    "\n",
2950
    "print(classification_report(y_test, y_pred))"
2951
   ]
2952
  },
2953
  {
2954
   "cell_type": "code",
2955
   "execution_count": 33,
2956
   "id": "81886176-aad3-4c2d-a285-4fd3f3d1ebca",
2957
   "metadata": {},
2958
   "outputs": [],
2959
   "source": [
2960
    "#Decision Tree Classifier"
2961
   ]
2962
  },
2963
  {
2964
   "cell_type": "code",
2965
   "execution_count": 34,
2966
   "id": "c1678772-3656-4443-9f16-fc749ecc3b54",
2967
   "metadata": {},
2968
   "outputs": [
2969
    {
2970
     "name": "stdout",
2971
     "output_type": "stream",
2972
     "text": [
2973
      "Fitting 5 folds for each of 8640 candidates, totalling 43200 fits\n"
2974
     ]
2975
    },
2976
    {
2977
     "data": {
2978
      "text/html": [
2979
       "<style>#sk-container-id-5 {\n",
2980
       "  /* Definition of color scheme common for light and dark mode */\n",
2981
       "  --sklearn-color-text: black;\n",
2982
       "  --sklearn-color-line: gray;\n",
2983
       "  /* Definition of color scheme for unfitted estimators */\n",
2984
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
2985
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
2986
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
2987
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
2988
       "  /* Definition of color scheme for fitted estimators */\n",
2989
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
2990
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
2991
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
2992
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
2993
       "\n",
2994
       "  /* Specific color for light theme */\n",
2995
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
2996
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
2997
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
2998
       "  --sklearn-color-icon: #696969;\n",
2999
       "\n",
3000
       "  @media (prefers-color-scheme: dark) {\n",
3001
       "    /* Redefinition of color scheme for dark theme */\n",
3002
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
3003
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
3004
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
3005
       "    --sklearn-color-icon: #878787;\n",
3006
       "  }\n",
3007
       "}\n",
3008
       "\n",
3009
       "#sk-container-id-5 {\n",
3010
       "  color: var(--sklearn-color-text);\n",
3011
       "}\n",
3012
       "\n",
3013
       "#sk-container-id-5 pre {\n",
3014
       "  padding: 0;\n",
3015
       "}\n",
3016
       "\n",
3017
       "#sk-container-id-5 input.sk-hidden--visually {\n",
3018
       "  border: 0;\n",
3019
       "  clip: rect(1px 1px 1px 1px);\n",
3020
       "  clip: rect(1px, 1px, 1px, 1px);\n",
3021
       "  height: 1px;\n",
3022
       "  margin: -1px;\n",
3023
       "  overflow: hidden;\n",
3024
       "  padding: 0;\n",
3025
       "  position: absolute;\n",
3026
       "  width: 1px;\n",
3027
       "}\n",
3028
       "\n",
3029
       "#sk-container-id-5 div.sk-dashed-wrapped {\n",
3030
       "  border: 1px dashed var(--sklearn-color-line);\n",
3031
       "  margin: 0 0.4em 0.5em 0.4em;\n",
3032
       "  box-sizing: border-box;\n",
3033
       "  padding-bottom: 0.4em;\n",
3034
       "  background-color: var(--sklearn-color-background);\n",
3035
       "}\n",
3036
       "\n",
3037
       "#sk-container-id-5 div.sk-container {\n",
3038
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
3039
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
3040
       "     so we also need the `!important` here to be able to override the\n",
3041
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
3042
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
3043
       "  display: inline-block !important;\n",
3044
       "  position: relative;\n",
3045
       "}\n",
3046
       "\n",
3047
       "#sk-container-id-5 div.sk-text-repr-fallback {\n",
3048
       "  display: none;\n",
3049
       "}\n",
3050
       "\n",
3051
       "div.sk-parallel-item,\n",
3052
       "div.sk-serial,\n",
3053
       "div.sk-item {\n",
3054
       "  /* draw centered vertical line to link estimators */\n",
3055
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
3056
       "  background-size: 2px 100%;\n",
3057
       "  background-repeat: no-repeat;\n",
3058
       "  background-position: center center;\n",
3059
       "}\n",
3060
       "\n",
3061
       "/* Parallel-specific style estimator block */\n",
3062
       "\n",
3063
       "#sk-container-id-5 div.sk-parallel-item::after {\n",
3064
       "  content: \"\";\n",
3065
       "  width: 100%;\n",
3066
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
3067
       "  flex-grow: 1;\n",
3068
       "}\n",
3069
       "\n",
3070
       "#sk-container-id-5 div.sk-parallel {\n",
3071
       "  display: flex;\n",
3072
       "  align-items: stretch;\n",
3073
       "  justify-content: center;\n",
3074
       "  background-color: var(--sklearn-color-background);\n",
3075
       "  position: relative;\n",
3076
       "}\n",
3077
       "\n",
3078
       "#sk-container-id-5 div.sk-parallel-item {\n",
3079
       "  display: flex;\n",
3080
       "  flex-direction: column;\n",
3081
       "}\n",
3082
       "\n",
3083
       "#sk-container-id-5 div.sk-parallel-item:first-child::after {\n",
3084
       "  align-self: flex-end;\n",
3085
       "  width: 50%;\n",
3086
       "}\n",
3087
       "\n",
3088
       "#sk-container-id-5 div.sk-parallel-item:last-child::after {\n",
3089
       "  align-self: flex-start;\n",
3090
       "  width: 50%;\n",
3091
       "}\n",
3092
       "\n",
3093
       "#sk-container-id-5 div.sk-parallel-item:only-child::after {\n",
3094
       "  width: 0;\n",
3095
       "}\n",
3096
       "\n",
3097
       "/* Serial-specific style estimator block */\n",
3098
       "\n",
3099
       "#sk-container-id-5 div.sk-serial {\n",
3100
       "  display: flex;\n",
3101
       "  flex-direction: column;\n",
3102
       "  align-items: center;\n",
3103
       "  background-color: var(--sklearn-color-background);\n",
3104
       "  padding-right: 1em;\n",
3105
       "  padding-left: 1em;\n",
3106
       "}\n",
3107
       "\n",
3108
       "\n",
3109
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
3110
       "clickable and can be expanded/collapsed.\n",
3111
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
3112
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
3113
       "*/\n",
3114
       "\n",
3115
       "/* Pipeline and ColumnTransformer style (default) */\n",
3116
       "\n",
3117
       "#sk-container-id-5 div.sk-toggleable {\n",
3118
       "  /* Default theme specific background. It is overwritten whether we have a\n",
3119
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
3120
       "  background-color: var(--sklearn-color-background);\n",
3121
       "}\n",
3122
       "\n",
3123
       "/* Toggleable label */\n",
3124
       "#sk-container-id-5 label.sk-toggleable__label {\n",
3125
       "  cursor: pointer;\n",
3126
       "  display: block;\n",
3127
       "  width: 100%;\n",
3128
       "  margin-bottom: 0;\n",
3129
       "  padding: 0.5em;\n",
3130
       "  box-sizing: border-box;\n",
3131
       "  text-align: center;\n",
3132
       "}\n",
3133
       "\n",
3134
       "#sk-container-id-5 label.sk-toggleable__label-arrow:before {\n",
3135
       "  /* Arrow on the left of the label */\n",
3136
       "  content: \"▸\";\n",
3137
       "  float: left;\n",
3138
       "  margin-right: 0.25em;\n",
3139
       "  color: var(--sklearn-color-icon);\n",
3140
       "}\n",
3141
       "\n",
3142
       "#sk-container-id-5 label.sk-toggleable__label-arrow:hover:before {\n",
3143
       "  color: var(--sklearn-color-text);\n",
3144
       "}\n",
3145
       "\n",
3146
       "/* Toggleable content - dropdown */\n",
3147
       "\n",
3148
       "#sk-container-id-5 div.sk-toggleable__content {\n",
3149
       "  max-height: 0;\n",
3150
       "  max-width: 0;\n",
3151
       "  overflow: hidden;\n",
3152
       "  text-align: left;\n",
3153
       "  /* unfitted */\n",
3154
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
3155
       "}\n",
3156
       "\n",
3157
       "#sk-container-id-5 div.sk-toggleable__content.fitted {\n",
3158
       "  /* fitted */\n",
3159
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
3160
       "}\n",
3161
       "\n",
3162
       "#sk-container-id-5 div.sk-toggleable__content pre {\n",
3163
       "  margin: 0.2em;\n",
3164
       "  border-radius: 0.25em;\n",
3165
       "  color: var(--sklearn-color-text);\n",
3166
       "  /* unfitted */\n",
3167
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
3168
       "}\n",
3169
       "\n",
3170
       "#sk-container-id-5 div.sk-toggleable__content.fitted pre {\n",
3171
       "  /* unfitted */\n",
3172
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
3173
       "}\n",
3174
       "\n",
3175
       "#sk-container-id-5 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
3176
       "  /* Expand drop-down */\n",
3177
       "  max-height: 200px;\n",
3178
       "  max-width: 100%;\n",
3179
       "  overflow: auto;\n",
3180
       "}\n",
3181
       "\n",
3182
       "#sk-container-id-5 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
3183
       "  content: \"▾\";\n",
3184
       "}\n",
3185
       "\n",
3186
       "/* Pipeline/ColumnTransformer-specific style */\n",
3187
       "\n",
3188
       "#sk-container-id-5 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
3189
       "  color: var(--sklearn-color-text);\n",
3190
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
3191
       "}\n",
3192
       "\n",
3193
       "#sk-container-id-5 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
3194
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
3195
       "}\n",
3196
       "\n",
3197
       "/* Estimator-specific style */\n",
3198
       "\n",
3199
       "/* Colorize estimator box */\n",
3200
       "#sk-container-id-5 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
3201
       "  /* unfitted */\n",
3202
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
3203
       "}\n",
3204
       "\n",
3205
       "#sk-container-id-5 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
3206
       "  /* fitted */\n",
3207
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
3208
       "}\n",
3209
       "\n",
3210
       "#sk-container-id-5 div.sk-label label.sk-toggleable__label,\n",
3211
       "#sk-container-id-5 div.sk-label label {\n",
3212
       "  /* The background is the default theme color */\n",
3213
       "  color: var(--sklearn-color-text-on-default-background);\n",
3214
       "}\n",
3215
       "\n",
3216
       "/* On hover, darken the color of the background */\n",
3217
       "#sk-container-id-5 div.sk-label:hover label.sk-toggleable__label {\n",
3218
       "  color: var(--sklearn-color-text);\n",
3219
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
3220
       "}\n",
3221
       "\n",
3222
       "/* Label box, darken color on hover, fitted */\n",
3223
       "#sk-container-id-5 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
3224
       "  color: var(--sklearn-color-text);\n",
3225
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
3226
       "}\n",
3227
       "\n",
3228
       "/* Estimator label */\n",
3229
       "\n",
3230
       "#sk-container-id-5 div.sk-label label {\n",
3231
       "  font-family: monospace;\n",
3232
       "  font-weight: bold;\n",
3233
       "  display: inline-block;\n",
3234
       "  line-height: 1.2em;\n",
3235
       "}\n",
3236
       "\n",
3237
       "#sk-container-id-5 div.sk-label-container {\n",
3238
       "  text-align: center;\n",
3239
       "}\n",
3240
       "\n",
3241
       "/* Estimator-specific */\n",
3242
       "#sk-container-id-5 div.sk-estimator {\n",
3243
       "  font-family: monospace;\n",
3244
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
3245
       "  border-radius: 0.25em;\n",
3246
       "  box-sizing: border-box;\n",
3247
       "  margin-bottom: 0.5em;\n",
3248
       "  /* unfitted */\n",
3249
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
3250
       "}\n",
3251
       "\n",
3252
       "#sk-container-id-5 div.sk-estimator.fitted {\n",
3253
       "  /* fitted */\n",
3254
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
3255
       "}\n",
3256
       "\n",
3257
       "/* on hover */\n",
3258
       "#sk-container-id-5 div.sk-estimator:hover {\n",
3259
       "  /* unfitted */\n",
3260
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
3261
       "}\n",
3262
       "\n",
3263
       "#sk-container-id-5 div.sk-estimator.fitted:hover {\n",
3264
       "  /* fitted */\n",
3265
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
3266
       "}\n",
3267
       "\n",
3268
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
3269
       "\n",
3270
       "/* Common style for \"i\" and \"?\" */\n",
3271
       "\n",
3272
       ".sk-estimator-doc-link,\n",
3273
       "a:link.sk-estimator-doc-link,\n",
3274
       "a:visited.sk-estimator-doc-link {\n",
3275
       "  float: right;\n",
3276
       "  font-size: smaller;\n",
3277
       "  line-height: 1em;\n",
3278
       "  font-family: monospace;\n",
3279
       "  background-color: var(--sklearn-color-background);\n",
3280
       "  border-radius: 1em;\n",
3281
       "  height: 1em;\n",
3282
       "  width: 1em;\n",
3283
       "  text-decoration: none !important;\n",
3284
       "  margin-left: 1ex;\n",
3285
       "  /* unfitted */\n",
3286
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
3287
       "  color: var(--sklearn-color-unfitted-level-1);\n",
3288
       "}\n",
3289
       "\n",
3290
       ".sk-estimator-doc-link.fitted,\n",
3291
       "a:link.sk-estimator-doc-link.fitted,\n",
3292
       "a:visited.sk-estimator-doc-link.fitted {\n",
3293
       "  /* fitted */\n",
3294
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
3295
       "  color: var(--sklearn-color-fitted-level-1);\n",
3296
       "}\n",
3297
       "\n",
3298
       "/* On hover */\n",
3299
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
3300
       ".sk-estimator-doc-link:hover,\n",
3301
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
3302
       ".sk-estimator-doc-link:hover {\n",
3303
       "  /* unfitted */\n",
3304
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
3305
       "  color: var(--sklearn-color-background);\n",
3306
       "  text-decoration: none;\n",
3307
       "}\n",
3308
       "\n",
3309
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
3310
       ".sk-estimator-doc-link.fitted:hover,\n",
3311
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
3312
       ".sk-estimator-doc-link.fitted:hover {\n",
3313
       "  /* fitted */\n",
3314
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
3315
       "  color: var(--sklearn-color-background);\n",
3316
       "  text-decoration: none;\n",
3317
       "}\n",
3318
       "\n",
3319
       "/* Span, style for the box shown on hovering the info icon */\n",
3320
       ".sk-estimator-doc-link span {\n",
3321
       "  display: none;\n",
3322
       "  z-index: 9999;\n",
3323
       "  position: relative;\n",
3324
       "  font-weight: normal;\n",
3325
       "  right: .2ex;\n",
3326
       "  padding: .5ex;\n",
3327
       "  margin: .5ex;\n",
3328
       "  width: min-content;\n",
3329
       "  min-width: 20ex;\n",
3330
       "  max-width: 50ex;\n",
3331
       "  color: var(--sklearn-color-text);\n",
3332
       "  box-shadow: 2pt 2pt 4pt #999;\n",
3333
       "  /* unfitted */\n",
3334
       "  background: var(--sklearn-color-unfitted-level-0);\n",
3335
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
3336
       "}\n",
3337
       "\n",
3338
       ".sk-estimator-doc-link.fitted span {\n",
3339
       "  /* fitted */\n",
3340
       "  background: var(--sklearn-color-fitted-level-0);\n",
3341
       "  border: var(--sklearn-color-fitted-level-3);\n",
3342
       "}\n",
3343
       "\n",
3344
       ".sk-estimator-doc-link:hover span {\n",
3345
       "  display: block;\n",
3346
       "}\n",
3347
       "\n",
3348
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
3349
       "\n",
3350
       "#sk-container-id-5 a.estimator_doc_link {\n",
3351
       "  float: right;\n",
3352
       "  font-size: 1rem;\n",
3353
       "  line-height: 1em;\n",
3354
       "  font-family: monospace;\n",
3355
       "  background-color: var(--sklearn-color-background);\n",
3356
       "  border-radius: 1rem;\n",
3357
       "  height: 1rem;\n",
3358
       "  width: 1rem;\n",
3359
       "  text-decoration: none;\n",
3360
       "  /* unfitted */\n",
3361
       "  color: var(--sklearn-color-unfitted-level-1);\n",
3362
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
3363
       "}\n",
3364
       "\n",
3365
       "#sk-container-id-5 a.estimator_doc_link.fitted {\n",
3366
       "  /* fitted */\n",
3367
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
3368
       "  color: var(--sklearn-color-fitted-level-1);\n",
3369
       "}\n",
3370
       "\n",
3371
       "/* On hover */\n",
3372
       "#sk-container-id-5 a.estimator_doc_link:hover {\n",
3373
       "  /* unfitted */\n",
3374
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
3375
       "  color: var(--sklearn-color-background);\n",
3376
       "  text-decoration: none;\n",
3377
       "}\n",
3378
       "\n",
3379
       "#sk-container-id-5 a.estimator_doc_link.fitted:hover {\n",
3380
       "  /* fitted */\n",
3381
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
3382
       "}\n",
3383
       "</style><div id=\"sk-container-id-5\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(cv=5, estimator=DecisionTreeClassifier(), n_jobs=-1,\n",
3384
       "             param_grid={&#x27;criterion&#x27;: [&#x27;gini&#x27;, &#x27;entropy&#x27;],\n",
3385
       "                         &#x27;max_depth&#x27;: range(2, 32),\n",
3386
       "                         &#x27;min_samples_leaf&#x27;: range(1, 10),\n",
3387
       "                         &#x27;min_samples_split&#x27;: range(2, 10),\n",
3388
       "                         &#x27;splitter&#x27;: [&#x27;best&#x27;, &#x27;random&#x27;]},\n",
3389
       "             verbose=1)</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 fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-7\" type=\"checkbox\" ><label for=\"sk-estimator-id-7\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;GridSearchCV<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.model_selection.GridSearchCV.html\">?<span>Documentation for GridSearchCV</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>GridSearchCV(cv=5, estimator=DecisionTreeClassifier(), n_jobs=-1,\n",
3390
       "             param_grid={&#x27;criterion&#x27;: [&#x27;gini&#x27;, &#x27;entropy&#x27;],\n",
3391
       "                         &#x27;max_depth&#x27;: range(2, 32),\n",
3392
       "                         &#x27;min_samples_leaf&#x27;: range(1, 10),\n",
3393
       "                         &#x27;min_samples_split&#x27;: range(2, 10),\n",
3394
       "                         &#x27;splitter&#x27;: [&#x27;best&#x27;, &#x27;random&#x27;]},\n",
3395
       "             verbose=1)</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 fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-8\" type=\"checkbox\" ><label for=\"sk-estimator-id-8\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">estimator: DecisionTreeClassifier</label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier()</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-9\" type=\"checkbox\" ><label for=\"sk-estimator-id-9\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;DecisionTreeClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier()</pre></div> </div></div></div></div></div></div></div></div></div>"
3396
      ],
3397
      "text/plain": [
3398
       "GridSearchCV(cv=5, estimator=DecisionTreeClassifier(), n_jobs=-1,\n",
3399
       "             param_grid={'criterion': ['gini', 'entropy'],\n",
3400
       "                         'max_depth': range(2, 32),\n",
3401
       "                         'min_samples_leaf': range(1, 10),\n",
3402
       "                         'min_samples_split': range(2, 10),\n",
3403
       "                         'splitter': ['best', 'random']},\n",
3404
       "             verbose=1)"
3405
      ]
3406
     },
3407
     "execution_count": 34,
3408
     "metadata": {},
3409
     "output_type": "execute_result"
3410
    }
3411
   ],
3412
   "source": [
3413
    "from sklearn.tree import DecisionTreeClassifier\n",
3414
    "\n",
3415
    "dtc = DecisionTreeClassifier()\n",
3416
    "\n",
3417
    "parameters = {\n",
3418
    "    'criterion' : ['gini', 'entropy'],\n",
3419
    "    'max_depth' : range(2, 32, 1),\n",
3420
    "    'min_samples_leaf' : range(1, 10, 1),\n",
3421
    "    'min_samples_split' : range(2, 10, 1),\n",
3422
    "    'splitter' : ['best', 'random']\n",
3423
    "}\n",
3424
    "\n",
3425
    "grid_search_dt = GridSearchCV(dtc, parameters, cv = 5, n_jobs = -1, verbose = 1)\n",
3426
    "grid_search_dt.fit(X_train, y_train)"
3427
   ]
3428
  },
3429
  {
3430
   "cell_type": "code",
3431
   "execution_count": 35,
3432
   "id": "96fb1e94-efa2-4981-82d4-2e6049c70031",
3433
   "metadata": {},
3434
   "outputs": [
3435
    {
3436
     "data": {
3437
      "text/plain": [
3438
       "{'criterion': 'entropy',\n",
3439
       " 'max_depth': 12,\n",
3440
       " 'min_samples_leaf': 4,\n",
3441
       " 'min_samples_split': 2,\n",
3442
       " 'splitter': 'random'}"
3443
      ]
3444
     },
3445
     "execution_count": 35,
3446
     "metadata": {},
3447
     "output_type": "execute_result"
3448
    }
3449
   ],
3450
   "source": [
3451
    "# best parameters\n",
3452
    "\n",
3453
    "grid_search_dt.best_params_"
3454
   ]
3455
  },
3456
  {
3457
   "cell_type": "code",
3458
   "execution_count": 36,
3459
   "id": "c9880239-069c-4ee8-b5d7-15c97ffcb467",
3460
   "metadata": {},
3461
   "outputs": [
3462
    {
3463
     "data": {
3464
      "text/plain": [
3465
       "0.9623734177215189"
3466
      ]
3467
     },
3468
     "execution_count": 36,
3469
     "metadata": {},
3470
     "output_type": "execute_result"
3471
    }
3472
   ],
3473
   "source": [
3474
    "# best score\n",
3475
    "\n",
3476
    "grid_search_dt.best_score_"
3477
   ]
3478
  },
3479
  {
3480
   "cell_type": "code",
3481
   "execution_count": 37,
3482
   "id": "f2a4bd0f-3c12-41ea-a335-4212fb48030b",
3483
   "metadata": {},
3484
   "outputs": [
3485
    {
3486
     "data": {
3487
      "text/html": [
3488
       "<style>#sk-container-id-6 {\n",
3489
       "  /* Definition of color scheme common for light and dark mode */\n",
3490
       "  --sklearn-color-text: black;\n",
3491
       "  --sklearn-color-line: gray;\n",
3492
       "  /* Definition of color scheme for unfitted estimators */\n",
3493
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
3494
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
3495
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
3496
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
3497
       "  /* Definition of color scheme for fitted estimators */\n",
3498
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
3499
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
3500
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
3501
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
3502
       "\n",
3503
       "  /* Specific color for light theme */\n",
3504
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
3505
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
3506
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
3507
       "  --sklearn-color-icon: #696969;\n",
3508
       "\n",
3509
       "  @media (prefers-color-scheme: dark) {\n",
3510
       "    /* Redefinition of color scheme for dark theme */\n",
3511
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
3512
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
3513
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
3514
       "    --sklearn-color-icon: #878787;\n",
3515
       "  }\n",
3516
       "}\n",
3517
       "\n",
3518
       "#sk-container-id-6 {\n",
3519
       "  color: var(--sklearn-color-text);\n",
3520
       "}\n",
3521
       "\n",
3522
       "#sk-container-id-6 pre {\n",
3523
       "  padding: 0;\n",
3524
       "}\n",
3525
       "\n",
3526
       "#sk-container-id-6 input.sk-hidden--visually {\n",
3527
       "  border: 0;\n",
3528
       "  clip: rect(1px 1px 1px 1px);\n",
3529
       "  clip: rect(1px, 1px, 1px, 1px);\n",
3530
       "  height: 1px;\n",
3531
       "  margin: -1px;\n",
3532
       "  overflow: hidden;\n",
3533
       "  padding: 0;\n",
3534
       "  position: absolute;\n",
3535
       "  width: 1px;\n",
3536
       "}\n",
3537
       "\n",
3538
       "#sk-container-id-6 div.sk-dashed-wrapped {\n",
3539
       "  border: 1px dashed var(--sklearn-color-line);\n",
3540
       "  margin: 0 0.4em 0.5em 0.4em;\n",
3541
       "  box-sizing: border-box;\n",
3542
       "  padding-bottom: 0.4em;\n",
3543
       "  background-color: var(--sklearn-color-background);\n",
3544
       "}\n",
3545
       "\n",
3546
       "#sk-container-id-6 div.sk-container {\n",
3547
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
3548
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
3549
       "     so we also need the `!important` here to be able to override the\n",
3550
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
3551
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
3552
       "  display: inline-block !important;\n",
3553
       "  position: relative;\n",
3554
       "}\n",
3555
       "\n",
3556
       "#sk-container-id-6 div.sk-text-repr-fallback {\n",
3557
       "  display: none;\n",
3558
       "}\n",
3559
       "\n",
3560
       "div.sk-parallel-item,\n",
3561
       "div.sk-serial,\n",
3562
       "div.sk-item {\n",
3563
       "  /* draw centered vertical line to link estimators */\n",
3564
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
3565
       "  background-size: 2px 100%;\n",
3566
       "  background-repeat: no-repeat;\n",
3567
       "  background-position: center center;\n",
3568
       "}\n",
3569
       "\n",
3570
       "/* Parallel-specific style estimator block */\n",
3571
       "\n",
3572
       "#sk-container-id-6 div.sk-parallel-item::after {\n",
3573
       "  content: \"\";\n",
3574
       "  width: 100%;\n",
3575
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
3576
       "  flex-grow: 1;\n",
3577
       "}\n",
3578
       "\n",
3579
       "#sk-container-id-6 div.sk-parallel {\n",
3580
       "  display: flex;\n",
3581
       "  align-items: stretch;\n",
3582
       "  justify-content: center;\n",
3583
       "  background-color: var(--sklearn-color-background);\n",
3584
       "  position: relative;\n",
3585
       "}\n",
3586
       "\n",
3587
       "#sk-container-id-6 div.sk-parallel-item {\n",
3588
       "  display: flex;\n",
3589
       "  flex-direction: column;\n",
3590
       "}\n",
3591
       "\n",
3592
       "#sk-container-id-6 div.sk-parallel-item:first-child::after {\n",
3593
       "  align-self: flex-end;\n",
3594
       "  width: 50%;\n",
3595
       "}\n",
3596
       "\n",
3597
       "#sk-container-id-6 div.sk-parallel-item:last-child::after {\n",
3598
       "  align-self: flex-start;\n",
3599
       "  width: 50%;\n",
3600
       "}\n",
3601
       "\n",
3602
       "#sk-container-id-6 div.sk-parallel-item:only-child::after {\n",
3603
       "  width: 0;\n",
3604
       "}\n",
3605
       "\n",
3606
       "/* Serial-specific style estimator block */\n",
3607
       "\n",
3608
       "#sk-container-id-6 div.sk-serial {\n",
3609
       "  display: flex;\n",
3610
       "  flex-direction: column;\n",
3611
       "  align-items: center;\n",
3612
       "  background-color: var(--sklearn-color-background);\n",
3613
       "  padding-right: 1em;\n",
3614
       "  padding-left: 1em;\n",
3615
       "}\n",
3616
       "\n",
3617
       "\n",
3618
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
3619
       "clickable and can be expanded/collapsed.\n",
3620
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
3621
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
3622
       "*/\n",
3623
       "\n",
3624
       "/* Pipeline and ColumnTransformer style (default) */\n",
3625
       "\n",
3626
       "#sk-container-id-6 div.sk-toggleable {\n",
3627
       "  /* Default theme specific background. It is overwritten whether we have a\n",
3628
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
3629
       "  background-color: var(--sklearn-color-background);\n",
3630
       "}\n",
3631
       "\n",
3632
       "/* Toggleable label */\n",
3633
       "#sk-container-id-6 label.sk-toggleable__label {\n",
3634
       "  cursor: pointer;\n",
3635
       "  display: block;\n",
3636
       "  width: 100%;\n",
3637
       "  margin-bottom: 0;\n",
3638
       "  padding: 0.5em;\n",
3639
       "  box-sizing: border-box;\n",
3640
       "  text-align: center;\n",
3641
       "}\n",
3642
       "\n",
3643
       "#sk-container-id-6 label.sk-toggleable__label-arrow:before {\n",
3644
       "  /* Arrow on the left of the label */\n",
3645
       "  content: \"▸\";\n",
3646
       "  float: left;\n",
3647
       "  margin-right: 0.25em;\n",
3648
       "  color: var(--sklearn-color-icon);\n",
3649
       "}\n",
3650
       "\n",
3651
       "#sk-container-id-6 label.sk-toggleable__label-arrow:hover:before {\n",
3652
       "  color: var(--sklearn-color-text);\n",
3653
       "}\n",
3654
       "\n",
3655
       "/* Toggleable content - dropdown */\n",
3656
       "\n",
3657
       "#sk-container-id-6 div.sk-toggleable__content {\n",
3658
       "  max-height: 0;\n",
3659
       "  max-width: 0;\n",
3660
       "  overflow: hidden;\n",
3661
       "  text-align: left;\n",
3662
       "  /* unfitted */\n",
3663
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
3664
       "}\n",
3665
       "\n",
3666
       "#sk-container-id-6 div.sk-toggleable__content.fitted {\n",
3667
       "  /* fitted */\n",
3668
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
3669
       "}\n",
3670
       "\n",
3671
       "#sk-container-id-6 div.sk-toggleable__content pre {\n",
3672
       "  margin: 0.2em;\n",
3673
       "  border-radius: 0.25em;\n",
3674
       "  color: var(--sklearn-color-text);\n",
3675
       "  /* unfitted */\n",
3676
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
3677
       "}\n",
3678
       "\n",
3679
       "#sk-container-id-6 div.sk-toggleable__content.fitted pre {\n",
3680
       "  /* unfitted */\n",
3681
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
3682
       "}\n",
3683
       "\n",
3684
       "#sk-container-id-6 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
3685
       "  /* Expand drop-down */\n",
3686
       "  max-height: 200px;\n",
3687
       "  max-width: 100%;\n",
3688
       "  overflow: auto;\n",
3689
       "}\n",
3690
       "\n",
3691
       "#sk-container-id-6 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
3692
       "  content: \"▾\";\n",
3693
       "}\n",
3694
       "\n",
3695
       "/* Pipeline/ColumnTransformer-specific style */\n",
3696
       "\n",
3697
       "#sk-container-id-6 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
3698
       "  color: var(--sklearn-color-text);\n",
3699
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
3700
       "}\n",
3701
       "\n",
3702
       "#sk-container-id-6 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
3703
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
3704
       "}\n",
3705
       "\n",
3706
       "/* Estimator-specific style */\n",
3707
       "\n",
3708
       "/* Colorize estimator box */\n",
3709
       "#sk-container-id-6 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
3710
       "  /* unfitted */\n",
3711
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
3712
       "}\n",
3713
       "\n",
3714
       "#sk-container-id-6 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
3715
       "  /* fitted */\n",
3716
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
3717
       "}\n",
3718
       "\n",
3719
       "#sk-container-id-6 div.sk-label label.sk-toggleable__label,\n",
3720
       "#sk-container-id-6 div.sk-label label {\n",
3721
       "  /* The background is the default theme color */\n",
3722
       "  color: var(--sklearn-color-text-on-default-background);\n",
3723
       "}\n",
3724
       "\n",
3725
       "/* On hover, darken the color of the background */\n",
3726
       "#sk-container-id-6 div.sk-label:hover label.sk-toggleable__label {\n",
3727
       "  color: var(--sklearn-color-text);\n",
3728
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
3729
       "}\n",
3730
       "\n",
3731
       "/* Label box, darken color on hover, fitted */\n",
3732
       "#sk-container-id-6 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
3733
       "  color: var(--sklearn-color-text);\n",
3734
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
3735
       "}\n",
3736
       "\n",
3737
       "/* Estimator label */\n",
3738
       "\n",
3739
       "#sk-container-id-6 div.sk-label label {\n",
3740
       "  font-family: monospace;\n",
3741
       "  font-weight: bold;\n",
3742
       "  display: inline-block;\n",
3743
       "  line-height: 1.2em;\n",
3744
       "}\n",
3745
       "\n",
3746
       "#sk-container-id-6 div.sk-label-container {\n",
3747
       "  text-align: center;\n",
3748
       "}\n",
3749
       "\n",
3750
       "/* Estimator-specific */\n",
3751
       "#sk-container-id-6 div.sk-estimator {\n",
3752
       "  font-family: monospace;\n",
3753
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
3754
       "  border-radius: 0.25em;\n",
3755
       "  box-sizing: border-box;\n",
3756
       "  margin-bottom: 0.5em;\n",
3757
       "  /* unfitted */\n",
3758
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
3759
       "}\n",
3760
       "\n",
3761
       "#sk-container-id-6 div.sk-estimator.fitted {\n",
3762
       "  /* fitted */\n",
3763
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
3764
       "}\n",
3765
       "\n",
3766
       "/* on hover */\n",
3767
       "#sk-container-id-6 div.sk-estimator:hover {\n",
3768
       "  /* unfitted */\n",
3769
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
3770
       "}\n",
3771
       "\n",
3772
       "#sk-container-id-6 div.sk-estimator.fitted:hover {\n",
3773
       "  /* fitted */\n",
3774
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
3775
       "}\n",
3776
       "\n",
3777
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
3778
       "\n",
3779
       "/* Common style for \"i\" and \"?\" */\n",
3780
       "\n",
3781
       ".sk-estimator-doc-link,\n",
3782
       "a:link.sk-estimator-doc-link,\n",
3783
       "a:visited.sk-estimator-doc-link {\n",
3784
       "  float: right;\n",
3785
       "  font-size: smaller;\n",
3786
       "  line-height: 1em;\n",
3787
       "  font-family: monospace;\n",
3788
       "  background-color: var(--sklearn-color-background);\n",
3789
       "  border-radius: 1em;\n",
3790
       "  height: 1em;\n",
3791
       "  width: 1em;\n",
3792
       "  text-decoration: none !important;\n",
3793
       "  margin-left: 1ex;\n",
3794
       "  /* unfitted */\n",
3795
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
3796
       "  color: var(--sklearn-color-unfitted-level-1);\n",
3797
       "}\n",
3798
       "\n",
3799
       ".sk-estimator-doc-link.fitted,\n",
3800
       "a:link.sk-estimator-doc-link.fitted,\n",
3801
       "a:visited.sk-estimator-doc-link.fitted {\n",
3802
       "  /* fitted */\n",
3803
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
3804
       "  color: var(--sklearn-color-fitted-level-1);\n",
3805
       "}\n",
3806
       "\n",
3807
       "/* On hover */\n",
3808
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
3809
       ".sk-estimator-doc-link:hover,\n",
3810
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
3811
       ".sk-estimator-doc-link:hover {\n",
3812
       "  /* unfitted */\n",
3813
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
3814
       "  color: var(--sklearn-color-background);\n",
3815
       "  text-decoration: none;\n",
3816
       "}\n",
3817
       "\n",
3818
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
3819
       ".sk-estimator-doc-link.fitted:hover,\n",
3820
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
3821
       ".sk-estimator-doc-link.fitted:hover {\n",
3822
       "  /* fitted */\n",
3823
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
3824
       "  color: var(--sklearn-color-background);\n",
3825
       "  text-decoration: none;\n",
3826
       "}\n",
3827
       "\n",
3828
       "/* Span, style for the box shown on hovering the info icon */\n",
3829
       ".sk-estimator-doc-link span {\n",
3830
       "  display: none;\n",
3831
       "  z-index: 9999;\n",
3832
       "  position: relative;\n",
3833
       "  font-weight: normal;\n",
3834
       "  right: .2ex;\n",
3835
       "  padding: .5ex;\n",
3836
       "  margin: .5ex;\n",
3837
       "  width: min-content;\n",
3838
       "  min-width: 20ex;\n",
3839
       "  max-width: 50ex;\n",
3840
       "  color: var(--sklearn-color-text);\n",
3841
       "  box-shadow: 2pt 2pt 4pt #999;\n",
3842
       "  /* unfitted */\n",
3843
       "  background: var(--sklearn-color-unfitted-level-0);\n",
3844
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
3845
       "}\n",
3846
       "\n",
3847
       ".sk-estimator-doc-link.fitted span {\n",
3848
       "  /* fitted */\n",
3849
       "  background: var(--sklearn-color-fitted-level-0);\n",
3850
       "  border: var(--sklearn-color-fitted-level-3);\n",
3851
       "}\n",
3852
       "\n",
3853
       ".sk-estimator-doc-link:hover span {\n",
3854
       "  display: block;\n",
3855
       "}\n",
3856
       "\n",
3857
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
3858
       "\n",
3859
       "#sk-container-id-6 a.estimator_doc_link {\n",
3860
       "  float: right;\n",
3861
       "  font-size: 1rem;\n",
3862
       "  line-height: 1em;\n",
3863
       "  font-family: monospace;\n",
3864
       "  background-color: var(--sklearn-color-background);\n",
3865
       "  border-radius: 1rem;\n",
3866
       "  height: 1rem;\n",
3867
       "  width: 1rem;\n",
3868
       "  text-decoration: none;\n",
3869
       "  /* unfitted */\n",
3870
       "  color: var(--sklearn-color-unfitted-level-1);\n",
3871
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
3872
       "}\n",
3873
       "\n",
3874
       "#sk-container-id-6 a.estimator_doc_link.fitted {\n",
3875
       "  /* fitted */\n",
3876
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
3877
       "  color: var(--sklearn-color-fitted-level-1);\n",
3878
       "}\n",
3879
       "\n",
3880
       "/* On hover */\n",
3881
       "#sk-container-id-6 a.estimator_doc_link:hover {\n",
3882
       "  /* unfitted */\n",
3883
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
3884
       "  color: var(--sklearn-color-background);\n",
3885
       "  text-decoration: none;\n",
3886
       "}\n",
3887
       "\n",
3888
       "#sk-container-id-6 a.estimator_doc_link.fitted:hover {\n",
3889
       "  /* fitted */\n",
3890
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
3891
       "}\n",
3892
       "</style><div id=\"sk-container-id-6\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>DecisionTreeClassifier(criterion=&#x27;entropy&#x27;, max_depth=19, min_samples_leaf=4,\n",
3893
       "                       min_samples_split=6, splitter=&#x27;random&#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\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-10\" type=\"checkbox\" checked><label for=\"sk-estimator-id-10\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;DecisionTreeClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier(criterion=&#x27;entropy&#x27;, max_depth=19, min_samples_leaf=4,\n",
3894
       "                       min_samples_split=6, splitter=&#x27;random&#x27;)</pre></div> </div></div></div></div>"
3895
      ],
3896
      "text/plain": [
3897
       "DecisionTreeClassifier(criterion='entropy', max_depth=19, min_samples_leaf=4,\n",
3898
       "                       min_samples_split=6, splitter='random')"
3899
      ]
3900
     },
3901
     "execution_count": 37,
3902
     "metadata": {},
3903
     "output_type": "execute_result"
3904
    }
3905
   ],
3906
   "source": [
3907
    "dtc = DecisionTreeClassifier(criterion= 'entropy', max_depth= 19, min_samples_leaf= 4, min_samples_split= 6, splitter= 'random')\n",
3908
    "dtc.fit(X_train, y_train)"
3909
   ]
3910
  },
3911
  {
3912
   "cell_type": "code",
3913
   "execution_count": 38,
3914
   "id": "682c5cf4-bc68-4751-ad34-6b21b24e232e",
3915
   "metadata": {},
3916
   "outputs": [],
3917
   "source": [
3918
    "y_pred = dtc.predict(X_test)"
3919
   ]
3920
  },
3921
  {
3922
   "cell_type": "code",
3923
   "execution_count": 39,
3924
   "id": "c7c6d8a4-9c4e-4d9c-b1fc-b2e4cd93f224",
3925
   "metadata": {},
3926
   "outputs": [
3927
    {
3928
     "name": "stdout",
3929
     "output_type": "stream",
3930
     "text": [
3931
      "0.9673366834170855\n",
3932
      "0.9298245614035088\n",
3933
      "[[100   8]\n",
3934
      " [  4  59]]\n",
3935
      "              precision    recall  f1-score   support\n",
3936
      "\n",
3937
      "           0       0.96      0.93      0.94       108\n",
3938
      "           1       0.88      0.94      0.91        63\n",
3939
      "\n",
3940
      "    accuracy                           0.93       171\n",
3941
      "   macro avg       0.92      0.93      0.93       171\n",
3942
      "weighted avg       0.93      0.93      0.93       171\n",
3943
      "\n"
3944
     ]
3945
    }
3946
   ],
3947
   "source": [
3948
    "# accuracy score\n",
3949
    "\n",
3950
    "print(accuracy_score(y_train, dtc.predict(X_train)))\n",
3951
    "\n",
3952
    "dtc_acc = accuracy_score(y_test, dtc.predict(X_test))\n",
3953
    "print(dtc_acc)\n",
3954
    "\n",
3955
    "# confusion matrix\n",
3956
    "\n",
3957
    "print(confusion_matrix(y_test, y_pred))\n",
3958
    "\n",
3959
    "# classification report\n",
3960
    "\n",
3961
    "print(classification_report(y_test, y_pred))"
3962
   ]
3963
  },
3964
  {
3965
   "cell_type": "code",
3966
   "execution_count": 40,
3967
   "id": "6295c993-7685-4e18-90a7-ccc6864d2502",
3968
   "metadata": {},
3969
   "outputs": [],
3970
   "source": [
3971
    "#Model Comparison"
3972
   ]
3973
  },
3974
  {
3975
   "cell_type": "code",
3976
   "execution_count": 41,
3977
   "id": "1c52303f-c9ca-46cc-833b-136d95546b1c",
3978
   "metadata": {},
3979
   "outputs": [
3980
    {
3981
     "data": {
3982
      "text/html": [
3983
       "<div>\n",
3984
       "<style scoped>\n",
3985
       "    .dataframe tbody tr th:only-of-type {\n",
3986
       "        vertical-align: middle;\n",
3987
       "    }\n",
3988
       "\n",
3989
       "    .dataframe tbody tr th {\n",
3990
       "        vertical-align: top;\n",
3991
       "    }\n",
3992
       "\n",
3993
       "    .dataframe thead th {\n",
3994
       "        text-align: right;\n",
3995
       "    }\n",
3996
       "</style>\n",
3997
       "<table border=\"1\" class=\"dataframe\">\n",
3998
       "  <thead>\n",
3999
       "    <tr style=\"text-align: right;\">\n",
4000
       "      <th></th>\n",
4001
       "      <th>Model</th>\n",
4002
       "      <th>Score</th>\n",
4003
       "    </tr>\n",
4004
       "  </thead>\n",
4005
       "  <tbody>\n",
4006
       "    <tr>\n",
4007
       "      <th>2</th>\n",
4008
       "      <td>SVM</td>\n",
4009
       "      <td>97.66</td>\n",
4010
       "    </tr>\n",
4011
       "    <tr>\n",
4012
       "      <th>0</th>\n",
4013
       "      <td>Logistic Regression</td>\n",
4014
       "      <td>95.91</td>\n",
4015
       "    </tr>\n",
4016
       "    <tr>\n",
4017
       "      <th>1</th>\n",
4018
       "      <td>KNN</td>\n",
4019
       "      <td>93.57</td>\n",
4020
       "    </tr>\n",
4021
       "    <tr>\n",
4022
       "      <th>3</th>\n",
4023
       "      <td>Decision Tree Classifier</td>\n",
4024
       "      <td>92.98</td>\n",
4025
       "    </tr>\n",
4026
       "  </tbody>\n",
4027
       "</table>\n",
4028
       "</div>"
4029
      ],
4030
      "text/plain": [
4031
       "                      Model  Score\n",
4032
       "2                       SVM  97.66\n",
4033
       "0       Logistic Regression  95.91\n",
4034
       "1                       KNN  93.57\n",
4035
       "3  Decision Tree Classifier  92.98"
4036
      ]
4037
     },
4038
     "execution_count": 41,
4039
     "metadata": {},
4040
     "output_type": "execute_result"
4041
    }
4042
   ],
4043
   "source": [
4044
    "models = pd.DataFrame({\n",
4045
    "    'Model': ['Logistic Regression', 'KNN', 'SVM', 'Decision Tree Classifier'],\n",
4046
    "    'Score': [100*round(log_reg_acc,4), 100*round(knn_acc,4), 100*round(svc_acc,4), 100*round(dtc_acc,4)]\n",
4047
    "})\n",
4048
    "models.sort_values(by = 'Score', ascending = False)"
4049
   ]
4050
  },
4051
  {
4052
   "cell_type": "code",
4053
   "execution_count": 56,
4054
   "id": "54f350fc-845d-448c-b7ef-76ab096d9f94",
4055
   "metadata": {},
4056
   "outputs": [
4057
    {
4058
     "name": "stdout",
4059
     "output_type": "stream",
4060
     "text": [
4061
      "[1]\n",
4062
      "M\n"
4063
     ]
4064
    }
4065
   ],
4066
   "source": [
4067
    "from sklearn.linear_model import LogisticRegression\n",
4068
    "input_data =(10.38, 0.1184, 0.2776, 0.1471, 0.2419, 0.07871, 0.9053, 153.4, 0.006399, 0.04904, 0.05373, 0.01587, 0.03003, 0.006193, 17.33, 2019.0, 0.1622, 0.6656, 0.7119, 0.2654, 0.4601, 0.1189\n",
4069
    ")\n",
4070
    "#100,12,1,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1) \n",
4071
    "\n",
4072
    "'''(14.36,0.09779,0.08129,0.04781,0.1885,0.05766,0.7886,23.56,0.008462,\n",
4073
    "0.0146,0.02387,0.01315,0.0198,0.0023,15.11,711.2,0.144,0.1773,0.239,0.1288,0.2977,0.07259\n",
4074
    ")'''\n",
4075
    "\n",
4076
    "from sklearn import svm\n",
4077
    "# changing the input_data to numpy array\n",
4078
    "input_data_as_numpy_array = np.asarray(input_data)\n",
4079
    "model = LogisticRegression()\n",
4080
    "model.fit(X_test, y_test)\n",
4081
    "\n",
4082
    "# reshape the array as we are predicting for one instance\n",
4083
    "input_data_reshaped = input_data_as_numpy_array.reshape(1,-1)\n",
4084
    "predictions = model.predict(input_data_reshaped)\n",
4085
    "print(predictions)\n",
4086
    "if (predictions == 0):\n",
4087
    "  print('B')\n",
4088
    "else:\n",
4089
    "  print('M')"
4090
   ]
4091
  },
4092
  {
4093
   "cell_type": "code",
4094
   "execution_count": 43,
4095
   "id": "06e06ade-cff3-45ae-95cd-c8eb82bd21fd",
4096
   "metadata": {},
4097
   "outputs": [
4098
    {
4099
     "name": "stdout",
4100
     "output_type": "stream",
4101
     "text": [
4102
      "Model: LR\n",
4103
      "Mean Accuracy: 95.91%\n",
4104
      "Mean ROC AUC: 99.37%\n",
4105
      "------------------------------\n",
4106
      "Model: DT\n",
4107
      "Mean Accuracy: 92.98%\n",
4108
      "Mean ROC AUC: 95.06%\n",
4109
      "------------------------------\n",
4110
      "Model: SVM\n",
4111
      "Mean Accuracy: 97.66%\n",
4112
      "Mean ROC AUC: 99.81%\n",
4113
      "------------------------------\n",
4114
      "Model: KNN\n",
4115
      "Mean Accuracy: 93.57%\n",
4116
      "Mean ROC AUC: 97.02%\n",
4117
      "------------------------------\n"
4118
     ]
4119
    },
4120
    {
4121
     "data": {
4122
      "image/png": "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pjtqERWHvtoWwy4REREViYWFBVJTUxl4Se9UKhVSU1NhYWFR7HXxAjUiIiIqEplMBktLS6SlpZXYNhS5QMpzZYmt3yAkQI4CeP40BWIaytnIVAFjM6ne1mdpaQmZrPhRlWGXiIiIikwmk5XojSUykqW4eKZ83XzhbdQ3Lvlr0zVR3bik92R/2DiXvRvjsBsDEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiZbM0AUUhlKpxLZt2xAZGYm0tDR4eHhg4MCBkMvlAIDY2FisWbMG0dHRsLGxQefOndGpUycDV01EREREhlYuzuyGhYUhIiICI0eOxNdff43KlStj7ty5SEpKQmpqKmbNmoVKlSph3rx56N27NzZs2IAjR44YumwiIiIiMrBycWb37NmzCAwMRL169QAAgwcPxuHDh3Hr1i08evQIMpkMH3zwAaRSKVxdXfH48WPs2LEDbdq0MXDlRERERGRI5eLMrq2tLc6fP49nz55BpVLh0KFDMDY2hpubG6KiouDj4wOpVKpZ3tfXF48fP0ZycrLhiiYiIiIigysXZ3aHDBmCRYsWYezYsTAyMoKRkREmT56MSpUqISEhAVWrVtVa3sHBAQCQkJAAOzu7Im1TJiu9p0YiESCRSEpte6VBvTsSSAAR7ZpEIoGxsbGhy9CZ2NoY21fZwvZVfpTHNia29gWIt42VZvvSJaeVi7D78OFDWFhYYMqUKXBwcEBERASWLFmCr776CtnZ2XmeWPXfubm5Rd6mvb19sWrWRdaLpFIN16VHAalM+vbFyhETExM4OTkZugydibONsX2VFWxf5Ud5bGPibF+AGNtYWW1fZb71PH/+HEuWLMGMGTNQq1YtAICXlxcePnyI33//HSYmJnlCrfpvU1PTIm83KSkJCoWi6IXrICdXKLVtlRb1t1alQgkBgmGL0aOcnBzEx8cbugydia2NsX2VLWxf5Ud5bGNia1+AeNtYabYvmUxW6BOTZT7s3rlzBwqFAl5eXlrTa9SogQsXLsDJyQlJSUla8xITEwH8252hKBQKRbHODOtCEKQQBPE09pdeHskCBFHtmyAIpdYu9El8bYztqyxh+yo/ymMbE1/7AsTaxspq+yrzF6ipA+v9+/e1pt+/fx+VK1dGrVq1EBUVBZVKpZl39epVVKlSBba2tqVaKxERERGVLWU+7FavXh01a9bEsmXLcPXqVTx+/BibN2/GlStX0KNHD7Rp0wYZGRlYsWIFHj58iKNHj2LPnj3o0aOHoUsnIiIiIgMr890YjIyMMHXqVGzevBnLly9Heno6qlWrhi+++AI1atQAAHz++edYs2YNpk2bBjs7O4SGhqJ169aGLZyIiIiIDK7Mh10AsLKywvvvv1/g/OrVq2POnDmlWBERERERlQdlvhsDEREREVFRMewSERERkWgx7BIRERGRaDHsEhEREZFoMewSERERkWgx7BIRERGRaDHsEhEREZFoMewSERERkWgx7BIRERGRaDHsEhEREZFoMewSERERkWgx7BIRERGRaDHsEhEREZFoMewSERERkWgx7BIRERGRaDHsEhEREZFoMewSERERkWgx7BIRERGRaDHsEhEREZFoMewSERERkWgx7BIRERGRaDHsEhEREZFoMewSERERkWgx7BIRERGRaDHsEhEREZFoMewSERERkWgx7BIRERGRaDHsEhEREZFoMewSERERkWgx7BIRERGRaDHsEhEREZFoMewSERERkWgx7BIRERGRaMmK+sCsrCwkJCQgIyMD1tbWcHBwgImJiT5rIyIiIiIqFp3Cbm5uLo4cOYLjx4/jzp07UKlUmnlGRkbw8fFBs2bN0KpVKxgbG+u9WCIiIiIiXRQ67B49ehQbNmxAbm4uGjZsiGbNmsHZ2RmmpqZIT09HQkICoqKisHHjRmzduhUhISF45513SrJ2IiIiIqI3KlTYnT9/PpKTkzF8+HA0bNiwwLO2nTt3Rm5uLk6dOoVdu3bhzJkz+PTTT/VaMBERERFRYRUq7DZp0gRt2rQp1AqNjY3RsmVLtGjRAkeOHClWcURERERExVGo0RgKG3RfJZFIEBQUpPPjiIiIiIj0pcijMQCAQqHA7du3kZycDFtbW9SoUYMXphER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zg6LFy/GvXv3cPbsWWzcuBFdunQRaR8fIiIiIiosndNgrVq1MH36dGzatAk7d+4EAOzevRuenp749NNP4evrq/cie/XqBVNTU2zevBmJiYlwcXHBxx9/jNq1awN4OQzZzz//jM8++wxWVlZ499130atXL73XQURERETlS5FOffr4+GDWrFnIyclBWloaLCwsinUxWGF06dIFXbp0yXdepUqVMH369BLdPhERERGVPzp3YwCAHTt2YN68eTAxMYGDgwPu3r2LDz74APv27dN3fURERERERaZz2N21axc2b96MypUra6ZVrFgRzZo1w2+//YaIiAi9FkhEREREVFQ6d2M4ePAg+vXrhx49emimVahQAUOHDoWtrS327NmDd955R581EhEREREVic5ndhMTE1G9evV858nlcjx79qzYRRERERER6YPOYdfJyQmXL1/Od97169fh6OhY7KKIiIiIiPRB524M77zzDjZs2ACFQoHGjRvD1tYWKSkpOH/+PHbv3o0BAwaURJ1ERERERDrTOex26dIFSUlJ2Lt3L/bs2aOZLpVK0alTpwKHByMiIiIiKm1FGmc3NDQUvXr1wq1btzTj7NaoUQPW1tb6ro+IiIiIqMiKfD9dCwsL+Pn56bEUIiIiIiL90jns5uTkICwsDP/88w+ysrIgCILWfIlEgh9++EFvBRIRERERFZXOYXfNmjU4fPgwateuDTc3NxgZFekmbEREREREJU7nsPv333+jf//+WjeVICIiIiIqi3Q+LatUKgu8qQQRERERUVmic9itV68eLl68WAKlEBERERHpl87dGAICArBq1Sq8ePECNWrUgKmpaZ5lWrVqpZfiiIiIiIiKQ+ewu2jRIgDAsWPHcOzYsXyXYdglIiIiorJA57C7dOnSkqiDiIiIiEjvdA67Tk5Ob5z/+ri7RERERESGUqQ7qJ08eRLXr19Hbm6uJtwKgoDs7GzcunULK1eu1GuRRERERERFoXPY3bp1K7Zt2wYLCwsolUpIpVLIZDKkpKRAIpHgnXfeKYk6iYiIiIh0pvPQY5GRkWjZsiVWr16Nzp07o2HDhli1ahXmzZsHa2trVK1atSTqJCIiIiLSmc5hNzExES1atIBEIoG7uztu3boFAPD09ERwcDAiIiL0XiQRERERUVHoHHZfHVe3cuXKePbsGXJycgAA7u7uePbsmf6q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9OgR1qxZg8aNGyM4OBgvXrxAcnIykpOTkZGRgY4dO+L27dvYsGED4uLisGvXLpw+fRrdu3c3dOlEREREZGBl/szu6dOnoVQqcebMGZw5c0ZrXqtWrTBmzBhMmzYN69evx969e+Hs7Ixx48blGY6MiIiIiP57ynzY7dmzJ3r27PnGZfz8/ODn51c6BRERERFRuVHmuzEQERERERUVwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiRbDLhERERGJFsMuEREREYkWwy4RERERiZbM0AXog0qlwrZt2xAREYGMjAz4+Phg+PDhcHZ2NnRpRERERGRAojizGxYWhv3792PkyJGYNWsWVCoV5syZA4VCYejSiIiIiMiAyn3YVSgU2L17N/r27YsGDRrA3d0dEydOREJCAk6fPm3o8oiIiIjIgMp9N4bY2FhkZmbC19dXM83S0hIeHh64ceMGAgMDi7ReU1NTyGSl8/QoswU4VDItlW2VFokEMLMAKrvbQ4Bg6HL0xtzSFObm5oYuQ2dia2NsX2UL21f5UR7bmNjaFyDeNlaa7UsqlRZ62XIfdhMSEgAAFSpU0Jpub2+vmVcUNjY2xapLF/b2QFWPUttcqapR18XQJRDE28bYvsoGti8qSWJtXwDbWGkp990YsrOzASDPWVgTExPk5uYaoiQiIiIiKiPKfdg1MTEBgDwXo+Xk5MDUVFw/exARERGRbsp92FV3X0hMTNSanpSUBAcHB0OURERERERlRLkPu25ubjA3N8f169c109LT0xETE4NatWoZsDIiIiIiMrRyf4GasbExOnTogA0bNsDGxgZOTk5Yv349HB0d0aRJE0OXR0REREQGJBEEodyPeaFSqbBx40YcPXoUOTk5qFWrFu+gRkRERETiCLtERERERPkp9312iYiIiIgKwrBLRERERKLFsEtEREREosWwS0RERESixbBLRERERKLFsEtEREREosWwS0RERESixbBLRERUBBymnqh8YNglonLr8OHDOHfunKHLoP+QlStX4uDBgwAAiURi4GpIrFQqlaFLEBWGXSoRR44cwb59+3DmzBketFQiNm/ejB9//BFZWVmGLoX+Iw4cOIAjR45g7969uHDhAgCe3SX9SUtLw4YNGwAARkZGbFt6JDN0ASQuWVlZmDVrFpKSkpCbm4uUlBR06NABISEhsLS0NHR5JBKLFy/G1atXMX/+fHh4eBi6HPqPcHZ2ho2NDczNzbF9+3bY2trC09MTKpUKRkY8d0TFc/bsWYSHh0OlUiE0NJS/HOgRj07Sm/v372PMmDGws7PDrFmzMHv2bAwdOhT79+9HXFycocsjEcjKysLMmTNx6tQpfPDBB5qgyzMgVBr8/PxQoUIFKJVK2NjYYPPmzUhKSoKRkRF/waJi8/f3R3BwMP766y+Eh4cbuhxRYdglvTh16hSmTZuG1q1bY8qUKXB0dETFihXRuHFjmJubIyYmxtAlUjl37949jBkzBpaWlqhYsSL27NmD2NhYAOw7SSVPqVQCALp3746KFSuiWrVqSElJwYYNG6BQKPizMxWJ+kuSSqWCtbU1WrZsiUaNGmHHjh34559/tJahomPYpWI7efIkFi9ejEmTJiE0NBSCICA3N1czv0KFCqhevTqAfw9afiiQLm7duoXp06ejZcuWmDJlCr788ktER0djx44diI+PN3R5JEK7d+9GVFSU5m+pVAoAsLOzQ0ZGBgICAtCyZUvcvXsXmzdvBvDySxff26iwMjIyNN1f1P91cnLCO++8A29vb6xZswb379/nLwd6wLBLxaJQKJCSkgIASExM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6dOn0aVLF615J0+eRNOmTXHhwgXNtJycHOzcuRN//fUX4uPj4ejoiKCgIHTr1g1GRv+exzh48CB2796N58+fo3r16mjTpk2ebT9//hzr16/HpUuXkJubC7lcjtDQUHh4eORba05ODn777TecO3cOKSkpcHZ21mybiKis4ZldIqIyIiAgIE9XhoyMDFy8eBHNmzfXTBMEAQsWLMDOnTsRFBSEadOmoWnTpti8eTNWrVqlWW7fvn1YtWoV6tevj6lTp6JGjRr46aeftLaZkpKC6dOnIyYmBsOHD8eECRMgCAK+/PJLPHz4MN86165diwsXLiA0NBSff/45/P39sX79ehw5ckTPzwgRUfHxzC4RURnRoEEDmJqa4tSpU5qzu2fOnIGNjQ1q1qypWe7ixYu4cuUKJkyYoAnBdevWhampKbZs2YJOnTrB1dUVYWFhCAgIwJAhQwAA9erVQ2ZmJg4ePKhZ1549e5CamopZs2bByckJAFC/fn1MmjQJv//+Oz766KM8dV6/fh1169bVbLt27dowMzODra1tiTwvRETFwTO7RERlhImJCRo2bIjTp09rpp08eRIBAQGQSCSaadeuXYNUKkWzZs20Ht+iRQsAL8Poo0eP8OLFCzRs2FBrmdcfc/XqVbi7u8PBwQFKpRJKpRISiQR+fn64fPlyvnXWrl0bERERmDdvHvbt24dnz56hd+/eaNCgQbH2n4ioJPDMLhFRGRIQEICFCxciISEBJiYmuHLlCvr166e1TFpaGqytrbX65gKAnZ0dACA9PR1paWkAAGtra61l7O3ttf5OTU3FkydP0L9//3zryc7OzjNtyJAhcHR0xPHjx7F69WqsXr0acrkc77//Ptzd3XXZXSKiEsewS0RUhvj5+cHMzAynT5+GqakpnJ2d4enpqbWMlZUVUlNToVKptAJvcnIyAMDGxkYTcl+8eKH12NTUVK2/LS0t4ePjg9DQ0HzrMTY2zndaz5490bNnTzx//hznzp1DWFgYlixZgu+++07nfSYiKknsxkBEVIYYGxujUaNGOH36NE6dOqV1YZqaj48PlEplnmHKjh07BgCoWbMmKleuDEdHxzzLvD5eb61atfDo0SNUrlwZXl5emn/Hjh3D4cOH85w9zsnJwYQJE7Br1y4AQIUKFdChQwc0b94c8fHxxd5/IiJ945ldIqIyJiAgAAsWLIBEIsGwYcPyzK9fvz5q166NH3/8EYmJiXBzc8P169fx559/olWrVnB1dQUADBw4EEuWLMHKlSvRrFkz3Lp1CwcOHNBaV5cuXXD8+HHMmjULXbt2hbW1NU6ePImIiAi89957ebZtYmICDw8PbNu2DTKZDG5ubnj06BEiIyPRtGnTknlCiIiKgWGXiKiMqVu3LiwsLFChQgW4uLjkmS+RSPDJJ59gy5Yt2LNnj2as2/79+2uN0RsYGAgjIyOEhYXh+PHjqFatGj744AN8//33mmUcHBwwa9YsbNy4EatWrUJubi4qV66MDz/8EEFBQfnWN3LkSGzevBm7du1CcnIybG1tERQUhL59++r/ySAiKiaJIAiCoYsgIiIiIioJ7LNLRERERKLFsEtEREREosWwS0RERESixbBLRERERKLFsEtEREREosWwS0RERESixbBLRERERKLFsEtEREREosWwS0RERESixbBLRERERKLFsEtEREREovV/oR6LB+OKB0kAAAAASUVORK5CYII=",
4123
      "text/plain": [
4124
       "<Figure size 800x500 with 1 Axes>"
4125
      ]
4126
     },
4127
     "metadata": {},
4128
     "output_type": "display_data"
4129
    }
4130
   ],
4131
   "source": [
4132
    "from sklearn import metrics\n",
4133
    "import numpy as np\n",
4134
    "import matplotlib.pyplot as plt\n",
4135
    "\n",
4136
    "# Define models with labels\n",
4137
    "models = [\n",
4138
    "    {'label': 'LR', 'model': log_reg},\n",
4139
    "    {'label': 'DT', 'model': dtc},\n",
4140
    "    {'label': 'SVM', 'model': svc},\n",
4141
    "    {'label': 'KNN', 'model': knn}\n",
4142
    "]\n",
4143
    "\n",
4144
    "# Performance metrics\n",
4145
    "means_roc = []\n",
4146
    "means_accuracy = []\n",
4147
    "\n",
4148
    "# Evaluate each model\n",
4149
    "for m in models:\n",
4150
    "    model = m['model']\n",
4151
    "    label = m['label']\n",
4152
    "    \n",
4153
    "    # Calculate predictions and probabilities\n",
4154
    "    y_pred = model.predict(X_test)\n",
4155
    "    y_pred_prob = model.predict_proba(X_test)[:,1] if hasattr(model, 'predict_proba') else None\n",
4156
    "    \n",
4157
    "    # Calculate accuracy\n",
4158
    "    accuracy = metrics.accuracy_score(y_test, y_pred)\n",
4159
    "    mean_accuracy = 100 * round(accuracy, 4)\n",
4160
    "    means_accuracy.append(mean_accuracy)\n",
4161
    "    \n",
4162
    "    # Calculate ROC AUC\n",
4163
    "    if y_pred_prob is not None:\n",
4164
    "        auc = metrics.roc_auc_score(y_test, y_pred_prob)\n",
4165
    "        mean_roc = 100 * round(auc, 4)\n",
4166
    "    else:\n",
4167
    "        mean_roc = np.nan  # Append NaN if predict_proba is not available\n",
4168
    "    \n",
4169
    "    means_roc.append(mean_roc)\n",
4170
    "    \n",
4171
    "    # Display mean accuracy and mean ROC for each model\n",
4172
    "    print(f\"Model: {label}\")\n",
4173
    "    print(f\"Mean Accuracy: {mean_accuracy:.2f}%\")\n",
4174
    "    print(f\"Mean ROC AUC: {mean_roc:.2f}%\")\n",
4175
    "    print(\"-\" * 30)\n",
4176
    "\n",
4177
    "# Plotting\n",
4178
    "index = np.arange(len(models))\n",
4179
    "bar_width = 0.35\n",
4180
    "\n",
4181
    "# Create plot\n",
4182
    "fig, ax = plt.subplots(figsize=(8, 5))\n",
4183
    "\n",
4184
    "rects1 = plt.bar(index, means_accuracy, bar_width, alpha=0.8, color='mediumpurple', label='Accuracy (%)')\n",
4185
    "rects2 = plt.bar(index + bar_width, means_roc, bar_width, alpha=0.8, color='rebeccapurple', label='ROC AUC (%)')\n",
4186
    "\n",
4187
    "# Labeling\n",
4188
    "ax.set_xlabel('Models')\n",
4189
    "ax.set_ylabel('Performance (%)')\n",
4190
    "ax.set_title('Performance Evaluation - Breast Cancer Prediction')\n",
4191
    "ax.set_xticks(index + bar_width / 2)\n",
4192
    "ax.set_xticklabels([m['label'] for m in models], rotation=40, ha='center')\n",
4193
    "ax.legend()\n",
4194
    "\n",
4195
    "# Display plot\n",
4196
    "plt.show()\n"
4197
   ]
4198
  },
4199
  {
4200
   "cell_type": "code",
4201
   "execution_count": 58,
4202
   "id": "cff6a609-fd28-43b7-bf32-879226455388",
4203
   "metadata": {},
4204
   "outputs": [],
4205
   "source": [
4206
    "\n",
4207
    "import pickle\n",
4208
    "model = log_reg\n",
4209
    "filename = r'C:\\Users\\Pranshu Saini\\Desktop\\disease-prediction-main\\docpat\\model\\breast_cancer_svm_model.pkl'\n",
4210
    "pickle.dump(model, open(filename,'wb'))"
4211
   ]
4212
  },
4213
  {
4214
   "cell_type": "code",
4215
   "execution_count": null,
4216
   "id": "38d0b155-68d7-4b66-850d-5eefedf09eae",
4217
   "metadata": {},
4218
   "outputs": [
4219
    {
4220
     "ename": "SyntaxError",
4221
     "evalue": "(unicode error) 'unicodeescape' codec can't decode bytes in position 159-160: truncated \\UXXXXXXXX escape (1223555901.py, line 8)",
4222
     "output_type": "error",
4223
     "traceback": [
4224
      "\u001b[1;36m  Cell \u001b[1;32mIn[57], line 8\u001b[1;36m\u001b[0m\n\u001b[1;33m    return breast_cancer_model.predict(inputs)'''\u001b[0m\n\u001b[1;37m                                                 ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m (unicode error) 'unicodeescape' codec can't decode bytes in position 159-160: truncated \\UXXXXXXXX escape\n"
4225
     ]
4226
    }
4227
   ],
4228
   "source": [
4229
    "'''import pickle\n",
4230
    "def load_model(path):\n",
4231
    "    with open(path, 'rb') as file:\n",
4232
    "        model = pickle.load(file)\n",
4233
    "    return model\n",
4234
    "breast_cancer_model = load_model(r'C:\\Users\\DELL\\Desktop\\app\\breast_cancer.pkl')\n",
4235
    "def predict(inputs):\n",
4236
    "    return breast_cancer_model.predict(inputs)'''"
4237
   ]
4238
  },
4239
  {
4240
   "cell_type": "code",
4241
   "execution_count": null,
4242
   "id": "29b7193c-5ee9-4324-be94-85c758937ff3",
4243
   "metadata": {},
4244
   "outputs": [],
4245
   "source": []
4246
  },
4247
  {
4248
   "cell_type": "code",
4249
   "execution_count": null,
4250
   "id": "5d00dae6-9852-45c0-bddd-828316c8b1df",
4251
   "metadata": {},
4252
   "outputs": [],
4253
   "source": []
4254
  },
4255
  {
4256
   "cell_type": "code",
4257
   "execution_count": null,
4258
   "id": "e8cb62fc-c2ba-4f52-8d41-a88f89ef09b6",
4259
   "metadata": {},
4260
   "outputs": [],
4261
   "source": []
4262
  }
4263
 ],
4264
 "metadata": {
4265
  "kernelspec": {
4266
   "display_name": "Python 3",
4267
   "language": "python",
4268
   "name": "python3"
4269
  },
4270
  "language_info": {
4271
   "codemirror_mode": {
4272
    "name": "ipython",
4273
    "version": 3
4274
   },
4275
   "file_extension": ".py",
4276
   "mimetype": "text/x-python",
4277
   "name": "python",
4278
   "nbconvert_exporter": "python",
4279
   "pygments_lexer": "ipython3",
4280
   "version": "3.12.3"
4281
  }
4282
 },
4283
 "nbformat": 4,
4284
 "nbformat_minor": 5
4285
}