Importâncias de Pixels com Floresta Paralela de Árvores

Beginner

This tutorial is from open-source community. Access the source code

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.