LabelEncoder、Pandas的分类和enumerate之间的区别是什么?

4
我正在构建一个推荐系统,因此我有用户、物品和评分列表。因此,我需要为每个用户和物品分配一个分类ID。大约有10万个用户和1万个物品,大约有100万个评分。我的问题是哪种方法最具可扩展性? 我认为我有三个选择:
  1. 使用sklearn的preprocessing.LabelEncoder()
  2. 使用pandas的df['items'].astype('category').cat.codes.values
  3. 使用类似字典的东西,我可以将其写回数据帧中
例如:
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评级的数据库,因此我需要确保不浪费内存或进行不必要的计算。
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接