我正在看一些在Scikit Learn中为成对距离实现的distance metrics。它们包括


  '城市街区'
  
  “欧几里得”
  
  ‘l1’
  
  ‘l2’
  
  '曼哈顿'


现在我一直假设(例如基于herehere)欧几里得与L2相同;曼哈顿= L1 =街区。

在Scikit Learn中这不是真的吗?否则,为什么同一事物使用不同的名称?

最佳答案

您的link会告诉您确切的情况。这些字符串中的每一个都映射到一个内部函数。

metric  Function
‘cityblock’ metrics.pairwise.manhattan_distances
‘cosine’    metrics.pairwise.cosine_distances
‘euclidean’ metrics.pairwise.euclidean_distances
‘l1’    metrics.pairwise.manhattan_distances
‘l2’    metrics.pairwise.euclidean_distances
‘manhattan’ metrics.pairwise.manhattan_distances


因此您的假设是正确的,因为cityblockmanhattanl1都在内部映射到pairwise.manhattan_distances

为什么要使用多个名称?因为来自不同背景的不同人为同一主意使用不同的名称。

我确实认为,如果名称(对我来说)响起钟声,我可以使用cityblock更好,而不是如果不明确支持cityblock == l1则需要自己建立cityblock的连接。

10-07 21:52