Cum să extragi și să selecționezi features
In this tutorial, you'll learn how to extract and select the most relevant features from your dataset using techniques like feature importance, PCA, and mutual information, reducing dimensionality and improving model performance.
Problema
Prea multe features încetinesc antrenarea, cresc riscul de overfitting și fac modelul greu de interpretat. Nu toate coloanele din date aduc informație utilă — unele sunt redundante sau chiar zgomot.
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"]
# Folosesti toate coloanele fara selectie
model = RandomForestClassifier()
model.fit(X, y)
Problema: Dacă ai 200 de coloane, multe irelevante, modelul va fi lent, va face overfitting și scorul va fi suboptim.
Soluția Corectă
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectFromModel
import pandas as pd
df = pd.read_csv("date.csv")
X = df.drop("target", axis=1)
y = df["target"]
# Antreneaza un model pentru a calcula importanta
selector = SelectFromModel(RandomForestClassifier(n_estimators=100))
selector.fit(X, y)
# Pastreaza doar feature-urile importante
X_important = selector.transform(X)
print(f"Features initiale: {X.shape[1]}")
print(f"Features selectate: {X_important.shape[1]}")
Output:
Features initiale: 50
Features selectate: 12
Implementare Pas cu Pas
1. Calculează importanța cu Random Forest
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X, y)
importante = pd.DataFrame({
"feature": X.columns,
"importanta": model.feature_importances_
}).sort_values("importanta", ascending=False)
print(importante.head(10))
2. Alege pragul de selecție
from sklearn.feature_selection import SelectKBest, f_classif
selector = SelectKBest(score_func=f_classif, k=15)
X_selected = selector.fit_transform(X, y)
coloane_selectate = X.columns[selector.get_support()]
print(coloane_selectate.tolist())
3. Folosește PCA pentru reducere de dimensionalitate
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scalat = scaler.fit_transform(X)
pca = PCA(n_components=10)
X_pca = pca.fit_transform(X_scalat)
print(f"Varianta explicata: {pca.explained_variance_ratio_.sum():.2%}")
Sfaturi pentru Prevenire
- Începe cu SelectKBest sau importanța Random Forest — sunt simple și interpretabile
- Folosește PCA când ai multe coloane corelate între ele
- Setează
n_componentsastfel încât varianta explicată să fie > 90% - Nu aplica PCA înainte de a scala datele
- Combină selecția automată cu cunoștințele de domeniu
Greșeli Comune
- Aplici PCA fără să scalezi — componentele principale sunt deformate
- Folosești prea multe features — modelul face overfitting
- Arunci features fără să înțelegi contextul — unele features aparent slabe sunt esențiale
- Nu verifici multicolinearitatea — PCA sau regularizarea pot ajuta
- Selectezi features pe tot dataset-ul înainte de train/test split — cauți data leakage
Î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