0%
Creación de interfaces de ML con Streamlit

Creación de interfaces de ML con Streamlit

Descubre cómo crear interfaces de usuario interactivas para tus aplicaciones de ML con Streamlit.

I

InSkillCoach

· min

Creación de interfaces de ML con Streamlit

Descubre cómo crear interfaces de usuario interactivas para tus aplicaciones de ML con Streamlit.

Configuración básica

1. Instalación

pip install streamlit pandas numpy plotly scikit-learn

2. Estructura básica

# app.py
import streamlit as st
import pandas as pd
import plotly.express as px

# Configuración de la página
st.set_page_config(
    page_title="Application ML",
    page_icon="🤖",
    layout="wide"
)

# Título y descripción
st.title("Application ML Interactive")
st.markdown("""
    Cette application permet de :
    - Visualiser des données
    - Faire des prédictions
    - Analyser les résultats
""")

Componentes de interfaz

1. Widgets básicos

# Widgets de entrada
text_input = st.text_input("Texte", "Valeur par défaut")
number_input = st.number_input("Nombre", min_value=0, max_value=100)
selectbox = st.selectbox("Sélection", ["Option 1", "Option 2", "Option 3"])
multiselect = st.multiselect("Sélection multiple", ["A", "B", "C"])

# Botones y acciones
if st.button("Exécuter"):
    st.write("Action exécutée!")

# Casillas de verificación
if st.checkbox("Afficher les détails"):
    st.write("Détails supplémentaires...")

2. Visualización de datos

# Creación de un gráfico
def create_chart(data):
    fig = px.line(data, x='date', y='value')
    st.plotly_chart(fig, use_container_width=True)

# Visualización de tablas
def display_table(data):
    st.dataframe(data)
    st.table(data)

# Métricas
col1, col2, col3 = st.columns(3)
with col1:
    st.metric("Précision", "95%")
with col2:
    st.metric("Recall", "92%")
with col3:
    st.metric("F1-Score", "93%")

Funcionalidades avanzadas

1. Gestión de archivos

# Subida de archivos
uploaded_file = st.file_uploader("Choisir un fichier", type=['csv', 'xlsx'])

if uploaded_file is not None:
    if uploaded_file.type == "text/csv":
        data = pd.read_csv(uploaded_file)
    else:
        data = pd.read_excel(uploaded_file)
    st.write(data)

2. Barra lateral y navegación

# Configuración de la barra lateral
with st.sidebar:
    st.title("Configuration")
    model_type = st.selectbox(
        "Type de modèle",
        ["Classification", "Régression", "Clustering"]
    )
    
    parameters = {
        "learning_rate": st.slider("Learning Rate", 0.01, 1.0, 0.1),
        "epochs": st.number_input("Époques", 1, 100, 10),
        "batch_size": st.selectbox("Batch Size", [16, 32, 64, 128])
    }

3. Caché y rendimiento

@st.cache_data
def load_data():
    return pd.read_csv("data.csv")

@st.cache_resource
def load_model():
    return joblib.load("model.pkl")

# Uso
data = load_data()
model = load_model()

Integración con el backend

1. Llamadas a la API

import requests

def call_api(data):
    response = requests.post(
        "http://localhost:8000/predict",
        json=data
    )
    return response.json()

# Interfaz de predicción
def prediction_interface():
    st.subheader("Faire une prédiction")
    
    # Formulario de entrada
    with st.form("prediction_form"):
        features = {}
        for feature in ["age", "income", "education"]:
            features[feature] = st.number_input(feature)
        
        submitted = st.form_submit_button("Prédire")
        
        if submitted:
            result = call_api(features)
            st.write("Résultat:", result)

2. Gestión de errores

def safe_api_call(func):
    def wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except requests.exceptions.RequestException as e:
            st.error(f"Erreur de connexion: {str(e)}")
            return None
    return wrapper

@safe_api_call
def get_prediction(data):
    return requests.post("http://localhost:8000/predict", json=data).json()

Buenas prácticas

  1. Interfaz de usuario

    • Diseño responsive
    • Navegación intuitiva
    • Feedback al usuario
    • Gestión de errores
  2. Rendimiento

    • Caché de datos
    • Optimización de las peticiones
    • Carga progresiva
    • Gestión de la memoria
  3. Seguridad

    • Validación de las entradas
    • Protección de los datos
    • Gestión de las sesiones
    • Logging

Conclusión

Puntos clave que debes recordar:

  • Interfaz interactiva
  • Visualización eficaz
  • Rendimiento optimizado
  • Integración con el backend

Recomendaciones:

  • Seguir las buenas prácticas
  • Optimizar el rendimiento
  • Probar la interfaz
  • Documentar el código
  • Formarse en Streamlit
InSkillCoach

Acerca de InSkillCoach

Experto en formación y tecnologías

Coach especializado en tecnologías avanzadas e IA, impulsado por GNeurone Inc.

Certificaciones:

  • AWS Certified Solutions Architect – Professional
  • Certificaciones de Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.2k
137

Comentarios

Los comentarios funcionan con GitHub Discussions

Inicia sesión con GitHub para participar en la discusión

¡Enlace copiado!