|
|
import streamlit as st |
|
|
import pandas as pd |
|
|
import joblib |
|
|
|
|
|
st.header('FTDS Model Deployment') |
|
|
|
|
|
st.write(""" |
|
|
Created by Maria Melisa Gunawan |
|
|
|
|
|
Use the sidebar to select input features. |
|
|
""") |
|
|
|
|
|
@st.cache |
|
|
def fetch_data(): |
|
|
df = pd.read_csv('P1G5_Set_1_Melisa.csv') |
|
|
return df |
|
|
|
|
|
df = fetch_data() |
|
|
st.write(df) |
|
|
|
|
|
st.sidebar.header('User Input Features') |
|
|
|
|
|
|
|
|
def user_input(): |
|
|
pay_0 = st.sidebar.number_input('Payment Status in September (pay_0)', value=80000) |
|
|
pay_2 = st.sidebar.number_input('Payment Status in August (pay_2)', value=20000) |
|
|
pay_3 = st.sidebar.number_input('Payment Status in July (pay_3)', value=3000) |
|
|
pay_4 = st.sidebar.number_input('Payment Status in June (pay_4)', value=45000) |
|
|
pay_5 = st.sidebar.number_input('Payment Status in May (pay_5)', value=500) |
|
|
pay_6 = st.sidebar.number_input('Payment Status in April (pay_6)', value=2500) |
|
|
limit_balance = st.sidebar.number_input('Credit Limit (limit_balance)', value=90000) |
|
|
default_payment_next_month = st.sidebar.selectbox('Default Payment Next Month', ['No', 'Yes']) |
|
|
|
|
|
|
|
|
default_payment_next_month = 1 if default_payment_next_month == 'Yes' else 0 |
|
|
|
|
|
data = { |
|
|
'pay_0': pay_0, |
|
|
'pay_2': pay_2, |
|
|
'pay_3': pay_3, |
|
|
'pay_4': pay_4, |
|
|
'pay_5': pay_5, |
|
|
'pay_6': pay_6, |
|
|
'limit_balance': limit_balance, |
|
|
'default_payment_next_month': default_payment_next_month |
|
|
} |
|
|
features = pd.DataFrame(data, index=[0]) |
|
|
return features |
|
|
|
|
|
|
|
|
load_model = joblib.load("credit_card_default_model.pkl") |
|
|
|
|
|
|
|
|
def main(): |
|
|
st.title('Default Payment Next Month') |
|
|
|
|
|
|
|
|
input_features = user_input() |
|
|
|
|
|
|
|
|
st.subheader('User Input') |
|
|
st.write(input_features) |
|
|
|
|
|
|
|
|
prediction = load_model.predict(input_features) |
|
|
|
|
|
if prediction == 1: |
|
|
prediction = 'Default' |
|
|
else: |
|
|
prediction = 'Not Default' |
|
|
|
|
|
|
|
|
st.subheader('Prediction') |
|
|
st.write(f'Based on user input, the model predicts: {prediction}') |
|
|
|
|
|
if __name__ == '__main__': |
|
|
main() |
|
|
|