Upload Fraud Detection app.py
Browse files- Fraud Detection app.py +12 -2
Fraud Detection app.py
CHANGED
|
@@ -5,8 +5,9 @@ import pandas as pd
|
|
| 5 |
|
| 6 |
rf_model = joblib.load("rf_model.joblib")
|
| 7 |
xgb_model = joblib.load("xgb_model.joblib")
|
| 8 |
-
st.set_page_config(page_title="Fraud Detection System", layout="wide")
|
| 9 |
st.title("Credit Card Fraud Detector")
|
|
|
|
| 10 |
RF_WEIGHT = 0.4
|
| 11 |
XGB_WEIGHT = 0.6
|
| 12 |
|
|
@@ -38,7 +39,16 @@ st.sidebar.header("⚙️ Options")
|
|
| 38 |
mode = st.sidebar.radio("Choose input mode:", ["Single Transaction", "Batch CSV Upload"])
|
| 39 |
if mode == "Single Transaction":
|
| 40 |
st.subheader("Enter Transaction Features")
|
| 41 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
if st.button("Predict"):
|
| 43 |
if feature_input:
|
| 44 |
features = list(map(float, feature_input.split(",")))
|
|
|
|
| 5 |
|
| 6 |
rf_model = joblib.load("rf_model.joblib")
|
| 7 |
xgb_model = joblib.load("xgb_model.joblib")
|
| 8 |
+
st.set_page_config(page_title="Fraud Detection System", page_icon="💳", layout="wide")
|
| 9 |
st.title("Credit Card Fraud Detector")
|
| 10 |
+
st.markdown("Predict whether a transaction is **fraudulent** or **legitimate** in real-time")
|
| 11 |
RF_WEIGHT = 0.4
|
| 12 |
XGB_WEIGHT = 0.6
|
| 13 |
|
|
|
|
| 39 |
mode = st.sidebar.radio("Choose input mode:", ["Single Transaction", "Batch CSV Upload"])
|
| 40 |
if mode == "Single Transaction":
|
| 41 |
st.subheader("Enter Transaction Features")
|
| 42 |
+
time_val = st.number_input("Transaction Time (seconds)", min_value=0, value=1000, step=1)
|
| 43 |
+
amount_val = st.number_input("Transaction Amount", min_value=0.0, value=1000.0, step=1.0)
|
| 44 |
+
st.markdown("### PCA Features (V1–V28)")
|
| 45 |
+
v_features = []
|
| 46 |
+
cols = st.columns(4)
|
| 47 |
+
for i in range(1, 29):
|
| 48 |
+
with cols[(i - 1) % 4]: # distribute across 4 columns
|
| 49 |
+
v = st.number_input(f"V{i}", value=0.0, format="%.4f")
|
| 50 |
+
v_features.append(v)
|
| 51 |
+
features = [time_val] + v_features + [amount_val]
|
| 52 |
if st.button("Predict"):
|
| 53 |
if feature_input:
|
| 54 |
features = list(map(float, feature_input.split(",")))
|