如何从数据框中获取用户名

2024-10-03 06:31:13 发布

您现在位置:Python中文网/ 问答频道 /正文

问题的名称可能不是最合适的,因此我将尽力解释我的问题:

我根据用户的购买历史计算用户之间的余弦相似性,所以我得到了如下矩阵:

product    63767    76863    84325    86217    86833    130365   537077   
username                                                                                           
45michael      0.0      1.0      0.0      0.0      1.0      1.0      0.0      
7762hc         0.0      0.0      0.0      0.0      0.0      0.0      0.0      
adrian12       0.0      0.0      0.0      0.0      0.0      0.0      0.0     
alicia7        0.0      0.0      0.0      0.0      0.0      1.0      0.0 

其中1表示用户是否购买了该书,0表示用户未购买

得到该矩阵后,我计算了用户之间的余弦相似矩阵:

cosine_sim = pd.DataFrame(cosine_sim, ndex=df_matrix.index, `columns = df_matrix.index)

结果矩阵如下所示:

username   45michael  7762hc  adrian12   alicia7 
username                                                                                           
45michael   1.000000     0.0       0.0  0.577350     
7762hc      0.000000     0.0       0.0  0.000000     
adrian12    0.000000     0.0       0.0  0.000000    
alicia7     0.577350     0.0       0.0  1.000000

因此,现在如果我想让最相似的用户访问,例如45michael,我只需要这样做:

cosine_sim['45michael'].sort_values(ascending=False)[1:11]

返回如下输出:

username
alicia7     0.577350
adrian12    0.000000
7762hc      0.000000

现在我想在原始df中迭代该用户名,但当我这样做时:

for username in similar_users:
...     print(username)

它返回给我这个:

0.5773502691896258
0.0
0.0

当我期待的是:

alicia7     
adrian12    
7762hc  

有人知道如何获取用户名而不是余弦相似度值吗


Tags: 用户名称dfindexusername矩阵sim历史