做推荐算法的同学,应该经常会用到基于用户-商品矩阵的协同过滤算法。
然而在项目的初期,我们其实只能获得每个用户对于商品的评分表sdf(如下):
针对这样的表,我们需要在python里进行一下转换
1.先生成一个基于用户和产品的dataFrame
n_users = sdf['user_id'].unique() #获得所有用户的id
n_items = sdf['item_name'].unique() #获得所有产品的id
#生成一个基于用户为索引,产品为列的dataFrame
df = pd.DataFrame(index = n_users, columns = n_items)
2.将评分填入dataFrame
#获取用户id,产品id及评分并赋值
for i in range(len(sdf)):
row_i = sdf.iloc[[i]]
user_id = row_i['user_id'].tolist()[0]
item_name = row_i['item_name'].tolist()[0]
rating = row_i['rating'].tolist()[0]
df.at[user_id,item_name] = rating