├── Movie_Genre_Classification.ipynb ├── README.md ├── SPAM_SMS_DETECTION.ipynb └── credit_card_fraud_Detection.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # CodeWay-ML-Internship 2 | 3 | Welcome to the repository for my machine learning internship at Codeway! 4 | 5 | Task-1: MOVIE GENRE CLASSIFICATION 6 | -Creating a machine learning model that can predict the genre of a 7 | movie based on its plot summary or other textual information. We 8 | can use techniques like TF-IDF or word embeddings with classifiers 9 | such as Naive Bayes, Logistic Regression, or Support Vector 10 | Machines. 11 | 12 | DATA SET LINK: www.kaggle.com/datasets/hijest/genre-classification-dataset-imdb 13 | 14 | Task-2: CREDIT CARD FRAUD DETECTION 15 | -Building a model to detect fraudulent credit card transactions. Use a 16 | dataset containing information about credit card transactions, and 17 | experiment with algorithms like Logistic Regression, Decision Trees, 18 | or Random Forests to classify transactions as fraudulent or legitimate. 19 | 20 | DATA SET LINK: www.kaggle.com/datasets/kartik2112/fraud-detection 21 | 22 | Task-3: CUSTOMER CHURN PREDICTION 23 | -Developing a model to predict customer churn for a subscription- based 24 | service or business. Use historical customer data, including features like 25 | usage behavior and customer demographics, and try algorithms like 26 | Logistic Regression, Random Forests, or Gradient Boosting to predict 27 | churn. 28 | 29 | DATA SET LINK: www.kaggle.com/datasets/shantanudhakadd/bank-customer-churn-prediction 30 | 31 | Task-4: SPAM SMS DETECTION 32 | -Building an AI model that can classify SMS messages as spam or legitimate. 33 | Use techniques like TF-IDF or word embeddings with classifiers like 34 | Naive Bayes, Logistic Regression, or Support Vector Machines to identify spam messages. 35 | 36 | DATA SET LINK: www.kaggle.com/datasets/uciml/sms-spam-collection-dataset 37 | 38 | Task-5: HANDWRITTEN TEXT GENERATION 39 | -Implementing a character-level recurrent neural network (RNN) to generate 40 | handwritten-like text. Train the model on a dataset of handwritten text 41 | examples, and let it generate new text based on the learned patterns. 42 | 43 | DATA SET LINK: www.paperswithcode.com/dataset/deepwriting 44 | 45 | DATA SET LINK: www.paperswithcode.com/dataset/iam 46 | -------------------------------------------------------------------------------- /credit_card_fraud_Detection.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "authorship_tag": "ABX9TyMbEY1vks5Dwg9BIzeZIV30", 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "language_info": { 15 | "name": "python" 16 | } 17 | }, 18 | "cells": [ 19 | { 20 | "cell_type": "markdown", 21 | "metadata": { 22 | "id": "view-in-github", 23 | "colab_type": "text" 24 | }, 25 | "source": [ 26 | "\"Open" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 36, 32 | "metadata": { 33 | "id": "nkdTwCvQYLU0" 34 | }, 35 | "outputs": [], 36 | "source": [ 37 | "import numpy as np\n", 38 | "import pandas as pd\n", 39 | "import matplotlib.pyplot as plt\n", 40 | "import seaborn as sns\n", 41 | "import plotly.express as px" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "source": [ 47 | "from google.colab import drive\n", 48 | "drive.mount('/content/drive')" 49 | ], 50 | "metadata": { 51 | "id": "4BtsOfP4L2Gd", 52 | "colab": { 53 | "base_uri": "https://localhost:8080/" 54 | }, 55 | "outputId": "1775b664-0d0c-4acc-c572-c6c8246808e8" 56 | }, 57 | "execution_count": 37, 58 | "outputs": [ 59 | { 60 | "output_type": "stream", 61 | "name": "stdout", 62 | "text": [ 63 | "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" 64 | ] 65 | } 66 | ] 67 | }, 68 | { 69 | "cell_type": "code", 70 | "source": [ 71 | "raw_data=pd.read_csv(\"/content/drive/MyDrive/FML_DATA_SETS/credit card fraud Detection /PS_20174392719_1491204439457_log.csv\")\n", 72 | "raw_data.head()" 73 | ], 74 | "metadata": { 75 | "id": "tFf6NpkCL3Uv", 76 | "colab": { 77 | "base_uri": "https://localhost:8080/", 78 | "height": 206 79 | }, 80 | "outputId": "d64fcb4a-926b-46f3-ce47-a7fc3e9091fc" 81 | }, 82 | "execution_count": 38, 83 | "outputs": [ 84 | { 85 | "output_type": "execute_result", 86 | "data": { 87 | "text/plain": [ 88 | " step type amount nameOrig oldbalanceOrg newbalanceOrig \\\n", 89 | "0 1 PAYMENT 9839.64 C1231006815 170136.0 160296.36 \n", 90 | "1 1 PAYMENT 1864.28 C1666544295 21249.0 19384.72 \n", 91 | "2 1 TRANSFER 181.00 C1305486145 181.0 0.00 \n", 92 | "3 1 CASH_OUT 181.00 C840083671 181.0 0.00 \n", 93 | "4 1 PAYMENT 11668.14 C2048537720 41554.0 29885.86 \n", 94 | "\n", 95 | " nameDest oldbalanceDest newbalanceDest isFraud isFlaggedFraud \n", 96 | "0 M1979787155 0.0 0.0 0 0 \n", 97 | "1 M2044282225 0.0 0.0 0 0 \n", 98 | "2 C553264065 0.0 0.0 1 0 \n", 99 | "3 C38997010 21182.0 0.0 1 0 \n", 100 | "4 M1230701703 0.0 0.0 0 0 " 101 | ], 102 | "text/html": [ 103 | "\n", 104 | "
\n", 105 | "
\n", 106 | "\n", 119 | "\n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | "
steptypeamountnameOrigoldbalanceOrgnewbalanceOrignameDestoldbalanceDestnewbalanceDestisFraudisFlaggedFraud
01PAYMENT9839.64C1231006815170136.0160296.36M19797871550.00.000
11PAYMENT1864.28C166654429521249.019384.72M20442822250.00.000
21TRANSFER181.00C1305486145181.00.00C5532640650.00.010
31CASH_OUT181.00C840083671181.00.00C3899701021182.00.010
41PAYMENT11668.14C204853772041554.029885.86M12307017030.00.000
\n", 209 | "
\n", 210 | "
\n", 211 | "\n", 212 | "
\n", 213 | " \n", 221 | "\n", 222 | " \n", 262 | "\n", 263 | " \n", 287 | "
\n", 288 | "\n", 289 | "\n", 290 | "
\n", 291 | " \n", 302 | "\n", 303 | "\n", 392 | "\n", 393 | " \n", 415 | "
\n", 416 | "
\n", 417 | "
\n" 418 | ] 419 | }, 420 | "metadata": {}, 421 | "execution_count": 38 422 | } 423 | ] 424 | }, 425 | { 426 | "cell_type": "code", 427 | "source": [ 428 | "data=raw_data.iloc[:2620]" 429 | ], 430 | "metadata": { 431 | "id": "-8jzuXzEMf3n" 432 | }, 433 | "execution_count": 39, 434 | "outputs": [] 435 | }, 436 | { 437 | "cell_type": "code", 438 | "source": [ 439 | "data.shape" 440 | ], 441 | "metadata": { 442 | "colab": { 443 | "base_uri": "https://localhost:8080/" 444 | }, 445 | "id": "8S3vS7h8MuFR", 446 | "outputId": "f8231664-bc1b-4a4c-85df-2fbbc3d8542d" 447 | }, 448 | "execution_count": 40, 449 | "outputs": [ 450 | { 451 | "output_type": "execute_result", 452 | "data": { 453 | "text/plain": [ 454 | "(2620, 11)" 455 | ] 456 | }, 457 | "metadata": {}, 458 | "execution_count": 40 459 | } 460 | ] 461 | }, 462 | { 463 | "cell_type": "code", 464 | "source": [ 465 | "data.describe()" 466 | ], 467 | "metadata": { 468 | "colab": { 469 | "base_uri": "https://localhost:8080/", 470 | "height": 300 471 | }, 472 | "id": "ByZFhuUbM00B", 473 | "outputId": "13ba0028-452f-4581-ef59-698e185af00b" 474 | }, 475 | "execution_count": 41, 476 | "outputs": [ 477 | { 478 | "output_type": "execute_result", 479 | "data": { 480 | "text/plain": [ 481 | " step amount oldbalanceOrg newbalanceOrig oldbalanceDest \\\n", 482 | "count 2620.0 2.620000e+03 2.620000e+03 2.620000e+03 2.620000e+03 \n", 483 | "mean 1.0 1.055404e+05 8.207836e+05 8.398497e+05 7.024779e+05 \n", 484 | "std 0.0 2.468862e+05 1.936319e+06 1.980422e+06 2.143229e+06 \n", 485 | "min 1.0 6.420000e+00 0.000000e+00 0.000000e+00 0.000000e+00 \n", 486 | "25% 1.0 3.915938e+03 9.150250e+01 0.000000e+00 0.000000e+00 \n", 487 | "50% 1.0 9.910020e+03 2.211219e+04 1.386267e+04 0.000000e+00 \n", 488 | "75% 1.0 1.146133e+05 2.011165e+05 2.015433e+05 3.560640e+05 \n", 489 | "max 1.0 3.776389e+06 1.010284e+07 1.024625e+07 1.951612e+07 \n", 490 | "\n", 491 | " newbalanceDest isFraud isFlaggedFraud \n", 492 | "count 2.620000e+03 2620.000000 2620.0 \n", 493 | "mean 9.559343e+05 0.006107 0.0 \n", 494 | "std 2.860721e+06 0.077922 0.0 \n", 495 | "min 0.000000e+00 0.000000 0.0 \n", 496 | "25% 0.000000e+00 0.000000 0.0 \n", 497 | "50% 0.000000e+00 0.000000 0.0 \n", 498 | "75% 2.650924e+05 0.000000 0.0 \n", 499 | "max 1.916920e+07 1.000000 0.0 " 500 | ], 501 | "text/html": [ 502 | "\n", 503 | "
\n", 504 | "
\n", 505 | "\n", 518 | "\n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | "
stepamountoldbalanceOrgnewbalanceOrigoldbalanceDestnewbalanceDestisFraudisFlaggedFraud
count2620.02.620000e+032.620000e+032.620000e+032.620000e+032.620000e+032620.0000002620.0
mean1.01.055404e+058.207836e+058.398497e+057.024779e+059.559343e+050.0061070.0
std0.02.468862e+051.936319e+061.980422e+062.143229e+062.860721e+060.0779220.0
min1.06.420000e+000.000000e+000.000000e+000.000000e+000.000000e+000.0000000.0
25%1.03.915938e+039.150250e+010.000000e+000.000000e+000.000000e+000.0000000.0
50%1.09.910020e+032.211219e+041.386267e+040.000000e+000.000000e+000.0000000.0
75%1.01.146133e+052.011165e+052.015433e+053.560640e+052.650924e+050.0000000.0
max1.03.776389e+061.010284e+071.024625e+071.951612e+071.916920e+071.0000000.0
\n", 623 | "
\n", 624 | "
\n", 625 | "\n", 626 | "
\n", 627 | " \n", 635 | "\n", 636 | " \n", 676 | "\n", 677 | " \n", 701 | "
\n", 702 | "\n", 703 | "\n", 704 | "
\n", 705 | " \n", 716 | "\n", 717 | "\n", 806 | "\n", 807 | " \n", 829 | "
\n", 830 | "
\n", 831 | "
\n" 832 | ] 833 | }, 834 | "metadata": {}, 835 | "execution_count": 41 836 | } 837 | ] 838 | }, 839 | { 840 | "cell_type": "code", 841 | "source": [ 842 | "data['isFraud'].value_counts()" 843 | ], 844 | "metadata": { 845 | "id": "Nb8OmICVNCE7", 846 | "colab": { 847 | "base_uri": "https://localhost:8080/" 848 | }, 849 | "outputId": "df1a6a72-35dd-437a-f684-5908435d3abf" 850 | }, 851 | "execution_count": 42, 852 | "outputs": [ 853 | { 854 | "output_type": "execute_result", 855 | "data": { 856 | "text/plain": [ 857 | "0 2604\n", 858 | "1 16\n", 859 | "Name: isFraud, dtype: int64" 860 | ] 861 | }, 862 | "metadata": {}, 863 | "execution_count": 42 864 | } 865 | ] 866 | }, 867 | { 868 | "cell_type": "code", 869 | "source": [ 870 | "data.drop(['nameOrig', 'nameDest'], axis=1, inplace=True)\n" 871 | ], 872 | "metadata": { 873 | "colab": { 874 | "base_uri": "https://localhost:8080/" 875 | }, 876 | "id": "8Qb9m-A6ORB_", 877 | "outputId": "251e7470-8135-4c35-c186-dd100e303d9f" 878 | }, 879 | "execution_count": 43, 880 | "outputs": [ 881 | { 882 | "output_type": "stream", 883 | "name": "stderr", 884 | "text": [ 885 | ":1: SettingWithCopyWarning:\n", 886 | "\n", 887 | "\n", 888 | "A value is trying to be set on a copy of a slice from a DataFrame\n", 889 | "\n", 890 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", 891 | "\n" 892 | ] 893 | } 894 | ] 895 | }, 896 | { 897 | "cell_type": "code", 898 | "source": [ 899 | "data.head()" 900 | ], 901 | "metadata": { 902 | "colab": { 903 | "base_uri": "https://localhost:8080/", 904 | "height": 206 905 | }, 906 | "id": "2CE77zbVO5LS", 907 | "outputId": "ae3b3629-dc0b-4138-8f25-94dcae5b08ca" 908 | }, 909 | "execution_count": 44, 910 | "outputs": [ 911 | { 912 | "output_type": "execute_result", 913 | "data": { 914 | "text/plain": [ 915 | " step type amount oldbalanceOrg newbalanceOrig oldbalanceDest \\\n", 916 | "0 1 PAYMENT 9839.64 170136.0 160296.36 0.0 \n", 917 | "1 1 PAYMENT 1864.28 21249.0 19384.72 0.0 \n", 918 | "2 1 TRANSFER 181.00 181.0 0.00 0.0 \n", 919 | "3 1 CASH_OUT 181.00 181.0 0.00 21182.0 \n", 920 | "4 1 PAYMENT 11668.14 41554.0 29885.86 0.0 \n", 921 | "\n", 922 | " newbalanceDest isFraud isFlaggedFraud \n", 923 | "0 0.0 0 0 \n", 924 | "1 0.0 0 0 \n", 925 | "2 0.0 1 0 \n", 926 | "3 0.0 1 0 \n", 927 | "4 0.0 0 0 " 928 | ], 929 | "text/html": [ 930 | "\n", 931 | "
\n", 932 | "
\n", 933 | "\n", 946 | "\n", 947 | " \n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | " \n", 953 | " \n", 954 | " \n", 955 | " \n", 956 | " \n", 957 | " \n", 958 | " \n", 959 | " \n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \n", 1002 | " \n", 1003 | " \n", 1004 | " \n", 1005 | " \n", 1006 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | "
steptypeamountoldbalanceOrgnewbalanceOrigoldbalanceDestnewbalanceDestisFraudisFlaggedFraud
01PAYMENT9839.64170136.0160296.360.00.000
11PAYMENT1864.2821249.019384.720.00.000
21TRANSFER181.00181.00.000.00.010
31CASH_OUT181.00181.00.0021182.00.010
41PAYMENT11668.1441554.029885.860.00.000
\n", 1024 | "
\n", 1025 | "
\n", 1026 | "\n", 1027 | "
\n", 1028 | " \n", 1036 | "\n", 1037 | " \n", 1077 | "\n", 1078 | " \n", 1102 | "
\n", 1103 | "\n", 1104 | "\n", 1105 | "
\n", 1106 | " \n", 1117 | "\n", 1118 | "\n", 1207 | "\n", 1208 | " \n", 1230 | "
\n", 1231 | "
\n", 1232 | "
\n" 1233 | ] 1234 | }, 1235 | "metadata": {}, 1236 | "execution_count": 44 1237 | } 1238 | ] 1239 | }, 1240 | { 1241 | "cell_type": "code", 1242 | "source": [ 1243 | "from sklearn.preprocessing import LabelEncoder\n", 1244 | "encoder=LabelEncoder()\n", 1245 | "data['type']=encoder.fit_transform(data['type'])" 1246 | ], 1247 | "metadata": { 1248 | "id": "rLdvROOSPFW0", 1249 | "colab": { 1250 | "base_uri": "https://localhost:8080/" 1251 | }, 1252 | "outputId": "51593faf-7cba-44f5-c4d2-0a53a1ef3e1a" 1253 | }, 1254 | "execution_count": 45, 1255 | "outputs": [ 1256 | { 1257 | "output_type": "stream", 1258 | "name": "stderr", 1259 | "text": [ 1260 | ":3: SettingWithCopyWarning:\n", 1261 | "\n", 1262 | "\n", 1263 | "A value is trying to be set on a copy of a slice from a DataFrame.\n", 1264 | "Try using .loc[row_indexer,col_indexer] = value instead\n", 1265 | "\n", 1266 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", 1267 | "\n" 1268 | ] 1269 | } 1270 | ] 1271 | }, 1272 | { 1273 | "cell_type": "code", 1274 | "source": [ 1275 | "data.head()" 1276 | ], 1277 | "metadata": { 1278 | "colab": { 1279 | "base_uri": "https://localhost:8080/", 1280 | "height": 206 1281 | }, 1282 | "id": "Bjzd0w1My4rY", 1283 | "outputId": "1fc53da8-2076-440c-e092-b4cc0dbaab58" 1284 | }, 1285 | "execution_count": 46, 1286 | "outputs": [ 1287 | { 1288 | "output_type": "execute_result", 1289 | "data": { 1290 | "text/plain": [ 1291 | " step type amount oldbalanceOrg newbalanceOrig oldbalanceDest \\\n", 1292 | "0 1 3 9839.64 170136.0 160296.36 0.0 \n", 1293 | "1 1 3 1864.28 21249.0 19384.72 0.0 \n", 1294 | "2 1 4 181.00 181.0 0.00 0.0 \n", 1295 | "3 1 1 181.00 181.0 0.00 21182.0 \n", 1296 | "4 1 3 11668.14 41554.0 29885.86 0.0 \n", 1297 | "\n", 1298 | " newbalanceDest isFraud isFlaggedFraud \n", 1299 | "0 0.0 0 0 \n", 1300 | "1 0.0 0 0 \n", 1301 | "2 0.0 1 0 \n", 1302 | "3 0.0 1 0 \n", 1303 | "4 0.0 0 0 " 1304 | ], 1305 | "text/html": [ 1306 | "\n", 1307 | "
\n", 1308 | "
\n", 1309 | "\n", 1322 | "\n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | " \n", 1337 | " \n", 1338 | " \n", 1339 | " \n", 1340 | " \n", 1341 | " \n", 1342 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | " \n", 1358 | " \n", 1359 | " \n", 1360 | " \n", 1361 | " \n", 1362 | " \n", 1363 | " \n", 1364 | " \n", 1365 | " \n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | "
steptypeamountoldbalanceOrgnewbalanceOrigoldbalanceDestnewbalanceDestisFraudisFlaggedFraud
0139839.64170136.0160296.360.00.000
1131864.2821249.019384.720.00.000
214181.00181.00.000.00.010
311181.00181.00.0021182.00.010
41311668.1441554.029885.860.00.000
\n", 1400 | "
\n", 1401 | "
\n", 1402 | "\n", 1403 | "
\n", 1404 | " \n", 1412 | "\n", 1413 | " \n", 1453 | "\n", 1454 | " \n", 1478 | "
\n", 1479 | "\n", 1480 | "\n", 1481 | "
\n", 1482 | " \n", 1493 | "\n", 1494 | "\n", 1583 | "\n", 1584 | " \n", 1606 | "
\n", 1607 | "
\n", 1608 | "
\n" 1609 | ] 1610 | }, 1611 | "metadata": {}, 1612 | "execution_count": 46 1613 | } 1614 | ] 1615 | }, 1616 | { 1617 | "cell_type": "code", 1618 | "source": [ 1619 | "data.isna().sum()" 1620 | ], 1621 | "metadata": { 1622 | "colab": { 1623 | "base_uri": "https://localhost:8080/" 1624 | }, 1625 | "id": "ntfOh8Ew7BkS", 1626 | "outputId": "15962cea-5a74-41b7-a86d-82db2ea87083" 1627 | }, 1628 | "execution_count": 47, 1629 | "outputs": [ 1630 | { 1631 | "output_type": "execute_result", 1632 | "data": { 1633 | "text/plain": [ 1634 | "step 0\n", 1635 | "type 0\n", 1636 | "amount 0\n", 1637 | "oldbalanceOrg 0\n", 1638 | "newbalanceOrig 0\n", 1639 | "oldbalanceDest 0\n", 1640 | "newbalanceDest 0\n", 1641 | "isFraud 0\n", 1642 | "isFlaggedFraud 0\n", 1643 | "dtype: int64" 1644 | ] 1645 | }, 1646 | "metadata": {}, 1647 | "execution_count": 47 1648 | } 1649 | ] 1650 | }, 1651 | { 1652 | "cell_type": "code", 1653 | "source": [ 1654 | "fig = px.scatter(data, x = 'amount', y =data.index, color = data.isFraud,\n", 1655 | " title = 'Distribution of Amount Values')\n", 1656 | "fig.update_layout(xaxis_title='Transaction Amount (in €)',\n", 1657 | " yaxis_title='Transactions')\n", 1658 | "fig.show()" 1659 | ], 1660 | "metadata": { 1661 | "colab": { 1662 | "base_uri": "https://localhost:8080/", 1663 | "height": 542 1664 | }, 1665 | "id": "OP05kcp4y7Ux", 1666 | "outputId": "afe85dd4-4bc1-4bc2-8edf-9545c7e19627" 1667 | }, 1668 | "execution_count": 48, 1669 | "outputs": [ 1670 | { 1671 | "output_type": "display_data", 1672 | "data": { 1673 | "text/html": [ 1674 | "\n", 1675 | "\n", 1676 | "\n", 1677 | "
\n", 1678 | "
\n", 1703 | "\n", 1704 | "" 1705 | ] 1706 | }, 1707 | "metadata": {} 1708 | } 1709 | ] 1710 | }, 1711 | { 1712 | "cell_type": "code", 1713 | "source": [ 1714 | "X = data.drop(columns=['isFraud'], axis=1)\n", 1715 | "Y = data.isFraud" 1716 | ], 1717 | "metadata": { 1718 | "id": "tvcLfN924yHi" 1719 | }, 1720 | "execution_count": 49, 1721 | "outputs": [] 1722 | }, 1723 | { 1724 | "cell_type": "code", 1725 | "source": [ 1726 | "from sklearn.model_selection import train_test_split\n", 1727 | "xtrain,xtest,ytrain,ytest=train_test_split(X,Y,test_size=0.27,random_state=41)" 1728 | ], 1729 | "metadata": { 1730 | "id": "ngE3UCEz0R-g" 1731 | }, 1732 | "execution_count": 50, 1733 | "outputs": [] 1734 | }, 1735 | { 1736 | "cell_type": "code", 1737 | "source": [ 1738 | "#handling data imbalance using smote\n", 1739 | "from imblearn.over_sampling import SMOTE\n", 1740 | "xtrain,ytrain = SMOTE().fit_resample(xtrain,ytrain)" 1741 | ], 1742 | "metadata": { 1743 | "id": "-Xj5aj1p6Wub" 1744 | }, 1745 | "execution_count": 51, 1746 | "outputs": [] 1747 | }, 1748 | { 1749 | "cell_type": "code", 1750 | "source": [ 1751 | "ytrain.value_counts()" 1752 | ], 1753 | "metadata": { 1754 | "colab": { 1755 | "base_uri": "https://localhost:8080/" 1756 | }, 1757 | "id": "c48pQ-yB6nMF", 1758 | "outputId": "dc50a523-e903-498f-8562-01028fea03d5" 1759 | }, 1760 | "execution_count": 52, 1761 | "outputs": [ 1762 | { 1763 | "output_type": "execute_result", 1764 | "data": { 1765 | "text/plain": [ 1766 | "0 1900\n", 1767 | "1 1900\n", 1768 | "Name: isFraud, dtype: int64" 1769 | ] 1770 | }, 1771 | "metadata": {}, 1772 | "execution_count": 52 1773 | } 1774 | ] 1775 | }, 1776 | { 1777 | "cell_type": "code", 1778 | "source": [ 1779 | "xtrain.info()" 1780 | ], 1781 | "metadata": { 1782 | "colab": { 1783 | "base_uri": "https://localhost:8080/" 1784 | }, 1785 | "id": "d1Zio1jo6w0N", 1786 | "outputId": "97449573-636e-4f87-a4f6-f92d7ab8ae4a" 1787 | }, 1788 | "execution_count": 53, 1789 | "outputs": [ 1790 | { 1791 | "output_type": "stream", 1792 | "name": "stdout", 1793 | "text": [ 1794 | "\n", 1795 | "RangeIndex: 3800 entries, 0 to 3799\n", 1796 | "Data columns (total 8 columns):\n", 1797 | " # Column Non-Null Count Dtype \n", 1798 | "--- ------ -------------- ----- \n", 1799 | " 0 step 3800 non-null int64 \n", 1800 | " 1 type 3800 non-null int64 \n", 1801 | " 2 amount 3800 non-null float64\n", 1802 | " 3 oldbalanceOrg 3800 non-null float64\n", 1803 | " 4 newbalanceOrig 3800 non-null float64\n", 1804 | " 5 oldbalanceDest 3800 non-null float64\n", 1805 | " 6 newbalanceDest 3800 non-null float64\n", 1806 | " 7 isFlaggedFraud 3800 non-null int64 \n", 1807 | "dtypes: float64(5), int64(3)\n", 1808 | "memory usage: 237.6 KB\n" 1809 | ] 1810 | } 1811 | ] 1812 | }, 1813 | { 1814 | "cell_type": "code", 1815 | "source": [ 1816 | "from sklearn.linear_model import LogisticRegression\n", 1817 | "lr=LogisticRegression()\n", 1818 | "lr.fit(xtrain,ytrain)" 1819 | ], 1820 | "metadata": { 1821 | "colab": { 1822 | "base_uri": "https://localhost:8080/", 1823 | "height": 74 1824 | }, 1825 | "id": "2rai8l9466iQ", 1826 | "outputId": "6f625d27-07a4-414e-fadb-eb394177c654" 1827 | }, 1828 | "execution_count": 54, 1829 | "outputs": [ 1830 | { 1831 | "output_type": "execute_result", 1832 | "data": { 1833 | "text/plain": [ 1834 | "LogisticRegression()" 1835 | ], 1836 | "text/html": [ 1837 | "
LogisticRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" 1838 | ] 1839 | }, 1840 | "metadata": {}, 1841 | "execution_count": 54 1842 | } 1843 | ] 1844 | }, 1845 | { 1846 | "cell_type": "code", 1847 | "source": [ 1848 | "ypred=lr.predict(xtest)\n" 1849 | ], 1850 | "metadata": { 1851 | "id": "CJRIfdtS8ynz" 1852 | }, 1853 | "execution_count": 61, 1854 | "outputs": [] 1855 | }, 1856 | { 1857 | "cell_type": "code", 1858 | "source": [ 1859 | "from sklearn.metrics import accuracy_score, recall_score, precision_score\n", 1860 | "print(\"accuracy_score :\", accuracy_score(ytest, ypred))\n", 1861 | "print(\"recall_score :\", recall_score(ytest, ypred))\n", 1862 | "print(\"precision_score :\", precision_score(ytest, ypred))\n" 1863 | ], 1864 | "metadata": { 1865 | "colab": { 1866 | "base_uri": "https://localhost:8080/" 1867 | }, 1868 | "id": "Sqmyo3_t84E7", 1869 | "outputId": "60d35975-5a83-4059-8573-821fb37236a4" 1870 | }, 1871 | "execution_count": 57, 1872 | "outputs": [ 1873 | { 1874 | "output_type": "stream", 1875 | "name": "stdout", 1876 | "text": [ 1877 | "accuracy_score : 0.9081920903954802\n", 1878 | "recall_score : 1.0\n", 1879 | "precision_score : 0.057971014492753624\n" 1880 | ] 1881 | } 1882 | ] 1883 | }, 1884 | { 1885 | "cell_type": "code", 1886 | "source": [ 1887 | "from sklearn.metrics import confusion_matrix\n", 1888 | "cm=confusion_matrix(ytest, ypred)\n", 1889 | "print(cm)\n", 1890 | "sns.heatmap(cm,annot=True)" 1891 | ], 1892 | "metadata": { 1893 | "id": "x4KvjUaI9I_k", 1894 | "colab": { 1895 | "base_uri": "https://localhost:8080/", 1896 | "height": 482 1897 | }, 1898 | "outputId": "1fe5fa23-4cd0-4976-fb19-2447482beea8" 1899 | }, 1900 | "execution_count": 59, 1901 | "outputs": [ 1902 | { 1903 | "output_type": "stream", 1904 | "name": "stdout", 1905 | "text": [ 1906 | "[[639 65]\n", 1907 | " [ 0 4]]\n" 1908 | ] 1909 | }, 1910 | { 1911 | "output_type": "execute_result", 1912 | "data": { 1913 | "text/plain": [ 1914 | "" 1915 | ] 1916 | }, 1917 | "metadata": {}, 1918 | "execution_count": 59 1919 | }, 1920 | { 1921 | "output_type": "display_data", 1922 | "data": { 1923 | "text/plain": [ 1924 | "
" 1925 | ], 1926 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgcAAAGdCAYAAACGtNCDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAApTklEQVR4nO3de1yUdd7/8TcIjIoCojIjGmp3llKeQsPpeKesVNSdK5X6M8NydXORUlKL1tSsDdcOlqVSVuJuuZXtbQdLzbC0Eg/RWoaHrNxIaQbRlKR1QGbuP/o5cl2igg3O2LyePa7HQ77XYT6z+zA+fT7f7/cK8Xg8HgEAAPx/of4OAAAABBaSAwAAYEByAAAADEgOAACAAckBAAAwIDkAAAAGJAcAAMCA5AAAABiQHAAAAIMwfwdwVHX5t/4OAQg43ROH+DsEICBtL9vUqM/35e+k8Dbn+uxZZ0rAJAcAAAQMd42/I/Ar2goAAMCAygEAAGYet78j8CuSAwAAzNwkBwAAoBZPkFcOmHMAAAAMqBwAAGBGWwEAABjQVgAAADiGygEAAGZBvgkSyQEAAGa0FQAAAI6hcgAAgBmrFQAAQG1sggQAAFALlQMAAMxoKwAAAAPaCgAAwMBd47ujgfbs2aNbb71VrVu3VrNmzdS9e3d9+umn3vMej0dTp05Vu3bt1KxZM6WkpGjnzp2GZ+zfv1/Dhw9XVFSUYmJiNGrUKB06dKjeMZAcAAAQIH788UdddtllCg8P1/Lly7V161Y9/vjjatWqlfeaWbNmac6cOcrLy9OGDRsUGRmp1NRUHT582HvN8OHDVVxcrFWrVmnZsmVau3atxowZU+84Qjwej8en3+w0VZd/6+8QgIDTPXGIv0MAAtL2sk2N+nzXtg989ixLt6vrfe19992nTz75RB999FGd5z0ej+Lj43XPPfdo4sSJkqSDBw/KarUqPz9fQ4cO1bZt25SYmKhNmzapT58+kqQVK1bouuuu0+7duxUfH3/KOKgcAABg5nb77HC5XKqoqDAcLperzo9966231KdPH918882Ki4tT7969tWDBAu/5Xbt2yeFwKCUlxTsWHR2t5ORkFRYWSpIKCwsVExPjTQwkKSUlRaGhodqwYUO9vj7JAQAAjSg3N1fR0dGGIzc3t85rv/32W82fP19dunTRypUrNXbsWN11111atGiRJMnhcEiSrFar4T6r1eo953A4FBcXZzgfFham2NhY7zWnwmoFAADMfLhaIScnR9nZ2YYxi8VS57Vut1t9+vTRI488Iknq3bu3vvzyS+Xl5SkjI8NnMZ0KlQMAAMx82FawWCyKiooyHCdKDtq1a6fExETDWLdu3VRSUiJJstlskiSn02m4xul0es/ZbDaVlZUZzh85ckT79+/3XnMqJAcAAASIyy67TDt27DCMffXVV+rYsaMkqXPnzrLZbCooKPCer6io0IYNG2S32yVJdrtdBw4cUFFRkfea1atXy+12Kzk5uV5x0FYAAMDE42n4/gS+MGHCBF166aV65JFHdMstt2jjxo167rnn9Nxzz0mSQkJCNH78eD388MPq0qWLOnfurAceeEDx8fEaNGiQpF8qDddcc41Gjx6tvLw8VVdXa9y4cRo6dGi9VipIJAcAABzPTzsk9u3bV0uXLlVOTo5mzJihzp0768knn9Tw4cO910yePFmVlZUaM2aMDhw4oMsvv1wrVqxQ06ZNvde8/PLLGjdunAYMGKDQ0FClp6drzpw59Y6DfQ6AAMY+B0DdGnufg8Obl/nsWU17Xe+zZ50pVA4AADDjxUsAAMAgyF+8RHIAAIDZabww6beEpYwAAMCAygEAAGa0FQAAgEGQT0ikrQAAAAyoHAAAYEZbAQAAGNBWAAAAOIbKAQAAZkFeOSA5AADAxF9vZQwUtBUAAIABlQMAAMxoKwAAAAOWMgIAAIMgrxww5wAAABhQOQAAwIy2AgAAMKCtAAAAcAyVAwAAzGgrAAAAA9oKAAAAx1A5AADALMgrByQHAACYBfmcA9oKAADAgMoBAABmtBUAAIBBkLcVSA4AADAL8soBcw4AAIABlQMAAMxoKwAAAAPaCgAAAMdQOQAAwCzIKwckBwAAmHk8/o7Ar2grAAAAAyoHAACY0VYAAAAGQZ4c0FYAAAAGVA4AADBjEyQAAGAQ5G0FkgMAAMxYyggAAHAMlQMAAMxoKwAAAIMgTw5oKwAAAAMqBwAAmAX5UkYqBwAAmHjcHp8dDTF9+nSFhIQYjq5du3rPHz58WJmZmWrdurVatGih9PR0OZ1OwzNKSkqUlpam5s2bKy4uTpMmTdKRI0caFAeVAwAAAsiFF16o999/3/tzWNixX9UTJkzQO++8oyVLlig6Olrjxo3T4MGD9cknn0iSampqlJaWJpvNpnXr1umHH37QbbfdpvDwcD3yyCP1joHkAAAAMz9OSAwLC5PNZjtu/ODBg3rhhRe0ePFi9e/fX5K0cOFCdevWTevXr1e/fv303nvvaevWrXr//fdltVrVq1cvPfTQQ7r33ns1ffp0RURE1CsG2goAAJh53D47XC6XKioqDIfL5TrhR+/cuVPx8fE699xzNXz4cJWUlEiSioqKVF1drZSUFO+1Xbt2VUJCggoLCyVJhYWF6t69u6xWq/ea1NRUVVRUqLi4uN5fn+QAAIBGlJubq+joaMORm5tb57XJycnKz8/XihUrNH/+fO3atUtXXHGFfvrpJzkcDkVERCgmJsZwj9VqlcPhkCQ5HA5DYnD0/NFz9UVbAQAAswZOJDyZnJwcZWdnG8YsFkud11577bXeP/fo0UPJycnq2LGjXnvtNTVr1sxnMZ0KlQMAAMzcbp8dFotFUVFRhuNEyYFZTEyMzj//fH399dey2WyqqqrSgQMHDNc4nU7vHAWbzXbc6oWjP9c1j+FESA4AADDzYXLwaxw6dEjffPON2rVrp6SkJIWHh6ugoMB7fseOHSopKZHdbpck2e12bdmyRWVlZd5rVq1apaioKCUmJtb7c2krAAAQICZOnKgbbrhBHTt2VGlpqaZNm6YmTZpo2LBhio6O1qhRo5Sdna3Y2FhFRUUpKytLdrtd/fr1kyQNHDhQiYmJGjFihGbNmiWHw6EpU6YoMzOz3tUKieQAAIDj+emVzbt379awYcO0b98+tW3bVpdffrnWr1+vtm3bSpJmz56t0NBQpaeny+VyKTU1VfPmzfPe36RJEy1btkxjx46V3W5XZGSkMjIyNGPGjAbFEeLxBMZLq6vLv/V3CAHLubdcT8x7UR+v/1SHD7uU0CFeD90/QRd1O/+U9372RbFuHzdZ53XupH8umtuoca5c/ZGeWfA37XE41bFDe00Ye7uuvPQSSVL1kSN6+rlF+qjwU+0u/UEtIiPVr29vTbjzdsW1bd2ocZ3NuicO8XcIQSfO1lYTp2bpyv52NW3WVCW7duv+u2foy8+3SZJy50zT74deb7jno9WFGj30Ln+EG7S2l21q1Of//MRonz2refYCnz3rTKFyEOAOVvykEXfeo0su7qm8xx9Sq5hofff9HkW1bHHKeyt+OqT7H3pMyUm9tG//gV8Vx8bPvtCUvzyu9/65qM7z/9qyVZOnz9Tdf7xdV112id5970PdlfOQlix8Wl3O7aTDh13auuMb/XHkMF1w3rmq+OknzXzqWY2790G99uKcXxUb4CtR0S31j2XPa8MnRRo97G7t33dAnc49RwcPVhiuW1uwTvfffey/xKpcVWc6VKBRkRwEuBdfXiJbXFs9/Odjy2A6xNdvxumMR59W2u+uVmiTUK1eW2g453a79cJLS/T6W8tVvu9HdUxorztHDtPAq684rThfeu1NXZbcR3cMv0mSlDXmNhVu+kyLX39b0yZnqWWLSD3/lHHrzvuzx2rYH8brB0eZ2tniTutzAV/6Q1aGfih1Gn7x7ykpPe66qqoqlZftO5Oh4Uzz4VLGsxGrFQLcBx+v14Vduyh7yl90ZdpQ3TQyU6+/tfyU9y195z3tLnVo7B3D6zy/4O+v6q0VBZo6KUtvvJSn2275ve6b8ag2/euL04rz8+JtsvfpZRi7NDlJnxdvO+E9hw79rJCQELVsGXlanwn4Wv/UK/Tl5m168vlcfVK8Uv9b8JJuvnXQcdddcmmSPileqeXrXte0WfcqplX0mQ8WjcuHOySejRpcOSgvL9eLL76owsJC725LNptNl156qUaOHOmdNAHf2F3q0KtvvKPbhgzW6NuG6MttXyl3dp7Cw8J043W/q/Oe777fo9nzF+pv8x5VWFiT485XVVXp+b+9qgVP5arXRd0kSee0b6fPvijWkjeXq2/vHg2Os3zfj2od28ow1ia2lcr3/Vjn9S5XlWbPf1HXpVylFpEkBwgM53Rsr2Ej05Wft1jPPrlQ3XtfqD//5R5VV1frjVffkSR9tHqd3nvnA+0p2aNzOnXQhPv/pOf+8ZSGXneH3H7cjx/wpQYlB5s2bVJqaqqaN2+ulJQUnX/+LxPinE6n5syZo5kzZ2rlypXq06fPSZ/jcrmO21c61OVq0DKLYOF2e3Rh1y4af+dISVK388/Tzm+/02tvvFtnclBTU6PJ0/+qzFG3qlNChzqfWbL7B/3nsEujx99vGK+uPqJu5/+X9+e+Kb8/FkeNW1XV1Yax6wf217TJWQ3+TtVHjuieBx6Rx+PRA5PGNfh+oLGEhIaq+PNtmv3IL7O/t335lbp0PVdDMwZ7k4N331jlvf6rbd9ox9av9f6mN3TJZUla/1HjTpLDGRTkbYUGJQdZWVm6+eablZeXp5CQEMM5j8ejO++8U1lZWd4XQJxIbm6uHnzwQcPYlEl3aerkuxsSTlBo2zpW/9UpwTB2bqdz9P6Hn9R5feXP/1Hx9p3avvMbPTL7l3/Bud0eeTwe9bwyTc/N/ouaNW0qSZr36IOytm1juD88PNz753/mH1vd8EXxds2e/6IWPjPLOxYZ2dz75zatW2nffmOVoHz/j2rT2lhNOJoYlDrL9OKcmVQNEFD2Osv19Q7jyqlvdv5bA6/vf8J7dn+3R/vLf1THzh1IDn5DPEFeBWpQcvD5558rPz//uMRAkkJCQjRhwgT17t37lM+pa5/p0J/2NCSUoNG7R6L+XbLbMPZdyZ4TTuBrEdlcS/8+3zD2yv8u08aiz/XEX/6s9u1s8rjdiogI1w/OvSdtISR0iPf+2VFWriZNmhjGaut5YTetL9qsEUOOVRYKN/1LPS/s5v35aGJQ8n2pXnx6pmKio078xQE/+NfGz9X5vI6GsU7nJqh094lfWGNtF6eY2GiVOZmgiN+OBk1ItNls2rhx4wnPb9y48bi3QdXl1+wzHWxGDBmkL4q367lFr6hkd6neee8Dvf7Wcg0bfGyd9ez5C5Xz0GOSpNDQUHU5t5PhiG0Vo4iICHU5t5OaN2uqyMjmGjksXbPmPKc3312lkt2l2rrja7285E29+e6qE4VyUrfecqM+WV+k/H/8U99+973mvvCSirfv1P+76QZJvyQG2X/+i4q379TMaZPldrtVvm+/yvftV3V19a//Hwrwgfxn/6GeSd31x7tHKqFzB10/OFW3jPi9Xn5xiSSpeWQzTZp2l3omXaT257RTvyv6at7fHlPJru/18Qcnr5jiLOP2+O44CzWocjBx4kSNGTNGRUVFGjBggDcRcDqdKigo0IIFC/TYY481SqDBqnu3C/Rk7gN6Ki9fefmL1b6dTffe/Uddn3qszFm+b79+cJad5CnHyxp9m1rFROv5v7+m70sdimoRqW4XnKfRt53epju9uyfqr9Pv1dPPLdJTz+arY4f2mpP7gLqc20mSVLZ3nz74eL0k6aaRmYZ7X3z6r7rk4oZPggR87cvNW5U1cpKy/5ypP93zB+0uKVXuA09o2T9XSJJqaty6IPE8DbolTS2jW2qvY68++XCDnvprnqqrSHJ/U87SVQa+0uAdEl999VXNnj1bRUVFqqmpkfTLdo1JSUnKzs7WLbfcclqBsEMicDx2SATq1tg7JFbOqHsZ+OmInPqyz551pjR4KeOQIUM0ZMgQVVdXq7y8XJLUpk0bw0Q2AABw9jrtHRLDw8PVrl07X8YCAEBgYLUCAAAwOEsnEvoK2ycDAAADKgcAAJgF+WoFkgMAAMxoKwAAABxD5QAAABPerQAAAIxoKwAAABxD5QAAALMgrxyQHAAAYMZSRgAAYBDklQPmHAAAAAMqBwAAmHiCvHJAcgAAgFmQJwe0FQAAgAGVAwAAzNghEQAAGNBWAAAAOIbKAQAAZkFeOSA5AADAxOMJ7uSAtgIAADCgcgAAgBltBQAAYEByAAAAagv27ZOZcwAAAAyoHAAAYBbklQOSAwAAzIJ792TaCgAAwIjKAQAAJsE+IZHkAAAAsyBPDmgrAAAAAyoHAACYBfmERJIDAABMgn3OAW0FAABgQOUAAACzIG8rUDkAAMDE4/b47DhdM2fOVEhIiMaPH+8dO3z4sDIzM9W6dWu1aNFC6enpcjqdhvtKSkqUlpam5s2bKy4uTpMmTdKRI0ca9NkkBwAAmLl9eJyGTZs26dlnn1WPHj0M4xMmTNDbb7+tJUuWaM2aNSotLdXgwYO952tqapSWlqaqqiqtW7dOixYtUn5+vqZOndqgzyc5AAAggBw6dEjDhw/XggUL1KpVK+/4wYMH9cILL+iJJ55Q//79lZSUpIULF2rdunVav369JOm9997T1q1b9dJLL6lXr1669tpr9dBDD2nu3LmqqqqqdwwkBwAAmHjcvjtcLpcqKioMh8vlOuFnZ2ZmKi0tTSkpKYbxoqIiVVdXG8a7du2qhIQEFRYWSpIKCwvVvXt3Wa1W7zWpqamqqKhQcXFxvb8/yQEAAGY+bCvk5uYqOjracOTm5tb5sa+88oo+++yzOs87HA5FREQoJibGMG61WuVwOLzX1E4Mjp4/eq6+WK0AAEAjysnJUXZ2tmHMYrEcd93333+vu+++W6tWrVLTpk3PVHh1onIAAICJL9sKFotFUVFRhqOu5KCoqEhlZWW6+OKLFRYWprCwMK1Zs0Zz5sxRWFiYrFarqqqqdODAAcN9TqdTNptNkmSz2Y5bvXD056PX1AfJAQAAZn5YrTBgwABt2bJFmzdv9h59+vTR8OHDvX8ODw9XQUGB954dO3aopKREdrtdkmS327VlyxaVlZV5r1m1apWioqKUmJhY71hoKwAAEABatmypiy66yDAWGRmp1q1be8dHjRql7OxsxcbGKioqSllZWbLb7erXr58kaeDAgUpMTNSIESM0a9YsORwOTZkyRZmZmXVWK06E5AAAABNPgO6QOHv2bIWGhio9PV0ul0upqamaN2+e93yTJk20bNkyjR07Vna7XZGRkcrIyNCMGTMa9DkhHo8nIN4uUV3+rb9DAAJO98Qh/g4BCEjbyzY16vPLBlzls2fFFazx2bPOFCoHAACYBGrl4ExhQiIAADCgcgAAgJknxN8R+BXJAQAAJrQVAAAAaqFyAACAicdNWwEAANRCWwEAAKAWKgcAAJh4WK0AAABqo60AAABQC5UDAABMWK0AAAAMAuOVhP5DcgAAgEmwVw6YcwAAAAyoHAAAYBLslQOSAwAATIJ9zgFtBQAAYEDlAAAAE9oKAADAINi3T6atAAAADKgcAABgEuzvViA5AADAxE1bAQAA4BgqBwAAmAT7hESSAwAATFjKCAAADNghEQAAoBYqBwAAmNBWAAAABixlBAAAqIXKAQAAJixlBAAABqxWAAAAqIXKAQAAJsE+IZHkAAAAk2Cfc0BbAQAAGFA5AADAJNgnJJIcAABgwpyDANEs/gp/hwAEnOD+1xPgP8w5AAAAqCVgKgcAAAQK2goAAMAgyOcj0lYAAABGVA4AADChrQAAAAxYrQAAAFALyQEAACZuHx4NMX/+fPXo0UNRUVGKioqS3W7X8uXLvecPHz6szMxMtW7dWi1atFB6erqcTqfhGSUlJUpLS1Pz5s0VFxenSZMm6ciRIw2Kg+QAAAATj0J8djREhw4dNHPmTBUVFenTTz9V//79deONN6q4uFiSNGHCBL399ttasmSJ1qxZo9LSUg0ePNh7f01NjdLS0lRVVaV169Zp0aJFys/P19SpUxsUR4jHExg7SIdFtPd3CEDACe6uJ3Bi1VV7GvX5a203++xZVzqW/Kr7Y2Nj9eijj+qmm25S27ZttXjxYt10002SpO3bt6tbt24qLCxUv379tHz5cl1//fUqLS2V1WqVJOXl5enee+/V3r17FRERUa/PpHIAAICJ2+O7w+VyqaKiwnC4XK5TxlBTU6NXXnlFlZWVstvtKioqUnV1tVJSUrzXdO3aVQkJCSosLJQkFRYWqnv37t7EQJJSU1NVUVHhrT7UB8kBAAAmboX47MjNzVV0dLThyM3NPeFnb9myRS1atJDFYtGdd96ppUuXKjExUQ6HQxEREYqJiTFcb7Va5XA4JEkOh8OQGBw9f/RcfbGUEQAAk4bOFTiZnJwcZWdnG8YsFssJr7/gggu0efNmHTx4UK+//royMjK0Zs0an8VTHyQHAAA0IovFctJkwCwiIkLnnXeeJCkpKUmbNm3SU089pSFDhqiqqkoHDhwwVA+cTqdsNpskyWazaePGjYbnHV3NcPSa+qCtAACAib+WMtYZi9stl8ulpKQkhYeHq6CgwHtux44dKikpkd1ulyTZ7XZt2bJFZWVl3mtWrVqlqKgoJSYm1vszqRwAAGDiy7ZCQ+Tk5Ojaa69VQkKCfvrpJy1evFgffvihVq5cqejoaI0aNUrZ2dmKjY1VVFSUsrKyZLfb1a9fP0nSwIEDlZiYqBEjRmjWrFlyOByaMmWKMjMzG1S9IDkAACBAlJWV6bbbbtMPP/yg6Oho9ejRQytXrtTvfvc7SdLs2bMVGhqq9PR0uVwupaamat68ed77mzRpomXLlmns2LGy2+2KjIxURkaGZsyY0aA42OcACGDscwDUrbH3OVhhHeqzZ13jfMVnzzpTqBwAAGDii7kCZzMmJAIAAAMqBwAAmPhrQmKgIDkAAMDEHdy5AW0FAABgROUAAAATN20FAABQW0Cs8fcjkgMAAExYyggAAFALlQMAAEzcIcw5AAAAtQT7nAPaCgAAwIDKAQAAJsE+IZHkAAAAE3ZIBAAAqIXKAQAAJuyQCAAADFitAAAAUAuVAwAATIJ9QiLJAQAAJixlBAAABsw5AAAAqIXKAQAAJsw5AAAABsE+54C2AgAAMKByAACASbBXDkgOAAAw8QT5nAPaCgAAwIDKAQAAJrQVAACAQbAnB7QVAACAAZUDAABMgn37ZJIDAABM2CERAAAYMOcAAACgFioHAACYBHvlgOQAAACTYJ+QSFsBAAAYUDkAAMCE1QoAAMAg2Occ0FYAAAAGVA4AADAJ9gmJJAcAAJi4gzw9oK0AAAAMqBwAAGAS7BMSSQ4AADAJ7qYCbQUAAI7j9uHRELm5uerbt69atmypuLg4DRo0SDt27DBcc/jwYWVmZqp169Zq0aKF0tPT5XQ6DdeUlJQoLS1NzZs3V1xcnCZNmqQjR47UOw6SAwAAAsSaNWuUmZmp9evXa9WqVaqurtbAgQNVWVnpvWbChAl6++23tWTJEq1Zs0alpaUaPHiw93xNTY3S0tJUVVWldevWadGiRcrPz9fUqVPrHUeIx+MJiOpJWER7f4cABJwg36QNOKHqqj2N+vypnYb77Fkz/v3yad+7d+9excXFac2aNbryyit18OBBtW3bVosXL9ZNN90kSdq+fbu6deumwsJC9evXT8uXL9f111+v0tJSWa1WSVJeXp7uvfde7d27VxEREaf8XCoHAACYuOXx2fFrHDx4UJIUGxsrSSoqKlJ1dbVSUlK813Tt2lUJCQkqLCyUJBUWFqp79+7exECSUlNTVVFRoeLi4np9LhMSAQBoRC6XSy6XyzBmsVhksVhOep/b7db48eN12WWX6aKLLpIkORwORUREKCYmxnCt1WqVw+HwXlM7MTh6/ui5+qByAACAiceHR25urqKjow1Hbm7uKWPIzMzUl19+qVdeecXXX++UqBwAAGDiy30OcnJylJ2dbRg7VdVg3LhxWrZsmdauXasOHTp4x202m6qqqnTgwAFD9cDpdMpms3mv2bhxo+F5R1czHL3mVKgcAADQiCwWi6KiogzHiZIDj8ejcePGaenSpVq9erU6d+5sOJ+UlKTw8HAVFBR4x3bs2KGSkhLZ7XZJkt1u15YtW1RWVua9ZtWqVYqKilJiYmK9YqZyAACAib/erZCZmanFixfrzTffVMuWLb1zBKKjo9WsWTNFR0dr1KhRys7OVmxsrKKiopSVlSW73a5+/fpJkgYOHKjExESNGDFCs2bNksPh0JQpU5SZmXnKisVRJAcAAJj4a43//PnzJUn//d//bRhfuHChRo4cKUmaPXu2QkNDlZ6eLpfLpdTUVM2bN897bZMmTbRs2TKNHTtWdrtdkZGRysjI0IwZM+odB/scAAGMfQ6AujX2PgeTOw3z2bNm/fsfPnvWmULlAAAAE168BAAADPw15yBQkBwAAGAS3KkBSxkBAIAJlQMAAEyYcwAAAAw8Qd5YoK0AAAAMqBwAAGBCWwEAABgE+1JG2goAAMCAygEAACbBXTegcoBaxt6Zoa+/Wq9DFd9o3cdvq2+fXv4OCQgokyZlqrpqjx5/7EF/h4JG5pbHZ8fZiOQAkqSbb/4fPfboND308BPqm3yNPv9iq95952W1bdva36EBAaFPUk+N/sOt+uKLrf4OBWh0JAeQJE24e7Sef2GxFv3tNW3btlN/yrxPP//8H90+cqi/QwP8LjKyuRb97RndOXayfvzxgL/DwRng9uFxNiI5gMLDw3XxxT1UsPoj75jH41HB6o/Vr1+SHyMDAsPTcx7R8ncLtLrW3xH8tnl8+M/ZiAmJUJs2sQoLC1OZs9wwXla2V10v+C8/RQUEhltu+R/17n2R+tnT/B0KzqCz9b/4fcXnlYPvv/9ed9xxx0mvcblcqqioMBwez9mZXQH47erQIV5PPD5Dt2VkyeVy+Tsc4IzxeXKwf/9+LVq06KTX5ObmKjo62nB43D/5OhTUU3n5fh05ckRx1jaG8bi4tnI49/opKsD/Lr64u6zWttq4YYX+8/N3+s/P3+mqqy7VuHF36D8/f6fQUDqzv1W0FRrorbfeOun5b7/99pTPyMnJUXZ2tmGsVeuuDQ0FPlJdXa3PPvtC/a++XG+9tVKSFBISov5XX6558xf6OTrAf1av/li9evc3jD2/4Ant2PGNHn1srtzuYC8+/3YF+/+zDU4OBg0apJCQkJO2AUJCQk76DIvFIovF0qB70LhmP7VAC1+YraLPvtCmTf/SXVmjFRnZTPmLXvV3aIDfHDpUqeLiHYaxysqftW/fj8eNA78lDU4O2rVrp3nz5unGG2+s8/zmzZuVlMQM97PNkiVvqW2bWE2fOlE2W1t9/nmx0q6/VWVl5ae+GQB+Y9xBPg+uwclBUlKSioqKTpgcnKqqgMA1b36+5s3P93cYQEBL+d3N/g4BZ0Cw/xZrcHIwadIkVVZWnvD8eeedpw8++OBXBQUAAPynwcnBFVdccdLzkZGRuuqqq047IAAA/O1sfSeCr7AJEgAAJmfrEkRfYZEuAAAwoHIAAIAJ+xwAAAAD5hwAAAAD5hwAAADUQuUAAAAT5hwAAACDYN/pl7YCAAAwoHIAAIAJqxUAAIBBsM85oK0AAAAMqBwAAGAS7PsckBwAAGAS7HMOaCsAAAADKgcAAJgE+z4HJAcAAJgE+2oFkgMAAEyCfUIicw4AAIABlQMAAEyCfbUCyQEAACbBPiGRtgIAADCgcgAAgEmwtxWoHAAAYOLx4T8NsXbtWt1www2Kj49XSEiI3njjDWNcHo+mTp2qdu3aqVmzZkpJSdHOnTsN1+zfv1/Dhw9XVFSUYmJiNGrUKB06dKhBcZAcAAAQICorK9WzZ0/NnTu3zvOzZs3SnDlzlJeXpw0bNigyMlKpqak6fPiw95rhw4eruLhYq1at0rJly7R27VqNGTOmQXGEeAJk1kVYRHt/hwAEnBB/BwAEqOqqPY36/CvbD/DZs9buKTit+0JCQrR06VINGjRI0i9Vg/j4eN1zzz2aOHGiJOngwYOyWq3Kz8/X0KFDtW3bNiUmJmrTpk3q06ePJGnFihW67rrrtHv3bsXHx9frs6kcAABg4vHh4XK5VFFRYThcLleDY9q1a5ccDodSUlK8Y9HR0UpOTlZhYaEkqbCwUDExMd7EQJJSUlIUGhqqDRs21PuzSA4AAGhEubm5io6ONhy5ubkNfo7D4ZAkWa1Ww7jVavWeczgciouLM5wPCwtTbGys95r6YLUCAAAmvlytkJOTo+zsbMOYxWLx2fMbA8kBAAAmvkwOLBaLT5IBm80mSXI6nWrXrp133Ol0qlevXt5rysrKDPcdOXJE+/fv995fH7QVAAAw8Xg8Pjt8pXPnzrLZbCooODbBsaKiQhs2bJDdbpck2e12HThwQEVFRd5rVq9eLbfbreTk5Hp/FpUDAAACxKFDh/T11197f961a5c2b96s2NhYJSQkaPz48Xr44YfVpUsXde7cWQ888IDi4+O9Kxq6deuma665RqNHj1ZeXp6qq6s1btw4DR06tN4rFSSSAwAAjuOvHRI//fRTXX311d6fj85VyMjIUH5+viZPnqzKykqNGTNGBw4c0OWXX64VK1aoadOm3ntefvlljRs3TgMGDFBoaKjS09M1Z86cBsXBPgdAAGOfA6Bujb3PQd/4K332rE2la332rDOFOQcAAMCAtgIAACYBUlT3G5IDAABMeCsjAABALVQOAAAwoa0AAAAMaCsAAADUQuUAAAATT5BXDkgOAAAwcTPnAAAA1BbslQPmHAAAAAMqBwAAmNBWAAAABrQVAAAAaqFyAACACW0FAABgQFsBAACgFioHAACY0FYAAAAGtBUAAABqoXIAAICJx+P2dwh+RXIAAICJO8jbCiQHAACYeIJ8QiJzDgAAgAGVAwAATGgrAAAAA9oKAAAAtVA5AADAhB0SAQCAATskAgAA1ELlAAAAk2CfkEhyAACASbAvZaStAAAADKgcAABgQlsBAAAYsJQRAAAYBHvlgDkHAADAgMoBAAAmwb5ageQAAAAT2goAAAC1UDkAAMCE1QoAAMCAFy8BAADUQuUAAAAT2goAAMCA1QoAAAC1UDkAAMCECYkAAMDA4/H47GiouXPnqlOnTmratKmSk5O1cePGRviGJ0dyAACAib+Sg1dffVXZ2dmaNm2aPvvsM/Xs2VOpqakqKytrpG9atxBPgMy6CIto7+8QgIAT4u8AgABVXbWnUZ8f7sPfSQ2JNTk5WX379tUzzzwjSXK73TrnnHOUlZWl++67z2cxnQqVAwAATDw+PFwulyoqKgyHy+U67jOrqqpUVFSklJQU71hoaKhSUlJUWFjYaN+1LgEzIfFII2eBqB+Xy6Xc3Fzl5OTIYrH4OxwgIPD3Ivj48nfS9OnT9eCDDxrGpk2bpunTpxvGysvLVVNTI6vVahi3Wq3avn27z+Kpj4BpKyAwVFRUKDo6WgcPHlRUVJS/wwECAn8v8Gu4XK7jKgUWi+W4RLO0tFTt27fXunXrZLfbveOTJ0/WmjVrtGHDhjMSrxRAlQMAAH6L6koE6tKmTRs1adJETqfTMO50OmWz2RorvDox5wAAgAAQERGhpKQkFRQUeMfcbrcKCgoMlYQzgcoBAAABIjs7WxkZGerTp48uueQSPfnkk6qsrNTtt99+RuMgOYCBxWLRtGnTmHQF1MLfC5wpQ4YM0d69ezV16lQ5HA716tVLK1asOG6SYmNjQiIAADBgzgEAADAgOQAAAAYkBwAAwIDkAAAAGJAcwCsQXhMKBJK1a9fqhhtuUHx8vEJCQvTGG2/4OyTgjCA5gKTAeU0oEEgqKyvVs2dPzZ0719+hAGcUSxkhKXBeEwoEqpCQEC1dulSDBg3ydyhAo6NygIB6TSgAwP9IDnDS14Q6HA4/RQUA8BeSAwAAYEBygIB6TSgAwP9IDhBQrwkFAPgfb2WEpMB5TSgQSA4dOqSvv/7a+/OuXbu0efNmxcbGKiEhwY+RAY2LpYzweuaZZ/Too496XxM6Z84cJScn+zsswG8+/PBDXX311ceNZ2RkKD8//8wHBJwhJAcAAMCAOQcAAMCA5AAAABiQHAAAAAOSAwAAYEByAAAADEgOAACAAckBAAAwIDkAAAAGJAcAAMCA5AAAABiQHAAAAAOSAwAAYPB/IJsYp2UEIz8AAAAASUVORK5CYII=\n" 1927 | }, 1928 | "metadata": {} 1929 | } 1930 | ] 1931 | }, 1932 | { 1933 | "cell_type": "code", 1934 | "source": [ 1935 | "from sklearn.ensemble import RandomForestClassifier\n", 1936 | "rfc = RandomForestClassifier(n_estimators=10).fit(xtrain, ytrain)\n" 1937 | ], 1938 | "metadata": { 1939 | "id": "vN7HfaB4Cssk" 1940 | }, 1941 | "execution_count": 64, 1942 | "outputs": [] 1943 | }, 1944 | { 1945 | "cell_type": "code", 1946 | "source": [ 1947 | "ypred1=rfc.predict(xtest)" 1948 | ], 1949 | "metadata": { 1950 | "id": "ORoQetdiFs0F" 1951 | }, 1952 | "execution_count": 65, 1953 | "outputs": [] 1954 | }, 1955 | { 1956 | "cell_type": "code", 1957 | "source": [ 1958 | "print(\"accuracy_score :\", accuracy_score(ytest, ypred1))\n", 1959 | "print(\"recall_score :\", recall_score(ytest, ypred1))\n", 1960 | "print(\"confusion_matrix :\", precision_score(ytest, ypred1))\n", 1961 | "cm=confusion_matrix(ytest, ypred1)\n", 1962 | "print(\"precision_score :\", cm)\n", 1963 | "sns.heatmap(cm,annot=True)" 1964 | ], 1965 | "metadata": { 1966 | "colab": { 1967 | "base_uri": "https://localhost:8080/", 1968 | "height": 569 1969 | }, 1970 | "id": "C49N6K68F2vA", 1971 | "outputId": "89d809be-7ca2-4a34-f33d-7d00a3b7f06f" 1972 | }, 1973 | "execution_count": 66, 1974 | "outputs": [ 1975 | { 1976 | "output_type": "stream", 1977 | "name": "stdout", 1978 | "text": [ 1979 | "accuracy_score : 0.9915254237288136\n", 1980 | "recall_score : 0.75\n", 1981 | "precision_score : 0.375\n", 1982 | "precision_score : [[699 5]\n", 1983 | " [ 1 3]]\n", 1984 | "[[699 5]\n", 1985 | " [ 1 3]]\n" 1986 | ] 1987 | }, 1988 | { 1989 | "output_type": "execute_result", 1990 | "data": { 1991 | "text/plain": [ 1992 | "" 1993 | ] 1994 | }, 1995 | "metadata": {}, 1996 | "execution_count": 66 1997 | }, 1998 | { 1999 | "output_type": "display_data", 2000 | "data": { 2001 | "text/plain": [ 2002 | "
" 2003 | ], 2004 | "image/png": "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\n" 2005 | }, 2006 | "metadata": {} 2007 | } 2008 | ] 2009 | }, 2010 | { 2011 | "cell_type": "code", 2012 | "source": [], 2013 | "metadata": { 2014 | "id": "cIR_TkyiH9BG" 2015 | }, 2016 | "execution_count": null, 2017 | "outputs": [] 2018 | } 2019 | ] 2020 | } --------------------------------------------------------------------------------