Before going to the code it is requested to work on a jupyter notebook. If not installed on your machine you can use Google colab.
You can download the dataset from this link
If the link is not working please go to this link and log in to kaggle to download the dataset.
Importing all the necessary Libraries
# import the necessary packagesimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom matplotlib import gridspec
Loading the Dataset
# Load the dataset from the csv file using pandas# best way is to mount the drive on colab and# copy the path for the csv filedata = pd.read_csv("credit.csv")
Understanding the dataset
# Grab a peek at the datadata.head()
Describing the Data
# Print the shape of the data# data = data.sample(frac = 0.1, random_state = 48)print(data.shape)print(data.describe())
Imbalance in the data
# Determine number of fraud cases in datasetfraud = data[data['Class'] == 1]valid = data[data['Class'] == 0]outlierFraction = len(fraud)/float(len(valid))print(outlierFraction)print('Fraud Cases: {}'.format(len(data[data['Class'] == 1])))print('Valid Transactions: {}'.format(len(data[data['Class'] == 0])))
Print the amount details for fradulant transaction
print(“Amount details of the fraudulent transaction”)fraud.Amount.describe()
Print the amount details for Normal Transactions
print(“details of valid transaction”)
valid.Amount.describe()
Plotting the Correlation Matrix
# Correlation matrixcorrmat = data.corr()fig = plt.figure(figsize = (12, 9))sns.heatmap(corrmat, vmax = .8, square = True)plt.show()
Separating the X values and the Y values
# dividing the X and the Y from the datasetX = data.drop(['Class'], axis = 1)Y = data["Class"]print(X.shape)print(Y.shape)# getting just the values for the sake of processing# (its a numpy array with no columns)xData = X.valuesyData = Y.values
Bifurication of Training and Testing data
# Using Skicit-learn to split data into training and testing sets
from sklearn.model_selection import train_test_split
# Split the data into training and testing sets
xTrain, xTest, yTrain, yTest = train_test_split(xData, yData, test_size = 0.2, random_state = 42)
Building a Random forest model using a scikit Learning
# Building the Random Forest Classifier (RANDOM FOREST)from sklearn.ensemble import RandomForestClassifier# random forest model creationrfc = RandomForestClassifier()rfc.fit(xTrain, yTrain)# predictionsyPred = rfc.predict(xTest)
Building all kind of parameter evaluations
# Evaluating the classifier# printing every score of the classifier# scoring in anythingfrom sklearn.metrics import classification_report, accuracy_scorefrom sklearn.metrics import precision_score, recall_scorefrom sklearn.metrics import f1_score, matthews_corrcoeffrom sklearn.metrics import confusion_matrix n_outliers = len(fraud)n_errors = (yPred != yTest).sum()print("The model used is Random Forest classifier") acc = accuracy_score(yTest, yPred)print("The accuracy is {}".format(acc)) prec = precision_score(yTest, yPred)print("The precision is {}".format(prec)) rec = recall_score(yTest, yPred)print("The recall is {}".format(rec)) f1 = f1_score(yTest, yPred)print("The F1-Score is {}".format(f1)) MCC = matthews_corrcoef(yTest, yPred)print("The Matthews correlation coefficient is{}".format(MCC))
Visualizing the Confusion Matrix
# printing the confusion matrixLABELS = ['Normal', 'Fraud']conf_matrix = confusion_matrix(yTest, yPred)plt.figure(figsize =(12, 12))sns.heatmap(conf_matrix, xticklabels = LABELS, yticklabels = LABELS, annot = True, fmt ="d");plt.title("Confusion matrix")plt.ylabel('True class')plt.xlabel('Predicted class')plt.show()
- Get link
- X
- Other Apps
- Get link
- X
- Other Apps
Comments