scipy.spatial.distance您可以在其中使用两个有用的功能:
pdist和
squareform。使用
pdist将为您提供观测值之间的成对距离(作为一维数组),
squareform并将其转换为距离矩阵。
一个陷阱是
pdist默认情况下使用距离度量,而不使用相似性,因此您需要手动指定相似性函数。从代码中的注释输出来看,您的Dataframe也不符合
pdist预期的方向,因此我撤消了您在代码中所做的转置。
import pandas as pdfrom scipy.spatial.distance import euclidean, pdist, squareformdef similarity_func(u, v): return 1/(1+euclidean(u,v))DF_var = pd.Dataframe.from_dict({"s1":[1.2,3.4,10.2],"s2":[1.4,3.1,10.7],"s3":[2.1,3.7,11.3],"s4":[1.5,3.2,10.9]})DF_var.index = ["g1","g2","g3"]dists = pdist(DF_var, similarity_func)DF_euclid = pd.Dataframe(squareform(dists), columns=DF_var.index, index=DF_var.index)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)