Operadores Aritméticos
Los operadores aritméticos son los bloques básicos del cálculo en Python. Con ellos se construyen desde fórmulas simples hasta modelos de aprendizaje automático.
Operadores disponibles
Python incluye los operadores matemáticos habituales más algunos adicionales muy útiles en ciencia de datos:
a = 5
b = 3
print(a + b) # Suma → 8
print(a - b) # Resta → 2
print(a * b) # Multiplicación → 15
print(a / b) # División → 1.6666...
print(a // b) # División entera → 1 (descarta los decimales)
print(a % b) # Módulo (resto) → 2
print(a ** b) # Potencia → 125
El resultado de una operación puede guardarse en una nueva variable:
suma = a + b
print(suma) # 8
// devuelve el cociente entero de la división; % devuelve el resto. Juntos reproducen la división con residuo: \( 5 = 3 \cdot 1 + 2 \).
Comentarios
Los comentarios son texto que Python ignora al ejecutar. Se escriben con # y sirven para explicar qué hace el código.
resultado = a * b # esto es un comentario, no se ejecuta
Un buen comentario explica el por qué, no el qué. Si el código ya dice lo que hace, el comentario es redundante.
Ejemplo: Perceptrón
Un perceptrón es la unidad básica de las redes neuronales. Toma varias entradas \(x_i\), las multiplica por pesos \(w_i\), suma un sesgo \(b\) y produce una salida.
Donde \(x_1\) y \(x_2\) son las entradas, \(w_1\) y \(w_2\) son los pesos que indican la importancia de cada entrada, y \(b\) es el sesgo que desplaza la predicción.
# Entradas del usuario (calificaciones de dos exámenes)
x1 = float(input("Ingresa el valor de x1: "))
x2 = float(input("Ingresa el valor de x2: "))
# Pesos y sesgo definidos por el modelo
w1 = 0.5
w2 = 0.7
b = -1.0
# Cálculo de la salida
salida = (x1 * w1) + (x2 * w2) + b
print(f"La salida del perceptrón es: {salida}")
En clases posteriores veremos cómo el proceso de entrenamiento ajusta automáticamente los valores de \(w_1\), \(w_2\) y \(b\).
Ejemplo: Regresión lineal
La regresión lineal busca la recta \(\hat{y} = mx + b\) que mejor se ajusta a un conjunto de datos. Los parámetros \(m\) (pendiente) y \(b\) (intercepto) se obtienen con fórmulas cerradas:
# Estadísticos del conjunto de datos
n = 30
suma_x = 110
suma_y = 114
suma_xy = 500
suma_x2 = 300
suma_x_al2 = 350 # (suma_x)^2
# Denominador compartido
denominador = (n * suma_x2) - suma_x_al2
# Pendiente e intercepto
m = ((n * suma_xy) - (suma_x * suma_y)) / denominador
b = ((suma_y * suma_x2) - (suma_x * suma_xy)) / denominador
print(f"Pendiente m = {m:.4f}")
print(f"Intercepto b = {b:.4f}")
Ejemplo Hacer una predicción con la recta
Una vez que tienes \(m\) y \(b\), predecir para un nuevo valor \(x\) es directo:
x_nuevo = float(input("Ingresa el valor de x: "))
y_pred = m * x_nuevo + b
print(f"Predicción: {y_pred:.2f}")
Más detalle ¿De dónde vienen esas fórmulas?
Las fórmulas de \(m\) y \(b\) minimizan el error cuadrático medio (ECM) entre las predicciones y los valores reales. Derivar el ECM respecto a \(m\) y \(b\), igualarlo a cero y despejar lleva exactamente a esas expresiones. En el módulo de regresión lineal lo veremos con detalle.