Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import joblib | |
| import numpy as np | |
| # Load models | |
| model_flavor = joblib.load("random_forest_model_flavor.pkl") | |
| model_topping = joblib.load("random_forest_model_topping.pkl") | |
| model_drink = joblib.load("random_forest_model_drink.pkl") | |
| # Load encoders | |
| encoder_flavor = joblib.load("encoder_flavor.pkl") | |
| encoder_topping = joblib.load("encoder_topping.pkl") | |
| encoder_drink = joblib.load("encoder_drink.pkl") | |
| input_encoders = joblib.load("input_encoders.pkl") | |
| # Prediction function | |
| def predict_merienda(mood, weather, craving_level, last_meal, budget): | |
| features = [mood, weather, craving_level, last_meal, budget] | |
| encoded = [input_encoders[col].transform([val])[0] for col, val in zip(input_encoders.keys(), features)] | |
| encoded_np = np.array(encoded).reshape(1, -1) | |
| pred_flavor = encoder_flavor.inverse_transform(model_flavor.predict(encoded_np))[0] | |
| pred_topping = encoder_topping.inverse_transform(model_topping.predict(encoded_np))[0] | |
| pred_drink = encoder_drink.inverse_transform(model_drink.predict(encoded_np))[0] | |
| return pred_flavor, pred_topping, pred_drink | |
| # Dropdown options | |
| mood_list = input_encoders["mood"].classes_.tolist() | |
| weather_list = input_encoders["weather"].classes_.tolist() | |
| craving_list = input_encoders["craving_level"].classes_.tolist() | |
| last_meal_list = input_encoders["last_meal"].classes_.tolist() | |
| budget_list = input_encoders["budget"].classes_.tolist() | |
| # Gradio Interface | |
| iface = gr.Interface( | |
| fn=predict_merienda, | |
| inputs=[ | |
| gr.Dropdown(mood_list, label="Mood"), | |
| gr.Dropdown(weather_list, label="Weather"), | |
| gr.Dropdown(craving_list, label="Craving Level"), | |
| gr.Dropdown(last_meal_list, label="Last Meal"), | |
| gr.Dropdown(budget_list, label="Budget"), | |
| ], | |
| outputs=[ | |
| gr.Text(label="Recommended Flavor"), | |
| gr.Text(label="Recommended Topping"), | |
| gr.Text(label="Recommended Drink"), | |
| ], | |
| title=" Merienda Classifier", | |
| description="Predicts the best pancit canton flavor, topping, and drink based on your current situation" | |
| ) | |
| import gradio as gr | |
| # Optional custom CSS for prettier background and fonts | |
| custom_css = """ | |
| body { | |
| background: linear-gradient(to right, #fbc2eb, #a6c1ee); | |
| font-family: 'Poppins', sans-serif; | |
| } | |
| h1 { | |
| text-align: center; | |
| color: #6D214F; | |
| } | |
| """ | |
| # Your function to classify merienda (replace with your actual model code) | |
| def classify_merienda(image): | |
| return "Pancit" # <-- Replace this with your prediction logic | |
| # Build the app | |
| with gr.Blocks(theme=gr.themes.Soft(), css=custom_css) as demo: | |
| gr.Markdown("# 🍽️ Welcome to the Merienda Classifier!") | |
| gr.Markdown("Upload a picture of your favorite **merienda** and let the AI guess what it is!") | |
| with gr.Row(): | |
| with gr.Column(): | |
| input_image = gr.Image(type="pil", label="Upload your Merienda") | |
| classify_button = gr.Button("Classify!") | |
| with gr.Column(): | |
| output_label = gr.Label(label="Prediction") | |
| classify_button.click(classify_merienda, inputs=[input_image], outputs=[output_label]) | |
| iface.launch() |