Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import joblib | |
| import numpy as np | |
| import pandas as pd | |
| from huggingface_hub import hf_hub_download | |
| # --- Configuración --- | |
| MODEL_REPO = "gusdelact/mouse-viral-svm" | |
| # Descargar modelo y preprocessor desde HF Hub | |
| model_path = hf_hub_download(MODEL_REPO, "model.joblib") | |
| prep_path = hf_hub_download(MODEL_REPO, "preprocessor.joblib") | |
| model = joblib.load(model_path) | |
| preprocessor = joblib.load(prep_path) | |
| def predict(med_1_ml, med_2_ml): | |
| """Predice si un ratón tiene virus basándose en mediciones de medicamentos.""" | |
| data = pd.DataFrame({"Med_1_mL": [med_1_ml], "Med_2_mL": [med_2_ml]}) | |
| X = preprocessor.transform(data) | |
| prediction = model.predict(X)[0] | |
| probability = model.predict_proba(X)[0] | |
| result = "🦠 Virus PRESENTE" if prediction == 1 else "✅ Sin virus" | |
| confidence = probability[int(prediction)] | |
| return ( | |
| result, | |
| f"Confianza: {confidence:.2%}", | |
| f"P(No virus): {probability[0]:.4f}", | |
| f"P(Virus): {probability[1]:.4f}", | |
| ) | |
| demo = gr.Interface( | |
| fn=predict, | |
| inputs=[ | |
| gr.Slider(1.0, 10.0, value=5.0, step=0.1, label="Med_1_mL", | |
| info="Dosis del medicamento 1 (mL)"), | |
| gr.Slider(1.0, 10.0, value=5.0, step=0.1, label="Med_2_mL", | |
| info="Dosis del medicamento 2 (mL)"), | |
| ], | |
| outputs=[ | |
| gr.Textbox(label="Predicción"), | |
| gr.Textbox(label="Confianza"), | |
| gr.Textbox(label="Probabilidad No Virus"), | |
| gr.Textbox(label="Probabilidad Virus"), | |
| ], | |
| title="🐭 Mouse Viral Study — Clasificador SVM", | |
| description=""" | |
| Clasificador SVM (Support Vector Machine) entrenado para detectar | |
| presencia de virus en ratones basándose en mediciones de dos medicamentos. | |
| **Modelo**: SVC con kernel RBF (C=1, gamma=0.01) | |
| **Métricas**: Accuracy=1.0, F1=1.0, ROC-AUC=1.0 | |
| """, | |
| examples=[ | |
| [2.0, 3.0], # Virus presente | |
| [7.0, 8.0], # Sin virus | |
| [5.0, 5.5], # Zona frontera | |
| ], | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |