【发布时间】: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