Selección de características con los scores más altos usando SelectKBest#

  • Ultima modificación: 2023-03-11 | YouTube

  • Esta metodología permite seleccionar las k variables independienes con los valores más altos del score.

  • Esta es una metodología que permite realizar la selección independiente de cada característica, mediante una medición directa de la relación entre cada característica y y (sin que medie un modelo). Es decir, no se tienen en cuenta interacciones entre características.

  • Para seleccionar las características se debe especificar una función que tome X y y, y retorne los scores y los valores críticos asociados.

  • Las disponibles funciones para computar la importancia de cada variable independiente son:

    • f_classif()

    • f_regression()

    • mutual_info_classif()

    • mutual_info_regression()

    • chi2() (únicamente para clasificación)

[1]:
#
# Carga el dataset de prueba
#
from sklearn.datasets import load_digits

X, y = load_digits(return_X_y=True)
X.shape
[1]:
(1797, 64)
[2]:
from sklearn.feature_selection import SelectKBest, chi2

selectKBest = SelectKBest(
    # -------------------------------------------------------------------------
    # Function taking two arrays X and y, and returning a pair of arrays
    # (scores, pvalues) or a single array with scores.
    score_func=chi2,
    # -------------------------------------------------------------------------
    # Number of top features to select. int or 'all'
    k=20,
)

selectKBest.fit(X, y)
X_new = selectKBest.transform(X)

X_new.shape
[2]:
(1797, 20)
[3]:
selectKBest.scores_
[3]:
array([          nan,  811.90700411, 3501.28249552,  698.9252572 ,
        438.52969882, 3879.81925999, 3969.45823205, 1193.5608181 ,
         24.79521396, 2953.83108764, 2583.65198939,  388.24205944,
        824.69094853, 3676.48924765, 1983.5796061 ,  597.24198237,
          8.95886124, 1924.21690377, 2409.27140681, 3556.31594594,
       4871.94194551, 4782.19921618, 2155.17378998,  376.76583333,
          7.90090158, 2471.82418401, 4515.48149826, 2986.64314847,
       3724.09567634, 3208.64686641, 5138.07412439,   35.71270718,
                 nan, 5688.25079535, 5262.46646904, 3165.0605867 ,
       3231.63943369, 2532.99695611, 3288.81403655,           nan,
        142.85082873, 3863.85787901, 6416.0867248 , 5448.25154235,
       4079.73153383, 2134.02540236, 4486.34097862,  313.53898127,
         70.39927392,  449.72327313, 2801.97224468, 1527.54519627,
       1653.15892311, 3073.99803898, 5251.21748723,  683.88227339,
          9.15254237,  851.06791492, 3800.2473108 ,  730.92975659,
       1859.53966338, 4379.2250408 , 5059.00551511, 2281.32864013])
[4]:
selectKBest.pvalues_
[4]:
array([            nan, 5.81310493e-169, 0.00000000e+000, 1.17740541e-144,
       8.11314242e-089, 0.00000000e+000, 0.00000000e+000, 2.97727113e-251,
       3.20626273e-003, 0.00000000e+000, 0.00000000e+000, 4.41344943e-078,
       1.02825052e-171, 0.00000000e+000, 0.00000000e+000, 8.18335060e-123,
       4.41080315e-001, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.23435651e-075,
       5.44163062e-001, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 4.45801029e-005,
                   nan, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000,             nan,
       2.65875300e-026, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 3.49452723e-062,
       1.27145348e-011, 3.28604761e-091, 0.00000000e+000, 0.00000000e+000,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 2.01600539e-141,
       4.23314114e-001, 2.14859356e-177, 0.00000000e+000, 1.54562173e-151,
       0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000])