2
我有两个稀疏矩阵(创建于sklearn
HashVectorizer
,来自两组特征 - 每组对应一个特征)。我想连接它们以便稍后将它们用于集群。但是,由于两个矩阵不具有相同的行尺寸,因此我正面临维度问题。堆叠两个不同尺寸的稀疏矩阵
下面是一个例子:
Xa = [-0.57735027 -0.57735027 0.57735027 -0.57735027 -0.57735027 0.57735027
0.5 0.5 -0.5 0.5 0.5 -0.5 0.5
0.5 -0.5 0.5 -0.5 0.5 0.5 -0.5
0.5 0.5 ]
Xb = [-0.57735027 -0.57735027 0.57735027 -0.57735027 0.57735027 0.57735027
-0.5 0.5 0.5 0.5 -0.5 -0.5 0.5
-0.5 -0.5 -0.5 0.5 0.5 ]
两个Xa
和Xb
是<class 'scipy.sparse.csr.csr_matrix'>
类型。形状是Xa.shape = (6, 1048576) Xb.shape = (5, 1048576)
。我得到的错误是(我现在知道为什么会发生):
X = hstack((Xa, Xb))
File "/usr/local/lib/python2.7/site-packages/scipy/sparse/construct.py", line 464, in hstack
return bmat([blocks], format=format, dtype=dtype)
File "/usr/local/lib/python2.7/site-packages/scipy/sparse/construct.py", line 581, in bmat
'row dimensions' % i)
ValueError: blocks[0,:] has incompatible row dimensions
有没有办法来堆叠稀疏矩阵,尽管他们的不规则尺寸是多少?也许有一些填充?
我已经看着这些帖子:
可您发布的矩阵Xa和Xb的形状? –
更新后的形状。 – user1717931
我想我找到了解决方法:使用颠簸连接并将结果转换为csr_matrix。学习更多,看看这是否可行。 Xc = np.concatenate([Xa.data,Xb.data]),然后执行:sm = sparse.csr_matrix(Xc)。 – user1717931