字符串的“相关矩阵”。名词d的相似性

2024-04-27 13:50:59 发布

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

这是我的数据框。 测向

  store_1      store_2         store_3         store_4     

0 banana      banana           plum            banana
1 orange      tangerine        pear            orange
2 apple       pear             melon           apple
3 pear        raspberry        pineapple       plum
4 plum        tomato           peach           tomato

我正在寻找一种方法来计算商店中同时出现的次数(比较它们的相似性)。你知道吗


Tags: 数据方法storeappleraspberry商店bananapear
2条回答

你可以试试这样的

import itertools as it
corr = lambda a,b: len(set(a).intersection(set(b)))/len(a)
c = [corr(*x) for x in it.combinations_with_replacement(df.T.values.tolist(),2)]

j = 0
x = []
for i in range(4, 0, -1): # replace 4 with df.shape[-1]
    x.append([np.nan]*(4-i) + c[j:j+i])
    j+= i
pd.DataFrame(x, columns=df.columns, index=df.columns)

这就产生了

        store_1 store_2 store_3 store_4
store_1 1.0     0.4     0.4     0.8
store_2 NaN     1.0     0.2     0.4
store_3 NaN     NaN     1.0     0.2
store_4 NaN     NaN     NaN     1.0

如果您希望估计商店在产品方面的相似性,那么您可以使用:

One hot encoding

然后每个商店可以用一个向量来描述,其长度为n=所有商店中所有产品的数量,例如:

香蕉 橙色 苹果 梨 梅子 橘子 覆盆子 番茄 甜瓜 . . . 你知道吗

存储\u 1则描述为1 1 1 1 1 0 0 0 0 0。。。 存储\u 2 1 0 0 1 0 1 1 1 0。。。你知道吗

这就给你留下了一个数值向量,在这里你可以计算不同的度量,比如欧几里德距离。你知道吗

相关问题 更多 >