diff --git a/your-code/lab_imbalance.ipynb b/your-code/lab_imbalance.ipynb
index dbb15e1..b366ae4 100644
--- a/your-code/lab_imbalance.ipynb
+++ b/your-code/lab_imbalance.ipynb
@@ -1,147 +1,2484 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Inbalanced Classes\n",
- "## In this lab, we are going to explore a case of imbalanced classes. \n",
- "\n",
- "\n",
- "Like we disussed in class, when we have noisy data, if we are not careful, we can end up fitting our model to the noise in the data and not the 'signal'-- the factors that actually determine the outcome. This is called overfitting, and results in good results in training, and in bad results when the model is applied to real data. Similarly, we could have a model that is too simplistic to accurately model the signal. This produces a model that doesnt work well (ever). \n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Note: before doing the first commit, make sure you don't include the large csv file, either by adding it to .gitignore, or by deleting it."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### First, download the data from: https://www.kaggle.com/datasets/chitwanmanchanda/fraudulent-transactions-data?resource=download . Import the dataset and provide some discriptive statistics and plots. What do you think will be the important features in determining the outcome?\n",
- "### Note: don't use the entire dataset, use a sample instead, with n=100000 elements, so your computer doesn't freeze."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Your code here"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### What is the distribution of the outcome? "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Your response here"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Clean the dataset. Pre-process it to make it suitable for ML training. Feel free to explore, drop, encode, transform, etc. Whatever you feel will improve the model score."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Your code here\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Run a logisitc regression classifier and evaluate its accuracy."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Your code here"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Now pick a model of your choice and evaluate its accuracy."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Your code here"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Which model worked better and how do you know?"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Your response here"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Note: before doing the first commit, make sure you don't include the large csv file, either by adding it to .gitignore, or by deleting it."
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "Python 3",
- "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.6.8"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Inbalanced Classes\n",
+ "## In this lab, we are going to explore a case of imbalanced classes. \n",
+ "\n",
+ "\n",
+ "Like we disussed in class, when we have noisy data, if we are not careful, we can end up fitting our model to the noise in the data and not the 'signal'-- the factors that actually determine the outcome. This is called overfitting, and results in good results in training, and in bad results when the model is applied to real data. Similarly, we could have a model that is too simplistic to accurately model the signal. This produces a model that doesnt work well (ever). \n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Note: before doing the first commit, make sure you don't include the large csv file, either by adding it to .gitignore, or by deleting it."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### First, download the data from: https://www.kaggle.com/datasets/chitwanmanchanda/fraudulent-transactions-data?resource=download . Import the dataset and provide some discriptive statistics and plots. What do you think will be the important features in determining the outcome?\n",
+ "### Note: don't use the entire dataset, use a sample instead, with n=100000 elements, so your computer doesn't freeze."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Libraries"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Your code here\n",
+ "import sklearn\n",
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "import xgboost as xgb\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.linear_model import LogisticRegression\n",
+ "from sklearn.metrics import accuracy_score, confusion_matrix\n",
+ "from imblearn.over_sampling import SMOTE"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(6362620, 11)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " step \n",
+ " type \n",
+ " amount \n",
+ " nameOrig \n",
+ " oldbalanceOrg \n",
+ " newbalanceOrig \n",
+ " nameDest \n",
+ " oldbalanceDest \n",
+ " newbalanceDest \n",
+ " isFraud \n",
+ " isFlaggedFraud \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 1 \n",
+ " PAYMENT \n",
+ " 9839.64 \n",
+ " C1231006815 \n",
+ " 170136.0 \n",
+ " 160296.36 \n",
+ " M1979787155 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 1 \n",
+ " PAYMENT \n",
+ " 1864.28 \n",
+ " C1666544295 \n",
+ " 21249.0 \n",
+ " 19384.72 \n",
+ " M2044282225 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 1 \n",
+ " TRANSFER \n",
+ " 181.00 \n",
+ " C1305486145 \n",
+ " 181.0 \n",
+ " 0.00 \n",
+ " C553264065 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 1 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 1 \n",
+ " CASH_OUT \n",
+ " 181.00 \n",
+ " C840083671 \n",
+ " 181.0 \n",
+ " 0.00 \n",
+ " C38997010 \n",
+ " 21182.0 \n",
+ " 0.0 \n",
+ " 1 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " 1 \n",
+ " PAYMENT \n",
+ " 11668.14 \n",
+ " C2048537720 \n",
+ " 41554.0 \n",
+ " 29885.86 \n",
+ " M1230701703 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " step type amount nameOrig oldbalanceOrg newbalanceOrig \\\n",
+ "0 1 PAYMENT 9839.64 C1231006815 170136.0 160296.36 \n",
+ "1 1 PAYMENT 1864.28 C1666544295 21249.0 19384.72 \n",
+ "2 1 TRANSFER 181.00 C1305486145 181.0 0.00 \n",
+ "3 1 CASH_OUT 181.00 C840083671 181.0 0.00 \n",
+ "4 1 PAYMENT 11668.14 C2048537720 41554.0 29885.86 \n",
+ "\n",
+ " nameDest oldbalanceDest newbalanceDest isFraud isFlaggedFraud \n",
+ "0 M1979787155 0.0 0.0 0 0 \n",
+ "1 M2044282225 0.0 0.0 0 0 \n",
+ "2 C553264065 0.0 0.0 1 0 \n",
+ "3 C38997010 21182.0 0.0 1 0 \n",
+ "4 M1230701703 0.0 0.0 0 0 "
+ ]
+ },
+ "execution_count": 2,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data = pd.read_csv('finance.csv')\n",
+ "print(data.shape)\n",
+ "data.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Sample the data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(100000, 11)\n"
+ ]
+ }
+ ],
+ "source": [
+ "sampled_data = data.sample(n=100000, random_state=42)\n",
+ "\n",
+ "print(sampled_data.shape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " step \n",
+ " type \n",
+ " amount \n",
+ " nameOrig \n",
+ " oldbalanceOrg \n",
+ " newbalanceOrig \n",
+ " nameDest \n",
+ " oldbalanceDest \n",
+ " newbalanceDest \n",
+ " isFraud \n",
+ " isFlaggedFraud \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3737323 \n",
+ " 278 \n",
+ " CASH_IN \n",
+ " 330218.42 \n",
+ " C632336343 \n",
+ " 20866.00 \n",
+ " 351084.42 \n",
+ " C834976624 \n",
+ " 452419.57 \n",
+ " 122201.15 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 264914 \n",
+ " 15 \n",
+ " PAYMENT \n",
+ " 11647.08 \n",
+ " C1264712553 \n",
+ " 30370.00 \n",
+ " 18722.92 \n",
+ " M215391829 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 85647 \n",
+ " 10 \n",
+ " CASH_IN \n",
+ " 152264.21 \n",
+ " C1746846248 \n",
+ " 106589.00 \n",
+ " 258853.21 \n",
+ " C1607284477 \n",
+ " 201303.01 \n",
+ " 49038.80 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 5899326 \n",
+ " 403 \n",
+ " TRANSFER \n",
+ " 1551760.63 \n",
+ " C333676753 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " C1564353608 \n",
+ " 3198359.45 \n",
+ " 4750120.08 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 2544263 \n",
+ " 206 \n",
+ " CASH_IN \n",
+ " 78172.30 \n",
+ " C813403091 \n",
+ " 2921331.58 \n",
+ " 2999503.88 \n",
+ " C1091768874 \n",
+ " 415821.90 \n",
+ " 337649.60 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 3494160 \n",
+ " 259 \n",
+ " PAYMENT \n",
+ " 915.13 \n",
+ " C2002954533 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " M290849763 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 2331654 \n",
+ " 188 \n",
+ " CASH_OUT \n",
+ " 20603.87 \n",
+ " C813757373 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " C823291717 \n",
+ " 558068.66 \n",
+ " 578672.53 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 1414955 \n",
+ " 139 \n",
+ " CASH_OUT \n",
+ " 58605.72 \n",
+ " C1850864812 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " C618657299 \n",
+ " 585494.94 \n",
+ " 644100.66 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 2938135 \n",
+ " 230 \n",
+ " PAYMENT \n",
+ " 4865.11 \n",
+ " C886849972 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " M623175144 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 6133806 \n",
+ " 544 \n",
+ " CASH_OUT \n",
+ " 118131.63 \n",
+ " C390714641 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " C366360355 \n",
+ " 8131691.35 \n",
+ " 8476246.86 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " step type amount nameOrig oldbalanceOrg \\\n",
+ "3737323 278 CASH_IN 330218.42 C632336343 20866.00 \n",
+ "264914 15 PAYMENT 11647.08 C1264712553 30370.00 \n",
+ "85647 10 CASH_IN 152264.21 C1746846248 106589.00 \n",
+ "5899326 403 TRANSFER 1551760.63 C333676753 0.00 \n",
+ "2544263 206 CASH_IN 78172.30 C813403091 2921331.58 \n",
+ "3494160 259 PAYMENT 915.13 C2002954533 0.00 \n",
+ "2331654 188 CASH_OUT 20603.87 C813757373 0.00 \n",
+ "1414955 139 CASH_OUT 58605.72 C1850864812 0.00 \n",
+ "2938135 230 PAYMENT 4865.11 C886849972 0.00 \n",
+ "6133806 544 CASH_OUT 118131.63 C390714641 0.00 \n",
+ "\n",
+ " newbalanceOrig nameDest oldbalanceDest newbalanceDest isFraud \\\n",
+ "3737323 351084.42 C834976624 452419.57 122201.15 0 \n",
+ "264914 18722.92 M215391829 0.00 0.00 0 \n",
+ "85647 258853.21 C1607284477 201303.01 49038.80 0 \n",
+ "5899326 0.00 C1564353608 3198359.45 4750120.08 0 \n",
+ "2544263 2999503.88 C1091768874 415821.90 337649.60 0 \n",
+ "3494160 0.00 M290849763 0.00 0.00 0 \n",
+ "2331654 0.00 C823291717 558068.66 578672.53 0 \n",
+ "1414955 0.00 C618657299 585494.94 644100.66 0 \n",
+ "2938135 0.00 M623175144 0.00 0.00 0 \n",
+ "6133806 0.00 C366360355 8131691.35 8476246.86 0 \n",
+ "\n",
+ " isFlaggedFraud \n",
+ "3737323 0 \n",
+ "264914 0 \n",
+ "85647 0 \n",
+ "5899326 0 \n",
+ "2544263 0 \n",
+ "3494160 0 \n",
+ "2331654 0 \n",
+ "1414955 0 \n",
+ "2938135 0 \n",
+ "6133806 0 "
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data.head(10)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['step', 'type', 'amount', 'nameOrig', 'oldbalanceOrg', 'newbalanceOrig',\n",
+ " 'nameDest', 'oldbalanceDest', 'newbalanceDest', 'isFraud',\n",
+ " 'isFlaggedFraud'],\n",
+ " dtype='object')"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data.columns"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Check dtypes and null values"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "Index: 100000 entries, 3737323 to 6142173\n",
+ "Data columns (total 11 columns):\n",
+ " # Column Non-Null Count Dtype \n",
+ "--- ------ -------------- ----- \n",
+ " 0 step 100000 non-null int64 \n",
+ " 1 type 100000 non-null object \n",
+ " 2 amount 100000 non-null float64\n",
+ " 3 nameOrig 100000 non-null object \n",
+ " 4 oldbalanceOrg 100000 non-null float64\n",
+ " 5 newbalanceOrig 100000 non-null float64\n",
+ " 6 nameDest 100000 non-null object \n",
+ " 7 oldbalanceDest 100000 non-null float64\n",
+ " 8 newbalanceDest 100000 non-null float64\n",
+ " 9 isFraud 100000 non-null int64 \n",
+ " 10 isFlaggedFraud 100000 non-null int64 \n",
+ "dtypes: float64(5), int64(3), object(3)\n",
+ "memory usage: 9.2+ MB\n"
+ ]
+ }
+ ],
+ "source": [
+ "sampled_data.info()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Target is 'isFraud' and the column 'isFlaggedFraud' is their own predictor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " isFraud \n",
+ " isFlaggedFraud \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3032562 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 4732042 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 4238142 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 3625745 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 2011344 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " isFraud isFlaggedFraud\n",
+ "3032562 0 0\n",
+ "4732042 0 0\n",
+ "4238142 0 0\n",
+ "3625745 0 0\n",
+ "2011344 0 0"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "isFraud int64\n",
+ "isFlaggedFraud int64\n",
+ "dtype: object"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "isFraud\n",
+ "0 99859\n",
+ "1 141\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ "isFlaggedFraud\n",
+ "0 99999\n",
+ "1 1\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "display(sampled_data[['isFraud', 'isFlaggedFraud']].sample(5))\n",
+ "\n",
+ "display(sampled_data[['isFraud', 'isFlaggedFraud']].dtypes)\n",
+ "\n",
+ "display(sampled_data['isFraud'].value_counts())\n",
+ "display(sampled_data['isFlaggedFraud'].value_counts())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " step \n",
+ " type \n",
+ " amount \n",
+ " nameOrig \n",
+ " oldbalanceOrg \n",
+ " newbalanceOrig \n",
+ " nameDest \n",
+ " oldbalanceDest \n",
+ " newbalanceDest \n",
+ " isFraud \n",
+ " isFlaggedFraud \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2736446 \n",
+ " 212 \n",
+ " TRANSFER \n",
+ " 4953893.08 \n",
+ " C728984460 \n",
+ " 4953893.08 \n",
+ " 4953893.08 \n",
+ " C639921569 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 1 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " step type amount nameOrig oldbalanceOrg \\\n",
+ "2736446 212 TRANSFER 4953893.08 C728984460 4953893.08 \n",
+ "\n",
+ " newbalanceOrig nameDest oldbalanceDest newbalanceDest isFraud \\\n",
+ "2736446 4953893.08 C639921569 0.0 0.0 1 \n",
+ "\n",
+ " isFlaggedFraud \n",
+ "2736446 1 "
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data[sampled_data['isFlaggedFraud'] == 1]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"\"\"\n",
+ "The flagged fraud was correct in one true positive yet it has 140 false negatives.\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Check the stats"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " step \n",
+ " amount \n",
+ " oldbalanceOrg \n",
+ " newbalanceOrig \n",
+ " oldbalanceDest \n",
+ " newbalanceDest \n",
+ " isFraud \n",
+ " isFlaggedFraud \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " count \n",
+ " 100000.000000 \n",
+ " 1.000000e+05 \n",
+ " 1.000000e+05 \n",
+ " 1.000000e+05 \n",
+ " 1.000000e+05 \n",
+ " 1.000000e+05 \n",
+ " 100000.000000 \n",
+ " 100000.000000 \n",
+ " \n",
+ " \n",
+ " mean \n",
+ " 243.709070 \n",
+ " 1.805811e+05 \n",
+ " 8.366804e+05 \n",
+ " 8.582234e+05 \n",
+ " 1.104193e+06 \n",
+ " 1.230055e+06 \n",
+ " 0.001410 \n",
+ " 0.000010 \n",
+ " \n",
+ " \n",
+ " std \n",
+ " 142.518613 \n",
+ " 5.586699e+05 \n",
+ " 2.901104e+06 \n",
+ " 2.936799e+06 \n",
+ " 3.223011e+06 \n",
+ " 3.475326e+06 \n",
+ " 0.037524 \n",
+ " 0.003162 \n",
+ " \n",
+ " \n",
+ " min \n",
+ " 1.000000 \n",
+ " 9.200000e-01 \n",
+ " 0.000000e+00 \n",
+ " 0.000000e+00 \n",
+ " 0.000000e+00 \n",
+ " 0.000000e+00 \n",
+ " 0.000000 \n",
+ " 0.000000 \n",
+ " \n",
+ " \n",
+ " 25% \n",
+ " 156.000000 \n",
+ " 1.350821e+04 \n",
+ " 0.000000e+00 \n",
+ " 0.000000e+00 \n",
+ " 0.000000e+00 \n",
+ " 0.000000e+00 \n",
+ " 0.000000 \n",
+ " 0.000000 \n",
+ " \n",
+ " \n",
+ " 50% \n",
+ " 240.000000 \n",
+ " 7.603086e+04 \n",
+ " 1.393850e+04 \n",
+ " 0.000000e+00 \n",
+ " 1.387482e+05 \n",
+ " 2.185786e+05 \n",
+ " 0.000000 \n",
+ " 0.000000 \n",
+ " \n",
+ " \n",
+ " 75% \n",
+ " 335.000000 \n",
+ " 2.091130e+05 \n",
+ " 1.070771e+05 \n",
+ " 1.464169e+05 \n",
+ " 9.605963e+05 \n",
+ " 1.126011e+06 \n",
+ " 0.000000 \n",
+ " 0.000000 \n",
+ " \n",
+ " \n",
+ " max \n",
+ " 736.000000 \n",
+ " 3.697390e+07 \n",
+ " 3.359321e+07 \n",
+ " 3.388709e+07 \n",
+ " 2.362896e+08 \n",
+ " 2.724047e+08 \n",
+ " 1.000000 \n",
+ " 1.000000 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " step amount oldbalanceOrg newbalanceOrig \\\n",
+ "count 100000.000000 1.000000e+05 1.000000e+05 1.000000e+05 \n",
+ "mean 243.709070 1.805811e+05 8.366804e+05 8.582234e+05 \n",
+ "std 142.518613 5.586699e+05 2.901104e+06 2.936799e+06 \n",
+ "min 1.000000 9.200000e-01 0.000000e+00 0.000000e+00 \n",
+ "25% 156.000000 1.350821e+04 0.000000e+00 0.000000e+00 \n",
+ "50% 240.000000 7.603086e+04 1.393850e+04 0.000000e+00 \n",
+ "75% 335.000000 2.091130e+05 1.070771e+05 1.464169e+05 \n",
+ "max 736.000000 3.697390e+07 3.359321e+07 3.388709e+07 \n",
+ "\n",
+ " oldbalanceDest newbalanceDest isFraud isFlaggedFraud \n",
+ "count 1.000000e+05 1.000000e+05 100000.000000 100000.000000 \n",
+ "mean 1.104193e+06 1.230055e+06 0.001410 0.000010 \n",
+ "std 3.223011e+06 3.475326e+06 0.037524 0.003162 \n",
+ "min 0.000000e+00 0.000000e+00 0.000000 0.000000 \n",
+ "25% 0.000000e+00 0.000000e+00 0.000000 0.000000 \n",
+ "50% 1.387482e+05 2.185786e+05 0.000000 0.000000 \n",
+ "75% 9.605963e+05 1.126011e+06 0.000000 0.000000 \n",
+ "max 2.362896e+08 2.724047e+08 1.000000 1.000000 "
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data.describe()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Min and Max amounts"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " step \n",
+ " type \n",
+ " amount \n",
+ " nameOrig \n",
+ " oldbalanceOrg \n",
+ " newbalanceOrig \n",
+ " nameDest \n",
+ " oldbalanceDest \n",
+ " newbalanceDest \n",
+ " isFraud \n",
+ " isFlaggedFraud \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3315295 \n",
+ " 252 \n",
+ " PAYMENT \n",
+ " 0.92 \n",
+ " C66974126 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " M1698108356 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " step type amount nameOrig oldbalanceOrg newbalanceOrig \\\n",
+ "3315295 252 PAYMENT 0.92 C66974126 0.0 0.0 \n",
+ "\n",
+ " nameDest oldbalanceDest newbalanceDest isFraud isFlaggedFraud \n",
+ "3315295 M1698108356 0.0 0.0 0 0 "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " step \n",
+ " type \n",
+ " amount \n",
+ " nameOrig \n",
+ " oldbalanceOrg \n",
+ " newbalanceOrig \n",
+ " nameDest \n",
+ " oldbalanceDest \n",
+ " newbalanceDest \n",
+ " isFraud \n",
+ " isFlaggedFraud \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3867478 \n",
+ " 283 \n",
+ " TRANSFER \n",
+ " 36973901.85 \n",
+ " C1041279319 \n",
+ " 0.0 \n",
+ " 0.0 \n",
+ " C1512993148 \n",
+ " 56605084.67 \n",
+ " 93578986.52 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " step type amount nameOrig oldbalanceOrg \\\n",
+ "3867478 283 TRANSFER 36973901.85 C1041279319 0.0 \n",
+ "\n",
+ " newbalanceOrig nameDest oldbalanceDest newbalanceDest isFraud \\\n",
+ "3867478 0.0 C1512993148 56605084.67 93578986.52 0 \n",
+ "\n",
+ " isFlaggedFraud \n",
+ "3867478 0 "
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "max_amount = sampled_data[sampled_data['amount'] == sampled_data['amount'].max()]\n",
+ "min_amount = sampled_data[sampled_data['amount'] == sampled_data['amount'].min()]\n",
+ "\n",
+ "display(min_amount)\n",
+ "display(max_amount)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "step int64\n",
+ "type object\n",
+ "amount float64\n",
+ "nameOrig object\n",
+ "oldbalanceOrg float64\n",
+ "newbalanceOrig float64\n",
+ "nameDest object\n",
+ "oldbalanceDest float64\n",
+ "newbalanceDest float64\n",
+ "isFraud int64\n",
+ "isFlaggedFraud int64\n",
+ "dtype: object"
+ ]
+ },
+ "execution_count": 15,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data.dtypes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "sampled_data['amount'].hist()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Adjust the distribution"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "threshold = sampled_data['amount'].quantile(0.90)\n",
+ "\n",
+ "# Filter the data to exclude amounts greater than the threshold\n",
+ "filtered_data = sampled_data[sampled_data['amount'] <= threshold]\n",
+ "\n",
+ "plt.figure(figsize=(8, 4))\n",
+ "plt.hist(filtered_data['amount'], bins=50, color='blue', edgecolor='black')\n",
+ "plt.title('Distribution of Transaction Amounts (Filtered)')\n",
+ "plt.xlabel('Transaction Amount')\n",
+ "plt.ylabel('Frequency')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Check with Log transform"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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eHWYiIiI6AVUrUXyb7/9pjFzxOTJkwEAISEhiIqKwrRp0/D48WOMGzcO6enp8PHxwb59+6Q5kgFg0aJFMDMzw9ChQ/H48WP4+fkhKipKmiMZADZs2ICJEydKs2AMGDAAS5culZabmppi165dGDduHDp27AgrKysEBgbiq6++quxTQERERERGyGjmSX4ecJ5kIiKqbNI8yWfPlj0F3LlzQJs2nCeZ6Cn61mtGOyaZiIiIiKi6sEgmIiIiIpJhkUxEREREJMMimYiIiIhIhkUyEREREZEMi2QiIiIiIhkWyUREREREMiySiYiIiIhkWCQTEREREcmwSCYiIiIikmGRTEREREQkwyKZiIiIiEiGRTIRERERkQyLZCIiIiIiGRbJREREREQyLJKJiIiIiGRYJBMRERERyZhVdwJEREQEJCYmIi0trcy4uLi4KsiGiFgkExERVbPExER4qtXIefSoulMhov/DIpmIiKiapaWlPSmQo6MBtVp38O7dwGefVU1iRC8wFslERETGQq0GWrfWHVOB4RblGaLh6OiIhg0blnsfRM8bFslERETPq+RkwMQEQUFBeq9iaW2N+Lg4Fsr0wmORTERE9LzKyACKivQbxgEAcXHICQpCWloai2R64bFIJiIiet7pM4yDiDRwnmQiIiIiIhkWyUREREREMiySiYiIiIhkWCQTEREREcmwSCYiIiIikmGRTEREREQkwyKZiIiIiEiGRTIRERERkQyLZCIiIiIiGRbJREREREQyLJKJiIiIiGRYJBMRERERybBIJiIiIiKSYZFMRERERCTDIpmIiIiISIZFMhERERGRDItkIiIiIiIZFslERERERDIskomIiIiIZFgkExERERHJsEgmIiIiIpJhkUxEREREJMMimYiIiIhIhkUyEREREZGMURfJBQUF+PTTT+Hu7g4rKys0adIEX3zxBYqKiqQYIQTCwsLg5uYGKysrdO3aFZcvX9bYTm5uLiZMmABHR0fY2NhgwIABSEpK0ohJT09HcHAwVCoVVCoVgoODkZGRURWHSURERERGxqiL5C+//BIrVqzA0qVLERcXh/nz52PBggVYsmSJFDN//nxERERg6dKlOHPmDFxcXNCzZ088ePBAigkNDcX27duxefNmHD9+HNnZ2QgICEBhYaEUExgYiNjYWOzZswd79uxBbGwsgoODq/R4iYiIiMg4mFV3ArqcOHECAwcORL9+/QAAjRs3xqZNm/Dbb78BeHIVefHixZg5cyYGDx4MAFi7di2cnZ2xceNGjBkzBpmZmYiMjMT69evRo0cPAEB0dDQaNGiAAwcOoFevXoiLi8OePXtw8uRJ+Pj4AABWrVoFX19fxMfHw9PTs8T8cnNzkZubK73PysqqtHNBRERERFXHqK8kv/766zh48CCuXLkCAPj9999x/Phx9O3bFwCQkJCAlJQU+Pv7S+solUp06dIFMTExAICzZ88iPz9fI8bNzQ1eXl5SzIkTJ6BSqaQCGQDat28PlUolxZQkPDxcGp6hUqnQoEEDwx08EREREVUbo76S/MknnyAzMxMvv/wyTE1NUVhYiH//+9/4xz/+AQBISUkBADg7O2us5+zsjJs3b0oxFhYWsLOz04opXj8lJQVOTk5a+3dycpJiSjJjxgxMnjxZep+VlcVCmYiIiOg5YNRF8pYtWxAdHY2NGzeiRYsWiI2NRWhoKNzc3BASEiLFKRQKjfWEEFptcvKYkuLL2o5SqYRSqdT3cIiIiIiohjDqIvnjjz/G9OnTMXz4cACAt7c3bt68ifDwcISEhMDFxQXAkyvBrq6u0nqpqanS1WUXFxfk5eUhPT1d42pyamoqOnToIMXcuXNHa/93797VukpNRERERM8/ox6T/OjRI5iYaKZoamoqTQHn7u4OFxcX7N+/X1qel5eHo0ePSgVwmzZtYG5urhGTnJyMS5cuSTG+vr7IzMzE6dOnpZhTp04hMzNTiiEiIiKiF4dRX0nu378//v3vf6Nhw4Zo0aIFzp8/j4iICLz77rsAngyRCA0Nxdy5c+Hh4QEPDw/MnTsX1tbWCAwMBACoVCqMGjUKU6ZMgYODA+zt7TF16lR4e3tLs12o1Wr07t0b7733HlauXAkAeP/99xEQEFDqzBZERERE9Pwy6iJ5yZIl+OyzzzBu3DikpqbCzc0NY8aMwaxZs6SYadOm4fHjxxg3bhzS09Ph4+ODffv2wdbWVopZtGgRzMzMMHToUDx+/Bh+fn6IioqCqampFLNhwwZMnDhRmgVjwIABWLp0adUdLBEREREZDaMukm1tbbF48WIsXry41BiFQoGwsDCEhYWVGmNpaYklS5ZoPIREzt7eHtHR0c+QLRERERE9L4x6TDIRERERUXVgkUxEREREJMMimYiIiIhIhkUyEREREZEMi2QiIiIiIhkWyUREREREMiySiYiIiIhkWCQTEREREcmwSCYiIiIikjHqJ+4RERHVZImJiUhLSyszLi4urgqyIaLyYJFMRERUCRITE+GpViPn0aPqToWIKoBFMhERUSVIS0t7UiBHRwNqte7g3buBzz6rmsSISC8skomIiCqTWg20bq07hsMtiIwOb9wjIiIiIpJhkUxEREREJMMimYiIiIhIhkUyEREREZEMi2QiIiIiIhkWyUREREREMiySiYiIiIhkWCQTEREREcmwSCYiIiIikmGRTEREREQkwyKZiIiIiEiGRTIRERERkQyLZCIiIiIiGRbJREREREQyLJKJiIiIiGRYJBMRERERybBIJiIiIiKSYZFMRERERCTDIpmIiIiISIZFMhERERGRDItkIiIiIiIZFslERERERDIskomIiIiIZFgkExERERHJsEgmIiIiIpKpUJGckJBg6DyIiIiIiIxGhYrkl156Cd26dUN0dDRycnIMnRMRERERUbWqUJH8+++/o1WrVpgyZQpcXFwwZswYnD592tC5ERERERFViwoVyV5eXoiIiMDff/+NNWvWICUlBa+//jpatGiBiIgI3L1719B5EhERERFVmWe6cc/MzAxvvPEGvv/+e3z55Ze4du0apk6divr16+Ptt99GcnKyofIkIiIiIqoyz1Qk//bbbxg3bhxcXV0RERGBqVOn4tq1azh06BD+/vtvDBw40FB5EhERERFVGbOKrBQREYE1a9YgPj4effv2xbp169C3b1+YmDypud3d3bFy5Uq8/PLLBk2WiIiIiKgqVKhIXr58Od5991288847cHFxKTGmYcOGiIyMfKbkiIiIiIiqQ4WK5KtXr5YZY2FhgZCQkIpsnoiIiIioWlVoTPKaNWvwww8/aLX/8MMPWLt27TMn9bS///4bQUFBcHBwgLW1NV599VWcPXtWWi6EQFhYGNzc3GBlZYWuXbvi8uXLGtvIzc3FhAkT4OjoCBsbGwwYMABJSUkaMenp6QgODoZKpYJKpUJwcDAyMjIMeixEREREVDNUqEieN28eHB0dtdqdnJwwd+7cZ06qWHp6Ojp27Ahzc3P88ssv+OOPP7Bw4ULUqVNHipk/fz4iIiKwdOlSnDlzBi4uLujZsycePHggxYSGhmL79u3YvHkzjh8/juzsbAQEBKCwsFCK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okOHDgCANm3awNzcXCMmOTkZly5dkmJ8fX2RmZmJ06dPSzGnTp1CZmamFENERERELw6jHpNsa2sLLy8vjTYbGxs4ODhI7aGhoZg7dy48PDzg4eGBuXPnwtraGoGBgQAAlUqFUaNGYcqUKXBwcIC9vT2mTp0Kb29vabYLtVqN3r1747333sPKlSsBPJkCLiAggDNbEBEREb2AjLpI1se0adPw+PFjjBs3Dunp6fDx8cG+ffukOZIBYNGiRTAzM8PQoUPx+PFj+Pn5ISoqSpojGQA2bNiAiRMnSrNgDBgwAEuXLq3y4yEiIiKi6lfjiuQjR45ovFcoFAgLC0NYWFip61haWmLJkiVYsmRJqTH29vaIjo42UJZEREREVJMZ9ZhkIiIiIqLqwCKZiIiIiEiGRTIRERERkQyLZCIiIiIimRp34x4REWlLTExEWlpamXFxcXFVkA0RUc3HIpmIqIZLTEyEp1qNnEePqjsVIqLnBotkIqIaLi0t7UmBHB0NqNW6g3fvBj77rGoSIyKqwVgkExE9L9RqoHVr3TEcbkFEpBfeuEdEREREJMMimYiIiIhIhkUyEREREZEMi2QiIiIiIhkWyUREREREMiySiYiIiIhkWCQTEREREcmwSCYiIiIikmGRTEREREQkwyKZiIiIiEiGRTIRERERkQyLZCIiIiIiGRbJREREREQyLJKJiIiIiGRYJBMRERERybBIJiIiIiKSYZFMRERERCTDIpmIiIiISIZFMhERERGRDItkIiIiIiIZFslERERERDIskomIiIiIZFgkExERERHJmFV3AkREVLLExESkpaWVGRcXF1cF2RARvVhYJBMRGaHExER4qtXIefSoulMhInohsUgmIjJCaWlpTwrk6GhArdYdvHs38NlnVZMYEdELgkUyEZExU6uB1q11x3C4BVUjfYf7ODo6omHDhpWcDZHhsEgmIiKi8ktOBkxMEBQUpFe4pbU14uPiWChTjcEimYiIiMovIwMoKtJvSFBcHHKCgpCWlsYimWoMFslERERUcfoMCSKqgThPMhERERGRDItkIiIiIiIZFslERERERDIskomIiIiIZFgkExERERHJsEgmIiIiIpJhkUxEREREJMMimYiIiIhIhkUyEREREZGMURfJ4eHhaNeuHWxtbeHk5IRBgwYhPj5eI0YIgbCwMLi5ucHKygpdu3bF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gb29PQDAyclJanNwcMCKFSswcOBA2NjYYM6cOSgsLMSoUaPg7u4OKysreHp64uuvv9bYbvGV9a+++gqurq5wcHDA+PHjkZ+fL8UsW7YMHh4esLS0hLOzM958801p2Z49e/D666+jTp06cHBwQEBAAK5du6axj6SkJAwfPhz29vawsbFB27ZtcerUKURFReHzzz/H77//Ll0Rj4qKAqA93OLixYvo3r07rKys4ODggPfffx/Z2dnlOo7SREZGIigoCEFBQYiMjNRarlAosHLlSgQEBMDa2hpqtRonTpzAX3/9ha5du8LGxga+vr5ax63rM79x4wYUCgViY2OltoyMDCgUChw5cgQAcOTIESgUChw8eBBt27aFtbU1OnTogPj4eADQef6IqJoJIqIaJiQkRAwcOLDEZUlJScLa2lqMGzdOxMXFie3btwtHR0cxe/ZsKWb06NGiUaNG4sCBA+LixYvijTfeELa2tuKjjz4qdZ/btm0T5ubm4ttvvxXx8fFi4cKFwtTUVBw6dEgIIURqaqro3bu3GDp0qEhOThYZGRk6j+Hw4cMCgEhPT5faAAgnJycRGRkprl27Jm7cuCHy8vLErFmzxOnTp8X169dFdHS0sLa2Flu2bNE4H7Vr1xZjx44VcXFxYufOncLa2lp89913Qgghzpw5I0xNTcXGjRvFjRs3xLlz58TXX38trf/jjz+KrVu3iitXrojz58+L/v37C29vb1FYWCiEEOLBgweiSZMmolOnTuLYsWPi6tWrYsuWLSImJkY8evRITJkyRbRo0UIkJyeL5ORk8ejRI+l4tm/fLoQQ4uHDh8LNzU0MHjxYXLx4URw8eFC4u7uLkJAQvY+jNH/99ZdQKpXi/v374t69e0KpVIpr165pxAAQ9erVE1u2bBHx8fFi0KBBonHjxqJ79+5iz5494o8//hDt27cXvXv31vszT0hIEADE+fPnpXXS09MFAHH48GGNz9nHx0ccOXJEXL58WXTq1El06NBBCCF0nj8iql4skomoxtFVJP/zn/8Unp6eoqioSGr79ttvRa1atURhYaHIysoS5ubm4ocffpCWZ2RkCGtra51FcocOHcR7772n0fbWW2+Jvn37Su8HDhyoUfTpUlqRHBoaWua648aNE0OGDJHeh4SEiEaNGomCggKN3IYNGyaEEGLr1q2idu3aIisrS6/cUlNT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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "log_transformed_data = np.log1p(sampled_data['amount'])\n",
+ "\n",
+ "# Plot the histogram of the log-transformed data\n",
+ "plt.figure(figsize=(8, 4))\n",
+ "plt.hist(log_transformed_data, bins=50, color='cyan', edgecolor='black')\n",
+ "\n",
+ "plt.title('Log-Transformed Distribution of Transaction Amounts')\n",
+ "plt.xlabel('Log of Transaction Amount')\n",
+ "plt.ylabel('Frequency')\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Check the users and type"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "99999"
+ ]
+ },
+ "execution_count": 36,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data['nameOrig'].nunique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "92914"
+ ]
+ },
+ "execution_count": 37,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data['nameDest'].nunique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "5"
+ ]
+ },
+ "execution_count": 38,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data['type'].nunique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "type\n",
+ "CASH_OUT 35334\n",
+ "PAYMENT 33564\n",
+ "CASH_IN 22141\n",
+ "TRANSFER 8349\n",
+ "DEBIT 612\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "execution_count": 39,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data['type'].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Fraudulent transactions and their types"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "type\n",
+ "CASH_IN 0\n",
+ "CASH_OUT 62\n",
+ "DEBIT 0\n",
+ "PAYMENT 0\n",
+ "TRANSFER 79\n",
+ "Name: isFraud, dtype: int64"
+ ]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data.groupby('type')['isFraud'].sum()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"\"\"\n",
+ "Cash out and Transfer is the only fraudulent\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### How many transactions per user"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "nameDest\n",
+ "C1085553281 6\n",
+ "C1040847151 5\n",
+ "C1009406898 5\n",
+ "C1495761010 5\n",
+ "C709091500 5\n",
+ " ..\n",
+ "C1198398849 2\n",
+ "C1663021728 2\n",
+ "C1529167375 2\n",
+ "C1864534943 2\n",
+ "C425231479 2\n",
+ "Name: count, Length: 6289, dtype: int64"
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "nameDest_counts = sampled_data['nameDest'].value_counts()\n",
+ "\n",
+ "nameDest_counts_above_1 = nameDest_counts[nameDest_counts > 1]\n",
+ "nameDest_counts_above_1"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " step \n",
+ " type \n",
+ " amount \n",
+ " nameOrig \n",
+ " oldbalanceOrg \n",
+ " newbalanceOrig \n",
+ " nameDest \n",
+ " oldbalanceDest \n",
+ " newbalanceDest \n",
+ " isFraud \n",
+ " isFlaggedFraud \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3993414 \n",
+ " 298 \n",
+ " CASH_OUT \n",
+ " 236222.49 \n",
+ " C1246882324 \n",
+ " 32331.00 \n",
+ " 0.00 \n",
+ " C1085553281 \n",
+ " 625865.58 \n",
+ " 862088.06 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 699642 \n",
+ " 36 \n",
+ " CASH_IN \n",
+ " 80717.67 \n",
+ " C1782188042 \n",
+ " 5268034.81 \n",
+ " 5348752.48 \n",
+ " C1085553281 \n",
+ " 137112.13 \n",
+ " 56394.46 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 4661055 \n",
+ " 330 \n",
+ " TRANSFER \n",
+ " 309002.85 \n",
+ " C1172194822 \n",
+ " 130691.00 \n",
+ " 0.00 \n",
+ " C1085553281 \n",
+ " 1074980.25 \n",
+ " 1383983.10 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 4232718 \n",
+ " 306 \n",
+ " CASH_OUT \n",
+ " 212892.19 \n",
+ " C576904087 \n",
+ " 21101.00 \n",
+ " 0.00 \n",
+ " C1085553281 \n",
+ " 862088.06 \n",
+ " 1074980.25 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 2793501 \n",
+ " 215 \n",
+ " CASH_OUT \n",
+ " 333608.14 \n",
+ " C1920122155 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " C1085553281 \n",
+ " 350985.63 \n",
+ " 684593.77 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 159015 \n",
+ " 12 \n",
+ " CASH_OUT \n",
+ " 207861.13 \n",
+ " C720426124 \n",
+ " 252495.00 \n",
+ " 44633.87 \n",
+ " C1085553281 \n",
+ " 39010.00 \n",
+ " 273204.04 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " step type amount nameOrig oldbalanceOrg \\\n",
+ "3993414 298 CASH_OUT 236222.49 C1246882324 32331.00 \n",
+ "699642 36 CASH_IN 80717.67 C1782188042 5268034.81 \n",
+ "4661055 330 TRANSFER 309002.85 C1172194822 130691.00 \n",
+ "4232718 306 CASH_OUT 212892.19 C576904087 21101.00 \n",
+ "2793501 215 CASH_OUT 333608.14 C1920122155 0.00 \n",
+ "159015 12 CASH_OUT 207861.13 C720426124 252495.00 \n",
+ "\n",
+ " newbalanceOrig nameDest oldbalanceDest newbalanceDest isFraud \\\n",
+ "3993414 0.00 C1085553281 625865.58 862088.06 0 \n",
+ "699642 5348752.48 C1085553281 137112.13 56394.46 0 \n",
+ "4661055 0.00 C1085553281 1074980.25 1383983.10 0 \n",
+ "4232718 0.00 C1085553281 862088.06 1074980.25 0 \n",
+ "2793501 0.00 C1085553281 350985.63 684593.77 0 \n",
+ "159015 44633.87 C1085553281 39010.00 273204.04 0 \n",
+ "\n",
+ " isFlaggedFraud \n",
+ "3993414 0 \n",
+ "699642 0 \n",
+ "4661055 0 \n",
+ "4232718 0 \n",
+ "2793501 0 \n",
+ "159015 0 "
+ ]
+ },
+ "execution_count": 44,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data[sampled_data['nameDest'] == 'C1085553281']"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Check the amount distribution in fraudulent transactions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+UAAAIhCAYAAAAozRucAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABSGklEQVR4nO3deXxU1f3/8feQPSEJBLIQgYDIKoIggoAIyFIBcQGriMgiVBQ3BIoILSSWgoJStAjaGgJWQetavyJLKpuIFZBFWQqyhTUkrAkJJJPk/P7wl6nDBEgmE+4keT0fjzwezJlzz/3MvWcmeXOXsRljjAAAAAAAwDVXxeoCAAAAAACorAjlAAAAAABYhFAOAAAAAIBFCOUAAAAAAFiEUA4AAAAAgEUI5QAAAAAAWIRQDgAAAACARQjlAAAAAABYhFAOAAAAAIBFCOUAtGDBAtlsNsdPYGCgYmJi1LVrV02fPl1paWkuy8THx8tms5VoPdnZ2YqPj9fq1atLtFxR66pXr57uvvvuEo1zNYsWLdLs2bOLfM5msyk+Pt6j6/O0r7/+Wm3atFFISIhsNps+//xzlz5dunRx2teX+/H211oa3r6f33jjDdlsNjVv3tzSOsrKlba/uw4ePKg+ffooIiJCNptNo0eP9uj4l6pXr95l3zvnz58v03UX18GDB2Wz2bRgwQK3lr8W74WvvvqqWOtYvXp1sT63Svo7qTw5duyY4uPjtXXrVpfn3Pl9DMC7+FpdAADvkZSUpCZNmshutystLU3r1q3TK6+8oldffVUffvihunfv7ug7YsQI3XXXXSUaPzs7WwkJCZJ+CYfF5c663LFo0SJt3769yD/ov/vuO9WuXbvMa3CXMUYPPvigGjVqpC+++EIhISFq3LixS7+5c+cqIyPD8XjJkiWaOnWqY98X8ubXWlrevp/nz58vSdqxY4e+//57tWvXztJ6PO1K299dzz//vL7//nvNnz9fMTExqlWrlsfGvpyOHTvq1VdfdWkPDg4u83VXFF999ZXefPPNqwbz1q1b67vvvnNqu//++9WgQYMi90FFdOzYMSUkJKhevXq6+eabnZ67Vr8jAZQdQjkAh+bNm6tNmzaOx/3799fzzz+v22+/Xf369dPPP/+s6OhoSb+EtrIOL9nZ2QoODr4m67qa2267zdL1X82xY8d0+vRp3X///erWrdtl+zVr1szp8X//+19Jrvv+UoX7oqKzej9v2rRJ27ZtU58+fbRkyRIlJiZWuFBeFrZv3662bdvqvvvu88h4+fn5ysvLU0BAwGX7VKtWrUTzpbK8h8pCWFiYy7YOCAi46j4wxujixYsKCgoq6xIt5Q2/IwGUDqevA7iiunXr6rXXXlNmZqbefvttR3tRp8utXLlSXbp0UY0aNRQUFKS6deuqf//+ys7O1sGDBxUZGSlJSkhIcJxqOHToUKfxNm/erAceeEDVq1dXgwYNLruuQp999platGihwMBAXX/99XrjjTecni88Nf/gwYNO7YWnQxaeSt+lSxctWbJEKSkpRZ4KWdSpnNu3b9e9996r6tWrKzAwUDfffLMWLlxY5HoWL16sSZMmKTY2VmFhYerevbt27959+Q3/K+vWrVO3bt0UGhqq4OBgdejQQUuWLHE8Hx8f7/iD7IUXXpDNZlO9evWKNXZRrrQvNm3apAEDBqhevXoKCgpSvXr19PDDDyslJcVpjMLtvmrVKj355JOqWbOmatSooX79+unYsWNOfa80bwolJCSoXbt2ioiIUFhYmFq3bq3ExEQZY1zqX7Rokdq3b6+qVauqatWquvnmm5WYmCjJu/ezJEedL7/8sjp06KAPPvjAaTtI/zsteebMmXrllVcc+6JLly7as2eP7Ha7JkyYoNjYWIWHh+v+++93uQSloKBAM2bMUJMmTRQQEKCoqCgNHjxYR44ccepXr149x3v017p06eJ0tktxX//Vtv+8efPUsmVLVa1aVaGhoWrSpIkmTpx42e1VuN69e/dq6dKljvEK3++HDh3SoEGDFBUVpYCAADVt2lSvvfaaCgoKXLbnjBkzNHXqVNWvX18BAQFatWrVZdd7NV26dFHz5s21du1adejQQcHBwXrsscckSR9++KF69uypWrVqKSgoSE2bNtWECROUlZV1xW1caOjQoS7v72PHjunBBx9UaGiowsPD9dBDDyk1NbXIuoo7ZlFSU1M1cuRI1a5dW/7+/qpfv74SEhKUl5fn6FO4PV999VXNmjVL9evXV9WqVdW+fXv95z//cVrnm2++KUlOc+HSz+qSsNlsevrpp/XWW2+padOmCggIcLxXi/sZUnhp1LJly9S6dWsFBQWpSZMmjjNYCmVnZ2vcuHGqX7++AgMDFRERoTZt2mjx4sWOPsX9vJSko0eP6vHHH1edOnXk7++v2NhYPfDAAzpx4oRWr16tW2+9VZI0bNgwl8uMivodWdz3eOFc3bhxozp16qTg4GBdf/31evnll53eJwUFBZo6daoaN26soKAgVatWTS1atNDrr79ewr0EoCgcKQdwVb1795aPj4/Wrl172T6F13R26tRJ8+fPV7Vq1XT06FEtW7ZMubm5qlWrlpYtW6a77rpLw4cP14gRIyTJEdQL9evXTwMGDNATTzzh8kfqpbZu3arRo0crPj5eMTExev/99/Xcc88pNzdX48aNK9FrnDt3rh5//HHt27dPn3322VX77969Wx06dFBUVJTeeOMN1ahRQ++9956GDh2qEydOaPz48U79J06cqI4dO+qdd95RRkaGXnjhBfXt21e7du2Sj4/PZdezZs0a9ejRQy1atFBiYqICAgI0d+5c9e3bV4sXL9ZDDz2kESNGqGXLlurXr5+eeeYZDRw48IpH+IqrqH1x8OBBNW7cWAMGDFBERISOHz+uefPm6dZbb9XOnTtVs2ZNpzFGjBihPn36aNGiRTp8+LB+//vfa9CgQVq5cqVjvCvNm8IjiwcPHtTIkSNVt25dSdJ//vMfPfPMMzp69KgmT57sWN/kyZP1pz/9Sf369dPYsWMVHh6u7du3O/4I9tb9LEkXLlzQ4sWLdeutt6p58+Z67LHHNGLECH300UcaMmSIS/8333xTLVq00JtvvqmzZ89q7Nix6tu3r9q1ayc/Pz/Nnz9fKSkpGjdunEaMGKEvvvjCseyTTz6pv/3tb3r66ad199136+DBg/rjH/+o1atXa/PmzS77sbiu9vqvtP0/+OADjRo1Ss8884xeffVVValSRXv37tXOnTsvu77C05ovPZW5Vq1aSk9PV4cOHZSbm6s//elPqlevnr788kuNGzdO+/bt09y5c53GeuONN9SoUSO9+uqrCgsLU8OGDa/4Wo0xTmFUkqpUqaIqVX453nH8+HENGjRI48eP17Rp0xztP//8s3r37q3Ro0crJCRE//3vf/XKK69ow4YNjvdFSVy4cEHdu3fXsWPHNH36dDVq1EhLlizRQw89VOKxriQ1NVVt27ZVlSpVNHnyZDVo0EDfffedpk6dqoMHDyopKcmp/5tvvqkmTZo47h/wxz/+Ub1799aBAwcUHh6uP/7xj8rKytLHH3/sdGp6aS89+Pzzz/XNN99o8uTJiomJUVRUlKTif4ZI0rZt2zR27FhNmDBB0dHReueddzR8+HDdcMMNuuOOOyRJY8aM0T/+8Q9NnTpVrVq1UlZWlrZv365Tp045xinu5+XRo0d16623ym63a+LEiWrRooVOnTql5cuX68yZM2rdurWSkpI0bNgw/eEPf1CfPn0kXfkyo5K8x1NTU/XII49o7NixmjJlij777DO9+OKLio2N1eDBgyVJM2bMUHx8vP7whz/ojjvukN1u13//+1+dPXu2VPsLwP9nAFR6SUlJRpLZuHHjZftER0ebpk2bOh5PmTLF/Poj5OOPPzaSzNatWy87Rnp6upFkpkyZ4vJc4XiTJ0++7HO/FhcXZ2w2m8v6evToYcLCwkxWVpbTaztw4IBTv1WrVhlJZtWqVY62Pn36mLi4uCJrv7TuAQMGmICAAHPo0CGnfr169TLBwcHm7NmzTuvp3bu3U79//vOfRpL57rvvilxfodtuu81ERUWZzMxMR1teXp5p3ry5qV27tikoKDDGGHPgwAEjycycOfOK412qqH1/pX1xqby8PHP+/HkTEhJiXn/9dZdxR40a5dR/xowZRpI5fvy4MaZ48+ZS+fn5xm63m5deesnUqFHDsQ32799vfHx8zCOPPHLF5b1xPxtjzLvvvmskmbfeessYY0xmZqapWrWq6dSpk1O/wn3dsmVLk5+f72ifPXu2kWTuuecep/6jR482ksy5c+eMMcbs2rWryH3z/fffG0lm4sSJjra4uDgzZMgQl1o7d+5sOnfu7Hhcktd/ue3/9NNPm2rVqhWxZa4uLi7O9OnTx6ltwoQJRpL5/vvvndqffPJJY7PZzO7du40x/9ueDRo0MLm5ucVenySXn0mTJhljftk+kszXX399xXEKCgqM3W43a9asMZLMtm3bHM9duo0LDRkyxGn7zZs3z0gy//rXv5z6/e53vzOSTFJSUonHNMb1vTBy5EhTtWpVk5KS4tTv1VdfNZLMjh07jDH/25433XSTycvLc/TbsGGDkWQWL17saHvqqadcPtuLq6h9LsmEh4eb06dPX3HZy32GFI4bGBjo9DovXLhgIiIizMiRIx1tzZs3N/fdd1+Jar7c5+Vjjz1m/Pz8zM6dOy+77MaNG132Z6FLf0eW5D1eOFcvfZ80a9bM/OY3v3E8vvvuu83NN99c7NcKoGQ4fR1AsZgiThP+tZtvvln+/v56/PHHtXDhQu3fv9+t9fTv37/YfW+88Ua1bNnSqW3gwIHKyMjQ5s2b3Vp/ca1cuVLdunVTnTp1nNqHDh2q7Oxsl5sS3XPPPU6PW7RoIUlFnsZYKCsrS99//70eeOABVa1a1dHu4+OjRx99VEeOHCnRqdElVdS+OH/+vF544QXdcMMN8vX1la+vr6pWraqsrCzt2rXLpf/VXndx583KlSvVvXt3hYeHy8fHR35+fpo8ebJOnTrlODU7OTlZ+fn5euqpp0r1ui9db1nv50KJiYkKCgrSgAEDJElVq1bVb3/7W33zzTf6+eefXfr37t3bcfRVkpo2bSpJjqNol7YfOnRIkhynZV96Wnrbtm3VtGlTff3111et9XJK8/rbtm2rs2fP6uGHH9a//vUvnTx50u06pF/2XbNmzdS2bVun9qFDh8oY43JU+p577pGfn1+xx7/99tu1ceNGp59Ro0Y5nq9evbruvPNOl+X279+vgQMHKiYmxjGXO3fuLElFvoeuZtWqVQoNDXXZ9gMHDizxWFfy5ZdfqmvXroqNjVVeXp7jp1evXpJ+Oavn1/r06eN0dkhJ5kJp3HnnnapevbpLe3E+QwrdfPPNjiPqkhQYGKhGjRo51d62bVstXbpUEyZM0OrVq3XhwgWXdRb383Lp0qXq2rWr471aWiV9j8fExLi8T1q0aOHyerdt26ZRo0Zp+fLlTjcMBVB6hHIAV5WVlaVTp04pNjb2sn0aNGigf//734qKitJTTz2lBg0aqEGDBiW+3qwkpy7GxMRctu3XpxCWhVOnThVZa+E2unT9NWrUcHpceHp5UX/IFTpz5oyMMSVajycVtd6BAwdqzpw5GjFihJYvX64NGzZo48aNioyMLPK1XO11F2febNiwQT179pQk/f3vf9e3336rjRs3atKkSU5jpaenS/LsneOvxX6WpL1792rt2rXq06ePjDE6e/aszp49qwceeECSXK5nlaSIiAinx/7+/ldsv3jxolPNl3tdpZlT7r5+SXr00Ucdp9z3799fUVFRateunZKTk92qpaT7rqSnTYeHh6tNmzZOP7/+jCxqvPPnz6tTp076/vvvNXXqVK1evVobN27Up59+Kql42+lSp06dctyA89eK+nwsjRMnTuj//u//5Ofn5/Rz4403SpLLf6KUZi6URlHbvbifIYUurV36pf5f93vjjTf0wgsv6PPPP1fXrl0VERGh++67z+k/0Ir7eZmenu7xzy2p+O/x4rzeF198Ua+++qr+85//qFevXqpRo4a6deumTZs2eaxuoDLjmnIAV7VkyRLl5+df9WvMOnXqpE6dOik/P1+bNm3SX//6V40ePVrR0dGOo39XU5LvWi3qRkaFbYV/ZAQGBkqScnJynPqV9ihcjRo1dPz4cZf2wpuYuXtN7q9Vr15dVapUKfP1XM6l++LcuXP68ssvNWXKFE2YMMHRnpOTo9OnT7u9nqvNmw8++EB+fn768ssvHftTksv3sBfen+DIkSMuR7bddS32s/RL6DbG6OOPP9bHH3/s8vzChQs1derUq16XXhyF743jx4+7BIFjx445vabAwECX9470y/unLObesGHDNGzYMGVlZWnt2rWaMmWK7r77bu3Zs0dxcXElGquk+87T3/Nc1HgrV67UsWPHtHr1asfRcUlFXpcbGBioc+fOubQXFX43bNjg0q+oz8fijlmUmjVrqkWLFvrzn/9c5PNX+k/ba6mo7V7cz5CSCAkJUUJCghISEnTixAnHUfO+ffvqv//9b4k+LyMjI11uwFYaJXmPF5evr6/GjBmjMWPG6OzZs/r3v/+tiRMn6je/+Y0OHz7MNwsApcSRcgBXdOjQIY0bN07h4eEaOXJksZbx8fFRu3btHHfWLTyV3NNHSnbs2KFt27Y5tS1atEihoaFq3bq1JDnuKPzjjz869fv1Ta8KXXpk4Eq6devm+AP71959910FBwd75Ku1QkJC1K5dO3366adOdRUUFOi9995T7dq11ahRo1Kvp7hsNpuMMS43kXvnnXeUn59f6vEvN29sNpt8fX2dAumFCxf0j3/8w2n5nj17ysfHR/PmzbvierxtP+fn52vhwoVq0KCBVq1a5fIzduxYHT9+XEuXLi31uiQ5Tql+7733nNo3btyoXbt2OX2lXr169VzeO3v27CnVZRPF2f4hISHq1auXJk2apNzcXO3YsaPE6+nWrZt27tzpcinLu+++K5vNpq5du5Z4zNIqDIyXvod+/c0WherVq6c9e/Y4/afIqVOntH79eqd+Xbt2VWZmpstn2qJFi9wesyh33323tm/frgYNGricIXDpWQLFda2Onhf3M8Rd0dHRGjp0qB5++GHt3r1b2dnZJfq87NWrl1atWnXF91VJtlVJ3uPuqFatmh544AE99dRTOn36dKnumA/gFxwpB+Cwfft2x3WCaWlp+uabb5SUlCQfHx999tlnLndK/7W33npLK1euVJ8+fVS3bl1dvHjRccpt9+7dJUmhoaGKi4vTv/71L3Xr1k0RERGqWbOm21/fFRsbq3vuuUfx8fGqVauW3nvvPSUnJ+uVV15x/K/9rbfeqsaNG2vcuHHKy8tT9erV9dlnn2ndunUu491000369NNPNW/ePN1yyy2qUqXKZb+7e8qUKY5rLCdPnqyIiAi9//77WrJkiWbMmKHw8HC3XtOlpk+frh49eqhr164aN26c/P39NXfuXG3fvl2LFy/2+NG9KwkLC9Mdd9yhmTNnOvbbmjVrlJiYqGrVqrk1ZnHmTZ8+fTRr1iwNHDhQjz/+uE6dOqVXX33V5Y/devXqaeLEifrTn/6kCxcu6OGHH1Z4eLh27typkydPKiEhQZL37eelS5fq2LFjeuWVV4o8G6V58+aaM2eOEhMTdffdd5d6fY0bN9bjjz+uv/71r6pSpYp69erluDNznTp19Pzzzzv6Pvrooxo0aJBGjRql/v37KyUlRTNmzLjiZ8HVXG77/+53v1NQUJA6duyoWrVqKTU1VdOnT1d4eLjj66BK4vnnn9e7776rPn366KWXXlJcXJyWLFmiuXPn6sknn7ym/6FVqEOHDqpevbqeeOIJTZkyRX5+fnr//fdd/nNR+mXbv/322xo0aJB+97vf6dSpU5oxY4bCwsKc+g0ePFh/+ctfNHjwYP35z39Ww4YN9dVXX2n58uVuj1mUl156ScnJyerQoYOeffZZNW7cWBcvXtTBgwf11Vdf6a233irxKdg33XSTJOmVV15Rr1695OPjoxYtWjguufCU4n6GlES7du109913q0WLFqpevbp27dqlf/zjH2rfvr3j909xPy9feuklLV26VHfccYcmTpyom266SWfPntWyZcs0ZswYNWnSRA0aNFBQUJDef/99NW3aVFWrVlVsbGyR/xlSkvd4cfXt21fNmzdXmzZtFBkZqZSUFM2ePVtxcXFX/aYCAMVg4U3mAHiJwjtlF/74+/ubqKgo07lzZzNt2jSTlpbmssyld3v97rvvzP3332/i4uJMQECAqVGjhuncubP54osvnJb797//bVq1amUCAgKMJMednQvHS09Pv+q6jPnfnXc//vhjc+ONNxp/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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fraudulent_transactions = sampled_data[sampled_data['isFraud'] == 1]\n",
+ "\n",
+ "# Plot the histogram of 'amount' for fraudulent transactions\n",
+ "plt.figure(figsize=(12, 6))\n",
+ "plt.hist(fraudulent_transactions['amount'], bins=50, edgecolor='k', alpha=0.7)\n",
+ "plt.title('Distribution of Transaction Amounts for Fraudulent Transactions')\n",
+ "plt.xlabel('Amount')\n",
+ "plt.ylabel('Frequency')\n",
+ "plt.grid(True)\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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3M9LSdq/f78eeOAB1ahRQ35+foqJidEdd9yhgwcPasWKFbrmmmskSffdd1+hrxkV9TuyuO/xgtfqunXr1L59ewUFBal27dqaOnWqx/skPz9fkyZNUv369RUYGKhKlSqpSZMmeumll0q4lQAUhT3lAM6re/fu8vHx0ddff33WMQXf6Wzfvr3efvttVapUSfv379fixYuVk5OjatWqafHixbr55pt1//33a8iQIZLkDuoFevfurb59++rBBx8s9EfqmTZu3KiRI0cqISFB0dHReu+99zRixAjl5ORo9OjRJXqOr732mh544AH9/vvv+uSTT847ftu2bWrbtq0iIyP18ssvq3Llypo7d64GDRqkgwcPasyYMR7jx40bp3bt2umtt95SRkaGnnjiCfXq1Uu//PKLfHx8zvo4K1euVJcuXdSkSRPNmjVL/v7+eu2119SrVy/Nnz9fd911l4YMGaKmTZuqd+/eeuSRR9SvX79z7uErrqK2xe7du1W/fn317dtXERERSklJ0cyZM3XNNddo69atqlKlisccQ4YMUY8ePTRv3jzt3btXf/3rX9W/f38tW7bMPd+5XjcFexZ3796toUOHqmbNmpKk7777To888oj279+vp556yv14Tz31lJ555hn17t1bjz/+uMLCwrR582b3H8FldTtL0qlTpzR//nxdc801io+P1+DBgzVkyBB9+OGHGjhwYKHxr776qpo0aaJXX31Vx44d0+OPP65evXqpdevWcjqdevvtt5WcnKzRo0dryJAh+uyzz9zrPvTQQ/rXv/6l4cOHq2fPntq9e7f+/ve/a8WKFdqwYUOh7Vhc53v+5+r/+++/r4cffliPPPKIXnjhBVWoUEE7duzQ1q1bz/p4BYc1n3koc7Vq1ZSenq62bdsqJydHzzzzjGrVqqXPP/9co0eP1u+//67XXnvNY66XX35Z9erV0wsvvKDQ0FDVrVv3nM/VGOMRRiWpQoUKqlDhj/0dKSkp6t+/v8aMGaPJkye7l//222/q3r27Ro4cqeDgYP3666967rnntHbtWvf7oiROnTqlG2+8UQcOHNCUKVNUr149LVy4UHfddVeJ5zqX1NRUtWrVShUqVNBTTz2lOnXqaM2aNZo0aZJ2796txMREj/GvvvqqGjRo4D5/wN///nd1795du3btUlhYmP7+97/r5MmT+uijjzwOTS/tVw8+/fRTffPNN3rqqacUHR2tyMhIScX/DJGkn376SY8//rjGjh2rqKgovfXWW7r//vt15ZVX6vrrr5ckjRo1Su+++64mTZqkZs2a6eTJk9q8ebMOHz7snqe4n5f79+/XNddcI5fLpXHjxqlJkyY6fPiwlixZoqNHj6p58+ZKTEzUfffdp7/97W/q0aOHpHN/zagk7/HU1FTdc889evzxxzVhwgR98sknevLJJxUTE6N7771XkjRt2jQlJCTob3/7m66//nq5XC79+uuvOnbsWKm2F4D/zwC47CUmJhpJZt26dWcdExUVZRo2bOi+PWHCBPPnj5CPPvrISDIbN2486xzp6elGkpkwYUKh+wrme+qpp85635/FxsYah8NR6PG6dOliQkNDzcmTJz2e265duzzGLV++3Egyy5cvdy/r0aOHiY2NLbL2M+vu27ev8ff3N3v27PEY161bNxMUFGSOHTvm8Tjdu3f3GPfvf//bSDJr1qwp8vEKXHvttSYyMtJkZma6l+Xm5pr4+HhTvXp1k5+fb4wxZteuXUaSef75588535mK2vbn2hZnys3NNSdOnDDBwcHmpZdeKjTvww8/7DF+2rRpRpJJSUkxxhTvdXOmvLw843K5zNNPP20qV67s7sHOnTuNj4+Pueeee865flnczsYYM2fOHCPJvP7668YYYzIzM03FihVN+/btPcYVbOumTZuavLw89/IZM2YYSeaWW27xGD9y5EgjyRw/ftwYY8wvv/xS5Lb5/vvvjSQzbtw497LY2FgzcODAQrV26NDBdOjQwX27JM//bP0fPny4qVSpUhGdOb/Y2FjTo0cPj2Vjx441ksz333/vsfyhhx4yDofDbNu2zRjzv37WqVPH5OTkFPvxJBX6GT9+vDHmj/5IMl999dU558nPzzcul8usXLnSSDI//fST+74ze1xg4MCBHv2bOXOmkWT+85//eIz7y1/+YiSZxMTEEs9pTOH3wtChQ03FihVNcnKyx7gXXnjBSDJbtmwxxvyvn40bNza5ubnucWvXrjWSzPz5893Lhg0bVuizvbiK2uaSTFhYmDly5Mg51z3bZ0jBvAEBAR7P89SpUyYiIsIMHTrUvSw+Pt7cdtttJar5bJ+XgwcPNk6n02zduvWs665bt67Q9ixw5u/IkrzHC16rZ75PGjVqZG666Sb37Z49e5qrr7662M8V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3bp10/Lly8/5vipJr0ryHvdGpUqVdMcdd2jYsGE6cuRIqc6YD+AP7CkH4LZ582b39wTT0tL0zTffKDExUT4+Pvrkk08KnSn9z15//XUtW7ZMPXr0UM2aNXX69Gn3Ibc33nijJCkkJESxsbH6z3/+o86dOysiIkJVqlTx+vJdMTExuuWWW5SQkKBq1app7ty5SkpK0nPPPef+X/trrrlG9evX1+jRo5Wbm6vw8HB98sknWrVqVaH5GjdurI8//lgzZ85UixYtVKFChbNeu3vChAnu71g+9dRTioiI0HvvvaeFCxdq2rRpCgsL8+o5nWnKlCnq0qWLOnXqpNGjR8vPz0+vvfaaNm/erPnz51u+d+9cQkNDdf311+v55593b7eVK1dq1qxZqlSpkldzFud106NHD02fPl39+vXTAw88oMOHD+uFF14o9MdurVq1NG7cOD3zzDM6deqU7r77boWFhWnr1q06dOiQJk6cKKnsbedFixbpwIEDeu6554o8GiU+Pl6vvPKKZs2apZ49e5b68erXr68HHnhA//znP1WhQgV169bNfWbmGjVq6LHHHnOPHTBggPr376+HH35Yffr0UXJysqZNm3bOz4LzOVv///KXvygwMFDt2rVTtWrVlJqaqilTpigsLMx9OaiSeOyxxzRnzhz16NFDTz/9tGJjY7Vw4UK99tpreuihhy7qf2gVaNu2rcLDw/Xggw9qwoQJcjqdeu+99wr956L0R+/feOMN9e/fX3/5y190+PBhTZs2TaGhoR7j7r33Xv3jH//Qvffeq2effVZ169bVF198oSVLlng9Z1GefvppJSUlqW3btnr00UdVv359nT59Wrt379YXX3yh119/vcSHYDdu3FiS9Nxzz6lbt27y8fFRkyZN3F+5sEpxP0NKonXr1urZs6eaNGmi8PBw/fLLL3r33XfVpk0b9++f4n5ePv3001q0aJGuv/56jRs3To0bN9axY8e0ePFijRo1Sg0aNFCdOnUUGBio9957Tw0bNlTFihUVExNT5H+GlOQ9Xly9evVSfHy8WrZsqapVqyo5OVkzZsxQbGzsea9UAKAYbDzJHIAyouBM2QU/fn5+JjIy0nTo0MFMnjzZpKWlFVrnzLO9rlmzxtx+++0mNjbW+Pv7m8qVK5sOHTqYzz77zGO9L7/80jRr1sz4+/sbSe4zOxfMl56eft7H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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fraudulent_transactions = sampled_data[sampled_data['isFraud'] == 1]\n",
+ "\n",
+ "# Plot the histogram of 'amount' for fraudulent transactions\n",
+ "plt.figure(figsize=(12, 6))\n",
+ "n, bins, patches = plt.hist(fraudulent_transactions['amount'], bins=50, edgecolor='k', alpha=0.7)\n",
+ "\n",
+ "# Customize x-axis labels\n",
+ "# Create a list of labels for the x-axis ticks\n",
+ "tick_labels = [f'{x:.0f}' for x in range(0, int(fraudulent_transactions['amount'].max()) + 1, int(fraudulent_transactions['amount'].max() // 10))]\n",
+ "\n",
+ "# Set x-axis ticks and labels\n",
+ "plt.xticks(ticks=list(range(0, int(fraudulent_transactions['amount'].max()) + 1, int(fraudulent_transactions['amount'].max() // 10))), labels=tick_labels)\n",
+ "\n",
+ "plt.title('Distribution of Transaction Amounts for Fraudulent Transactions')\n",
+ "plt.xlabel('Amount')\n",
+ "plt.ylabel('Frequency')\n",
+ "plt.grid(True)\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Basic \"stupid\" model - going straight for the heaviest model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 47,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Accuracy Score: 0.9995\n",
+ "Confusion Matrix:\n",
+ "[[19970 2]\n",
+ " [ 8 20]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "X = sampled_data.drop(columns=['type','nameOrig','nameDest', 'isFraud'])\n",
+ "y = sampled_data['isFraud']\n",
+ "\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "\n",
+ "xgb_clf = xgb.XGBClassifier()\n",
+ "xgb_clf.fit(X_train, y_train)\n",
+ "y_pred = xgb_clf.predict(X_test)\n",
+ "\n",
+ "accuracy = accuracy_score(y_test, y_pred)\n",
+ "print(f\"Accuracy Score: {accuracy:.4f}\")\n",
+ "\n",
+ "conf_matrix = confusion_matrix(y_test, y_pred)\n",
+ "print(\"Confusion Matrix:\")\n",
+ "print(conf_matrix)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"\"\"\n",
+ "The model has high accuracy, there are very few false positives (2) and false negatives (8)\n",
+ "\n",
+ "For fraud detection we want to minimize false negatives, false positives are okay to have\n",
+ "\n",
+ "We can improve\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Check Feature Importance"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 109,
+ "metadata": {
+ "scrolled": false
+ },
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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lJmZaXeJRho5cqSaN2+uuLg45eXlqWPHjkpJSVH58uX13nvv6bbbbrO7xOuGwGKgixcv6tNPP9WBAwfUt29f+fv767vvvlNAQIDLxCtc4e/vr40bN/LDwQ0XLlxQdHS0XnzxRXoCiun06dM6ePCgLMtS/fr1+fd5FZUrV3aumrr11lvVr18/Pfroozp06JCaNGnCHKki3HjjjXrnnXcUHh6ut99+W0OHDtUnn3yiJUuW6JNPPtFnn31md4nXDUNChjl8+LB69Oih9PR05ebmqlu3bvL399eMGTN07tw5ljUXITg4uMjlfyhc2bJltWfPHiZB/gYVKlRQixYt7C6jRLj11lsVHx+vDh066PPPP1dSUpIk6euvv1bt2rVtrs5c2dnZqlGjhiRp9erV+vOf/6yGDRsqLi7OuZLIU7ATlGFGjBih8PBw/fjjjy5LdO+9916tW7fOxsrMlpiYqKeeekqHDh2yu5QSpV+/flq0aJHdZZQIvXv3dk6o7d2791UfKOiFF15QmTJl9Oabb2r+/Pm68cYbJUkffPCBevToYXN15goKCtKXX36pvLw8ffjhh+ratask6ezZsy4rhzwBPSyG2bRpkz777LMCe66EhITo6NGjNlVlvpiYGJ09e1b169dX+fLlCxxhcPz4cZsqM9v58+f18ssvKzk5WeHh4QWWhc+aNcumyswTGBjo7I26vP8Prl2dOnX03nvvFWifPXu2DdWUHAMGDFCfPn2cc/O6desmSdq6davH7cNCYDFMfn5+oSta/ve//8nf39+GikqGxMREu0sokfbs2aPWrVtLutQ1/3MMFbm6vIrFsixNnDhR1apVU/ny5W2uqmQ5cOCAXn31VR04cEDPPfecqlevrg8//FDBwcFq2rSp3eUZaeLEiWrWrJmOHDmiP//5z879uby9vfXUU0/ZXN31xaRbw8TExCgwMFALFy6Uv7+/du/erWrVqqlXr16qU6cOS/8Am+Xn58vPz0///e9/C2y4h6KtX79ePXv2VIcOHbRhwwbt3btX9erV04wZM/T55587l9GjaOfOnXM5i8nTEFgM891336lz587y9vbW/v37FR4erv3796tq1arasGEDh4QVIT09/arP16lT5zpVUvKcOHFC33zzjRwOh+rXr6+KFSvaXZLxmjZtqkWLFql9+/Z2l1JiRERE6M9//rPi4+Pl7++vXbt2qV69etq2bZvuuecehryLkJeXp6effloLFizQ999/r6+//lr16tXTuHHjVLduXcXFxdld4nXDpFvD1KpVS2lpaRo9erQGDRqkVq1aadq0aUpNTSWsXEXdunUVGhpa5AMFHTp0SHfeeaeqVq2qdu3aqW3btqpataruuusuJi//ihkzZmj06NHas2eP3aWUGF988YXuvffeAu3VqlVTdna2DRWVDFOmTNHixYs1Y8YMl7mNzZs318svv2xjZdcfc1gMs2HDBkVGRmrAgAEaMGCAs/3ixYvasGGDOnbsaGN15kpNTXX5+sKFC0pNTdWsWbM0ZcoUm6oy15EjR9S+fXuVLVtW//znP9W4cWNZlqW9e/dq/vz5ioiI0LZt21huWoQHH3xQZ8+eVcuWLeXj4+Oyok9ikndhKlasqIyMjAK/QKSmpjpXDKGgJUuWaOHCherSpYsGDx7sbG/RooX27dtnY2XXH0NChvH29lZGRkaB3pTs7GxVr16dLebd9P777+uZZ57Rp59+ancpRnn44Yd14MABrVmzpsCY+E8//aQePXqoQYMGLHkuwmuvvXbV5x966KHrVEnJ8cQTTyglJUUrVqxQw4YNtXPnTn3//ffq16+f+vXrx3lgRShXrpz27dunkJAQl6G0L7/8Um3bttXp06ftLvG6oYfFMJZlFbo6Izs7m5OIi6Fhw4batm2b3WUY58MPP9Ty5csLncBXrlw5/fOf/9Rf/vIXGyorGQgk7psyZYr69++vG2+8UZZlqUmTJsrLy1Pfvn01duxYu8szVtOmTbVx40aFhIS4tK9YsUKtWrWyqSp7EFgMcXmzKYfDof79+zuXrkmXJl3t3r1bkZGRdpVnvMsbel1mWZYyMjI0ceJEVnIUIjs7+6pnBdWrV495BVdx9OhRrVy5Ul9//bUcDocaNmyo3r17M7RxFWXLltXrr7+uyZMnKzU1Vfn5+WrVqhX/Pn/FhAkTFBsbq6NHjyo/P1+rVq3SV199pSVLlhS6r01pRmAxxOWNqCzLkr+/v8uYuI+Pj9q3b69HHnnErvKMV7FixQI9U5ZlKTg4WG+88YZNVZmrVq1a+u9//1vkHJU9e/aoZs2a17mqkmHevHmKj4/X+fPnFRgYKMuylJOTo9GjR2vWrFkaMmSI3SUarX79+qpfv77dZZQYd999t5KSkvT000/L4XBo/Pjxat26tf7zn/84N5HzFMxhMcwTTzyhiRMnOjekOnTokN5++201btxY3bt3t7k6c61fv97lay8vL1WrVk0NGjRQmTLk8l8aOXKkPv74Y61bt07VqlVzee7YsWPq1q2bOnfuzIZ8v/D++++rV69eGjlypB577DFnqMvIyNAzzzyj559/Xu+8847uuOMOmys1y5kzZzR9+nStWrVKhw4dksPhUGhoqO6//349/vjjbMCHa0JgMUy3bt103333afDgwTpx4oTCwsJUtmxZZWVladasWfrb3/5md4koBX788Ue1a9dOmZmZevDBB51bfH/55ZdaunSpatSooS1btqhy5co2V2qWTp06KSoqSv/6178KfX7s2LHauHFjgQDtyc6fP6/IyEjt2bNHPXv2VFhYmHNF2ocffqjWrVtrw4YNBY7TwCWWZWnHjh3OoFevXj3dfPPNnrkTtQWjVKlSxdqzZ49lWZb10ksvWS1atLDy8vKs5cuXW2FhYTZXZ7ZvvvnGGjZsmNWlSxera9eu1t///nfrm2++sbssYx0/ftwaPHiwValSJcvhcFgOh8OqVKmSNWjQICsrK8vu8ozk7+9v7du3r8jn9+3bZ1WoUOE6VmS+xMREKygoqNDPbe/evVZQUJA1Z84cGyoz38cff2yFhoZaXl5ezn+jXl5eVv369a3169fbXd51x8Zxhjl79qzzzKC1a9eqd+/e8vLyUvv27XX48GGbqzPXmjVr1KRJE33++edq0aKFmjVrpq1bt6pp06ZKTk62uzwjVapUSfPnz1d2drYyMzOVmZmp7OxsLViwQFWqVLG7PCPl5+dftSegbNmysui0drFq1SqNGzdOjRo1KvBcWFiYEhIS2Ja/EN98843uuusu1a1bV6tWrdLevXv15ZdfasWKFapdu7buuOMOHTx40O4yry+7ExNcNW/e3Hruuees9PR0KyAgwNq8ebNlWZa1fft2KygoyObqzHXzzTdbTz75ZIH2J5980mrVqpUNFZUcFy5csJKTk60FCxZYOTk5lmVZ1tGjR61Tp07ZXJl52rZta82aNavI55999lmrbdu217Ei81WtWtXZa1yYL774wqpatep1rKhkGDp0qHX77bcX+lx+fr51++23W8OGDbvOVdmLwGKYFStWWGXLlrW8vLysbt26Oduffvppq0ePHjZWZjZfX1/r66+/LtD+1Vdf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tEjp6ekaNWqU3eUZi6MgcL1wsOsVzGEB4LRlyxZt3rxZDRo0oJfgKn55FMTnn3+u7OxsjoK4Clak4bcisACAmzgKwn2sSPttGH5kSAjwOO++++41X+tJ/xm6g6Mg3Pf666/rpZde0p133qlJkybpgQceUP369dWiRQtt2bKFwFIEhh+vILAAHuZaV2t42oQ+d3AUhPtYkVY8I0aMUGhoqD766KNChx89ScHdjwCUavn5+df0IKwUbezYsc4zXf71r3/p8OHDioqK0urVqzVnzhybqzPT5RVpkpwr0iSxIu1XpKSkaPLkyapWrZq8vLzk5eWlW2+9VVOnTvW4Xil6WADATRwF4T5WpBUPw49XEFgAD3fmzBmtX7++0Al9nvYb3G/BOTlXN23aNOef77//ftWuXZsVadeA4ccrWCUEeLDU1FTdcccdOnv2rM6cOaPKlSsrKytL5cuXV/Xq1XXw4EG7SzRG7969r/naVatW/YGVwJOsWbNGZ86cUe/evXXw4EHddddd2rdvn/Mk+ttvv93uEq8belgADzZq1Cjdfffdmj9/vipWrKgtW7aobNmyevDBBzVixAi7yzNKYGCg3SWUOKxI++0YfryCHhbAg1WsWFFbt25Vo0aNVLFiRaWkpKhx48baunWrHnroIe3bt8/uElGCFXaqdWFYkYZrQQ8L4MHKli3r/C0tKChI6enpaty4sQIDA5Wenm5zdSjpLq+kgnsYfiwcgQXwYK1atdL27dvVsGFDde7cWePHj1dWVpb+/e9/O/fMQOHefPPNIreZ37lzp01VoTRg+LFwDAkBHmz79u06deqUOnfurB9++EEPPfSQNm3apAYNGujVV19Vy5Yt7S7RSHPmzFFCQoIeeughvfTSSxowYIAOHDigbdu2aejQoZoyZYrdJRqJFWn4LQgsAOCmsLAwTZgwQQ888ID8/f21a9cu1atXT+PHj9fx48f1wgsv2F2icViRht+KwAJAx44d01dffSWHw6FGjRqpWrVqdpdktPLly2vv3r0KCQlR9erVlZycrJYtW2r//v1q3769srOz7S7ROLfddpsaNmzoXJG2a9culxVp7szb8DQMP17C1vyAB8vJyVFsbKxuvPFGderUSR07dlStWrX04IMPOs96QUE1atRwhpKQkBBt2bJFkvTtt9+K3wELl5aWpscee0ze3t7y9vZWbm6u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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots()\n",
+ "ax.bar(range(len(xgb_reg.feature_importances_)), xgb_reg.feature_importances_)\n",
+ "plt.xticks(range(6),X.columns,rotation=90)\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### What is the distribution of the outcome? "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 110,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "isFraud\n",
+ "0 99859\n",
+ "1 141\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "execution_count": 110,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sampled_data['isFraud'].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 111,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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MjISEydOfOKhSSIiIvp3qNFzrH777Td06dJFel5yLtKQIUMQGxuLyZMn48GDBwgJCUFWVhY8PT2xY8cOWFpaSq9ZsGABjIyMMGDAADx48ABdu3ZFbGwsDA0NpZq1a9di3Lhx0tWDffr0kd07y9DQEFu3bkVISAg6dOgAMzMzBAYGYv78+VKNRqPBzp07MWbMGLRr1w7W1taYOHGi7PwpIiIi+ndTCcFbh/+TcnJyoNFokJ2dXW3nW/HkdaKy8eR1Iqqqyv7+fmbPsSIiIiLSNwxWRERERAphsCIiIiJSCIMVERERkUIYrIiIiIgUwmBFREREpBAGKyIiIiKFMFgRERERKYTBioiIiEghDFZERERECmGwIiIiIlIIgxURERGRQhisiIiIiBTCYEVERESkEAYrIiIiIoUwWBEREREphMGKiIiISCEMVkREREQKYbAiIiIiUgiDFREREZFCGKyIiIiIFMJgRURERKQQBisiIiIihTBYERERESmEwYqIiIhIIQxWRERERAphsCIiIiJSCIMVERERkUIYrIiIiIgUwmBFREREpBAGKyIiIiKFMFgRERERKYTBioiIiEghDFZERERECmGwIiIiIlIIgxURERGRQhisiIiIiBTCYEVERESkEAYrIiIiIoUwWBEREREphMGKiIiISCEMVkREREQKYbAiIiIiUgiDFREREZFCGKyIiIiIFMJgRURERKQQBisiIiIihTBYERERESmEwYqIiIhIIQxWRERERAphsCIiIiJSCIMVERERkUIYrIiIiIgUwmBFREREpBAGKyIiIiKFMFgRERERKYTBioiIiEghDFZERERECmGwIiIiIlLIMx2sCgsL8eGHH6JRo0YwMzND48aNMXv2bBQXF0s1QghERETA0dERZmZm6Ny5M06dOiWbT15eHsaOHQtbW1tYWFigT58+uHr1qqwmKysLQUFB0Gg00Gg0CAoKwp07d2Q1aWlp6N27NywsLGBra4tx48YhPz+/2tafiIiI9MszHazmzp2LpUuXYtGiRUhNTUV0dDTmzZuHzz//XKqJjo5GTEwMFi1ahKSkJDg4OMDX1xd3796VakJDQxEfH4+4uDgcOHAA9+7dQ0BAAIqKiqSawMBAJCcnIyEhAQkJCUhOTkZQUJA0vaioCP7+/sjNzcWBAwcQFxeH9evXIyws7J95M4iIiOiZpxJC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8OjRo9i9eze2bNmCVq1aaZ28vmHDBsWaIyIiItInOger2rVro3///tXRCxEREZFeq9KftCEiIiIibbx9OhEREZFCdN5j1ahRowrvV/XXX389VUNERERE+krnYBUaGip7XlBQgOPHjyMhIQHvv/++Un0RERER6R2dg9X48ePLHP/iiy/w22+/PXVDRERERPpKsXOsevbsifXr1ys1OyIiIiK9o1iw+vHHH1GnTh2lZkdERESkd3Q+FNi2bVvZyetCCKSnp+PmzZtYvHixos0RERER6ROdg1W/fv1kzw0MDFC3bl107twZzZs3V6ovIiIiIr2jc7CaOXNmdfRBREREpPd4g1AiIiIihVR6j5WBgUGFNwYFAJVKhcLCwqduioiIiEgfVTpYxcfHlzvt0KFD+PzzzyGEUKQpIiIiIn1U6WDVt29frbEzZ84gPDwcmzdvxqBBg/DRRx8p2hwRERGRPqnSOVbXr1/HyJEj4ebmhsLCQiQnJ2PVqlVo0KCB0v0RERER6Q2dglV2djamTJmCF198EadOncKuXbuwefNmuLq6Vld/RERERHqj0ocCo6OjMXfuXDg4OODbb78t89AgERER0b9ZpYPV1KlTYWZmhhdffBGrVq3CqlWryqzbsGGDYs0RERER6ZNKB6vBgwc/8XYLRERERP9mlQ5WsbGx1dgGERERkf7jndeJiIiIFMJgRURERKQQBisiIiIihTBYERERESmEwYqIiIhIIQxWRERERAphsCIiIiJSCIMVERERkUIYrIiIiIgUwmBFREREpBAGKyIiIiKFMFgRERERKYTBioiIiEghDFZERERECmGwIiIiIlIIgxURERGRQhisiIiIiBTCYEVERESkEAYrIiIiIoUwWBEREREphMGKiIiISCEMVkREREQKYbAiIiIiUgiDFREREZFCGKyIiIiIFMJgRURERKSQZzpYRUVF4eWXX4alpSXs7OzQr18/nD17VlYjhEBERAQcHR1hZmaGzp0749SpU7KavLw8jB07Fra2trCwsECfPn1w9epVWU1WVhaCgoKg0Wig0WgQFBSEO3fuyGrS0tLQu3dvWFhYwNbWFuPGjUN+fn61rDsRERHpn2c6WO3duxdjxoxBYmIidu7cicLCQvj5+SE3N1eqiY6ORkxMDBYtWoSkpCQ4ODjA19cXd+/elWpCQ0MRHx+PuLg4HDhwAPfu3UNAQACKioqkmsDAQCQnJyMhIQEJCQlITk5GUFCQNL2oqAj+/v7Izc3FgQMHEBcXh/Xr1yMsLOyfeTOIiIjomacSQoiabqKybt68CTs7O+zduxedOnWCEAKOjo4IDQ3FlClTADzaO2Vvb4+5c+di9OjRyM7ORt26dbF69WoMHDgQAHD9+nU4OTlh27Zt6N69O1JTU9GyZUskJibC09MTAJCYmAgvLy+cOXMGLi4u2L59OwICAnDlyhU4OjoCAOLi4hAcHIyMjAxYWVlVah1ycnKg0WiQnZ1d6dfoquPoj6plvkT6bv+y6TXdAhHpqcr+/n6m91iVlp2dDQCoU6cOAODixYtIT0+Hn5+fVKNWq+Hj44NDhw4BAI4dO4aCggJZjaOjI1xdXaWaw4cPQ6PRSKEKANq3bw+NRiOrcXV1lUIVAHTv3h15eXk4duxYuT3n5eUhJydH9iAiIqLnk94EKyEEJk6ciFdeeQWurq4AgPT0dACAvb29rNbe3l6alp6eDhMTE1hbW1dYY2dnp7VMOzs7WU3p5VhbW8PExESqKUtUVJR03pZGo4GTk5Muq01ERER6RG+C1XvvvYcTJ07g22+/1ZqmUqlkz4UQWmOlla4pq74qNaWFh4cjOztbely5cqXCvoiIiEh/6UWwGjt2LDZt2oQ9e/agfv360riDgwMAaO0xysjIkPYuOTg4ID8/H1lZWRXW/P3331rLvXnzpqym9HKysrJQUFCgtSfrcWq1GlZWVrIHERERPZ+e6WAlhMB7772HDRs2YPfu3WjUqJFseqNGjeDg4ICdO3dKY/n5+di7dy+8vb0BAB4eHjA2NpbV3LhxAykpKVKNl5cXsrOzcfToUanmyJEjyM7OltWkpKTgxo0bUs2OHTugVqvh4eGh/MoTERGR3jGq6QYqMmbMGKxbtw4//fQTLC0tpT1GGo0GZmZmUKlUCA0NRWRkJJo2bYqmTZsiMjIS5ubmCAwMlGqHDx+OsLAw2NjYoE6dOpg0aRJat26Nbt26AQBatGiBHj16YOTIkVi2bBkAYNSoUQgICICLiwsAwM/PDy1btkRQUBDmzZuHzMxMTJo0CSNHjuReKCIiIgLwjAerJUuWAAA6d+4sG1+5ciWCg4MBAJMnT8aDBw8QEhKCrKwseHp6YseOHbC0tJTqFyxYACMjIwwYMAAPHjxA165dERsbC0NDQ6lm7dq1GDdunHT1YJ8+fbBo0SJpuqGhIbZu3YqQkBB06NABZmZmCAwMxPz586tp7YmIiEjf6NV9rJ4HvI8VUc3hfayIqKqey/tYERERET3LGKyIiIiIFMJgRURERKQQBisiIiIihTBYERERESmEwYqIiIhIIQxWRERERAphsCIiIiJSCIMVERERkUIYrIiIiIgUwmBFREREpBAGKyIiIiKFMFgRERERKYTBioiIiEghDFZERERECmGwIiIiIlIIgxURERGRQhisiIiIiBTCYEVERESkEAYrIiIiIoUwWBEREREphMGKiIiISCEMVkREREQKYbAiIiIiUgiDFREREZFCGKyIiIiIFMJgRURERKQQBisiIiIihTBYERERESmEwYqIiIhIIQxWRERERAphsCIiIiJSCIMVERERkUIYrIiIiIgUwmBFREREpBAGKyIiIiKFMFgRERERKYTBioiIiEghDFZERERECmGwIiIiIlIIgxURERGRQhisiIiIiBTCYEVERESkEAYrIiIiIoUwWBEREREphMGKiIiISCEMVkREREQKYbAiIiIiUgiDFREREZFCGKyIiIiIFMJgRURERKQQBisiIiIihTBYERERESmEwYqIiIhIIQxWRERERAphsCIiIiJSCIMVERERkUIYrIiIiIgUwmBFREREpBAGqypYvHgxGjVqBFNTU3h4eGD//v013RIRERE9AxisdPTdd98hNDQU06ZNw/Hjx9GxY0f07NkTaWlpNd0aERER1TAGKx3FxMRg+PDhGDFiBFq0aIGFCxfCyckJS5YsqenWiIiIqIYxWOkgPz8fx44dg5+fn2zcz88Phw4dqqGuiIiI6FlhVNMN6JNbt26hqKgI9vb2snF7e3ukp6eX+Zq8vDzk5eVJz7OzswEAOTk51dZnYf7Daps3kT6rzu/dP6XfjxE13QLRM2njGxHVOv+Snx9CiArrGKyqQKVSyZ4LIbTGSkRFRWHWrFla405OTtXSGxGVTxMbWdMtEFE10Qxf8I8s5+7du9BoNOVOZ7DSga2tLQwNDbX2TmVkZGjtxSoRHh6OiRMnSs+Li4uRmZkJGxubcsMYPT9ycnLg5OSEK1euwMrKqqbbISIF8fv97yKEwN27d+Ho6FhhHYOVDkxMTODh4YGdO3fitddek8Z37tyJvn37lvkatVoNtVotG6tdu3Z1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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Your response here\n",
+ "fraud_counts = sampled_data['isFraud'].value_counts()\n",
+ "sns.barplot(x=fraud_counts.index, y=fraud_counts.values, palette='viridis')\n",
+ "plt.xlabel('Fraudulent Transaction (isFraud)')\n",
+ "plt.ylabel('Number of Transactions')\n",
+ "plt.title('Distribution of Fraudulent vs Non-Fraudulent Transactions')\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Clean the dataset. Pre-process it to make it suitable for ML training. Feel free to explore, drop, encode, transform, etc. Whatever you feel will improve the model score."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " step \n",
+ " amount \n",
+ " nameOrig \n",
+ " oldbalanceOrg \n",
+ " newbalanceOrig \n",
+ " nameDest \n",
+ " oldbalanceDest \n",
+ " newbalanceDest \n",
+ " isFraud \n",
+ " isFlaggedFraud \n",
+ " type_CASH_IN \n",
+ " type_CASH_OUT \n",
+ " type_DEBIT \n",
+ " type_PAYMENT \n",
+ " type_TRANSFER \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3737323 \n",
+ " 278 \n",
+ " 330218.42 \n",
+ " C632336343 \n",
+ " 20866.00 \n",
+ " 351084.42 \n",
+ " C834976624 \n",
+ " 452419.57 \n",
+ " 122201.15 \n",
+ " 0 \n",
+ " 0 \n",
+ " 1 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 264914 \n",
+ " 15 \n",
+ " 11647.08 \n",
+ " C1264712553 \n",
+ " 30370.00 \n",
+ " 18722.92 \n",
+ " M215391829 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 1 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 85647 \n",
+ " 10 \n",
+ " 152264.21 \n",
+ " C1746846248 \n",
+ " 106589.00 \n",
+ " 258853.21 \n",
+ " C1607284477 \n",
+ " 201303.01 \n",
+ " 49038.80 \n",
+ " 0 \n",
+ " 0 \n",
+ " 1 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 5899326 \n",
+ " 403 \n",
+ " 1551760.63 \n",
+ " C333676753 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " C1564353608 \n",
+ " 3198359.45 \n",
+ " 4750120.08 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " 2544263 \n",
+ " 206 \n",
+ " 78172.30 \n",
+ " C813403091 \n",
+ " 2921331.58 \n",
+ " 2999503.88 \n",
+ " C1091768874 \n",
+ " 415821.90 \n",
+ " 337649.60 \n",
+ " 0 \n",
+ " 0 \n",
+ " 1 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " 3113342 \n",
+ " 235 \n",
+ " 371042.71 \n",
+ " C1973614102 \n",
+ " 1699365.85 \n",
+ " 2070408.56 \n",
+ " C1358214518 \n",
+ " 4301572.86 \n",
+ " 3930530.15 \n",
+ " 0 \n",
+ " 0 \n",
+ " 1 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 5156943 \n",
+ " 357 \n",
+ " 19494.57 \n",
+ " C287170039 \n",
+ " 1921089.11 \n",
+ " 1940583.68 \n",
+ " C159882434 \n",
+ " 75635.52 \n",
+ " 56140.95 \n",
+ " 0 \n",
+ " 0 \n",
+ " 1 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 5189870 \n",
+ " 369 \n",
+ " 141519.24 \n",
+ " C387888280 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " C999640037 \n",
+ " 12853274.23 \n",
+ " 12994793.47 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 1 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 1551677 \n",
+ " 154 \n",
+ " 635412.68 \n",
+ " C1458432906 \n",
+ " 58610.00 \n",
+ " 694022.68 \n",
+ " C8292738 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " 0 \n",
+ " 0 \n",
+ " 1 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " 6142173 \n",
+ " 545 \n",
+ " 31617.57 \n",
+ " C1314607150 \n",
+ " 10626.00 \n",
+ " 0.00 \n",
+ " M1600734161 \n",
+ " 0.00 \n",
+ " 0.00 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 0 \n",
+ " 1 \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
100000 rows × 15 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " step amount nameOrig oldbalanceOrg newbalanceOrig \\\n",
+ "3737323 278 330218.42 C632336343 20866.00 351084.42 \n",
+ "264914 15 11647.08 C1264712553 30370.00 18722.92 \n",
+ "85647 10 152264.21 C1746846248 106589.00 258853.21 \n",
+ "5899326 403 1551760.63 C333676753 0.00 0.00 \n",
+ "2544263 206 78172.30 C813403091 2921331.58 2999503.88 \n",
+ "... ... ... ... ... ... \n",
+ "3113342 235 371042.71 C1973614102 1699365.85 2070408.56 \n",
+ "5156943 357 19494.57 C287170039 1921089.11 1940583.68 \n",
+ "5189870 369 141519.24 C387888280 0.00 0.00 \n",
+ "1551677 154 635412.68 C1458432906 58610.00 694022.68 \n",
+ "6142173 545 31617.57 C1314607150 10626.00 0.00 \n",
+ "\n",
+ " nameDest oldbalanceDest newbalanceDest isFraud isFlaggedFraud \\\n",
+ "3737323 C834976624 452419.57 122201.15 0 0 \n",
+ "264914 M215391829 0.00 0.00 0 0 \n",
+ "85647 C1607284477 201303.01 49038.80 0 0 \n",
+ "5899326 C1564353608 3198359.45 4750120.08 0 0 \n",
+ "2544263 C1091768874 415821.90 337649.60 0 0 \n",
+ "... ... ... ... ... ... \n",
+ "3113342 C1358214518 4301572.86 3930530.15 0 0 \n",
+ "5156943 C159882434 75635.52 56140.95 0 0 \n",
+ "5189870 C999640037 12853274.23 12994793.47 0 0 \n",
+ "1551677 C8292738 0.00 0.00 0 0 \n",
+ "6142173 M1600734161 0.00 0.00 0 0 \n",
+ "\n",
+ " type_CASH_IN type_CASH_OUT type_DEBIT type_PAYMENT type_TRANSFER \n",
+ "3737323 1 0 0 0 0 \n",
+ "264914 0 0 0 1 0 \n",
+ "85647 1 0 0 0 0 \n",
+ "5899326 0 0 0 0 1 \n",
+ "2544263 1 0 0 0 0 \n",
+ "... ... ... ... ... ... \n",
+ "3113342 1 0 0 0 0 \n",
+ "5156943 1 0 0 0 0 \n",
+ "5189870 0 1 0 0 0 \n",
+ "1551677 1 0 0 0 0 \n",
+ "6142173 0 0 0 1 0 \n",
+ "\n",
+ "[100000 rows x 15 columns]"
+ ]
+ },
+ "execution_count": 51,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Your code here\n",
+ "sampled_data = pd.get_dummies(sampled_data, columns=['type'], dtype=int)\n",
+ "sampled_data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"\"\"\n",
+ "So I just encoded the 'type' column since there were only 2 values that had fraudulent transactions\n",
+ "\n",
+ "'Cash-out' and 'Transfer'\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Run a logisitc regression classifier and evaluate its accuracy."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 53,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Accuracy Score: 0.9994\n",
+ "Confusion Matrix:\n",
+ "[[19971 1]\n",
+ " [ 11 17]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Your code here\n",
+ "X = sampled_data.drop(columns=['nameOrig','nameDest', 'isFraud'])\n",
+ "y = sampled_data['isFraud']\n",
+ "\n",
+ "# Split the data into training and testing sets (80% train, 20% test)\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "\n",
+ "# Initialize and train the Logistic Regression model\n",
+ "logreg = LogisticRegression(max_iter=200)\n",
+ "logreg.fit(X_train, y_train)\n",
+ "\n",
+ "# Make predictions on the test data\n",
+ "y_pred = logreg.predict(X_test)\n",
+ "\n",
+ "# Calculate the accuracy score\n",
+ "accuracy = accuracy_score(y_test, y_pred)\n",
+ "print(f'Accuracy Score: {accuracy}')\n",
+ "\n",
+ "# Print the confusion matrix\n",
+ "conf_matrix = confusion_matrix(y_test, y_pred)\n",
+ "print('Confusion Matrix:')\n",
+ "print(conf_matrix)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"\"\"\n",
+ "Again high accuracy but compared to the first xgb model, there are less false positives but more false negatives\n",
+ "\n",
+ "The false negatives is the most significant measure here and it was not improved.\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Now pick a model of your choice and evaluate its accuracy."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Accuracy Score: 0.9997\n",
+ "Confusion Matrix:\n",
+ "[[19972 0]\n",
+ " [ 7 21]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Your code here\n",
+ "X = sampled_data.drop(columns=['nameOrig','nameDest', 'isFraud'])\n",
+ "y = sampled_data['isFraud']\n",
+ "\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "\n",
+ "xgb_clf = xgb.XGBClassifier()\n",
+ "xgb_clf.fit(X_train, y_train)\n",
+ "y_pred = xgb_clf.predict(X_test)\n",
+ "\n",
+ "accuracy = accuracy_score(y_test, y_pred)\n",
+ "print(f\"Accuracy Score: {accuracy:.4f}\")\n",
+ "\n",
+ "conf_matrix = confusion_matrix(y_test, y_pred)\n",
+ "print(\"Confusion Matrix:\")\n",
+ "print(conf_matrix)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"\"\"\n",
+ "Here is the xgb model with encoded 'type'. We now have 0 false positives which is a great improvement\n",
+ "\n",
+ "and 1 less false negative and +1 true positive (21), this is overall a good improvement.\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Now we resample the data using SMOTE for a Logistic Regressor"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Accuracy Score: 0.9688\n",
+ "Confusion Matrix:\n",
+ "[[19349 623]\n",
+ " [ 1 27]]\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/Users/martynas/anaconda3/lib/python3.11/site-packages/sklearn/linear_model/_logistic.py:469: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
+ "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
+ "\n",
+ "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
+ " https://scikit-learn.org/stable/modules/preprocessing.html\n",
+ "Please also refer to the documentation for alternative solver options:\n",
+ " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
+ " n_iter_i = _check_optimize_result(\n"
+ ]
+ }
+ ],
+ "source": [
+ "X = sampled_data.drop(columns=['nameOrig','nameDest', 'isFraud', 'isFlaggedFraud'])\n",
+ "y = sampled_data['isFraud']\n",
+ "\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "\n",
+ "# Apply SMOTE to balance the classes\n",
+ "smote = SMOTE(random_state=42)\n",
+ "X_train_smote, y_train_smote = smote.fit_resample(X_train, y_train)\n",
+ "\n",
+ "# Train a Logistic Regression model\n",
+ "model = LogisticRegression(max_iter=200)\n",
+ "model.fit(X_train_smote, y_train_smote)\n",
+ "\n",
+ "# Predictions\n",
+ "y_pred = model.predict(X_test)\n",
+ "\n",
+ "# Evaluate the model\n",
+ "accuracy = accuracy_score(y_test, y_pred)\n",
+ "conf_matrix = confusion_matrix(y_test, y_pred)\n",
+ "\n",
+ "print(f\"Accuracy Score: {accuracy:.4f}\")\n",
+ "print(\"Confusion Matrix:\")\n",
+ "print(conf_matrix)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"\"\"\n",
+ "Here is the logistic regressor using SMOTE with 200 iterations.\n",
+ "\n",
+ "The output shows that the accuracy has decreased, this is evident with the extreme increase in false positives\n",
+ "\n",
+ "False positives can be looked at as a 'flag for fraudulent' which is why it is not so significant, as you can\n",
+ "choose not to act on it.\n",
+ "\n",
+ "We now have only 1 false negative which is an incredible increase in detecting actual fraudulent transactions.\n",
+ "In the original data, the column 'isFlaggedFraud' has 140 false negatives, our model has only 1.\n",
+ "\n",
+ "The trade-off for accuracy score is definitely worth it.\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Increasing the amount of iterations on the Logistic Regressor still using SMOTE"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Accuracy Score: 0.9628\n",
+ "Confusion Matrix:\n",
+ "[[19229 743]\n",
+ " [ 1 27]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "X = sampled_data.drop(columns=['nameOrig','nameDest', 'isFraud', 'isFlaggedFraud'])\n",
+ "y = sampled_data['isFraud']\n",
+ "\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "\n",
+ "# Apply SMOTE to balance the classes\n",
+ "smote = SMOTE(random_state=42)\n",
+ "X_train_smote, y_train_smote = smote.fit_resample(X_train, y_train)\n",
+ "\n",
+ "# Train a Logistic Regression model\n",
+ "model = LogisticRegression(max_iter=500)\n",
+ "model.fit(X_train_smote, y_train_smote)\n",
+ "\n",
+ "# Predictions\n",
+ "y_pred = model.predict(X_test)\n",
+ "\n",
+ "# Evaluate the model\n",
+ "accuracy = accuracy_score(y_test, y_pred)\n",
+ "conf_matrix = confusion_matrix(y_test, y_pred)\n",
+ "\n",
+ "print(f\"Accuracy Score: {accuracy:.4f}\")\n",
+ "print(\"Confusion Matrix:\")\n",
+ "print(conf_matrix)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"\"\"\n",
+ "After increasing the iterations, the amount of false positives increased (743) and the overall accuracy\n",
+ "lost.\n",
+ "\n",
+ "Iteration sweet spot is 200\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Using SMOTE with the xgb model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Accuracy Score: 0.9980\n",
+ "Confusion Matrix:\n",
+ "[[19933 39]\n",
+ " [ 2 26]]\n"
+ ]
+ }
+ ],
+ "source": [
+ "X = sampled_data.drop(columns=['nameOrig', 'nameDest', 'isFraud', 'isFlaggedFraud'])\n",
+ "y = sampled_data['isFraud']\n",
+ "\n",
+ "# Split the dataset into training and testing sets\n",
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
+ "\n",
+ "# Apply SMOTE to balance the classes in the training set\n",
+ "smote = SMOTE(random_state=42)\n",
+ "X_train_smote, y_train_smote = smote.fit_resample(X_train, y_train)\n",
+ "\n",
+ "# Initialize the XGBoost model\n",
+ "xgb_model = xgb.XGBClassifier()\n",
+ "\n",
+ "# Fit the model on the SMOTE balanced data\n",
+ "xgb_model.fit(X_train_smote, y_train_smote)\n",
+ "\n",
+ "# Predict on the test set\n",
+ "y_pred = xgb_model.predict(X_test)\n",
+ "\n",
+ "# Evaluate the model\n",
+ "accuracy = accuracy_score(y_test, y_pred)\n",
+ "conf_matrix = confusion_matrix(y_test, y_pred)\n",
+ "\n",
+ "# Output the results\n",
+ "print(f\"Accuracy Score: {accuracy:.4f}\")\n",
+ "print(\"Confusion Matrix:\")\n",
+ "print(conf_matrix)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\"\"\"\n",
+ "The XGBoost model has a higher accuracy score compared to the Logistic Regression model.\n",
+ "\n",
+ "True Negatives (TN): Higher for XGBoost (19933) It correctly predicts more non-fraudulent transactions.\n",
+ "\n",
+ "False Positives (FP): Significantly lower for XGBoost (39)\n",
+ "Fewer non-fraudulent transactions are misclassified as fraudulent. Logistic Regressor (623)\n",
+ "\n",
+ "False Negatives (FN): Slightly higher for XGBoost (2)\n",
+ "Slightly more fraudulent transactions are missed compared to Logistic Regression (1)\n",
+ "\n",
+ "True Positives (TP): Slightly lower for XGBoost (26)\n",
+ "It detects slightly fewer fraudulent transactions compared to Logistic Regression (27)\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Which model worked better and how do you know?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Your response here\n",
+ "\n",
+ "\"\"\"\n",
+ "The best model is the Logistic Regressor using SMOTE with 200 iterations\n",
+ "\n",
+ "The amount of false positives, as mentioned before, is not as significant as false negatives.\n",
+ "\n",
+ "It is more important not to allow fraudulent transactions on your platform happen unnoticed than to\n",
+ "flag innocent transactions as fraudulent, as this issue can be solved faster.\n",
+ "\n",
+ "The incredibly low number (1) of the false negatives is a gigantic improvement from 140 false negatives\n",
+ "\n",
+ "\"\"\""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Note: before doing the first commit, make sure you don't include the large csv file, either by adding it to .gitignore, or by deleting it."
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}