Introdução
Neste laboratório, utilizaremos a biblioteca scikit-learn para treinar uma floresta aleatória no conjunto de dados Olivetti Faces e avaliar a importância das características baseada na impureza. Usaremos as importâncias das características para criar um mapa de calor das importâncias dos pixels. Também vamos paralelizar a construção e o cálculo das previsões em múltiplas tarefas.
Dicas da VM
Após o arranque da VM, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para a prática.
Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar o carregamento. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se tiver problemas durante o aprendizado, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.
Carregar os dados e ajuste do modelo
Começamos carregando o conjunto de dados Olivetti Faces e limitando o conjunto de dados para conter apenas as cinco primeiras classes. Em seguida, treinamos uma floresta aleatória no conjunto de dados e avaliamos a importância das características baseada na impureza. Definiremos o número de núcleos a utilizar para as tarefas.
from sklearn.datasets import fetch_olivetti_faces
## Selecionamos o número de núcleos a utilizar para o ajuste paralelo do modelo de floresta. `-1` significa utilizar todos os núcleos disponíveis.
n_jobs = -1
## Carregar o conjunto de dados de rostos
data = fetch_olivetti_faces()
X, y = data.data, data.target
## Limitar o conjunto de dados a 5 classes.
mask = y < 5
X = X[mask]
y = y[mask]
## Um classificador de floresta aleatória será ajustado para calcular as importâncias das características.
from sklearn.ensemble import RandomForestClassifier
forest = RandomForestClassifier(n_estimators=750, n_jobs=n_jobs, random_state=42)
forest.fit(X, y)
Avaliar a Importância das Características
Avaliamos a importância das características com base na diminuição média da impureza (MDI). As importâncias das características são fornecidas pelo atributo ajustado feature_importances_ e são calculadas como a média e o desvio padrão da acumulação da diminuição da impureza em cada árvore.
import time
import matplotlib.pyplot as plt
start_time = time.time()
img_shape = data.images[0].shape
importances = forest.feature_importances_
elapsed_time = time.time() - start_time
print(f"Elapsed time to compute the importances: {elapsed_time:.3f} seconds")
imp_reshaped = importances.reshape(img_shape)
plt.matshow(imp_reshaped, cmap=plt.cm.hot)
plt.title("Importâncias dos pixels usando valores de impureza")
plt.colorbar()
plt.show()
Interpretar o Mapa de Calor
O mapa de calor mostra as importâncias dos pixels. Quanto mais quente o pixel, mais importante ele é. Podemos observar os pixels importantes que contribuem para a classificação do conjunto de dados Olivetti Faces.
Resumo
Neste laboratório, aprendemos como treinar uma floresta aleatória no conjunto de dados Olivetti Faces e avaliar a importância das características com base na impureza. Criamos um mapa de calor das importâncias dos pixels e observamos os pixels importantes que contribuem para a classificação do conjunto de dados Olivetti Faces.