¿Cómo funciona SelectKBest?

15

Estoy viendo este tutorial: https://www.dataquest.io/mission/75/improving-your-submission

En la sección 8, que encuentra las mejores características, muestra el siguiente código.

import numpy as np
from sklearn.feature_selection import SelectKBest, f_classif

predictors = ["Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Embarked", "FamilySize", "Title", "FamilyId"]

# Perform feature selection
selector = SelectKBest(f_classif, k=5)
selector.fit(titanic[predictors], titanic["Survived"])

# Get the raw p-values for each feature, and transform from p-values into scores
scores = -np.log10(selector.pvalues_)

# Plot the scores.  See how "Pclass", "Sex", "Title", and "Fare" are the best?
plt.bar(range(len(predictors)), scores)
plt.xticks(range(len(predictors)), predictors, rotation='vertical')
plt.show()

¿Qué está haciendo k = 5, ya que nunca se usa (el gráfico todavía enumera todas las características, ya sea que use k = 1 o k = "todas")? ¿Cómo determina las mejores características, son independientes del método que uno quiere usar (ya sea regresión logística, bosques aleatorios o lo que sea)?

usuario
fuente
Seleccione características de acuerdo con los k puntajes más altos.
Srini

Respuestas:

11

La clase SelectKBest solo puntúa las características usando una función (en este caso f_classif pero podría ser otras) y luego "elimina todas las características excepto la k con la puntuación más alta". http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest

Por lo tanto, es una especie de contenedor, lo importante aquí es la función que utiliza para calificar las características.

Para otras técnicas de selección de características en sklearn, lea: http://scikit-learn.org/stable/modules/feature_selection.html

Y sí, f_classif y chi2 son independientes del método predictivo que utiliza.

pgalilea
fuente
2

El parámetro k es importante si usa selector.fit_transform (), que devolverá una nueva matriz donde el conjunto de características se ha reducido a la mejor 'k'.

Chris Thompson
fuente