File size: 5,462 Bytes
f6102e2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
import streamlit as st
import pandas as pd
from fonction import prediction, prediction_embe
from dotenv import load_dotenv
import os
import config

from donnees import data_parfum, data_binaire



model = config.model
st.set_page_config(layout="wide")

st.title('Bienvenue sur AKIA PARFUM !') 

##################################################################################################
# Barre latérale pour les entrées
with st.sidebar:
    st.markdown("<h1>SAISISSEZ VOS INFORMATIONS</h1>", unsafe_allow_html=True)
    
    nombre = st.number_input(label='Nombre de parfums souhaités :', step=1, format='%d')
    nombre = int(nombre)
    
    
    parfums_prefere = st.multiselect(
        "Sélectionnez vos parfums préférés.",
        list(data_binaire.index)
    )
    
    
    details_rechercher = st.text_input("Décrivez le parfum de vos rêves.")
    
    parfums_detestes = st.multiselect(
        "Sélectionnez des parfums que vous n'aimez pas.",
        list(data_binaire.index)
    )
    

    
    if parfums_detestes:
        liste_deteste = list(prediction(parfums_detestes, data_binaire)[0:10].index) 
        liste_deteste.extend(parfums_detestes)
######################################################################################################
# Diviser la page en deux colonnes
col1, col2 = st.columns([1, 4])  

# Dans la colonne (col2), afficher les résultats
with col2:
    st.markdown("<h3>NOS SUGGESTIONS</h3>", unsafe_allow_html=True)
    parfums_suggeres = None
    p = 0  #la variable p sera utiliser dans la suite du code, elle permet de pouvoir noter les parfums apres les recommandation
    
    ####################################################################
    #EVALUATION DES DEUX MODELS ET PREDICTIONS
    
    if parfums_prefere:
        prediction_caracteristique = prediction(parfums_prefere, data_binaire)
        
    if details_rechercher:
        prediction_desciption = prediction_embe(details_rechercher, data_parfum, model)
        
    
       
        
    #################################################################### 
    #ELEMENTS A AFFICHES
    
    #####CAS 1 : Liste de parfums favoris et description du parfum de reve
    if parfums_prefere and details_rechercher:
        data = pd.concat([prediction_caracteristique, prediction_desciption])
        predictions = data.groupby(level=0)['probabilite'].mean()
        predictions = predictions.drop(parfums_prefere)
        
        if parfums_detestes:
            liste_deteste = list(prediction(parfums_detestes, data_binaire)[0:10].index)
            liste_deteste.extend(parfums_detestes)
            predictions = predictions.drop(liste_deteste)
            
        predictions = predictions.sort_values(ascending=False)
        parfums_suggeres = predictions[0:nombre]
        p = 1
        st.write(parfums_suggeres)
       
        
     ##### CAS 2 : description du parfum de reve    
    if not parfums_prefere and details_rechercher:
        if parfums_detestes:
            prediction_desciption = prediction_desciption.drop(liste_deteste)
        parfums_suggeres = prediction_desciption[0:nombre]
        p = 1
        st.write(parfums_suggeres)
        
        
    ##### CAS 3 : Liste de parfums favoris 
    if not details_rechercher and parfums_prefere:
        if parfums_detestes:
            prediction_caracteristique = prediction_caracteristique.drop(liste_deteste)
        parfums_suggeres = prediction_caracteristique[0:nombre]
        p = 1
        st.write(parfums_suggeres)
    if not details_rechercher and not parfums_prefere:
        st.write('Bienvenue ! Veuillez choisir les parfums que vous aimez ou décrire le parfum de vos rêves.')
        
    
    #############################################################################################

### NOTEZ NOS SUGGESTIONS 
liste = []
description_ = ''

with st.sidebar:
    st.markdown("<h1>Notez nos suggestions sur 10</h1>", unsafe_allow_html=True)
    if p == 1:
        form_counter = 0
        form_counter += 1
        with st.form(key=f'rating_form_{form_counter}'):
            parfum = st.selectbox("Choisir un parfum :", list(parfums_suggeres.index))
            note = st.number_input("Entrez une note :", min_value=1, max_value=10)
            nom = st.text_input("Entrer votre nom.")
            if parfum:
                if parfums_prefere :
                    liste = parfums_prefere
                    if not details_rechercher:
                        proba = parfums_suggeres.loc[parfum].values[0]
                        
                if details_rechercher:
                    description_ = details_rechercher
                    if not parfums_prefere:
                        proba = parfums_suggeres.loc[parfum].values[0]
                    
                #proba = parfums_suggeres.loc[parfum].values[0]
                
                if details_rechercher and  parfums_prefere:
                    proba = parfums_suggeres.loc[parfum]
                
            submitted = st.form_submit_button("Enregistrer la note")
            if submitted:
                with open("notes.txt", "a") as file:
                    file.write(f"{nom},{liste},{description_},{parfum},{proba},{note}\n")
                st.success("Note enregistrée avec succès !")
    else:
        st.write('En notant nos recommandations, vous contribuez à améliorer la qualité des suggestions qui vous sont proposées.')