ola, tudo bem ?
Como posso saber quais as variaveis escolhidas pelo Select K best? e se possivel, quais escolhidas no RFE
ola, tudo bem ?
Como posso saber quais as variaveis escolhidas pelo Select K best? e se possivel, quais escolhidas no RFE
Olá, João Vitor! Tudo tranquilo?
Vou mostrar aqui uma das soluções para a pergunta, caso não seja exatamente o que você procura solicito que entre novamente em contato por aqui, tá bem?
Vamos dividir em duas partes, uma para o SelectKBest e outra para o RFE.
Quando consultamos a documentação, podemos ver que há um método chamado get_support() que nos retorna um array de True ou False, onde True indica que o atributo está selecionado e False indica que o atributo não está selecionado, ou um array de inteiros com o índice das colunas selecionadas.
Então podemos fazer a seleção da seguinte forma:
selecao_variaveis = selecionar_kmelhores.get_support()
selecao_variaveis
Saída:
array([False, False, True, False, False, False, False, False, False,
False, False, True, True, False, False, False, False, False,
False, True, False, True, False, False, False, False, False,
False])
Caso não sua intenção obter um array de booleanos podemos fazer a seleção passando o parâmetro indices=False
que vai nos retornar quais colunas foram selecionadas:
selecao_variaveis = selecionar_kmelhores.get_support(indices=True)
selecao_variaveis
Saída:
array([ 2, 11, 12, 19, 21], dtype=int64)
Esses valores inteiros são exatamente os índices colunas selecionadas.
Agora queremos saber exatamente quais são esses atributos/colunas, que são os exames, que foram selecionados:
colunas_selecionadas = treino_x.columns[selecao_variaveis]
colunas_selecionadas
Saída:
Index(['exame_5', 'exame_14', 'exame_15', 'exame_22', 'exame_25'], dtype='object')
Só lembrando que algumas colunas de exames foram removidas no seguinte trecho de código: valores_exames_v1.drop(columns=['exame_4', 'exame_29', 'exame_3', 'exame_24'])
Logo os 5 melhores exames, utilizando o SelectKBest, usados para nossa classificação são: 'exame_5', 'exame_14', 'exame_15', 'exame_22', 'exame_25' .
Na documentação do RFE, vemos que também há o método get_support() que nos retorna exatamente a mesma coisa que o get_support() do SelectKBest. Farei a seleção igual a segunda forma, mas primeira forma apresentada também é válida.
selecao_rfe = selecionador_rfe.get_support(indices=True)
selecao_rfe
Saída:
array([ 5, 6, 19, 21, 25], dtype=int64)
Imprimindo as colunas selecionadas pelo RFE:
colunas_selecionadas_rfe = treino_x.columns[selecao_rfe]
colunas_selecionadas_rfe
Saída:
Index(['exame_8', 'exame_9', 'exame_22', 'exame_25', 'exame_30'], dtype='object')
Logo os 5 melhores exames, utilizando o RFE, usados para nossa classificação são: 'exame_8', 'exame_9', 'exame_22', 'exame_25', 'exame_30' .
Espero ter ajudado, mas se ainda persistir alguma dúvida estou sempre à disposição.
:)