Cum să construiești un model de regresie
In this tutorial, you'll learn how to build a regression model using Linear Regression and Gradient Boosting in sklearn, predicting continuous numeric values like prices, temperatures, or sales.
Problema
Vrei să prezi o valoare numerică — prețul unei case, temperatura de mâine, vânzările lunii următoare. Modelele de regresie sunt soluția, dar o implementare greșită duce la predicții inexacte și erori mari.
Soluția Greșită
import pandas as pd
from sklearn.linear_model import LinearRegression
df = pd.read_csv("date.csv")
X = df.drop("target", axis=1)
y = df["target"]
# Fara verificarea asumptiei de liniaritate
model = LinearRegression()
model.fit(X, y)
predictii = model.predict(X)
Problema: Regresia liniară presupune o relație liniară între features și target. Dacă relația e neliniară, predicțiile sunt proaste.
Soluția Corectă
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_squared_error, r2_score
import pandas as pd
import numpy as np
df = pd.read_csv("date.csv")
X = df.drop("target", axis=1)
y = df["target"]
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
model = GradientBoostingRegressor(n_estimators=200, random_state=42)
model.fit(X_train, y_train)
predictii = model.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, predictii))
r2 = r2_score(y_test, predictii)
print(f"RMSE: {rmse:.2f}")
print(f"R2 Score: {r2:.3f}")
Output:
RMSE: 3.45
R2 Score: 0.923
Implementare Pas cu Pas
1. Linear Regression — baseline rapid
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
lr = LinearRegression()
lr.fit(X_train, y_train)
pred_lr = lr.predict(X_test)
mae = mean_absolute_error(y_test, pred_lr)
r2 = r2_score(y_test, pred_lr)
print(f"MAE: {mae:.2f}, R2: {r2:.3f}")
2. Gradient Boosting — performanță superioară
gbr = GradientBoostingRegressor(
n_estimators=300, learning_rate=0.05, max_depth=4, random_state=42
)
gbr.fit(X_train, y_train)
pred_gbr = gbr.predict(X_test)
print(f"RMSE Gradient Boosting: {np.sqrt(mean_squared_error(y_test, pred_gbr)):.2f}")
3. Compară rezultatele
print(f"R2 Linear Regression: {r2_score(y_test, pred_lr):.3f}")
print(f"R2 Gradient Boosting: {r2_score(y_test, pred_gbr):.3f}")
Sfaturi pentru Prevenire
- Începe cu Linear Regression ca baseline — e rapid și interpretabil
- Dacă R2 e sub 0.7, treci la modele neliniare (Gradient Boosting, Random Forest)
- Scalează features pentru Linear Regression, dar nu e necesar pentru Gradient Boosting
- Monitorizează RMSE în aceleași unități ca target-ul
- Folosește
learning_ratemic (0.01-0.1) cu mai mulți estimatori pentru Gradient Boosting
Greșeli Comune
- Nu verifici asumpția de liniaritate — Linear Regression pe date neliniare dă erori mari
- Ignori outlier-ii — regresia e sensibilă la valori extreme
- Folosești prea mulți estimatori în Gradient Boosting — duce la overfitting
- Nu scalezi features — coeficienții devin greu de interpretat
- Evaluezi doar cu R2 — ignoră RMSE și MAE care sunt mai intuitive
Întrebări Frecvente
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. DodaTech tools integrate seamlessly with sklearn for enhanced productivity and security.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro