我正在构建推荐系统,因此,我具有用户,项目和评分的列表。因此,我需要为每个用户和项目分配一个类别ID。大约有100,000个用户和10,000个项目,评分大约为100万。我的问题是哪种方法最具扩展性?
我认为我有3种选择:
preprocessing.LabelEncoder()
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额定值的数据库,因此,我需要确保我不会浪费内存或在做不需要的计算。
答案 0 :(得分:0)
我认为pandas类别是您最好的选择,因为它使用哈希表,请检查https://stackoverflow.com/a/39503973/4633341进行一些时间测试。