Metodi di selezione delle feature
Metodi filter (varianza, correlazione), wrapper (RFE) ed embedded (regolarizzazione L1).
Metodi di selezione delle feature è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Perché selezionare le feature
La selezione delle feature conserva solo le colonne più utili. Un numero minore di feature significa addestramento più rapido, minore overfitting e interpretazione più semplice. Rimuovere il rumore spesso migliora anche l'accuratezza.
Tre famiglie di metodi
I metodi di selezione si dividono in tre gruppi:
- Filter: classificano le feature in base a una statistica (sono rapidi e indipendenti dal modello)
- Wrapper: cercano sottoinsiemi addestrando modelli (sono lenti, ma accurati)
- Embedded: la selezione avviene durante l'addestramento del modello
VarianceThreshold
Il filtro più semplice: VarianceThreshold elimina le feature la cui varianza è inferiore a una soglia. Le colonne quasi costanti non contengono informazioni.
from sklearn.feature_selection import VarianceThreshold
sel = VarianceThreshold(threshold=0.01)
X_reduced = sel.fit_transform(X)
print("Kept:", X_reduced.shape[1], "of", X.shape[1])SelectKBest con f_classif
SelectKBest conserva le K feature con il punteggio più alto. Con f_classif utilizza un test F ANOVA, che misura quanto ogni feature sia correlata all'etichetta della classe.
from sklearn.feature_selection import SelectKBest, f_classif
sel = SelectKBest(score_func=f_classif, k=10)
X_best = sel.fit_transform(X, y)
print(sel.get_support(indices=True))Informazione mutua
mutual_info_classif misura qualsiasi dipendenza, anche non lineare, tra una feature e il target. A differenza del test F, rileva le relazioni non lineari che l'ANOVA non riesce a cogliere.
from sklearn.feature_selection import SelectKBest, mutual_info_classif
sel = SelectKBest(score_func=mutual_info_classif, k=10)
X_mi = sel.fit_transform(X, y)Confronto tra f_classif e mutual_info
f_classif è rapido e rileva le relazioni lineari; mutual_info_classif è più lento, ma rileva quelle non lineari. Se sospetta relazioni complesse, preferisca l'informazione mutua.
import numpy as np
from sklearn.feature_selection import f_classif, mutual_info_classif
f_scores, _ = f_classif(X, y)
mi_scores = mutual_info_classif(X, y)
print("F-test top:", np.argsort(f_scores)[::-1][:5])
print("MI top:", np.argsort(mi_scores)[::-1][:5])Eliminazione ricorsiva delle feature
RFE è un metodo wrapper: addestra un modello, rimuove la feature più debole e ripete il processo. Utilizza il segnale di importanza del modello per classificare le feature.
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
rfe = RFE(estimator=LogisticRegression(max_iter=1000), n_features_to_select=10)
rfe.fit(X, y)
print(rfe.support_)RFECV: scegliere automaticamente il numero
RFECV aggiunge la convalida incrociata a RFE, così trova il numero ottimale di feature in base al punteggio di convalida, anziché a una stima fissa.
from sklearn.feature_selection import RFECV
from sklearn.ensemble import RandomForestClassifier
rfecv = RFECV(
estimator=RandomForestClassifier(),
cv=5,
scoring="accuracy",
)
rfecv.fit(X, y)
print("Optimal features:", rfecv.n_features_)SelectFromModel con Lasso
Selezione embedded: Lasso (L1) riduce i coefficienti non importanti esattamente a zero. SelectFromModel conserva quindi solo quelli diversi da zero.
from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import Lasso
sel = SelectFromModel(Lasso(alpha=0.01))
sel.fit(X, y)
X_lasso = sel.transform(X)
print("Kept:", X_lasso.shape[1])SelectFromModel con le importanze degli alberi
SelectFromModel funziona anche con qualsiasi estimator che esponga feature_importances_, come le random forest. Imposti una threshold come "mean" o "median".
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier
sel = SelectFromModel(
RandomForestClassifier(n_estimators=200),
threshold="median",
)
sel.fit(X, y)Scegliere un metodo
Inizi con filtri poco costosi (VarianceThreshold, SelectKBest) per eliminare il rumore più evidente. Utilizzi SelectFromModel embedded per ottenere un buon compromesso. Riservi RFECV ai casi in cui l'accuratezza è la priorità e le risorse di calcolo lo consentono.
Verifica rapida
Verifichi le Sue conoscenze sulla selezione delle feature.
Riepilogo
Riepilogo: la selezione delle feature comprende metodi filter (VarianceThreshold, SelectKBest con f_classif o mutual_info_classif), wrapper (RFECV) ed embedded (SelectFromModel con Lasso o con le importanze degli alberi). I filtri sono i più rapidi; RFECV è il più accurato. Utilizzi l'informazione mutua per le relazioni non lineari.
Domande Frequenti
La lezione «Metodi di selezione delle feature» è gratuita?
Sì — il testo completo di «Metodi di selezione delle feature» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Metodi di selezione delle feature»?
Metodi filter (varianza, correlazione), wrapper (RFE) ed embedded (regolarizzazione L1). Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Metodi di selezione delle feature»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Metodi di selezione delle feature
- Creazione di feature di interazione e polinomiali
- Target encoding e gestione avanzata delle variabili categoriche
- Ingegneria automatizzata delle feature con Featuretools