milestone2 / prediction.py
naufalbudianto28's picture
Update prediction.py
40abe84 verified
raw
history blame contribute delete
No virus
3.02 kB
import streamlit as st
import pandas as pd
import pickle
# Load Best Model
with open ('best_model_xgb.pkl', 'rb') as xgb_file:
model_xgb = pickle.load(xgb_file)
def run():
st.title('Klasifikasi XGBoost pada Telemarketing Deposito')
with st.form('telemarketing_deposit'):
st.write('### Masukkan Data Klien')
# Job
job_options = ['bluecollar', 'management', 'technician', 'admin', 'services', 'retired', 'self-employed', 'entrepreneur', 'unemployed', 'housemaid', 'student']
job = st.selectbox('Pekerjaan', job_options)
# Marital status
marital_status_options = ['single', 'divorced', 'married']
marital_status = st.radio('Status Pernikahan', marital_status_options)
# Education
education_options = ['primary', 'secondary', 'tertiary']
education = st.radio('Pendidikan', education_options)
# Balance
balance = st.number_input('Saldo Rata-rata (€)', min_value=0)
# Housing loan
housing_loan_options = ['yes', 'no']
housing_loan = st.checkbox('Punya Pinjaman Rumah?', housing_loan_options)
# Personal loan
personal_loan_options = ['yes', 'no']
personal_loan = st.checkbox('Punya Pinjaman Pribadi?', personal_loan_options)
# Contact method
contact_options = ['cellular', 'telephone', 'unknown']
contact = st.selectbox('Metode Kontak', contact_options)
# Duration
duration = st.slider('Durasi Kontak Terakhir (detik)', 0, 3600, 1800)
# Campaign
campaign = st.slider('Jumlah Upaya Kontak Selama Campaign', 1, 30, 10)
# Pdays
pdays = st.slider('Jumlah Hari Terakhir Dihubungi (Jika -1, belum pernah)', -1, 20, 10)
# Previous
previous = st.slider('Jumlah Upaya Kontak Sebelum Campaign', 0, 30, 5)
# Poutcome
poutcome_options = ['success', 'failure', 'unknown', 'other']
poutcome = st.selectbox('Hasil Campaign Sebelumnya', poutcome_options)
submit_button = st.form_submit_button('Prediksi')
housing_loan = 'yes' if housing_loan else 'no'
personal_loan = 'yes' if personal_loan else 'no'
input_data = pd.DataFrame({
'job': [job],
'marital': [marital_status],
'education': [education],
'balance': [balance],
'housing': [housing_loan],
'loan': [personal_loan],
'contact': [contact],
'duration': [duration],
'campaign': [campaign],
'pdays': [pdays],
'previous': [previous],
'poutcome': [poutcome]
})
st.dataframe(input_data)
if submit_button:
num_features = input_data[['balance', 'duration', 'campaign', 'pdays', 'previous']]
cat_features = input_data[['job', 'marital', 'contact', 'poutcome', 'housing', 'loan']]
cat_ordinal_feature = input_data[['education']]
y_pred = model_xgb.predict(input_data)
st.write('Klasifikasi: ', y_pred)
if __name__ == '__main__':
run()