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
yy
, 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])