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("

SAISISSEZ VOS INFORMATIONS

", 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("

NOS SUGGESTIONS

", 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("

Notez nos suggestions sur 10

", 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.')