Conceptos de IA en Python

Regresión lineal y logística en Python

La regresión es el tipo más sencillo de aprendizaje automático. La regresión lineal predice un número con una recta; la regresión logística pasa esa recta por una sigmoid para predecir la probabilidad de una respuesta sí/no.

El concepto en palabras sencillas

La regresión es el tipo más sencillo de aprendizaje automático. La regresión lineal predice un número con una recta; la regresión logística pasa esa recta por una sigmoid para predecir la probabilidad de una respuesta sí/no.

Ajusta una recta por mínimos cuadrados y luego convierte una puntuación en probabilidad con regresión logística.

Ideas clave

  • La regresión lineal predice valores continuos como precios o temperaturas.
  • La regresión logística predice una probabilidad para dos clases.
  • Ambas pueden entrenarse con descenso de gradiente en lugar de con una fórmula cerrada.
  • El perceptrón es un clasificador parecido que solo actualiza sus pesos cuando se equivoca.

¿Cuándo se utiliza?

  • Entender qué pasa dentro de las redes neuronales y las bibliotecas de IA.
  • Aprender la idea antes de implementarla en los retos correspondientes.
  • Prepararte para cursos de aprendizaje automático, entrevistas y proyectos.

Pruébalo en acción

Haz clic en el gráfico de la izquierda para añadir puntos y ver cómo se actualiza la mejor recta. A la derecha, cambia w y b para mover la frontera de decisión.

Código de ejemplo

Ejecutar código →
main.py
import math

# Linear regression: find the line that best fits the points (least squares).
xs = [1, 2, 3, 4, 5]
ys = [2.1, 3.9, 6.2, 8.1, 9.8]
mean_x, mean_y = sum(xs) / len(xs), sum(ys) / len(ys)
slope = sum((x - mean_x) * (y - mean_y) for x, y in zip(xs, ys)) / sum((x - mean_x) ** 2 for x in xs)
intercept = mean_y - slope * mean_x
print(f"line: y = {slope:.2f}x + {intercept:.2f}")
print("predict x=6:", round(slope * 6 + intercept, 2))

# Logistic regression turns a score into a probability with the sigmoid.
def predict_pass(hours_studied, weight=1.5, bias=-4.0):
    return 1 / (1 + math.exp(-(weight * hours_studied + bias)))

for hours in (1, 3, 5):
    p = predict_pass(hours)
    print(f"{hours} hours -> pass probability {p:.2f} -> {'pass' if p >= 0.5 else 'fail'}")

Resultado esperado

line: y = 1.96x + 0.14
predict x=6: 11.9
1 hours -> pass probability 0.08 -> fail
3 hours -> pass probability 0.62 -> pass
5 hours -> pass probability 0.97 -> pass

Cómo funciona

La fórmula de mínimos cuadrados encuentra la pendiente y la ordenada en el origen que hacen mínima la distancia al cuadrado a los puntos, y da y = 1.96x + 0.14. predict_pass() calcula una puntuación a partir de las horas de estudio y la sigmoid la convierte en probabilidad; 0.5 es el corte entre suspender y aprobar.

Cambia los valores y ejecuta el programa en el compilador Python online de CodeUtility sin instalar Python.

Ejercicios prácticos

Modifica las entradas y prueba casos límite antes de usar conjuntos de datos mayores.

  1. Cambia las entradas o los pesos y predice la salida antes de ejecutar.
  2. Imprime los valores intermedios para seguir cada paso del cálculo.
  3. Resuelve los retos enlazados abajo para implementar la idea por tu cuenta.
Ejecutar en el IDE de Python →

Practica con un reto

Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.

Todos los retos