import gradio as gr import pickle import pandas as pd from utils import * import matplotlib.pyplot as plt import matplotlib.image as mpimg import sklearn with open('./model.pickle', 'rb') as model_file: pipeline = pickle.load(model_file) def image_score(score): if score == 'a': return mpimg.imread('./images/Nutriscore_A.png') if score == 'b': return mpimg.imread('./images/Nutriscore_B.png') if score == 'c': return mpimg.imread('./images/Nutriscore_C.png') if score == 'd': return mpimg.imread('./images/Nutriscore_D.png') if score == 'e': return mpimg.imread('./images/Nutriscore_E.png') def greet(energy, saturated_fats, sugars, fibres, proteins, salt): """ This is our main predict function """ data_file = pd.DataFrame(columns={ 'energy-kcal_100g', 'saturated-fat_100g', 'sugars_100g', 'fiber_100g', 'proteins_100g', 'salt_100g' }) data_file = data_file.append({ 'energy-kcal_100g':float(energy), 'saturated-fat_100g':float(saturated_fats), 'sugars_100g':float(sugars), 'fiber_100g':float(fibres), 'proteins_100g':float(proteins), 'salt_100g':float(salt) },ignore_index=True) nutrigrade = pipeline.predict(data_file) return image_score(nutrigrade[0]) description = ( "Cette inferface vous donne la possibilité de calculer une estimation "\ "du nutri-score du produit de votre choix. Pour cela, vous devez vous munir des valeurs\n"\ "nutritionnelles du produit, qui se trouvent très souvent sur l'arrière du packaging." ) article = ( "

Aide à l'utilisation

"+ '

'+ '
'+ "

Informations supplémentaires

"+ "

" ) energy_kcal_100g = gr.inputs.Number( label = 'Energy per 100g (in kcal)' ) saturated_fats = gr.inputs.Number( label = 'Saturated fats per 100g (in g)' ) sugars = gr.inputs.Number( label = 'Sugars per 100g (in g)' ) fibres = gr.inputs.Number( label = 'Fibres per 100g (in g)' ) proteins = gr.inputs.Number( label = 'Proteins per 100g (in g)' ) salt = gr.inputs.Number( label = 'Salt per 100g (in g) (Note: Salt = Sodium * 2.5)' ) image = gr.outputs.Image( label = 'Le Nutri-score estimé est:' ) iface = gr.Interface( fn=greet, inputs=[energy_kcal_100g,saturated_fats,sugars,fibres,proteins,salt], outputs=image, article = article, title = 'Estimation de Nutri-score (Beta)', description = description, allow_flagging='never', theme='default' ) iface.launch()