Pendiente entre dos puntos
Dados dos puntos (x1, y1) y (x2, y2), devolvé la pendiente: (y2 - y1) / (x2 - x1).
Entrá y llevá tu progreso —ejercicios, medallas y Pokémon— a cualquier dispositivo. 🔄
Si tu cuenta ya tiene progreso guardado, se carga ese al entrar.
Entraste como . Tu progreso se sincroniza solo. 🔄
Dados dos puntos (x1, y1) y (x2, y2), devolvé la pendiente: (y2 - y1) / (x2 - x1).
🎯 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.
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.]
💡 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).
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
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_`.
| Cosa | Para qué |
|---|---|
| regresión | predecir un número (continuo) |
LinearRegression() | el modelo de la recta |
.fit(X, y) / .predict(...) | entrenar / estimar |
.coef_ / .intercept_ | la fórmula aprendida |
Practicá con los ejercicios de este tema. 💪
⚡ “Clasificar dice ‘qué’. Regresión dice ‘cuánto’. Con las dos, predecís casi todo.”