Cargando tu progreso…

Pokédex Codex

ML: regresión

META

🎯 Meta: predecir un número (no una categoría). Vas a estimar valores continuos con regresión lineal.

Clasificar responde “¿qué tipo es?”. La regresión responde “¿cuánto?”: el precio de una casa, la temperatura de mañana, el CP de un Pokémon. La respuesta es un número.

📈 Regresión lineal

Busca la recta (o plano) que mejor pasa por los datos, para estimar valores nuevos.

from sklearn.linear_model import LinearRegression

# nivel -> CP (relación aproximada: CP sube con el nivel)
X = [[10], [20], [30], [40]]
y = [100, 200, 300, 400]

modelo = LinearRegression()
modelo.fit(X, y)

print(modelo.predict([[25]]))   # [250.] -> estima el CP a nivel 25
print(modelo.predict([[50]]))   # [500.]
TIP

💡 A diferencia del clasificador, acá predict devuelve un número con decimales, no una categoría.

P: ¿Cuál es la diferencia principal entre clasificación y regresión?
- La regresión usa más datos que la clasificación
+ La clasificación predice una categoría; la regresión predice un número continuo
- La regresión solo funciona con una feature de entrada
> Clasificar responde "¿qué tipo es?" (una categoría). Regresión responde "¿cuánto?" (un número como el CP o el precio de una casa).

🔢 La fórmula que aprendió

El modelo aprende una pendiente y una ordenada (y = pendiente·x + ordenada):

from sklearn.linear_model import LinearRegression

X = [[1], [2], [3], [4]]
y = [3, 5, 7, 9]      # y = 2*x + 1

modelo = LinearRegression().fit(X, y)
print("pendiente:", round(modelo.coef_[0], 2))      # 2.0
print("ordenada:", round(modelo.intercept_, 2))     # 1.0
print("predice x=10:", modelo.predict([[10]])[0])   # 21.0

🧬 Con varias features

Igual que la clasificación, podés usar muchas columnas de entrada:

from sklearn.linear_model import LinearRegression

# [ataque, defensa] -> poder de combate
X = [[50, 50], [80, 40], [40, 80], [90, 90]]
y = [100, 120, 120, 180]

modelo = LinearRegression().fit(X, y)
print(modelo.predict([[70, 70]]).round(1))
P: Si el modelo aprendió `pendiente = 2` y `ordenada = 1`, ¿qué predice para `x = 5`?
- 7
+ 11
- 10
> La fórmula es `y = pendiente * x + ordenada` = `2 * 5 + 1 = 11`. El modelo guarda esos valores en `coef_[0]` e `intercept_`.

📝 Resumen

CosaPara qué
regresiónpredecir un número (continuo)
LinearRegression()el modelo de la recta
.fit(X, y) / .predict(...)entrenar / estimar
.coef_ / .intercept_la fórmula aprendida

➡️ ¿Y ahora qué?

Practicá con los ejercicios de este tema. 💪

ÁNIMO

“Clasificar dice ‘qué’. Regresión dice ‘cuánto’. Con las dos, predecís casi todo.”