【问题标题】:LabelEncoder vs. Pandas categorical vs. enumerate?LabelEncoder vs. Pandas 分类 vs. 枚举?
【发布时间】:2018-12-12 21:45:00
【问题描述】:

我正在构建一个推荐系统,因此我有用户、项目和评级的列表。因此,我需要为每个用户和项目分配一个分类 ID。大约有 100,000 个用户和 10,000 个项目,大约有 100 万个评分。我的问题是哪种方法最具可扩展性?

我认为我有 3 个选择:

  1. 使用sklearn的preprocessing.LabelEncoder()
  2. 使用熊猫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 评级的数据库,因此我需要确保我不会浪费内存或做不需要的计算。

【问题讨论】:

    标签: python pandas scikit-learn


    【解决方案1】:

    我认为 pandas 类别是您的最佳选择,因为它使用哈希表,请检查 https://stackoverflow.com/a/39503973/4633341 进行一些时间测试。

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      相关资源
      最近更新 更多