help@rskworld.in +91 93305 39277
RSK World
  • Home
  • Development
    • Web Development
    • Mobile Apps
    • Software
    • Games
    • Project
  • Technologies
    • Data Science
    • AI Development
    • Cloud Development
    • Blockchain
    • Cyber Security
    • Dev Tools
    • Testing Tools
  • Blog
  • About
  • Contact

Theme Settings

Color Scheme
Display Options
Font Size
100%
Back to Project
RSK World
fraud-detection
RSK World
fraud-detection
Fraud Detection Dataset - Financial Fraud ML + Anti-Fraud AI + Fraud Detection Deep Learning
fraud-detection
  • __pycache__
  • .gitignore866 B
  • ADVANCED_FEATURES.md10.6 KB
  • ERROR_CHECK_REPORT.md1.8 KB
  • GITHUB_RELEASE_GUIDE.md4.6 KB
  • LICENSE1.6 KB
  • README.md8.2 KB
  • RELEASE_NOTES.md2.8 KB
  • advanced_feature_engineering.py9.5 KB
  • feature_engineering.py9.2 KB
  • fraud_detection_analysis.ipynb12.8 KB
  • fraud_detection_dataset.csv2.3 MB
  • generate_data.py9.8 KB
  • hyperparameter_tuning.py9.8 KB
  • index.html12.3 KB
  • model_evaluation_advanced.py9.9 KB
  • predict_pipeline.py8.1 KB
  • requirements.txt462 B
  • shap_explainability.py7.4 KB
  • test_imports.py2.6 KB
  • train_model.py12.4 KB
  • verify_dataset.py1 KB
project_metadata.jsonpredict_pipeline.pyINSTALLATION_GUIDE.mdindex.html
predict_pipeline.py
Raw Download
Find: Go to:
"""
Fraud Detection Prediction Pipeline

Developer: Molla Samser
Designer & Tester: Rima Khatun
Website: https://rskworld.in
Email: help@rskworld.in, support@rskworld.in, info@rskworld.com
Phone: +91 93305 39277
Company: RSK World
Description: Production-ready prediction pipeline for fraud detection
"""

import pandas as pd
import numpy as np
import joblib
import warnings
warnings.filterwarnings('ignore')

class FraudDetectionPipeline:
    """
    Production-ready fraud detection pipeline
    """
    
    def __init__(self, model_path=None, use_advanced_features=True):
        """
        Initialize the pipeline
        
        Parameters:
        -----------
        model_path : str
            Path to saved model file
        use_advanced_features : bool
            Whether to use advanced feature engineering
        """
        self.model = None
        self.label_encoders = {}
        self.use_advanced_features = use_advanced_features
        self.feature_names = None
        
        if model_path:
            self.load_model(model_path)
    
    def load_model(self, model_path):
        """Load a trained model"""
        print(f"Loading model from {model_path}...")
        self.model = joblib.load(model_path)
        print("Model loaded successfully!")
    
    def _engineer_features(self, df):
        """Engineer features for prediction"""
        from advanced_feature_engineering import engineer_advanced_features
        
        if self.use_advanced_features:
            df = engineer_advanced_features(df)
        
        return df
    
    def _preprocess(self, df):
        """Preprocess input data"""
        df_processed = df.copy()
        
        # Encode categorical variables (same as training)
        categorical_cols = ['merchant_category', 'location', 'device_type', 'user_id']
        
        for col in categorical_cols:
            if col in df_processed.columns:
                if col in self.label_encoders:
                    # Use existing encoder
                    df_processed[col] = self.label_encoders[col].transform(df_processed[col].astype(str))
                else:
                    # Create new encoder (for testing)
                    from sklearn.preprocessing import LabelEncoder
                    le = LabelEncoder()
                    df_processed[col] = le.fit_transform(df_processed[col].astype(str))
                    self.label_encoders[col] = le
        
        # Drop unnecessary columns
        drop_cols = ['transaction_id', 'timestamp', 'is_fraud']
        df_processed = df_processed.drop([col for col in drop_cols if col in df_processed.columns], axis=1)
        
        return df_processed
    
    def predict(self, df):
        """
        Predict fraud for given transactions
        
        Parameters:
        -----------
        df : pd.DataFrame
            Input dataframe with transaction data
        
        Returns:
        --------
        pd.DataFrame
            DataFrame with predictions and probabilities
        """
        if self.model is None:
            raise ValueError("Model not loaded. Please load a model first.")
        
        # Make a copy to avoid modifying original
        df_pred = df.copy()
        
        # Engineer features
        df_pred = self._engineer_features(df_pred)
        
        # Preprocess
        X = self._preprocess(df_pred)
        
        # Ensure feature order matches training
        if self.feature_names is not None:
            X = X.reindex(columns=self.feature_names, fill_value=0)
        
        # Predict
        predictions = self.model.predict(X)
        probabilities = self.model.predict_proba(X)[:, 1]
        
        # Add predictions to dataframe
        result = df.copy()
        result['is_fraud_predicted'] = predictions
        result['fraud_probability'] = probabilities
        result['risk_level'] = pd.cut(probabilities, 
                                      bins=[0, 0.3, 0.7, 1.0],
                                      labels=['Low', 'Medium', 'High'])
        
        return result
    
    def predict_single(self, transaction_dict):
        """
        Predict fraud for a single transaction
        
        Parameters:
        -----------
        transaction_dict : dict
            Dictionary with transaction features
        
        Returns:
        --------
        dict
            Prediction results
        """
        df = pd.DataFrame([transaction_dict])
        result = self.predict(df)
        
        return {
            'is_fraud': int(result['is_fraud_predicted'].iloc[0]),
            'fraud_probability': float(result['fraud_probability'].iloc[0]),
            'risk_level': str(result['risk_level'].iloc[0])
        }
    
    def batch_predict(self, csv_path, output_path=None):
        """
        Batch prediction from CSV file
        
        Parameters:
        -----------
        csv_path : str
            Path to input CSV file
        output_path : str
            Path to save predictions (optional)
        
        Returns:
        --------
        pd.DataFrame
            DataFrame with predictions
        """
        print(f"Loading data from {csv_path}...")
        df = pd.read_csv(csv_path)
        print(f"Loaded {len(df)} transactions")
        
        results = self.predict(df)
        
        if output_path:
            results.to_csv(output_path, index=False)
            print(f"Predictions saved to {output_path}")
        
        return results

def evaluate_predictions(y_true, y_pred, y_pred_proba=None):
    """
    Evaluate prediction results
    
    Parameters:
    -----------
    y_true : array-like
        True labels
    y_pred : array-like
        Predicted labels
    y_pred_proba : array-like
        Prediction probabilities (optional)
    
    Returns:
    --------
    dict
        Evaluation metrics
    """
    from sklearn.metrics import (
        accuracy_score, precision_score, recall_score, f1_score,
        roc_auc_score, confusion_matrix, classification_report
    )
    
    metrics = {
        'accuracy': accuracy_score(y_true, y_pred),
        'precision': precision_score(y_true, y_pred, zero_division=0),
        'recall': recall_score(y_true, y_pred, zero_division=0),
        'f1_score': f1_score(y_true, y_pred, zero_division=0)
    }
    
    if y_pred_proba is not None:
        metrics['roc_auc'] = roc_auc_score(y_true, y_pred_proba)
    
    print("Evaluation Metrics:")
    print(f"Accuracy: {metrics['accuracy']:.4f}")
    print(f"Precision: {metrics['precision']:.4f}")
    print(f"Recall: {metrics['recall']:.4f}")
    print(f"F1-Score: {metrics['f1_score']:.4f}")
    if 'roc_auc' in metrics:
        print(f"ROC-AUC: {metrics['roc_auc']:.4f}")
    
    print("\nConfusion Matrix:")
    print(confusion_matrix(y_true, y_pred))
    
    print("\nClassification Report:")
    print(classification_report(y_true, y_pred, target_names=['Normal', 'Fraud']))
    
    return metrics

def main():
    """Example usage"""
    print("="*50)
    print("FRAUD DETECTION PREDICTION PIPELINE")
    print("Developer: Molla Samser")
    print("Website: https://rskworld.in")
    print("="*50)
    
    # Example usage
    print("\nExample usage:")
    print("""
    # Load pipeline with model
    pipeline = FraudDetectionPipeline(model_path='fraud_detection_model.pkl')
    
    # Predict single transaction
    transaction = {
        'amount': 150.50,
        'merchant_category': 'Online',
        'location': 'US',
        'device_type': 'Mobile',
        'user_age': 35,
        'account_age_days': 365,
        'transaction_count_24h': 2,
        'avg_transaction_amount': 75.25,
        'is_foreign_transaction': 0,
        'is_weekend': 0,
        'hour_of_day': 14
    }
    
    result = pipeline.predict_single(transaction)
    print(result)
    
    # Batch prediction
    results = pipeline.batch_predict('test_transactions.csv', 'predictions.csv')
    """)

if __name__ == "__main__":
    main()

266 lines•8.1 KB
python
index.html
Raw Download
Find: Go to:
<!DOCTYPE html>
<html lang="en">
<head>
    <!--
        Developer: Molla Samser
        Designer & Tester: Rima Khatun
        Website: https://rskworld.in
        Email: help@rskworld.in, support@rskworld.in, info@rskworld.com
        Phone: +91 93305 39277
        Company: RSK World
        Description: Fraud Detection Dataset - Demo Page
    -->
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Fraud Detection Dataset - RSK World</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        /* Developer: Molla Samser | Website: https://rskworld.in */
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            min-height: 100vh;
            padding: 20px 0;
        }
        .container {
            max-width: 1200px;
        }
        .header-card {
            background: white;
            border-radius: 15px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.2);
            padding: 30px;
            margin-bottom: 30px;
        }
        .header-card h1 {
            color: #667eea;
            font-weight: bold;
        }
        .feature-card {
            background: white;
            border-radius: 15px;
            box-shadow: 0 5px 15px rgba(0,0,0,0.1);
            padding: 25px;
            margin-bottom: 20px;
            transition: transform 0.3s ease;
        }
        .feature-card:hover {
            transform: translateY(-5px);
            box-shadow: 0 8px 25px rgba(0,0,0,0.15);
        }
        .feature-card i {
            font-size: 2.5rem;
            color: #667eea;
            margin-bottom: 15px;
        }
        .stats-card {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            border-radius: 15px;
            padding: 25px;
            margin-bottom: 20px;
            text-align: center;
        }
        .stats-card h3 {
            font-size: 2.5rem;
            font-weight: bold;
            margin-bottom: 10px;
        }
        .btn-custom {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            border: none;
            color: white;
            padding: 12px 30px;
            border-radius: 25px;
            font-weight: bold;
            transition: all 0.3s ease;
        }
        .btn-custom:hover {
            transform: scale(1.05);
            box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);
            color: white;
        }
        .tech-badge {
            display: inline-block;
            background: #e9ecef;
            padding: 8px 15px;
            border-radius: 20px;
            margin: 5px;
            font-size: 0.9rem;
        }
        .footer {
            background: white;
            border-radius: 15px;
            padding: 30px;
            margin-top: 30px;
            text-align: center;
        }
        .footer a {
            color: #667eea;
            text-decoration: none;
        }
        .footer a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>
    <div class="container">
        <!-- Header -->
        <div class="header-card">
            <div class="text-center">
                <h1><i class="fas fa-shield-alt text-warning"></i> Fraud Detection Dataset</h1>
                <p class="lead mt-3">Financial fraud detection dataset with transaction records, user behavior patterns, and fraud labels for building anti-fraud ML models.</p>
                <div class="mt-4">
                    <span class="badge bg-primary me-2">Tabular Data</span>
                    <span class="badge bg-warning text-dark">Intermediate</span>
                    <span class="badge bg-success">Machine Learning</span>
                </div>
            </div>
        </div>

        <!-- Statistics -->
        <div class="row">
            <div class="col-md-3">
                <div class="stats-card">
                    <h3>10,000</h3>
                    <p class="mb-0">Transactions</p>
                </div>
            </div>
            <div class="col-md-3">
                <div class="stats-card">
                    <h3>15+</h3>
                    <p class="mb-0">Features</p>
                </div>
            </div>
            <div class="col-md-3">
                <div class="stats-card">
                    <h3>5%</h3>
                    <p class="mb-0">Fraud Ratio</p>
                </div>
            </div>
            <div class="col-md-3">
                <div class="stats-card">
                    <h3>100%</h3>
                    <p class="mb-0">Ready to Use</p>
                </div>
            </div>
        </div>

        <!-- Description -->
        <div class="header-card">
            <h2><i class="fas fa-info-circle text-primary"></i> Description</h2>
            <p class="mt-3">This dataset contains transaction records with features like transaction amount, location, time, merchant information, and fraud labels. Perfect for building fraud detection models, anomaly detection, and financial security applications.</p>
        </div>

        <!-- Features -->
        <div class="row">
            <div class="col-md-6">
                <div class="feature-card">
                    <i class="fas fa-list-alt"></i>
                    <h4>Transaction Records</h4>
                    <p>Comprehensive transaction data with detailed information including amounts, timestamps, and merchant details.</p>
                </div>
            </div>
            <div class="col-md-6">
                <div class="feature-card">
                    <i class="fas fa-user-chart"></i>
                    <h4>User Behavior Features</h4>
                    <p>Features capturing user behavior patterns including transaction frequency, account age, and transaction history.</p>
                </div>
            </div>
            <div class="col-md-6">
                <div class="feature-card">
                    <i class="fas fa-flag"></i>
                    <h4>Fraud Labels</h4>
                    <p>Binary labels (fraud/normal) for supervised learning and model evaluation.</p>
                </div>
            </div>
            <div class="col-md-6">
                <div class="feature-card">
                    <i class="fas fa-balance-scale"></i>
                    <h4>Imbalanced Dataset</h4>
                    <p>Realistic imbalanced dataset (5% fraud) for practicing imbalanced classification techniques.</p>
                </div>
            </div>
            <div class="col-md-12">
                <div class="feature-card">
                    <i class="fas fa-robot"></i>
                    <h4>Ready for Classification Models</h4>
                    <p>Preprocessed and structured data ready for machine learning models including Random Forest, XGBoost, and Neural Networks.</p>
                </div>
            </div>
        </div>

        <!-- Dataset Features -->
        <div class="header-card">
            <h2><i class="fas fa-table text-success"></i> Dataset Features</h2>
            <div class="row mt-4">
                <div class="col-md-6">
                    <ul class="list-group">
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>transaction_id</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>user_id</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>amount</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>merchant_category</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>location</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>timestamp</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>device_type</li>
                    </ul>
                </div>
                <div class="col-md-6">
                    <ul class="list-group">
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>user_age</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>account_age_days</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>transaction_count_24h</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>avg_transaction_amount</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>is_foreign_transaction</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>is_weekend</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>hour_of_day</li>
                        <li class="list-group-item"><i class="fas fa-check-circle text-success me-2"></i>is_fraud (target)</li>
                    </ul>
                </div>
            </div>
        </div>

        <!-- Technologies -->
        <div class="header-card">
            <h2><i class="fas fa-code text-info"></i> Technologies</h2>
            <div class="mt-3">
                <span class="tech-badge"><i class="fas fa-file-csv"></i> CSV</span>
                <span class="tech-badge"><i class="fas fa-file-excel"></i> Excel</span>
                <span class="tech-badge"><i class="fab fa-python"></i> Pandas</span>
                <span class="tech-badge"><i class="fas fa-chart-line"></i> Scikit-learn</span>
                <span class="tech-badge"><i class="fab fa-python"></i> NumPy</span>
                <span class="tech-badge"><i class="fas fa-chart-bar"></i> Matplotlib</span>
                <span class="tech-badge"><i class="fas fa-project-diagram"></i> Jupyter</span>
            </div>
        </div>

        <!-- Download & Usage -->
        <div class="header-card text-center">
            <h2><i class="fas fa-download text-danger"></i> Get Started</h2>
            <p class="mt-3">Download the dataset and start building fraud detection models</p>
            <div class="mt-4">
                <a href="fraud_detection_dataset.csv" class="btn btn-custom me-3" download>
                    <i class="fas fa-download"></i> Download CSV
                </a>
                <a href="README.md" class="btn btn-outline-primary me-3">
                    <i class="fas fa-book"></i> Read Documentation
                </a>
                <a href="fraud_detection_analysis.ipynb" class="btn btn-outline-success">
                    <i class="fas fa-code"></i> View Notebook
                </a>
            </div>
        </div>

        <!-- Footer -->
        <div class="footer">
            <h5>RSK World</h5>
            <p class="mb-2">Free Programming Resources & Source Code</p>
            <p class="mb-2">
                <i class="fas fa-globe me-2"></i>
                <a href="https://rskworld.in" target="_blank">https://rskworld.in</a>
            </p>
            <p class="mb-2">
                <i class="fas fa-envelope me-2"></i>
                <a href="mailto:help@rskworld.in">help@rskworld.in</a> | 
                <a href="mailto:support@rskworld.in">support@rskworld.in</a>
            </p>
            <p class="mb-0">
                <i class="fas fa-phone me-2"></i>
                <a href="tel:+919330539277">+91 93305 39277</a>
            </p>
            <hr class="my-3">
            <p class="text-muted small mb-0">
                Developer: Molla Samser | Designer & Tester: Rima Khatun<br>
                Content used for educational purposes only.
            </p>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

286 lines•12.3 KB
markup
🚀 Support RSK World

Subscribe to our YouTube channel for latest tutorials & updates!



Click subscribe & support our work ❤️

About RSK World

Founded by Molla Samser, with Designer & Tester Rima Khatun, RSK World is your one-stop destination for free programming resources, source code, and development tools.

Founder: Molla Samser
Designer & Tester: Rima Khatun

Development

  • Game Development
  • Web Development
  • Mobile Development
  • AI Development
  • Development Tools

Legal

  • Terms & Conditions
  • Privacy Policy
  • Disclaimer

Contact Info

Nutanhat, Mongolkote
Purba Burdwan, West Bengal
India, 713147

+91 93305 39277

hello@rskworld.in
support@rskworld.in

© 2026 RSK World. All rights reserved.

Content used for educational purposes only. View Disclaimer