среда, 28 августа 2024 г.

ML, Umap, k-means

# UMAP (Uniform Manifold Approximation and Projection) действительно изменяет расположение точек,
# но его основная цель - это сохранить топологическую структуру данных во вложенном пространстве.
# Вот ключевые моменты:
# Структура данных:
# UMAP стремится сохранить расстояния между точками, особенно те,
# которые находятся ближе друг к другу.
# Проектирование:
# UMAP преобразует высокомерные данные в двумерное или трёхмерное пространство,
# сохраняя эту структуру.
# Не изменяет кластеры: Основная функция UMAP - это визуализация, а не изменение кластеров.
# Он не переформатирует или "пересчитывает" кластеры, найденные k-means.
# Улучшает визуализацию: UMAP помогает лучше представить распределение данных и взаимосвязь между кластерами.
#
# Что происходит на графиках
# Когда вы видите различия между графиками после PCA и после UMAP:
# Глобальная структура: UMAP сохраняет общее распределение кластеров, найденных k-means.
# Местная детальность: UMAP может сделать границы кластеров более четкими и ровными.
# Расположение внутри кластеров: Иногда точки могут переместиться внутри кластеров,
# но это не изменяет их принадлежность к кластерам.
# Сравнение с оригинальным распределением: Если сравнить графики UMAP и PCA, можно увидеть,
# что UMAP часто дает более компактные и хорошо разделенные кластры.

# Результаты
#
# Оригинальные данные и данные после PCA будут показывать примерно одинаковое распределение кластеров.
# Данные после UMAP будут выглядеть более компактными и четко разделенными.
# Количество точек в каждом кластере останется тем же, что было найдено k-means.
#
# Заключение
#
# UMAP действительно изменяет расположение точек, но не переформатирует кластеры, найденные k-means.
# Он улучшает визуализацию, сохраняя структуру данных.
#
# Основная функция UMAP - это создание наглядной карты высокомерных данных,
# а не изменение алгоритмов кластеризации. Это позволяет лучше интерпретировать
# результаты k-means и других методов кластеризации.
#
# Таким образом, можно считать, что UMAP просто рисует более информативную карту,
# основанную на результатах k-means, а не пересчитывает кластеры заново.

import numpy as np
from sklearn.cluster import KMeans
from sklearn.manifold import TSNE
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# Генерация данных
np.random.seed(0)
X = np.vstack([
np.random.normal(-10, 1, (50, 2)),
np.random.normal(0, 1, (50, 2)),
np.random.normal(10, 1, (50, 2))
])

# Кластеризация с k-means
kmeans = KMeans(n_clusters=3)
labels = kmeans.fit_predict(X)

# PCA для уменьшения размерности
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# UMAP для визуализации
tsne = TSNE(n_components=2, random_state=42)
X_tsne = tsne.fit_transform(X_pca)

# Визуализация
fig, ax = plt.subplots(1, 3, figsize=(15, 5))

ax[0].scatter(X[:, 0], X[:, 1], c=labels)
ax[0].set_title('Оригинальные данные')

ax[1].scatter(X_pca[:, 0], X_pca[:, 1], c=labels)
ax[1].set_title('После PCA')

ax[2].scatter(X_tsne[:, 0], X_tsne[:, 1], c=labels)
ax[2].set_title('После UMAP')

plt.tight_layout()
plt.show()

Комментариев нет:

Отправить комментарий