2016-04-08 71 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