rdemarqui commited on
Commit
7e41bb0
·
1 Parent(s): 293c4e1

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -0
app.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # App v3.0
2
+ import pandas as pd
3
+ import pickle
4
+ import gradio as gr
5
+
6
+ with open(r'database\vect_index.pickle', 'rb') as file:
7
+ vect_index = pickle.load(file)
8
+ with open(r'database\vect_values.pickle', 'rb') as file:
9
+ vect_values = pickle.load(file)
10
+
11
+ df = pd.read_excel('database\perfume_database_cleaned.xlsx')
12
+ brand_options = list(df['brand'].unique())
13
+ perfume_options = list(df['perfume'].unique())
14
+
15
+ def perfume_change(brand):
16
+ names = list(df.query(f"brand=='{brand}'")['perfume'])
17
+ return gr.update(choices=names, value=None)
18
+
19
+ def filter_by_perfume(selected_brand, selected_perfume):
20
+ perfume_index = df.query(f"brand=='{selected_brand}' & perfume=='{selected_perfume}'").index[0]
21
+ df_filter = df.iloc[vect_index[perfume_index], :].reset_index(drop=True)
22
+ df_filter['similarity'] = vect_values[perfume_index]
23
+ df_filter['similarity'] = df_filter['similarity'].map("{:.2%}".format)
24
+ df_filter['notes'] = df_filter['notes'].str.split(',').apply(sorted, 1).str.join(',').str.strip(',')
25
+ df_filter = df_filter[['brand', 'perfume', 'similarity', 'notes']]
26
+ return df_filter
27
+
28
+ with gr.Blocks(theme='freddyaboulton/dracula_revamped') as demo:
29
+ gr.Markdown(
30
+ """
31
+ # Perfume Recommendation
32
+ Select brand and perfume below to find top 5 most similar perfumes based on notes
33
+ """)
34
+
35
+ with gr.Row():
36
+ brand_dropdown = gr.Dropdown(choices=brand_options, value='Hugo Boss', label="Brand")
37
+ perfume_dropdown = gr.Dropdown(choices=perfume_options, value='Boss Soul', label="Perfume Name")
38
+ brand_dropdown.change(fn=perfume_change, inputs=[brand_dropdown], outputs=[perfume_dropdown])
39
+ btn = gr.Button(value="Search", scale=.1)
40
+
41
+ with gr.Row():
42
+ output_df = gr.outputs.Dataframe(type='pandas')
43
+ btn.click(filter_by_perfume, inputs=[brand_dropdown, perfume_dropdown], outputs=[output_df])
44
+
45
+ demo.launch()