Come funziona SelectKBest?


15

Sto guardando questo tutorial: https://www.dataquest.io/mission/75/improving-your-submission

Alla sezione 8, trovando le migliori caratteristiche, mostra il seguente codice.

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()

Cosa sta facendo k = 5, dal momento che non viene mai utilizzato (il grafico elenca ancora tutte le funzionalità, sia che io utilizzi k = 1 o k = "all")? In che modo determina le caratteristiche migliori, sono indipendenti dal metodo che si desidera utilizzare (regressione logistica, foreste casuali o altro)?


Seleziona le caratteristiche in base al punteggio più alto di k .
Srini,

Risposte:


11

La classe SelectKBest ottiene semplicemente il punteggio delle caratteristiche usando una funzione (in questo caso f_classif ma potrebbe essere altre) e quindi "rimuove tutte le funzioni tranne quelle con il punteggio più alto". http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest

Quindi è un tipo di wrapper, la cosa importante qui è la funzione che usi per assegnare un punteggio alle funzionalità.

Per altre tecniche di selezione delle funzionalità in sklearn leggi: http://scikit-learn.org/stable/modules/feature_selection.html

E sì, f_classif e chi2 sono indipendenti dal metodo predittivo che usi.


2

Il parametro k è importante se si utilizza selector.fit_transform (), che restituirà un nuovo array in cui il set di funzionalità è stato ridotto alla migliore 'k'.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.