Visualize Dados de Alta Dimensionalidade com t-SNE

Beginner

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

Introdução

t-SNE (t-Distributed Stochastic Neighbor Embedding) é uma técnica de redução de dimensionalidade usada para visualizar conjuntos de dados de alta dimensionalidade. Este tutorial guiará você pelo processo de usar o t-SNE para visualizar conjuntos de dados usando a biblioteca scikit-learn do Python.

Dicas da Máquina Virtual

Após o término da inicialização da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação de operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão e resolveremos prontamente o problema para você.

Importar Bibliotecas

Começamos importando as bibliotecas necessárias para este tutorial.

import numpy as np
import matplotlib.pyplot as plt

from matplotlib.ticker import NullFormatter
from sklearn import manifold, datasets
from time import time

Criar Dados

Criaremos três conjuntos de dados diferentes para ilustrar o uso do t-SNE. O primeiro conjunto de dados será dois círculos concêntricos.

n_samples = 150
n_components = 2

X, y = datasets.make_circles(
    n_samples=n_samples, factor=0.5, noise=0.05, random_state=0
)

red = y == 0
green = y == 1

Visualizar Dados

Podemos visualizar o conjunto de dados de círculos concêntricos usando um gráfico de dispersão.

ax = plt.subplot(1, 1, 1)
ax.scatter(X[red, 0], X[red, 1], c="r")
ax.scatter(X[green, 0], X[green, 1], c="g")
ax.xaxis.set_major_formatter(NullFormatter())
ax.yaxis.set_major_formatter(NullFormatter())
plt.axis("tight")

Aplicar t-SNE aos Dados

Em seguida, aplicaremos t-SNE ao conjunto de dados de círculos concêntricos.

t0 = time()
tsne = manifold.TSNE(
    n_components=n_components,
    init="random",
    random_state=0,
    perplexity=perplexity,
    n_iter=300,
)
Y = tsne.fit_transform(X)
t1 = time()

Visualizar Resultados do t-SNE

Finalmente, podemos visualizar os resultados do t-SNE usando um gráfico de dispersão.

ax = plt.subplot(1, 1, 1)
ax.scatter(Y[red, 0], Y[red, 1], c="r")
ax.scatter(Y[green, 0], Y[green, 1], c="g")
ax.xaxis.set_major_formatter(NullFormatter())
ax.yaxis.set_major_formatter(NullFormatter())
plt.axis("tight")

Repetir para Outros Conjuntos de Dados

Podemos repetir as etapas 2-5 para outros conjuntos de dados, como uma curva em S e uma grade uniforme 2D.

Resumo

Este tutorial forneceu um guia passo a passo para usar o t-SNE para visualizar conjuntos de dados de alta dimensionalidade usando a biblioteca scikit-learn do Python. Aprendemos como criar dados, visualizar dados, aplicar t-SNE aos dados e visualizar os resultados do t-SNE.