gusdelact's picture
Deploy mouse viral classifier app
3a4608b verified
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()