2016-07-20 11 views
-1

私は格付けはありませんが、購入数(暗黙の情報、スパース行列(sparse matrix))を使用する製品の推奨事項については、行列分解(MLlibのALSを使って正確に) )。トレーニングの前に、クライアントごとにデータセットを標準化したいと考えています(行列が列であり、交差がある量です)。マトリックスには数百万行と数万の列がありますので、できるだけRDDを使用したいと思います。スパース行列RDDの値の標準化

私のデータはタプルのリストに格納されます。

(int, int, int) 

[(Client1, Product1, amount) 
(Client1, Product2, amount) 
(Client2, Product1, amount) 
(Client2, Product3, amount)] 

私は、クライアントが購入した製品の量を標準化したいと思います。私はgroupByKey変換について考えましたが、ここからどこに行くのか分かりません。

EDIT:私はRDDSとALSの利用だっ撮影したアプローチの主な問題は、で利用できる代わりに、データフレームを使用して、メインMLライブラリの(mllibパッケージで入手可能)、RDDS(で動作するように実装しましたmlパッケージ)。 RDDではネストされた変換が利用できないため、DataFramesの使用が大きな助けになりました。

+0

標準化のどのようなあなたが適用したいですか? – jtitusj

答えて

0

これを試してみてください:

>>> from pyspark.mllib.linalg.distributed import * 
>>> from pyspark.mllib.linalg.distributed import * 
>>> 
>>> cm = CoordinateMatrix(rdd.map(lambda (c, p, a): MatrixEntry(c, p, a))) 
>>> irm = cm.toIndexedRowMatrix() 
>>> idxs = irm.rows.map(lambda row: row.index) 
>>> vcs = irm.rows.map(lambda row: row.vector) 
>>> 
>>> nzr = Normalizer(1) 
>>> rows = idxs.zip(nzr.transform(vcs)).map(lambda (index, vector): IndexedRow(index, vector)) 
>>> normalized = IndexedRowMatrix(rows).toCoordinateMatrix().entries. 
関連する問題