UD00 · Notebook 1 — Bienvenida al entorno Python para IA¶
Este notebook comprueba que tu entorno de trabajo funciona y hace un primer contacto con las bibliotecas que usaremos durante todo el curso: numpy, pandas, matplotlib, scikit-learn, scikit-fuzzy, nltk, spaCy, torch y experta.
Puedes ejecutarlo en el contenedor de prácticas de la UD00 (taller
T04) o en Google Colab.
Objetivos¶
- Comprobar que el entorno (local o Docker) tiene las bibliotecas del curso.
- Hacer un primer ejemplo con arrays (numpy), tablas (pandas) y gráficas (matplotlib).
- Entrenar un clasificador simple con scikit-learn.
- Guardar el notebook resuelto para consultarlo más adelante: es práctica, no se entrega.
0. Instala las bibliotecas del curso¶
La imagen del taller 4 ya trae numpy, pandas, matplotlib y scikit-learn; esta celda instala el resto. En el contenedor usa el requirements-ia.txt que el compose monta en /home/jovyan, un nivel por encima de work; en Colab, que no lo tiene, instala los paquetes por su nombre.
experta va aparte y con --no-deps: si no, pip bajaría frozendict a la 1.2, que no funciona desde Python 3.10 y en el contenedor rompe el propio conda.
La primera vez tarda unos minutos (torch y spacy pesan); si ya están instaladas, pip lo comprueba en unos segundos. Ejecútala de nuevo tras cada docker compose down. El aviso «you may need to restart the kernel» solo importa si ya habías importado alguna biblioteca antes: en ese caso, Kernel → Restart Kernel.
import os
if os.path.exists("../requirements-ia.txt"): # contenedor del taller 4
%pip install -q -r ../requirements-ia.txt
else: # Colab u otro entorno
%pip install -q scikit-fuzzy nltk spacy torch
%pip install -q --no-deps experta schema frozendict
import sys
print("Python", sys.version.split()[0])
import numpy
import pandas
import matplotlib
import sklearn
import skfuzzy
import nltk
import spacy
import torch
import experta
print("numpy", numpy.__version__)
print("pandas", pandas.__version__)
print("matplotlib", matplotlib.__version__)
print("scikit-learn", sklearn.__version__)
print("scikit-fuzzy", skfuzzy.__version__)
print("nltk", nltk.__version__)
print("spacy", spacy.__version__)
print("torch", torch.__version__)
print("experta", experta.__version__)
1. Arrays con numpy¶
Un array es una estructura eficiente para trabajar con datos numéricos. Es la base de casi todas las librerías de IA.
import numpy as np
temperaturas = np.array([21.0, 22.5, 19.0, 24.0, 23.0])
print("Temperaturas:", temperaturas)
print("Media:", temperaturas.mean())
print("Máximo:", temperaturas.max())
cuadrados = np.arange(1, 6) ** 2
print("Cuadrados:", cuadrados)
2. Tablas con pandas¶
Un DataFrame es una tabla con filas y columnas. Es la forma estándar de manejar datos en IA (veremos la DataFrame en todas las unidades).
import pandas as pd
datos = pd.DataFrame({
"día": ["lun", "mar", "mié", "jue", "vie"],
"temperatura": [21.0, 22.5, 19.0, 24.0, 23.0],
"ventas": [120, 135, 98, 152, 141],
})
datos
print(datos.describe())
print()
print("Ventas medias por día par/impar:")
print(datos.groupby(datos["día"].str.len()).ventas.mean())
3. Gráfica con matplotlib¶
Visualizar los datos es el primer paso de cualquier análisis. La gráfica debe llevar título y etiquetas.
import matplotlib.pyplot as plt
plt.figure(figsize=(6, 3))
plt.plot(datos["día"], datos["temperatura"], marker="o")
plt.title("Temperatura de la semana")
plt.xlabel("Día")
plt.ylabel("Temperatura (°C)")
plt.grid(True)
plt.show()
4. Primer modelo con scikit-learn¶
Entrenamos un clasificador sencillo: dado un punto (x, y), predecir si está por encima o por debajo de la línea y = x. Es un ejemplo de aprendizaje supervisado, que veremos con detalle en la UD02.
import numpy as np
from sklearn.tree import DecisionTreeClassifier
rng = np.random.default_rng(42)
X = rng.uniform(-2, 2, size=(200, 2))
y = (X[:, 1] > X[:, 0]).astype(int)
# Sin limitar la profundidad: el árbol crece hasta memorizar los datos de entrenamiento
modelo = DecisionTreeClassifier(random_state=42)
modelo.fit(X, y)
print("Precisión:", modelo.score(X, y))
print("Predicción para (0.5, 1.0):", modelo.predict([[0.5, 1.0]]))
5. Actividad¶
Responde en celdas Markdown del propio notebook:
- ¿Qué bibliotecas faltaban en tu entorno (si alguna)? ¿Cómo las instalarías?
- Añade a la tabla
datosuna columnahumedadcon valores inventados y pinta la temperatura y la humedad en la misma gráfica con dos ejes. - ¿Qué significa que el modelo anterior tiene precisión 1.0 sobre los mismos datos con los que se entrenó? ¿Es una buena medida del rendimiento? (Pista: en la UD02 hablaremos de sobreajuste.)
No se entrega: es práctica. Guarda el notebook con tus respuestas para consultarlo cuando lo necesites. Si te atascas o tienes dudas con alguna pregunta, consúltalo con el docente.
print("¡Entorno de IA listo!")
Volver al material de la unidad
- Teoría de la UD00 — presentación y curso rápido de Docker
- Ejercicios de la unidad
- Taller 3 — Verificación del entorno y primer contenedor
- Taller 4 — Contenedor de prácticas de IA
Los enlaces son absolutos a propósito: este notebook también se abre en Colab y se descarga, donde las rutas relativas no funcionarían.