Skip to content
Snippets Groups Projects
miRNA_limma_dataset_SVM_final.ipynb 138 KiB
Newer Older
aakan96's avatar
aakan96 committed
{
 "cells": [
aakan96's avatar
aakan96 committed
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "8ae467b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "## TRAINING  and TEST SET :  miRNA DATA , MODEL: linear SVM"
   ]
  },
aakan96's avatar
aakan96 committed
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f097ad55",
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import RocCurveDisplay\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from imblearn.over_sampling import SMOTE\n",
    "from sklearn.linear_model import Lasso\n",
    "import xgboost as xgb\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "#np.random.seed(7)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73b6611a",
   "metadata": {},
   "source": [
    "# Data Preprocessing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0eeb7a35",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv(\"DS/miRNA_DS_preprocessed_data.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "0dd80c33",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "df=(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "6e7836e1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(230, 239)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "aea07471",
   "metadata": {},
   "outputs": [],
   "source": [
    "#df = df.drop(df.columns[:14], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "683b63ce",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df.T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "2e78017d",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Transform the input data\n",
    "df.rename(columns=df.iloc[0], inplace = True)\n",
    "df.drop(df.index[0], inplace = True)\n",
    "df=df.reset_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "4c50c510",
   "metadata": {},
   "outputs": [],
   "source": [
    "metadata = pd.read_csv(\"DS/miRNA_DS_metadata_col_info.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6730cf89",
   "metadata": {},
   "outputs": [],
   "source": [
    "df= df.merge(metadata, left_on=\"index\", right_on= \"Unnamed: 0\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "7a8ad8ad",
   "metadata": {},
   "outputs": [],
   "source": [
    "df['title0'] = df['title0'].replace('(?i)mucosa|normal|healthy', 0, regex=True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "a8cf8643",
   "metadata": {},
   "outputs": [],
   "source": [
    "df['title0'] = df['title0'].replace('(?i)Tumor|Cancer|carcinoma', 1, regex=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "f5d203aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df[pd.to_numeric(df['title0'], errors='coerce').notnull()]#remove all non-numeric data from the column."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "523bdaa6",
   "metadata": {},
   "outputs": [],
   "source": [
    "df= df.drop(['index', 'Unnamed: 0'], axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "46a6fb36",
   "metadata": {},
   "outputs": [],
   "source": [
    "df= df.rename(columns={\"title0\": \"index\"})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "e26f88c5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "index\n",
       "1    119\n",
       "0    119\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['index'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "fbaf2507",
   "metadata": {},
   "outputs": [],
   "source": [
    "df= df.apply(pd.to_numeric)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "6a50f416",
   "metadata": {},
   "outputs": [],
   "source": [
    "X=df.drop(\"index\",axis=1)\n",
    "y=df['index']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "e644ab0e",
   "metadata": {},
   "outputs": [],
   "source": [
    "y=y.astype('int')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6cee6462",
   "metadata": {},
   "source": [
    "# Test train split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "1da48142",
   "metadata": {},
   "outputs": [],
   "source": [
    "# split data into training and testing data-sets\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "129430e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(index\n",
       " 1    61\n",
       " 0    58\n",
       " Name: count, dtype: int64,\n",
       " index\n",
       " 0    61\n",
       " 1    58\n",
       " Name: count, dtype: int64)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_test.value_counts(),y_train.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1cfe2a06",
   "metadata": {},
   "source": [
    "# Cross validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "d3550b5e",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 5 folds for each of 4 candidates, totalling 20 fits\n",
      "[CV 1/5] END ..........................C=0.0005;, score=1.000 total time=   0.0s\n",
      "[CV 2/5] END ..........................C=0.0005;, score=1.000 total time=   0.0s\n",
      "[CV 3/5] END ..........................C=0.0005;, score=0.958 total time=   0.0s\n",
      "[CV 4/5] END ..........................C=0.0005;, score=1.000 total time=   0.0s\n",
      "[CV 5/5] END ..........................C=0.0005;, score=0.913 total time=   0.0s\n",
      "[CV 1/5] END ..........................C=0.0001;, score=0.917 total time=   0.0s\n",
      "[CV 2/5] END ..........................C=0.0001;, score=0.833 total time=   0.0s\n",
      "[CV 3/5] END ..........................C=0.0001;, score=0.875 total time=   0.0s\n",
      "[CV 4/5] END ..........................C=0.0001;, score=0.958 total time=   0.0s\n",
      "[CV 5/5] END ..........................C=0.0001;, score=0.957 total time=   0.0s\n",
      "[CV 1/5] END ...........................C=0.001;, score=1.000 total time=   0.0s\n",
      "[CV 2/5] END ...........................C=0.001;, score=1.000 total time=   0.0s\n",
      "[CV 3/5] END ...........................C=0.001;, score=1.000 total time=   0.0s\n",
      "[CV 4/5] END ...........................C=0.001;, score=0.958 total time=   0.0s\n",
      "[CV 5/5] END ...........................C=0.001;, score=1.000 total time=   0.0s\n",
      "[CV 1/5] END .............................C=0.1;, score=1.000 total time=   0.0s\n",
      "[CV 2/5] END .............................C=0.1;, score=1.000 total time=   0.0s\n",
      "[CV 3/5] END .............................C=0.1;, score=0.958 total time=   0.0s\n",
      "[CV 4/5] END .............................C=0.1;, score=0.958 total time=   0.0s\n",
      "[CV 5/5] END .............................C=0.1;, score=0.957 total time=   0.0s\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(estimator=SVC(kernel=&#x27;linear&#x27;, probability=True, random_state=47),\n",
       "             param_grid={&#x27;C&#x27;: [0.0005, 0.0001, 0.001, 0.1]}, verbose=3)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GridSearchCV</label><div class=\"sk-toggleable__content\"><pre>GridSearchCV(estimator=SVC(kernel=&#x27;linear&#x27;, probability=True, random_state=47),\n",
       "             param_grid={&#x27;C&#x27;: [0.0005, 0.0001, 0.001, 0.1]}, verbose=3)</pre></div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">estimator: SVC</label><div class=\"sk-toggleable__content\"><pre>SVC(kernel=&#x27;linear&#x27;, probability=True, random_state=47)</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">SVC</label><div class=\"sk-toggleable__content\"><pre>SVC(kernel=&#x27;linear&#x27;, probability=True, random_state=47)</pre></div></div></div></div></div></div></div></div></div></div>"
      ],
      "text/plain": [
       "GridSearchCV(estimator=SVC(kernel='linear', probability=True, random_state=47),\n",
       "             param_grid={'C': [0.0005, 0.0001, 0.001, 0.1]}, verbose=3)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.svm import SVC\n",
    "# we can add class_weight='balanced' to add panalize mistake\n",
    "svm_model = SVC(kernel = \"linear\", probability=True,random_state=47)\n",
    "\n",
    "# Defining parameter range\n",
    "param_grid = {\n",
    "    'C': [0.0005,0.0001,0.001,0.1]\n",
    "}\n",
    "\n",
    "grid = GridSearchCV(svm_model, param_grid, refit=True, verbose=3)\n",
    "# Fitting the model for grid search\n",
    "grid.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f92701ad",
   "metadata": {},
   "source": [
    "# model with best hyperparameter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "556e249c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'C': 0.001}\n",
      "SVC(C=0.001, kernel='linear', probability=True, random_state=47)\n"
     ]
    }
   ],
   "source": [
    "# print best parameter after tuning\n",
    "print(grid.best_params_)\n",
    "  \n",
    "# print how our model looks after hyper-parameter tuning\n",
    "print(grid.best_estimator_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "7835d984",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>SVC(C=0.001, kernel=&#x27;linear&#x27;, probability=True, random_state=47)</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 sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" checked><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">SVC</label><div class=\"sk-toggleable__content\"><pre>SVC(C=0.001, kernel=&#x27;linear&#x27;, probability=True, random_state=47)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "SVC(C=0.001, kernel='linear', probability=True, random_state=47)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_xgb = grid.best_estimator_\n",
    "model_xgb.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3ea57532",
   "metadata": {},
   "source": [
    "# classification report"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "18becbe2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.97      1.00      0.98        58\n",
      "           1       1.00      0.97      0.98        61\n",
      "\n",
      "    accuracy                           0.98       119\n",
      "   macro avg       0.98      0.98      0.98       119\n",
      "weighted avg       0.98      0.98      0.98       119\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report, confusion_matrix\n",
    "grid_predictions = grid.predict(X_test)\n",
    "print(classification_report(y_test, grid_predictions))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "9ed43446",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_proba = model_xgb.fit(X_train, y_train).predict_proba(X_test)[:,1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "c0193b78",
   "metadata": {},
   "outputs": [],
   "source": [
    "classes = model_xgb.classes_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "d723c69f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "classes"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6603d82c",
   "metadata": {},
   "source": [
    "# ROC curve"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "0e2a2694",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAIjCAYAAADlfxjoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABo+0lEQVR4nO3deZyN5f/H8deZMSszgzALo0FI2bcJSaRQyVKRdZK0WJLJV7ZMqeiblBIpFRKRFtkiEWXPMvYl29c6ljCDMeu5f3/cP0eTsZxxZu6ZOe/n43EeXNfc9zmf42R6u+ZabIZhGIiIiIiI5HMeVhcgIiIiIpITFHxFRERExC0o+IqIiIiIW1DwFRERERG3oOArIiIiIm5BwVdERERE3IKCr4iIiIi4BQVfEREREXELCr4iIiIi4hYUfEVERETELSj4iojkAlu3buWJJ57g9ttvx9fXl5IlS/Lggw8yduxYNm7ciM1mY+jQode8/6+//sJmsxEdHQ3A66+/js1mw8PDg8OHD191fUJCAn5+fthsNnr37p1t70tEJDdR8BURsdiqVauoXbs2mzdvpkePHnz88cc8++yzeHh48OGHH1KzZk3uvPNOvvnmm2s+x/Tp0wHo3Llzhn4fH59M7/vhhx9c+yZERPKAAlYXICLi7t5++22CgoL4888/KVy4cIavnTx5EoBOnTrx2muvsWbNGu65556rnuObb77hzjvvpGbNmhn6H374Yb755hsGDBiQoX/69Ok88sgjfP/99659MyIiuZhGfEVELLZv3z7uvvvuq0IvQIkSJQAz+MKVkd1/2rBhA7t373Zc808dO3YkNjaWXbt2Ofri4uJYunQpHTt2dNE7EBHJGxR8RUQsdvvtt7Nhwwa2bdt2zWvKlClD/fr1+fbbb0lPT8/wtcthOLMge99991GqVKkMgXnmzJkUKlSIRx55xEXvQEQkb1DwFRGxWP/+/UlMTKR69erUr1+fV199lV9++YXU1NQM13Xq1IkTJ06wZMkSR5/dbmfmzJnUq1ePsmXLXvXcNpuNp556KsM832nTptG2bVt8fHyy702JiORCCr4iIhZ78MEHWb16NY899hibN2/m3XffpVmzZpQsWZI5c+Y4rmvfvj1eXl4ZRm+XL1/O0aNHM53mcFnHjh3Zu3cvf/75p+NXTXMQEXek4CsikgvUqVOHH374gbNnz7Ju3ToGDRrE+fPneeKJJ9ixYwcAt912G82aNePHH38kKSkJMKc5FChQgHbt2l3zuWvUqMGdd97J9OnTmTZtGiEhITRp0iRH3peISG6i4Csikot4e3tTp04dRowYwSeffEJqaiqzZs1yfL1z584kJCQwb948UlJS+P7773nooYcoXrz4dZ+3Y8eOzJw5k+nTp9O+fXs8PPTtX0Tcj77ziYjkUrVr1wbg+PHjjr7HHnuMgIAApk+fzs8//8zZs2evO83hso4dO3L8+HH27NmjaQ4i4ra0j6+IiMV+++037r//fmw2W4b+BQsWAFCxYkVHn5+fH23atGHmzJkkJiZSsGBBWrVqdcPXKFeuHGPGjOHSpUvUrVvXtW9ARCSPUPAVEbFYnz59SExMpE2bNtx5552kpKSwatUqZs6cSUREBN26dctwfefOnfnqq69YtGgRnTp1omDBgjf1On379s2O8kVE8gwFXxERi7333nvMmjWLBQsW8Nlnn5GSkkLp0qXp2bMnQ4cOvepgiyZNmhAaGsrx48dvapqDiIiYbIZhGFYXISIiIiKS3bS4TURERETcgoKviIiIiLgFBV8RERERcQsKviIiIiLiFhR8RURERMQtKPiKiIiIiFtwu3187XY7x44dIyAg4KpTkkRERETEeoZhcP78ecLCwvDwcN04rdsF32PHjhEeHm51GSIiIiJyA4cPH6ZUqVIuez63C74BAQGA+QcZGBhocTUiIiIi8m8JCQmEh4c7cpuruF3wvTy9ITAwUMFXREREJBdz9bRULW4TEREREbeg4CsiIiIibkHBV0RERETcgoKviIiIiLgFBV8RERERcQsKviIiIiLiFhR8RURERMQtKPiKiIiIiFtQ8BURERERt6DgKyIiIiJuQcFXRERERNyCgq+IiIiIuAUFXxERERFxCwq+IiIiIuIWFHxFRERExC1YGnx///13WrZsSVhYGDabjdmzZ9/wnmXLllGzZk18fHy44447mDx5crbXKSIiIiJ5n6XB9+LFi1SrVo1x48bd1PUHDhzgkUceoXHjxsTGxvLyyy/z7LPPsmjRomyuVERERETyugJWvniLFi1o0aLFTV8/YcIEypQpw+jRowGoVKkSK1as4IMPPqBZs2ZOvfbFi+Dp6dQtIiIiIpIDLl7Mnue1NPg6a/Xq1TRt2jRDX7NmzXj55ZeveU9ycjLJycmOdkJCAgBhYdlSooiIiIjcggKkkpZNz52nFrfFxcURHBycoS84OJiEhAQuXbqU6T0jR44kKCjI8QgPD8+JUkVERETECX4kMp4XmcNjgD1bXiNPjfhmxaBBg4iOjna0ExISCA8PZ+9eCAmxsDARERERAcAjdiM+3Tri8dduAOJ+WENIW9e/Tp4KviEhIZw4cSJD34kTJwgMDMTPzy/Te3x8fPDx8bmq398fChbMljJFRERE5GbY7TB6NAwZAqmp5lzUKVPwq1s3W14uTwXfevXqsWDBggx9ixcvpl69ehZVJCIiIiJZcuQIREXB0qVmu00bmDgRbrsN/n9NlqtZOsf3woULxMbGEhsbC5jblcXGxnLo0CHAnKbQtWtXx/UvvPAC+/fvZ8CAAezatYvx48fz7bff0q9fPyvKFxEREZGsMAx44gkz9Pr7w+efw/ffm6E3G1kafNevX0+NGjWoUaMGANHR0dSoUYNhw4YBcPz4cUcIBihTpgzz589n8eLFVKtWjdGjR/P55587vZWZiIiIiFjIZoOxY6F+fYiNhe7dzb7sflnDMIxsf5VcJCEhgaCgII4diyc0NNDqckRERETcw5o1sGcP/OOn+RhGpoH3cl6Lj48nMNB1eS1PbWcmIiIiInlMWhoMHw733gs9esCWLVe+lgOjvP+Upxa3iYiIiEgesn8/dOkCq1aZ7fbtoXRpy8rRiK+IiIiIuJZhwNSpUL26GXoDA+Hrr2HaNChc2LKyNOIrIiIiIq5jGPD00/DVV2a7QQMz9EZEWFkVoBFfEREREXElmw0qVQJPT3jzTVi2LFeEXtCIr4iIiIjcqpQUOHECwsPN9n/+Aw8/DFWrWlvXv2jEV0RERESybvducz/e5s3h0iWzz9Mz14VeUPAVERERkawwDPOI4Zo1YcMGOH4cduywuqrrUvAVEREREeecPg1t28Jzz0FiIjRpYu7PW6uW1ZVdl4KviIiIiNy8X34xpzHMng1eXvDee7B4MZQqZXVlN6TFbSIiIiJycwwD3n3XnNZQqRJMn27u1ZtHaMRXRERERG6OzQaTJsErr8D69Xkq9IKCr4iIiIhci2HA2LEQHX2lLzzcnN7g729dXVmkqQ4iIiIicrW4OOjWDRYuNNtPPGFuW5aHacRXRERERDKaOxeqVDFDr6+vOepbr57VVd0yjfiKiIiIiCkxEfr3h08+MdtVq5oL2O6+29q6XETBV0RERETM+bwPPQQrV5rtV16Bt98GHx9r63IhBV8RERERMXds6NcPDhyAKVOgaVOrK3I5zfEVERERcVdHjsAff1xpP/447NmTL0MvKPiKiIiIuKdZs8w5vG3bmjs4XFawoHU1ZTMFXxERERF3cv68uU1Zu3Zw9iyUKQOXLlldVY5Q8BURERFxF2vWmKetTZ5szukdMsRczFamjNWV5QgtbhMRERHJ7wwD3nwThg+H9HQoXRq+/hoaNrS6shylEV8RERGR/M5mg8OHzdDbsSNs3ux2oRc04isiIiKSPxkGJCWBn5/Z/uADaNbMPHrYTWnEV0RERCS/OXfOHNlt1QrsdrOvUCG3Dr2gEV8RERGR/OX336FLFzh0CDw94c8/ITLS6qpyBY34ioiIiOQHKSkweDDcf78ZesuVM3dsUOh10IiviIiISF63ezd06gQbNpjtZ56BMWMgIMDSsnIbBV8RERGRvMwwzPm8GzdCkSIwcaJ59LBcRVMdRERERPIymw0++wyaN4ctWxR6r0PBV0RERCSv+eUXc2T3slq14OefoVQp62rKAxR8RURERPKKpCTo18/cj7d3b3OEV26a5viKiIiI5AXbtplzebduNdvPPgt33GFtTXmMRnxFREREcjPDgLFjoXZtM/QWLw5z58K4ceDvb3V1eYpGfEVERERyK8OANm3gp5/MdosWMGkSBAdbW1cepRFfERERkdzKZoMGDcDX1xz1nT9fofcWaMRXREREJDdJTIS4OChb1my/8oo56qv5vLdMI74iIiIiucXGjebWZI88YgZgAA8PhV4XUfAVERERsZrdDu++C/fcA7t2QXw87N9vdVX5jqY6iIiIiFjpyBHo2hV++81st2ljHk5x223W1pUPacRXRERExCqzZkHVqmbo9fc3A+/33yv0ZhON+IqIiIhYwTDgs8/g7Flzj95p06BCBaurytc04isiIiKSkwzD/NVmg8mT4Y03YNUqhd4coOArIiIikhPS0mD4cOjT50pfyZIwbBh4eVlXlxvRVAcRERGR7HbgAHTubI7sAkRFQZ061tbkhjTiKyIiIpJdDAO+/hqqVTNDb2Cg2VbotYRGfEVERESyw7lz8OKLMGOG2W7QwAy9ERFWVuXWFHxFREREXM0w4IEHzJPYPD3h9ddh4EAooOhlJU11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xtfX11VPJyLieoZhnrhWowZ06GAeOwzg7a3QKyLiBpye6tC2bdsMbcMwOH78OOvXr+e1115zWWEiIi51+jT06AGzZ5vtwEBISIDbbrO0LBERyTlOB9+goKAMbQ8PDypWrMjw4cN56KGHXFaYiIjL/PKLeRDF8ePg5WUeTtGvnzndQURE3IZTwTc9PZ1u3bpRpUoVihQpkl01iYi4RnIyDBoElxflVqoE06fDv3anERER9+DUcIenpycPPfQQ586dc2kR48aNIyIiAl9fXyIjI1m3bt1N3TdjxgxsNhutW7d2aT0ikk94eMCKFebve/WC9esVekVE3JjTP+erXLky+/fvd1kBM2fOJDo6mpiYGDZu3Ei1atVo1qwZJ0+evO59Bw8epH///jRs2NBltYhIPmAYkJZm/t7Ly9yibO5c+Phjc+syERFxW04H37feeov+/fszb948jh8/TkJCQoaHs95//3169OhBt27duOuuu5gwYQL+/v58+eWX17wnPT2dTp068cYbb1C2bFmnX1NE8qm4OHj4YRg69Epf+fLw6KPW1SQiIrnGTQff4cOHc/HiRR5++GE2b97MY489RqlSpShSpAhFihShcOHCTs/7TUlJYcOGDTRt2vRKQR4eNG3alNWrV1+3lhIlStC9e/cbvkZycvIth3MRyQPmzoUqVWDhQhg7Fk6csLoiERHJZW56cdsbb7zBCy+8wG+//eayFz99+jTp6ekEBwdn6A8ODmbXrl2Z3rNixQq++OILYmNjb+o1Ro4cyRtvvHGrpYpIbpWYCK+8AhMmmO2qVc0FbP/6viIiInLTwffyAW+NGjXKtmJu5Pz583Tp0oWJEydSrFixm7pn0KBBREdHO9oJCQmEh4dnV4kikpM2boSOHWH3brP9yivw9tvg42NtXSIikis5tZ2ZzWZz6YsXK1YMT09PTvzrR5InTpwgJCTkquv37dvHwYMHadmypaPPbrcDUKBAAXbv3k25cuUy3OPj44OP/icokv9cuAAPPghnzkBYGEyZAv+YNiUiIvJvTgXfChUq3DD8njlz5qafz9vbm1q1arFkyRLHlmR2u50lS5bQu3fvq66/88472bp1a4a+oUOHcv78eT788EON5Iq4k0KFYPRomDPHPIZYJ7CJiMgNOBV833jjjatObrtV0dHRREVFUbt2berWrcuYMWO4ePEi3bp1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eaemphqvv/66Ua5cOcPX19cIDw83evbsaZw9ezbnCxen/fbbb5n+//jyZxwVFWU0atToqnuqV69ueHt7G2XLljUmTZrk9OvaDEM/DxARERGR/C9fzfEVEREREbkWBV8RERERcQsKviIiIiLiFhR8RURERMQtKPiKiIiIiFtQ8BURERERt6DgKyIiIiJuQcFXRERERNyCgq+ICDB58mQKFy5sdRlZZrPZmD179nWvefrpp2ndunWO1CMikhsp+IpIvvH0009js9mueuzdu9fq0pg8ebKjHg8PD0qVKkW3bt04efKkS57/+PHjtGjRAoCDBw9is9mIjY3NcM2HH37I5MmTXfJ61/L666873qenpyfh4eE899xznDlzxqnnUUgXkexQwOoCRERcqXnz5kyaNClDX/HixS2qJqPAwEB2796N3W5n8+bNdOvWjWPHjrFo0aJbfu6QkJAbXhMUFHTLr3Mz7r77bn799VfS09PZuXMnzzzzDPHx8cycOTNHXl9E5Fo04isi+YqPjw8hISEZHp6enrz//vtUqVKFggULEh4eTs+ePblw4cI1n2fz5s00btyYgIAAAgMDqVWrFuvXr3d8fcWKFTRs2BA/Pz/Cw8N56aWXuHjx4nVrs9lshISEEBYWRosWLXjppZf49ddfuXTpEna7neHDh1OqVCl8fHyoXr06CxcudNybkpJC7969CQ0NxdfXl9tvv52RI0dmeO7LUx3KlCkDQI0aNbDZbNx///1AxlHUzz77jLCwMOx2e4YaW7VqxTPPPONo//TTT9SsWRNfX1/Kli3LG2+8QVpa2nXfZ4ECBQgJCaFkyZI0bdqUJ598ksWLFzu+np6eTvfu3SlTpgx+fn5UrFiRDz/80PH1119/nSlTpvDTTz85Ro+XLVsGwOHDh2nXrh2FCxemaNGitGrVioMHD163HhGRyxR8RcQteHh48NFHH7F9+3amTJnC0qVLGTBgwDWv79SpE6VKleLPP/9kw4YNDBw4EC8vLwD27dtH8+bNefzxx9myZQszZ85kxYoV9O7d26ma/Pz8sNvtpKWl8eGHHzJ69Gjee+89tmzZQrNmzXjsscf466+/APjoo4+YM2cO3377Lbt372batGlERERk+rzr1q0D4Ndff+X48eP88MMPV13z5JNP8vfff/Pbb785+s6cOcPChQvp1KkTAH/88Qddu3alb9++7Nixg08//ZTJkyfz9ttv3/R7PHjwIIsWLcLb29vRZ7fbKVWqFLNmzWLHjh0MGzaMwYMH8+233wLQv39/2rVrR/PmzTl+/DjHjx+nfv36pKam0qxZMwICAvjjjz9YuXIlhQoVonnz5qSkpNx0TSLixgwRkXwiKirK8PT0NAoWLOh4PPHEE5leO2vWLOO2225ztCdNmmQEBQU52gEBAcbkyZMzvbd79+7Gc889l6Hvjz/+MDw8PIxLly5les+/n3/Pnj1GhQoVjNq1axuGYRhhYWHG22+/neGeOnXqGD179jQMwzD69OljNGnSxLDb7Zk+P2D8+OOPhmEYxoEDBwzA2LRpU4ZroqKijFatWjnarVq1Mp555hlH+9NPPzXCwsKM9PR0wzAM44EHHjBGjBiR4TmmTp1qhIaGZlqDYRhGTEyM4eHhYRQsWNDw9fU1AAMw3n///WveYxiG0atXL+Pxxx+/Zq2XX7tixYoZ/gySk5MNPz8/Y9GiRdd9fhERwzAMzfEVkXylcePGfPLJJ452wYIFAXP0c+TIkezatYuEhATS0tJISkoiMTERf3//q54nOjqaZ599lqlTpzp+XF+uXDnAnAaxZcsWpk2b5rjeMAzsdjsHDhygUqVKmdYWHx9PoUKFsNvtJCUlce+99/L555+TkJDAsWPHaNCgQYbrGzRowObNmwFzmsKDDz5IxYoVad68OY8++igPPfTQLf1ZderUiR49ejB+/Hh8fHyYNm0aTz31FB4eHo73uXLlygwjvOnp6df9cwOoWLEic+bMISkpia+//prY2Fj69OmT4Zpx48bx5ZdfcujQIS5dukRKSgrVq1e/br2bN29m7969BAQEZOhPSkpi3759WfgTEBF3o+ArIvlKwYIFueOOOzL0HTx4kEcffZQXX3yRt99+m6JFi7JixQq6d+9OSkpKpgHu9ddfp2PHjsyfP5+ff/6ZmJgYZsyYQZs2bbhw4QLPP/88L7300lX3lS5d+pq1BQQEsHHjRjw8PAgNDcXPzw+AhISEG76vmjVrcuDAAX7++Wd+/fVX2rVrR9OmTfnuu+9ueO+1tGzZEsMwmD9/PnXq1OGPP/7ggw8+cHz9woULvPHGG7Rt2/aqe319fa/5vN7e3o7P4J133uGRRx7hjTfe4M033wRgxowZ9O/fn9GjR1OvXj0CAgIYNWoUa9euvW69Fy5coFatWhn+wXFZblnAKCK5m4KviOR7GzZswG63M3r0aMdo5uX5pNdToUIFKlSoQL9+/ejQoQOTJk2iTZs21KxZkx07dlwVsG/Ew8Mj03sCAwMJCwtj5cqVNGrUyNG/cuVK6tatm+G69u3b0759e5544gmaN2/OmTNnKFq0aIbnuzyfNj09/br1+Pr60rZtW6ZNm8bevXupWLEiNWvWdHy9Zs2a7N692+n3+W9Dhw6lSZMmvPjii473Wb9+fXr27Om45t8jtt7e3lfVX7NmTWbOnEmJEiUIDAy8pZpExD1pcZuI5Ht33HEHqampjB07lv379zN16lQmTJhwzesvXbpE7969WbZsGf/73/9YuXIlf/75p2MKw6uvvsqqVavo3bs3sbGx/PXXX/z0009OL277p//85z/897//ZebMmezevZuBAwcSGxtL3759AXj//ff55ptv2LVrF3v27GHWrFmEhIRkeuhGiRIl8PPzY+HChZw4cYL4+Phrvm6nTp2YP38+X375pWNR22XDhg3jq6++4o033mD79u3s3LmTGTNmMHToUKfeW7169ahatSojRowAoHz58qxfv55FixaxZ88eXnvtNf78888M90RERLBlyxZ2797N6dOnSU1NpVOnThQrVoxWrVrxxx9/cODAAZYtW8ZLL73EkSNHnKpJRNyTgq+I5HvVqlXj/fff57///S+VK1dm2rRpGbYC+zdPT0/+/vtvunbtSoUKFWjXrh0tWrTgjTfeAKBq1aosX76cPXv20LBhQ2rUqMGwYcMICwvLco0vvfQS0dHRvPLKK1SpUoWFCxcyZ84cypcvD5jTJN59911q165NnTp1OHjwIAsWLHCMYP9TgQIF+Oijj/j0008JCwujVatW13zdJk2aULRoUXbv3k3Hjh0zfK1Zs2bMmzePX375hTp16nDPPffwwQcfcPvttzv9/vr168fnn3/O4cOHef7552nbti3t27cnMjKSv//+O8PoL0CPHj2oWLEitWvXpnjx4qxcuRJ/f39+//13SpcuTdu2balUqRLdu3cnKSlJI8AiclNshmEYVhchIiIiIpLdNOIrIiIiIm5BwVdERERE3IKCr4iIiIi4BQVfEREREXELCr4iIiIi4hYUfEVERETELSj4ioiIiIhbUPAVEREREbeg4CsiIiIibkHBV0RERETcgoKviIiIiLiF/wMtqA1eR0oH2QAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import roc_curve, auc\n",
    "# Calculate the false positive rate (FPR), true positive rate (TPR), and thresholds\n",
    "fpr, tpr, thresholds = roc_curve(y_test, y_proba)\n",
    "\n",
    "# Calculate the area under the ROC curve (AUC)\n",
    "roc_auc = auc(fpr, tpr)\n",
    "\n",
    "# Plot the ROC curve\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(fpr, tpr, color='blue', label='ROC curve (area = %0.2f)' % roc_auc)\n",
    "plt.plot([0, 1], [0, 1], color='red', linestyle='--')\n",
    "plt.xlim([0.0, 1.0])\n",
    "plt.ylim([0.0, 1.05])\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.title('SVM')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "d67d1765",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAIjCAYAAADlfxjoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB4jklEQVR4nO3deZyN5f/H8deZMatZ7AyGsWQp+xqyplBJFEJMKi2WyiTZMqXQNyklUiokIq2WIinKlixDCNkijCXMYIwZc67fH/dvTk0zmBln5p7l/Xw8zoP7OvfyOedY3nOd674uhzHGICIiIiKSx3nYXYCIiIiISHZQ8BURERGRfEHBV0RERETyBQVfEREREckXFHxFREREJF9Q8BURERGRfEHBV0RERETyBQVfEREREckXFHxFREREJF9Q8BURyeOOHz/OfffdR9GiRXE4HEyaNMnukq7LypUrcTgcrFy5MsPHHjx4EIfDwcyZM91el4jkfAq+IjnQb7/9xn333Uf58uXx9fWlTJky3HbbbUyePBmAzZs343A4GDVq1BXP8ccff+BwOIiIiADghRdewOFw4OHhweHDh1PtHxsbi5+fHw6Hg4EDB7r19bRq1QqHw+F6+Pn5UatWLSZNmoTT6UzzmL///ptnn32WqlWr4uvrS5EiRWjXrh2LFy++4nViY2N58cUXqV27NgEBAfj5+VGjRg2ee+45jh49mq5a9+3bx2OPPUbFihXx9fUlKCiIZs2a8eabb3Lx4sVMvX67DR48mGXLljF8+HBmz55N+/bts+Q6Dz74YIrP+UqPBx98MEuun9MlB/bkh4+PDyVLlqRVq1aMGzeOkydPZvrcO3fu5IUXXuDgwYPuK1gkDypgdwEiktLatWtp3bo15cqVo1+/fpQqVYrDhw+zfv163nzzTQYNGkS9evWoVq0an3zyCS+//HKa55k7dy4ADzzwQIp2Hx8fPvnkE4YOHZqi/YsvvsiaF/T/ypYty/jx4wE4deoUc+fOZfDgwZw8eZKxY8em2Hf37t3ceuutnDx5kr59+9KgQQPOnj3LnDlz6NixI0OGDGHChAkpjtm/fz9t27bl0KFDdO3alUcffRRvb2+2bdvGBx98wJdffsmePXuuWuOSJUvo2rUrPj4+9OnThxo1apCQkMDq1at59tln2bFjB++9955735hs8MMPP9CpUyeGDBmSpdd57LHHaNu2rWv7wIEDjB49mkcffZTmzZu72itVqnRd12nRogUXL17E29s7w8eWL1+eixcv4uXldV01XI8nn3yShg0bkpSUxMmTJ1m7di2RkZG8/vrrfPrpp7Rp0ybD59y5cycvvvgirVq1IiwszP1Fi+QVRkRylDvuuMMUL17cnDlzJtVzx48fd/3+pZdeMoBZt25dmuepWrWqqVatmms7MjLSAKZLly6mTp06qfa/7bbbzL333msAM2DAgOt/If/SsmVLc9NNN6Vou3jxoilfvrwJDAw0ly9fdrUnJCSYGjVqGH9/f7N+/foUx1y+fNl0797dAGbevHmu9sTERFO7dm3j7+9vfv7551TXj4mJMSNGjLhqjfv37zcBAQGmWrVq5ujRo6me/+OPP8ykSZPS9Xqv5fz58245T3o5HA63fqYXL140SUlJ19zv119/NYCZMWPGVffL7vfDLj/++KMBzIIFC1I9FxUVZUqUKGEKFSqU5p+/a1mwYIEBzI8//uiGSkXyLg11EMlh9u3bx0033UShQoVSPVeiRAnX73v16gX807P7b5s2bWL37t2uff6tZ8+eREVFsWvXLldbdHQ0P/zwAz179nTDK0gfX19fGjZsyLlz5zhx4oSr/fPPP2f79u0MGzaMxo0bpzjG09OTd999l0KFCvHCCy+kOGbr1q2MHDmSW265JdW1goKCUvUq/9err77K+fPn+eCDDwgJCUn1fOXKlXnqqaeAq48TdTgcKWpLHmKyc+dOevbsSeHChbnlllt47bXXcDgc/Pnnn6nOMXz4cLy9vTlz5oyr7ZdffqF9+/YEBwfj7+9Py5YtWbNmzVVf08yZM3E4HBhjmDJliusr9mT79++na9euFClSBH9/f26++WaWLFmS4hzJX8/PmzePUaNGUaZMGfz9/YmNjb3qta9V06pVq+jfvz8lSpSgbNmyAPz555/079+fqlWr4ufnR9GiRenatWuqr+/TGuPbqlUratSowc6dO2ndujX+/v6UKVOGV199NcWxaX12Dz74IAEBARw5coR77rmHgIAAihcvzpAhQ0hKSkpx/N9//03v3r0JCgqiUKFChIeHs3Xr1useN1y7dm0mTZrE2bNnefvtt13t6XlPZs6cSdeuXQFo3bq163NOfn++/vpr7rzzTkqXLo2Pjw+VKlXipZdeSvXaRPIDBV+RHKZ8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po/NTomJiezZs4caNWq42q73PTl79iwtW7YkKCiIMWPGUKlSJXx9fdm8eTPPPfdcpr4tEMnNFHxFcokGDRoAcOzYsRTtd999N4GBgcydOxcvLy/OnDlz1WEOyXr27Mno0aM5duyY64an9Jo4cWKKnrDSpUtn6HiAWrVq8cADD/Duu+8yZMgQV8i96667+OSTT/joo4/SXKAjNjaWr7/+mmrVqrl62pJvOPr4448ZPnx4hmtJvu57773HunXraNKkyVX3Tb7p7OzZsyna05qh4Vq6d+9O//792b17N/Pnz8ff35+OHTu6nk+e8zYoKCjFDw7Xq3z58uzevTtVe/JX3+XLl3fbtdLrs88+Izw8nIkTJ7ra4uPjU73Pdilfvjw//vgjcXFxKXp9k2+yvF6fffYZFy9epF27dina0vOeXOmHsZUrV/L333/zxRdf0KJFC1f7gQMH3FKzSG6joQ4iOcyPP/6YZg/VN998A5Dq62k/Pz86d+7MN998wzvvvEPBggVd40OvplKlSkyaNInx48fTqFGjDNVYv3592rZt63ok97xm1NChQ0lMTOT11193td13333ceOONvPLKK2zcuDHF/k6nkyeeeIIzZ86k6PW+7777qFmzJmPHjmXdunWprnPu3DlGjhx5zVoKFizII488wvHjx1M9v2/fPt58803ACqHFihXjp59+SrHP1KlTr/2i/+Pee+/F09OTTz75hAULFnDXXXdRsGBB1/P169enUqVKvPbaa5w/fz7V8Zld7euOO+5gw4YNKd6vCxcu8N577xEWFpbpz/R6eHp6pvqzP3ny5Bwz7Va7du1ITExk+vTprjan08mUKVOu+9xbt27l6aefpnDhwinGDKf3PUn+M/PfQJzck/3vcyQkJGTqz6pIXqAeX5EcZtCgQcTFxdG5c2eqVatGQkICa9euZf78+YSFhdG3b99UxzzwwAN89NFHLFu2jF69eqUITleTPC+tXW688UbuuOMO3n//fZ5//nmKFi2Kt7c3n332Gbfeeiu33HJLipXb5s6dy+bNm3nmmWe4//77Xefx8vLiiy++oG3btrRo0YJu3brRrFkzvLy82LFjB3PnzqVw4cJXncu3UqVKzJ07l+7du1O9evUUK7etXbuWBQsWpFhq95FHHuGVV17hkUceoUGDBvz000/XXBkuLSVKlKB169a8/vrrnDt3ju7du6d43sPDg/fff58OHTpw00030bdvX8qUKcORI0f48ccfCQoKck0BlxHDhg3jk08+oUOHDjz55JMUKVKEWbNmceDAAT7//PMMDX1xl7vuuovZs2cTHBzMjTfeyLp16/j+++8pWrRotteSlnvuuYdGjRrxzDPPsHfvXqpVq8bChQs5ffo0cOVe1//6+eefiY+PJykpib///ps1a9awcOFCgoOD+fLLLylVqpRr3/S+J3Xq1MHT05P//e9/xMTE4OPjQ5s2bWjatCmFCxcmPDycJ598EofDwezZs9M1/EMkT7JxRgkRScO3335rHnroIVOtWjUTEBBgvL29TeXKlc2gQYNSrNz2b5cvXzYhISEGMN98802a+/x7OrOrIZtWbku2cuXKVFOAGWPMiRMnTEREhKlcubLx8fExhQoVMm3btnVNYZaWM2fOmNGjR5uaNWsaf39/4+vra2rUqGGGDx9ujh07lq5a9+zZY/r162fCwsKMt7e3CQwMNM2aNTOTJ09OMfVTXFycefjhh01wcLAJDAw03bp1MydOnLjidGZXe9+nT59uABMYGGguXryY5j5btmwxXbp0MUWLFjU+Pj6mfPnyplu3bmbFihXXfE1X+kz37dtn7rvvPlOoUCHj6+trGjVqZBYvXpxin/RMwXUlV5vO7Ndff021/5kzZ0zfvn1NsWLFTEBAgGnXrp3ZtWuXKV++vAkPD09V03+nM0vrz1h4eLgpX768a/tK05kVLFgw1bHJn92/nTx50vTs2dMEBgaa4OBg8+CDD5o1a9akWk0wLcl1Jz+8vLxM8eLFTYsWLczYsWPNiRMnMv2eGGP9OapYsaLx9PRM8f6sWbPG3HzzzcbPz8+ULl3aNUXif99DkfzAYYx+7BMREcmsr776is6dO7N69WqaNWtmdzkichUKviIiIul08eLFFDNSJCUlcfvtt7Nx40aio6PdPvuFiLiXxviKiIik06BBg7h48SJNmjTh0qVLfPHFF6xdu5Zx48Yp9IrkAurxFRERSae5c+cyceJE9u7dS3x8PJUrV+aJJ55g4MCBdpcmIumg4CsiIiIi+YLm8RURERGRfEHBV0RERETyhXx3c5vT6eTo0aMEBgame7JxEREREck+xhjOnTtH6dKl3bqgTr4LvkePHiU0NNTuMkRERETkGg4fPkzZsmXddr58F3wDAwMB640M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BpQsaW9duZR6fEVERERyKocDmjUDX1+r13fJEoXe66AeXxEREZGcJC4OoqOhYkVr+5lnrF5fjee9burxFREREckpNm+2pia7804rAAN4eCj0uomCr4iIiIjdnE549VW4+WbYtQtiYmD/frurynM01EFERETETn/9BX36wI8/WtudO1uLUxQtam9deZB6fEVERETssmAB1KplhV5/fyvwfv65Qm8WUY+viIiIiB2MgffegzNnrDl658yBKlXsripPU4+viIiISHYyxvrV4YCZM+HFF2HtWoXebKDgKyIiIpIdLl+GMWNg0KB/2sqUgdGjwcvLvrryEQ11EBEREclqBw7AAw9YPbsA4eHQsKG9NeVD6vEVERERySrGwMcfQ+3aVugNCrK2FXptoR5fERERkaxw9iw88QTMm2dtN2tmhd6wMDurytcUfEVERETczRi49VZrJTZPT3jhBRg2DAooetlJQx1ERERE3M3hgOeft5YaXrMGRo1S6M0BFHxFRERE3GHPHlix4p/te+6B7duhcWPbSpKUFHxFRERErocx1oprdetCt25w9Og/z/n42FeXpKI+dxEREZHMOnUK+vWDr76ytm++2dZy5OrU4ysiIiKSGcuXQ61aVuj18oIJE6y20qXtrkyuQD2+IiIiIhlhDAwZAq+/bm1Xrw5z5lhDHSRHU4+viIiISEY4HHDhgvX7/v1h40aF3lxCPb4iIiIi12IMnDtnrbwGMHEidOkCt99ub12SIerxFREREbma6Gi4804r6DqdVlvBggq9uZB6fEVERESuZPFieOghOHkSfH1h61YNa8jF1OMrIiIi8l9xcdb43Y4drdBbq5bG8uYBCr4iIiIi/7Z5M9SvD++8Y21HRMCGDXDTTfbWJddNQx1EREREkjmd1tCGXbsgJARmzYLbbrO7KnET9fiKiIiIJPPwgBkzrKWHf/tNoTePUfAVERGR/O2zz2DKlH+269aF+fOhaFH7apIsoaEOIiIikj+dOwdPPWX18Hp5QYsWULOm3VVJFlLwFRERkfxn/Xp44AHYt89aie3ZZ6FaNburkiym4CsiIiL5x+XLMG4cjBkDSUlQrhzMnm319kqep+ArIiIi+YPTaa229uOP1naPHjB1KhQqZGtZkn10c5uIiIjkDx4ecNddEBQEH38Mc+cq9OYzCr4iIiKSd509C7t3/7P99NOw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73ezZs3Yu3ev6wccgD179hASEqLQm8Nl5vOOi4tLFW6Tf+ix7peSvMRteS1j993lfPPmzTM+Pj5m5syZZufOnebRRx81hQoVMtHR0cYYY3r37m2GDRvm2n/NmjWmQIEC5rXXXjO///67iYyM1HRmuUhGP+9XXnnFeHt7m88++8wcO3bM9Th37pxdL0EyIKOf939pVofcJaOf96FDh0xgYKAZOHCg2b17t1m8eLEpUaKEefnll+16CZIBGf28IyMjTWBgoPnkk0/M/v37zXfffWcqVapkunXrZtdLkAw4d+6c2bJli9myZYsBzOuvv262bNli/vzzT2OMMcOGDTO9e/d27Z88ndmzzz5rfv/9dzNlyhRNZ5Zs8uTJply5csbb29s0atTIrF+/3vVcy5YtTXh4eIr9P/30U1OlShXj7e1tbrrpJrNkyZJsrliuR0Y+7/Llyxsg1SMyMjL7C5dMyejf739T8M19Mvp5r1271jRu3Nj4+PiYihUrmrFjx5rLly9nc9WSWRn5vBMTE80LL7xgKlWqZHx9fU1oaKjp37+/OXPmTPYXLhn2448/pvn/cfJnHB4eblq2bJnqmDp16hhvb29TsWJFM2PGjAxf12GMvg8QERERkbwvT43xFRERERG5EgVfEREREckXFHxFREREJF9Q8BURERGRfEHBV0RERETyBQVfEREREckXFHxFREREJF9Q8BURERGRfEHBV0QEmDlzJoUKFbK7jExzOBx89dVXV93nwQcf5J577smWekREciIFXxHJMx588EEcDkeqx969e+0ujZkzZ7rq8fDwoGzZsvTt25cTJ0645fzHjh2jQ4cOABw8eBCHw0FUVFSKfd58801mzpzplutdyQsvvOB6nZ6enoSGhvLoo49y+vTpDJ1HIV1EskIBuwsQEXGn9u3bM2PGjBRtxYsXt6malIKCgti9ezdOp5OtW7fSt29fjh49yrJly6773KVKlbrmPsHBwdd9nfS46aab+P7770lKSuL333/noYceIiYmhvnz52fL9UVErkQ9viKSp/j4+FCqVKkUD09PT15//XVq1qxJwYIFCQ0NpX///pw/f/6K59m6dSutW7cmMDCQoKAg6tevz8aNG13Pr169mubNm+Pn50doaChPPvkkFy5cuGptDoeDUqVKUbp0aTp06MCTTz7J999/z8WLF3E6nYwZM4ayZcvi4+NDnTp1WLp0qevYhIQEBg4cSEhICL6+vpQvX57x48enOHfyUIcKFSoAULduXRwOB61atQJS9qK+9957lC5dGqfTmaLGTp068dBDD7m2v/76a+rVq4evry8VK1bkxRdf5PLly1d9nQUKFKBUqVKUKVOGtm3b0rVrV5YvX+56PikpiYcffpgKFSrg5+dH1apVefPNN13Pv/DCC8yaNYuvv/7a1Xu8cuVKAA4fPky3bt0oVKgQRYoUoVOnThw8ePCq9YiIJFPwFZF8wcPDg7feeosdO3Ywa9YsfvjhB4YOHXrF/Xv16kXZsmX59ddf2bRpE8OGDcPLywuAffv20b59e+699162bdvG/PnzWb16NQMHDsxQTX5+fjidTi5fvsybb77JxIkTee2119i2bRvt2rXj7rvv5o8//gDgrbfeYuHChXz66afs3r2bOXPmEBYWluZ5N2zYAMD333/PsWPH+OKLL1Lt07VrV/7++29+/PFHV9vp06dZunQpvXr1AuDnn3+mT58+PPXUU+zcuZN3332XmTNnMnbs2HS/xoMHD7Js2TK8vb1dbU6nk7Jly7JgwQJ27tzJ6NGjGTFiBJ9++ikAQ4YMoVu3brRv355jx45x7NgxmjZtSmJiIu3atSMwMJCff/6ZNWvWEBAQQPv27UlISEh3TSKSjxkRkTwiPDzceHp6moIFC7oe9913X5r7LliwwBQtWtS1PWPGDBMcHOzaDgwMNDNnzkzz2Icfftg8+uijKdp+/vln4+HhYS5evJjmMf89/549e0yVKlVMgwYNjDHGlC5d2owdOzbFMQ0bNjT9+/c3xhgzaNAg06ZNG+N0OtM8P2C+/PJLY4wxBw4cMIDZsmVLin3Cw8NNp06dXNudOnUyDz30kGv73XffNaVLlzZJSUnGGGNuvfVWM27cuBTnmD17tgkJCUmzBmOMiYyMNB4eHqZgwYLG19fXAAYwr7/++hWPMcaYAQMGmHvvvfeKtSZfu2rVqineg0uXLhk/Pz+zbNmyq55fRMQYYzTGV0TylNatW/POO++4tgsWLAhYvZ/jx49n165dxMbGcvnyZeLj44mLi8Pf3z/VeSIiInjkkUeYPXu26+v6SpUqAdYwiG3btjFnzhzX/sYYnE4nBw4coHr16mnWFhMTQ0BAAE6nk/j4eG655Rbef/99YmNjOXr0KM2aNUuxf7Nmzdi6dStgDVO47bbbqFq1Ku3bt+euu+7i9ttvv673qlevXvTr14+pU6fi4+PDnDlzuP/++/Hw8HC9zjVr1qTo4U1KSrrq+wZQtWpVFi5cSHx8PB9//DFRUVEMGjQoxT5Tpkzhww8/5NChQ1y8eJGEhATq1Klz1Xq3bt3K3r17CQwMTNEeHx/Pvn37MvEOiEh+o+ArInlKwYIFqVy5coq2gwcPctddd/HEE08wduxYihQpwurVq3n44YdJSEhIM8C98MIL9OzZkyVLlvDtt98SGRnJvHnz6Ny5M+fPn+exxx7jySefTHVcuXLlrlhbYGAgmzdvxsPDg5CQEPz8/ACIjY295uuqV68eBw4c4Ntvv+X777+nW7dutG3bls8+++yax15Jx44dMcawZMkSGjZsyM8//8wbb7zhev78+fO8+OKLdOnSJdWxvr6+Vzyvt7e36zN45ZVXuPPOO3nxxRd56aWXAJg3bx5Dhgxh4sSJNGnShMDAQCZMmMAvv/xy1XrPnz9P/fr1U/zAkSyn3MAoIjmbgq+I5HmbNm3C6XQyceJEV29m8njSq6lSpQpVqlRh8ODB9OjRgxkzZtC5c2fq1avHzp07UwXsa/Hw8EjzmKCgIEqXLs2aNWto2bKlq33NmjU0atQoxX7du3ene/fu3HfffbRv357Tp09TpEiRFOdLHk+blJR01Xp8fX3p0qULc+bMYe/evVStWpV69eq5nq9Xrx67d+/O8Ov8r1GjRtGmTRueeOIJ1+ts2rQp/fv3d+3z3x5bb2/vVPXXq1eP+fPnU6JECYKCgq6rJhHJn3Rzm4jkeZUrVyYxMZHJkyezf/9+Zs+ezbRp0664/8WLFxk4cCArV67kzz//ZM2aNfz666+uIQzPPfcca9euZeDAgURFRfHHH3/w9ddfZ/jmtn979tln+d///sf8+fPZvXs3w4YNIyoqiqeeegqA119/nU8++YRdu3axZ88eFixYQKlSpdJcdKNEiRL4+fmxdOlSjh8/TkxMzBWv26tXL5YsWcKHH37ouqkt2ejRo/noo4948cUX2bFjB7///jvz5s1j1KhRGXptTZo0oVatWowbNw6AG264gY0bN7Js2TL27NnD888/z6+//primLCwMLZt28bu3bs5deoUiYmJ9OrVi2LFitGpUyd+/vlnDhw4wMqVK3nyySf566+/MlSTiORPCr4ikufVrl2b119/nf/973/UqFGDOXPmpJgK7L88PT35+++/6dOnD1WqVKFbt2506NCBF198EYBatWqxatUq9uzZQ/Pmzalbty6jR4+mdOnSma7xySefJCIigmeeeYaaNWuydOlSFi5cyA033ABYwyReffVVGjRoQMOGDTl48CDffPONqwf73woUKMBbb73Fu+++S+nSpenUqdMVr9umTRuKFCnC7t276dmzZ4rn2rVrx+LFi/nuu+9o2LAhN998M2+88Qbly5fP8OsbPHgw77//PocPH+axxx6jS5cudO/encaNG/P333+n6P0F6NevH1WrVqVBgwYUL16cNWvW4O/vz08//US5cuXo0qUL1atX5+GHHyY+Pl49wCKSLg5jjLG7CBERERGRrKYeXxERERHJFxR8RURERCRfUPAVERERkXxBwVdERERE8gUFXxERERHJFxR8RURERCRfUPAVERERkXxBwVdERERE8gUFXxERERHJFxR8RURERCRfUPAVERERkXzh/wCg9AmS/3YVHwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Predict probabilities for the training data\n",
    "y_train_proba = model_xgb.predict_proba(X_train)[:, 1]\n",
    "\n",
    "# Calculate the false positive rate (FPR), true positive rate (TPR), and thresholds\n",
    "fpr_train, tpr_train, thresholds_train = roc_curve(y_train, y_train_proba)\n",
    "\n",
    "# Calculate the area under the ROC curve (AUC) for training data\n",
    "roc_auc_train = auc(fpr_train, tpr_train)\n",
    "\n",
    "# Plot the ROC curve for training data\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(fpr_train, tpr_train, color='blue', label='ROC curve (area = %0.2f)' % roc_auc_train)\n",
    "plt.plot([0, 1], [0, 1], color='red', linestyle='--')\n",
    "plt.xlim([0.0, 1.0])\n",
    "plt.ylim([0.0, 1.05])\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.title('SVM - ROC Curve for Training Data')\n",
    "plt.legend(loc='lower right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "becb1b58",
   "metadata": {},
   "source": [
    "# Miscellaneous:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "b76a44fc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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MAzDaNOmjfHkk0+6v6+trTXatWvnvpdhGMa1115rTJo0yTAMwygoKDAkGevXrz9rnO+//74hyfjuu+/c+6qqqoxmzZoZW7du9Th27NixxqhRowzDMIzp06cbPXv29Ph+6tSpZ1zrxyQZb7311jm/f+qpp4y0tDT351mzZhnh4eHG4cOH3fv+9re/GWFhYcaRI0cMwzCMSy65xFi5cqXHdR599FEjPT3dMAzDKCwsNCQZn3766TnvC6DhGCNHyFq7dq1iYmJUW1srl8ulX/3qV5o9e7b7+969e3uMi3/22Wfat2+fYmNjPa5TVVWl/fv3q6ysTEeOHPFYgz0iIkKXX375Ge3103bt2qXw8HBde+219Y573759+v7773X99dd77K+pqdGll14qSdq9e/cZa8Gnp6fX+x6nvfLKK1q0aJH279+viooKnTp1SnFxcR7HpKamqm3bth73cblcKigoUGxsrPbv36+xY8dq3Lhx7mNOnTql+Ph4r+MB4D0SOULWoEGDtGTJEkVGRio5OVkREZ6/7s2bN/f4XFFRobS0NL388stnXOviiy9uUAxNmzb1+pyKigpJ0l//+lePBCrVjfv7yrZt2zR69GjNmTNHQ4YMUXx8vFatWqWnn37a61ife+65M/6wCA8P91msAM6NRI6Q1bx5c3Xu3Lnex1922WV65ZVX1Lp16zOq0tPatGmjjz76SNdcc42kusozPz9fl1122VmP7927t1wulzZu3KiMjIwzvj/dEXA6ne59PXv2VFRUlA4dOnTOSr5Hjx7uiXunbd++/cI/5H/YunWr2rdvr4cffti978svvzzjuEOHDqm4uFjJycnu+4SFhalbt25KTExUcnKyDhw4oNGjR3t1fwC+wWQ34AejR4/WRRddpOHDh2vz5s0qLCzUBx98oPvuu0+HDx+WJE2aNElPPPGEVq9erT179ujee+897zPgHTp0UFZWln7zm99o9erV7mu++uqrkqT27dvL4XBo7dq1+vrrr1VRUaHY2FhNmTJFkydP1osvvqj9+/dr586d+sMf/uCeQPa73/1Oe/fu1YMPPqiCggKtXLlSeXl5Xv28Xbp00aFDh7Rq1Srt379fixYtOuvEvejoaGVlZemzzz7T5s2bdd999+nWW29VUlKSJGnOnDnKycnRokWL9K9//Uuff/65li9frvnz53sVD4CGIZEDP2jWrJk2bdqk1NRUjRw5Uj169NDYsWNVVVXlrtAfeOAB/frXv1ZWVpbS09MVGxurW2655bzXXbJkiX7xi1/o3nvvVffu3TVu3DhVVlZKktq2bas5c+Zo2rRpSkxM1IQJEyRJjz76qGbMmKGcnBz16NFDN954o/7617+qY8eOkurGrd944w2tXr1affv21dKlS/X444979fPefPPNmjx5siZMmKB+/fpp69atmjFjxhnHde7cWSNHjtRNN92kG264QX369PF4vOyuu+7S888/r+XLl6t379669tprlZeX544VgH85jHPN0gEAAEGPihwAAAsjkQMAYGEkcgAALIxEDgCAhZHIAQCwMBI5AAAWRiIHAMDCSOQAAFgYiRwAAAsjkQMAYGEkcgAALOz/A2yWZt/CJum8AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#######CONFUSION MATRIX ###########\n",
    "from sklearn import metrics\n",
    "y_test_pred_xgb = model_xgb.predict(X_test)\n",
    "confusion_matrix_test = metrics.confusion_matrix(y_test, y_test_pred_xgb)\n",
    "cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix_test)\n",
    "cm_display.plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "416c4ba4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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SosXL9azzz6r6Oho1/gll1yiV155xafBAQDgOzYfbMHH60S+ZMkSvfzyyxo5cqQiIyNd43369NG+fft8GhwAAD5Da73eN998o86dOzcYdzqdqq2t9UlQAADAM14n8p49e2rTpk0Nxt9++23169fPJ0EBAOBzYVqRe/1kt6lTpyonJ0fffPONnE6n3n33XRUUFGjJkiVavXq1P2IEAMC8MH37mdcV+dChQ7Vq1Sr97//+r1q0aKGpU6dq7969WrVqla6//np/xAgAAM6jUc9av/LKK7V27VpfxwIAgN+E62tMG/3SlB07dmjv3r2S6ufNMzIyfBYUAAA+x9vP6n399de67bbb9PHHH6tly5aSpNLSUv3yl7/UsmXL1KFDB1/HCAAAzsPrOfK77rpLtbW12rt3r06ePKmTJ09q7969cjqduuuuu/wRIwAA5p1d7GZmC0JeV+QbNmzQJ598om7durnGunXrpt///ve68sorfRocAAC+YjPqNzPHByOvE3lqauo5H/xSV1enlJQUnwQFAIDPhekcudet9eeee07jx4/Xjh07XGM7duzQAw88oP/6r//yaXAAAOCneVSRt2rVSjbbP+YGKisrNWDAAEVF1R9+5swZRUVF6Xe/+52GDRvml0ABADAlTB8I41Einz17tp/DAADAz8K0te5RIs/JyfF3HAAAoBEa/UAYSaqqqlJNTY3bmN1uNxUQAAB+EaYVudeL3SorKzVu3Di1a9dOLVq0UKtWrdw2AACCUpi+/czrRP7www/rww8/1Lx58xQTE6NXXnlF06dPV0pKipYsWeKPGAEAwHl43VpftWqVlixZomuuuUajRo3SlVdeqc6dO6tjx456/fXXNXLkSH/ECQCAOWG6at3rivzkyZO68MILJdXPh588eVKSNHDgQG3cuNG30QEA4CNnn+xmZgtGXifyCy+8UIWFhZKk7t27680335RUX6mffYkKAABoGl4n8lGjRumzzz6TJD366KPKz89XbGysJk6cqIceesjnAQIA4BNhutjN6znyiRMnuv6clZWlffv2aefOnercubN69+7t0+AAAMBPM3UfuSR17NhRHTt29EUsAAD4jU0m337ms0h8y6NEPmfOHI9PeP/99zc6GAAAwsW8efM0b948HT58WJJ08cUXa+rUqRo8eLCk+oeqPfjgg1q2bJmqq6uVnZ2tuXPn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fPPNatmypRITEzV06FAdPnzYdc66ujrl5uaqZcuWat26tR5++GH9+HUFP26tV1dX65FHHlFqaqpiYmLUuXNnLVy4UIcPH3a9qKNVq1ay2Wy68847JdW/JjYvL0/p6emKi4tTnz599Pbbb7td5/3331fXrl0VFxenQYMGucXpqUceeURdu3ZV8+bNdeGFF2rKlCmqra1tsN9LL72k1NRUNW/eXDfffLPKysrcvn/llVfUo0cPxcbGqnv37po7d67XsQBoHBI5LCMuLk41NTWuz+vWrVNBQYHWrl2r1atXq7a2VtnZ2UpISNCmTZv08ccfKz4+XjfeeKPruOeff16LFy/Wq6++qs2bN+vkyZNavnz5T173jjvu0P/8z/9ozpw52rt3r1566SXFx8crNTVV77zzjiSpoKBAx44d04svvihJysvL05IlSzR//nz99a9/1cSJE3X77bdrw4YNkur/wTF8+HANGTJEe/bs0V133aVHH33U6/9NEhIStHjxYn355Zd68cUXtWDBAs2aNcttnwMHDujNN9/UqlWrtGbNGu3evVv33Xef6/vXX39dU6dO1VNPPaW9e/fq6aef1pQpU/Taa695HQ+ARjCAMJSTk2MMHTrUMAzDcDqdxtq1a42YmBhj0qRJru+TkpKM6upq1zF//OMfjW7duhlOp9M1Vl1dbcTFxRkffPCBYRiG0b59e+PZZ591fV9bW2t06NDBdS3DMIyrr77aeOCBBwzDMIyCggJDkrF27dpzxvnRRx8ZkoxTp065xqqqqozmzZsbn3zyidu+o0ePNm677TbDMAxj8uTJRs+ePd2+f+SRRxqc68ckGcuXLz/v988995yRkZHh+jxt2jQjMjLS+Prrr11jf/7zn42IiAjj2LFjhmEYxkUXXWQsXbrU7TxPPvmkkZmZaRiGYRQWFhqSjN27d5/3ugAajzlyhK3Vq1crPj5etbW1cjqd+rd/+zc98cQTru979erlNi/+2Wef6cCBA0pISHA7T1VVlQ4ePKiysjIdO3bM7R3sUVFR6t+/f4P2+ll79uxRZGSkrr76ao/jPnDggL7//ntdf/31buM1NTXq16+fJGnv3r0N3gWfmZnp8TXOeuONNzRnzhwdPHhQFRUVOnPmjOx2u9s+aWlpuuCCC9yu43Q6VVBQoISEBB08eFCjR4/WmDFjXPucOXNGDofD63gAeI9EjrA1aNAgzZs3T9HR0UpJSVFUlPuve4sWLdw+V1RUKCMjQ6+//nqDc7Vt27ZRMcTFxXl9TEVFhSTpvffec0ugUv28v69s2bJFI0eO1PTp05WdnS2Hw6Fly5bp+eef9zrWBQsWNPiHRWRkpM9iBXB+JHKErRYtWqhz584e73/ppZfqjTfeULt27RpUpWe1b99e27Zt01VXXSWpvvLcuXOnLr300nPu36tXLzmdTm3YsEFZWVkNvj/bEairq3ON9ezZUzExMTpy5Mh5K/kePXq4Fu6dtXXr1p//If/JJ598oo4dO+qxxx5zjf3tb39rsN+RI0d09OhRpaSkuK4TERGhbt26KSkpSSkpKTp06JBGjhzp1fUB+AaL3YC/GzlypNq0aaOhQ4dq06ZNKiws1Pr163X//ffr66+/liQ98MADeuaZZ7RixQrt27dP991330/eA96pUyfl5OTod7/7nVasWOE655tvvilJ6tixo2w2m1avXq0TJ06ooqJCCQkJmjRpkiZOnKjXXntNBw8e1K5du/T73//etYDsnnvu0f79+/XQQw+poKBAS5cu1eLFi736ebt06aIjR45o2bJlOnjwoObMmXPOhXuxsbHKycnRZ599pk2bNun+++/XzTffrOTkZEnS9OnTlZeXpzlz5uirr77S559/rkWLFumFF17wKh4AjUMiB/6uefPm2rhxo9LS0jR8+HD16NFDo0ePVlVVlatCf/DBB/Xv//7vysnJUWZmphISEvSb3/zmJ887b948/fa3v9V9992n7t27a8yYMaqsrJQkXXDBBZo+fboeffRRJSUlady4cZKkJ598UlOmTFFeXp569OihG2+8Ue+9957S09Ml1c9bv/POO1qxYoX69Omj+fPn6+mnn/bq573ppps0ceJEjRs3Tn379tUnn3yiKVOmNNivc+fOGj58uH71q1/phhtuUO/evd1uL7vrrrv0yiuvaNGiRerVq5euvvpqLV682BUrAP+yGedbpQMAAIIeFTkAACGMRA4AQAgjkQMAEMJI5AAAhDASOQAAIYxEDgBACCORAwAQwkjkAACEMBI5AAAhjEQOAEAII5EDABDC/j8sNaowBkcxmQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#######CONFUSION MATRIX ###########\n",
    "y_train_pred_xgb = model_xgb.predict(X_train)\n",
    "confusion_matrix_train = metrics.confusion_matrix(y_train, y_train_pred_xgb)\n",
    "cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix_train)\n",
    "cm_display.plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "8cacb3f2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy :  0.9831932773109243\n",
      "Sensitivity :  1.0\n",
      "Specificity :  0.9672131147540983\n"
     ]
    }
   ],
   "source": [
    "total1=sum(sum(confusion_matrix_test))\n",
    "#####from confusion matrix calculate accuracy\n",
    "accuracy1=(confusion_matrix_test[0,0]+confusion_matrix_test[1,1])/total1\n",
    "print ('Accuracy : ', accuracy1)\n",
    "\n",
    "sensitivity1 = confusion_matrix_test[0,0]/(confusion_matrix_test[0,0]+confusion_matrix_test[0,1])\n",
    "print('Sensitivity : ', sensitivity1 )\n",
    "\n",
    "specificity1 = confusion_matrix_test[1,1]/(confusion_matrix_test[1,0]+confusion_matrix_test[1,1])\n",
    "print('Specificity : ', specificity1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bee03388",
   "metadata": {},
   "source": [
    "# Feature importance"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "6688e037",
   "metadata": {},
   "outputs": [],
   "source": [
    "# for important features:\n",
    "important_feat = model_xgb.coef_[0]\n",
    "#get indices of those important features\n",
    "idx = important_feat.argsort(kind= \"quicksort\")\n",
    "idx= idx[::-1][:50]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "4e6a7ea1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([140,  32,  84,  17, 169, 208,  29,  89,  83, 215, 113, 212, 170,\n",
       "        85,  94, 103,  10,  75,  52,  49, 126, 228,  65,  62, 123,  66,\n",
       "        74,  53,  87, 158, 200, 160,  57,  44,  86,  27,  61,  63, 150,\n",
       "        56,   5,  33, 202,  88, 229,   6,   9,  97, 196,  90])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "idx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "f2101fe1",
   "metadata": {},
   "outputs": [],
   "source": [
    "df1 = X.T"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "2cbf1166",
   "metadata": {},
   "outputs": [],
   "source": [
    "top_met = df1.iloc[idx]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "2370b2df",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['hsa-miR-424-5p', 'hsa-miR-130b-3p', 'hsa-miR-21-5p', 'hsa-miR-1246',\n",
       "       'hsa-miR-455-3p', 'hsa-miR-7-5p', 'hsa-miR-1290', 'hsa-miR-224-5p',\n",
       "       'hsa-miR-21-3p', 'hsa-miR-96-5p', 'hsa-miR-3198', 'hsa-miR-93-5p',\n",
       "       'hsa-miR-455-5p', 'hsa-miR-214-3p', 'hsa-miR-25-3p', 'hsa-miR-301a-3p',\n",
       "       'hsa-miR-106b-5p', 'hsa-miR-199a-5p', 'hsa-miR-152', 'hsa-miR-151a-3p',\n",
       "       'hsa-miR-3651', 'miRNABrightCorner30', 'hsa-miR-18a-5p',\n",
       "       'hsa-miR-181b-5p', 'hsa-miR-34b-5p', 'hsa-miR-18b-5p',\n",
       "       'hsa-miR-199a-3p', 'hsa-miR-155-5p', 'hsa-miR-22-5p', 'hsa-miR-4449',\n",
       "       'hsa-miR-630', 'hsa-miR-4465', 'hsa-miR-16-2-3p', 'hsa-miR-146b-5p',\n",
       "       'hsa-miR-22-3p', 'hsa-miR-128', 'hsa-miR-181a-5p', 'hsa-miR-185-5p',\n",
       "       'hsa-miR-4306', 'hsa-miR-15b-5p', 'hsa-let-7d-5p', 'hsa-miR-132-3p',\n",
       "       'hsa-miR-642a-3p', 'hsa-miR-223-3p', 'mr_1', 'hsa-let-7i-5p',\n",
       "       'hsa-miR-103a-3p', 'hsa-miR-27a-3p', 'hsa-miR-574-5p',\n",
       "       'hsa-miR-23a-3p'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top_met.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "68160fc3",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cbad7af5",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d23c932b",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}