1
resposta

Por que nao usar SEED?

Por qual motivo o professor nao fez o uso do SEED nessa etapa utilizando SelecKBest?

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

SEED = 123143
random.seed(SEED)

selecionar_kmelhores = SelectKBest(chi2, k=5)

train_x, test_x, train_y, test_y = train_test_split(exames6, diagnostico, test_size=0.3)

selecionar_kmelhores.fit(train_x, train_y)
train_kbest = selecionar_kmelhores.transform(train_x)
test_kbest = selecionar_kmelhores.transform(test_x)

Meu resultado apos treinar o modelo:

SEED = 123143
random.seed(SEED)

classificador = RandomForestClassifier(n_estimators=100)
classificador.fit(train_kbest, train_y)

print(f'A acuracia do modelo RandomForestClassifier com apenas 5 exames: {round(classificador.score(test_kbest, test_y)*100,2)}%')  # ira retornar uma valor de acuracia

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá, Carlos! Tudo bem com você?

Desde já peço desculpa pela demora em responder o seu tópico.

Sua pergunta é muito relevante e mostra que você está atento aos detalhes!

O uso do SEED (ou semente) é uma prática comum para garantir a reprodutibilidade dos resultados em experimentos que envolvem processos aleatórios, como a divisão de dados em conjuntos de treino e teste ou a inicialização de um algoritmo de aprendizado de máquina, como o RandomForestClassifier.

No código que você compartilhou, o SEED é usado para inicializar o gerador de números aleatórios do Python (com a função random.seed(SEED)) antes de dividir os dados em conjuntos de treino e teste. Isso garante que a divisão será sempre a mesma, desde que o SEED seja o mesmo.

No entanto, o método SelectKBest do sklearn, que é usado para selecionar as K melhores características, não envolve nenhum processo aleatório. Ele simplesmente calcula a pontuação das características usando a função chi2 e seleciona as k características com as maiores pontuações.

Portanto, o resultado do SelectKBest será sempre o mesmo, desde que os dados de entrada e o número k de características a serem selecionadas sejam os mesmos. Por isso, não é necessário definir um SEED para o SelectKBest.

Espero ter esclarecido esse ponto. Caso tenha mais dúvidas acerta deste tópico, estarei à disposição para ajudá-lo.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.