umap算法_Python—UMAP流形数据降维工具简介
umap簡(jiǎn)介
2018年McInnes提出了算法,UMAP(Uniform Manifold Approximation and Projection for Dimension Reduction,一致的流形逼近和投影以進(jìn)行降維)。 一致的流形近似和投影(UMAP)是一種降維技術(shù),類似于t-SNE,可用于可視化,但也可用于一般的非線性降維。 該算法基于關(guān)于數(shù)據(jù)的三個(gè)假設(shè):數(shù)據(jù)均勻分布在黎曼流形上(Riemannian manifold);
黎曼度量是局部恒定的(或可以這樣近似);
流形是局部連接的。
根據(jù)這些假設(shè),可以對(duì)具有模糊拓?fù)浣Y(jié)構(gòu)的流形進(jìn)行建模。 通過(guò)搜索具有最接近的等效模糊拓?fù)浣Y(jié)構(gòu)的數(shù)據(jù)的低維投影來(lái)找到嵌入。
相對(duì)于t-SNE,其主要特點(diǎn):降維快準(zhǔn)狠。
論文:McInnes, L, Healy, J, UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction, ArXiv e-prints 1802.03426, 2018
同時(shí)其作者開(kāi)源實(shí)現(xiàn)代碼。
安裝
pip install umap-learn
基本使用
以sklearn內(nèi)置的Digits Data這個(gè)數(shù)字手寫(xiě)識(shí)別數(shù)據(jù)庫(kù)為例。
Digits Data每個(gè)數(shù)字是64維的向量,先查看數(shù)據(jù):
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維并繪制散點(diǎn)圖:
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()
從圖上可以看出,相同的數(shù)字大多聚在一起了。
總結(jié)
以上是生活随笔為你收集整理的umap算法_Python—UMAP流形数据降维工具简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android x86 4.4 网络,安
- 下一篇: PTA Python习题 找钱