1
resposta

[Bug] Desafio 4 da aula 3 curso: Classificação: validação de modelos e métricas de avaliação

Estava fazendo os desafios da aula 3 e correu tudo bem até o desafio 4 onde ocorreu um problema.

Desafio 4 Avalie o desempenho dos modelos utilizando a validação cruzada (cross_val_score) com o método LeaveOneOut.

O método LeaveOneOut vai gerar um modelo para cada uma das linhas da base de dados, portanto a lista de resultados terá taxa de acerto apenas de 0 ou 1 para cada modelo. Dessa forma, extraia apenas a média do resultado, sem utilizar o intervalo de confiança.

Código:

from sklearn.model_selection import LeaveOneOut

def acuracia(modelo, resultado):
  media = resultado.mean()
  print(f'Acurácia média {modelo}: {media}')

arvore = DecisionTreeClassifier(max_depth=3)
random_forest = RandomForestClassifier(max_depth=2)

loo = LeaveOneOut()

resultado_arvore = cross_val_score(arvore, x, y, cv=loo)
resultado_rf = cross_val_score(random_forest, x, y, cv=loo)

acuracia('Árvore de Decisão', resultado_arvore)
acuracia('Random forest', resultado_arvore)

O código em si não da erro necessariamente, mas quando chega a parte de executar o trecho do código "resultado_rf" ele fica rodando eternamente e não mostra os resultados, mas se eu comento os trechos referentes ao resultado_rf e executo o da arvore de decisão ele funciona normalmente. Como corrigir isso?

1 resposta

Oi Breno, tudo bem?

O problema que você está enfrentando pode estar relacionado ao tempo de execução da validação Leave-One-Out para o modelo RandomForestClassifier. Isso acontece porque o Leave-One-Out cria um modelo para cada amostra nos dados, o que leva muito tempo, especialmente para o RandomForest, que é um modelo mais complexo.

Existem algumas formas para contornar essa situação, você pode usar um conjunto de dados menor para testes, o que ajuda a verificar se o código funciona sem demorar tanto. Outra opção é usar outras formas de validação, como o KFold, que divide os dados de uma forma menos intensa e é mais rápido que o Leave-One-Out.

Espero ter esclarecido.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

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