如何在Python中降低稀疏矩阵的维度
矩阵通常由零和非零的组合组成。当一个矩阵主要由零组成时,那么这样的矩阵被称为稀疏矩阵。一个由最大非零数组成的矩阵,这样的矩阵被称为密集矩阵。稀疏矩阵在高维机器学习和深度学习问题中得到了应用。换句话说,当一个矩阵有许多系数为零时,这样的矩阵被称为稀疏矩阵。
我们遇到这种稀疏维度问题的常见领域是
- 自然语言处理–很明显,在语言模型中,文件的大部分向量元素将是0。
- 计算机视觉–有时图像会被类似的颜色(例如,可以是背景的白色)所占据,这并不能给我们带来任何有用的信息。
在这种情况下,我们不能有一个大维度的矩阵,因为它会增加问题的时间和空间复杂性,所以建议降低稀疏矩阵的维度。在这篇文章中,让我们讨论一下如何在python中降低稀疏矩阵的维度的实现。
稀疏矩阵的维数可以通过以下方式降低:首先将密集矩阵表示为压缩稀疏行表示,其中稀疏矩阵使用三个一维数组来表示非零值、行的外延和列的索引。然后,通过使用scikit-learn的TruncatedSVD,可以降低稀疏矩阵的维度。
示例:
首先从scikit-learn包中加载内置的数字数据集,使用standardscaler对每个数据点进行标准化。如图所示,使用csr_matrix以稀疏形式表示标准化矩阵。现在从sklearn导入TruncatedSVD,并指定最终输出中所需要的维数。
输出:
代码:
让我们交叉验证原始维度和转换后的维度
输出: