0

在 Graphlab 中,我正在尝试使用推荐()方法,以查看它如何为新用户(user_id)提供推荐,而新用户(user_id)在从给定数据集准备的训练模型中不存在。由于目标是通过所使用的推荐模型确定相似的用户,所以我计划在推荐()中传递 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()

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

4

1 回答 1

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
于 2016-04-19T18:11:34.800 回答