File size: 2,931 Bytes
f460ec4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import streamlit as st
import pandas as pd
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
from datasets import load_dataset

# Load dataset from Hugging Face
dataset = load_dataset("Nooha/cc_fraud_detection_dataset", split="train")
df = pd.DataFrame(dataset)

# Select relevant features and target variable
X = df[['Amount', 'Time', 'V1', 'V2', 'V3']]
y = df['Class']

# Split dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Train a RandomForestClassifier model
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

y_pred = model.predict(X_test)

# Model Performance Metrics
accuracy = accuracy_score(y_test, y_pred)
class_report_df = pd.DataFrame(classification_report(y_test, y_pred, output_dict=True)).transpose()

# Application Title
st.title('πŸ’³ Credit Card Fraud Detection System')

st.markdown(
    """
    ## πŸ“– Introduction
    Welcome to the **Credit Card Fraud Detection System**! This tool analyzes credit card transactions to detect fraudulent activity using a **Random Forest model**.
    """
)

# Tab Structure
tab1, tab2, tab3 = st.tabs(['πŸ“Š Dataset Preview', 'πŸ“ˆ Model Performance', 'πŸ” Fraud Prediction'])

# Dataset Preview
with tab1:
    st.markdown(
        """
        ## πŸ“Š Dataset Preview
        Below is a sample of the credit card transaction dataset used for fraud detection.
        """
    )
    st.dataframe(df.head())

# Model Performance
with tab2:
    st.markdown(
        """
        ## πŸ“ˆ Model Performance
        - **Accuracy:** Measures overall model performance.
        - **Classification Report:** Precision, recall, and F1-score breakdown.
        """
    )
    
    st.write(f"**πŸ“Œ Model Accuracy:** {accuracy:.2%}")
    
    st.markdown("### πŸ“‹ Classification Report")
    st.dataframe(class_report_df)

# Fraud Prediction
with tab3:
    st.markdown("""
        ## πŸ” Fraud Prediction
        Enter transaction details below to predict if it's fraudulent.
        """)

    amount_input = st.number_input("πŸ’΅ Transaction Amount", min_value=0.0, value=100.0, step=1.0)
    time_input = st.number_input("⏳ Transaction Time", min_value=0.0, value=50000.0, step=1000.0)
    v1_input = st.number_input("πŸ”’ Feature V1", value=0.0, step=0.1)
    v2_input = st.number_input("πŸ”’ Feature V2", value=0.0, step=0.1)
    v3_input = st.number_input("πŸ”’ Feature V3", value=0.0, step=0.1)

    if st.button("πŸ”Ž Predict Fraud"):
        input_data = np.array([[amount_input, time_input, v1_input, v2_input, v3_input]])
        prediction = model.predict(input_data)[0]
        result = "🚨 Fraudulent" if prediction == 1 else "βœ… Legitimate"
        st.success(f"### 🎯 Prediction: **{result}**")