| | import gradio as gr |
| | import numpy as np |
| | import joblib |
| |
|
| | |
| | |
| | |
| | from pathlib import Path |
| |
|
| | MODEL_PATH = Path(__file__).parent / "model.joblib" |
| |
|
| | def load_model(): |
| | return joblib.load(MODEL_PATH) |
| |
|
| | model = load_model() |
| |
|
| | |
| | |
| | |
| | def predict_ev(year, make, model_code, ev_type, cafv, utility): |
| | X = np.array([[year, make, model_code, ev_type, cafv, utility]]) |
| | prediction = model.predict(X) |
| | return f"🔍 Electric Range dự đoán: {prediction[0]:.2f} km" |
| |
|
| | |
| | |
| | |
| | with gr.Blocks(title="EV Performance Prediction") as demo: |
| | gr.Markdown( |
| | """ |
| | # 🔋 Electric Vehicle Performance Prediction |
| | **Dự báo hiệu suất kỹ thuật xe điện (Electric Range)** |
| | --- |
| | """ |
| | ) |
| |
|
| | gr.Markdown("### 📥 Nhập thông tin xe") |
| |
|
| | with gr.Row(): |
| | year = gr.Number(label="Model Year", value=2020) |
| | make = gr.Number(label="Make (encoded)", value=10) |
| | model_code = gr.Number(label="Model (encoded)", value=20) |
| |
|
| | with gr.Row(): |
| | ev_type = gr.Number(label="EV Type (encoded)", value=1) |
| | cafv = gr.Number(label="CAFV Eligibility (encoded)", value=0) |
| | utility = gr.Number(label="Electric Utility (encoded)", value=60) |
| |
|
| | predict_btn = gr.Button("🚀 Dự báo hiệu suất") |
| | output = gr.Textbox(label="Kết quả dự báo") |
| |
|
| | predict_btn.click( |
| | fn=predict_ev, |
| | inputs=[year, make, model_code, ev_type, cafv, utility], |
| | outputs=output |
| | ) |
| |
|
| | gr.Markdown( |
| | """ |
| | --- |
| | *Student Research Project – Academic Year 2024–2025* |
| | """ |
| | ) |
| |
|
| | demo.launch() |
| |
|