Python &引用;相关矩阵;对于字符串。名义数据的相似性
这是我的数据框。 dfPython &引用;相关矩阵;对于字符串。名义数据的相似性,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
我正在寻找一种方法来计算商店中同时出现的次数(比较它们的相似性)。如果您希望估计商店与其产品的相似性,那么您可以使用: 然后,每个商店可以用一个向量来描述,其长度为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