Entorno, sintaxis y tipos de datos
Python es un lenguaje interpretado, de tipado dinámico y con una sintaxis legible. Para ML no necesitas dominarlo entero: necesitas escribir funciones claras, manipular colecciones y usar bien las bibliotecas.
¿Dónde ejecutar el código?
| Entorno | Ventajas | Cuándo usarlo |
|---|---|---|
| Google Colab | Gratis, GPU/TPU, cero instalación | Aprender, prototipos, notebooks compartidos |
| Jupyter Notebook | Local, flexible, ideal para EDA | Análisis exploratorio y experimentos |
| VS Code + Python | Depuración, refactor, Git | Proyectos y código de producción |
| Scripts .py | Reproducibles, versionables | Pipelines, entrenamiento, APIs |
Recomendación: usa Colab para estudiar y VS Code + entorno virtual para proyectos. Instala las bibliotecas con pip install numpy pandas matplotlib seaborn scikit-learn.
Variables y tipos
En Python no declaras el tipo: se infiere del valor. Los tipos fundamentales son int, float, str, bool y None.
nombre = "Ada" # str
edad = 36 # int
altura = 1.68 # float
es_cientifica = True # bool
sin_valor = None # NoneType
print(type(edad)) #
print(f"{nombre} tiene {edad} años") # f-string
# Conversión de tipos (casting)
print(int("42") + 8) # 50
print(float("3.14") * 2) # 6.28
print(str(2026) + "!") # "2026!"
# Operadores
print(7 / 2) # 3.5 (división real)
print(7 // 2) # 3 (división entera)
print(7 % 2) # 1 (módulo)
print(2 ** 10) # 1024 (potencia) Strings y formato
texto = "Machine Learning"
print(texto.lower()) # machine learning
print(texto.replace(" ", "_"))# Machine_Learning
print(texto.split()) # ['Machine', 'Learning']
print(texto[0:7]) # Machine
print(len(texto)) # 16
# Formato de métricas
accuracy = 0.9234
print(f"Accuracy: {accuracy:.2%}") # Accuracy: 92.34%
print(f"Error: {1 - accuracy:.4f}") # Error: 0.0766Para NLP, las operaciones con strings son el pan de cada día: limpieza, tokenización, normalización. En el Módulo 8 las retomaremos.
Entrada y salida
# En un notebook o script interactivo
# nombre = input("¿Cómo te llamas? ")
# print(f"Hola, {nombre}")
# Para ML, la salida estructurada es más útil que los prints sueltos
resultados = {"modelo": "Random Forest", "f1": 0.87, "auc": 0.91}
for clave, valor in resultados.items():
print(f"{clave:>16}: {valor}")Aplicación: registrar un experimento
Un buen hábito desde el primer día: guardar cada experimento con sus hiperparámetros y métricas. No confíes en la memoria ni en nombres de archivo como final_v2_bueno.ipynb.
from datetime import datetime
experimento = {
"fecha": datetime.now().isoformat(timespec="seconds"),
"modelo": "logistic_regression",
"lr": 0.01,
"epochs": 100,
"accuracy": 0.912,
"notas": "features estandarizadas",
}
print(experimento)
# En producción: MLflow, Weights & Biases o un CSV versionado- ¿Qué imprime print(10 // 3, 10 % 3)? 3 1.
- Convierte la temperatura 98.6 °F a Celsius con la fórmula $C=(F-32)\times5/9$. Resultado: 37.0.
- Escribe un f-string que muestre una pérdida de 0.03456 con 3 decimales: f"loss={0.03456:.3f}".
- ¿Por qué "3" + 4 falla? Porque no se pueden concatenar str e int sin conversión explícita.