2
私はpysparkで行列の乗算を行う必要がありますが、DenseMatrixで行う方法は見つけられません。次のエラーで例えばpyspark.mllib DenseMatrixの乗算
from pyspark.mllib.linalg import DenseMatrix
Q = DenseMatrix(nfeatures, nfeatures, [1, 0, 0, 0, 1, 0, 0, 0, 1])
w = DenseMatrix(nfeatures, 1, [0, 0, 0])
print(Q * w)
結果:私が間違っているのは何
TypeError: unsupported operand type(s) for *: 'DenseMatrix' and 'DenseMatrix'
?行列の乗算を行う方法はありますか? pysparkストリーミングでこれを行う通常の方法は何ですか?
ご迷惑をおかけして申し訳ありません。
敬具、 ノエリア
ありがとうございます。私は 'numArray()'を標準のnumpy関数を使うように変換すると仮定しますが、乗算の際に並列処理を中止しますか?私はBlockMatrixの使用をお勧めしますあなたの応答[ここ](http://stackoverflow.com/questions/37766213/spark-matrix-multiplication-with-python)を見ました。ポスターがBlockMatrixに変換されず、並列化された方法で乗算を行うことはできますか? – Rhubarb
@Rhubarb 'pyspark。{ml | mllib} .lengthg.DenseMatrix'はまったく配布されていません。並列化は、下層の線形代数ライブラリに依存します。 'BlockMatrix'への変換に関して - データがメモリに収まる限り、良いネイティブバインディングを持つ行列の乗算は、より速く発注されます。このような変換はほとんど意味がありません。しかし、技術的には可能です。 – zero323
ありがとう、それは私が考えていたものです。メモリに収まる限り、ベクトル化された操作を「並列化」しようとしても意味がありません。右? @ Rhubarb Yeah。 – Rhubarb