📌 ¿Qué es la Regresión Logística?
Aunque tiene «regresión» en el nombre, es un algoritmo de clasificación, no de predicción numérica. Sirve para predecir probabilidades y clasificar entre dos o más clases, típicamente Sí / No, 1 / 0, Verdadero / Falso.
Ejemplo típico: ¿Una persona comprará un producto o no, según su edad y salario?
🧮 ¿Cómo funciona?
A diferencia de la regresión lineal (que traza una línea recta), la regresión logística usa una función sigmoide que transforma cualquier número en un valor entre 0 y 1. Esto representa la probabilidad de que algo ocurra.
🌀 Función sigmoide:
σ(x)=11+e−x\sigma(x) = \frac{1}{1 + e^{-x}}σ(x)=1+e−x1
Donde x
es una combinación lineal de las variables de entrada:
x=β0+β1×1+β2×2+…+βnxnx = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + … + \beta_n x_nx=β0+β1x1+β2x2+…+βnxn
🧠 ¿Qué predice?
- Si el resultado de la sigmoide es > 0.5 → clase 1 (Ej: «Sí compra»)
- Si es < 0.5 → clase 0 (Ej: «No compra»)
Puedes cambiar ese umbral según tu necesidad.
🔧 ¿Qué necesitas para usarla?
Datos:
- Variables numéricas o categóricas (estas últimas deben ser convertidas, por ejemplo con One Hot Encoding).
- Un target binario (ej. 0 o 1, sí o no).
Paquetes en Python:
pandas
ynumpy
para datos.sklearn
para aplicar el modelo.matplotlib
/seaborn
para visualizar.
🧪 ¿Cuándo usar Regresión Logística?
✅ Cuando quieres:
- Clasificar entre dos categorías (ej: spam/no spam).
- Tener una probabilidad como salida.
- Entender el impacto de cada variable (es interpretable).
❌ No es ideal cuando:
- Hay relaciones no lineales complejas.
- Quieres clasificar más de dos clases (aunque existe la versión «multiclase»).
🧰 Tipos de Regresión Logística
Tipo | Uso |
---|---|
Binaria | 2 clases (Sí / No) |
Multinomial | Más de 2 clases sin orden (Ej: rojo, verde, azul) |
Ordinal | Más de 2 clases con orden (Ej: malo, medio, bueno) |
📊 Métricas para evaluarla
- Accuracy (exactitud): porcentaje de predicciones correctas.
- Precision y Recall: ideales cuando tienes clases desbalanceadas.
- F1 Score: combinación de precisión y recall.
- Matriz de confusión: muestra los aciertos y errores por clase.
🔍 Ventajas
- Sencilla e interpretable.
- Eficiente para datasets pequeños.
- Probabilística (te dice con qué confianza hace una predicción).
- Se puede regularizar (evitar que sobreaprenda).
⚠️ Desventajas
- No maneja relaciones no lineales complejas.
- Requiere que las variables no estén demasiado correlacionadas.
- Puede dar problemas con clases muy desbalanceadas.
🧑💻 ¿Cómo se usa en Python?
Te dejo un esqueleto del código básico en Google Colab:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, confusion_matrix
# 1. Cargar datos
df = pd.read_csv('tus_datos.csv')
# 2. Preparar datos
X = df[['edad', 'salario']] # tus variables predictoras
y = df['compra'] # tu variable objetivo (0 o 1)
# 3. Dividir en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 4. Entrenar modelo
modelo = LogisticRegression()
modelo.fit(X_train, y_train)
# 5. Predecir
predicciones = modelo.predict(X_test)
# 6. Evaluar
print(confusion_matrix(y_test, predicciones))
print(classification_report(y_test, predicciones))
💡 Tip extra: Regularización
Puedes aplicar penalización (L1 o L2) para evitar que el modelo se sobreentrene (overfitting). Se hace fácilmente con LogisticRegression(penalty='l2')
.