🎓 CodSoft Data Science Internship — Task 5

Credit Card
Fraud Detection

A machine learning system that identifies fraudulent credit card transactions from a highly imbalanced dataset of 284,807 transactions using advanced classification algorithms and comprehensive evaluation metrics.

🐍 Python 🤖 Scikit-Learn 📊 Pandas 📈 Matplotlib 🎯 Classification
284K+
Transactions
31
Features
4
Models
0.17%
Fraud Rate
📋 Overview

Project Overview

An end-to-end machine learning pipeline for detecting fraudulent credit card transactions, handling extreme class imbalance with a fraud ratio of just 0.172%.

🎯
Objective
Build a robust classification model to identify fraudulent transactions among 284,807 records with only 492 fraud cases.
⚖️
Key Challenge
Extreme class imbalance — fraud is only 0.172% of data. Standard accuracy is misleading; specialized metrics and techniques are critical.
🏗️
Approach
Balanced class weights, stratified splitting, feature engineering, GridSearchCV tuning, and evaluation with ROC-AUC, F1, and Precision-Recall.
📊 Dataset

Dataset Details

Credit card transactions made by European cardholders in September 2013, containing PCA-transformed anonymized features.

📑 Dataset Properties
SourceKaggle — MLG ULB
Total Transactions284,807
Fraud Cases492 (0.172%)
Legitimate Cases284,315 (99.828%)
Features31 columns
Imbalance Ratio~578:1
🔤 Feature Description
FeatureDescription
TimeSeconds since first transaction
V1–V28PCA-transformed (anonymized)
AmountTransaction amount ($)
Class0 = Legit, 1 = Fraud
🔄 Pipeline

ML Pipeline

A systematic machine learning workflow from data ingestion to model deployment.

📥 Load Data
🧹 Preprocess
⚙️ Features
🤖 Train
🎯 Tune
📊 Evaluate
💾 Save

Engineered Features

Hour & Is_Night
Cyclical hour extraction and night-time flag for temporal patterns.
💰
Log_Amount & Bins
Log-transformed amount to reduce skewness and binned categories.
📐
V_Mean & V_Std
Statistical aggregations across all 28 PCA components.
V_Extreme_Count
Count of V-features with extreme values as anomaly indicator.
🤖 Models

Models Used

Four classification algorithms trained with balanced class weights to handle the extreme imbalance in fraud detection.

📈
Logistic Regression
Linear model with balanced class weights. Fast training, highly interpretable, and provides probability estimates. Strong baseline for binary classification.
Linear Fast Interpretable
🌳
Decision Tree
Non-linear tree-based classifier that captures complex patterns. Handles class imbalance natively with balanced weights. Easy to visualize and understand.
Non-Linear Visual Balanced
🌲
Random Forest
Ensemble of decision trees with bootstrap aggregation. Reduces overfitting, provides feature importance scores, and handles imbalanced classes effectively.
Ensemble Robust Feature Rank
🚀
Gradient Boosting
Sequential boosting method that builds trees to correct previous errors. Excellent for complex patterns and typically achieves high ROC-AUC scores.
Boosting High Accuracy Sequential
📊 Results

Evaluation Results

Comprehensive model comparison across multiple metrics with emphasis on Recall, F1-Score, and ROC-AUC for fraud detection effectiveness.

Model Accuracy Precision Recall F1 Score ROC-AUC
Logistic Regression 0.97450.06090.91840.11430.9769
Decision Tree 0.99910.73170.75510.74320.8774
Random Forest 0.99960.94870.75510.84090.9519
🏆 Gradient Boosting 0.9995 0.8750 0.7857 0.8279 0.9723

* Results are approximate. Run python main.py to generate actual metrics.

🎯
Precision
Of all predicted frauds, how many are actually fraud? Minimizes false alarms.
🔍
Recall
Of all actual frauds, how many were detected? Minimizes missed fraud cases.
📐
ROC-AUC
Area under ROC curve. Measures overall model discrimination ability across thresholds.
📁 Structure

Project Structure

Clean, modular architecture following software engineering best practices.

Credit_Card_Fraud_Detection/ │ ├── dataset/ │ └── download_dataset.md │ ├── notebook/ │ └── Credit_Card_Fraud_Detection.ipynb │ ├── src/ │ ├── __init__.py │ ├── preprocessing.py │ ├── feature_engineering.py │ ├── model_training.py │ ├── evaluation.py │ ├── prediction.py │ └── utils.py │ ├── models/ │ ├── fraud_detection_model.pkl │ └── scaler.pkl │ ├── outputs/ │ ├── class_distribution.png │ ├── transaction_amount_distribution.png │ ├── correlation_heatmap.png │ ├── fraud_vs_legitimate.png │ ├── missing_values_heatmap.png │ ├── feature_importance.png │ ├── confusion_matrix.png │ ├── roc_curve.png │ ├── precision_recall_curve.png │ ├── model_comparison.csv │ └── predictions.csv │ ├── screenshots/ │ └── README.md │ ├── README.md ├── requirements.txt ├── main.py ├── index.html └── .gitignore
🧩 Code

Code Architecture

Modular design with separation of concerns for maintainability and reusability.

🧹
preprocessing.py
Data loading, missing value analysis, duplicate detection, class distribution, train/test split, and StandardScaler application.
⚙️
feature_engineering.py
Time features (Hour, Is_Night), amount features (Log, Bins), and V-feature aggregations (Mean, Std, Extreme Count).
🤖
model_training.py
Multi-model training pipeline, model comparison, GridSearchCV hyperparameter tuning, and model persistence.
📊
evaluation.py
Classification reports, confusion matrix, ROC curve, precision-recall curve, and feature importance visualizations.
🔮
prediction.py
Prediction generation, predictions CSV export with actual/predicted/probability columns, and model loading utilities.
🛠️
utils.py
Logging configuration, directory creation, plot styling, DataFrame I/O, and project path management with pathlib.
📈 Visuals

Generated Visualizations

All visualizations are generated automatically by the pipeline and saved in the outputs/ directory.

▶️ Run

How to Run

Get the project running in just a few simple steps.

📦 Installation
# Clone the repository git clone https://github.com/yourusername/Credit_Card_Fraud_Detection.git cd Credit_Card_Fraud_Detection # Create virtual environment python -m venv venv source venv/bin/activate # Install dependencies pip install -r requirements.txt # Download dataset from Kaggle kaggle datasets download -d mlg-ulb/creditcardfraud unzip creditcardfraud.zip -d dataset/
🚀 Execution
# Option 1: Run complete pipeline python main.py # Option 2: Jupyter Notebook cd notebook jupyter notebook Credit_Card_Fraud_Detection.ipynb # Option 3: View landing page open index.html
✅ main.py will automatically:
  • • Load & preprocess data
  • • Engineer features
  • • Train & compare 4 models
  • • Tune best model (GridSearchCV)
  • • Generate all plots & CSVs
  • • Save model & scaler