# app.py import gradio as gr import joblib import numpy as np # Cargar modelo = joblib.load("modelo_tic.pkl") le_ciiu = joblib.load("encoder_actividad.pkl") CIIU_OPCIONES = ["6201 - Desarrollo software", "6202 - Consultoría TIC", "6209 - Otros servicios TIC", "6311 - Hosting/Cloud"] def predecir_innovacion(ciiu_str, empleados, exporta, usa_ia, tiene_github): # Extraer código CIIU ciiu = ciiu_str.split(" ")[0] try: ciiu_cod = le_ciiu.transform([ciiu])[0] except: ciiu_cod = 0 # fallback entrada = np.array([[ciiu_cod, empleados, int(exporta), int(usa_ia), int(tiene_github)]]) prob = modelo.predict_proba(entrada)[0][1] if prob >= 0.7: mensaje = "🚀 Alta innovación: probable startup tecnológica o empresa exportadora." elif prob >= 0.4: mensaje = "💡 Innovación moderada: podría beneficiarse de apoyo del clúster TIC." else: mensaje = "🔧 Empresa tradicional: servicios básicos de TI." return f"{prob*100:.1f}%", mensaje with gr.Blocks(title="TIC Bucaramanga") as demo: gr.Markdown("# 🧠 ¿Es innovadora tu empresa TIC en Bucaramanga?") gr.Markdown("Modelo basado en datos del MinTIC, RUES y clústeres locales.") with gr.Row(): ciiu = gr.Dropdown(CIIU_OPCIONES, label="Actividad principal (CIIU)", value=CIIU_OPCIONES[0]) empleados = gr.Slider(1, 100, value=10, label="Número de empleados") with gr.Row(): exporta = gr.Checkbox(label="¿Exporta servicios?") usa_ia = gr.Checkbox(label="¿Usa inteligencia artificial?") tiene_github = gr.Checkbox(label="¿Tiene repositorios públicos (GitHub)?") prob_output = gr.Textbox(label="Probabilidad de ser innovadora") mensaje_output = gr.Textbox(label="Interpretación") btn = gr.Button("Analizar empresa") btn.click( predecir_innovacion, inputs=[ciiu, empleados, exporta, usa_ia, tiene_github], outputs=[prob_output, mensaje_output] ) gr.Markdown(""" > ℹ️ Este modelo ayuda a identificar talento TIC en Bucaramanga. > Datos: MinTIC, RUES, ParqueSoft Santander. > Proyecto de código abierto para el ecosistema local. """) demo.launch()