Files changed (1) hide show
  1. app.py +83 -49
app.py CHANGED
@@ -1,50 +1,84 @@
1
- import gradio as gr
2
- import joblib
3
- import numpy as np
4
- # Load models
5
- model_flavor = joblib.load("random_forest_model_flavor.pkl")
6
- model_topping = joblib.load("random_forest_model_topping.pkl")
7
- model_drink = joblib.load("random_forest_model_drink.pkl")
8
-
9
- # Load encoders
10
- encoder_flavor = joblib.load("encoder_flavor.pkl")
11
- encoder_topping = joblib.load("encoder_topping.pkl")
12
- encoder_drink = joblib.load("encoder_drink.pkl")
13
- input_encoders = joblib.load("input_encoders.pkl")
14
-
15
- # Prediction function
16
- def predict_merienda(mood, weather, craving_level, last_meal, budget):
17
- features = [mood, weather, craving_level, last_meal, budget]
18
- encoded = [input_encoders[col].transform([val])[0] for col, val in zip(input_encoders.keys(), features)]
19
- encoded_np = np.array(encoded).reshape(1, -1)
20
- pred_flavor = encoder_flavor.inverse_transform(model_flavor.predict(encoded_np))[0]
21
- pred_topping = encoder_topping.inverse_transform(model_topping.predict(encoded_np))[0]
22
- pred_drink = encoder_drink.inverse_transform(model_drink.predict(encoded_np))[0]
23
- return pred_flavor, pred_topping, pred_drink
24
-
25
- # Dropdown options
26
- mood_list = input_encoders["mood"].classes_.tolist()
27
- weather_list = input_encoders["weather"].classes_.tolist()
28
- craving_list = input_encoders["craving_level"].classes_.tolist()
29
- last_meal_list = input_encoders["last_meal"].classes_.tolist()
30
- budget_list = input_encoders["budget"].classes_.tolist()
31
- # Gradio Interface
32
- iface = gr.Interface(
33
- fn=predict_merienda,
34
- inputs=[
35
- gr.Dropdown(mood_list, label="Mood"),
36
- gr.Dropdown(weather_list, label="Weather"),
37
- gr.Dropdown(craving_list, label="Craving Level"),
38
- gr.Dropdown(last_meal_list, label="Last Meal"),
39
- gr.Dropdown(budget_list, label="Budget"),
40
- ],
41
- outputs=[
42
- gr.Text(label="Recommended Flavor"),
43
- gr.Text(label="Recommended Topping"),
44
- gr.Text(label="Recommended Drink"),
45
- ],
46
- title=" Merienda Classifier",
47
- description="Predicts the best pancit canton flavor, topping, and drink based on your current situation"
48
- )
49
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  iface.launch()
 
1
+ import gradio as gr
2
+ import joblib
3
+ import numpy as np
4
+ # Load models
5
+ model_flavor = joblib.load("random_forest_model_flavor.pkl")
6
+ model_topping = joblib.load("random_forest_model_topping.pkl")
7
+ model_drink = joblib.load("random_forest_model_drink.pkl")
8
+
9
+ # Load encoders
10
+ encoder_flavor = joblib.load("encoder_flavor.pkl")
11
+ encoder_topping = joblib.load("encoder_topping.pkl")
12
+ encoder_drink = joblib.load("encoder_drink.pkl")
13
+ input_encoders = joblib.load("input_encoders.pkl")
14
+
15
+ # Prediction function
16
+ def predict_merienda(mood, weather, craving_level, last_meal, budget):
17
+ features = [mood, weather, craving_level, last_meal, budget]
18
+ encoded = [input_encoders[col].transform([val])[0] for col, val in zip(input_encoders.keys(), features)]
19
+ encoded_np = np.array(encoded).reshape(1, -1)
20
+ pred_flavor = encoder_flavor.inverse_transform(model_flavor.predict(encoded_np))[0]
21
+ pred_topping = encoder_topping.inverse_transform(model_topping.predict(encoded_np))[0]
22
+ pred_drink = encoder_drink.inverse_transform(model_drink.predict(encoded_np))[0]
23
+ return pred_flavor, pred_topping, pred_drink
24
+
25
+ # Dropdown options
26
+ mood_list = input_encoders["mood"].classes_.tolist()
27
+ weather_list = input_encoders["weather"].classes_.tolist()
28
+ craving_list = input_encoders["craving_level"].classes_.tolist()
29
+ last_meal_list = input_encoders["last_meal"].classes_.tolist()
30
+ budget_list = input_encoders["budget"].classes_.tolist()
31
+ # Gradio Interface
32
+ iface = gr.Interface(
33
+ fn=predict_merienda,
34
+ inputs=[
35
+ gr.Dropdown(mood_list, label="Mood"),
36
+ gr.Dropdown(weather_list, label="Weather"),
37
+ gr.Dropdown(craving_list, label="Craving Level"),
38
+ gr.Dropdown(last_meal_list, label="Last Meal"),
39
+ gr.Dropdown(budget_list, label="Budget"),
40
+ ],
41
+ outputs=[
42
+ gr.Text(label="Recommended Flavor"),
43
+ gr.Text(label="Recommended Topping"),
44
+ gr.Text(label="Recommended Drink"),
45
+ ],
46
+ title=" Merienda Classifier",
47
+ description="Predicts the best pancit canton flavor, topping, and drink based on your current situation"
48
+ )
49
+
50
+ import gradio as gr
51
+
52
+ # Optional custom CSS for prettier background and fonts
53
+ custom_css = """
54
+ body {
55
+ background: linear-gradient(to right, #fbc2eb, #a6c1ee);
56
+ font-family: 'Poppins', sans-serif;
57
+ }
58
+ h1 {
59
+ text-align: center;
60
+ color: #6D214F;
61
+ }
62
+ """
63
+
64
+ # Your function to classify merienda (replace with your actual model code)
65
+ def classify_merienda(image):
66
+ return "Pancit" # <-- Replace this with your prediction logic
67
+
68
+ # Build the app
69
+ with gr.Blocks(theme=gr.themes.Soft(), css=custom_css) as demo:
70
+ gr.Markdown("# 🍽️ Welcome to the Merienda Classifier!")
71
+ gr.Markdown("Upload a picture of your favorite **merienda** and let the AI guess what it is!")
72
+
73
+ with gr.Row():
74
+ with gr.Column():
75
+ input_image = gr.Image(type="pil", label="Upload your Merienda")
76
+ classify_button = gr.Button("Classify!")
77
+ with gr.Column():
78
+ output_label = gr.Label(label="Prediction")
79
+
80
+ classify_button.click(classify_merienda, inputs=[input_image], outputs=[output_label])
81
+
82
+
83
+
84
  iface.launch()