Visualiser les données à haute dimension avec t-SNE

Beginner

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

Introduction

t-SNE (t-Distribué Embedding de Voisins Stochastiques) est une technique de réduction de dimension utilisée pour visualiser des ensembles de données à haute dimension. Ce tutoriel vous guidera tout au long du processus d'utilisation de t-SNE pour visualiser des ensembles de données à l'aide de la bibliothèque scikit-learn de Python.

Conseils sur la VM

Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.

Importation des bibliothèques

Nous commençons par importer les bibliothèques nécessaires pour ce tutoriel.

import numpy as np
import matplotlib.pyplot as plt

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

Création des données

Nous allons créer trois ensembles de données différents pour illustrer l'utilisation de t-SNE. Le premier ensemble de données sera deux cercles concentriques.

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

Visualisation des données

Nous pouvons visualiser l'ensemble de données de cercles concentriques à l'aide d'un graphique à points.

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")

Appliquer t-SNE aux données

Ensuite, nous allons appliquer t-SNE à l'ensemble de données de cercles concentriques.

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

Visualiser les résultats de t-SNE

Enfin, nous pouvons visualiser les résultats de t-SNE à l'aide d'un graphique à points.

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")

Répéter pour d'autres ensembles de données

Nous pouvons répéter les étapes 2 - 5 pour d'autres ensembles de données, tels qu'une courbe en S et une grille uniforme 2D.

Sommaire

Ce tutoriel a fourni un guide étape par étape pour utiliser t-SNE pour visualiser des ensembles de données à haute dimension à l'aide de la bibliothèque scikit-learn de Python. Nous avons appris à créer des données, à visualiser des données, à appliquer t-SNE à des données et à visualiser les résultats de t-SNE.