私は2つの疎行列(sklearn
HashVectorizer
から作成され、各組は特徴に対応しています。私は後でそれらをクラスタリングに使用するためにそれらを連結したいと思う。しかし、2つの行列の行次元が同じではないため、次元の問題に直面しています。ここ異なる次元の2つの疎行列を積み重ねる
は一例であり:
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
私は回避策を見つけたと思います:bumpyを使って連結し、その結果をcsr_matrixに変換しました。これがOKかどうかもっと調べる。 Xc = np.concatenate([Xa.data、Xb.data])を実行してからsm = sparse.csr_matrix(Xc)を実行します。 – user1717931