Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import joblib | |
| import numpy as np | |
| # Load mô hình đã huấn luyện | |
| model = joblib.load("model.pkl") | |
| # Map label -> thông tin loài hoa | |
| class_info = { | |
| 0: { | |
| "name": "Iris-setosa 🌱", | |
| "description": "Iris-setosa là loài nhỏ nhất trong 3 loài, thường có cánh hoa ngắn và màu xanh tím.", | |
| "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Iris_setosa_2.jpg/330px-Iris_setosa_2.jpg" | |
| }, | |
| 1: { | |
| "name": "Iris-versicolor 🌷", | |
| "description": "Iris-versicolor có màu sắc đa dạng và thường được tìm thấy ở vùng đất ngập nước.", | |
| "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/0/03/Verschiedenfarbige_Schwertlilie_%28Iris_versicolor%29-20200603-RM-100257.jpg/330px-Verschiedenfarbige_Schwertlilie_%28Iris_versicolor%29-20200603-RM-100257.jpg" | |
| }, | |
| 2: { | |
| "name": "Iris-virginica 🌸", | |
| "description": "Iris-virginica có kích thước lớn nhất và thường mọc ở bờ sông hoặc đầm lầy.", | |
| "image": "https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/Iris_virginica_2.jpg/250px-Iris_virginica_2.jpg" | |
| } | |
| } | |
| def predict(sepal_length, sepal_width, petal_length, petal_width): | |
| X = np.array([[sepal_length, sepal_width, petal_length, petal_width]]) | |
| prediction = model.predict(X)[0] | |
| info = class_info.get(prediction, {}) | |
| return ( | |
| info.get("name", "Không xác định"), | |
| info.get("description", "Không có mô tả"), | |
| info.get("image", "") | |
| ) | |
| # Giao diện hiện đại dùng Blocks | |
| with gr.Blocks(title="🌸 Dự đoán Loài Hoa Iris") as demo: | |
| gr.Markdown("## 🔍 Nhập thông số để dự đoán loài hoa Iris") | |
| with gr.Row(): | |
| sepal_length = gr.Number(label="Sepal Length (cm)") | |
| sepal_width = gr.Number(label="Sepal Width (cm)") | |
| petal_length = gr.Number(label="Petal Length (cm)") | |
| petal_width = gr.Number(label="Petal Width (cm)") | |
| submit_btn = gr.Button("Dự đoán") | |
| with gr.Column(): | |
| label_output = gr.Text(label="Tên loài") | |
| desc_output = gr.Textbox(label="Thông tin loài", lines=2) | |
| image_output = gr.Image(label="Ảnh minh họa") | |
| submit_btn.click(fn=predict, | |
| inputs=[sepal_length, sepal_width, petal_length, petal_width], | |
| outputs=[label_output, desc_output, image_output]) | |
| # Chạy app | |
| if __name__ == "__main__": | |
| demo.launch() | |