import streamlit as st import pandas as pd import numpy as np import pickle import base64 import seaborn as sns import matplotlib.pyplot as plt st.write(""" # Detection Fraud Credit Card Kartu kredit adalah sebuah alat pembayaran menggunakan kartu yang berfungsi sebagai pengganti uang tunai. """) url_dataset = f'Download Dataset CSV File' st.markdown(url_dataset, unsafe_allow_html=True) def user_input_features() : distance_from_home = st.sidebar.slider('distance_from_home', 0.004874, 10632.723672) distance_from_last_transaction = st.sidebar.slider('distance_from_last_transaction', 0.000118, 11851.104565) ratio_to_median_purchase_price = st.sidebar.slider('ratio_to_median_purchase_price', 0.004399, 267.802942) repeat_retailer = st.sidebar.slider('repeat_retailer', 0.0, 1.0) used_chip = st.sidebar.slider('used_chip', 0.0, 1.0) used_pin_number = st.sidebar.slider('used_pin_number ', 0.0, 1.0) online_order = st.sidebar.slider('online_order ', 0.0, 1.0) data = { 'distance_from_home':[distance_from_home], 'distance_from_last_transaction':[distance_from_last_transaction], 'ratio_to_median_purchase_price':[ratio_to_median_purchase_price], 'repeat_retailer':[repeat_retailer], 'used_pin_number':[used_pin_number], 'online_order':[online_order], 'used_chip':[used_chip] } features = pd.DataFrame(data) return features input_df = user_input_features() card_raw = pd.read_csv('card.csv') card_raw.fillna(0, inplace=True) card = card_raw.drop(columns=['fraud']) df = pd.concat([input_df, card],axis=0) df = df[:1] # Selects only the first row (the user input data) df.fillna(0, inplace=True) features = ['distance_from_home', 'distance_from_last_transaction', 'ratio_to_median_purchase_price', 'repeat_retailer', 'used_chip', 'used_pin_number', 'online_order'] df = df[features] st.subheader('User Input features') st.write(df) load_clf = pickle.load(open('card_clf.pkl', 'rb')) detection = load_clf.predict(df) if(detection > 0) : detection = 1 detection_proba = load_clf.predict_proba(df) knee_labels = np.array(['Normal','Penipuan']) st.subheader('Detection') st.write(knee_labels[detection]) st.subheader('Detection Probability') df_prob = pd.DataFrame(data=detection_proba, index=['Probability'], columns=knee_labels) st.write(df_prob)