这是我的数据框。 df
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
我正在寻找一种计算商店中同时出现的次数(以比较它们的相似性)的方法。
答案 0 :(得分: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
答案 1 :(得分:0)
如果您想估计商店在产品方面的相似性,则可以使用:
那么每个商店都可以用一个向量描述,长度为n =所有商店中所有产品的数量,例如:
香蕉 橙子 苹果 梨 李子 橘子 覆盆子 番茄 瓜 。 。
然后Store_1被描述为1 1 1 1 1 0 0 0 0 0 ... Store_2 1 0 0 1 0 1 1 1 0 ...
这将为您提供一个数值矢量,您可以在其中计算不相似性度量,例如欧几里得距离。