from sklearn.model_selection import GridSearchCV, KFold
from sklearn.ensemble import RandomForestRegressor
import pandas as pd
# Exibe valores float com 3 casas decimais
pd.options.display.float_format = '{:.3f}'.format
# Criação do validador cross-validation
cv = KFold(n_splits=5, shuffle=True, random_state=42)
# Define os parâmetros para o GridSearch (exemplo)
param_grid = {
'n_estimators': [100, 200],
'max_depth': [5, 10, None],
'min_samples_split': [2, 5],
'min_samples_leaf': [1, 2]
}
# Cria e ajusta o GridSearchCV
model_grid = GridSearchCV(
RandomForestRegressor(random_state=42),
param_grid=param_grid,
scoring='r2',
cv=cv
)
# Ajuste com os dados de treino
model_grid.fit(X_train, y_train)
# Previsão com o melhor modelo
y_pred_model_grid = model_grid.predict(X_test)
# Cálculo das métricas do modelo otimizado
metricas_model_grid = calcular_metricas_regressao(y_test, y_pred_model_grid)
# Exibe os melhores hiperparâmetros encontrados
print("Melhores parâmetros encontrados pelo GridSearchCV:")
print(model_grid.best_params_)
# --- Atualização do DataFrame de resultados ---
# Se quiser adicionar uma métrica de outro modelo com 'count' previamente definido:
# Exemplo: count = 10 (ou outro valor que você usou antes)
# results_df[f'Variáveis: {count}'] = list(metricas.values())
# Renomeia as colunas já existentes, se necessário
results_df.columns = [f'Variáveis: {col}' if not str(col).startswith('Variáveis:') else col for col in results_df.columns]
# Adiciona os resultados do modelo otimizado
results_df['Modelo Otimizado'] = list(metricas_model_grid.values())
# Exibe o DataFrame de resultados finais
print("\nDesempenho comparado dos modelos:")
display(results_df)
# Exibe também as métricas do modelo otimizado individualmente
print("\nMétricas detalhadas do modelo otimizado:")
for metrica, valor in metricas_model_grid.items():
print(f"{metrica}: {valor:.3f}")