Credit_Prediction / deployment.py
naufalbudianto28's picture
Update deployment.py
d46a0a6 verified
import streamlit as st
import pandas as pd
import pickle
with open ('best_model_lr.pkl', 'rb') as file_1:
model_lr = pickle.load(file_1)
with open ('best_model_svm.pkl', 'rb') as file_2:
model_svm = pickle.load(file_2)
with open ('best_model_knn.pkl', 'rb') as file_3:
model_knn = pickle.load(file_3)
def predict_next_payment(model, input_data):
prediction = model.predict(input_data)
return prediction
def main():
st.title('Payment Model Predictor')
input_fields = [
('Age', st.slider('Age', min_value=18, max_value=70)),
('Sex', st.selectbox('Sex', [1, 2])),
('Limit Balance', st.number_input('Limit Balance', min_value=10000, max_value=1000000, value=10000)),
('Education Level', st.selectbox('Education Level', [1, 2, 3, 4, 5, 6])),
('Marital Status', st.selectbox('Marital Status', [0, 1, 2, 3])),
('Pay 1', st.selectbox('Pay 1', [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8])),
('Pay 2', st.selectbox('Pay 2', [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8])),
('Pay 3', st.selectbox('Pay 3', [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8])),
('Pay 4', st.selectbox('Pay 4', [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8])),
('Pay 5', st.selectbox('Pay 5', [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8])),
('Pay 6', st.selectbox('Pay 6', [-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8])),
('Bill 1', st.number_input('Bill 1', min_value=-100000, max_value=800000, value=10000)),
('Bill 2', st.number_input('Bill 2', min_value=-100000, max_value=800000, value=10000)),
('Bill 3', st.number_input('Bill 3', min_value=-100000, max_value=800000, value=10000)),
('Bill 4', st.number_input('Bill 4', min_value=-100000, max_value=800000, value=10000)),
('Bill 5', st.number_input('Bill 5', min_value=-100000, max_value=800000, value=10000)),
('Bill 6', st.number_input('Bill 6', min_value=-100000, max_value=800000, value=10000)),
('Pay Amount 1', st.number_input('Pay Amount 1', min_value=0, max_value=2000000, value=10000)),
('Pay Amount 2', st.number_input('Pay Amount 2', min_value=0, max_value=2000000, value=10000)),
('Pay Amount 3', st.number_input('Pay Amount 3', min_value=0, max_value=2000000, value=10000)),
('Pay Amount 4', st.number_input('Pay Amount 4', min_value=0, max_value=2000000, value=10000)),
('Pay Amount 5', st.number_input('Pay Amount 5', min_value=0, max_value=2000000, value=10000)),
('Pay Amount 6', st.number_input('Pay Amount 6', min_value=0, max_value=2000000, value=10000)),
]
# Pemilihan model dengan dropdown.
model_choice = st.selectbox('Select Model', ('Logistic Regression', 'Support Vector Machine', 'K-Nearest Neighbors'))
prediction = None
# Tombol memilih metode prediksi.
if st.button('Predict'):
input_data_values = [field[1] for field in input_fields]
input_data_array = [input_data_values]
if model_choice == 'Logistic Regression':
prediction = predict_next_payment(model_lr, input_data_array)
elif model_choice == 'Support Vector Machine':
prediction = predict_next_payment(model_svm, input_data_array)
elif model_choice == 'K-Nearest Neighbors':
prediction = predict_next_payment(model_knn, input_data_array)
if prediction is not None:
columns = [field[0] for field in input_fields] + ['Prediction']
data_values = input_data_values + [prediction[0]]
data = [data_values]
input_data_df = pd.DataFrame(data, columns=columns)
st.subheader('Prediction Results')
st.dataframe(input_data_df)
if __name__ == '__main__':
main()