Mesmo depois de assistir as aulas e ler outros tópicos como esse https://cursos.alura.com.br/forum/topico-tempo-de-execucao-106231, ainda não entendi por que devemos fazer um cross-validate depois do GridSearchCV.
Pelo o que eu entendi, o GridSearchCV vai me retornar a melhor combinação de Hyper Parâmetros do modelo. E no processo pra chegar nessa conclusão, ele já vai fazer um cross-validate (KFold, 5 splits).
search = GridSearchCV(RandomForestClassifier(), parameter_space, cv=KFold(n_splits=5, shuffle=True))
Então minhas dúvidas são:
- Por que precisamos fazer outro cross-validate após o GridSearchCV, sendo que já fizemos isso?
- Por que o código do cross_val_score demora tanto, sendo que já sabemos qual é a melhor combinação de parâmetros pro modelo? Ele não deveria demorar menos que o GridSearch, sendo que vai usar apenas uma configuração (ao invés de n combinações definidas no GridSearchCV)?
- Por que passamos "search" (o objeto GridSearchCV) como parâmetro do cross_val_score ao invés de "search.best_estimator_" (apenas o melhor estimator)? (Código abaixo)
VSscores = cross_val_score(search, x_bad_luck, y_bad_luck, cv = KFold(n_splits = 5, shuffle = True))
scores = cross_val_score(search, x_bad_luck, y_bad_luck, cv = KFold(n_splits = 5, shuffle = True))