为什么 SKLearn Distance Metric class 没有余弦距离?

Why doesnt SKLearn's Distance Metric class have Cosine Distance?

我正在尝试使用余弦距离获取 KNN,但看起来度量参数不采用余弦距离。 http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.DistanceMetric.html 中仅提供以下指标。这是为什么 ?

用于实值向量空间的指标: 标识符 class 名称参数距离函数 “欧氏”欧氏距离
平方根(总和((x-y)^2)) “曼哈顿”曼哈顿距离
总和(|x - y|) “切比雪夫”切比雪夫距离
总和(最大值(|x - y|)) “minkowski” MinkowskiDistance p sum(|x - y|^p)^(1/p) “wminkowski” WMinkowskiDistance p, w sum(w * |x - y|^p)^(1/p) “seuclidean”SEuclideanDistance V sqrt(sum((x - y)^2 / V)) “mahalanobis” MahalanobisDistance V 或 VI sqrt((x - y)' V^-1 (x - y)) 用于二维向量空间的度量: 标识符 class 名称距离函数 “haversine” HaversineDistance
2 arcsin(sqrt(sin^2(0.5*dx) cos(x1)cos(x2)sin^2(0.5*dy)))

余弦距离在不满足三角不等式的意义上不是适当的距离。它是一个角度,并不代表任何意义上的最短距离。这在这里描述得很好 - https://en.wikipedia.org/wiki/Cosine_similarity . For K-Means or any distance type similarity algorithm, satisfying the distance metric requirements (https://en.wikipedia.org/wiki/Metric_(mathematics)) 是必要的要求。