Python中数据帧中每一行之间的余弦相似性

我有一个包含多个向量的数据帧,每个向量有3个条目。在我的表示中,每一行都是一个向量。我需要计算每个向量之间的余弦相似性。将其转换为矩阵表示更好,或者在数据帧本身中是否有更干净的方法

这是我尝试过的代码

将熊猫作为pd导入
从scipy导入空间
df=pd.DataFrame([X,Y,Z]).T
相似性=df.values.tolist()
对于相似性中的x:
对于相似性方面的y:
结果=1-空间距离余弦(x,y)

您可以直接使用sklearn.metrics.pairwise.cosine\u similarity

演示

将numpy作为np导入;作为pd进口熊猫
从sklearn.metrics.pairwise导入余弦_相似性
df=pd.DataFrame(np.random.randint(0,2,3,5)))
df
##     0  1  2  3  4
##  0  1  1  1  0  0
##  1  0  0  1  1  1
##  2  0  1  0  1  0
余弦相似性(df)
##数组([[1,0.33333333,0.40824829],
##         [ 0.33333333,  1.        ,  0.40824829],
##         [ 0.40824829,  0.40824829,  1.        ]])

发表评论