cosine度量如何在sklearn的聚类算法中工作?

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

我很困惑cosine指标在sklearn的聚类算法中如何工作。

例如,DBSCAN具有参数eps,并且它在聚类时指定了最大距离。但是,更大的余弦相似度意味着两个向量更接近,这与我们的distance概念正好相反。

我发现pairwise_metric中有cosine_similaritycosine_distance(只是1-cos(),当我们指定度量为cosine时,我们使用cosine_similarity

因此,在聚类时,DBSCAN如何比较余弦相似度和@param eps以确定两个向量是否具有相同标签?

scikit-learn metrics dbscan
1个回答
0
投票

[scikit-learn中的DBSCAN的实现依赖于NearestNeighbors(请参阅implementation of DBSCAN)。

这里是一个示例,以了解它如何使用余弦度量:

import numpy as np
from sklearn.neighbors import NearestNeighbors

samples = [[1, 0], [0, 1], [1, 1], [2, 2]]
neigh = NearestNeighbors(radius=0.1, metric='cosine')
neigh.fit(samples) 

rng = neigh.radius_neighbors([[1, 1]])
print([samples[i] for i in rng[1][0]])

它输出[[1, 1], [2, 2]],即,在[1, 1]半径内最接近0.1的点。

因此,余弦距离小于DBSCAN中的eps的点往往在同一簇中。

© www.soinside.com 2019 - 2024. All rights reserved.