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)