{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Let's have a look at how to implement a logistic regression model in Python. First, we need to import the required packages" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:37.509336Z", "iopub.status.busy": "2024-05-31T21:41:37.509056Z", "iopub.status.idle": "2024-05-31T21:41:39.996531Z", "shell.execute_reply": "2024-05-31T21:41:39.995766Z" } }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.preprocessing import StandardScaler, MinMaxScaler\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import confusion_matrix, accuracy_score, roc_auc_score, recall_score, precision_score, roc_curve\n", "pd.set_option('display.max_columns', 50) # Display up to 50 columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's download the dataset automatically, unzip it, and place it in a folder called `data` if you haven't done so already" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:40.001148Z", "iopub.status.busy": "2024-05-31T21:41:40.000773Z", "iopub.status.idle": "2024-05-31T21:41:43.055849Z", "shell.execute_reply": "2024-05-31T21:41:43.055214Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading dataset...\n", "DONE!\n" ] } ], "source": [ "from io import BytesIO\n", "from urllib.request import urlopen\n", "from zipfile import ZipFile\n", "import os.path\n", "\n", "# Check if the file exists\n", "if not os.path.isfile('data/card_transdata.csv'):\n", "\n", " print('Downloading dataset...')\n", "\n", " # Define the dataset to be downloaded\n", " zipurl = 'https://www.kaggle.com/api/v1/datasets/download/dhanushnarayananr/credit-card-fraud'\n", "\n", " # Download and unzip the dataset in the data folder\n", " with urlopen(zipurl) as zipresp:\n", " with ZipFile(BytesIO(zipresp.read())) as zfile:\n", " zfile.extractall('data')\n", "\n", " print('DONE!')\n", "\n", "else:\n", "\n", " print('Dataset already downloaded!')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then, we can load the data into a DataFrame using the `read_csv` function from the `pandas` library" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:43.059169Z", "iopub.status.busy": "2024-05-31T21:41:43.058925Z", "iopub.status.idle": "2024-05-31T21:41:43.901661Z", "shell.execute_reply": "2024-05-31T21:41:43.901060Z" } }, "outputs": [], "source": [ "df = pd.read_csv('data/card_transdata.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that it is common to call this variable `df` which is short for DataFrame.\n", "\n", "This is a **dataset of credit card transactions** from [Kaggle.com](https://www.kaggle.com/datasets/dhanushnarayananr/credit-card-fraud/data). The target variable $y$ is `fraud`, which indicates whether the transaction is fraudulent or not. The other variables are the features $x$ of the transactions.\n", "\n", "\n", "### Data Exploration & Preprocessing\n", "\n", "The first step whenever you load a new dataset is to familiarize yourself with it. You need to understand what the variables represent, what the target variable is, and what the data looks like. This is called **data exploration**. Depending on the dataset, you might need to preprocess it (e.g., check for missing values and duplicates, or create new variables) before you can use it to train a machine-learning model. This is called **data preprocessing**.\n", "\n", "#### Basic Dataframe Operations {-}\n", "\n", "Let's see how many rows and columns the dataset has" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:43.905015Z", "iopub.status.busy": "2024-05-31T21:41:43.904762Z", "iopub.status.idle": "2024-05-31T21:41:43.912619Z", "shell.execute_reply": "2024-05-31T21:41:43.912039Z" } }, "outputs": [ { "data": { "text/plain": [ "(1000000, 8)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The dataset has 1 million rows (observations) and 8 columns (variables)! Now, let's have a look at the first few rows of the dataset with the `head()` method" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:43.915615Z", "iopub.status.busy": "2024-05-31T21:41:43.915385Z", "iopub.status.idle": "2024-05-31T21:41:43.929105Z", "shell.execute_reply": "2024-05-31T21:41:43.928533Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
01234
distance_from_home57.87785710.8299435.0910792.24756444.190936
distance_from_last_transaction0.3111400.1755920.8051535.6000440.566486
ratio_to_median_purchase_price1.9459401.2942190.4277150.3626632.222767
repeat_retailer1.0000001.0000001.0000001.0000001.000000
used_chip1.0000000.0000000.0000001.0000001.000000
used_pin_number0.0000000.0000000.0000000.0000000.000000
online_order0.0000000.0000001.0000001.0000001.000000
fraud0.0000000.0000000.0000000.0000000.000000
\n", "
" ], "text/plain": [ " 0 1 2 3 \\\n", "distance_from_home 57.877857 10.829943 5.091079 2.247564 \n", "distance_from_last_transaction 0.311140 0.175592 0.805153 5.600044 \n", "ratio_to_median_purchase_price 1.945940 1.294219 0.427715 0.362663 \n", "repeat_retailer 1.000000 1.000000 1.000000 1.000000 \n", "used_chip 1.000000 0.000000 0.000000 1.000000 \n", "used_pin_number 0.000000 0.000000 0.000000 0.000000 \n", "online_order 0.000000 0.000000 1.000000 1.000000 \n", "fraud 0.000000 0.000000 0.000000 0.000000 \n", "\n", " 4 \n", "distance_from_home 44.190936 \n", "distance_from_last_transaction 0.566486 \n", "ratio_to_median_purchase_price 2.222767 \n", "repeat_retailer 1.000000 \n", "used_chip 1.000000 \n", "used_pin_number 0.000000 \n", "online_order 1.000000 \n", "fraud 0.000000 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head().T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you would like to see more entries in the dataset, you can use the `head()` method with an argument corresponding to the number of rows, e.g.," ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:43.932192Z", "iopub.status.busy": "2024-05-31T21:41:43.931949Z", "iopub.status.idle": "2024-05-31T21:41:43.949990Z", "shell.execute_reply": "2024-05-31T21:41:43.949346Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
distance_from_homedistance_from_last_transactionratio_to_median_purchase_pricerepeat_retailerused_chipused_pin_numberonline_orderfraud
057.8778570.3111401.9459401.01.00.00.00.0
110.8299430.1755921.2942191.00.00.00.00.0
25.0910790.8051530.4277151.00.00.01.00.0
32.2475645.6000440.3626631.01.00.01.00.0
444.1909360.5664862.2227671.01.00.01.00.0
55.58640813.2610730.0647681.00.00.00.00.0
63.7240190.9568380.2784651.00.00.01.00.0
74.8482470.3207351.2730501.00.01.00.00.0
80.8766322.5036091.5169990.00.00.00.00.0
98.8390472.9705122.3616831.00.00.01.00.0
1014.2635300.1587581.1361021.01.00.01.00.0
1113.5923680.2405401.3703301.01.00.01.00.0
12765.2825590.3715620.5512451.01.00.00.00.0
132.13195656.3724016.3586671.00.00.01.01.0
1413.9559720.2715222.7989011.00.00.01.00.0
15179.6651480.1209200.5356401.01.01.01.00.0
16114.5197890.7070030.5169901.00.00.00.00.0
173.5896496.2474581.8464511.00.00.00.00.0
1811.08515234.6613512.5307581.00.00.01.00.0
196.1946711.1420140.3072171.00.00.00.00.0
\n", "
" ], "text/plain": [ " distance_from_home distance_from_last_transaction \\\n", "0 57.877857 0.311140 \n", "1 10.829943 0.175592 \n", "2 5.091079 0.805153 \n", "3 2.247564 5.600044 \n", "4 44.190936 0.566486 \n", "5 5.586408 13.261073 \n", "6 3.724019 0.956838 \n", "7 4.848247 0.320735 \n", "8 0.876632 2.503609 \n", "9 8.839047 2.970512 \n", "10 14.263530 0.158758 \n", "11 13.592368 0.240540 \n", "12 765.282559 0.371562 \n", "13 2.131956 56.372401 \n", "14 13.955972 0.271522 \n", "15 179.665148 0.120920 \n", "16 114.519789 0.707003 \n", "17 3.589649 6.247458 \n", "18 11.085152 34.661351 \n", "19 6.194671 1.142014 \n", "\n", " ratio_to_median_purchase_price repeat_retailer used_chip \\\n", "0 1.945940 1.0 1.0 \n", "1 1.294219 1.0 0.0 \n", "2 0.427715 1.0 0.0 \n", "3 0.362663 1.0 1.0 \n", "4 2.222767 1.0 1.0 \n", "5 0.064768 1.0 0.0 \n", "6 0.278465 1.0 0.0 \n", "7 1.273050 1.0 0.0 \n", "8 1.516999 0.0 0.0 \n", "9 2.361683 1.0 0.0 \n", "10 1.136102 1.0 1.0 \n", "11 1.370330 1.0 1.0 \n", "12 0.551245 1.0 1.0 \n", "13 6.358667 1.0 0.0 \n", "14 2.798901 1.0 0.0 \n", "15 0.535640 1.0 1.0 \n", "16 0.516990 1.0 0.0 \n", "17 1.846451 1.0 0.0 \n", "18 2.530758 1.0 0.0 \n", "19 0.307217 1.0 0.0 \n", "\n", " used_pin_number online_order fraud \n", "0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 \n", "2 0.0 1.0 0.0 \n", "3 0.0 1.0 0.0 \n", "4 0.0 1.0 0.0 \n", "5 0.0 0.0 0.0 \n", "6 0.0 1.0 0.0 \n", "7 1.0 0.0 0.0 \n", "8 0.0 0.0 0.0 \n", "9 0.0 1.0 0.0 \n", "10 0.0 1.0 0.0 \n", "11 0.0 1.0 0.0 \n", "12 0.0 0.0 0.0 \n", "13 0.0 1.0 1.0 \n", "14 0.0 1.0 0.0 \n", "15 1.0 1.0 0.0 \n", "16 0.0 0.0 0.0 \n", "17 0.0 0.0 0.0 \n", "18 0.0 1.0 0.0 \n", "19 0.0 0.0 0.0 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head(20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that analogously you can also use the `tail()` method to see the last few rows of the dataset.\n", "\n", "We can also check what the variables in our dataset are called" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:43.953563Z", "iopub.status.busy": "2024-05-31T21:41:43.953287Z", "iopub.status.idle": "2024-05-31T21:41:43.958035Z", "shell.execute_reply": "2024-05-31T21:41:43.957439Z" } }, "outputs": [ { "data": { "text/plain": [ "Index(['distance_from_home', 'distance_from_last_transaction',\n", " 'ratio_to_median_purchase_price', 'repeat_retailer', 'used_chip',\n", " 'used_pin_number', 'online_order', 'fraud'],\n", " dtype='object')" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "and the data types of the variables" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:43.961158Z", "iopub.status.busy": "2024-05-31T21:41:43.960918Z", "iopub.status.idle": "2024-05-31T21:41:43.965614Z", "shell.execute_reply": "2024-05-31T21:41:43.965085Z" } }, "outputs": [ { "data": { "text/plain": [ "distance_from_home float64\n", "distance_from_last_transaction float64\n", "ratio_to_median_purchase_price float64\n", "repeat_retailer float64\n", "used_chip float64\n", "used_pin_number float64\n", "online_order float64\n", "fraud float64\n", "dtype: object" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.dtypes" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case, all our variables are floating-point numbers (`float`). This means that they are numbers that have a fractional part such as 1.5, 3.14, etc. The number after `float`, `64` in this case refers to the number of bits that are used to represent this number in the computer's memory. With 64 bits you can store more decimals than you could with, for example, 32, meaning that the results of computations can be more precise. But for the topics discussed in this course, this is not very important. Other common data types that you might encounter are integers (`int`) such as 1, 3, 5, etc., or strings (`str`) such as `'hello'`, `'world'`, etc.\n", "\n", "Let's dig deeper into the dataset and see some summary statistics" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:43.968537Z", "iopub.status.busy": "2024-05-31T21:41:43.968304Z", "iopub.status.idle": "2024-05-31T21:41:44.273250Z", "shell.execute_reply": "2024-05-31T21:41:44.272566Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
distance_from_home1000000.026.62879265.3907840.0048743.8780089.96776025.74398510632.723672
distance_from_last_transaction1000000.05.03651925.8430930.0001180.2966710.9986503.35574811851.104565
ratio_to_median_purchase_price1000000.01.8241822.7995890.0043990.4756730.9977172.096370267.802942
repeat_retailer1000000.00.8815360.3231570.0000001.0000001.0000001.0000001.000000
used_chip1000000.00.3503990.4770950.0000000.0000000.0000001.0000001.000000
used_pin_number1000000.00.1006080.3008090.0000000.0000000.0000000.0000001.000000
online_order1000000.00.6505520.4767960.0000000.0000001.0000001.0000001.000000
fraud1000000.00.0874030.2824250.0000000.0000000.0000000.0000001.000000
\n", "
" ], "text/plain": [ " count mean std min \\\n", "distance_from_home 1000000.0 26.628792 65.390784 0.004874 \n", "distance_from_last_transaction 1000000.0 5.036519 25.843093 0.000118 \n", "ratio_to_median_purchase_price 1000000.0 1.824182 2.799589 0.004399 \n", "repeat_retailer 1000000.0 0.881536 0.323157 0.000000 \n", "used_chip 1000000.0 0.350399 0.477095 0.000000 \n", "used_pin_number 1000000.0 0.100608 0.300809 0.000000 \n", "online_order 1000000.0 0.650552 0.476796 0.000000 \n", "fraud 1000000.0 0.087403 0.282425 0.000000 \n", "\n", " 25% 50% 75% max \n", "distance_from_home 3.878008 9.967760 25.743985 10632.723672 \n", "distance_from_last_transaction 0.296671 0.998650 3.355748 11851.104565 \n", "ratio_to_median_purchase_price 0.475673 0.997717 2.096370 267.802942 \n", "repeat_retailer 1.000000 1.000000 1.000000 1.000000 \n", "used_chip 0.000000 0.000000 1.000000 1.000000 \n", "used_pin_number 0.000000 0.000000 0.000000 1.000000 \n", "online_order 0.000000 1.000000 1.000000 1.000000 \n", "fraud 0.000000 0.000000 0.000000 1.000000 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe().T" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the `describe()` method we can see the count, mean, standard deviation, minimum, 25th percentile, median, 75th percentile, and maximum values of each variable in the dataset.\n", "\n", "\n", "#### Checking for Missing Values and Duplicated Rows {-}\n", "\n", "It is also important to check for missing values and duplicated rows in the dataset. Missing values can be problematic for machine learning models, as they might not be able to handle them. Duplicated rows can also be problematic, as they might introduce bias in the model.\n", "\n", "We can check for missing values (NA) that are encoded as None or `numpy.NaN` (Not a Number) with the `isna()` method. This method returns a boolean DataFrame (i.e., a DataFrame with `True` and `False` values) with the same shape as the original DataFrame, where `True` values indicate missing values." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:44.276571Z", "iopub.status.busy": "2024-05-31T21:41:44.276326Z", "iopub.status.idle": "2024-05-31T21:41:44.292844Z", "shell.execute_reply": "2024-05-31T21:41:44.291889Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
distance_from_homedistance_from_last_transactionratio_to_median_purchase_pricerepeat_retailerused_chipused_pin_numberonline_orderfraud
0FalseFalseFalseFalseFalseFalseFalseFalse
1FalseFalseFalseFalseFalseFalseFalseFalse
2FalseFalseFalseFalseFalseFalseFalseFalse
3FalseFalseFalseFalseFalseFalseFalseFalse
4FalseFalseFalseFalseFalseFalseFalseFalse
...........................
999995FalseFalseFalseFalseFalseFalseFalseFalse
999996FalseFalseFalseFalseFalseFalseFalseFalse
999997FalseFalseFalseFalseFalseFalseFalseFalse
999998FalseFalseFalseFalseFalseFalseFalseFalse
999999FalseFalseFalseFalseFalseFalseFalseFalse
\n", "

1000000 rows × 8 columns

\n", "
" ], "text/plain": [ " distance_from_home distance_from_last_transaction \\\n", "0 False False \n", "1 False False \n", "2 False False \n", "3 False False \n", "4 False False \n", "... ... ... \n", "999995 False False \n", "999996 False False \n", "999997 False False \n", "999998 False False \n", "999999 False False \n", "\n", " ratio_to_median_purchase_price repeat_retailer used_chip \\\n", "0 False False False \n", "1 False False False \n", "2 False False False \n", "3 False False False \n", "4 False False False \n", "... ... ... ... \n", "999995 False False False \n", "999996 False False False \n", "999997 False False False \n", "999998 False False False \n", "999999 False False False \n", "\n", " used_pin_number online_order fraud \n", "0 False False False \n", "1 False False False \n", "2 False False False \n", "3 False False False \n", "4 False False False \n", "... ... ... ... \n", "999995 False False False \n", "999996 False False False \n", "999997 False False False \n", "999998 False False False \n", "999999 False False False \n", "\n", "[1000000 rows x 8 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isna()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "or to make it easier to see, we can sum the number of missing values for each variable" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:44.296013Z", "iopub.status.busy": "2024-05-31T21:41:44.295745Z", "iopub.status.idle": "2024-05-31T21:41:44.312444Z", "shell.execute_reply": "2024-05-31T21:41:44.311788Z" } }, "outputs": [ { "data": { "text/plain": [ "distance_from_home 0\n", "distance_from_last_transaction 0\n", "ratio_to_median_purchase_price 0\n", "repeat_retailer 0\n", "used_chip 0\n", "used_pin_number 0\n", "online_order 0\n", "fraud 0\n", "dtype: int64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.isna().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Luckily, there seem to be no missing values. However, you need to be careful! Sometimes missing values are encoded as empty strings `''` or `numpy.inf` (infinity), which are not considered missing values by the `isna()` method. If you suspect that this might be the case, you need to make additional checks.\n", "\n", "As an alternative, we could also look at the `info()` method, which provides a summary of the DataFrame, including the number of non-null values in each column. If there are missing values, the number of non-null values will be less than the number of rows in the dataset." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:44.315680Z", "iopub.status.busy": "2024-05-31T21:41:44.315410Z", "iopub.status.idle": "2024-05-31T21:41:44.341337Z", "shell.execute_reply": "2024-05-31T21:41:44.340575Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 1000000 entries, 0 to 999999\n", "Data columns (total 8 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 distance_from_home 1000000 non-null float64\n", " 1 distance_from_last_transaction 1000000 non-null float64\n", " 2 ratio_to_median_purchase_price 1000000 non-null float64\n", " 3 repeat_retailer 1000000 non-null float64\n", " 4 used_chip 1000000 non-null float64\n", " 5 used_pin_number 1000000 non-null float64\n", " 6 online_order 1000000 non-null float64\n", " 7 fraud 1000000 non-null float64\n", "dtypes: float64(8)\n", "memory usage: 61.0 MB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also check for duplicated rows with the `duplicated()` method. " ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:44.344806Z", "iopub.status.busy": "2024-05-31T21:41:44.344474Z", "iopub.status.idle": "2024-05-31T21:41:44.755545Z", "shell.execute_reply": "2024-05-31T21:41:44.754828Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
distance_from_homedistance_from_last_transactionratio_to_median_purchase_pricerepeat_retailerused_chipused_pin_numberonline_orderfraud
\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [distance_from_home, distance_from_last_transaction, ratio_to_median_purchase_price, repeat_retailer, used_chip, used_pin_number, online_order, fraud]\n", "Index: []" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.loc[df.duplicated()]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Luckily, there are also no duplicated rows.\n", "\n", "\n", "#### Data Visualization {-}\n", "\n", "Let's continue with some data visualization. We can use the `matplotlib` library to create plots. We have already imported the library at the beginning of the notebook.\n", "\n", "Let's start by plotting the distribution of the target variable `fraud` which can only take values zero and one. We can type" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:44.758854Z", "iopub.status.busy": "2024-05-31T21:41:44.758591Z", "iopub.status.idle": "2024-05-31T21:41:44.775173Z", "shell.execute_reply": "2024-05-31T21:41:44.774500Z" } }, "outputs": [ { "data": { "text/plain": [ "fraud\n", "0.0 912597\n", "1.0 87403\n", "Name: count, dtype: int64" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['fraud'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "to get the count of each value. We can also use the `normalize=True` argument to get the fraction of observations instead of the count" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:44.778957Z", "iopub.status.busy": "2024-05-31T21:41:44.778650Z", "iopub.status.idle": "2024-05-31T21:41:44.790903Z", "shell.execute_reply": "2024-05-31T21:41:44.790082Z" } }, "outputs": [ { "data": { "text/plain": [ "fraud\n", "0.0 0.912597\n", "1.0 0.087403\n", "Name: proportion, dtype: float64" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['fraud'].value_counts(normalize=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then plot it as follows" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:44.794842Z", "iopub.status.busy": "2024-05-31T21:41:44.794563Z", "iopub.status.idle": "2024-05-31T21:41:44.988475Z", "shell.execute_reply": "2024-05-31T21:41:44.987957Z" } }, "outputs": [ { "data": { "image/png": "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pRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApbg93CQkJCgsLEze3t6KiIhQcnLydftv375dERER8vb21u23367FixdXUKUAAKAqcGu4SUxM1Pjx4zV16lQdOnRIkZGR6t+/v1JTU0vsf/LkSd17772KjIzUoUOH9Le//U3jxo3Thx9+WMGVAwCAysqt4SY+Pl5jxozR2LFj1bJlS82fP1/BwcFatGhRif0XL16spk2bav78+WrZsqXGjh2rRx55RHPmzKngygEAQGXltnBz+fJlHThwQP369XNo79evn3bv3l3iPnv27CnW/+6779b+/ft15cqVcqsVAABUHdXddeKsrCwVFhYqMDDQoT0wMFAZGRkl7pORkVFi/4KCAmVlZalx48bF9snPz1d+fr79fW5uriQpLy/vZj9ClXM1/6K7S0AFuhX/G7+V8fN9a7kVf76LPrNhGDfs67ZwU8Rmszm8NwyjWNuN+pfUXiQuLk4zZ84s1h4cHGy2VKBK8Zvv7goAlJdb+ef7/Pnz8vPzu24ft4WbgIAAeXh4FBulyczMLDY6U6RRo0Yl9q9evbr8/f1L3Cc2NlYxMTH291evXlVOTo78/f2vG6JgDXl5eQoODlZaWpp8fX3dXQ4AF+Ln+9ZiGIbOnz+voKCgG/Z1W7jx9PRURESEkpKSNGjQIHt7UlKS7rvvvhL36dKliz7++GOHts2bN6tjx46qUaNGift4eXnJy8vLoa1u3bo3VzyqHF9fX/7nB1gUP9+3jhuN2BRx691SMTExWrp0qZYvX65jx45pwoQJSk1NVXR0tKRroy4jRoyw94+Ojtbp06cVExOjY8eOafny5Vq2bJkmTZrkro8AAAAqGbfOuRk6dKiys7M1a9Yspaenq3Xr1tq0aZNCQkIkSenp6Q5r3oSFhWnTpk2aMGGCFi5cqKCgIC1YsECDBw9210cAAACVjM1wZtoxUEXl5+crLi5OsbGxxS5PAqja+PlGaQg3AADAUtz+bCkAAABXItwAAABLIdwAAABLIdwAAABLIdwAAABLcfuzpYDyUFhYqKysLNlsNvn7+8vDw8PdJQEAKggj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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df['fraud'].value_counts(normalize=True).plot(kind='bar')\n", "plt.xlabel('Fraud')\n", "plt.ylabel('Fraction of Observations')\n", "plt.title('Distribution of Fraud')\n", "ax = plt.gca()\n", "ax.set_ylim([0.0, 1.0])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatively, we can plot it as a pie chart" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:44.992370Z", "iopub.status.busy": "2024-05-31T21:41:44.992157Z", "iopub.status.idle": "2024-05-31T21:41:45.098729Z", "shell.execute_reply": "2024-05-31T21:41:45.097631Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.value_counts(\"fraud\").plot.pie(autopct = \"%.1f\")\n", "plt.ylabel('')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our dataset seems to be quite imbalanced, as only 8.7% of the transactions are fraudulent. This is a common problem in fraud detection datasets, as fraudulent transactions are usually very rare. We will need to **keep this in mind** when evaluating our machine learning model: the accuracy measure will be very high even for bad models, as the model can just predict that all transactions are not fraudulent and still get an accuracy of 91.3%.\n", "\n", "Let's look at some distributions. Most of the variables in the dataset are binary (0 or 1) variables. However, we also have some continuous variables. Let's plot the distribution of the variable `ratio_to_median_purchase_price`, which is a continuous variable." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:45.102989Z", "iopub.status.busy": "2024-05-31T21:41:45.102739Z", "iopub.status.idle": "2024-05-31T21:41:45.302505Z", "shell.execute_reply": "2024-05-31T21:41:45.301894Z" } }, "outputs": [ { "data": { "image/png": "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pQ8//NCj5plnnlFYWJgCAwM1ffp0Xbx40WP/pTN5ubm5uu+++3TjjTfqpptu0oQJE/T3v//d3N/Ys9dff13x8fHq2bOn7rrrLhUVFV32tQUGBio8PFy33XabfvnLX+r222/XG2+8Ian5Jbu7777b7Kck2Ww2/fa3v9WDDz6ogIAA/fKXv5Qkvfnmm4qNjVWPHj0UEhKiyZMnexzn/PnzevTRRxUYGKi+ffvqd7/7ncf+p556SgMHDlTPnj11yy23aPHixR6h7cMPP1R8fLwCAwMVFBSkmJgY7d2719xfWFio+++/X/7+/oqMjNTcuXN17ty5Vnths9kUHh6uiIgIxcfHa8mSJSovL9ff/vY3bd++XTabTW+//bZiY2Nlt9v1/vvvN7sU+PLLL+uOO+4wr9fZs2eb+7y5PgArEayALugf//iHcnNz5evra25raGhQnz599Mc//lEHDx7Uz3/+c/30pz/VH//4R0lfLaFMmTLFnPmqqKjQ8OHDmxz7n//8p773ve/pnnvu0Ycffqh169bppZdeMv8Dfqnhw4drzZo15uxDRUWFFixYIOmrwLJ37169+eabKioqkmEY+t73vnfZWZawsDAlJiZq48aNkr4KBa+99poeffRRjzrDMDR+/HhVVlZq27ZtKikp0be//W2NHj1aX3zxhSTpj3/8o5YsWaLly5dr7969ioiI0AsvvNDq+c+dO6e0tDTt2bNHBQUF6tatm77//e+roaHBo27RokVasGCBSktLNXDgQP3whz9sMYC2pEePHm2edVqyZIkefPBBlZWV6dFHH9XWrVs1efJkjR8/Xvv27VNBQYFiY2M9nrN69WrFxsZq3759mjlzph5//HH99a9/NfcHBgYqKytLBw8e1PPPP6/169frueeeM/c//PDD6tOnj/bs2aOSkhI9/fTT5vVXVlamxMRETZ48Wfv379drr72mXbt2eQQcb/j7+0vynIV78skntXLlSh06dEh33nlnk+esW7dOs2bN0k9+8hOVlZXpzTff1G233SbJu+sDsJwBoNObNm2a4ePjYwQEBBg9evQwJBmSjIyMjFafN3PmTON//+//7XGcBx980KPm2LFjhiRj3759hmEYxk9/+lMjKirKaGhoMGt+85vfGDfccINRX1/f7Hk2bNhgOBwOj21HjhwxJBl//vOfzW2ff/654e/vb/zxj39sccz9+vUznnvuOeONN94wbr31VqOhocHYuHGj8a1vfcswDMNwOBzGhg0bDMMwjIKCAiMoKMi4ePGixzFuvfVW48UXXzQMwzDi4uKMxx57zGP/0KFDjbvuuqvVvnxdVVWVIckoKyszDONfPfv9739v1hw4cMCQZBw6dOiyr80wDMPtdhsbNmwwJBkvvPBCk/2N7rrrLmPJkiXmY0nGvHnzPGri4uKMhx9+uNXzPvLII+bjhoYGIzQ01Fi3bl2Lz3n22WeNmJgY83FgYKCRlZXVbG1ycrLxk5/8xGPb+++/b3Tr1s24cOFCs8+59Jo5efKkMWzYMKNPnz6Gy+Uy3nvvPUOS8cYbb3g8b8mSJR6/O6fTaSxatKjZc3hzfQBWY8YK6CLi4+NVWlqq3bt3a86cOUpMTNScOXM8an77298qNjZWN998s2644QatX79eJ06caNN5Dh06pLi4ONlsNnPbvffeq7Nnz+rjjz9u03G6d++uoUOHmttuuukmRUVF6dChQ5d9/vjx43X27Fnt3LlTL7/8cpPZKkkqKSnR2bNnddNNN+mGG24wf44dO2Yu3TW+nq+79PGl/v73vyspKUm33HKLgoKCNGDAAElq0suvz6BERERIkqqqqlo99lNPPaUbbrhB/v7+mjVrlv7zP/9TM2bMaPU5l7p0Nqq0tFSjR49u9TlfH2vjEtzXx/p//s//0X333afw8HDdcMMNWrx4scfrTUtL049//GM98MADeuaZZzyWRktKSpSVleXxO0hMTFRDQ0OrN6PX1NTohhtuUEBAgCIjI1VXV6fXX39dfn5+Lb7Wr6uqqtInn3zS4mv35voArNZ57lYF0KqAgABziePXv/614uPjtXTpUv3iF7+Q9NWS1xNPPKHVq1crLi5OgYGB+tWvfqXdu3e36TyGYXiEqsZtkppsv9xxvD1+c7p3767k5GQtWbJEu3fvVk5OTpOahoYGRUREaPv27U32Xc3N6BMnTlRkZKTWr18vp9OphoYGRUdHq66uzqPu60uxja/p0uXCS/3nf/6nUlJS1LNnT0VERHj0olu3bk361twy4aU38DcuobXm62NtHG/jWIuLi/WDH/xAS5cuVWJiohwOh7Kzs7V69WqzPj09XUlJSdq6dav+9Kc/acmSJcrOzjaXSGfMmKG5c+c2OW/fvn1bHFNgYKD+8pe/qFu3bgoLC2v2jQmtvVnhcq+7va4PoDUEK6CLWrJkicaNG6fHH39cTqdT77//voYPH+7xTsFL/1+5n59fs++4+rrBgwdry5YtHgGosLBQgYGB6t27d7PPae64gwcP1pdffqndu3eb93KdOnVKR44c0aBBg7x6jY8++qhWrVqlqVOnKjg4uMn+b3/726qsrFT37t3Vv3//Zo8xaNAgFRcX60c/+pG5rbi4uMVznjp1SocOHdKLL76o7373u5KkXbt2eTVeb4SEhJgB+VI333yzKioqzMe1tbWX/fgB6avZqIKCAv37v//7FY3pz3/+s/r166dFixaZ2z766KMmdQMHDtTAgQP1xBNP6Ic//KE2bNig73//+/r2t7+tAwcOtPi6WtKtW7c2P+frAgMD1b9/fxUUFCg+Pr7Jfm+uD8BqLAUCXdTIkSN1xx13aMWKFZKk2267TXv37tXbb7+tI0eOaPHixdqzZ4/Hc/r376/9+/fr8OHD+vzzz5udDZk5c6ZOnjypOXPm6K9//av+53/+R0uWLFFaWpq6dWv+fzL69++vs2fPqqCgQJ9//rnOnz+v22+/XQ8++KBSU1O1a9cuffjhh3rkkUfUu3dvPfjgg169xkGDBunzzz9v8tELjR544AHFxcXpoYce0ttvv63jx4+rsLBQP/vZz8x3rP3Hf/yHXn75Zb388ss6cuSIlixZogMHDrR4zuDgYN1000363e9+p7/97W969913lZaW5tV4r9aoUaP0yiuv6P3331d5ebmmTZsmHx+fyz5vyZIl+q//+i8tWbJEhw4dUllZmZ599lmvz3vbbbfpxIkTys7O1t///nf9+te/9pghvHDhgmbPnq3t27fro48+0p///Gft2bPHDMhPPfWUioqKNGvWLJWWluro0aN68803myxVt4f09HStXr1av/71r3X06FH95S9/UWZmpiTvrg/AagQroAtLS0vT+vXrdfLkST322GOaPHmypk6dqqFDh+rUqVNNPucqNTVVUVFR5n1Yf/7zn5scs3fv3tq2bZs++OAD3XXXXXrsscc0ffp0/exnP2txHMOHD9djjz2mqVOn6uabbzb/o75hwwbFxMRowoQJiouLk2EY2rZtW5NlqdbcdNNNLS752Gw2bdu2Tffff78effRRDRw4UD/4wQ90/PhxhYWFSZKmTp2qn//853rqqacUExOjjz76SI8//niL5+vWrZuys7NVUlKi6OhoPfHEE/rVr37l9XivxsKFC3X//fdrwoQJ+t73vqeHHnpIt95662WfN3LkSP33f/+33nzzTd19990aNWpUm5aAH3zwQT3xxBOaPXu27r77bhUWFmrx4sXmfh8fH506dUo/+tGPNHDgQE2ZMkXjxo3T0qVLJX01Y7Zjxw4dPXpU3/3ud/Wtb31LixcvNu87a0/Tpk3TmjVr9MILL+iOO+7QhAkTzI/08Ob6AKxmM1q6EQIAAABtwowVAACARQhWAAAAFiFYAQAAWIRgBQAAYBGCFQAAgEUIVgAAABYhWAEAAFiEYAUAAGARghUAAIBFCFYAAAAWIVgBAABY5P8BXtAy4m130tYAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df['ratio_to_median_purchase_price'].hist(bins = 50, range=[0, 30])\n", "plt.xlabel('Ratio to Median Purchase Price')\n", "plt.ylabel('Count')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also plot the distribution of the variable `ratio_to_median_purchase_price` by the target variable `fraud` to see if there are any differences between fraudulent and non-fraudulent transactions" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:45.305505Z", "iopub.status.busy": "2024-05-31T21:41:45.305276Z", "iopub.status.idle": "2024-05-31T21:41:45.747771Z", "shell.execute_reply": "2024-05-31T21:41:45.746974Z" } }, "outputs": [ { "data": { "image/png": "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X1+MHDkSFy9ebO86EhEp2tatW+Hn54e//OUvcHV1xaOPPoq1a9dK5adOnYJer0dwcLC0TK1WIyAgAHv37gVw/YdubW2tLEan08HHx0eKyc3NhUajkZIyABgyZAg0Go0U05jRaERFRYVsIiLlalNiNnPmTFRUVODw4cO4fPkyysvLUVxcjIqKCsTExLR3HYmIFO2///0vVq1ahd69e+O7777DtGnTEBMTg08//RQAoNfrAQBubm6yz7m5uUller0eNjY2cHR0bDHG1dW1yfZdXV2lmMZSUlJkY4I9PDzubGeJqEO16VJmRkYGtm/fjr59+0rL+vXrh3/84x+yX3tERF1BfX09/Pz8kJycDAB49NFHcfjwYaxatQrPPfecFNf4VXZCiBZfb9dcTHPxLa1nzpw5iIuLk+YrKiqYnBEpWJt6zOrr62Ftbd1kubW1Nerr6++4UkREdxN3d3f069dPtqxv3744c+YMAECr1QJAk16tsrIyqRdNq9WipqYG5eXlLcZcuHChyfYvXrzYpDeugVqthoODg2wiIuVqU2I2YsQI/PWvf8X58+elZefOncOrr76KkSNHtlvliIjuBsOGDcOxY8dky44fP45evXoBALy8vKDVapGVlSWV19TUYPfu3Rg6dCgAwNfXF9bW1rKY0tJSFBcXSzH+/v4wGAzYv3+/FLNv3z4YDAYphojubm26lLly5UqMHz8enp6e8PDwgEqlwpkzZ9C/f39s3LixvetIRKRor776KoYOHYrk5GRMmjQJ+/fvx4cffogPP/wQwPXLj7GxsUhOTkbv3r3Ru3dvJCcno3v37ggPDwdw/fmQU6dORXx8PJydneHk5ISEhAT0799fukuzb9++GD16NKKiorBmzRoA1x+XERoayjsyiTqJNvWYeXh44IcffsC2bdsQGxuLmJgYfPPNNygoKMB9993X6vXs2bMH48aNg06ng0qlwldffSUrj4yMhEqlkk1DhgyRxbTXAxnPnDmDcePGwc7ODi4uLoiJiUFNTY0spqioCAEBAbC1tUXPnj0xf/58CCFavb9E1DkNGjQI6enp+Oyzz+Dj44O3334by5cvx+TJk6WYWbNmITY2FtHR0fDz88O5c+eQmZkpPcMMAJYtW4YJEyZg0qRJGDZsGLp3746vv/5aeoYZAGzatAn9+/dHcHAwgoODMWDAAGzYsMGk+0tE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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1,2)\n", "df['ratio_to_median_purchase_price'].hist(bins = 50, range=[0, 30], by=df['fraud'], ax = ax)\n", "ax[0].set_xlabel('Ratio to Median Purchase Price')\n", "ax[1].set_xlabel('Ratio to Median Purchase Price')\n", "ax[0].set_ylabel('Count')\n", "ax[0].set_title('No Fraud')\n", "ax[1].set_title('Fraud')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are indeed some differences between fraudulent and non-fraudulent transactions. For example, fraudulent transactions seem to have a higher ratio to the median purchase price, which is expected as fraudsters might try to make large transactions to maximize their profit.\n", "\n", "We can also look at the correlation between the variables in the dataset. The correlation is a measure of how two variables move together" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:45.751131Z", "iopub.status.busy": "2024-05-31T21:41:45.750873Z", "iopub.status.idle": "2024-05-31T21:41:45.933494Z", "shell.execute_reply": "2024-05-31T21:41:45.932881Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
distance_from_homedistance_from_last_transactionratio_to_median_purchase_pricerepeat_retailerused_chipused_pin_numberonline_orderfraud
distance_from_home1.0000000.000193-0.0013740.143124-0.000697-0.001622-0.0013010.187571
distance_from_last_transaction0.0001931.0000000.001013-0.0009280.002055-0.0008990.0001410.091917
ratio_to_median_purchase_price-0.0013740.0010131.0000000.0013740.0005870.000942-0.0003300.462305
repeat_retailer0.143124-0.0009280.0013741.000000-0.001345-0.000417-0.000532-0.001357
used_chip-0.0006970.0020550.000587-0.0013451.000000-0.001393-0.000219-0.060975
used_pin_number-0.001622-0.0008990.000942-0.000417-0.0013931.000000-0.000291-0.100293
online_order-0.0013010.000141-0.000330-0.000532-0.000219-0.0002911.0000000.191973
fraud0.1875710.0919170.462305-0.001357-0.060975-0.1002930.1919731.000000
\n", "
" ], "text/plain": [ " distance_from_home \\\n", "distance_from_home 1.000000 \n", "distance_from_last_transaction 0.000193 \n", "ratio_to_median_purchase_price -0.001374 \n", "repeat_retailer 0.143124 \n", "used_chip -0.000697 \n", "used_pin_number -0.001622 \n", "online_order -0.001301 \n", "fraud 0.187571 \n", "\n", " distance_from_last_transaction \\\n", "distance_from_home 0.000193 \n", "distance_from_last_transaction 1.000000 \n", "ratio_to_median_purchase_price 0.001013 \n", "repeat_retailer -0.000928 \n", "used_chip 0.002055 \n", "used_pin_number -0.000899 \n", "online_order 0.000141 \n", "fraud 0.091917 \n", "\n", " ratio_to_median_purchase_price \\\n", "distance_from_home -0.001374 \n", "distance_from_last_transaction 0.001013 \n", "ratio_to_median_purchase_price 1.000000 \n", "repeat_retailer 0.001374 \n", "used_chip 0.000587 \n", "used_pin_number 0.000942 \n", "online_order -0.000330 \n", "fraud 0.462305 \n", "\n", " repeat_retailer used_chip used_pin_number \\\n", "distance_from_home 0.143124 -0.000697 -0.001622 \n", "distance_from_last_transaction -0.000928 0.002055 -0.000899 \n", "ratio_to_median_purchase_price 0.001374 0.000587 0.000942 \n", "repeat_retailer 1.000000 -0.001345 -0.000417 \n", "used_chip -0.001345 1.000000 -0.001393 \n", "used_pin_number -0.000417 -0.001393 1.000000 \n", "online_order -0.000532 -0.000219 -0.000291 \n", "fraud -0.001357 -0.060975 -0.100293 \n", "\n", " online_order fraud \n", "distance_from_home -0.001301 0.187571 \n", "distance_from_last_transaction 0.000141 0.091917 \n", "ratio_to_median_purchase_price -0.000330 0.462305 \n", "repeat_retailer -0.000532 -0.001357 \n", "used_chip -0.000219 -0.060975 \n", "used_pin_number -0.000291 -0.100293 \n", "online_order 1.000000 0.191973 \n", "fraud 0.191973 1.000000 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.corr() # Pearson correlation (for linear relationships)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:45.936547Z", "iopub.status.busy": "2024-05-31T21:41:45.936299Z", "iopub.status.idle": "2024-05-31T21:41:46.996272Z", "shell.execute_reply": "2024-05-31T21:41:46.995477Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
distance_from_homedistance_from_last_transactionratio_to_median_purchase_pricerepeat_retailerused_chipused_pin_numberonline_orderfraud
distance_from_home1.000000-0.001068-0.0001520.559724-0.000118-0.000338-0.0018120.095032
distance_from_last_transaction-0.0010681.000000-0.000111-0.001352-0.0001650.000555-0.0010760.034661
ratio_to_median_purchase_price-0.000152-0.0001111.0000000.001202-0.0000990.000251-0.0003760.342838
repeat_retailer0.559724-0.0013520.0012021.000000-0.001345-0.000417-0.000532-0.001357
used_chip-0.000118-0.000165-0.000099-0.0013451.000000-0.001393-0.000219-0.060975
used_pin_number-0.0003380.0005550.000251-0.000417-0.0013931.000000-0.000291-0.100293
online_order-0.001812-0.001076-0.000376-0.000532-0.000219-0.0002911.0000000.191973
fraud0.0950320.0346610.342838-0.001357-0.060975-0.1002930.1919731.000000
\n", "
" ], "text/plain": [ " distance_from_home \\\n", "distance_from_home 1.000000 \n", "distance_from_last_transaction -0.001068 \n", "ratio_to_median_purchase_price -0.000152 \n", "repeat_retailer 0.559724 \n", "used_chip -0.000118 \n", "used_pin_number -0.000338 \n", "online_order -0.001812 \n", "fraud 0.095032 \n", "\n", " distance_from_last_transaction \\\n", "distance_from_home -0.001068 \n", "distance_from_last_transaction 1.000000 \n", "ratio_to_median_purchase_price -0.000111 \n", "repeat_retailer -0.001352 \n", "used_chip -0.000165 \n", "used_pin_number 0.000555 \n", "online_order -0.001076 \n", "fraud 0.034661 \n", "\n", " ratio_to_median_purchase_price \\\n", "distance_from_home -0.000152 \n", "distance_from_last_transaction -0.000111 \n", "ratio_to_median_purchase_price 1.000000 \n", "repeat_retailer 0.001202 \n", "used_chip -0.000099 \n", "used_pin_number 0.000251 \n", "online_order -0.000376 \n", "fraud 0.342838 \n", "\n", " repeat_retailer used_chip used_pin_number \\\n", "distance_from_home 0.559724 -0.000118 -0.000338 \n", "distance_from_last_transaction -0.001352 -0.000165 0.000555 \n", "ratio_to_median_purchase_price 0.001202 -0.000099 0.000251 \n", "repeat_retailer 1.000000 -0.001345 -0.000417 \n", "used_chip -0.001345 1.000000 -0.001393 \n", "used_pin_number -0.000417 -0.001393 1.000000 \n", "online_order -0.000532 -0.000219 -0.000291 \n", "fraud -0.001357 -0.060975 -0.100293 \n", "\n", " online_order fraud \n", "distance_from_home -0.001812 0.095032 \n", "distance_from_last_transaction -0.001076 0.034661 \n", "ratio_to_median_purchase_price -0.000376 0.342838 \n", "repeat_retailer -0.000532 -0.001357 \n", "used_chip -0.000219 -0.060975 \n", "used_pin_number -0.000291 -0.100293 \n", "online_order 1.000000 0.191973 \n", "fraud 0.191973 1.000000 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.corr('spearman') # Spearman correlation (for monotonic relationships)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is still a bit hard to read. We can visualize the correlation matrix with a heatmap using the Seaborn library, which we have already imported at the beginning of the notebook." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:47.000105Z", "iopub.status.busy": "2024-05-31T21:41:46.999804Z", "iopub.status.idle": "2024-05-31T21:41:48.139298Z", "shell.execute_reply": "2024-05-31T21:41:48.138743Z" } }, "outputs": [ { "data": { "image/png": "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Ghpi3759aNeuHZycnLBu3Trs2LED9evXBwBMnjwZqqqqcHZ2hqmpaYkLrxeqWbMmZs+ejWnTpsHc3LzUlVYaNmyI5cuXY9GiRXBxccH27duLvfu3NNra2rh+/Tr69OkDR0dHjBw5EmPHjsX3338v0/gB4Oeff8bXX3+N0aNHo169ehgxYoSkxlvW8WzZsgVNmjTBV199BQ8PD4jFYoSHhxcp/yAiIiLFGD16NNLS0pCTk4P4+HjJqmbAu8ndyMhIqfPHjRuHq1ev4tWrV7h37x5+/fVX1KxZU65risTyFkYTUYX1IitL6BAUQk9fX+gQiIhIAcatuqKwvlb7uSisr/Ly2XdeJCIiIiKqjJhYyyk6OlpqGb4PH0Lr0qVLibHNnz+/3K8/atSoEq9feMMAERERVQ2KXG5PGbAURE6vX7/G3bt3Szzu4ODwGaMp6u7du3j9+nWxx4yMjGBkZFSu18/MzERWCeUI+vr6MDMzK9frV3UsBSEioorEb7XiSkFWjav4pSBqQgegbLS0tARPnksjb5G9opmZmTF5JiIioiqJiTURERERlQt5159WdqyxJiIiIiJSACbWREREREQKwFIQIiIiIioXKlWrEoQz1kREREREisAZayIiIiIqF1Xs3kXOWBMRERERKQITayIiIiIiBWApCBERERGVCxGqVi0IZ6yJiIiIiBSAM9ZEREREVC643B4REREREcmNiTURERERkQKwFISIKpwXWVlCh6AQevr6QodARCQormNNRERERERyY2JNRERERKQALAUhIiIionIhqmK1IJyxJiIiIiJSAM5YExEREVG54DrWREREREQkNybWREREREQKwFIQIiIiIioXVezeRc5YExEREREpAmesiYiIiKhccMaaiIiIiIjkxsSaiIiIiEgBWApCREREROVCpYrVgnDGmoiIiIhIAZhYExEREREpAEtBiIiIiKhcVLFKEOFmrG1tbRESEiLU5SuUoKAgNGzYUPLc19cX3t7egsXzOVXmsYpEIhw4cEDoMIiIiOgzKfcZ69DQUEyYMAHPnj2Taj937hx0dHQUco2goCAcOHAACQkJCulPaCtXroRYLBY6DPpEGRkZqF69utBhEBER0WfySYl1bm4u1NXVP+q1pqamn3LpSs3AwEDoEBTiU34/lFnhuC0sLIQOhYiISFAsBSmFp6cnxo4dC39/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PtTU1ODg4CD1MDExKfP1Tk5OUvEDQGxsbJnxOzk54cyZM1Jt7z83NzdHzZo1cevWrSJx2dnZyTFCQENDA/r6+lIPloEQEVFFoiISKeyhDDhjTQqno6ODH374AVOmTIGRkRGsra2xePFivHr1CsOHD5drZY6P1aFDB3h4eMDb2xuLFi1C3bp1ce/ePYSHh8Pb27vMMospU6agb9++khse//zzT+zbtw///PNPqa8bP348vv32W7i7u+PLL7/E9u3bcfXqVdjb20vOCQoKgp+fH/T19dGlSxfk5OQgLi4OT58+LTIDTURERMqDiTWVi4ULF6KgoABDhgzBixcv4O7ujiNHjqB69c9z44FIJEJ4eDhmzJiBYcOG4eHDh7CwsEDr1q1hbm5e5uu9vb2xcuVKLFmyBH5+frCzs8OWLVvg6elZ6uv69euHlJQUTJ06FW/evEGfPn3www8/4MiRI5JzvvvuO2hra2PJkiUICAiAjo4OXF1dMWHChE8cNREREQmJq4IQVSIvsrKEDoGIqFRcFaRq+S/jmcL6srI0VFhf5YUz1kRERERULpSkNFphePMiVUn169eXWu7u/cf27duFDo+IiIiUEGesqUoKDw/H27dviz0mSw02ERER0YeYWFOVZGNjI3QIRERElZ6yLJOnKCwFISIiIiJSACbWREREREQKwFIQIiIiIioXVawShDPWRERERESKwMSaiIiIiEgBWApCREREROWCpSBERERERCQ3JtZERERERArAUhAiIiIiKhcqVawUhIk1EREREZULURUrsmYpCBERERGRAjCxJiIiIiJSAJaCEBEREVG5qGKVIEysiSqTpy8LhA5BIbQ1K8eXaeeSXggdwif7sr6e0CEohPjVK6FD+GTinFyhQ1CISw8qxzjc6pgIHQJVQJXjXy8iIiIiIoFxxpqIiIiIykVVW26PM9ZERERERArAxJqIiIiISAFYCkJERERE5YIbxBARERERkdyYWBMRERERKQBLQYiIiIioXFSxShDOWBMRERFR+VARKe4hr7Vr18LOzg6amppo0qQJoqOjSz0/KioKTZo0gaamJuzt7bFu3Tr5xyt/mEREREREFdeuXbswYcIEzJgxAxcuXECrVq3QpUsXpKenF3t+amoqunbtilatWuHChQv43//+Bz8/P+zdu1eu64rEYrFYEQMgIuGl33smdAgK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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "corr = df.corr('spearman')\n", "cmap = sns.diverging_palette(10, 255, as_cmap=True) # Create a color map\n", "mask = np.triu(np.ones_like(corr, dtype=bool)) # Create a mask to only show the lower triangle of the matrix\n", "sns.heatmap(corr, cmap=cmap, vmax=1, center=0, mask=mask) # Create a heatmap of the correlation matrix (Note: vmax=1 makes sure that the color map goes up to 1 and center=0 are used to center the color map at 0)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note how `ratio_to_median_purchase_price` is positively correlated with `fraud`, which is expected as we saw in the previous plot that fraudulent transactions have a higher ratio to the median purchase price. Furthermore, `used_chip` and `used_pin_number` are negatively correlated with `fraud`, which makes sense as transactions, where the chip or the pin is used, are supposed to be more secure.\n", "\n", "We can also plot boxplots to visualize the distribution of the variables" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:48.142332Z", "iopub.status.busy": "2024-05-31T21:41:48.142081Z", "iopub.status.idle": "2024-05-31T21:41:48.841655Z", "shell.execute_reply": "2024-05-31T21:41:48.840495Z" } }, "outputs": [ { "data": { "image/png": "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qczMTO3fv19NmjQp+I7IR9u2bV2md+3aletoSVRUlBISEpSRkWF9A5B9X4KDgyVJzZs3zzXv2LFjRQrufn5+VmiXXO+b1NRUHTlyJNeZ5VFRUda3IVmKUldWu8ePH9cvv/yigQMHunyDkp6enu/Ju08//bSGDRtmTaempiosLKzQ/UPF5ePjY/396aefFvghGChrDofj/16DPQyKC9lqLcnziJNSr0yenp5q06aN6tata82rW7eu2rVrpy1btlgnvRZ13fJm0DPRfDlPmihMWFiYdu/erWXLlmn58uV69NFHNXnyZK1evVqVKlXKc534+HhNnTpVCQkJat68uSpXrqzY2NhcJ3vmXN9msykzM1OS5OvrW2BdmZmZevjhh63x9tnVqVOnOLvoIueHi6xLP+Wcl1P2fclaPq95WftXmLzum5zbzauunPOKUldWTVm/33nnHZdvRiRZH1By8vHxcQl6MF/2x5Ddbi/0uQiUGzcNC7gspfQ8WrNmDWPcr0A2m806PzDnvKxLShZn3fLGyanlqEGDBqpUqZK+/fZba96pU6e0Z8+efNfx9fXVnXfeqenTp2vVqlXasGGDtm3bJkny9vbO9clw7dq16tGjh/r27asWLVqoXr162rt3b7HqjIyM1OHDh/Otq3Xr1tqxY4caNGiQ6yf7mPWSatq0qb755huXeevXr1ejRo3yDbNlLSAgQLVq1cqzrsv9pkG6dPS9du3a+vnnn3Pdp9dcc01JywYAXIY1a9a4uwSUUGRkpBW0bTab+vTpo9q1a+daLjQ0VH369HFZtqjrlieCezny9/fXwIEDNXLkSK1YsULbt29XTEyMPDzy7obExETNnDlT27dv188//6x58+bJ19fX+oomPDxca9as0a+//qoTJ05IuvThYNmyZVq/fr127dqlhx9+WL/99lux6uzUqZM6duyoXr16admyZdq/f7++/PJL68opo0eP1oYNG/TYY48pOTlZe/fu1ZIlS/T444+X4N7Jbfjw4VqxYoUmTpyoPXv2aM6cOZoxY4bLOHh3GDlypF5++WV98MEH2r17t5566iklJyfriSeeKFG7cXFxevHFFzVt2jTt2bNH27Zt0+zZs/Xqq6+WUuUAAFy5ch4Jr169uiZNmqRq1apZ03369Ml3/b59+7osW5x1ywvBvZxNnjxZHTt21J133qkuXbroxhtv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b7Zc7du3T02aNFFERIRCQkJks9lyLXPhwgU3VGYO0++foKAgValSxd1lAABglFOnTmnMmDE6efKkNS8zM1OSdPLkSZfbTp48qQULFuRqY/78+YUuU1xl0eblKPXgfvbsWfXv31/+/v6qWbOm4uPjXW7PeRQ9Li5OderUkY+Pj2rVqqWhQ4dKunQk9+DBg3ryySdls9ms8Hvy5En17t1boaGh8vPzU/PmzfX++++7bKNz584aOnSoRo0apaCgIIWEhCguLs5lmZSUFA0aNEjBwcGy2+2KiIjQ559/bt2+fv16dezYUb6+vgoLC9PQoUN19uzZQve/c+fOio+P15o1a2Sz2dS5c2drvydNmqSYmBhVrVpVDz30kCTp448/VrNmzeTj46Pw8PA8769JkyZZ92ndunX16aef6vjx4+rRo4f8/f3VvHlzbdq0qdDa8rJv3z716NFDwcHB8vf3V7t27bR8+XKXZd544w01bNhQdrtdwcHBuvvuuyVJMTExWr16taZNm2b10YEDB/Ld1oEDB3TTTTdJkq666irZbDbFxMRY99uQIUM0bNgwVa9eXV27dpUkvfrqq2revLkqV66ssLAwPfroozpz5ozVZmJiogIDA5WUlKQmTZrI399ft912m44ePWots2rVKl133XWqXLmyAgMDFRUVpYMHDxZ5/9PS0jRq1CiFhYXJx8dHDRs21MyZMwvdn+zfRJw6dUr9+/fXVVddJT8/P3Xr1k179+4t1n64S9YRE+nSEYfz58/zw89f5if7UbVsT4UrUvb9K43neseOHd23MzDajz/+mOd8p9OpH3/80XpfcjqdWrBggQ4fPmwtc/jwYS1YsKDAZYqrLNq8XKU+xn3kyJFauXKlPvnkE4WEhOiZZ57R5s2b1bJly1zLfvTRR5o6daoWLlyoZs2a6bffftPWrVslXRpq0KJFCw0aNMgKudKlF5M2bdpo9OjRCggI0H//+1/169dP9erV09/+9jdruTlz5mjYsGH67rvvtGHDBsXExCgqKkpdu3ZVZmamunXrptOnT2v+/PmqX7++du7cKU9PT0nStm3bFB0drYkTJ2rmzJk6fvy4hgwZoiFDhmj27NkF7v+iRYv01FNPafv27Vq0aJG8vb2t2yZPnqyxY8dqzJgxkqTNmzfr3nvvVVxcnO677z6tX79ejz76qKpVq2YFQEmaOnWqXnjhBY0dO1ZTp05Vv379FBUVpQEDBmjy5MkaPXq0+vfvrx07duR5dL8gZ86cUffu3TVp0iTZ7XbNmTNHd9xxh3bv3q06depo06ZNGjp0qObNm6cbbrhBf/zxh9auXStJmjZtmvbs2aOIiAhNmDBB0qVvVPITFhamjz/+WL169dLu3bsVEBAgX19flz575JFHtG7dOuvJ4eHhoenTpys8PFz79+/Xo48+qlGjRumNN96w1jt37pymTJmiefPmycPDQ3379tWIESO0YMECpaenq2fPnnrooYf0/vvv68KFC/r++++t+6mw/Zek/v37a8OGDZo+fbpatGih/fv368SJE4XuT3YxMTHau3evlixZooCAAI0ePVrdu3fXzp07ValSpUL3Iy9paWlKS0uzplNTUwvu7MuUfRs9evQok20AJriQKeX9DL8yXMj8v795rsMUTqdTU6dO1ZQpUyRdykwFLVPcnJS1bmm2WRKlGtzPnDmjmTNnau7cudYR0zlz5ig0NDTP5Q8dOqSQkBB16dJFlSpVUp06dXTddddJujTUwNPTU1WqVFFISIi1Tu3atTVixAhr+vHHH9fSpUv1n//8xyW4R0ZGaty4cZKkhg0basaMGVqxYoW6du2q5cuX6/vvv9euXbvUqFEjSVK9evWsdSdPnqwHHnjAOmLasGFDTZ8+XZ06ddKbb74pu92e730QFBQkPz8/eXt7u9QtSTfffLNL7X369NEtt9yisWPHSpIaNWqknTt3avLkyS7BvXv37nr44YclSc8995zefPNNtWvXTvfcc48kafTo0Wrfvr1+//33XNssTIsWLdSiRQtretKkSfrkk0+0ZMkSDRkyRIcOHVLlypX197//XVWqVFHdunXVqlUrSVLVqlXl7e0tPz+/Im3X09NTQUFBkqSrr7461wm7DRo00CuvvOIyL/tR62uuuUYTJ07UI4884hLcL168qLfeekv169eXJA0ZMsT6IJGamqo///xTf//7363bmzRpUuT937Nnjz788EMtW7ZMXbp0keT6WClof7JkBfZ169bphhtukCQtWLBAYWFhWrx4sdWPBe1HXl588UWNHz8+39sBALjSZWRkaOPGjdY36Rs3bixwmfDw8GK1f/DgwVJvsyRKNbjv27dPFy5cUPv27a15QUFBuvbaa/Nc/p577lFCQoLq1aun2267Td27d9cd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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "selector = ['distance_from_home', 'distance_from_last_transaction', 'ratio_to_median_purchase_price'] # Select the variables we want to plot\n", "plt.figure()\n", "ax = sns.boxplot(data = df[selector], orient = 'h') \n", "ax.set(xscale = \"log\") # Set the x-axis to a logarithmic scale to better visualize the data\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Boxplots are a good way to visualize the distribution of a variable, as they show the median, the interquartile range, and the outliers. Each of the distributions shown in the boxplots above has a long right tail, which explains the large number of outliers. However, you have to be careful: you cannot just remove these outliers since these are likely to be fraudulent transactions.\n", "\n", "Let's see how many fraudulent transactions we would remove if we blindly remove the outliers according to the interquartile range" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:48.845243Z", "iopub.status.busy": "2024-05-31T21:41:48.844878Z", "iopub.status.idle": "2024-05-31T21:41:48.897660Z", "shell.execute_reply": "2024-05-31T21:41:48.896990Z" } }, "outputs": [ { "data": { "text/plain": [ "fraud\n", "1.0 53092\n", "0.0 31294\n", "Name: count, dtype: int64" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compute the interquartile range\n", "Q1 = df['ratio_to_median_purchase_price'].quantile(0.25)\n", "Q3 = df['ratio_to_median_purchase_price'].quantile(0.75)\n", "IQR = Q3 - Q1\n", "\n", "# Identify outliers based on the interquartile range\n", "threshold = 1.5\n", "outliers = df[(df['ratio_to_median_purchase_price'] < Q1 - threshold * IQR) | (df['ratio_to_median_purchase_price'] > Q3 + threshold * IQR)]\n", "\n", "# Count the number of fraudulent transactions amoung our selected outliers\n", "outliers['fraud'].value_counts()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:48.900879Z", "iopub.status.busy": "2024-05-31T21:41:48.900613Z", "iopub.status.idle": "2024-05-31T21:41:48.912427Z", "shell.execute_reply": "2024-05-31T21:41:48.911733Z" } }, "outputs": [ { "data": { "text/plain": [ "fraud\n", "0.0 912597\n", "1.0 87403\n", "Name: count, dtype: int64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['fraud'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "53092 of 87403 (more than half!) of our fraudulent transactions would be removed if we would have blindly removed the outliers according to the interquartile range. This is a significant number of observations, which would likely hurt the performance of our machine-learning model. Therefore, we should not remove these outliers. It would make the imbalance of our dataset even worse.\n", "\n", "\n", "#### Splitting the Data into Training and Test Sets {-}\n", "\n", "Before we can train a machine learning model, we need to split our dataset into a training set and a test set. " ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:48.915777Z", "iopub.status.busy": "2024-05-31T21:41:48.915196Z", "iopub.status.idle": "2024-05-31T21:41:48.928414Z", "shell.execute_reply": "2024-05-31T21:41:48.927866Z" } }, "outputs": [], "source": [ "X = df.drop('fraud', axis=1) # All variables except `fraud`\n", "y = df['fraud'] # Only our fraud variables" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The training set is used to train the model, while the test set is used to evaluate the model. We will use the `train_test_split` function from the `sklearn.model_selection` module to split our dataset. We will use 70% of the data for training and 30% for testing. We will also set the `stratify` argument to `y` to make sure that the distribution of the target variable is the same in the training and test sets. Otherwise, we might randomly not have any fraudulent transactions in the test set, which would make it impossible to correctly evaluate our model." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:48.931420Z", "iopub.status.busy": "2024-05-31T21:41:48.931186Z", "iopub.status.idle": "2024-05-31T21:41:49.298773Z", "shell.execute_reply": "2024-05-31T21:41:49.297427Z" } }, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, test_size = 0.3, random_state = 42)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Scaling Features {-}\n", "\n", "To improve the performance of our machine learning model, we should scale the features. This is especially important for models that are sensitive to the scale of the features, such as logistic regression. We will use the `StandardScaler` class from the `sklearn.preprocessing` module to scale the features. The `StandardScaler` class scales the features so that they have a mean of 0 and a standard deviation of 1. Since we don't want to scale features that are binary (0 or 1), we will define a small function that scales only the features that we want" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:49.303388Z", "iopub.status.busy": "2024-05-31T21:41:49.302883Z", "iopub.status.idle": "2024-05-31T21:41:49.307848Z", "shell.execute_reply": "2024-05-31T21:41:49.307075Z" } }, "outputs": [], "source": [ "def scale_features(scaler, df, col_names, only_transform=False):\n", "\n", " # Extract the features we want to scale\n", " features = df[col_names] \n", "\n", " # Fit the scaler to the features and transform them\n", " if only_transform:\n", " features = scaler.transform(features.values)\n", " else:\n", " features = scaler.fit_transform(features.values)\n", "\n", " # Replace the original features with the scaled features\n", " df[col_names] = features" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then, we need to run the function" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:49.311533Z", "iopub.status.busy": "2024-05-31T21:41:49.311238Z", "iopub.status.idle": "2024-05-31T21:41:49.369827Z", "shell.execute_reply": "2024-05-31T21:41:49.368806Z" } }, "outputs": [], "source": [ "col_names = ['distance_from_home', 'distance_from_last_transaction', 'ratio_to_median_purchase_price'] \n", "scaler = StandardScaler() \n", "scale_features(scaler, X_train, col_names)\n", "scale_features(scaler, X_test, col_names, only_transform=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we only fit the scaler to the training set and then transform both the training and test set. This ensures that the same values for the features produce the same output in the training and test set. Otherwise, if we fit the scaler to the test data as well, the meaning of certain values in the test set might change, which would make it impossible to evaluate the model correctly.\n", "\n", ":::{.callout-note}\n", "### Mini-Exercise\n", "Try switching to `MinMaxScaler` instead of `StandardScaler` and see how it affects the performance of the model. `MinMaxScaler` scales the features so that they are between 0 and 1.\n", ":::\n", "\n", "\n", "### Implementing Logistic Regression\n", "\n", "Now that we have explored and preprocessed our dataset, we can move on to the next step: training a machine learning model. We will use a logistic regression model to predict whether a transaction is fraudulent or not.\n", "\n", "Using the `LogisticRegression` class from the `sklearn.linear_model` module, fitting the model to the data is straightforward using the `fit` method" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:49.373677Z", "iopub.status.busy": "2024-05-31T21:41:49.373372Z", "iopub.status.idle": "2024-05-31T21:41:50.436153Z", "shell.execute_reply": "2024-05-31T21:41:50.435419Z" } }, "outputs": [], "source": [ "clf = LogisticRegression().fit(X_train, y_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can then use the `predict` method to predict the class of the test set" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:50.439618Z", "iopub.status.busy": "2024-05-31T21:41:50.439377Z", "iopub.status.idle": "2024-05-31T21:41:50.445848Z", "shell.execute_reply": "2024-05-31T21:41:50.445106Z" } }, "outputs": [ { "data": { "text/plain": [ "array([0., 0., 0., 0., 1.])" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "clf.predict(X_test.head(5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The actual classes of the first five observations in the test dataset are" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:50.448995Z", "iopub.status.busy": "2024-05-31T21:41:50.448754Z", "iopub.status.idle": "2024-05-31T21:41:50.453822Z", "shell.execute_reply": "2024-05-31T21:41:50.453110Z" } }, "outputs": [ { "data": { "text/plain": [ "217309 0.0\n", "902387 0.0\n", "175152 0.0\n", "527113 0.0\n", "973041 1.0\n", "Name: fraud, dtype: float64" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_test.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This seems to match quite well. Let's have a look at different performance metrics" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:50.457063Z", "iopub.status.busy": "2024-05-31T21:41:50.456840Z", "iopub.status.idle": "2024-05-31T21:41:50.895730Z", "shell.execute_reply": "2024-05-31T21:41:50.895063Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy: 0.95908\n", "Precision: 0.8954682094038908\n", "Recall: 0.6021128103428549\n", "ROC AUC: 0.9671832218100465\n" ] } ], "source": [ "y_pred = clf.predict(X_test)\n", "y_proba = clf.predict_proba(X_test)\n", "\n", "print(f\"Accuracy: {accuracy_score(y_test, y_pred)}\")\n", "print(f\"Precision: {precision_score(y_test, y_pred)}\")\n", "print(f\"Recall: {recall_score(y_test, y_pred)}\")\n", "print(f\"ROC AUC: {roc_auc_score(y_test, y_proba[:, 1])}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As expected, the accuracy is quite high since we do not have many fraudulent transactions. Recall that the precision ($\\text{Precision} = \\frac{\\text{TP}}{\\text{TP}+\\text{FP}}$) is the fraction of correctly predicted fraudulent transactions among all transactions transactions predicted to be fraudulent. The recall ($\\text{Recall} = \\frac{\\text{TP}}{\\text{TP}+\\text{FN}}$) is the fraction of correctly predicted fraudulent transactions among the actual fraudulent transactions. The ROC AUC is the area under the curve for the receiver operating characteristic (ROC) curve" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:50.899220Z", "iopub.status.busy": "2024-05-31T21:41:50.898944Z", "iopub.status.idle": "2024-05-31T21:41:51.177719Z", "shell.execute_reply": "2024-05-31T21:41:51.177134Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHFCAYAAAAOmtghAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABtTUlEQVR4nO3dd3hUVf4/8PeUzEx6SG+QhN5bIlVEaiRKD+Ki0hFsKKywunx/Iq4ru+6K6CogSxMXEUkAUWroVWkBkV5iAiQBEkhPJjNzz++PkIGQAJkwk5uZvF/Pk8fMnTt3PnMjue+cc+45CiGEABEREZGDUMpdABEREZE1MdwQERGRQ2G4ISIiIofCcENEREQOheGGiIiIHArDDRERETkUhhsiIiJyKAw3RERE5FAYboiIiMihMNwQ0UMtW7YMCoXC/KVWqxEUFIQXXngBFy5cqPA1BoMB8+fPR+fOneHp6QlnZ2c0a9YM7777LjIzMyt8jSRJ+Pbbb9G7d2/4+vrCyckJ/v7+eO655/DTTz9BkqRH1qrX6/Hll1/iySefRJ06daDRaBASEoLnn38eu3fvfqzzQET2g+GGiCpl6dKlOHjwILZt24Y33ngD69evx5NPPonbt2+X2a+goAB9+vTBm2++iXbt2mHlypXYuHEjXn75ZSxcuBDt2rXDuXPnyrymqKgIMTExGDVqFPz9/TF//nzs2LEDCxYsQHBwMIYNG4affvrpofVlZGSga9eumDp1Klq2bIlly5Zh+/bt+PTTT6FSqdCrVy+cOHHC6ueFiGogQUT0EEuXLhUAxOHDh8tsnzVrlgAglixZUmb7K6+8IgCI77//vtyxzp07Jzw9PUWLFi2E0Wg0b3/11VcFAPHNN99UWMP58+fFiRMnHlpnv379hFqtFtu3b6/w+UOHDonk5OSHHqOyCgoKrHIcIrINttwQUZVERUUBAK5fv27elp6ejiVLliA6OhrDhw8v95rGjRvjL3/5C06dOoV169aZX7No0SJER0dj5MiRFb5Xo0aN0Lp16wfWcvToUWzatAnjxo1Dz549K9zniSeeQL169QAAH3zwARQKRbl9Srvg/vjjD/O28PBwPPfcc1izZg3atWsHnU6HWbNmoV27dujWrVu5Y5hMJoSEhGDIkCHmbcXFxfjoo4/QtGlTaLVa+Pn5YcyYMbh58+YDPxMRVR3DDRFVSVJSEoCSwFJq586dMBqNGDRo0ANfV/pcQkKC+TUGg+Ghr3mUrVu3ljm2tR07dgzTpk3D5MmTsXnzZgwdOhRjxozBvn37yo072rp1K1JTUzFmzBgAJWOJBg4ciH/84x8YMWIENmzYgH/84x9ISEjA008/jcLCQpvUTFSbqeUugIjsg8lkgtFoRFFREfbv34+PPvoITz31FAYMGGDeJyUlBQAQERHxwOOUPle6b2Ve8yjWOMbD3LhxA6dPny4T5OrXr49p06Zh2bJl+Pvf/27evmzZMgQEBKBfv34AgB9++AGbN29GfHx8mdacNm3a4IknnsCyZcvw6quv2qRuotqKLTdEVCmdOnWCk5MT3N3d8cwzz6BOnTr48ccfoVZX7W+kirqFaqrWrVuXCTYA4OPjg/79++Obb74x38l1+/Zt/Pjjjxg5cqT5vPz888/w8vJC//79YTQazV9t27ZFYGAgdu3aVd0fh8jhMdwQUaUsX74chw8fxo4dOzBx4kScOXMGf/rTn8rsUzqmpbTLqiKlz9WtW7fSr3kUaxzjYYKCgircPnbsWFy7ds3cxbZy5Uro9XqMHj3avM/169eRlZUFjUYDJyenMl/p6enIyMiwSc1EtRnDDRFVSrNmzRAVFYUePXpgwYIFGD9+PDZv3oy4uDjzPj169IBarTYPFq5I6XN9+vQxv8bJyemhr3mU6OjoMsd+FJ1OB6BkXpx7PShoPKiVKTo6GsHBwVi6dCmAktvlO3bsiObNm5v38fX1hY+PDw4fPlzh17x58ypVMxFVHsMNEVXJJ598gjp16uD99983d8sEBgZi7Nix2LJlC1atWlXuNefPn8c///lPtGjRwjz4NzAwEOPHj8eWLVuwfPnyCt/r0qVL+O233x5YS/v27dGvXz8sXrwYO3bsqHCfI0eOmMfmhIeHA0C5Yz5qLp37qVQqvPzyy1i3bh327t2LI0eOYOzYsWX2ee6555CZmQmTyYSoqKhyX02aNLHoPYmoEuS+F52IarYHzXMjhBCffPKJACC+/fZb87a8vDzRvXt3oVarxWuvvSY2bdokduzYIT7++GPh7e0tQkNDxdmzZ8scp7CwUERHRwuFQiFGjBghVq9eLfbs2SPWrFkjXn31VaHT6cS6deseWufNmzdFZGSk0Gg0YtKkSeLHH38Ue/bsEatWrRIvvfSSUKlU4vjx40IIIbKzs4W3t7do1aqVWLt2rfjpp5/E0KFDRUREhAAgkpKSzMcNCwsTzz777APf99y5cwKACA0NFc7OziIrK6vM80ajUfTr1094e3uLWbNmiU2bNolt27aJZcuWiVGjRok1a9Y89HMRkeUYbojooR4WbgoLC0W9evVEo0aNykzKV1xcLL766ivRsWNH4ebmJrRarWjSpImYPn26yMjIqPB9jEaj+Oabb0TPnj2Ft7e3UKvVws/PT/Tr10989913wmQyPbLWwsJC8cUXX4jOnTsLDw8PoVarRXBwsBgyZIjYsGFDmX0PHTokunTpIlxdXUVISIiYOXOmWLRokcXhRgghunTpIgCIF198scLnDQaD+Pe//y3atGkjdDqdcHNzE02bNhUTJ04UFy5ceOTnIiLLKIQQQsaGIyIiIiKr4pgbIiIicigMN0RERORQGG6IiIjIoTDcEBERkUNhuCEiIiKHwnBDREREDqXWrQouSRJSU1Ph7u5uVwv3ERER1WZCCOTm5iI4OBhK5cPbZmpduElNTTUv2EdERET25cqVKwgNDX3oPrUu3Li7uwMoOTkeHh4yV0NERESVkZOTg7p165qv4w9T68JNaVeUh4cHww0REZGdqcyQEg4oJiIiIofCcENEREQOheGGiIiIHArDDRERETkUhhsiIiJyKAw3RERE5FAYboiIiMihMNwQERGRQ2G4ISIiIofCcENEREQORdZws2fPHvTv3x/BwcFQKBRYt27dI1+ze/duREZGQqfToX79+liwYIHtCyUiIiK7IWu4yc/PR5s2bfDll19Wav+kpCTExMSgW7duSExMxF//+ldMnjwZ8fHxNq6UiIiI7IWsC2f269cP/fr1q/T+CxYsQL169TB37lwAQLNmzXDkyBH8+9//xtChQ21UJRERke0IIWCUBEx3voySQLFRwv3rQwpx32Pct6FkY2U2lTvWg45X8X4VHa/sVpVSgSBP5wr2rB52tSr4wYMH0bdv3zLboqOjsXjxYhgMBjg5OZV7jV6vh16vNz/OycmxeZ1ERPdKyy5EdqEBBqNAsUlCbpEBJklACMBgkmCQBK5nF8FZo4JCAUii5GJhkoT5e0mUfC+JktflFBmQW2SEj6sGQty9MJV8j7vbzI8rfr70mmR+/r7nSh+XXtLOpuciwscVCoXCfPy7z5Y9DnD34vig5+++/t5a7m6r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rYgtN5VXWFiIH374AYsXL0ZRURGAkkHYDDZERPS42HJjRZJ093slx9w80NWrVxEfH4+srCwolUqkpKSgcePGcpdFREQOguHGikyCA4ofRgiBX375Bdu2bYMkSahTpw5iY2MRHBwsd2lERORAGG6s6N5uKWabsgoKCvDjjz/i/PnzAIDmzZujf//+0Ol0MldGRESOhuHGikpXBFcqOInf/bZt24bz589DpVIhOjoaUVFRPEdERGQTDDdWVHqzFNeVKq93797IyspC3759OdswERHZFO/psaLSMTdskQDy8/Nx8OBBlE6A7eLigpEjRzLYEBGRzbHlxookLpoJAEhOTkZ8fDxyc3Oh0+nQrl07uUsiIqJahOHGikoHFNfWXilJkrBv3z7s2rULQgj4+vryTigiIqp2DDdWVGwsmehGb5QesafjycvLw9q1a3H58mUAQJs2bRATEwONhouHEhFR9WK4sQGjVKsWWscff/yBuLg45Ofnw8nJCTExMWjbtq3cZRERUS3FcGNFpQOKfd20MldSvSRJQn5+Pvz8/DBs2DD4+fnJXRIREdViDDdWZDTdGVBcC+5BkyQJyjsLaNWvXx/Dhw9HgwYN4OTkJHNlRERU29WCy3D1KR1Q7Ogrgl+8eBFfffUVbt26Zd7WtGlTBhsiIqoRHPsqXM1Kx9o4araRJAnbt2/HihUrcOvWLezZs0fukoiIiMpht5QVmSTHbbnJyclBfHw8UlJSAACRkZGIjo6WuSoiIqLyGG6syCQ55jw358+fx7p161BYWAiNRoMBAwagRYsWcpdFRERUIYYbK3LElpvz589j5cqVAICgoCDExsbC29tb5qqIiIgejOHGigymksn71CrHabpp0KABQkJCEBISgj59+kCt5v8yRERUs/FKZUV3W27sO9wkJSWhXr16UKlUUKlUGD16NEMNERHZDcfpP6kBSu+WUtvpRDcmkwmbN2/G8uXLsWvXLvN2BhsiIrInvGpZUWnLjcoOW25u376NuLg4pKamAigJOkIIKGr5CudERGR/GG6syGin3VKnT5/G+vXrodfr4ezsjIEDB6JJkyZyl0VERFQlDDdWZJJKBhTbS8uN0WjEli1bcOTIEQBA3bp1MXToUHh6espcGRERUdUx3FiRwWRf3VLZ2dk4ceIEAKBr167o0aMHVCqVzFURERE9HoYbKypdONPJTgYU+/j4YODAgdBoNGjUqJHc5RAREVmFfVyF7URpt1RNHXNjMBjw888/Izk52bytRYsWDDZERORQGG6sqCbfCp6RkYFFixbh6NGjWLNmDYxGo9wlERER2QS7payopk7id+LECWzYsAEGgwGurq4YMGAA564hIiKHxSucFRlr2Dw3xcXF2LRpE44fPw4AiIiIwODBg+Hu7i5vYURERDbEcGNFWQUGADWj5aawsBBLly7FzZs3oVAo0L17d3Tr1g1KB1rUk4iIqCIMN1ZUUGy881+TzJUAOp0Ofn5+KCwsxNChQxEeHi53SURERNWC4caKPHROAO6uDl7diouLIUkSdDodFAoF+vfvD5PJBFdXV1nqISIikgP7KKzIcOdW8BAv52p/7/T0dCxcuBDr16+HECVjf3Q6HYMNERHVOmy5sSJT6QzFquobcyOEwNGjR7F582aYTCYUFxcjLy+Pg4aJiKjWYrixotK7pZyqadCuXq/HTz/9hFOnTgEAGjVqhEGDBsHFxaVa3p+IiKgmYrixImM1LpyZlpaG1atX4/bt21AqlejVqxc6d+4MhUL+O7WIiIjkxHBjRWfScgHYPtxIkmQONp6enoiNjUVoaKhN35OIiMhecECxFUX4lgzevZFbZNP3USqVGDRoEJo1a4aJEycy2BAREd2DLTdWZLxzC3iYt/XvULp27Rqys7PRvHlzAEC9evVQr149q78PERGRvWO4saK7C2dar1tKCIFffvkF27Ztg0qlgp+fH/z8/Kx2fCIiIkfDcGNF1l44s7CwEOvWrcP58+cBAE2aNOEt3kRERI/AcGNFdxfOfPyhTFeuXEFcXBxycnKgUqkQHR2NqKgo3g1FRET0CAw3VmSyUrfUgQMHsG3bNggh4O3tjdjYWAQFBVmjRCIiIofHcGNFpWtKqR6zdaWoqAhCCLRs2RLPPfcctFqtNcojIiKqFRhurMh4Z/kFJ7Xl3VKSJEF5pzvr6aefRlBQEJo2bcpuKCIiIgtxnhsrKp2h2MmCAcVCCOzZswdLliyB0WgEUDKPTbNmzRhsiIiIqoAtN1ZkMJWOualcZszLy8PatWtx+fJlAMDp06fRunVrm9VHRERUGzDcWFHpmBunSgwoTkpKwpo1a5CXlwe1Wo2YmBi0atXK1iUSERE5PIYbKzqVmgMAcHpIy40kSdizZw92794NAPDz88OwYcM4MR8REZGVMNxYUX1fV1zOyDe34FRky5YtOHToEACgbdu2iImJgZOTU3WVSERE5PAYbqyo+E6o8XR+cFjp1KkTzpw5g969e3N8DRERkQ0w3FhRaYuN5p5bwSVJQlJSEho0aAAAqFOnDiZPngy1mqeeiIjIFngruBUVG++EmztjbnJycvDNN9/gf//7Hy5dumTej8GGiIjIdmQPN/PmzUNERAR0Oh0iIyOxd+/eh+6/e/duREZGQqfToX79+liwYEE1VfpopeHGSaXEhQsXsGDBAqSkpECj0aC4uFjm6oiIiGoHWcPNqlWr8Pbbb2PGjBlITExEt27d0K9fP6SkpFS4f1JSEmJiYtCtWzckJibir3/9KyZPnoz4+Phqrrw8IQQKDCYoIOHEL3vw3XffobCwEEFBQZg4cSKaNWsmd4lERES1gkIIIeR6844dO6J9+/aYP3++eVuzZs0waNAgzJ49u9z+f/nLX7B+/XqcOXPGvG3SpEk4ceIEDh48WKn3zMnJgaenJ7Kzs+Hh4fH4H+KOIoMJke//iKc1l+GvzAcAdOjQAX369GE3FBER0WOy5PotW8tNcXExjh49ir59+5bZ3rdvXxw4cKDC1xw8eLDc/tHR0Thy5AgMBkOFr9Hr9cjJySnzZQsFxSYEKvPgr8yHVqvF888/j379+jHYEBERVTPZwk1GRgZMJhMCAgLKbA8ICEB6enqFr0lPT69wf6PRiIyMjApfM3v2bHh6epq/6tata50PcB+90YTr6gCcMIWyG4qIiEhGsjcr3L84pBDioQtGVrR/RdtLvffee5g6dar5cU5Ojk0CTpCnM36fFf3I+omIiMi2ZAs3vr6+UKlU5Vppbty4Ua51plRgYGCF+6vVavj4+FT4Gq1WC61Wa52iK4HBhoiISF6ydUtpNBpERkYiISGhzPaEhAR06dKlwtd07ty53P5bt25FVFQUlzAgIiIiADLfCj516lQsWrQIS5YswZkzZzBlyhSkpKRg0qRJAEq6lEaOHGnef9KkSUhOTsbUqVNx5swZLFmyBIsXL8Y777wj10cgIiKiGkbWMTfDhw9HZmYmPvzwQ6SlpaFly5bYuHEjwsLCAABpaWll5ryJiIjAxo0bMWXKFHz11VcIDg7GF198gaFDh8r1EYiIiKiGkXWeGznYap4bIiIish27mOeGiIiIyBYYboiIiMihMNwQERGRQ2G4ISIiIofCcENEREQOheGGiIiIHArDDRERETkUhhsiIiJyKAw3RERE5FBkXX5BDqUTMufk5MhcCREREVVW6XW7Mgsr1Lpwk5ubCwCoW7euzJUQERGRpXJzc+Hp6fnQfWrd2lKSJCE1NRXu7u5QKBRWPXZOTg7q1q2LK1eucN0qG+J5rh48z9WD57n68FxXD1udZyEEcnNzERwcDKXy4aNqal3LjVKpRGhoqE3fw8PDg/9wqgHPc/Xgea4ePM/Vh+e6etjiPD+qxaYUBxQTERGRQ2G4ISIiIofCcGNFWq0WM2fOhFarlbsUh8bzXD14nqsHz3P14bmuHjXhPNe6AcVERETk2NhyQ0RERA6F4YaIiIgcCsMNERERORSGGyIiInIoDDcWmjdvHiIiIqDT6RAZGYm9e/c+dP/du3cjMjISOp0O9evXx4IFC6qpUvtmyXles2YN+vTpAz8/P3h4eKBz587YsmVLNVZrvyz9/7nU/v37oVar0bZtW9sW6CAsPc96vR4zZsxAWFgYtFotGjRogCVLllRTtfbL0vO8YsUKtGnTBi4uLggKCsKYMWOQmZlZTdXapz179qB///4IDg6GQqHAunXrHvkaWa6Dgirt+++/F05OTuK///2vOH36tHjrrbeEq6urSE5OrnD/y5cvCxcXF/HWW2+J06dPi//+97/CyclJxMXFVXPl9sXS8/zWW2+Jf/7zn+LQoUPi/Pnz4r333hNOTk7i2LFj1Vy5fbH0PJfKysoS9evXF3379hVt2rSpnmLtWFXO84ABA0THjh1FQkKCSEpKEr/++qvYv39/NVZtfyw9z3v37hVKpVJ8/vnn4vLly2Lv3r2iRYsWYtCgQdVcuX3ZuHGjmDFjhoiPjxcAxNq1ax+6v1zXQYYbC3To0EFMmjSpzLamTZuKd999t8L9p0+fLpo2bVpm28SJE0WnTp1sVqMjsPQ8V6R58+Zi1qxZ1i7NoVT1PA8fPlz83//9n5g5cybDTSVYep43bdokPD09RWZmZnWU5zAsPc//+te/RP369cts++KLL0RoaKjNanQ0lQk3cl0H2S1VScXFxTh69Cj69u1bZnvfvn1x4MCBCl9z8ODBcvtHR0fjyJEjMBgMNqvVnlXlPN9PkiTk5ubC29vbFiU6hKqe56VLl+LSpUuYOXOmrUt0CFU5z+vXr0dUVBQ++eQThISEoHHjxnjnnXdQWFhYHSXbpaqc5y5duuDq1avYuHEjhBC4fv064uLi8Oyzz1ZHybWGXNfBWrdwZlVlZGTAZDIhICCgzPaAgACkp6dX+Jr09PQK9zcajcjIyEBQUJDN6rVXVTnP9/v000+Rn5+P559/3hYlOoSqnOcLFy7g3Xffxd69e6FW81dHZVTlPF++fBn79u2DTqfD2rVrkZGRgddeew23bt3iuJsHqMp57tKlC1asWIHhw4ejqKgIRqMRAwYMwH/+85/qKLnWkOs6yJYbCykUijKPhRDltj1q/4q2U1mWnudSK1euxAcffIBVq1bB39/fVuU5jMqeZ5PJhBEjRmDWrFlo3LhxdZXnMCz5/1mSJCgUCqxYsQIdOnRATEwM5syZg2XLlrH15hEsOc+nT5/G5MmT8f777+Po0aPYvHkzkpKSMGnSpOootVaR4zrIP78qydfXFyqVqtxfATdu3CiXSksFBgZWuL9arYaPj4/NarVnVTnPpVatWoVx48Zh9erV6N27ty3LtHuWnufc3FwcOXIEiYmJeOONNwCUXISFEFCr1di6dSt69uxZLbXbk6r8/xwUFISQkBB4enqatzVr1gxCCFy9ehWNGjWyac32qCrnefbs2ejatSumTZsGAGjdujVcXV3RrVs3fPTRR2xZtxK5roNsuakkjUaDyMhIJCQklNmekJCALl26VPiazp07l9t/69atiIqKgpOTk81qtWdVOc9ASYvN6NGj8d1337HPvBIsPc8eHh44efIkjh8/bv6aNGkSmjRpguPHj6Njx47VVbpdqcr/z127dkVqairy8vLM286fPw+lUonQ0FCb1muvqnKeCwoKoFSWvQSqVCoAd1sW6PHJdh206XBlB1N6q+HixYvF6dOnxdtvvy1cXV3FH3/8IYQQ4t133xUvv/yyef/SW+CmTJkiTp8+LRYvXsxbwSvB0vP83XffCbVaLb766iuRlpZm/srKypLrI9gFS8/z/Xi3VOVYep5zc3NFaGioiI2NFadOnRK7d+8WjRo1EuPHj5frI9gFS8/z0qVLhVqtFvPmzROXLl0S+/btE1FRUaJDhw5yfQS7kJubKxITE0ViYqIAIObMmSMSExPNt9zXlOsgw42FvvrqKxEWFiY0Go1o37692L17t/m5UaNGie7du5fZf9euXaJdu3ZCo9GI8PBwMX/+/Gqu2D5Zcp67d+8uAJT7GjVqVPUXbmcs/f/5Xgw3lWfpeT5z5ozo3bu3cHZ2FqGhoWLq1KmioKCgmqu2P5ae5y+++EI0b95cODs7i6CgIPHiiy+Kq1evVnPV9mXnzp0P/X1bU66DCiHY/kZERESOg2NuiIiIyKEw3BAREZFDYbghIiIih8JwQ0RERA6F4YaIiIgcCsMNERERORSGGyIiInIoDDdERETkUBhuiOzYsmXL4OXlJXcZVRYeHo65c+c+dJ8PPvgAbdu2rZZ6apodO3agadOmkCSpWt/35MmTCA0NRX5+frW+L5G1MNwQyWz06NFQKBTlvi5evCh3aVi2bFmZmoKCgvD8888jKSnJKsc/fPgwXnnlFfNjhUKBdevWldnnnXfewfbt263yfg9y/+cMCAhA//79cerUKYuPY82wOX36dMyYMcO8wOP9dZZ+LVq0qMLnK/p5hYeHm593dnZG06ZN8a9//avMYpGtWrVChw4d8Nlnn1ntsxBVJ4YbohrgmWeeQVpaWpmviIgIucsCULIieFpaGlJTU/Hdd9/h+PHjGDBgAEwm02Mf28/PDy4uLg/dx83NDT4+Po/9Xo9y7+fcsGED8vPz8eyzz6K4uNjm712RAwcO4MKFCxg2bFiFdd779eKLL5Z7/mE/rw8//BBpaWk4c+YM3nnnHfz1r3/FwoULy7zPmDFjMH/+fKv8nImqG8MNUQ2g1WoRGBhY5kulUmHOnDlo1aoVXF1dUbduXbz22mvIy8t74HFOnDiBHj16wN3dHR4eHoiMjMSRI0fMzx84cABPPfUUnJ2dUbduXUyePPmRXQ8KhQKBgYEICgpCjx49MHPmTPz+++/mlqX58+ejQYMG0Gg0aNKkCb799tsyr//ggw9Qr149aLVaBAcHY/Lkyebn7u2WCg8PBwAMHjwYCoXC/PjebqktW7ZAp9MhKyurzHtMnjwZ3bt3t9rnjIqKwpQpU5CcnIxz586Z93nYz2PXrl0YM2YMsrOzzS0jH3zwAQCguLgY06dPR0hICFxdXdGxY0fs2rXrofV8//336Nu3L3Q6XYV13vvl7Oxc4eeo6OcFAO7u7ggMDER4eDjGjx+P1q1bY+vWrWXeJzo6GpmZmdi9e/dD6ySqiRhuiGowpVKJL774Ar///ju++eYb7NixA9OnT3/g/i+++CJCQ0Nx+PBhHD16FO+++y6cnJwAlIyjiI6OxpAhQ/Dbb79h1apV2LdvH9544w2Laiq9kBoMBqxduxZvvfUW/vznP+P333/HxIkTMWbMGOzcuRMAEBcXh88++wxff/01Lly4gHXr1qFVq1YVHvfw4cMAgKVLlyItLc38+F69e/eGl5cX4uPjzdtMJhN++OEHc+uFNT5nVlYWvvvuOwAwnz/g4T+PLl26YO7cuWVaVt555x0AJa0g+/fvx/fff4/ffvsNw4YNwzPPPIMLFy48sIY9e/YgKiqq0jU/yL0/r/sJIbBr1y6cOXOmzOcEAI1GgzZt2mDv3r2PXQNRtbP5uuNE9FCjRo0SKpVKuLq6mr9iY2Mr3PeHH34QPj4+5sdLly4Vnp6e5sfu7u5i2bJlFb725ZdfFq+88kqZbXv37hVKpVIUFhZW+Jr7j3/lyhXRqVMnERoaKvR6vejSpYuYMGFCmdcMGzZMxMTECCGE+PTTT0Xjxo1FcXFxhccPCwsTn332mfkxALF27doy+8ycOVO0adPG/Hjy5MmiZ8+e5sdbtmwRGo1G3Lp167E+JwDh6uoqXFxcBAABQAwYMKDC/Us96uchhBAXL14UCoVCXLt2rcz2Xr16iffee++Bx/b09BTLly9/YJ2lXwEBAQ98//t/XkKUnHONRiNcXV2Fk5OTACB0Op3Yv39/uRoGDx4sRo8e/dBzQFQTqeUMVkRUokePHpg/f775saurKwBg586d+Pjjj3H69Gnk5OTAaDSiqKgI+fn55n3uNXXqVIwfPx7ffvstevfujWHDhqFBgwYAgKNHj+LixYtYsWKFeX8hBCRJQlJSEpo1a1ZhbdnZ2XBzc4MQAgUFBWjfvj3WrFkDjUaDM2fOlBkQDABdu3bF559/DgAYNmwY5s6di/r16+OZZ55BTEwM+vfvD7W66r96XnzxRXTu3BmpqakIDg7GihUrEBMTgzp16jzW53R3d8exY8dgNBqxe/du/Otf/8KCBQvK7GPpzwMAjh07BiEEGjduXGa7Xq9/6FiiwsLCcl1S99ZZqnSwcamH/bxKTZs2DaNHj8bNmzcxY8YM9OzZE126dCn3Xs7OzigoKHhgjUQ1FcMNUQ3g6uqKhg0bltmWnJyMmJgYTJo0CX/729/g7e2Nffv2Ydy4cRV2MQAl41NGjBiBDRs2YNOmTZg5cya+//57DB48GJIkYeLEiWXGvJSqV6/eA2srvZgqlUoEBASUu4grFIoyj4UQ5m1169bFuXPnkJCQgG3btuG1117Dv/71L+zevbtcN0hldejQAQ0aNMD333+PV199FWvXrsXSpUvNz1f1cyqVSvPPoGnTpkhPT8fw4cOxZ88eAFX7eZTWo1KpcPToUahUqjLPubm5PfB1vr6+uH379kPrrMijfl6lx27YsCEaNmyI+Ph4NGzYEJ06dULv3r3L7Hfr1i1zOCayJww3RDXUkSNHYDQa8emnn5r/Ov/hhx8e+brGjRujcePGmDJlCv70pz9h6dKlGDx4MNq3b49Tp0499MJYkYddTJs1a4Z9+/Zh5MiR5m0HDhwo0zri7OyMAQMGYMCAAXj99dfRtGlTnDx5Eu3bty93PCcnp0rdnTNixAisWLECoaGhUCqVePbZZ83PVfVz3m/KlCmYM2cO1q5di8GDB1fq56HRaMrV365dO5hMJty4cQPdunWr9Pu3a9cOp0+ftrjuR4Wf+9WpUwdvvvkm3nnnHSQmJpYJq7///jtiY2MtroFIbhxQTFRDNWjQAEajEf/5z39w+fJlfPvtt+W6Se5VWFiIN954A7t27UJycjL279+Pw4cPm4PGX/7yFxw8eBCvv/46jh8/jgsXLmD9+vV48803q1zjtGnTsGzZMixYsAAXLlzAnDlzsGbNGvNA2mXLlmHx4sX4/fffzZ/B2dkZYWFhFR4vPDwc27dvR3p6eoWtFqVefPFFHDt2DH//+98RGxtbpvvGWp/Tw8MD48ePx8yZMyGEqNTPIzw8HHl5edi+fTsyMjJQUFCAxo0b48UXX8TIkSOxZs0aJCUl4fDhw/jnP/+JjRs3PvD9o6OjsW/fPotqrqrXX38d586dKzNQ+48//sC1a9fKteYQ2QUZx/sQkSgZUDxw4MAKn5szZ44ICgoSzs7OIjo6WixfvlwAELdv3xZClB1AqtfrxQsvvCDq1q0rNBqNCA4OFm+88UaZQbSHDh0Sffr0EW5ubsLV1VW0bt1a/P3vf39gbRUNkL3fvHnzRP369YWTk5No3LhxmUGwa9euFR07dhQeHh7C1dVVdOrUSWzbts38/P0DitevXy8aNmwo1Gq1CAsLE0KUH1Bc6oknnhAAxI4dO8o9Z63PmZycLNRqtVi1apUQ4tE/DyGEmDRpkvDx8REAxMyZM4UQQhQXF4v3339fhIeHCycnJxEYGCgGDx4sfvvttwfWdOvWLeHs7CzOnj37yDor+7wQ5c95qQkTJogWLVoIk8kkhBDi448/FtHR0Q89FlFNpRDinmkpiYioxpg+fTqys7Px9ddfV+v76vV6NGrUCCtXrkTXrl2r9b2JrIHdUkRENdSMGTMQFhZW7bMEJycnY8aMGQw2ZLfYckNEREQOhS03RERE5FAYboiIiMihMNwQERGRQ2G4ISIiIofCcENEREQOheGGiIiIHArDDRERETkUhhsiIiJyKAw3RERE5FD+PzsqrbtI6mHfAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Compute the ROC curve\n", "y_proba = clf.predict_proba(X_test)\n", "fpr, tpr, thresholds = roc_curve(y_test, y_proba[:,1])\n", "\n", "# Plot the ROC curve\n", "plt.plot(fpr, tpr)\n", "plt.plot([0, 1], [0, 1], linestyle='--', color='grey')\n", "plt.xlabel('False Positive Rate (FPR)')\n", "plt.ylabel('True Positive Rate (TPR)')\n", "plt.title('ROC Curve')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The confusion matrix for the test set can be computed as follows" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:51.180496Z", "iopub.status.busy": "2024-05-31T21:41:51.180281Z", "iopub.status.idle": "2024-05-31T21:41:51.377066Z", "shell.execute_reply": "2024-05-31T21:41:51.376466Z" } }, "outputs": [ { "data": { "text/plain": [ "array([[ 15788, 1843],\n", " [ 10433, 271936]])" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "conf_mat = confusion_matrix(y_test, y_pred, labels=[1, 0]).transpose() # Transpose the sklearn confusion matrix to match the convention in the lecture\n", "conf_mat" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also plot the confusion matrix as a heatmap" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:51.380150Z", "iopub.status.busy": "2024-05-31T21:41:51.379899Z", "iopub.status.idle": "2024-05-31T21:41:51.509694Z", "shell.execute_reply": "2024-05-31T21:41:51.508995Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.heatmap(conf_mat, annot=True, cmap='Blues', fmt='g', xticklabels=['Fraud', 'No Fraud'], yticklabels=['Fraud', 'No Fraud'])\n", "plt.xlabel(\"Actual\")\n", "plt.ylabel(\"Predicted\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, we have mostly true negatives and true positives. However, there is still a significant number of false negatives, which means that we are missing fraudulent transactions, and a significant number of false positives, which means that we are predicting transactions as fraudulent that are not fraudulent.\n", "\n", "If we would like to use a threshold other than 0.5 to predict the class of the test set, we can do so as follows" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:51.512829Z", "iopub.status.busy": "2024-05-31T21:41:51.512625Z", "iopub.status.idle": "2024-05-31T21:41:51.819314Z", "shell.execute_reply": "2024-05-31T21:41:51.818695Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy: 0.9112033333333334\n", "Precision: 0.49579121188932296\n", "Recall: 0.9389420693337401\n" ] } ], "source": [ "# Alternative threshold\n", "threshold = 0.1\n", "\n", "# Predict the class of the test set\n", "y_pred_alt = (y_proba[:, 1] >= threshold).astype(int)\n", "\n", "# Show the performance metrics\n", "print(f\"Accuracy: {accuracy_score(y_test, y_pred_alt)}\")\n", "print(f\"Precision: {precision_score(y_test, y_pred_alt)}\")\n", "print(f\"Recall: {recall_score(y_test, y_pred_alt)}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Setting a lower threshold increases the recall but decreases the precision. This is because we are more likely to predict a transaction as fraudulent, which increases the number of true positives but also the number of false positives.\n", "\n", "What the correct threshold is depends on the problem at hand. For example, if the cost of missing a fraudulent transaction is very high, you might want to set a lower threshold to increase the recall. If the cost of falsely predicting a transaction as fraudulent is very high, you might want to set a higher threshold to increase the precision.\n", "\n", "We can also plot the performance metrics for different thresholds" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "execution": { "iopub.execute_input": "2024-05-31T21:41:51.822493Z", "iopub.status.busy": "2024-05-31T21:41:51.822238Z", "iopub.status.idle": "2024-05-31T21:42:06.668768Z", "shell.execute_reply": "2024-05-31T21:42:06.667656Z" } }, "outputs": [ { "data": { "image/png": "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T55URo0apRgMBmX//v0urjx/yen7bHPr1i2lfPnyStu2bZU6deq4pth8LjfvdadOnZTGjRsrGzZsUCIiIpRdu3Yp27dvd2HV+U9O3+etW7cqWq1W+frrr5Xw8HBl69atSo0aNZQuXbq4uPL8ZfXq1cro0aOVxYsXK4CydOnSLJ+vxmehhJscaNSokTJ06NAM56pWraqMHDky0+e/8847StWqVTOce/HFF5WHH37YaTW6g5y+z5mpXr26Mn78eEeX5lZy+z736tVLef/995WxY8dKuMmmnL7Xa9asUfz9/ZUbN264ojy3kdP3+fPPP1fKly+f4dw333yjlC5d2mk1upvshBs1PgulWyqbUlNT2bdvH23bts1wvm3btuzYsSPT79m5c+ddz3/iiSfYu3cvaWlpTqs1P8vN+/xfFouFuLg4AgICnFGiW8jt+zx79mzOnDnD2LFjnV2i28jNe71ixQoaNmzIZ599RqlSpahcuTJvvfUWSUlJrig5X8rN+9y0aVMuXLjA6tWrURSFq1ev8scff/DUU0+5ouQCQ43PwgK3cWZuRUVFYTabCQ4OznA+ODiYK1euZPo9V65cyfT5JpOJqKgoSpQo4bR686vcvM//9eWXX5KQkEDPnj2dUaJbyM37fOrUKUaOHMnWrVvR6+W/juzKzXsdHh7Otm3b8PT0ZOnSpURFRfHyyy8THR0t427uITfvc9OmTZk3bx69evUiOTkZk8lEp06dmDp1qitKLjDU+CyUlpsc0mg0GR4rinLXufs9P7PzIqOcvs82v/32G+PGjWPhwoUEBQU5qzy3kd332Ww206dPH8aPH0/lypVdVZ5bycnfaYvFgkajYd68eTRq1Ij27dszefJk5syZI60395GT9/nYsWMMGzaMMWPGsG/fPtauXUtERARDhw51RakFiqs/C+XXr2wqVqwYOp3urt8Arl27dlcitSlevHimz9fr9RQtWtRpteZnuXmfbRYuXMigQYP4/fffadOmjTPLzPdy+j7HxcWxd+9eDhw4wKuvvgpYP4AVRUGv17N+/XpatWrlktrzm9z8nS5RogSlSpXC39/ffq5atWooisKFCxeoVKmSU2vOj3LzPk+cOJFmzZrx9ttvA1C7dm18fHxo3rw5H330kbSuO4gan4XScpNNRqORBg0asGHDhgznN2zYQNOmTTP9niZNmtz1/PXr19OwYUMMBoPTas3PcvM+g7XFZsCAAcyfP1/6y7Mhp++zn58fhw8fJiwszH4bOnQoVapUISwsjMaNG7uq9HwnN3+nmzVrxqVLl4iPj7efO3nyJFqtltKlSzu13vwqN+9zYmIiWm3Gj0GdTgfcblkQD06Vz0KnDVV2Q7ZphjNnzlSOHTumDB8+XPHx8VHOnj2rKIqijBw5UunXr5/9+bbpb2+88YZy7NgxZebMmTIVPBty+j7Pnz9f0ev1ynfffadcvnzZfrt165ZaP0K+kNP3+b9ktlT25fS9jouLU0qXLq08/fTTytGjR5XNmzcrlSpVUgYPHqzWj5Av5PR9nj17tqLX65Vp06YpZ86cUbZt26Y0bNhQadSokVo/Qr4QFxenHDhwQDlw4IACKJMnT1YOHDhgn3KfFz4LJdzk0HfffaeEhoYqRqNRqV+/vrJ582b715577jmlRYsWGZ6/adMmpV69eorRaFTKli2rTJ8+3cUV5085eZ9btGihAHfdnnvuOdcXns/k9O/znSTc5ExO3+vjx48rbdq0Uby8vJTSpUsrI0aMUBITE11cdf6T0/f5m2++UapXr654eXkpJUqUUPr27atcuHDBxVXnLxs3bszy/9y88FmoURRpexNCCCGE+5AxN0IIIYRwKxJuhBBCCOFWJNwIIYQQwq1IuBFCCCGEW5FwI4QQQgi3IuFGCCGEEG5Fwo0QQggh3IqEGyGEEEK4FQk3QgiXOXv2LBqNhrCwMJded9OmTWg0Gm7duvVAr6PRaFi2bNk9v67WzyeEyEjCjRDCITQaTZa3AQMGqF2iEKKA0KtdgBDCPVy+fNl+vHDhQsaMGcOJEyfs57y8vLh582aOX9dsNqPRaO7avVkIIe5F/rcQQjhE8eLF7Td/f380Gs1d52zCw8Np2bIl3t7e1KlTh507d9q/NmfOHAoXLsyqVauoXr06Hh4enDt3jtTUVN555x1KlSqFj48PjRs3ZtOmTfbvO3fuHB07dqRIkSL4+PhQo0YNVq9enaHGffv20bBhQ7y9vWnatGmG8AUwffp0KlSogNFopEqVKsydOzfLn3n37t3Uq1cPT09PGjZsyIEDBx7gHRRCOIqEGyGEy40ePZq33nqLsLAwKleuzDPPPIPJZLJ/PTExkYkTJ/LTTz9x9OhRgoKCGDhwINu3b2fBggUcOnSIHj160K5dO06dOgXAK6+8QkpKClu2bOHw4cNMmjQJX1/fu6775ZdfsnfvXvR6Pc8//7z9a0uXLuX111/nzTff5MiRI7z44osMHDiQjRs3ZvozJCQk0KFDB6pUqcK+ffsYN24cb731lhPeLSFEjjl1z3EhRIE0e/Zsxd/f/67zERERCqD89NNP9nNHjx5VAOX48eP27wWUsLAw+3NOnz6taDQa5eLFixler3Xr1sqoUaMURVGUWrVqKePGjcu0no0bNyqA8tdff9nP/fnnnwqgJCUlKYqiKE2bNlWGDBmS4ft69OihtG/f3v4YUJYuXaooiqL88MMPSkBAgJKQkGD/+vTp0xVAOXDgwL3eGiGEC0jLjRDC5WrXrm0/LlGiBADXrl2znzMajRmes3//fhRFoXLlyvj6+tpvmzdv5syZMwAMGzaMjz76iGbNmjF27FgOHTqUo+seP36cZs2aZXh+s2bNOH78eKY/w/Hjx6lTpw7e3t72c02aNMneGyCEcCoZUCyEcDmDwWA/1mg0AFgsFvs5Ly8v+3nb13Q6Hfv27UOn02V4LVvX0+DBg3niiSf4888/Wb9+PRMnTuTLL7/ktddey/Z177wmgKIod52782tCiLxJWm6EEHlevXr1MJvNXLt2jYoVK2a4FS9e3P68kJAQhg4dypIlS3jzzTeZMWNGtq9RrVo1tm3bluHcjh07qFatWqbPr169OgcPHiQpKcl+7t9//83hTyaEcAYJN0KIPK9y5cr07duX/v37s2TJEiIiItizZw+TJk2yz4gaPnw469atIyIigv379/PPP//cM5hk5u2332bOnDl8//33nDp1ismTJ7NkyZJ7DhLu06cPWq2WQYMGcezYMVavXs0XX3zhkJ9XCPFgJNwIIfKF2bNn079/f958802qVKlCp06d2LVrFyEhIYB1PZxXXnmFatWq0a5dO6pUqcK0adOy/fpdunTh66+/5vPPP6dGjRr88MMPzJ49m8ceeyzT5/v6+rJy5UqOHTtGvXr1GD16NJMmTXLEjyqEeEAaRTqOhRBCCOFGpOVGCCGEEG5Fwo0QQggh3IqEGyGEEEK4FQk3QgghhHArEm6EEEII4VYk3AghhBDCrUi4EUIIIYRbkXAjhBBCCLci4UYIIYQQbkXCjRBCCCHcioQbIYQQQriV/wNVygmhwQ2V7wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "N = 50\n", "thresholds_array = np.linspace(0.0, 0.999, N)\n", "accuracy_array = np.zeros(N)\n", "precision_array = np.zeros(N)\n", "recall_array = np.zeros(N)\n", "\n", "# Compute the performance metrics for different thresholds\n", "for ii, thresh in enumerate(thresholds_array):\n", " y_pred_alt_tmp = (y_proba[:, 1] > thresh).astype(int)\n", " accuracy_array[ii] = accuracy_score(y_test, y_pred_alt_tmp)\n", " precision_array[ii] = precision_score(y_test, y_pred_alt_tmp)\n", " recall_array[ii] = recall_score(y_test, y_pred_alt_tmp)\n", "\n", "# Plot the performance metrics\n", "plt.plot(thresholds_array, accuracy_array, label='Accuracy')\n", "plt.plot(thresholds_array, precision_array, label='Precision')\n", "plt.plot(thresholds_array, recall_array, label='Recall')\n", "plt.xlabel('Threshold')\n", "plt.ylabel('Score')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Conclusions\n", "\n", "In this notebook, we have seen how to implement a logistic regression model in Python. We have loaded a dataset, explored and preprocessed it, and trained a logistic regression model to predict whether a transaction is fraudulent or not. We have evaluated the model using different performance metrics and have seen how the choice of threshold affects the performance of the model.\n", "\n", "There are many ways to improve the performance of the model. For example, we could try different machine learning models, or engineer new features. We could also try to deal with the imbalanced dataset by using techniques such as oversampling or undersampling. However, this is beyond the scope of this notebook.\n", "\n", "\n", "" ] } ], "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.8.19" } }, "nbformat": 4, "nbformat_minor": 4 }