在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()方法吗?
答案 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