Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import joblib | |
def app(): | |
st.title('Fraud Prediction') | |
st.header("Transaction Data Input") | |
st.write("Choose to upload a CSV file or manually input transaction data.") | |
# Load pre-trained model | |
with open('model.pkl', 'rb') as file_1: | |
model = joblib.load(file_1) | |
# Option to choose upload or manual input | |
option = st.radio("Select input method:", ("Upload CSV", "Manual Input")) | |
if option == "Upload CSV": | |
# Option to upload a CSV file | |
file_upload = st.file_uploader("Upload CSV", type=["csv"]) | |
if file_upload is not None: | |
data = pd.read_csv(file_upload) | |
st.write("Uploaded Data Preview:") | |
st.write(data.head()) | |
if st.button("Submit CSV"): | |
# Predict using the uploaded CSV data | |
predictions = model.predict(data) | |
data['prediction'] = predictions | |
data['prediction'] = data['prediction'].map({1: 'Fraud Transactions', 0: 'Not Fraud Transactions'}) | |
st.write("Predictions:") | |
st.write(data[['type','nameOrig', 'nameDest', 'prediction']]) | |
elif option == "Manual Input": | |
st.write("Manually input data:") | |
# Manual input of data | |
step = st.number_input("Step", min_value=0) | |
type = st.selectbox("Type", ["TRANSFER", "PAYMENT", "DEBIT", "CASH_OUT", "CASH_IN"]) | |
amount = st.number_input("Amount", min_value=0.0) | |
nameOrig = st.text_input("Origin Account Name") | |
oldbalanceOrg = st.number_input("Old Balance (Origin)", min_value=0.0) | |
newbalanceOrig = st.number_input("New Balance (Origin)", min_value=0.0) | |
nameDest = st.text_input("Destination Account Name") | |
oldbalanceDest = st.number_input("Old Balance (Destination)", min_value=0.0) | |
newbalanceDest = st.number_input("New Balance (Destination)", min_value=0.0) | |
isFlaggedFraud = st.selectbox("Is Flagged Fraud?", [0, 1]) | |
if st.button("Submit"): | |
# Create a DataFrame from manual input | |
manual_data = pd.DataFrame({ | |
"step": [step], | |
"type": [type], | |
"amount": [amount], | |
"nameOrig": [nameOrig], | |
"oldbalanceOrg": [oldbalanceOrg], | |
"newbalanceOrig": [newbalanceOrig], | |
"nameDest": [nameDest], | |
"oldbalanceDest": [oldbalanceDest], | |
"newbalanceDest": [newbalanceDest], | |
"isFlaggedFraud": [isFlaggedFraud] | |
}) | |
st.write("Manual Input Data:") | |
st.write(manual_data) | |
# Predict using the manually input data | |
manual_predictions = model.predict(manual_data) | |
manual_data['prediction'] = manual_predictions | |
manual_data['prediction'] = manual_data['prediction'].map({1: 'Fraud Transactions', 0: 'Not Fraud Transactions'}) | |
st.write("Predictions:") | |
st.write(manual_data[['type','nameOrig', 'nameDest', 'prediction']]) | |
if __name__ == "__main__": | |
app() |