Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Faça como eu fiz: ajustando modelos de machine learning

# Importar bibliotecas
import matplotlib.pyplot as plt

from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor

# Carregar dataset Diabetes
diabetes = load_diabetes()

X = diabetes.data
y = diabetes.target

# Dividir dados em treino e teste
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.3, random_state=42
)

# -----------------------------
# PARTE 1 - GRID SEARCH
# -----------------------------

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

modelo_arvore = DecisionTreeRegressor(random_state=42)

grid_search = GridSearchCV(
    modelo_arvore,
    param_grid,
    cv=5,
    scoring='neg_mean_squared_error'
)

grid_search.fit(X_train, y_train)

print("Melhores hiperparâmetros encontrados:")
print(grid_search.best_params_)

# -----------------------------
# PARTE 2 - IMPORTÂNCIA DAS FEATURES
# -----------------------------

modelo_rf = RandomForestRegressor(random_state=42)

modelo_rf.fit(X_train, y_train)

importancias = modelo_rf.feature_importances_

nomes_features = diabetes.feature_names

print("\nImportância das Features:")

for nome, importancia in zip(nomes_features, importancias):
    print(f"{nome}: {importancia:.4f}")

# Gráfico
plt.figure(figsize=(10,6))
plt.barh(nomes_features, importancias)

plt.title("Importância das Features na Previsão de Diabetes")
plt.xlabel("Importância")
plt.ylabel("Feature")

plt.show()
1 resposta

Oi, Isis. Tudo bem com você?

O seu código está muito bem montado para realizar o ajuste de hiperparâmetros e também para verificar a importância das features com o Random Forest. O uso dessas ferramentas ajuda bastante a entender o comportamento do modelo e a otimizar os resultados obtidos nos dados.

Quando aplicamos o ajuste de parâmetros e a análise de importância em machine learning, conseguimos observar com mais clareza quais variáveis realmente fazem diferença na hora de prever um valor. No seu caso, o uso do Random Forest para extrair a importância das features traz uma visão direta de quais características do dataset de diabetes tiveram mais peso nas previsões geradas pelo modelo.

Para continuar explorando esse tipo de abordagem, você poderia pensar em como os resultados mudariam se usasse uma árvore de decisão para extrair a importância das features em vez do Random Forest, comparando os valores obtidos pelas duas abordagens.

Parabéns pela dedicação na atividade e por compartilhar sua solução com a turma, o fórum está sempre à disposição para ajudar no que precisar.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!