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() | |