FeatureSelection.make_funnel

FeatureSelection.make_funnel()

Restituisce un DataFrame che riassume il funnel di selezione delle feature.

Questo DataFrame dettaglia ogni passaggio del processo di filtraggio applicato. Per ogni passaggio, mostra il numero di colonne rimosse, il numero di colonne mantenute fino a quel punto e i parametri utilizzati per quel specifico filtro.

Parameters:

None – (metodo basato sui risultati dei filtri selezionati)

Returns:

Un DataFrame con le seguenti colonne:

  • Step_Number (indice): Numero progressivo del passaggio.

  • Step_Description: Descrizione del filtro applicato.

  • Col_Removed: Numero di colonne rimosse in quel passaggio.

  • Col_Kept: Numero di colonne rimaste dopo quel passaggio.

  • Params: Dizionario dei parametri usati per il filtro.

Return type:

pd.DataFrame

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
>>> fs.make_funnel()
Step_Description Col_Removed Col_Kept Params
Step_Number
0 Initial feat to check 0 4 NaN
1 Constant 0 4 NaN
2 Missing 0 4 {max_pct_missing: 0.9}
3 Highly Concentrated 0 4 {max_pct_mfv: 0.95}
4 Unstable 0 4 {max_psi: 0.2, psi_bin_min_pct: 0.02, psi_nbins: 20}
5 Unexplanatory 2 2 {threshold: 0.05, algo_type: regression, dim_cat_threshold: 10}
6 Correlated 0 2 {correlation_threshold: 0.95, selection_rule: random, random_state: 42}