1
resposta

from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split

california = fetch_california_housing()
X = california.data
y = california.target

Dividindo os dados entre treino e teste

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

from sklearn.tree import DecisionTreeRegressor
from sklearn.model_selection import GridSearchCV

Definição dos hiperparâmetros a serem testados

param_grid = {
'max_depth': [3, 5, 7, 10],
'min_samples_split': [2, 5, 10],
'min_samples_leaf': [1, 2, 4]
}

Criando o modelo

model = DecisionTreeRegressor()

Aplicando Grid Search

grid_search = GridSearchCV(model, param_grid, cv=5, scoring='neg_mean_squared_error')
grid_search.fit(X_train, y_train)

Exibindo os melhores parâmetros encontrados

print(f"Melhores parâmetros: {grid_search.best_params_}")

import pandas as pd
from sklearn.datasets import load_diabetes

Carregar os dados

diabetes = load_diabetes()
X = diabetes.data
y = diabetes.target

Dividir os dados entre treino e teste

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

from sklearn.ensemble import RandomForestRegressor
import matplotlib.pyplot as plt

Treinar o modelo

model = RandomForestRegressor()
model.fit(X_train, y_train)

Obter a importância das features

importances = model.feature_importances_
feature_names = diabetes.feature_names

Criar um gráfico de barras

plt.figure(figsize=(10, 6))
plt.barh(feature_names, importances)
plt.title("Importância das Features")
plt.xlabel("Importância")
plt.ylabel("Feature")
plt.show()

1 resposta

Olá, Ronaldo. Como vai?

Seu código está muito bem estruturado e aborda etapas fundamentais de um projeto de machine learning: a otimização de hiperparâmetros e a interpretabilidade do modelo através da importância das variáveis.

Para complementar sua contribuição, gostaria de destacar alguns pontos técnicos sobre as práticas que você utilizou:

  • Grid Search e Validação Cruzada: Ao configurar o cv=5 no GridSearchCV, você garante que o modelo seja validado em cinco dobras diferentes dos dados. Isso torna a escolha dos melhores parâmetros muito mais robusta, pois evita que o modelo performe bem apenas em uma divisão específica dos dados de treino.
  • Feature Importance: O gráfico de barras que você gerou com o RandomForestRegressor é uma ferramenta essencial de Business Intelligence. Em projetos reais, entender quais fatores (features) mais influenciam o resultado ajuda a equipe de negócios a tomar decisões estratégicas, indo além da simples predição numérica.
  • Escalabilidade: O uso do best_params_ permite que você automatize a escolha do melhor modelo sem precisar de intervenção manual para testar cada combinação.

Uma sugestão prática para enriquecer ainda mais esse fluxo seria realizar a predição final com os dados de teste (X_test) utilizando o melhor estimador encontrado, para verificar como o modelo se comporta com dados que ele nunca viu:

# Utilizando o melhor modelo encontrado pelo Grid Search para prever
melhor_modelo = grid_search.best_estimator_
previsoes = melhor_modelo.predict(X_test)

# Você também pode calcular a métrica de erro final no teste
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_test, previsoes)
print(f"MSE final no teste: {mse}")

Essa validação final é o que confirma se o seu ajuste de hiperparâmetros realmente melhorou a capacidade de generalização do algoritmo.

Espero que possa ter lhe ajudado!