gpt4 book ai didi

pyspark - 如何使用 DataFrame 在 Spark 中构建坐标矩阵?

转载 作者:行者123 更新时间:2023-12-03 01:24:24 26 4
gpt4 key购买 nike

我正在尝试将 ALS 算法的 Spark 实现用于推荐系统,因此我构建了如下所示的 DataFrame,作为训练数据:

|--------------|--------------|--------------|
| userId | itemId | rating |
|--------------|--------------|--------------|

现在,我想创建一个稀疏矩阵,来表示每个用户和每个项目之间的交互。该矩阵将是稀疏的,因为如果用户和项目之间没有交互,则矩阵中的相应值将为零。因此,最终,大多数值将为零。

但是我怎样才能使用坐标矩阵来实现这一点呢?我说 CoordinationMatrix 是因为我使用 Spark 2.1.1 和 python,并且在文档中,我看到只有当矩阵的两个维度都很大且矩阵非常稀疏时才应使用 CoordinationMatrix。

换句话说,我如何从这个 DataFrame 获取到一个坐标矩阵,其中行是用户,列是项目,评级是矩阵中的值?

最佳答案

CoordinateMatrix 只是 MatrixEntry 的 RDD 的包装器。 MatrixEntry 只是(long、long、float)元组的包装。 Pyspark 允许您从此类元组的 RDD 创建坐标矩阵。如果 userIditemId 字段都是 IntegerTypes,并且 rating 类似于 FloatType,那么创建所需的矩阵就非常简单。

from pyspark.mllib.linalg.distributed import CoordinateMatrix

cmat=CoordinateMatrix(df.rdd.map(tuple))

如果 userIditemId 字段使用 StringType,情况只会稍微复杂一些。您需要首先对这些字符串建立索引,然后将索引传递给 CooperativeMatrix。

关于pyspark - 如何使用 DataFrame 在 Spark 中构建坐标矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44803170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com