如何在Python中降低稀疏矩阵的维度

如何在Python中降低稀疏矩阵的维度

矩阵通常由零和非零的组合组成。当一个矩阵主要由零组成时,那么这样的矩阵被称为稀疏矩阵。一个由最大非零数组成的矩阵,这样的矩阵被称为密集矩阵。稀疏矩阵在高维机器学习和深度学习问题中得到了应用。换句话说,当一个矩阵有许多系数为零时,这样的矩阵被称为稀疏矩阵。

我们遇到这种稀疏维度问题的常见领域是

  • 自然语言处理–很明显,在语言模型中,文件的大部分向量元素将是0。
  • 计算机视觉–有时图像会被类似的颜色(例如,可以是背景的白色)所占据,这并不能给我们带来任何有用的信息。

在这种情况下,我们不能有一个大维度的矩阵,因为它会增加问题的时间和空间复杂性,所以建议降低稀疏矩阵的维度。在这篇文章中,让我们讨论一下如何在python中降低稀疏矩阵的维度的实现。

稀疏矩阵的维数可以通过以下方式降低:首先将密集矩阵表示为压缩稀疏行表示,其中稀疏矩阵使用三个一维数组来表示非零值、行的外延和列的索引。然后,通过使用scikit-learn的TruncatedSVD,可以降低稀疏矩阵的维度。

示例:

首先从scikit-learn包中加载内置的数字数据集,使用standardscaler对每个数据点进行标准化。如图所示,使用csr_matrix以稀疏形式表示标准化矩阵。现在从sklearn导入TruncatedSVD,并指定最终输出中所需要的维数。

from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import TruncatedSVD
from scipy.sparse import csr_matrix
from sklearn import datasets
from numpy import count_nonzero
 
# load the inbuild digits dataset
digits = datasets.load_digits()
 
print(digits.data)
 
# shape of the dense matrix
print(digits.data.shape)
 
# standardizing the data points
X = StandardScaler().fit_transform(digits.data)
print(X)
 
# representing in CSR form
X_sparse = csr_matrix(X)
print(X_sparse)
 
# specify the no of output features
tsvd = TruncatedSVD(n_components=10)
 
# apply the truncatedSVD function
X_sparse_tsvd = tsvd.fit(X_sparse).transform(X_sparse)
print(X_sparse_tsvd)
 
# shape of the reduced matrix
print(X_sparse_tsvd.shape)

输出:

如何在Python中降低稀疏矩阵的维度?

代码:

让我们交叉验证原始维度和转换后的维度

print("Original number of features:", X.shape[1])
print("Reduced number of features:", X_sparse_tsvd.shape[1])

输出:

如何在Python中降低稀疏矩阵的维度?

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy教程