【发布时间】:2018-12-12 21:45:00
【问题描述】:
我正在构建一个推荐系统,因此我有用户、项目和评级的列表。因此,我需要为每个用户和项目分配一个分类 ID。大约有 100,000 个用户和 10,000 个项目,大约有 100 万个评分。我的问题是哪种方法最具可扩展性?
我认为我有 3 个选择:
- 使用sklearn的
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 评级的数据库,因此我需要确保我不会浪费内存或做不需要的计算。
【问题讨论】:
标签: python pandas scikit-learn