Spark MLlib Scala - 从DataLens创建Rowmatrix,如DataSet

时间:2017-04-18 04:05:43

标签: scala apache-spark apache-spark-mllib cosine-similarity mahout-recommender

我正在尝试使用输入数据集来实现余弦相似度来计算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就会失败。

我需要一种可以将数据转换为指示矩阵的方法。

0 个答案:

没有答案