2016-04-08 75 views
0

在Graphlab中, 我正在尝试使用recommend()方法,以查看它如何为从用户数据集准备的训练模型中不存在的新用户(user_id)提供建议。因为我们的目标是通过使用这个建议模型来确定类似的用户,所以我计划在推荐()中传递new_user_data,但是与现有用户完全相同的项目评分来检查它是否应该返回相同的评分。 下面是我在做什么:如何使用Graphlab推荐()向新用户提供建议?

(数据包含用户ID,ItemIds和评级列数据集) (说104是一个新的用户ID这是不是在数据集)

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() 

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

回答

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