【发布时间】:2018-01-05 08:22:15
【问题描述】:
我有一个包含多个向量的 DataFrame,每个向量都有 3 个条目。在我的表示中,每一行都是一个向量。我需要计算每个向量之间的余弦相似度。将其转换为矩阵表示会更好,还是 DataFrame 本身有更简洁的方法?
这是我尝试过的代码。
import pandas as pd
from scipy import spatial
df = pd.DataFrame([X,Y,Z]).T
similarities = df.values.tolist()
for x in similarities:
for y in similarities:
result = 1 - spatial.distance.cosine(x, y)
【问题讨论】:
-
请分享您到目前为止所做的尝试,以便我们可以为您提供适当的帮助。
-
@JayanthPrakashKulkarni:在您使用的 for 循环中,您也在计算一行与其自身的相似度。您也不需要嵌套循环。迭代第 1 行的数量并计算
df.iloc[i,:]和df.iloc[i+1,:]之间的余弦相似度。或者,您可以查看apply数据帧方法。 -
@ClockSlave 感谢您的宝贵意见。我一定会尝试使用 DataFrame 的 apply 方法。
标签: python pandas dataframe scikit-learn