Python Spark-将数据帧转换为行矩阵以有效计算所有对的相似性
我有一个大的数据框架,里面充满了用户和项目之间的关系,如下所示:Python Spark-将数据帧转换为行矩阵以有效计算所有对的相似性,python,apache-spark,pyspark,apache-spark-mllib,recommendation-engine,Python,Apache Spark,Pyspark,Apache Spark Mllib,Recommendation Engine,我有一个大的数据框架,里面充满了用户和项目之间的关系,如下所示: item1 item2 user1 0 1 user2 1 0 并希望有效地解决所有对的相似性问题 我发现,如果使用RowMatrix对象,我可以使用pyspark.mllib模块的column方法 由于我用DataFrame解决这个问题的每一种方法似乎都非常低效,我想知道从我的DataFrame获得RowMatrix的最佳方法 或者,在最好的情况下,如果我遗漏了什么
item1 item2
user1 0 1
user2 1 0
并希望有效地解决所有对的相似性问题
我发现,如果使用RowMatrix
对象,我可以使用pyspark.mllib
模块的column
方法
由于我用DataFrame
解决这个问题的每一种方法似乎都非常低效,我想知道从我的DataFrame
获得RowMatrix
的最佳方法
或者,在最好的情况下,如果我遗漏了什么,并且有更好的方法来解决数据帧
的所有对相似性问题,我很乐意听到它。在读了一点关于行矩阵的内容后,看起来您需要将数据帧转换为RDD
为此,您可以使用:
val rows = df.content.rdd.map{ case row =>
Vectors.dense(row.toSeq.toArray.map{
x => x.asInstanceOf[Integer]
})
}.collect
然后在代码中使用行
我希望这会有所帮助。如其他答案中所述,无法直接将数据帧
转换为行矩阵
。首先需要获得一个RDD
对象
要在Python上执行此操作,请执行以下操作:
your_rdd = your_dataframe.rdd.map(list)
your_rowmatrix = RowMatrix(your_rdd)
我可以展示获取行矩阵
的方法,但是如果你能用一个例子来解释你想解决的问题,我可以尝试通过数据帧
本身来解决。你好,Mayank,谢谢你的回答。想知道您获取行矩阵
的方法,即使您通过数据帧
解决了我的问题。无论如何,我想要的是得到与我的数据帧中的每一行相似的顶部行。我想使用Spark实现的方法,但只能与RowMatrix
一起使用:有输出形状的示例吗?这是sound Scala