gpt4 book ai didi

python - 将用户/项目 View 数据转换为二维指标

转载 作者:行者123 更新时间:2023-11-28 18:07:03 28 4
gpt4 key购买 nike

用户/项目 View 数据可用如下

User  Item 
Louis 1
Louis 2
Adam 1
Adam 3

我想将它转换为一个项目一个项目的指标,比如

    1  2  3
1 0 1 1
2 1 0 0
3 1 0 0

所以每个值代表“看过 i 也看过 j 的人的数量”。 (对角线值无关紧要)

有什么有效的方法吗?

下面是我的代码,但当有大约 5 万个项目和 50 万个查看记录时,运行时间很长。

import pandas as pd
import numpy as np
from scipy.sparse import csr_matrix, lil_matrix
raw = pd.DataFrame(columns=['user','item'])
raw['user']=['Louis','Louis','Adam','Adam']
raw['item']=[1,2,1,3]

item_list = raw.item.unique().tolist()
user_list = raw.user.unique().tolist()
m = lil_matrix((len(raw.item.unique()),len(raw.item.unique())))
for user in user_list:
temp = raw.loc[np.in1d(raw['user'], user)].item
if len(temp) > 1:
for idx1, id1 in enumerate(temp[0:-1]):
for id2 in temp[idx1+1:]:
m[item_list.index(id1),item_list.index(id2)]+=1
m[item_list.index(id2),item_list.index(id1)]+=1
m.toarray()

最佳答案

你可以使用

In [147]: dff = pd.crosstab(df.Item, df.User)

In [148]: dff = dff.dot(dff.T)

In [149]: np.fill_diagonal(dff.values, 0)

In [150]: dff
Out[150]:
Item 1 2 3
Item
1 0 1 1
2 1 0 0
3 1 0 0

关于python - 将用户/项目 View 数据转换为二维指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52946845/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com