【问题标题】:Passing long values into MLlib's Rating() method将长值传递给 MLlib 的 Rating() 方法
【发布时间】:2016-04-25 18:57:10
【问题描述】:

我正在尝试使用 Spark 的 MLlib 库构建推荐系统。 (使用斯卡拉) 为了能够使用 ALS train 方法,我需要使用 Rating() 方法(这是包 org.apache.spark.mllib.recommendation.Rating 的一部分)构建一个评级矩阵。该方法需要一个 int 作为用户 id 传递。但是,我正在使用的数据集有 11 位 id,因此当我尝试传递它时会引发错误。

有谁知道是否有某种方法可以将长值传递给 Rating 方法?或者以某种方式覆盖这个方法?或者以某种方式将 11 位数字唯一地转换为 10 位或 9 位数字,同时将其保持为 int?

任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: scala apache-spark apache-spark-mllib


    【解决方案1】:

    我认为,这取决于您的 ID 范围。你能简单地将 Id 取模 Int.MaxValue 吗?那就是:

    (id % Int.MaxValue).toInt
    

    或者你能把它散列到一个 Int 吗?

    id.hashCode
    

    【讨论】:

    • 前者似乎是相当合理的做法。但是我不确定我的价值观的范围。我确信一次只需要考虑几百万。所以我只是为他们创建了自己的查找表。
    猜你喜欢
    • 2013-04-25
    • 2011-12-07
    • 2011-06-16
    • 2017-03-11
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多