简介
在本实验中,我们将探索流形学习,这是一种非线性降维方法。降维常用于可视化高维数据集,因为在三维以上的数据中进行解释可能很困难。流形学习算法旨在找到保留底层结构的数据的低维表示。
在本实验中,我们将使用 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)。我们将这些算法应用于各种数据集并比较了它们的结果。通过使用流形学习,我们可以深入了解复杂数据集的结构,并更有效地分析和可视化高维数据。