Spaces:
Configuration error
Configuration error
File size: 154,125 Bytes
97e3689 |
1 2 3 4 5 6 7 8 9 10 11 12 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 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 |
{
"cells": [
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import pickle\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from sklearn.metrics import precision_score, accuracy_score, f1_score, recall_score, confusion_matrix\n",
"\n",
"from yellowbrick.classifier import ROCAUC\n",
"\n",
"from keras.utils.np_utils import to_categorical\n",
"\n",
"import warnings\n",
"warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Set ups"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.1. Load models & scaler"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"# Load all sklearn models\n",
"with open(\"./model/all_sklearn.pkl\", \"rb\") as f:\n",
" sklearn_models = pickle.load(f)\n",
"\n",
"# Load all deep learning models\n",
"with open(\"./model/all_dp.pkl\", \"rb\") as f:\n",
" dp_models = pickle.load(f)\n",
"\n",
"# Load input scaler\n",
"with open(\"./model/input_scaler.pkl\", \"rb\") as f:\n",
" sc = pickle.load(f)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 1.2. Important functions"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"def describe_dataset(dataset_path: str):\n",
" '''\n",
" Describe dataset\n",
" '''\n",
"\n",
" data = pd.read_csv(dataset_path)\n",
" print(f\"Headers: {list(data.columns.values)}\")\n",
" print(f'Number of rows: {data.shape[0]} \\nNumber of columns: {data.shape[1]}\\n')\n",
" print(f\"Labels: \\n{data['label'].value_counts()}\\n\")\n",
" print(f\"Missing values: {data.isnull().values.any()}\\n\")\n",
" \n",
" duplicate = data[data.duplicated()]\n",
" print(f\"Duplicate Rows : {len(duplicate.sum(axis=1))}\")\n",
"\n",
" return data\n",
"\n",
"\n",
"def round_up_metric_results(results) -> list:\n",
" '''Round up metrics results such as precision score, recall score, ...'''\n",
" return list(map(lambda el: round(el, 3), results))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Process Test set"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Headers: ['label', 'nose_x', 'nose_y', 'nose_z', 'nose_v', 'left_shoulder_x', 'left_shoulder_y', 'left_shoulder_z', 'left_shoulder_v', 'right_shoulder_x', 'right_shoulder_y', 'right_shoulder_z', 'right_shoulder_v', 'left_elbow_x', 'left_elbow_y', 'left_elbow_z', 'left_elbow_v', 'right_elbow_x', 'right_elbow_y', 'right_elbow_z', 'right_elbow_v', 'left_wrist_x', 'left_wrist_y', 'left_wrist_z', 'left_wrist_v', 'right_wrist_x', 'right_wrist_y', 'right_wrist_z', 'right_wrist_v', 'left_hip_x', 'left_hip_y', 'left_hip_z', 'left_hip_v', 'right_hip_x', 'right_hip_y', 'right_hip_z', 'right_hip_v', 'left_knee_x', 'left_knee_y', 'left_knee_z', 'left_knee_v', 'right_knee_x', 'right_knee_y', 'right_knee_z', 'right_knee_v', 'left_ankle_x', 'left_ankle_y', 'left_ankle_z', 'left_ankle_v', 'right_ankle_x', 'right_ankle_y', 'right_ankle_z', 'right_ankle_v', 'left_heel_x', 'left_heel_y', 'left_heel_z', 'left_heel_v', 'right_heel_x', 'right_heel_y', 'right_heel_z', 'right_heel_v', 'left_foot_index_x', 'left_foot_index_y', 'left_foot_index_z', 'left_foot_index_v', 'right_foot_index_x', 'right_foot_index_y', 'right_foot_index_z', 'right_foot_index_v']\n",
"Number of rows: 710 \n",
"Number of columns: 69\n",
"\n",
"Labels: \n",
"H 241\n",
"L 235\n",
"C 234\n",
"Name: label, dtype: int64\n",
"\n",
"Missing values: False\n",
"\n",
"Duplicate Rows : 0\n"
]
}
],
"source": [
"# load dataset\n",
"test_df = describe_dataset(\"./test.csv\")\n",
"\n",
"# Categorizing label\n",
"test_df.loc[test_df[\"label\"] == \"C\", \"label\"] = 0\n",
"test_df.loc[test_df[\"label\"] == \"H\", \"label\"] = 1\n",
"test_df.loc[test_df[\"label\"] == \"L\", \"label\"] = 2\n",
"\n",
"# Standard Scaling of features\n",
"test_x = test_df.drop(\"label\", axis = 1)\n",
"test_x = pd.DataFrame(sc.transform(test_x))\n",
"\n",
"test_y = test_df[\"label\"].astype('int')\n",
"\n",
"# # Converting prediction to categorical\n",
"test_y_cat = to_categorical(test_y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Test set evaluation for all models"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.1. Sklearn models evaluation"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Model</th>\n",
" <th>Precision Score</th>\n",
" <th>Recall Score</th>\n",
" <th>Accuracy Score</th>\n",
" <th>F1 Score</th>\n",
" <th>Confusion Matrix</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>LR</td>\n",
" <td>0.995828</td>\n",
" <td>0.995775</td>\n",
" <td>0.995775</td>\n",
" <td>0.995781</td>\n",
" <td>[[234, 0, 0], [1, 240, 0], [2, 0, 233]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>SVC</td>\n",
" <td>0.987793</td>\n",
" <td>0.987324</td>\n",
" <td>0.987324</td>\n",
" <td>0.987363</td>\n",
" <td>[[234, 0, 0], [2, 239, 0], [7, 0, 228]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>KNN</td>\n",
" <td>0.955544</td>\n",
" <td>0.949296</td>\n",
" <td>0.949296</td>\n",
" <td>0.949254</td>\n",
" <td>[[233, 1, 0], [2, 239, 0], [33, 0, 202]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>DTC</td>\n",
" <td>0.773783</td>\n",
" <td>0.767606</td>\n",
" <td>0.767606</td>\n",
" <td>0.765410</td>\n",
" <td>[[127, 0, 107], [2, 238, 1], [55, 0, 180]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>SGDC</td>\n",
" <td>0.981748</td>\n",
" <td>0.981690</td>\n",
" <td>0.981690</td>\n",
" <td>0.981707</td>\n",
" <td>[[228, 6, 0], [3, 237, 1], [3, 0, 232]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>NB</td>\n",
" <td>0.856763</td>\n",
" <td>0.842254</td>\n",
" <td>0.842254</td>\n",
" <td>0.838005</td>\n",
" <td>[[148, 73, 13], [14, 227, 0], [4, 8, 223]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>RF</td>\n",
" <td>0.922452</td>\n",
" <td>0.898592</td>\n",
" <td>0.898592</td>\n",
" <td>0.896179</td>\n",
" <td>[[234, 0, 0], [0, 241, 0], [72, 0, 163]]</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Model Precision Score Recall Score Accuracy Score F1 Score \\\n",
"0 LR 0.995828 0.995775 0.995775 0.995781 \n",
"1 SVC 0.987793 0.987324 0.987324 0.987363 \n",
"2 KNN 0.955544 0.949296 0.949296 0.949254 \n",
"3 DTC 0.773783 0.767606 0.767606 0.765410 \n",
"4 SGDC 0.981748 0.981690 0.981690 0.981707 \n",
"5 NB 0.856763 0.842254 0.842254 0.838005 \n",
"6 RF 0.922452 0.898592 0.898592 0.896179 \n",
"\n",
" Confusion Matrix \n",
"0 [[234, 0, 0], [1, 240, 0], [2, 0, 233]] \n",
"1 [[234, 0, 0], [2, 239, 0], [7, 0, 228]] \n",
"2 [[233, 1, 0], [2, 239, 0], [33, 0, 202]] \n",
"3 [[127, 0, 107], [2, 238, 1], [55, 0, 180]] \n",
"4 [[228, 6, 0], [3, 237, 1], [3, 0, 232]] \n",
"5 [[148, 73, 13], [14, 227, 0], [4, 8, 223]] \n",
"6 [[234, 0, 0], [0, 241, 0], [72, 0, 163]] "
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"testset_final_results = []\n",
"\n",
"for name, model in sklearn_models.items():\n",
" # Evaluate model\n",
" model_results = model.predict(test_x)\n",
"\n",
" p_score = precision_score(test_y, model_results, average=\"weighted\")\n",
" a_score = accuracy_score(test_y, model_results)\n",
" r_score = recall_score(test_y, model_results, average=\"weighted\")\n",
" f1_score_result = f1_score(test_y, model_results, average=\"weighted\")\n",
" cm = confusion_matrix(test_y, model_results, labels=[0, 1, 2])\n",
" testset_final_results.append(( name, p_score, r_score, a_score, f1_score_result, cm ))\n",
"\n",
"\n",
"sklearn_eval = pd.DataFrame(testset_final_results, columns=[\"Model\", \"Precision Score\", \"Recall Score\", \"Accuracy Score\", \"F1 Score\", \"Confusion Matrix\"])\n",
"\n",
"sklearn_eval"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2. Deep learning models"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-11-28 10:56:43.727144: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:113] Plugin optimizer for device_type GPU is enabled.\n",
"2022-11-28 10:56:43.847788: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:113] Plugin optimizer for device_type GPU is enabled.\n",
"2022-11-28 10:56:43.976589: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:113] Plugin optimizer for device_type GPU is enabled.\n",
"2022-11-28 10:56:44.117560: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:113] Plugin optimizer for device_type GPU is enabled.\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Model</th>\n",
" <th>Precision Score</th>\n",
" <th>Recall Score</th>\n",
" <th>Accuracy Score</th>\n",
" <th>F1 Score</th>\n",
" <th>Confusion Matrix</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3_layers</td>\n",
" <td>0.869224</td>\n",
" <td>0.847887</td>\n",
" <td>0.847887</td>\n",
" <td>0.843977</td>\n",
" <td>[[146, 88, 0], [1, 240, 0], [19, 0, 216]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>5_layers</td>\n",
" <td>0.934660</td>\n",
" <td>0.929577</td>\n",
" <td>0.929577</td>\n",
" <td>0.927795</td>\n",
" <td>[[188, 16, 30], [1, 239, 1], [2, 0, 233]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>7_layers_with_dropout</td>\n",
" <td>0.994461</td>\n",
" <td>0.994366</td>\n",
" <td>0.994366</td>\n",
" <td>0.994378</td>\n",
" <td>[[234, 0, 0], [2, 239, 0], [2, 0, 233]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>7_layers</td>\n",
" <td>0.935195</td>\n",
" <td>0.923944</td>\n",
" <td>0.923944</td>\n",
" <td>0.923033</td>\n",
" <td>[[183, 51, 0], [1, 240, 0], [2, 0, 233]]</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Model Precision Score Recall Score Accuracy Score \\\n",
"0 3_layers 0.869224 0.847887 0.847887 \n",
"1 5_layers 0.934660 0.929577 0.929577 \n",
"2 7_layers_with_dropout 0.994461 0.994366 0.994366 \n",
"3 7_layers 0.935195 0.923944 0.923944 \n",
"\n",
" F1 Score Confusion Matrix \n",
"0 0.843977 [[146, 88, 0], [1, 240, 0], [19, 0, 216]] \n",
"1 0.927795 [[188, 16, 30], [1, 239, 1], [2, 0, 233]] \n",
"2 0.994378 [[234, 0, 0], [2, 239, 0], [2, 0, 233]] \n",
"3 0.923033 [[183, 51, 0], [1, 240, 0], [2, 0, 233]] "
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_set_results = []\n",
"\n",
"for name, model in dp_models.items():\n",
" # Evaluate model\n",
" predict_x = model.predict(test_x, verbose=False) \n",
" y_pred_class = np.argmax(predict_x, axis=1)\n",
" y_test_class = np.argmax(test_y_cat, axis=1)\n",
"\n",
" cm = confusion_matrix(y_test_class, y_pred_class, labels=[0, 1, 2])\n",
" p_score = precision_score(y_test_class, y_pred_class, average=\"weighted\")\n",
" a_score = accuracy_score(y_test_class, y_pred_class)\n",
" r_score = recall_score(y_test_class, y_pred_class, average=\"weighted\")\n",
" f1_score_result = f1_score(y_test_class, y_pred_class, average=\"weighted\")\n",
" \n",
" test_set_results.append(( name, p_score, r_score, a_score, f1_score_result, cm ))\n",
"\n",
"dp_eval = pd.DataFrame(test_set_results, columns=[\"Model\", \"Precision Score\", \"Recall Score\", \"Accuracy Score\", \"F1 Score\", \"Confusion Matrix\"])\n",
"\n",
"dp_eval"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3. Final Results"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Model</th>\n",
" <th>Precision Score</th>\n",
" <th>Recall Score</th>\n",
" <th>Accuracy Score</th>\n",
" <th>F1 Score</th>\n",
" <th>Confusion Matrix</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>LR</td>\n",
" <td>0.995828</td>\n",
" <td>0.995775</td>\n",
" <td>0.995775</td>\n",
" <td>0.995781</td>\n",
" <td>[[234, 0, 0], [1, 240, 0], [2, 0, 233]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>7_layers_with_dropout</td>\n",
" <td>0.994461</td>\n",
" <td>0.994366</td>\n",
" <td>0.994366</td>\n",
" <td>0.994378</td>\n",
" <td>[[234, 0, 0], [2, 239, 0], [2, 0, 233]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>SVC</td>\n",
" <td>0.987793</td>\n",
" <td>0.987324</td>\n",
" <td>0.987324</td>\n",
" <td>0.987363</td>\n",
" <td>[[234, 0, 0], [2, 239, 0], [7, 0, 228]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>SGDC</td>\n",
" <td>0.981748</td>\n",
" <td>0.981690</td>\n",
" <td>0.981690</td>\n",
" <td>0.981707</td>\n",
" <td>[[228, 6, 0], [3, 237, 1], [3, 0, 232]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>KNN</td>\n",
" <td>0.955544</td>\n",
" <td>0.949296</td>\n",
" <td>0.949296</td>\n",
" <td>0.949254</td>\n",
" <td>[[233, 1, 0], [2, 239, 0], [33, 0, 202]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5_layers</td>\n",
" <td>0.934660</td>\n",
" <td>0.929577</td>\n",
" <td>0.929577</td>\n",
" <td>0.927795</td>\n",
" <td>[[188, 16, 30], [1, 239, 1], [2, 0, 233]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7_layers</td>\n",
" <td>0.935195</td>\n",
" <td>0.923944</td>\n",
" <td>0.923944</td>\n",
" <td>0.923033</td>\n",
" <td>[[183, 51, 0], [1, 240, 0], [2, 0, 233]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>RF</td>\n",
" <td>0.922452</td>\n",
" <td>0.898592</td>\n",
" <td>0.898592</td>\n",
" <td>0.896179</td>\n",
" <td>[[234, 0, 0], [0, 241, 0], [72, 0, 163]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>3_layers</td>\n",
" <td>0.869224</td>\n",
" <td>0.847887</td>\n",
" <td>0.847887</td>\n",
" <td>0.843977</td>\n",
" <td>[[146, 88, 0], [1, 240, 0], [19, 0, 216]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>NB</td>\n",
" <td>0.856763</td>\n",
" <td>0.842254</td>\n",
" <td>0.842254</td>\n",
" <td>0.838005</td>\n",
" <td>[[148, 73, 13], [14, 227, 0], [4, 8, 223]]</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>DTC</td>\n",
" <td>0.773783</td>\n",
" <td>0.767606</td>\n",
" <td>0.767606</td>\n",
" <td>0.765410</td>\n",
" <td>[[127, 0, 107], [2, 238, 1], [55, 0, 180]]</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Model Precision Score Recall Score Accuracy Score \\\n",
"0 LR 0.995828 0.995775 0.995775 \n",
"1 7_layers_with_dropout 0.994461 0.994366 0.994366 \n",
"2 SVC 0.987793 0.987324 0.987324 \n",
"3 SGDC 0.981748 0.981690 0.981690 \n",
"4 KNN 0.955544 0.949296 0.949296 \n",
"5 5_layers 0.934660 0.929577 0.929577 \n",
"6 7_layers 0.935195 0.923944 0.923944 \n",
"7 RF 0.922452 0.898592 0.898592 \n",
"8 3_layers 0.869224 0.847887 0.847887 \n",
"9 NB 0.856763 0.842254 0.842254 \n",
"10 DTC 0.773783 0.767606 0.767606 \n",
"\n",
" F1 Score Confusion Matrix \n",
"0 0.995781 [[234, 0, 0], [1, 240, 0], [2, 0, 233]] \n",
"1 0.994378 [[234, 0, 0], [2, 239, 0], [2, 0, 233]] \n",
"2 0.987363 [[234, 0, 0], [2, 239, 0], [7, 0, 228]] \n",
"3 0.981707 [[228, 6, 0], [3, 237, 1], [3, 0, 232]] \n",
"4 0.949254 [[233, 1, 0], [2, 239, 0], [33, 0, 202]] \n",
"5 0.927795 [[188, 16, 30], [1, 239, 1], [2, 0, 233]] \n",
"6 0.923033 [[183, 51, 0], [1, 240, 0], [2, 0, 233]] \n",
"7 0.896179 [[234, 0, 0], [0, 241, 0], [72, 0, 163]] \n",
"8 0.843977 [[146, 88, 0], [1, 240, 0], [19, 0, 216]] \n",
"9 0.838005 [[148, 73, 13], [14, 227, 0], [4, 8, 223]] \n",
"10 0.765410 [[127, 0, 107], [2, 238, 1], [55, 0, 180]] "
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eval_df = pd.concat([sklearn_eval, dp_eval])\n",
"eval_df = eval_df.sort_values(by=['F1 Score'], ascending=False).reset_index(drop=True)\n",
"eval_df.to_csv(f\"evaluation.csv\", sep=',', encoding='utf-8', index=False)\n",
"eval_df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Best model - ROC - Confusion Matrix\n",
"\n",
"As we can see from the evaluation, the best model according to the F1 Score is the LR model."
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([0.98734177, 1. , 1. ]),\n",
" array([1. , 0.99585062, 0.99148936]),\n",
" array([0.99363057, 0.997921 , 0.9957265 ]))"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"best_model = sklearn_models[\"LR\"]\n",
"y_predictions = best_model.predict(test_x)\n",
"\n",
"p_score = precision_score(test_y, y_predictions, labels=[0, 1, 2], average=None)\n",
"r_score = recall_score(test_y, y_predictions, labels=[0, 1, 2], average=None)\n",
"f1_score_result = f1_score(test_y, y_predictions, labels=[0, 1, 2], average=None)\n",
"\n",
"p_score, r_score, f1_score_result"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.996"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(0.994 + 0.998 + 0.996) / 3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.1. Confusion Matrix"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<AxesSubplot:>"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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ABTGGjgAoCzWwEngAABKI4EDAMoigZPAAQCURgIHABRFAKeBAwBK406+plABAEojgQMAiiKAk8ABABRHAwcA8B+YNWtW+vbtm/Hjx9eMDR48ODvvvHO6d+9e87j99ttrto8aNSp9+/ZNt27dcthhh2XSpEmrdExTqAAAH9HTTz+dr3/965k2bVqt8eeeey6XX355+vfvv9Jnxo8fn8svvzzDhg3LLrvskhEjRuSMM87Iww8/nMrKyjodVwIHAJSloh4fq2DUqFG54IILcv7559caX7x4cV588cXsvPPO7/u5kSNHpl+/funRo0eaNm2aE044Ia1bt87YsWPrfGwNHADAR7DXXnvlgQceyIEHHlhrfPLkyVm6dGmuu+667LHHHtl///1zww03ZPny5UmSqVOnpkuXLrU+06lTp0yePLnOxzaFCgAUZW25CLV9+/bvOz5v3rz07Nkzxx13XL7//e/nL3/5SwYNGpRGjRrllFNOyYIFC1aaKm3evHkWLlxY52NL4ACAsqwlU6gfZM8998zNN9+cnj17pmnTptlll11y/PHH10yRVlZWpqqqqtZnqqqq0qJFizofQwMHALAa/fa3v81tt91Wa2zx4sVp3rx5kqRz586ZMmVKre1Tp05N586d63wMDRwAUJSKivp7rA7V1dUZOnRoHn/88VRXV2fSpEm5+eabc9RRRyVJBgwYkNGjR+eJJ57IkiVLMnz48MycOTN9+/at8zGsgQMAWI369u2bb3zjG7nkkkvy5ptvpl27djn77LNzyCGHJEl69eqVwYMH12zv1KlThg0bllatWtX5GBo4AID/0AsvvFDr9dFHH52jjz76A99/yCGH1DR0H4UpVACAwkjgAICi+GX2EjgAgOJo4AAACmMKFQAoiilUCRwAQHEkcABAWSRwEjgAgNJI4ACAolSI4CRwAAClkcABAGURwEngAABKI4EDAIoigNPAAQCFcSNfU6gAAMWRwAEAZZHASeAAAEojgQMAiiKAk8ABABRHAgcAlEUEJ4EDACiNBA4AKIoATgMHABTGjXxNoQIAFEcCBwCURQIngQMAKI0EDgAoigBOAgcAUBwJHABQFFehSuAAAIqjgQMAKIwpVACgKKZQJXAAAMWRwAEAZZHASeAAAEojgQMAilIhgpPAAQCURgIHABTFVagSOACA4mjgAAAKYwoVACiKKVQJ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gpPAAQCURgIHABTFRQwSOACA4kjgAICiCOAkcAAAxZHAAQBFsQZOAwcAFEb/ZgoVAKA4EjgAoCimUCVwAADFkcABAEURwEngAACKI4EDAIpiDZwEDgCgOBI4AKAsEjgNHABQFv2bKVQAgOJI4ACAoriIQQIHAFAcCRwAUBQBnAQOAKA4EjgAoCjWwEngAACKI4EDAIoigNPAAQCFMYVqChUAoDgSOACgKBI4CRwAwEcyduzY7LjjjunevXvN48ILL0ySPPPMMzniiCPSvXv39O7dOyNHjlytx5bAAQBFWVsCuOeeey6HHHJIhg4dWmt87ty5Oe2003LOOefkqKOOyoQJEzJo0KBst9122WWXXVbLsSVwAAAfwXPPPZedd955pfFx48alVatWGThwYJo0aZJevXrl4IMPzogRI1bbsSVwAEBR1oY1cMuXL8+f//znVFZW5sYbb8yyZcuyzz775IILLsiUKVPSpUuXWu/v1KlT7rzzztV2fAkcAMAqmjVrVnbcccfsv//+GTt2bG677ba88sorufDCC7NgwYJUVlbWen/z5s2zcOHC1XZ8CRwAUJS1IIBLu3btak2JVlZW5sILL8yRRx6Zww47LFVVVbXeX1VVlRYtWqy240vgAICiVFTU36OuJk+enO9+97uprq6uGVu8eHEaNWqUXXbZJVOmTKn1/qlTp6Zz586r649AAwcAsKpatWqVESNG5MYbb8zSpUszY8aMXH311enfv3/233//vP322xk+fHiWLFmSJ554IqNHj87hhx++2o6vgQMAilJRj4+62myzzfLTn/40Dz74YHr27JnDDz88Xbt2zcUXX5zWrVvnpptuyn333ZfddtstF110US666KLsvvvuq+HsV7AGDgDgI+jZs2duu+22993WtWvXD9y2OmjgAICirA23EWloplABAAojgQMAiiKAk8ABABRHAgcAFMUaOA0cAFAY/ZspVACA4kjgClZdXZ1JDz2fCeOey+y/z02LjTdMlx5bZ98Bu2WDDZs1dHmsx6b+cVoeumN83nptdlps3Dw9PrtT9jpk11SY96AeDDh0txw7YM9s0aFNZs6en0f+7/n88Ib7s2DBu0mS3nvvlNNP7pOOW22SOXMW5Fe/eSo//fmDWbp0Wc0+unT6eM4fdGA+2XWrLF++PI/+/i+55kdj8/bMeQ11WnwIP0o0cEV7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",
"text/plain": [
"<Figure size 800x600 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"KNN_cm = eval_df[ eval_df[\"Model\"] == 'LR' ][\"Confusion Matrix\"].values[0]\n",
"\n",
"cm_array_df = pd.DataFrame(KNN_cm, index=[\"C\", \"H\", \"L\"], columns=[\"C\", \"H\", \"L\"])\n",
"\n",
"fig, ax = plt.subplots(figsize=(8,6)) \n",
"sns.heatmap(cm_array_df, linewidths=1, annot=True, ax=ax, fmt='g', cmap=\"crest\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.3. F1 Score and Confidence correlation"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"def to_labels(y_pred, y_pred_proba, threshold):\n",
" '''Return prediction taking confidence threshold into account'''\n",
" results = []\n",
"\n",
" for index, predicted_class in enumerate(y_pred):\n",
" prediction_probabilities = y_pred_proba[index]\n",
" class_prediction_probability = round(prediction_probabilities[np.argmax(prediction_probabilities)], 2)\n",
"\n",
" results.append(predicted_class if class_prediction_probability >= threshold else -1)\n",
" \n",
" return results\n",
"\n",
"\n",
"def calculate_correlation_score_confidence(test_x, test_y):\n",
" '''Calculate correlation between Precision score/Recall score/F1 score and confidence threshold'''\n",
" y_predictions = best_model.predict(test_x)\n",
" y_predict_proba = best_model.predict_proba(test_x)\n",
"\n",
" thresholds = list(np.arange(0, 1.01, 0.01))\n",
"\n",
" f1_score_results = []\n",
"\n",
" for threshold in thresholds:\n",
" true_predictions = to_labels(y_predictions, y_predict_proba, threshold)\n",
" f1_s = list(f1_score(test_y, true_predictions, labels=[0, 1, 2], average=None))\n",
" all_class_f1 = f1_score(test_y, true_predictions, labels=[0, 1, 2], average=\"weighted\")\n",
" f1_s.append(all_class_f1)\n",
" f1_score_results.append(f1_s)\n",
" \n",
" return thresholds, f1_score_results\n"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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VwBS0jOv25cVK159Hmv2x8eeJqhVrVqVRo0aMXXqVJKTk4mMjGTBggX06tUrV9t27drxxRdf8L///Q+TycSmTZsICwujU6dONohcRERERG4mewe1663GALk3liDDjiaoAcydO5eJEyfSvn17jEYj3bt3Z/DgwQAEBQURGhpK165defnll3FwcGDIkCEkJCRw1113MX/+/OsOiYuIiIiIbWUvPXYlI5NMkwkHY+5x1n9vGWztpcdsnuz6+voyd+7cPM/9/vvvlueOjo4MGTKEIUOGFFVoIiIiInIbsrcLhqyNJUq5Oudqk2tk18pLj9l8UwkRERERsU/ZI7uQ/40lzEp2RURERKQ48HS5upBAfrcMtrvtgkVERETEPt3KyK61KdkVERERkULh6ZyzZjcvZcuCwz87rcUo2RURERGR4iLHyG5aep5tjEYol7VTsEZ2RURERKT48HS5eRkDXK3b1ciuiIiIiBQb+ZmgBlfrdjNxwmTl9FTJroiIiIgUimvLGC7dYGT32klqJhysGsMtbSqRlpbGypUr+eWXX7h48SJTp04lPDyce++9l/r161s1QBEREREpnpwcjDg7GEnLNN1wZPfa5ccyrbznWYFHdmNjY3n00UeZMmUKJ0+eZN++fVy5coXt27fTp0+fHLueiYiIiEjJlj26e70JavCvkV2zdUd2C5zsvvvuu1y6dIkNGzbwzTffYP5n4d85c+YQGBh43a1/RURERKTkyZ6klt+RXZPRxiO7W7duZdiwYdx1110YDAbLcRcXF/r168f//vc/qwYoIiIiIsWXZWQ3nzW7Zk9vq96/wMluamoq3t55B+Hg4EB6+vWHqEVERESkZMlekSHfNbuZhuu2uxUFTnYDAwNZvnx5nufWrl1LvXr1bjsoEREREbEPnpaR3fzV7GZmWvf+BS6KGDZsGH379qVbt260bt0ag8HAunXrmDdvHj/99BOffPKJdSMUERERkWLL3fnmNbs+PuDkBOnp1k92CzyyGxwczOLFi3Fzc+OTTz7BbDbz2WefcfHiRRYuXMj9999v3QhFREREpNjKzwQ1g+FqKYPNR3Z/+eUXGjRowJdffsmVK1dISEjA09MTDw8P60YmIiIiIsVefiaoQVaye/o0mEzWvX+BR3ZHjRrFli1bAHB1dcXf31+JroiIiIjkKT8T1OBq3e4/q9paTYGTXWdnZ1xcXKwbhYiIiIjYpfxsKgE5J6lZU4HLGAYMGMC4ceM4fPgwNWvWxNfXN1ebxo0bWyU4ERERESnePPMxQQ1yLj9mTQVOdsePHw/AggULAHJsLGE2mzEYDBw6dMhK4YmIiIhIcZY9spuSlkmmyYSDMe/CgjtmZHfJkiWFEYeIiIiI2CEPl6vpZkpaJl6ueSe7d8zIbpMmTQojDhERERGxQ57OTpbnl9Iy8HJ1yrPdHTOyC3D8+HHmzZtHWFgYiYmJ+Pj4EBwczEsvvUT16tWtHaOIiIiIFFPXjuxmTVJzy7PdHTOye+zYMZ544gkcHR1p27Ytvr6+XLx4ka1bt7Jt2zZWrFihhFdEREREgKsT1ODGk9TumJHdGTNmUKlSJZYuXYqXl5fleFJSEs8++yyzZs3i/ffft2qQIiIiIlI8eVyT7N5oY4lSpaAwVrct8Dq7e/bsYeDAgTkSXQAvLy9efPFF9uzZY7XgRERERKR4y95UAm6+ZXBhjO4WONl1dHTE2dk5z3POzs6kpaXddlAiIiIiYh/yO7ILhVO3W+BkNzAwkGXLlmH+115uZrOZL774gnr16lktOBEREREp3jxd8lezCxASYv37F7hmd9iwYfznP/+hc+fOdOzYET8/Py5evMjGjRs5efIkixcvtn6UIiIiIlIsXTtB7WZbBr/5Jvz6qxkw3LBdQRQ42Q0MDOSTTz7hvffeY/78+ZZd0+rVq8fHH3+srYJFRERExMLZ0QFHo4EMk5lLNyljMBqtP0ntltbZvf/++1m+fDkZGRkkJibi4eFBRkYG3t7e1o1ORERERIo9Txcn4i+n3bSMoTAUuGY3LS2NN998k8cffxw3Nzf8/f3Zt28fLVu2ZMqUKWRmZhZGnCIiIiJSTGVPUrvZBLXCUOBkd+7cuWzYsIHu3btbjt17772MHj2ab775ho8//tia8YmIiIhIMZddt2uLkd0ClzGsX7+e0aNH07t3b8ux0qVL06dPH4xGI5999hkDBw60apAiIiIiUnxlbxl8swlqhaHAI7txcXFUqlQpz3N3330358+fv+2gRERERMR+2HJkt8DJbvXq1fnuu+/yPPf9999z11133XZQIiIiImI/3G1Ys1vgMoZ+/foxcuRI4uPjefDBBylbtiyxsbH88MMPbN68mbfffrsw4hQRERGRYip7y+CbLT1WGAqc7IaEhJCUlMT777/P5s2bLcd9fHx46623ckxcExEREREpVhPUAJ544gl69+7N8ePHiY+Pp1SpUlSrVg2jscBVESIiIiJi5yxLjxWHCWrZDAYD1apVo3r16ly+fJlLly5ZMy4RERERsROeLsVggtq+ffsYOHAg3377reXY0qVLeeCBB3j88cdp1aoVn376aWHEKCIiIiLF2B2/qcShQ4d4+umnOXz4MO7u7kBW8jt16lSqVKnCvHnzGDx4MLNmzeKHH34o1IBFREREpHjJnqCWkp6ByWQu0nvnq2b3o48+ok6dOnz22We4ubkBWaO6ANOnT6d27doAREdHs3TpUh588MFCCldEREREipvspcfMZricnoHHP8lvUcjXyO6ePXvo06ePJdEF+Omnn6hcubIl0QVo2bIlBw8etH6UIiIiIlJsZa/GAJBcxHW7+Up24+PjCQgIsLyOiIggLi6Opk2b5mjn5uZGWlqadSMUERERkWLN45pkt6gnqeUr2fX29iY6Otryevfu3RgMBpo1a5ajXUREBGXKlLFuhCIiIiJSrGWvxgBFP0ktX8lukyZN+OqrrzCZTGRkZPD111/j4uJCq1atLG3S0tJYtmwZDRs2LLRgRURERKT48bymRreoR3bzNUFt0KBB9O7d2zLx7MyZM7z00kt4eXkB8PXXX7Ns2TKOHz/Ou+++W3jRioiIiEixc20ZQ3Jq0W4ska9kt2bNmvzf//0fixYtIiYmhv79+/Of//zHcn727Nk4Ojoyf/586tSpU2jBioiIiEjx42nDmt18bxdco0YNpk6dmue5lStX4ufnp+2CRURERCQXDxuuxpDvZPdG/P39rXEZEREREbFDtqzZ1VCsiIiIiBQqF0cjRoMBgEt34moMIiIiIiK3ymAwWJYfK+oJakp2RURERKTQZU9SUxmDiIiIiNid7Elqd+R2wSIiIiIityN7kppGdkVERETE7lhGdot4glq+lh779ttvC3TR7t2730IoIiIiImKvPFxsU7Obr2R37ty5nD17FgCz2XzDtgaDQcmuiIiIiOSQPbJ76U7cLnjNmjX079+f48eP8+mnn+Lt7V3IYYmIiIiIPfG00QS1fCW7np6efPDBB/Ts2ZMvvviCt99+u7DjEhERERE74nGnLz3m7e3N2LFjWb16NSdOnCjEkERERETE3mSvxnBHTlDL9uCDDxIWFoarq2thxSMiIiIidsjzTp6gdi0vL6/CiENERERE7NjVTSXSMZvNGAyGIrlvvsoY1q5dS3x8fCGHIiIiIiL2KjvZNZvhSkZmkd03X8nuqFGjOHXqVI5jH374IdHR0YUSlIiIiIjYl+xkF4q2bjdfye6/19bNzMxkzpw5nD9/vlCCEhERERH7kj1BDYq2bveWtwu+2eYSIiIiIiLZco7sFt3GErec7IqIiIiI5Ff2agxQtBtLKNkVERERkULnec3I7qU7rWb3eopqyQgRERERKd5ylDEU4chuvtfZfemll3B2ds5xbODAgTg5OeU4ZjAY+OGHH6wTnYiIiIjYBVtNUMtXstujR4/CjkNERERE7JitJqjlK9l9++23CzsOEREREbFjbk4OGAxZm0qkaIKaiIiIiNgTg8FwzZbBSnZFRERExM54OmfV7d5xO6iJiIiIiNyu7JHdYrGDmoiIiIhIQWRvLKEd1ERERETE7nhqZFdERERE7JW7JqiJiIiIiL3K3liiKJcey/cOaoUlJiaGt956i/DwcBwcHOjatSujR4/G0TFnaC+88AK//vprjmMpKSn07t2biRMnFmXIIiIiInILLEuPFeFqDDZPdocPH46/vz87d+4kOjqaQYMG8dlnn/HCCy/kaPfJJ5/keL1y5Uref/99Xn755aIMV0RERERuUfYEtRJTs3vy5EnCw8N57bXXcHNzo3LlygwePJhly5bd8H1///03kyZNYsaMGZQrV66IohURERGR23F1ZPcO2y64sBw9ehRvb2/8/f0tx6pXr86ZM2dITEykVKlSeb4vNDSU7t27ExwcXOB7ms1mUlJSbjlmsY3Lly/n+FVKDvV9yaW+L7nU9/bLxWAGspLd6+VjZrMZg8FgtXvaNNm9dOkSbm5uOY5lv05JSckz2d27dy9//vknM2bMuKV7pqenc+jQoVt6r9jeiRMnbB2C2Ij6vuRS35dc6nv7cyk+NuvXtAwOHjx43aTW2dnZave0abLr7u6e66e27NceHh55vuerr76iY8eO+Pn53dI9nZycqFGjxi29V2zn8uXLnDhxgqpVq+b6AUnsm/q+5FLfl1zqe/t1d9Lf8Pt5Ms1QreY9uDo55Gpz9OhRq97TpsluzZo1iY+PJzo6Gl9fXwAiIiIICAjAy8srV/uMjAy2bNnC/Pnzb/meBoMBd3f3W36/2Jabm5v6r4RS35dc6vuSS31vf3y8rvan2dEZd3eXXG2sWcIANp6gVrVqVRo1asTUqVNJTk4mMjKSBQsW0KtXrzzbHzlyhNTUVBo2bFjEkYqIiIjI7cqeoAZFN0nN5ptKzJ07l4yMDNq3b8/jjz9Oq1atGDx4MABBQUGsWbPG0jYyMpLSpUvj4pL7pwARERERubN5XpPsFtXyYzZfZ9fX15e5c+fmee7333/P8fqRRx7hkUceKYqwRERERMTKcozsFlGya/ORXREREREpGbK3C4YSVMYgIiIiIiWDhw3KGJTsioiIiEiRyN4uGCA5VcmuiIiIiNgRW0xQU7IrIiIiIkXCzUnJroiIiIjYKaPRYKnbVbIrIiIiInYnO9nVagwiIiIiYneyJ6lpgpqIiIiI2B2VMYiIiIiI3fJ0ztpYQjuoiYiIiIjd8XDRyK6IiIiI2ClLGYMmqImIiIiIvfHUyK6IiIiI2KurS48p2RURERERO5M9QU0juyIiIiJidywju0p2RURERMTeXN1UQhPURERERMTOZI/sZpjMpGVkFvr9lOyKiIiISJHJXmcXiqaUQcmuiIiIiBSZ7AlqAJeKYEUGJbsiIiIiUmSyyxhAI7siIiIiYmc8ryljKIrlx5TsioiIiEiRyTGyWwQrMijZFREREZEi46kJaiIiIiJir64d2dUENRERERGxK9euxpCcpjIGEREREbEj7s4OlucpKmMQEREREXviYDTi5pSV8CarjEFERERE7E32JDVNUBMRERERu5M9SU3r7IqIiIiI3cmepKbVGERERETE7mSP7Go1BhERERGxO9k1uypjEBERERG7455ds6syBhERERGxN56aoCYiIiIi9spDS4+JiIiIiL2yrMagZFdERERE7I1lNYZUrcYgIiIiInZGqzGIiIiIiN3KHtlNzTCRkWkq1Hsp2RURERGRIpW99BgU/uiukl0RERERKVKeLk6W54W9IoOSXREREREpUh4a2RURERERe+V5TbJb2CsyKNkVERERkSKlkV0RERERsVvZS48BJKcq2RURERERO6KRXRERERGxWzlWY9DIroiIiIjYk2tHdlM0sisiIiIi9sTJwYizQ1Yampym1RhERERExM5kj+6qZldERERE7E72igyq2RURERERu6ORXRERERGxW9krMmgHNRERERGxOxrZFRERERG7pWRXREREROyWkl0R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",
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"thresholds, f1_scores = calculate_correlation_score_confidence(test_x, test_y)\n",
"\n",
"first_class = [ el[0] for el in f1_scores ]\n",
"second_class = [ el[1] for el in f1_scores ]\n",
"third_class = [ el[2] for el in f1_scores ]\n",
"all_classes = [ el[3] for el in f1_scores ]\n",
"\n",
"\n",
"fig, ax = plt.subplots(figsize=(8,6))\n",
"plt.plot(thresholds, first_class, label = \"F1 Score - Correct class\")\n",
"plt.plot(thresholds, second_class, label = \"F1 Score - High-back class\")\n",
"plt.plot(thresholds, third_class, label = \"F1 Score - Low-back class\")\n",
"plt.plot(thresholds, all_classes, label = \"F1 Score - All 3 classes\", linewidth=2.0, color=\"blue\")\n",
"plt.legend(loc = 'lower left')\n",
"plt.ylim([0.5, 1])\n",
"plt.xlim([0.025, 1])\n",
"plt.xlabel(\"Thresholds\", fontsize = 12)\n",
"plt.ylabel(\"F1 Score\", fontsize = 12)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 3.2. ROC curve"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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vXuH2NhYrF+/XuxIRN+d9vXoJiSInYCIiCjXWVpawsXFBUBaL65SqRQ5EdH3p3U9urK3b8WOQERElCsSEhJgaGgo3J4/fz66dOkCV1dXEVMRiUf7enSJiIgKmISEBEyePBlNmzZFwge/XJqamrLIJa3GQpeIiCifO336NDZs2IAnT55g0aJFYschyjO0bugCERFRQdOpUycEBARApVJhxIgRYschyjNY6BIREeUz9+/fh0wmg4ODAwBAIpFg48aNMDAwgEQiETkdUd7BoQtERET5yNq1a+Hi4gJ3d3ekpKQI7YaGhixyiT7CQpeIiCgfUavVUCgUePToEW7duiV2HKI8jUMXiIiI8hF3d3cEBQVh8ODBKF++vNhxiPI0revRVRsYiB2BiIgoS4KDg9G/f38EBQUJbVKpFAsWLGCRS5QFWtejq7K1FTsCERHRF8XExKBJkyaIiIhAVFQUjhw5AqlU6/qniL4J3zFERER5kKmpKQYPHgypVIpatWohNTVV7EhE+Y7W9egSERHlVaGhoShSpIhwe/z48WjVqhVq1qwpYiqi/EvrenQlMTFiRyAiItIQHR0Nd3d3NGjQAKGhoUK7XC5nkUv0DbSu0JWGhYkdgYiISMO///6LAwcOIDw8HPPmzRM7DlGBwaELREREImvUqBHc3NwQFxeHWbNmiR2HqMBgoUtERPSd/f333wCAH374QWibP38+ZDKZWJGICiStG7pAREQkpqVLl6Jt27YYNmwYYj44b4RFLlHOY6FLRET0HZUuXRpqtRoxMTG4f/++2HGICjQOXSAiIspFarUaEolEuN2pUye8evUKXbp0gZ2dnYjJiAo+9ugSERHlksePH6N169a4deuWRruXlxeLXKLvgIUuERFRLkhMTES7du1w7do1jBgxAomJiWJHItI6WlfoqkxMxI5ARERawMDAAFOnToVcLkfv3r0hl8vFjkSkdbRujK7aykrsCEREVACp1Wo8evQIFSpUENr69++PRo0aoVSpUiImI9JeWtejS0RElNPevn2LXr16wcXFBY8fPxbaJRIJi1wiEbHQJSIi+kYRERH4448/kJSUBD8/P7HjENH/aN3QBUlEhNgRiIiogKlUqRJ++uknvH37FtOnTxc7DhH9j9YVutKoKLEjEBFRPnfmzBkkJiaiY8eOQpu3t7eIiYgoM1pX6BIREX2LhQsX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",
"text/plain": [
"<Figure size 800x550 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<AxesSubplot:title={'center':'ROC Curves for LogisticRegression'}, xlabel='False Positive Rate', ylabel='True Positive Rate'>"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"visualizer = ROCAUC(best_model, classes=[\"Correct\", \"High-back\", \"Low-back\"])\n",
"visualizer.target_type_ = \"multiclass\"\n",
"visualizer.score(test_x, test_y) \n",
"visualizer.show() "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.8.13 (conda)",
"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.8.13"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "9260f401923fb5c4108c543a7d176de9733d378b3752e49535ad7c43c2271b65"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
|