【问题标题】:How do you deal with very large dataset when creating the matrix for recommender system?在为推荐系统创建矩阵时如何处理非常大的数据集?
【发布时间】:2021-08-28 06:04:39
【问题描述】:

我正在尝试创建一个交易和产品组矩阵,但我有一个非常大的交易数据(超过 10,000,000 行)和大约 100 个产品组。当我尝试使用此代码创建数据透视表时

df.pivot(index='transaction_id', columns='product_group', values='ratings')

返回values错误“Unstacked DataFrame is too big,导致int32溢出”

除了减少数据大小之外,还有什么办法解决这个问题吗?

谢谢!

【问题讨论】:

    标签: python pandas pivot sparse-matrix recommendation-engine


    【解决方案1】:

    将坐标轴列转换为类别:

    df['transaction_id'] = df['transaction_id'].astype('category')
    df['product_group'] = df['product_group'].astype('category')
    

    使用编码制作稀疏矩阵:

    arr = csr_matrix((df['ratings'].values, (df['transaction_id'].cat.codes, df['product_group'].cat.codes)))
    

    然后您只需要跟踪轴的顺序(例如,df['transaction_id'].cat.categories 将为您提供应该应用于行的标签)。

    【讨论】:

    • 您好,非常感谢您的回答。是否可以在执行 csr_matrix 后显示整个表格?我尝试使用代码pd.DataFrame(arr.toarray()),但它返回了 MemoryError。 (或者有没有办法将 csr_matrix 与 'mlxtend' 库一起使用?)
    • 如果你有足够的内存,你可以把它做成一个密集的数组。我不知道那个图书馆是什么。 Scikit 应该为许多 ML 方法采用稀疏数组。
    猜你喜欢
    • 2012-09-10
    • 1970-01-01
    • 2012-05-28
    • 2013-02-28
    • 2013-08-16
    • 2020-06-21
    • 1970-01-01
    • 2017-03-16
    • 2019-12-13
    相关资源
    最近更新 更多