如何统计用户购买商品组合的出现次数并生成交叉计数矩阵
商品共现购买用户矩阵实现方法
你需要先基于同一个用户的购买记录生成两两商品对,再统计配对的去重用户数,就能得到目标矩阵,标准实现步骤如下:
- 第一步:导入依赖
import pandas as pd import numpy as np
- 第二步:构造同用户的商品两两配对,通过自关联实现
# df为你的原始User-Product两列数据框 df_pairs = pd.merge(df, df, on='User', suffixes=('_row', '_col'))
- 第三步:分组统计每对商品的共同购买用户数,转换为矩阵结构
co_matrix = df_pairs.groupby(['Product_row', 'Product_col'])['User'].nunique().unstack(fill_value=0)
- 第四步:添加Total列(单商品总购买用户数,即矩阵对角线的数值)
co_matrix['Total'] = np.diag(co_matrix) # 如果你需要和示例一致将对角线元素改为1,执行以下代码 np.fill_diagonal(co_matrix.values, 1)
- 第五步:将0值替换为空值,匹配展示需求
co_matrix = co_matrix.replace(0, '')
补充说明:你提到商品数量较少、用户量级1万,该方法的计算开销完全在合理范围内,不会出现性能问题。
内容的提问来源于stack exchange,提问作者Gupta
相关产品推荐
相关产品推荐

