Como o SelectKBest funciona?


15

Estou olhando para este tutorial: https://www.dataquest.io/mission/75/improving-your-submission

Na seção 8, encontrando os melhores recursos, mostra o código a seguir.

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

O que k = 5 está fazendo, uma vez que nunca é usado (o gráfico ainda lista todos os recursos, se eu uso k = 1 ou k = "all")? Como ele determina os melhores recursos, eles são independentes do método que se deseja usar (seja regressão logística, florestas aleatórias ou qualquer outra coisa)?


Selecione os recursos de acordo com as k pontuações mais altas.
Srini

Respostas:


11

A classe SelectKBest apenas pontua os recursos usando uma função (nesse caso, f_classif, mas podem ser outros) e, em seguida, "remove todos os recursos de pontuação mais altos, exceto os k". http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest

Portanto, é um tipo de invólucro, o importante aqui é a função que você usa para pontuar os recursos.

Para outras técnicas de seleção de recursos no sklearn, leia: http://scikit-learn.org/stable/modules/feature_selection.html

E sim, f_classif e chi2 são independentes do método preditivo usado.


2

O parâmetro k é importante se você usar selector.fit_transform (), que retornará uma nova matriz na qual o conjunto de recursos foi reduzido para o melhor 'k'.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.