File size: 3,688 Bytes
75570c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1064dba
 
 
098b147
1064dba
 
098b147
 
 
 
 
1064dba
098b147
1064dba
 
098b147
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1064dba
098b147
1064dba
 
098b147
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75570c3
 
 
 
 
 
 
1064dba
 
 
 
 
75570c3
 
 
 
 
 
 
 
 
 
 
 
 
 
1064dba
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import streamlit as st
import pickle
import pandas as pd

# Load the saved model
@st.cache_resource  # Cache the model loading to avoid reloading on each run
def load_model():
    try:
        model = pickle.load(open('model.pkl', 'rb'))
        return model
    except Exception as e:
        st.error(f"Error loading model: {e}")
        return None

model = load_model()

# Title of the app
st.title("Fraud Detection API")
st.markdown("Welcome to the Fraud Detection API! Please enter the transaction details below:")

# Tabs for input sections
tab1, tab2, tab3 = st.tabs(["Basic Info", "Features (V1 - V14)", "Features (V15 - V28)"])

# Horizontal layout for Basic Info
with tab1:
    st.header("Basic Information")
    col1, col2 = st.columns(2)
    with col1:
        time = st.number_input("Time", min_value=0.0, step=0.1)
    with col2:
        amount = st.number_input("Amount", min_value=0.0, step=0.1)

# Horizontal layout for Features V1 - V14
with tab2:
    st.header("Features (V1 - V14)")
    cols = st.columns(7)
    with cols[0]:
        v1 = st.number_input("V1", step=0.01)
        v2 = st.number_input("V2", step=0.01)
    with cols[1]:
        v3 = st.number_input("V3", step=0.01)
        v4 = st.number_input("V4", step=0.01)
    with cols[2]:
        v5 = st.number_input("V5", step=0.01)
        v6 = st.number_input("V6", step=0.01)
    with cols[3]:
        v7 = st.number_input("V7", step=0.01)
        v8 = st.number_input("V8", step=0.01)
    with cols[4]:
        v9 = st.number_input("V9", step=0.01)
        v10 = st.number_input("V10", step=0.01)
    with cols[5]:
        v11 = st.number_input("V11", step=0.01)
        v12 = st.number_input("V12", step=0.01)
    with cols[6]:
        v13 = st.number_input("V13", step=0.01)
        v14 = st.number_input("V14", step=0.01)

# Horizontal layout for Features V15 - V28
with tab3:
    st.header("Features (V15 - V28)")
    cols = st.columns(7)
    with cols[0]:
        v15 = st.number_input("V15", step=0.01)
        v16 = st.number_input("V16", step=0.01)
    with cols[1]:
        v17 = st.number_input("V17", step=0.01)
        v18 = st.number_input("V18", step=0.01)
    with cols[2]:
        v19 = st.number_input("V19", step=0.01)
        v20 = st.number_input("V20", step=0.01)
    with cols[3]:
        v21 = st.number_input("V21", step=0.01)
        v22 = st.number_input("V22", step=0.01)
    with cols[4]:
        v23 = st.number_input("V23", step=0.01)
        v24 = st.number_input("V24", step=0.01)
    with cols[5]:
        v25 = st.number_input("V25", step=0.01)
        v26 = st.number_input("V26", step=0.01)
    with cols[6]:
        v27 = st.number_input("V27", step=0.01)
        v28 = st.number_input("V28", step=0.01)

# Button to make predictions
if st.button("Predict"):
    if model:
        # Create a DataFrame from the input data
        transaction_data = pd.DataFrame({
            'Time': [time],
            'V1': [v1], 'V2': [v2], 'V3': [v3], 'V4': [v4], 'V5': [v5], 'V6': [v6],
            'V7': [v7], 'V8': [v8], 'V9': [v9], 'V10': [v10], 'V11': [v11], 'V12': [v12],
            'V13': [v13], 'V14': [v14], 'V15': [v15], 'V16': [v16], 'V17': [v17], 'V18': [v18],
            'V19': [v19], 'V20': [v20], 'V21': [v21], 'V22': [v22], 'V23': [v23], 'V24': [v24],
            'V25': [v25], 'V26': [v26], 'V27': [v27], 'V28': [v28], 'Amount': [amount]
        })

        # Perform prediction
        prediction = model.predict(transaction_data)

        # Display results
        if prediction[0] == 0:
            st.success("✅ Acceptable transaction")
        else:
            st.error("🚨 Fraudulent transaction")
    else:
        st.error("Model not loaded.")