You are on page 1of 5

Fraud detection in banking using ML

#####Importing Libraries

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from pandas.plotting import scatter_matrix
from sklearn.metrics import accuracy_score, classification_report,
confusion_matrix

#####Reading the Data

data ="/content/drive/MyDrive/Innovaskill Internship


project./Project_03/Data/Transaction Data.csv"
df = pd.read_csv(data)
df.head()

#####Preprocessing the data

df['TransactionTime'] = pd.to_datetime(df['TransactionTime'])
df.head()

#####OneHot Encoding

df = pd.get_dummies(df, columns=['Merchant'], prefix='Merchant')


df.head()

#####Cheching Data Imbalance

plt.figure(figsize=(8, 5))
sns.countplot(x='Fraudulent', data=df)
plt.title('Countplot of Fraudulent Transactions')
plt.show()
#####Reaveling The pattern of fradulent transaction

plt.figure(figsize=(10, 6))
sns.boxplot(x='Fraudulent', y='TransactionAmount', data=df)
plt.title('Boxplot of TransactionAmount by Fraudulent')
plt.show()
#####Feature Extraction

features = df.drop(['TransactionID', 'TransactionTime', 'Fraudulent'],


axis=1)
target = df['Fraudulent']

#####Spliting the data for Training and Testing

X_train, X_test, y_train, y_test = train_test_split(features, target,


test_size=0.2, random_state=42)

model = LogisticRegression()

#####Training the model

model.fit(X_train, y_train)

LogisticRegression()

#####Testing the Model With unseened data

y_pred = model.predict(X_test)

print(y_pred)
[0 0 0 0 0]

#####Calculating the Metrics

accuracy = (accuracy_score(y_test, y_pred))*100


conf_matrix = confusion_matrix(y_test, y_pred)
class_report = classification_report(y_test, y_pred)

#####Ploting the confusion metrics

sns.heatmap(conf_matrix, annot=True, fmt="d", cmap="Blues",


xticklabels=['Not Fraudulent', 'Fraudulent'], yticklabels=['Not
Fraudulent', 'Fraudulent'])
plt.title('Confusion Matrix')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()

print(f"Accuracy: {accuracy:.2f}")
print("Confusion Matrix:")
print(conf_matrix)
print("Classification Report:")
print(class_report)

Accuracy: 100.00
Confusion Matrix:
[[5]]
Classification Report:
precision recall f1-score support

0 1.00 1.00 1.00 5

accuracy 1.00 5
macro avg 1.00 1.00 1.00 5
weighted avg 1.00 1.00 1.00 5

You might also like