├── 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 | " "
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 | " step \n",
124 | " type \n",
125 | " amount \n",
126 | " nameOrig \n",
127 | " oldbalanceOrg \n",
128 | " newbalanceOrig \n",
129 | " nameDest \n",
130 | " oldbalanceDest \n",
131 | " newbalanceDest \n",
132 | " isFraud \n",
133 | " isFlaggedFraud \n",
134 | " \n",
135 | " \n",
136 | " \n",
137 | " \n",
138 | " 0 \n",
139 | " 1 \n",
140 | " PAYMENT \n",
141 | " 9839.64 \n",
142 | " C1231006815 \n",
143 | " 170136.0 \n",
144 | " 160296.36 \n",
145 | " M1979787155 \n",
146 | " 0.0 \n",
147 | " 0.0 \n",
148 | " 0 \n",
149 | " 0 \n",
150 | " \n",
151 | " \n",
152 | " 1 \n",
153 | " 1 \n",
154 | " PAYMENT \n",
155 | " 1864.28 \n",
156 | " C1666544295 \n",
157 | " 21249.0 \n",
158 | " 19384.72 \n",
159 | " M2044282225 \n",
160 | " 0.0 \n",
161 | " 0.0 \n",
162 | " 0 \n",
163 | " 0 \n",
164 | " \n",
165 | " \n",
166 | " 2 \n",
167 | " 1 \n",
168 | " TRANSFER \n",
169 | " 181.00 \n",
170 | " C1305486145 \n",
171 | " 181.0 \n",
172 | " 0.00 \n",
173 | " C553264065 \n",
174 | " 0.0 \n",
175 | " 0.0 \n",
176 | " 1 \n",
177 | " 0 \n",
178 | " \n",
179 | " \n",
180 | " 3 \n",
181 | " 1 \n",
182 | " CASH_OUT \n",
183 | " 181.00 \n",
184 | " C840083671 \n",
185 | " 181.0 \n",
186 | " 0.00 \n",
187 | " C38997010 \n",
188 | " 21182.0 \n",
189 | " 0.0 \n",
190 | " 1 \n",
191 | " 0 \n",
192 | " \n",
193 | " \n",
194 | " 4 \n",
195 | " 1 \n",
196 | " PAYMENT \n",
197 | " 11668.14 \n",
198 | " C2048537720 \n",
199 | " 41554.0 \n",
200 | " 29885.86 \n",
201 | " M1230701703 \n",
202 | " 0.0 \n",
203 | " 0.0 \n",
204 | " 0 \n",
205 | " 0 \n",
206 | " \n",
207 | " \n",
208 | "
\n",
209 | "
\n",
210 | "
\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 | " step \n",
523 | " amount \n",
524 | " oldbalanceOrg \n",
525 | " newbalanceOrig \n",
526 | " oldbalanceDest \n",
527 | " newbalanceDest \n",
528 | " isFraud \n",
529 | " isFlaggedFraud \n",
530 | " \n",
531 | " \n",
532 | " \n",
533 | " \n",
534 | " count \n",
535 | " 2620.0 \n",
536 | " 2.620000e+03 \n",
537 | " 2.620000e+03 \n",
538 | " 2.620000e+03 \n",
539 | " 2.620000e+03 \n",
540 | " 2.620000e+03 \n",
541 | " 2620.000000 \n",
542 | " 2620.0 \n",
543 | " \n",
544 | " \n",
545 | " mean \n",
546 | " 1.0 \n",
547 | " 1.055404e+05 \n",
548 | " 8.207836e+05 \n",
549 | " 8.398497e+05 \n",
550 | " 7.024779e+05 \n",
551 | " 9.559343e+05 \n",
552 | " 0.006107 \n",
553 | " 0.0 \n",
554 | " \n",
555 | " \n",
556 | " std \n",
557 | " 0.0 \n",
558 | " 2.468862e+05 \n",
559 | " 1.936319e+06 \n",
560 | " 1.980422e+06 \n",
561 | " 2.143229e+06 \n",
562 | " 2.860721e+06 \n",
563 | " 0.077922 \n",
564 | " 0.0 \n",
565 | " \n",
566 | " \n",
567 | " min \n",
568 | " 1.0 \n",
569 | " 6.420000e+00 \n",
570 | " 0.000000e+00 \n",
571 | " 0.000000e+00 \n",
572 | " 0.000000e+00 \n",
573 | " 0.000000e+00 \n",
574 | " 0.000000 \n",
575 | " 0.0 \n",
576 | " \n",
577 | " \n",
578 | " 25% \n",
579 | " 1.0 \n",
580 | " 3.915938e+03 \n",
581 | " 9.150250e+01 \n",
582 | " 0.000000e+00 \n",
583 | " 0.000000e+00 \n",
584 | " 0.000000e+00 \n",
585 | " 0.000000 \n",
586 | " 0.0 \n",
587 | " \n",
588 | " \n",
589 | " 50% \n",
590 | " 1.0 \n",
591 | " 9.910020e+03 \n",
592 | " 2.211219e+04 \n",
593 | " 1.386267e+04 \n",
594 | " 0.000000e+00 \n",
595 | " 0.000000e+00 \n",
596 | " 0.000000 \n",
597 | " 0.0 \n",
598 | " \n",
599 | " \n",
600 | " 75% \n",
601 | " 1.0 \n",
602 | " 1.146133e+05 \n",
603 | " 2.011165e+05 \n",
604 | " 2.015433e+05 \n",
605 | " 3.560640e+05 \n",
606 | " 2.650924e+05 \n",
607 | " 0.000000 \n",
608 | " 0.0 \n",
609 | " \n",
610 | " \n",
611 | " max \n",
612 | " 1.0 \n",
613 | " 3.776389e+06 \n",
614 | " 1.010284e+07 \n",
615 | " 1.024625e+07 \n",
616 | " 1.951612e+07 \n",
617 | " 1.916920e+07 \n",
618 | " 1.000000 \n",
619 | " 0.0 \n",
620 | " \n",
621 | " \n",
622 | "
\n",
623 | "
\n",
624 | "
\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 | " step \n",
951 | " type \n",
952 | " amount \n",
953 | " oldbalanceOrg \n",
954 | " newbalanceOrig \n",
955 | " oldbalanceDest \n",
956 | " newbalanceDest \n",
957 | " isFraud \n",
958 | " isFlaggedFraud \n",
959 | " \n",
960 | " \n",
961 | " \n",
962 | " \n",
963 | " 0 \n",
964 | " 1 \n",
965 | " PAYMENT \n",
966 | " 9839.64 \n",
967 | " 170136.0 \n",
968 | " 160296.36 \n",
969 | " 0.0 \n",
970 | " 0.0 \n",
971 | " 0 \n",
972 | " 0 \n",
973 | " \n",
974 | " \n",
975 | " 1 \n",
976 | " 1 \n",
977 | " PAYMENT \n",
978 | " 1864.28 \n",
979 | " 21249.0 \n",
980 | " 19384.72 \n",
981 | " 0.0 \n",
982 | " 0.0 \n",
983 | " 0 \n",
984 | " 0 \n",
985 | " \n",
986 | " \n",
987 | " 2 \n",
988 | " 1 \n",
989 | " TRANSFER \n",
990 | " 181.00 \n",
991 | " 181.0 \n",
992 | " 0.00 \n",
993 | " 0.0 \n",
994 | " 0.0 \n",
995 | " 1 \n",
996 | " 0 \n",
997 | " \n",
998 | " \n",
999 | " 3 \n",
1000 | " 1 \n",
1001 | " CASH_OUT \n",
1002 | " 181.00 \n",
1003 | " 181.0 \n",
1004 | " 0.00 \n",
1005 | " 21182.0 \n",
1006 | " 0.0 \n",
1007 | " 1 \n",
1008 | " 0 \n",
1009 | " \n",
1010 | " \n",
1011 | " 4 \n",
1012 | " 1 \n",
1013 | " PAYMENT \n",
1014 | " 11668.14 \n",
1015 | " 41554.0 \n",
1016 | " 29885.86 \n",
1017 | " 0.0 \n",
1018 | " 0.0 \n",
1019 | " 0 \n",
1020 | " 0 \n",
1021 | " \n",
1022 | " \n",
1023 | "
\n",
1024 | "
\n",
1025 | "
\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 | " step \n",
1327 | " type \n",
1328 | " amount \n",
1329 | " oldbalanceOrg \n",
1330 | " newbalanceOrig \n",
1331 | " oldbalanceDest \n",
1332 | " newbalanceDest \n",
1333 | " isFraud \n",
1334 | " isFlaggedFraud \n",
1335 | " \n",
1336 | " \n",
1337 | " \n",
1338 | " \n",
1339 | " 0 \n",
1340 | " 1 \n",
1341 | " 3 \n",
1342 | " 9839.64 \n",
1343 | " 170136.0 \n",
1344 | " 160296.36 \n",
1345 | " 0.0 \n",
1346 | " 0.0 \n",
1347 | " 0 \n",
1348 | " 0 \n",
1349 | " \n",
1350 | " \n",
1351 | " 1 \n",
1352 | " 1 \n",
1353 | " 3 \n",
1354 | " 1864.28 \n",
1355 | " 21249.0 \n",
1356 | " 19384.72 \n",
1357 | " 0.0 \n",
1358 | " 0.0 \n",
1359 | " 0 \n",
1360 | " 0 \n",
1361 | " \n",
1362 | " \n",
1363 | " 2 \n",
1364 | " 1 \n",
1365 | " 4 \n",
1366 | " 181.00 \n",
1367 | " 181.0 \n",
1368 | " 0.00 \n",
1369 | " 0.0 \n",
1370 | " 0.0 \n",
1371 | " 1 \n",
1372 | " 0 \n",
1373 | " \n",
1374 | " \n",
1375 | " 3 \n",
1376 | " 1 \n",
1377 | " 1 \n",
1378 | " 181.00 \n",
1379 | " 181.0 \n",
1380 | " 0.00 \n",
1381 | " 21182.0 \n",
1382 | " 0.0 \n",
1383 | " 1 \n",
1384 | " 0 \n",
1385 | " \n",
1386 | " \n",
1387 | " 4 \n",
1388 | " 1 \n",
1389 | " 3 \n",
1390 | " 11668.14 \n",
1391 | " 41554.0 \n",
1392 | " 29885.86 \n",
1393 | " 0.0 \n",
1394 | " 0.0 \n",
1395 | " 0 \n",
1396 | " 0 \n",
1397 | " \n",
1398 | " \n",
1399 | "
\n",
1400 | "
\n",
1401 | "
\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",
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 | }
--------------------------------------------------------------------------------