我有一个很大的DataFrame,充满了用户和项目之间的关系,像这样:
item1 item2
user1 0 1
user2 1 0
并希望有效地解决所有对相似性问题。
如果使用columnSimilarities
对象,我可以使用pyspark.mllib
模块的RowMatrix
方法。
由于我想出的用DataFrame
解决此问题的每种方法似乎效率都非常低,我想知道从我的{{1} }。
或者,在最佳情况下,如果我丢失了某些东西,并且有一种更好的方法来解决RowMatrix
的全对相似性问题,我很乐意听到。
答案 0 :(得分:0)
在阅读了一些有关df.melt('conc').drop('variable',1).sort_values('conc')
Out[40]:
conc value
0 0 0.1
2 0 0.2
4 0 0.1
1 1 3.0
3 1 3.2
5 1 2.8
的知识之后,您似乎需要将RowMatrix
转换为dataframe
。
为此,您可以使用:
RDD
然后在代码中使用val rows = df.content.rdd.map{ case row =>
Vectors.dense(row.toSeq.toArray.map{
x => x.asInstanceOf[Integer]
})
}.collect
。
我希望这会有所帮助。
答案 1 :(得分:0)
如其他答案中所述,无法将DataFrame
直接转换为RowMatrix
。您首先需要获得一个RDD
对象。
为此在Python上:
your_rdd = your_dataframe.rdd.map(list)
your_rowmatrix = RowMatrix(your_rdd)