Rahmat's picture
Update app.py
9e9b48d
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
import symbol
st.write("""
# Detection Fraud Credit Card
Kartu kredit adalah sebuah alat pembayaran menggunakan kartu yang berfungsi sebagai pengganti uang tunai.
""")
url_dataset = f'<a href="card.csv">Download Dataset CSV File</a>'
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)