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