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