如何将KNN应用于余弦相似矩阵(或距离矩阵)

2024-05-01 21:52:48 发布

您现在位置:Python中文网/ 问答频道 /正文

这项工作的目的是创建一个包含6436篇文章的文章推荐系统。 我们已经创建了余弦相似性矩阵,现在我们可以停止提供文章名称,搜索索引,并从余弦相似性矩阵中获取100个最大值。但由于我们的数据集会更大,我不想每次都在余弦相似性中搜索并将其保存在内存中。所以我决定使用NearestNeighbors算法

因此,我得到了余弦相似矩阵并计算了距离矩阵

cosine_distance = np.sqrt(1 - scaled_cosin_sim_matrix)

并将KNN算法应用于余弦距离矩阵

from sklearn.neighbors import NearestNeighbors
KNN_distance = NearestNeighbors(n_neighbors=100, algorithm='kd_tree', metric= 'chebyshev')
KNN_distance.fit(cosine_distance)

通过直接从cos_相似矩阵中提取100篇相似文章,并使用knn,只有大约80篇是相交的。其余20个则不同

我不明白为什么最近的邻居并没有给出和我直接在余弦相似表中搜索得到的结果相同的结果

有没有一种方法可以应用KNN并得到与余弦相似矩阵中直接搜索相同的结果


Tags: 数据目的名称算法距离系统文章neighbors