Creación de interfaces de ML con Streamlit
Descubre cómo crear interfaces de usuario interactivas para tus aplicaciones de ML con Streamlit.
InSkillCoach
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
-
Interfaz de usuario
- Diseño responsive
- Navegación intuitiva
- Feedback al usuario
- Gestión de errores
-
Rendimiento
- Caché de datos
- Optimización de las peticiones
- Carga progresiva
- Gestión de la memoria
-
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
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+
Comentarios
Los comentarios funcionan con GitHub Discussions
Inicia sesión con GitHub para participar en la discusión