如何使用Graphlab recommended()为新用户提供建议?

时间:2016-04-08 18:08:30

标签: python graphlab

在Graphlab中, 我正在尝试使用recommended()方法,以查看它如何为新用户(user_id)提供建议,该用户在从给定数据集准备的训练模型中不存在。由于目标是通过所使用的推荐模型确定类似用户,因此我计划在suggest()中传递new_user_data,但具有与现有用户完全相同的项目评级,以检查它是否应返回相同的评级。 这就是我在做的事情:

(数据是包含UserIds,ItemIds和Rating列的数据集) (比如104是一个新的UserId,它不在数据集中)

result=graphlab.factorization_recommender.create(data,user_id='UserId',     
item_id='ItemId',target='Rating')   
new_user_info=graphlab.SFrame({'UserId':104,'ItemId':['x'],'Rating':9})   
r=result.recommend(users=104,new_user_data=new_user_info)

我收到错误:

raise exc_type(exc_value)

TypeError: object of type 'int' has no len()

任何人都可以帮助如何为新用户使用recommended()方法吗?

1 个答案:

答案 0 :(得分:1)

哪条线给你例外?我认为您在创建SFrame时遇到问题,并且使用了.recommend()方法。

new_user_info=graphlab.SFrame({'UserId':104,'ItemId':['x'],'Rating':9})   
# should be
new_user_info=graphlab.SFrame({'UserId':[104],'ItemId':['x'],'Rating':[9]})   
# construct SFrames from a dictionary where the values are lists

r = result.recommend(users=104,new_user_data=new_user_info)
# should be:
r = result.recommend(users=[104],new_user_data=new_user_info)
# users is a list, not an integer