Olá Guilherme! Tudo tranquilo?
Desculpe pela demora em dar retorno.
Sim, você pode omitir o primeiro fit
sem qualquer implicação no seu resultado.
Conforme a documentação do RFE, é solicitado que o parâmetro estimator seja um estimador de aprendizado supervisionado (que é quando o conjunto de treinamento que é fornecido já inclui as soluções desejadas) que contenha o método fit
capaz de fornecer informações sobre a imporância das features (características) usadas.
Mas antes, o que seria um estimador? É qualquer objeto que tenha a capacidade de estimar alguns parâmetros com base em algum conjunto de dados. A estimativa de fato é realizada pelo método fit
, por isso a necessidade do estimador possuir tal método, passando os conjunto de dados treino_x
e treino_y
(no exemplo mostrado em aula).
Logo como o estimador usado é o RandomForestClassifier
e possui o método fit
, pode passa-lo diretamente para o parâmetro estimator da função RFE sem precisar executar um fit
antes. Abaixo uma das formas de como ficaria o código:
from sklearn.feature_selection import RFE
from numpy import random
SEED = 1234
random.seed(SEED)
treino_x, teste_x, treino_y, teste_y = train_test_split(valores_exame_v6, diagnostico, test_size=0.3)
classificador = RandomForestClassifier(n_estimators=100, random_state=1234)
# Pegando as 5 melhores features:
selecionador_rfe = RFE(estimator = classificador, n_features_to_select=5, step=1)
selecionador_rfe.fit(treino_x, treino_y)
treino_rfe = selecionador_rfe.transform(treino_x)
teste_rfe = selecionador_rfe.transform(teste_x)
classificador.fit(treino_rfe, treino_y)
# calculando a acurácia:
print(f"{classificador.score(teste_rfe, teste_y)*100:.2f} %")
Saída
90.06 %
Caso surja alguma dúvida estou à disposição para ajudar.
:)
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!