# 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()