FeatureElimination.make_report

FeatureElimination.make_report(**kwargs)

Esegue il processo SHAP RFE e genera il report delle performance per ogni iterazione.

Questo metodo prepara i dati, valida i gruppi per la CV (se presenti), identifica le feature categoriche per OHE (se richiesto), e infine esegue l’eliminazione ricorsiva delle feature. Il report risultante viene memorizzato nell’attributo report.

La RFE seleziona le feature per un modello con il seguente processo iterativo:

  • Addestra un modello ottimizzandone gli iperparametri tramite Cross-Validation.

  • Calcola l’importanza di ogni feature usando i valori SHAP.

  • Rimuove le feature meno importanti.

  • Ripete i passaggi finché non rimane il numero desiderato di feature (o finchè non vi è una decrescita critica nelle performance).

Parameters:

**kwargs – Permette di sovrascrivere temporaneamente i parametri impostati durante l’inizializzazione (es. step_size, n_iter) solo per questa esecuzione.

Returns:

Un DataFrame contenente il report del processo SHAP RFE. Contiene le seguenti colonne:

  • n_feat: Numero di feature nel dataset prima della rimozione delle feature in uno step.

  • train_score: Metrica di performance (AUC, R2, Balanced Accuracy) del modello addestrato sul dataset di training con le feature correnti.

  • valid_score: Metrica di performance di validazione del modello in Cross-Validation sul dataset di training con le feature correnti.

  • n_feat_to_remove: Numero di feature rimosse in uno step.

  • feat_used: Lista delle feature utilizzate per addestrare il modello in uno step (prima della rimozione).

  • feat_to_remove: Lista delle feature che sono state rimosse in questo step.

  • feat_select: Lista delle feature selezionate che rimangono nel dataset dopo la rimozione delle feature in uno step. Queste sono le feature che verranno utilizzate nello step successivo (se presente).

  • best_estimator: L’oggetto modello (classificatore o regressore) che ha ottenuto le migliori performance durante la Cross-Validation in uno step. Contiene il modello addestrato e i suoi iperparametri ottimizzati.

Return type:

pd.DataFrame

Esempio:

>>> import pandas as pd
>>> from sklearn.linear_model import LogisticRegression
>>> from cefeste.elimination import FeatureElimination
>>> # Dati di esempio
>>> data = pd.DataFrame({
... 'feature1': [1,2,3,4,5,6,7,8,9,2,3,1,3,6,43,2,4,6,3,2,6,3,2,6,3,2,5],
... 'feature2': [5,4,3,2,1,6,3,7,3,5,8,4,2,9,75,4,5,7,5,2,5,8,6,3,5,7,8],
... 'feature3': [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
... 'feature4': [8,8,8,9,5,3,4,5,6,2,6,8,4,4,4,6,5,7,8,5,9,3,4,7,5,78,8],
... 'feature5': [2,12,4,14,2,3,1,2,3,14,1,1,14,12,15,16,2,12,13,12,1,15,17,2,1,15,1],
... 'target':   [0,1,0,1,0,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,0,1,1,0,1,1,1]
... })
>>> # Parametri
>>> target_col = 'target'
>>> model = LogisticRegression()
>>> grid = {'C': [0.1, 1, 10]}
>>> # Inizializzazione
>>> fe = FeatureElimination(
...    db=data,
...    target_col=target_col,
...    model=model,
...    grid=grid,
...    min_n_feat_step=1
... )
>>> # Generazione del report
>>> fe.make_report()
n_feat train_score valid_score n_feat_to_remove feat_used feat_to_remove feat_select best_estimator
0 5 0.964706 0.891667 1 [feature3, feature5, feature1, feature2, feature4] [feature3] [feature5, feature1, feature2, feature4] LogisticRegression(C=0.1)
1 4 0.964706 0.891667 1 [feature4, feature5, feature2, feature1] [feature4] [feature5, feature2, feature1] LogisticRegression(C=0.1)
2 3 0.982353 0.925000 1 [feature2, feature5, feature1] [feature2] [feature5, feature1] LogisticRegression(C=1)
3 2 0.817647 0.750000 1 [feature1, feature5] [feature1] [feature5] LogisticRegression(C=0.1)
4 1 0.788235 0.791667 0 [feature5] [] [feature5] LogisticRegression(C=0.1)