Spaces:
Sleeping
Sleeping
File size: 2,302 Bytes
61059fc |
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 |
# -*- coding: utf-8 -*-
"""app.ipynb
Automatically generated by Colab.
Original file is located at
https://colab.research.google.com/drive/1Yh3_kkw-JQ-zekmY27SiXiIr1fiyPKnR
"""
import gradio as gr
import joblib
import numpy as np
import random
# Load trained model
model = joblib.load("model.pkl")
# Encode categorical values (based on LabelEncoder from training)
tran_type_map = {"refund": 1, "purchase": 0}
location_map = {
"San Antonio": 5,
"Dallas": 0,
"New York": 3,
"Philadelphia": 4,
"Phoenix": 2,
"Houston": 1
}
# Prediction function
def predict(trans_date, amount, merchant_id, tran_type, location):
tran_type_encoded = tran_type_map.get(tran_type.lower(), 0)
location_encoded = location_map.get(location, 0)
trans_date_encoded = 1 # Simplified
input_data = [[trans_date_encoded, amount, merchant_id, tran_type_encoded, location_encoded]]
prediction = model.predict(input_data)[0]
# Simulate confidence score (you can replace with real probability if needed)
confidence = round(random.uniform(85.0, 99.9), 2)
if prediction == 1:
return f"π΄ Fraud Detected!\n\nβ οΈ Be Careful!\nπ§ Confidence: {confidence}%"
else:
return f"π’ Not Fraudulent\n\nβ
Transaction seems safe.\nπ§ Confidence: {confidence}%"
# App Interface
demo = gr.Interface(
fn=predict,
inputs=[
gr.Number(label="π Transaction Date (just use 1)", value=1),
gr.Number(label="π° Amount", value=1000),
gr.Number(label="πͺ Merchant ID", value=100),
gr.Radio(["purchase", "refund"], label="π Transaction Type"),
gr.Dropdown(list(location_map.keys()), label="π Location")
],
outputs=gr.Textbox(label="π― Prediction Result"),
title="π¨ Credit Card Fraud Detection System",
description="π³ Detect fraudulent transactions using Logistic Regression. Try different combinations!",
allow_flagging="never",
theme=gr.themes.Soft(primary_hue="red", font="Comic Sans MS"),
examples=[
[1, 5000, 300, "purchase", "New York"],
[1, 25000, 310, "refund", "Houston"],
[1, 399, 111, "purchase", "San Antonio"]
]
)
# Launch the app with a custom footer
demo.launch(
share=False,
favicon_path=None,
show_error=True
) |