Введение
t-SNE (t-Distributed Stochastic Neighbor Embedding) — это метод понижения размерности, используемый для визуализации высокомерных наборов данных. В этом руководстве вы узнаете, как использовать t-SNE для визуализации наборов данных с использованием библиотеки scikit-learn для Python.
Советы по работе с ВМ
После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортируем библиотеки
Начнем с импорта необходимых библиотек для этого руководства.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import NullFormatter
from sklearn import manifold, datasets
from time import time
Создаем данные
Мы создадим три различных набора данных, чтобы продемонстрировать использование t-SNE. Первый набор данных будет представлять собой две концентрические окружности.
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
Визуализируем данные
Мы можем визуализировать набор данных с концентрическими окружностями с помощью диаграммы рассеяния.
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")
Применяем t-SNE к данным
Далее мы применим t-SNE к набору данных с концентрическими окружностями.
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()
Визуализируем результаты t-SNE
Наконец, мы можем визуализировать результаты t-SNE с использованием диаграммы рассеяния.
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")
Повторяем для других наборов данных
Мы можем повторить шаги 2-5 для других наборов данных, таких как S-образ и 2D-одномерная сетка.
Резюме
В этом руководстве представлены пошаговые инструкции по использованию t-SNE для визуализации высокомерных наборов данных с использованием библиотеки scikit-learn для Python. Мы узнали, как создавать данные, визуализировать их, применять t-SNE к данным и визуализировать результаты t-SNE.