File size: 3,708 Bytes
1598b9a
 
 
 
 
2d345a6
4166a8b
 
2d345a6
4166a8b
 
2d345a6
4166a8b
 
e64f6ae
1598b9a
 
 
 
 
e64f6ae
1598b9a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d46a0a6
1598b9a
d46a0a6
1598b9a
d46a0a6
1598b9a
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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()