Credit Card Fraud Detection using Random Forest Classifier
Import libraries
Read the data
The data was obtained from Kaggle.
This dataset presents transactions that occurred in two days. The column Class take the values 0 an 1, 1 if there is a fraud in the transaction.
Explore
We are going to explore the dataset. First we are going to see the head of it.
We can see that there is not null values.
Now we are going to plot the Class Balance.
We have an imbalanced dataset. Our majority class is far bigger than our minority class.
Split
We are going to split the data frame in X and y and then we are going to use train test plit to obtain X train, X test, y train and y test.
Resample
We see that the data set es imbalanced.
We are going to cretae a new feature matrix X_train_over and target vector y_train_over by performing random over-sampling on our training data. We choose over sampling because we saw in the previous project that under sampling was not good.
Model
Baseline
We calculate the baseline accuracy score for our model.
Iterate
We are going to create a model named clf, it is going to contain Random Forest Classifier.
We are going to perform cross-validation with the classifier, using the over-sampled training data.
We are going to have five folds, we set cv to 5. We want to speed up training, to set n_jobs to -1.
Now we create a dictionary with the range of hyperparameters that we are going to evaluate for our classifier.
We create a GridSearchCV to which we called model. This is going to include our classifier and hyperparameter grid.
We fit model to the over-sampled training data.
Now we extract the cross-validation results from the model
We are going to analyze what happen with model with max depth equals 10.
We plot param_randomforestclassifier__n_estimators" on the x-axis and "mean_fit_time" on the y-axis.
We can see that when number of estimators is higher the mean fit time is higher too.
Now we are going to look at max_depth. We are going to analyze the n_estimators equals 25.
We plot "param_randomforestclassifier__max_depth" on the x-axis and "mean_fit_time" on the y-axis.
We can see that when max depth is higher, mean fit time is higher too.
Now we extract the best hyperparameters from model.
Now we are going to predict with the best model.
Evaluate
We are going to evaluate the model.
Calculate the training and test accuracy scores for model.
We beat the baseline.
Now using confucion matrix we are going to see how the model performs.
First we count how many observation in y_test belong to positive and negative class.
Now we plot hte confusion matrix.
This model decrease the number of False Positives.
Communicate
We obtain the features and importances of our model and plot them.
We can see that the most importan feature is V14.