我有一个数据帧df
:为一组两列计算余弦相似度通过在数据帧
AID VID FID APerc VPerc
1 A X 0.2 0.5
1 A Z 0.1 0.3
1 A Y 0.4 0.9
2 A X 0.2 0.3
2 A Z 0.9 0.1
1 B Z 0.1 0.2
1 B Y 0.8 0.3
1 B W 0.5 0.4
1 B X 0.6 0.3
我要计算的值APerc
和VPerc
所有对AID
和VID
的余弦相似性。因此,对于上述结果应该是:
AID VID CosSim
1 A 0.997
2 A 0.514
1 B 0.925
我知道如何GROUPBY:df.groupby(['AID','VID'])
,我知道如何生成整个列余弦相似:
from sklearn.metrics.pairwise import cosine_similarity
cosine_similarity(df['APerc'], df['VPerc'])
什么是最好的和最快的方式来做到这一点,因为我有一个非常大的文件。
但使用这些方法不返回数据帧。我的意思是把as_index = False不让我使用AID和VID作为列。我需要他们作为列,我需要余弦相似性也是一个名称,我可以打电话的列。我怎样才能做到这一点? – BKS
链'.rename('CosSim').setup_index()'后应该这样做。 – Psidom