# Importa o visualizador de importância de variáveis do Yellowbrick
from yellowbrick.model_selection import FeatureImportances
# Cria o visualizador de importância de atributos para o modelo Random Forest
# relative=False mostra a importância absoluta
# topn=10 exibe as 10 variáveis mais importantes
viz = FeatureImportances(model_rf, relative=False, topn=10)
# Ajusta o visualizador com os dados de treino
viz.fit(X_train, y_train)
# Exibe o gráfico com a importância das variáveis
viz.show()
# Importâncias brutas
importancias = model_rf.feature_importances_
nomes_features = X_train.columns
# Cálculo da porcentagem
total_importancia = importancias.sum()
porcentagem = (importancias / total_importancia) * 100
# Criação do DataFrame com os dados
df_importancia = pd.DataFrame({
'Feature': nomes_features,
'Importância': importancias,
'Importância (%)': porcentagem
}).sort_values(by='Importância', ascending=False)
# Exibição das top 10 variáveis
print("\nTop 10 variáveis mais importantes:")
print(df_importancia.head(10).to_string(index=False, float_format="%.4f"))
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
# Inicializa um DataFrame para armazenar os resultados das métricas
results_df = pd.DataFrame(index=['RMSE', 'MAE', 'R2'])
# Cria o modelo base com profundidade máxima limitada
model_selected_features = RandomForestRegressor(random_state=42, max_depth=5)
# Loop para testar diferentes quantidades de variáveis mais importantes
for count in [1, 5, 10, 15, 20, 25, 30]:
# Seleciona os 'count' primeiros atributos mais importantes
selected_features = df_importancia['Feature'].values[:count]
# Subconjuntos de treino e teste com as features selecionadas
X_train_selected = X_train[selected_features]
X_test_selected = X_test[selected_features]
# Treina o modelo com as features selecionadas
model_selected_features.fit(X_train_selected, y_train)
# Faz previsões
y_pred = model_selected_features.predict(X_test_selected)
# Calcula as métricas
metricas = calcular_metricas_regressao(y_test, y_pred)
# Armazena os resultados no DataFrame
results_df[count] = list(metricas.values())
# Exibe o DataFrame com os resultados
results_df
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
# Inicializa um DataFrame para armazenar os resultados das métricas
results_df = pd.DataFrame(index=['RMSE', 'MAE', 'R2'])
# Cria o modelo base com profundidade máxima limitada
model_selected_features = RandomForestRegressor(random_state=42, max_depth=5)
# Loop para testar diferentes quantidades de variáveis mais importantes
for count in range(10, 16):
# Seleciona os 'count' primeiros atributos mais importantes
selected_features = df_importancia['Feature'].values[:count]
# Subconjuntos de treino e teste com as features selecionadas
X_train_selected = X_train[selected_features]
X_test_selected = X_test[selected_features]
# Treina o modelo com as features selecionadas
model_selected_features.fit(X_train_selected, y_train)
# Faz previsões
y_pred = model_selected_features.predict(X_test_selected)
# Calcula as métricas
metricas = calcular_metricas_regressao(y_test, y_pred)
# Armazena os resultados no DataFrame
results_df[count] = list(metricas.values())
# Exibe o DataFrame com os resultados
results_df
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
# Seleciona as 13 variáveis mais importantes
selected_features = df_importancia['Feature'].values[:13]
# Subconjunto dos dados com as features selecionadas
X_select_features = X[selected_features]
# Divide os dados em treino e teste
X_train, X_test, y_train, y_test = train_test_split(
X_select_features, y, test_size=0.2, random_state=42
)
# Cria e treina o modelo com max_depth limitado
model_selected_features = RandomForestRegressor(random_state=42, max_depth=5)
model_selected_features.fit(X_train, y_train)
# Faz as previsões
y_pred = model_selected_features.predict(X_test)
# Calcula as métricas
metricas = calcular_metricas_regressao(y_test, y_pred)
# Exibe as métricas formatadas
print("Desempenho do modelo com as 13 variáveis mais importantes:\n")
for nome, valor in metricas.items():
print(f"{nome}: {valor:.4f}")