我有一个包含三列'customer','item_id','ct_id'的表格,但行数约为300万。唯一的'item_id'有20350个条目,'customer'有 2485个条目。每个客户可以在20350种商品中购买任意数量的商品
目标是基于该表构建推荐系统。首先,我想构建一个2485x20350的矩阵,其行为“custmer”,列为“item_id”。 每个元素都是“客户”和“客户”的出现次数。表中的'item_id'对。我可以根据此客户/项目矩阵建立相似性矩阵。
我尝试在pandas中使用pivot_table,如下所示: d_pivt = dt.pivot_table(index = ['cstm_num','it_num'],aggfunc ='count'),
我只是想知道,有了这些信息,构建我想要的矩阵的最有效方法是什么。
谢谢,
答案 0 :(得分:0)
你在列中说'item_id'
,在行中说'customer'
。
d_pivt = dt.pivot_table(values='ct_id', index='customer',
columns='item_id', aggfunc='count')
演示
df = pd.DataFrame(np.random.randint(0, 10, (1000, 3)),
columns=['customer', 'item_id', 'ct_id'])
df.pivot_table('ct_id', 'customer', 'item_id', 'count')
答案 1 :(得分:0)
@piRSquared你的方法就像我想要的那样工作。现在我的客户/项目矩阵如下所示: enter image description here
我还不允许添加图片。 : - (
但我得到了我想要的矩阵,其尺寸为2485x20350。 您可以通过上面的图像链接看到,有很多零,因为一个客户可能只会购买数百个项目。 我尝试使用以下方法计算项目相关矩阵:
sall_pvtb = sales_all.pivot_table(values='cm_id', index='cstm_num',
columns = 'it_num', aggfunc='count')
sall_pvtb.fillna(0, inplace = True)
sall_corr = sall_pvtb.corr()
但项目相关性计算需要很长时间,因为它是一个20350x20350大小的矩阵。稀疏地进行相关计算?