import streamlit as st import pandas as pd import joblib import datetime def run(): # Tampilan judul halaman st.markdown("

Welcome to the Fraud Transaction Prediction Model

", unsafe_allow_html=True) st.markdown("========================================================================================") st.title("Input Data Transaksi") def user_input(): col1, col2 = st.columns(2) transaction_id = col1.number_input("Transaction ID", value=0) customer_id = col2.number_input("Customer ID", value=0) terminal_id = col1.number_input("Terminal ID", value=0) tx_amount = col2.number_input("Total Transaction", value=0.0) selected_hour = st.slider("Select Hour", 0, 23, 0) selected_minute = st.slider("Select Minute", 0, 59, 0) selected_second = st.slider("Select Second", 0, 59, 0) selected_date = st.date_input("Select Transaction Date", datetime.date.today()) reference_date = datetime.datetime(2023, 1, 1, 0, 0, 0) selected_datetime = datetime.datetime.combine(selected_date, datetime.time(selected_hour, selected_minute, selected_second)) tx_time = selected_datetime - reference_date tx_time_seconds = int(tx_time.total_seconds()) tx_time_days = tx_time.days data = { 'TRANSACTION_ID': transaction_id, 'CUSTOMER_ID' : customer_id, 'TERMINAL_ID' : terminal_id, 'TX_AMOUNT': tx_amount, 'TX_TIME_SECONDS': tx_time_seconds, 'TX_TIME_DAYS': tx_time_days } features = pd.DataFrame(data, index=[0]) return features # Menjalankan fungsi input pengguna input = user_input() # Menampilkan hasil input pengguna dalam bentuk tabel st.markdown("

User Input Result

", unsafe_allow_html=True) st.table(input) # Memuat model yang telah disimpan sebelumnya load_model = joblib.load("my_model.pkl") # Tombol untuk memprediksi if st.button("Predict", help='Click me!'): # Melakukan prediksi menggunakan model prediction = load_model.predict(input) # Menampilkan hasil prediksi if prediction == 1: prediction = 'Fraud Transaction' else: prediction = 'Normal Transaction' st.markdown("

Berdasarkan informasi yang diberikan oleh pengguna, model Fraud Transaction memprediksi:

", unsafe_allow_html=True) st.markdown(f"

{prediction}

", unsafe_allow_html=True) # Menampilkan hasil tambahan jika input termasuk dalam salah satu jenis fraud if prediction != "Normal Transaction": st.markdown("

Transaksi ini termasuk dalam kategori mencurigakan. Harap waspada!

", unsafe_allow_html=True)