FeatureSelection.run

FeatureSelection.run(filter_constant=True, filter_missing=True, filter_highly_concentrated=True, filter_low_values=False, filter_unstable=True, filter_unexplanatory=True, filter_correlated=True, filter_collinear=True, **kwargs)

Esegue la pipeline di selezione delle feature in base ai filtri e ai parametri configurati.

Questo è il metodo principale per eseguire il processo di selezione. Applica in sequenza i vari filtri (costanti, mancanti, concentrati, ecc.) alle feature specificate. Per ogni filtro attivo, identifica le feature da rimuovere, aggiorna lo stato interno dell’oggetto e riduce il set di feature considerate per i passaggi successivi. I filtri vengono applicati principalmente sul training set se sample_col e sample_train_value sono specificati, altrimenti sull’intero dataset.

Parameters:
  • filter_constant (bool, optional) – Se True, attiva il filtro per le feature costanti. Default: True. (Per dettagli vedere find_constant_features())

  • filter_missing (bool, optional) – Se True, attiva il filtro per le feature con troppi valori mancanti. Default: True. (Per dettagli vedere find_missing_features())

  • filter_highly_concentrated (bool, optional) – Se True, attiva il filtro per le feature altamente concentrate. Default: True. (Per dettagli vedere find_high_topcat_features())

  • filter_low_values (bool, optional) – Se True, attiva il filtro per le feature con pochi valori unici. Default: False. (Per dettagli vedere find_low_nvalues_features())

  • filter_unstable (bool, optional) – Se True, attiva il filtro per le feature instabili tra campioni (basato su PSI). Richiede sample_col. Default: True. (Per dettagli vedere find_unstable_psi_features())

  • filter_unexplanatory (bool, optional) – Se True, attiva il filtro per le feature non esplicative rispetto al target. Richiede target_col. Default: True. (Per dettagli vedere find_not_explanatory())

  • filter_correlated (bool, optional) – Se True, attiva il filtro per le feature altamente correlate. Default: True. (Per dettagli vedere find_correlated_features())

  • filter_collinear (bool, optional) – Se True, attiva il filtro per le feature collineari (basato su VIF). Default: True. (Per dettagli vedere find_collinear_feature_optimized())

  • **kwargs – Argomenti keyword aggiuntivi che possono essere usati per sovrascrivere i parametri dei singoli filtri prima dell’esecuzione (es. max_pct_missing=0.8).

Note

  • L’ordine di applicazione dei filtri è predefinito e può influenzare quali feature vengono rimosse da quale criterio se una feature soddisfa più criteri di rimozione.

  • I risultati, come le feature selezionate e i report, sono memorizzati negli attributi dell’istanza.

  • Per vedere quali parametri si possono inserire nei kwargs guardare dettagli in ogni filtro.

  • Gli attributi principali che vengono modificati per ogni filtro sono _selected_features e _filtered_out_features, rispettivamente le feature considerate “buone” e quelle che vengono eliminate dai filtri.

Dati utilizzati per gli esempi:

>>> df_test_filters
feature_B feature_C target feature_A1 feature_A2 sample_col
0 34.835708 Z 75.013312 -0.270712 -0.812137 train
1 3.086785 X 109.194174 0.104848 0.314544 train
2 42.384427 Y 96.287048 0.250528 0.751583 train
3 86.151493 X 264.905765 -0.925200 -2.775600 train
4 -1.707669 V 2.880829 0.567144 1.701431 train
5 -1.706848 V 2.318509 -1.040180 -3.120541 train
6 88.960641 X 273.054387 -0.153676 -0.461028 train
7 48.371736 V 101.779140 0.789852 2.369555 train
8 -13.473719 Z -25.266714 -1.226216 -3.678648 train
9 37.128002 Y 73.118623 -0.948007 -2.844021 train
10 -13.170885 X 69.538553 -0.569654 -1.708962 train
11 -13.286488 Z -30.168523 -0.977150 -2.931451 train
12 22.098114 W 54.445288 -0.770632 -2.311895 train
13 -85.664012 W -171.324610 -0.033711 -0.101134 train
14 -76.245892 X -48.581133 -1.032859 -3.098578 train
15 -18.114376 X 59.816750 1.142427 3.427282 train
16 -40.641556 Z -85.182377 -0.609778 -1.829334 train
17 25.712367 Y 56.834657 1.469416 4.408249 train
18 -35.401204 Y -77.550289 1.492679 4.478037 train
19 -60.615185 Y -123.306439 0.707125 2.121376 train

Esempio:

>>> from cefeste.selection import FeatureSelection
>>> fs = FeatureSelection(
...  db=df_test_filters,
...  target_col='target',
...  sample_col='sample_col',
...  sample_train_value='train',
...  verbose=True
... )
>>> fs.run()
>>> fs.make_report()
feat_name result drop_reason
0 feature_A1 drop unexplanatory
1 feature_A2 drop unexplanatory
2 feature_C keep NaN
3 feature_B keep NaN