我正在尝试使用输入数据集来实现余弦相似度来计算Item-Item Similairity,如下所示:
UserID,ProductID,Transactions
其中UserID,ProductID为Long值,Transaction为Integer。
我在Spark中关注此示例 - https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/mllib/CosineSimilarity.scala
在上面的例子中,它期望一个密集的Vector作为输入,它被转换为RowMatrix。
你能帮我转换输入数据集吗?
U1,P1,T1
U1,P3,T2
U2,P1,T4
U3,P1,T6
U3,P3,T7
到表格矩阵 -
|P1|P2|P3
u1 |T1| |T2
u2 |T4|T5|
u3 |T6| |T7
我知道我可以创建像这样的CooridnateMatrix的方式 -
val mat = new CoordinateMatrix(transactions.map( entry => MatrixEntry(entry.user,entry.product, entry.txns)))
但是,这个使用实际的用户和产品id值代替Matrix的索引,并且一旦值超出Integer就会失败。
我需要一种可以将数据转换为指示矩阵的方法。