如何在Python中的余弦距离矩阵中找到距离给定诗歌最远的一首诗?

问题描述 投票:0回答:1

我有一个名为

dist
的余弦距离矩阵,它表示数据集中 1104 首诗之间的成对余弦距离。行和列的顺序与名为
all_meta0
的列表对齐,其中包含每首诗的元数据(标题、作者等)。

我需要找到距离给定诗歌“The Parade”最远的一首诗,它对应于

dist
矩阵的第二行(即索引
1
,使用从零开始的索引)。本质上,我想确定哪首诗与“游行”的余弦距离最大。

这是我迄今为止在网上找到的内容,但我不知道如何去做。

提取

dist
矩阵的第二行,它代表“游行”与所有其他诗歌之间的距离。 将与其自身的距离设置为
-1
以忽略它。 找到该行中最大值的索引,该索引对应于最远的诗。 使用该索引从
all_meta0
获取元数据。

这就是 dist 变量的来源:

mds = MDS(n_components=2, dissimilarity="precomputed", random_state=1)
pos = mds.fit_transform(dist)
dist = 1 - cosine_similarity(dtm)
dist[0:5], len(dist), len(dist[0])
pos = mds.fit_transform(dist)```
python pandas mds
1个回答
0
投票

这非常简单,因为您已经有了距离矩阵。一些示例代码如下:

import numpy as np


distances_from_parade = dist[1]

distances_from_parade[1] = -1
furthest_poem_index = np.argmax(distances_from_parade)

furthest_poem_metadata = all_meta0[furthest_poem_index]
print(furthest_poem_metadata)
© www.soinside.com 2019 - 2024. All rights reserved.