An end-to-end fraud detection system using machine learning with MLOps best practices.
This project implements a complete fraud detection system with the following components:
- Synthetic dataset generation for fraud detection
- Training multiple ML models (Logistic Regression, Decision Trees, Random Forests, XGBoost, SVM)
- MLflow for experiment tracking and model versioning
- FastAPI for real-time prediction API
- Comprehensive visualization and model evaluation
- Docker containerization for easy deployment
├── app.py # FastAPI application for predictions
├── docker-compose.yml # Docker Compose configuration
├── Dockerfile # Docker configuration for API
├── generate_dataset.py # Script to generate synthetic data
├── mlflow-dockerfile # Docker configuration for MLflow
├── README.md # Project documentation
├── requirements.txt # Python dependencies
├── run_pipeline.py # Script to run the complete pipeline
├── train.py # Model training script
├── visualize.py # Visualization generation script
├── data/ # Generated datasets
├── models/ # Saved models
├── mlruns/ # MLflow experiment tracking
└── visualizations/ # Generated visualizations
- Python 3.9+
- Docker and Docker Compose (for containerized deployment)
-
Clone the repository:
git clone https://github.com/yourusername/fraud-detection.git cd fraud-detection -
Install dependencies:
pip install -r requirements.txt -
Run the complete pipeline:
python run_pipeline.pyThis will:
- Generate the synthetic dataset
- Train multiple ML models
- Track experiments with MLflow
- Generate visualizations
- Save the best model
-
Start the API:
python app.pyThe API will be available at http://localhost:8000/docs
To deploy with Docker:
-
Build and start the containers:
docker-compose up --build -
Access the services:
- FastAPI: http://localhost:8000/docs
- MLflow: http://localhost:5000
import requests
import json
# API endpoint
url = "http://localhost:8000/predict"
# Transaction data
data = {
"transaction_amount": 245.50,
"transaction_hour": 14,
"days_since_first_transaction": 380,
"transaction_count_7d": 5,
"avg_transaction_value_30d": 150.75,
"std_transaction_value_30d": 85.20,
"merchant_category_risk": 0.65,
"distance_from_home": 12.5,
"international_transaction": 0,
"transaction_method": 2
}
# Make prediction request
response = requests.post(url, json=data)
result = response.json()
print(f"Fraud Probability: {result['fraud_probability']:.4f}")
print(f"Is Fraud: {result['is_fraud']}")import requests
import json
# API endpoint
url = "http://localhost:8000/predict_batch"
# Batch of transactions
data = {
"transactions": [
{
"transaction_amount": 245.50,
"transaction_hour": 14,
"days_since_first_transaction": 380,
"transaction_count_7d": 5,
"avg_transaction_value_30d": 150.75,
"std_transaction_value_30d": 85.20,
"merchant_category_risk": 0.65,
"distance_from_home": 12.5,
"international_transaction": 0,
"transaction_method": 2
},
{
"transaction_amount": 1890.00,
"transaction_hour": 2,
"days_since_first_transaction": 10,
"transaction_count_7d": 15,
"avg_transaction_value_30d": 200.75,
"std_transaction_value_30d": 300.20,
"merchant_category_risk": 0.9,
"distance_from_home": 900.5,
"international_transaction": 1,
"transaction_method": 3
}
]
}
# Make batch prediction request
response = requests.post(url, json=data)
results = response.json()
# Process results
for i, pred in enumerate(results["predictions"]):
print(f"Transaction {i+1}:")
print(f" Fraud Probability: {pred['fraud_probability']:.4f}")
print(f" Is Fraud: {pred['is_fraud']}")The system trains and evaluates multiple machine learning models:
- Logistic Regression
- Decision Tree
- Random Forest
- XGBoost
- SVM (Support Vector Machine)
- Gradient Boosting
For each model, the following metrics are calculated:
- Accuracy
- Precision
- Recall (Sensitivity)
- F1 Score
- ROC AUC
- Specificity
The best performing model (based on ROC AUC) is automatically selected for deployment.
The system generates various visualizations to help understand the data and model performance:
- Feature distributions
- Correlation matrix
- Feature importance
- ROC curve
- Precision-Recall curve
- Confusion matrix
These visualizations are stored in the visualizations/ directory.
The project includes MLOps best practices:
- Experiment Tracking: All model training runs are tracked using MLflow
- Model Registry: Models are saved and versioned
- CI/CD Ready: Docker containerization for easy deployment
- Model Serving: FastAPI for real-time predictions
- Monitoring: Logging and diagnostics