为什么SKLearn的距离度量类没有余弦距离?

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

我想用余弦距离来获得KNN,但看起来度量参数不接受余弦距离。只有下面的度量标准可以在 http:/scikit-learn.orgstablemodulesgeneratedsklearn.neighbors.DistanceMetric.html。 . x - y

x - y标识符类名 args 距离函数 "euclidean" EuclideanDistance sqrt(sum((x - y)^2)) "manhattan" ManhattanDistance sum(p) "wminkowski" WMinkowskiDistance p, w sum(w * p) "seuclidean" SEuclideanDistance V sqrt(sum((x - y)^2 V)) "mahalanobis" MahalanobisDistance V or VI sqrt((x - y)' V^-1 (x - y))用于二维向量空间的度量。 标识符类名距离函数 "haversine "HaversineDistance 2 arcsin(sqrt(sin^2(0. 5*dx)cos(x1)cos(x2)sin^2(0.5*dy)))

scikit-learn knn
1个回答
0
投票

余弦距离不是一个合适的距离,因为它不满足三角形不等式。它是一个角度,并不代表任何意义上的最短距离。这在这里有很好的描述 - https:/en.wikipedia.orgwikiCosine_similarity。 . 对于K-Means或任何距离型相似性算法,满足距离度量要求(https:/en.wikipedia.orgwikiMetric_(mathematics))是必要条件。

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