import streamlit as st import numpy as np import pickle import streamlit.components.v1 as components from sklearn.preprocessing import LabelEncoder # Load the pickled model @st.cache_resource def load_model(): with open('online_payment_fraud_detection_randomforest.pkl', 'rb') as f: return pickle.load(f) # Load the LabelEncoder @st.cache_resource def load_label_encoder(): with open('label_encoder.pkl', 'rb') as f: return pickle.load(f) # Function for model prediction def model_prediction(model, features): predicted = str(model.predict(features)[0]) return predicted def transform(le, text): text = le.transform(text) return text[0] def app_design(le): st.subheader("Enter the following values:") step = st.number_input("Step: represents a unit of time where 1 step equals 1 hour", min_value=0) typeup = st.selectbox('Type of online transaction', ('PAYMENT', 'TRANSFER', 'CASH_OUT', 'DEBIT', 'CASH_IN')) typeup = transform(le, [typeup]) amount = st.number_input("The amount of the transaction", min_value=0.0) nameOrig = st.text_input("Transaction ID (any ID)").strip() nameOrig_transformed = transform(le, ['No']) # Dummy fallback for ID field oldbalanceOrg = st.number_input("Balance before the transaction", min_value=0.0) newbalanceOrig = st.number_input("Balance after the transaction", min_value=0.0) nameDest = st.text_input("Recipient ID (any ID)").strip() nameDest_transformed = transform(le, ['No']) # Dummy fallback for ID field oldbalanceDest = st.number_input("Initial balance of recipient before the transaction", min_value=0.0) newbalanceDest = st.number_input("The new balance of recipient after the transaction", min_value=0.0) isFlaggedFraud = st.selectbox('Is this transaction flagged as fraud?', ('Yes', 'No')) isFlaggedFraud = transform(le, [isFlaggedFraud]) # Create a feature list from the user inputs features = np.array([[step, typeup, amount, nameOrig_transformed, oldbalanceOrg, newbalanceOrig, nameDest_transformed, oldbalanceDest, newbalanceDest, isFlaggedFraud]]) # Load the model model = load_model() # Make a prediction when the user clicks the "Predict" button if st.button('Predict Online Payment Fraud'): predicted_value = model_prediction(model, features) if predicted_value == '1': st.success("๐Ÿšจ Online payment fraud detected!") else: st.success("โœ… No online payment fraud detected.") def about_RamDevs(): components.html("""

๐Ÿš€ Unlock Your Easy Safety with RamDevs Community!

๐Ÿ” Seeking the perfect hassle-free safe online transactions? RamDevs Community is your gateway to easier and safer transactions. Explore free expert sessions, customer support, and password transformation tips.

๐Ÿ’ผ We offer an upskill program in CyberSecurity, Password management, Legal Terms and Services, and assist customers in security and safer online transactions at minimal development costs.

๐Ÿ†“ Best of all, everything we offer is completely free! We are dedicated to helping society.

Book free of cost 1:1 mentorship on any topic of your choice โ€” topmate

โœจ We dedicate over 30 minutes to each applicantโ€™s Password selection, Online profile, mock frauds, and upskill program. If youโ€™d like our guidance, check out our services here

๐Ÿ’ก Join us now, and turbocharge your CyberSecurity!

Website YouTube Instagram Medium LinkedIn GitHub

""", height=600) def main(): st.set_page_config(page_title="Online Payment Fraud Detection", page_icon=":chart_with_upwards_trend:") st.title("Welcome to our Online Payment Fraud Detection App! ๐Ÿš€") le = load_label_encoder() app_design(le) st.header("About RamDevs Community") about_RamDevs() if __name__ == '__main__': main()