随机投影降维

Machine LearningMachine LearningBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将使用scikit-learn库探索降维中的随机投影。随机投影是一种可用于降低数据维度,同时保留样本间成对距离的技术。这对于加速机器学习算法中的计算和减少内存使用可能很有用。

虚拟机使用提示

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

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-71133{{"随机投影降维"}} end

导入所需库

让我们从导入本实验所需的库开始。

import numpy as np
from sklearn import random_projection

生成随机数据

接下来,让我们生成一些可用于降维的随机数据。

X = np.random.rand(100, 10000)

在这里,我们生成了一个二维数组 X,它有100个样本和10000个特征。这将是我们原始的高维数据。

高斯随机投影

现在,让我们应用高斯随机投影来降低数据的维度。

transformer = random_projection.GaussianRandomProjection()
X_new = transformer.fit_transform(X)

在这一步中,我们创建了一个 GaussianRandomProjection 类的实例,并将其应用于我们的数据 X。然后,我们通过调用 fit_transform 方法来应用变换。结果存储在 X_new 变量中。

稀疏随机投影

接下来,让我们尝试另一种称为稀疏随机投影的随机投影类型。

transformer = random_projection.SparseRandomProjection()
X_new = transformer.fit_transform(X)

在这里,我们创建了一个 SparseRandomProjection 类的实例,并使用 fit_transform 方法将其应用于我们的数据 X。结果存储在 X_new 变量中。

逆变换

随机投影变换器有一种计算投影矩阵逆矩阵的选项。让我们通过对投影后的数据应用逆变换来探索此功能。

transformer = random_projection.SparseRandomProjection(compute_inverse_components=True)
X_new = transformer.fit_transform(X)

## 计算逆变换
X_new_inversed = transformer.inverse_transform(X_new)

在这一步中,我们创建了一个 SparseRandomProjection 类的实例,并将 compute_inverse_components 参数设置为 True。然后,我们将变换器应用于数据 X 并进行变换。最后,我们通过对投影后的数据 X_new 调用 inverse_transform 方法来计算逆变换。

验证

为了验证逆变换的正确性,我们可以将原始数据 X 与逆变换的结果进行比较。

X_new_again = transformer.transform(X_new_inversed)
np.allclose(X_new, X_new_again)

在这里,我们将变换应用于逆变换后的数据 X_new_inversed,并使用 np.allclose 函数检查它是否等于原始的投影数据 X_new

总结

在这个实验中,我们学习了如何使用scikit-learn库进行随机投影以降低维度。我们探索了高斯随机投影和稀疏随机投影技术。我们还学习了如何计算投影数据的逆变换以恢复原始数据。随机投影可以成为机器学习任务中降低高维数据维度的有用工具。