如何使用DataFrame在Spark中构建CoordinateMatrix?

Dimitris Poulopoulos

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

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

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

但是如何使用CoordinateMatrix实现呢?我之所以说CoordinateMatrix是因为我正在使用Spark 2.1.1和python,并且在文档中,我看到仅当矩阵的两个维都很大且矩阵非常稀疏时才应使用CoordinateMatrix。

换句话说,我如何从该DataFrame到达CoordinateMatrix,其中行将是用户,列将是项,而等级将是矩阵中的值?

大卫·韦恩

CoordinateMatrix只是MatrixEntrys的RDD的包装。MatrixEntry只是一个(长,长,浮点)元组的包装。Pyspark允许您从此类元组的RDD创建CoordinateMatrix。如果userIditemId字段都是ratingIntegerTypes,并且和FloatType类似,则创建所需矩阵非常简单。

from pyspark.mllib.linalg.distributed import CoordinateMatrix

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

如果userIdanditemId字段具有StringTypes,则只会稍微复杂一点您需要先为这些字符串建立索引,然后再将索引传递给CoordinateMatrix。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Java连接Spark DataFrame中的所有列?

如何计算Spark Dataframe中的列数?

如何在Dataframe上使用Spark中DataFrameNaFunctions类提供的函数?

如何使用Spark SQL DataFrame在JDBC中持久化window()函数的输出?

没有使用Hive MySQL Metastore中的Spark构建

DBI / Spark:如何将结果存储在Spark Dataframe中?

如何使用Array [Int]将csv文件加载到Spark DataFrame中

如何使用JSON中的选项构建optgroup?

以编程方式将列名称添加到从RDD构建的Spark DataFrame中

如何使用索引字典构建DataFrame?

使用提供的Hadoop构建Spark

如何从Spark DataFrame的列名中删除空格?

如何使用sparklyr在R中操纵Spark Dataframe?

如何在Scala / Spark中使用多个DataFrame中的多个工作表创建excel文件?

在Map列的Spark DataFrame中,如何使用所有键的常量更新值

如何使用Scala将DataSet传递给在Apache Spark中接受DataFrame作为参数的函数?

如何使用Pyspark中的图框和Spark Dataframe中的原始数据获取连接的组件?

如何在MySQL中使用Spark DataFrame

如何使用AssetManager在libGDX中构建ResourceManager

使用 for 循环构建 DataFrame

如何使用 JavaScript 中的函数构建对象

如何在pyspark中读取和写入coordinateMatrix到文件

如何使用 Spark Dataframe 读写 Cassandra 表?

如何使用 Apache Spark 中的列子集减去 DataFrame

如何使用谓词在 JPA 中构建“IN”子句?

如何使用 autotool 在单独的目录中构建

如何在 Spark 中使用 Python 查找 DataFrame 中的分区数量以及如何在 Spark 中使用 Python 在 DataFrame 中创建分区

如何使用 Spark 在 DataFrame 中添加額外的日期列?

如何验证 Dataframe 中的特定列而不使用 spark-sql 干扰其他列?