使用 Scikit-Learn 进行流形学习

Beginner

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

简介

在本实验中,我们将探索流形学习,这是一种非线性降维方法。降维常用于可视化高维数据集,因为在三维以上的数据中进行解释可能很困难。流形学习算法旨在找到保留底层结构的数据的低维表示。

在本实验中,我们将使用 scikit-learn 库对各种数据集执行流形学习。我们将探索不同的算法,并比较它们的性能和输出。

虚拟机提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

等距映射(Isomap)

等距映射(Isomap)算法是最早的流形学习方法之一。它寻求一种低维嵌入,以保持所有点之间的测地距离。

from sklearn.manifold import Isomap

## 创建等距映射(Isomap)算法的实例
isomap = Isomap(n_components=2)

## 将算法应用于数据并将数据转换到低维空间
X_transformed = isomap.fit_transform(X)

局部线性嵌入(Locally Linear Embedding,LLE)

局部线性嵌入(Locally Linear Embedding,LLE)是另一种流形学习算法。它寻求数据的低维投影,以保留局部邻域内的距离。

from sklearn.manifold import LocallyLinearEmbedding

## 创建 LLE 算法的实例
lle = LocallyLinearEmbedding(n_components=2)

## 将算法应用于数据并将数据转换到低维空间
X_transformed = lle.fit_transform(X)

t 分布随机邻域嵌入(t-distributed Stochastic Neighbor Embedding,t-SNE)

t-SNE 是一种流行的流形学习方法,它将数据点的相似度转换为概率。在可视化高维数据方面特别有效。

from sklearn.manifold import TSNE

## 创建 t-SNE 算法的实例
tsne = TSNE(n_components=2)

## 将算法应用于数据并将数据转换到低维空间
X_transformed = tsne.fit_transform(X)

比较结果

比较不同流形学习算法的结果。可视化转换后的数据,以查看算法如何保留数据的底层结构。

import matplotlib.pyplot as plt

## 创建转换后数据的散点图
plt.scatter(X_transformed[:, 0], X_transformed[:, 1], c=y)
plt.title('流形学习')
plt.xlabel('分量 1')
plt.ylabel('分量 2')
plt.show()

总结

流形学习是用于可视化高维数据集的强大工具。它使我们能够在保留底层结构的同时降低数据的维度。在本实验中,我们探索了三种不同的流形学习算法:等距映射(Isomap)、局部线性嵌入(Locally Linear Embedding,LLE)和 t 分布随机邻域嵌入(t-SNE)。我们将这些算法应用于各种数据集并比较了它们的结果。通过使用流形学习,我们可以深入了解复杂数据集的结构,并更有效地分析和可视化高维数据。