【问题标题】:Standarization of values in sparse matrix RDD稀疏矩阵 RDD 中值的标准化
【发布时间】:2016-11-23 14:28:47
【问题描述】:

我想对产品推荐使用矩阵分解(准确地说是在 MLlib 中使用 ALS),我没有评级,但使用购买次数(隐含信息,稀疏矩阵)。在训练之前,我想按客户标准化数据集(矩阵中的行,其中列是产品,交集是数量)。矩阵有几百万行,几万列,所以我想尽可能地使用RDD。

我的数据存储在元组列表中:

(int, int, int)

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

我想标准化客户购买的产品数量。想过groupByKey转换,但不知道从哪里开始。

编辑:我所采用的方法的主要问题是使用 RDD 和 ALS 来处理 RDD(在 mllib 包中可用)而不是使用的主要 ML 库DataFrames(在 ml 包中可用)。由于 RDD 中不支持嵌套转换,因此使用 DataFrame 有很大帮助。

【问题讨论】:

  • 您希望应用哪种标准化?

标签: apache-spark pyspark apache-spark-mllib


【解决方案1】:

试试这个:

>>> 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.

【讨论】:

    猜你喜欢
    • 2021-05-18
    • 1970-01-01
    • 2017-03-31
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多