0Pricing
Python Academy · Lección

Modelos lineales: regresión y clasificación

Entrene modelos de regresión lineal y regresión logística.

Modelos lineales: regresión y clasificación es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.

Regresión lineal

LinearRegression ajusta una línea recta (o un hiperplano) minimizando el error de mínimos cuadrados.

from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

X, y = make_regression(n_samples=200, n_features=5, noise=10, random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)

model = LinearRegression().fit(X_tr, y_tr)
print("RMSE:", mean_squared_error(y_te, model.predict(X_te))**0.5)

Coeficientes del modelo

Después del ajuste, examine coef_ (pesos de las características) y intercept_.

from sklearn.linear_model import LinearRegression
import numpy as np

X = np.array([[1],[2],[3]])
y = np.array([2, 4, 6])

model = LinearRegression().fit(X, y)
print("Coef:", model.coef_)       # [2.]
print("Intercept:", model.intercept_)  # ~0

Regresión Ridge y Lasso

Ridge (L2) y Lasso (L1) añaden regularización para evitar el sobreajuste. alpha controla la intensidad de la regularización.

from sklearn.linear_model import Ridge, Lasso
from sklearn.datasets import make_regression

X, y = make_regression(n_features=20, noise=15, random_state=0)

ridge = Ridge(alpha=1.0).fit(X, y)
lasso = Lasso(alpha=0.1).fit(X, y)
print("Ridge coef[:5]:", ridge.coef_[:5])
print("Lasso coef[:5]:", lasso.coef_[:5])  # some are 0 (sparse)

Regresión logística

LogisticRegression es un clasificador lineal para problemas binarios o multiclase. A pesar de su nombre, predice probabilidades de clase.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = LogisticRegression().fit(X_tr, y_tr)
print("Accuracy:", accuracy_score(y_te, model.predict(X_te)))

Regresión logística multiclase

Establezca multi_class="multinomial" o use la opción predeterminada OvR (uno contra el resto) para 3 o más clases.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
model = LogisticRegression(max_iter=200).fit(X, y)
print("Classes:", model.classes_)   # [0 1 2]
print("Accuracy:", model.score(X, y))

Escalado de características para modelos lineales

Escale siempre las características para los modelos lineales, especialmente cuando se usa regularización. Las características sin escalar reciben penalizaciones diferentes de forma engañosa.

from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

pipe = Pipeline([
    ("scale", StandardScaler()),
    ("clf",   LogisticRegression())
])
pipe.fit(X_tr, y_tr)
print(pipe.score(X_te, y_te))

Curva de aprendizaje

Una curva de aprendizaje muestra cómo mejora el rendimiento del modelo al aumentar los datos de entrenamiento; resulta útil para diagnosticar el subajuste o el sobreajuste.

from sklearn.model_selection import learning_curve
import numpy as np

train_sizes, train_scores, val_scores = learning_curve(
    LogisticRegression(), X, y, cv=5,
    train_sizes=np.linspace(0.1, 1.0, 5)
)
print("Val mean:", val_scores.mean(axis=1))

Puntuación R² para regresión

r2_score mide la proporción de varianza explicada. 1.0 representa un resultado perfecto; 0 significa que el modelo no es mejor que predecir la media.

from sklearn.metrics import r2_score
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression

X, y = make_regression(noise=20, random_state=0)
model = LinearRegression().fit(X, y)
print("R²:", r2_score(y, model.predict(X)))

Características polinómicas

Use PolynomialFeatures para ajustar relaciones no lineales con un modelo lineal.

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
import numpy as np

X = np.array([[1],[2],[3],[4],[5]])
y = np.array([1, 4, 9, 16, 25])  # y = x^2

pipe = Pipeline([
    ("poly", PolynomialFeatures(degree=2)),
    ("lr",   LinearRegression())
])
pipe.fit(X, y)
print(pipe.predict([[6]]))   # ~36

SGDClassifier y SGDRegressor

El descenso de gradiente estocástico permite trabajar con conjuntos de datos muy grandes en los que los solucionadores estándar son demasiado lentos.

from sklearn.linear_model import SGDClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=100_000, random_state=0)
pipe = Pipeline([("sc", StandardScaler()), ("sgd", SGDClassifier())])
pipe.fit(X, y)
print(pipe.score(X, y))

Trayectorias de regularización

Varíe alpha en una cuadrícula con RidgeCV/LassoCV, que seleccionan automáticamente el mejor valor de alpha mediante validación cruzada.

from sklearn.linear_model import RidgeCV, LassoCV
from sklearn.datasets import make_regression

X, y = make_regression(n_features=20, noise=10, random_state=0)
ridge = RidgeCV(alphas=[0.1, 1, 10]).fit(X, y)
print("Best alpha:", ridge.alpha_)

Comprobación rápida

¿Cuál es la diferencia clave entre la regresión Ridge y la regresión Lasso?

Resumen

Use LinearRegression para regresión y LogisticRegression para clasificación. Añada Ridge/Lasso para aplicar regularización. Escale siempre las características. Use PolynomialFeatures para problemas no lineales. Evalúe con r2_score (regresión) o accuracy_score (clasificación).

Preguntas frecuentes

¿La lección «Modelos lineales: regresión y clasificación» es gratis?

Sí — el texto completo de «Modelos lineales: regresión y clasificación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Modelos lineales: regresión y clasificación»?

Entrene modelos de regresión lineal y regresión logística. Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Python Academy?

No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Modelos lineales: regresión y clasificación»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Python Academy?

Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. La API de scikit-learn: fit, transform y predict
  2. Modelos lineales: regresión y clasificación
  3. Modelos basados en árboles: árboles de decisión y bosques aleatorios
  4. Evaluación de modelos y validación cruzada
← Volver a Python Academy