Визуализация высокомерных данных с использованием t-SNE

Machine LearningMachine LearningBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

t-SNE (t-Distributed Stochastic Neighbor Embedding) — это метод понижения размерности, используемый для визуализации высокомерных наборов данных. В этом руководстве вы узнаете, как использовать t-SNE для визуализации наборов данных с использованием библиотеки scikit-learn для Python.

Советы по работе с ВМ

После запуска ВМ нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49314{{"Визуализация высокомерных данных с использованием t-SNE"}} end

Импортируем библиотеки

Начнем с импорта необходимых библиотек для этого руководства.

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.