Spaces:
Runtime error
Runtime error
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.') | |