我有一个非常大且稀疏的二进制矩阵,其中包含一组样本中某些类的出现次数:
>>> import numpy
>>>
>>> type(data)
<class 'scipy.sparse.dok.dok_matrix'>
>>> data.shape
(23571, 139045)
所以它是23571
个类和139045
个样本。矩阵相当稀疏:
>>> dataGS.getnnz()/(dataGS.shape[0]*dataGS.shape[1]*1.0)
0.000512511985402024
我需要计算共生矩阵,即大小23571 X 23571
的对称矩阵,它在[i,j]
元素中存储类i
与类{{1}一起出现的次数}。我尝试将数据矩阵乘以其转置:
j
但内存不足。是否有另一种构造矩阵的快速方法(显然,我试图避免创建零coocc = data.dot(data.T)
矩阵,然后通过显式循环遍历每个样本并计算对来填充每个23571 X 23571
位置)