Skip to content

Cum să construiești un model de clasificare

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn how to build a classification model using Random Forest and Logistic Regression in sklearn, from data preparation to evaluation, for predicting discrete categories.

Problema

Vrei să prezici o categorie — dacă un email e spam sau nu, dacă un client va cumpăra sau nu, dacă o tranzacție e frauduloasă. Modelele de clasificare sunt soluția, dar alegerea algoritmului greșit sau implementarea incorectă duce la predicții slabe.

Soluția Greșită

import pandas as pd
from sklearn.ensemble import RandomForestClassifier

df = pd.read_csv("date.csv")
X = df.drop("target", axis=1)
y = df["target"]

# Fara preprocesare, fara impartire, fara evaluare
model = RandomForestClassifier()
model.fit(X, y)
print(model.score(X, y))

Problema: Nu ai separat datele, nu ai scalat, nu ai evaluat corect. Scorul e artificial de mare.

Soluția Corectă

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report
import pandas as pd

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, stratify=y
)

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
predictii = model.predict(X_test)

print(classification_report(y_test, predictii))

Output:

              precision    recall  f1-score   support
           0       0.95      0.97      0.96       100
           1       0.93      0.89      0.91        60
    accuracy                           0.94       160

Implementare Pas cu Pas

1. Logistic Regression — rapid și interpretabil

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

pipeline = make_pipeline(
    StandardScaler(),
    LogisticRegression(max_iter=1000, random_state=42)
)
pipeline.fit(X_train, y_train)
print(f"Acuratete Logistic Regression: {pipeline.score(X_test, y_test):.2f}")

2. Random Forest — mai puternic, fără scalare

rf = RandomForestClassifier(n_estimators=200, max_depth=10, random_state=42)
rf.fit(X_train, y_train)
print(f"Acuratete Random Forest: {rf.score(X_test, y_test):.2f}")

3. Compară și alege cel mai bun model

from sklearn.metrics import roc_auc_score

# Probabilitati pentru ROC-AUC
prob_rf = rf.predict_proba(X_test)[:, 1]
prob_lr = pipeline.predict_proba(X_test)[:, 1]

print(f"AUC Random Forest: {roc_auc_score(y_test, prob_rf):.3f}")
print(f"AUC Logistic Regression: {roc_auc_score(y_test, prob_lr):.3f}")

Sfaturi pentru Prevenire

  • Folosește stratify=y în train_test_split — menține proporția claselor
  • Pentru clase dezechilibrate, setează class_weight="balanced"
  • Logistic Regression are nevoie de features scalate; Random Forest, nu
  • Începe cu o Logistic Regression simplă ca baseline
  • Salvează modelul cu joblib.dump după antrenare

Greșeli Comune

  1. Nu scalezi features pentru Logistic Regression — convergența e lentă sau greșită
  2. Ignori clasele dezechilibrate — acuratețea poate fi 95% dar clasa minoritară e ignorată
  3. Folosești prea mulți arbori în Random Forest — dincolo de 200, random forest se stabilizează, nu crește performanța
  4. Nu setezi random_state — rezultatele nu sunt reproductibile
  5. Evaluezi doar cu acuratețe — ignoră precizia, recall-ul și F1

Întrebări Frecvente

### Când să folosesc Random Forest vs Logistic Regression?

Logistic Regression pentru interpretabilitate și când relația e aproximativ liniară. Random Forest pentru performanță maximă și relații complexe.

Cum tratez clasele dezechilibrate?

Folosește class_weight="balanced", tehnici de oversampling (SMOTE) sau undersampling, și evaluează cu F1-score în loc de acuratețe.

De ce Random Forest nu are nevoie de scalare?

Pentru că Random Forest se bazează pe decizii bazate pe praguri, nu pe distanțe. Scalarea nu afectează ordinea valorilor.

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