我正在构建一个推荐系统,因此我有用户、物品和评分列表。因此,我需要为每个用户和物品分配一个分类ID。大约有10万个用户和1万个物品,大约有100万个评分。我的问题是哪种方法最具可扩展性?
我认为我有三个选择:
所有的结果都应该相同,因为每个用户和物品向量都会从0到n项进行标记(注意,实际上还有更多类别,如制造商、原产国、颜色等也将用于模型)。
目前我正在构建一个概念验证,但将扩展到具有超过1.5MM用户、200k物品和6MM评级的数据库,因此我需要确保不浪费内存或进行不必要的计算。
- 使用sklearn的
preprocessing.LabelEncoder()
- 使用pandas的
df['items'].astype('category').cat.codes.values
- 使用类似字典的东西,我可以将其写回数据帧中
items = item_reviews.items.unique()
items_map = {i:val for i,val in enumerate(items)}
inverse_items_map = {val:i for i,val in enumerate(items)}
所有的结果都应该相同,因为每个用户和物品向量都会从0到n项进行标记(注意,实际上还有更多类别,如制造商、原产国、颜色等也将用于模型)。
目前我正在构建一个概念验证,但将扩展到具有超过1.5MM用户、200k物品和6MM评级的数据库,因此我需要确保不浪费内存或进行不必要的计算。