【问题标题】:recommendProductsForUsers not working in Spark 1.5.0推荐ProductsForUsers 在 Spark 1.5.0 中不工作
【发布时间】:2016-01-18 21:12:21
【问题描述】:

鉴于以下情况:

from pyspark import SparkContext, SparkConf
from pyspark.mllib.recommendation import ALS, Rating
r1 = (1, 1, 1.0)
r2 = (1, 2, 2.0)
r3 = (2, 1, 2.0)
ratings = sc.parallelize([r1, r2, r3])
model = ALS.trainImplicit(ratings, 1, seed=10)

res = model.recommendProductsForUsers(2)

我想计算每个用户的前 k 个产品。一般来说,用户和产品可能很多,创建一个 RDD 来与推荐产品一起使用会太昂贵。

根据Spark version 1.5.0 recommendProductsForUsers 应该可以完成这项工作。但是,我收到以下错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-8-c65e6875ea5b> in <module>()
      7 model = ALS.trainImplicit(ratings, 1, seed=10)
      8 
----> 9 res = model.recommendProductsForUsers(2)

AttributeError: 'MatrixFactorizationModel' object has no attribute 'recommendProductsForUsers'

而且,事实上recommendProductsForUsers在列出matrixFactorizationModel的方法时并没有出现:

print dir(model)
['__class__', '__del__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_java_loader_class', '_java_model', '_load_java', '_sc', 'call', 'load', 'predict', 'predictAll', 'productFeatures', 'rank', 'recommendProducts', 'recommendUsers', 'save', 'userFeatures']

【问题讨论】:

    标签: java python apache-spark machine-learning recommendation-engine


    【解决方案1】:

    您正在查看错误的文档。一个简单的事实是,某些操作是在 Scala 或 Java API 中实现的,但这并不意味着它暴露给 PySpark。如果你检查PySpark 1.5 API docs,你会发现它没有提供请求的方法。

    recommendUsersForProductsrecommendProductsForUsers 已通过 SPARK-10535 在 PySpark 1.6 中引入。

    【讨论】:

    猜你喜欢
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    相关资源
    最近更新 更多