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()