File size: 4,060 Bytes
7a82bc6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import streamlit as st
import pandas as pd
import models.model as mod
from menu import get_menu

st.set_page_config(
    layout="centered"
)
get_menu()



st.title("Formulaire")

with st.form("prediction_form", border=False):    
    # info bancaire
    name = st.text_input('Votre nom')
    age = st.number_input('Votre age', min_value=16)
    
    job,education = st.columns(2)
    job_val = job.selectbox('Votre metier', ["admin.","unknown","unemployed","management","housemaid","entrepreneur","student","blue-collar","self-employed","retired","technician","services"])
    education_val = education.selectbox('Votre niveau d\'etude', ["unknown","secondary","primary","tertiary"])
    marital = st.selectbox('Votre status marital', ["married","divorced","single"])
    
    balance = st.number_input('Votre solde annuel moyen (en euro)', min_value=1)
    
    default = st.checkbox('Avez vous un crédit en déficite ?')
    housing = st.checkbox('Avez vous un pret logement ?')
    loan = st.checkbox('Avez vous un pret ?')
    
    #informations contact
    
    contact = st.selectbox('Moyen de contact', ["unknown","telephone","cellular"])
    day,month = st.columns([2,2])
    
    day_val = day.number_input('Dernier jours de contact du mois', min_value=0)
    month_val = month.selectbox('Dernier mois de contact de l\'année', ['jan','fed','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'])
    duration = st.number_input('Durée de la derniere conversation', min_value=0)
    
    #autres infos
    campaign = st.number_input('Nombre de contact effectuer pour cette campagne', min_value=0)
    pdays  = st.number_input('Nombre de jours ecoulé depuis le dernier contact', min_value=0)
    previous  = st.number_input('Nombre de contact effectuer avant cette campagne', min_value=0)
    poutcome = st.selectbox('Resultat de la derniere campagne', ["unknown","other","failure","success"])
    
    
    selected_model = st.selectbox('Choisir le model', ["XGBOOST", "KNN", "SVC LINEAIRE","SVC", "RAMDOM FOREST"])
    

    submitted = st.form_submit_button('Predire le choix', use_container_width=True)
    
    if submitted:
        if name  == "":
          st.error('Le nom est obligatoire !')
        else:
            data_vals = [
                age,
                job_val,
                marital,
                education_val,
                'yes' if default else 'no',
                balance,
                'yes' if housing else 'no',
                'yes' if loan else 'no',
                contact,
                day_val,
                month_val,
                duration,
                campaign,
                pdays,
                previous,
                poutcome
            ]
            index = [
                "age",
                "job",
                "marital",
                "education",
                "default",
                "balance",
                "housing",
                "loan",
                "contact",
                "day",
                "month",
                "duration",
                "campaign",
                "pdays",
                "previous",
                "poutcome"
            ]
            data = pd.DataFrame([data_vals], columns=index)
            data_transform = mod.transform_data(data)
            
            if selected_model == "XGBOOST":
                res = mod.xg_boost_model(data_transform)
            elif selected_model == "KNN":
                res = mod.knn_model(data_transform)
            elif selected_model == "SVC LINEAIRE":
                res = mod.svc_linear_model(data_transform)
            elif selected_model == "SVC":
                res = mod.svc_model(data_transform)
            else:
                res = mod.ramdom_forest_model(data_transform)
            
            msg = f"D'apres notre model {selected_model} le client {name} " 
            if res == 0:
              st.error(f"{msg} ne va pas souscrire à l'offre.")
            else:
                st.success(f"{msg} va pas souscrire à l'offre.")