Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;相关矩阵;对于字符串。名义数据的相似性_Python_Python 3.x_Pandas_Dataframe_Correlation - Fatal编程技术网

Python &引用;相关矩阵;对于字符串。名义数据的相似性

Python &引用;相关矩阵;对于字符串。名义数据的相似性,python,python-3.x,pandas,dataframe,correlation,Python,Python 3.x,Pandas,Dataframe,Correlation,这是我的数据框。 df 我正在寻找一种方法来计算商店中同时出现的次数(比较它们的相似性)。如果您希望估计商店与其产品的相似性,那么您可以使用: 然后,每个商店可以用一个向量来描述,其长度为n=所有商店中所有产品的数量,例如: 香蕉 橙色 苹果 梨 梅子 橘子 覆盆子 番茄 甜瓜 . . 然后将存储_1描述为1 1 0 0 0 0。。。 存储区2 1 0 0 1 0 1 1 1 0 这将为您留下一个数值向量,您可以在其中计算相异度量,例如欧几里德距离 你可以试试这样的东西 import ite

这是我的数据框。 df


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

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

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

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

然后将存储_1描述为1 1 0 0 0 0。。。 存储区2 1 0 0 1 0 1 1 1 0


这将为您留下一个数值向量,您可以在其中计算相异度量,例如欧几里德距离

你可以试试这样的东西

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

我正在考虑使用df[“store_1”]=df[“store_1”].astype('category').cat.code,但这将为不同商店中的不同项目分配类似的类别。为了更好地解释:例如:store_1与store 2有2个交叉点,store_3有2个交叉点,store_4有4个交叉点。。。等等寻找相应的计数和可视化方法随着数据集中每个商店的“产品”数量的增加,可能很难简洁地将其可视化,除非应用规则来消除低频项。无论哪种方式,“杂货店”(或者你在这里比较的任何东西)都有可能提供高基数的产品。
        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