计算机系统应用教程网站

网站首页 > 技术文章 正文

Python—UMAP流形数据降维工具 python流量分析

btikc 2024-10-12 10:49:36 技术文章 2 ℃ 0 评论

umap简介

UMAP(Uniform Manifold Approximation and Projection for Dimension Reduction,一致的流形逼近和投影以进行降维)。 一致的流形近似和投影(UMAP)是一种降维技术,类似于t-SNE,可用于可视化,但也可用于一般的非线性降维。 该算法基于关于数据的三个假设:

  • 数据均匀分布在黎曼流形上(Riemannian manifold);
  • 黎曼度量是局部恒定的(或可以这样近似);
  • 流形是局部连接的。

根据这些假设,可以对具有模糊拓扑结构的流形进行建模。 通过搜索具有最接近的等效模糊拓扑结构的数据的低维投影来找到嵌入。

相对于t-SNE,其主要特点:降维快准狠。

论文:McInnes, L, Healy, J, UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction, ArXiv e-prints 1802.03426, 2018

同时其作者开源实现代码。

安装

pip install umap-learn

基本使用

以sklearn内置的Digits Data这个数字手写识别数据库为例。

Digits Data每个数字是64维的向量,先查看数据:

from sklearn.datasets import load_digits

import matplotlib.pyplot as plt

?

digits = load_digits()

fig, ax_array = plt.subplots(20, 20)

axes = ax_array.flatten()

for i, ax in enumerate(axes):

ax.imshow(digits.images[i], cmap='gray_r')

plt.setp(axes, xticks=[], yticks=[], frame_on=False)

plt.tight_layout(h_pad=0.5, w_pad=0.01)

plt.show()

使用umap降至2维并绘制散点图:

reducer = umap.UMAP(random_state=42)

embedding = reducer.fit_transform(digits.data)

print(embedding.shape)

?

plt.scatter(embedding[:, 0], embedding[:, 1], c=digits.target, cmap='Spectral', s=5)

plt.gca().set_aspect('equal', 'datalim')

plt.colorbar(boundaries=np.arange(11)-0.5).set_ticks(np.arange(10))

plt.title('UMAP projection of the Digits dataset')

plt.show()

从图上可以看出,相同的数字大多聚在一起了。

Tags:

猜你喜欢

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表