sklearn.neighbors.DistanceMetric

class sklearn.neighbors.DistanceMetric

DistanceMetric类。

此类为快速距离度量功能提供统一的接口。 可以通过get_metric类方法和度量标准字符串标识符(请参见下文)访问各种度量标准。

示例

>>> from sklearn.neighbors import DistanceMetric
>>> dist = DistanceMetric.get_metric('euclidean')
>>> X = [[012],
         [345]]
>>> dist.pairwise(X)
array([[ 0.        ,  5.19615242],
       [ 5.19615242,  0.        ]])

可用指标

以下列出了字符串指标标识符和关联的距离指标类别:

用于实值向量空间的度量标准:

识别码 类名 args 距离函数
“euclidean” 欧几里得距离 . sqrt(sum((x - y)^2))
“manhattan” 曼哈顿距离 . sum(|x-y|)
“chebyshev” 切比雪夫距离 . max(|x-y|)
“minkowski” 明可夫斯基距离 p sum(|x-y|^p)^^(1/p)
“wminkowski” WMinkowski距离 p, w sum(|w * (x - y)|^^p)^^(1/p)
“seuclidean” 欧氏距离 V sqrt(sum((x - y)^2 / V))
“mahalanobis” 马氏距离 V or VI sqrt((x - y)' V^-1 (x - y))

用于二维向量空间的度量:请注意,haversine距离度量标准需要[纬度,经度]形式的数据,并且输入和输出均以弧度为单位。

识别码 类名 距离函数
“haversine” Haversine距离 2 arcsin(sqrt(sin^2(0.5*dx) + cos(x1)cos(x2)sin^2(0.5*dy))

用于整数值向量空间的度量标准:尽管打算用于整数值向量,但在实值向量的情况下,它们也是有效的指标。

识别码 类名 距离函数
“hamming” 汉明距离 N_unequal(x, y) / N_tot
“canberra” 堪培拉距离 sum(|x-y|/(|x|+|y|))
“braycurtis” 布雷·科蒂斯距离 sum(|x-y|)/(sum(|x)+sum(|y|))

用于布尔值向量空间的指标:任何非零条目都将评估为“ True”。 在下面的清单中,使用以下缩写:

  • N : 尺寸数
  • NTT : 两个值均为True的暗点数
  • NTF : 第一个为True,第二个为False的暗数
  • NFT : 第一个值为False,第二个为True的暗点数
  • NFF : 两个值均为False的暗点数
  • NNEQ : 不相等尺寸的数量,NEW = NFT + NFT
  • NNZ : 非零尺寸的数量,NNZ = NTF + NFT + NTT
识别码 类名 距离函数
“jaccard” 提卡距离 NNEQ / NNZ
“matching” 匹配距离 NNEQ / N
“dice” 骰子距离 NNEQ / (NTT + NNZ)
“kulsinski” 库尔辛斯基距离 (NNEQ + N - NTT) / (NNEQ + N)
“rogerstanimoto” 罗杰斯·谷本距离 2 * NNEQ / (N + NNEQ)
“russellrao” 拉塞尔距离 NNZ / N
“sokalmichener” 索卡尔·米歇纳距离 2 * NNEQ / (N + NNEQ)
“sokalsneath” 索卡尔潜行距离 NNEQ / (NNEQ + 0.5 * NTT)

用户定义的距离:

识别码 类名 args
“pyfunc” PyFuncDistance func

这里的func是一个函数,它接受两个一维numpy数组,并返回一个距离。 请注意,为了在BallTree中使用该距离,必须是一个真实的指标:即它必须满足以下属性

  1. 非负性:d(x,y)> = 0
  2. 定义:当且仅当x == y时,d(x,y)= 0
  3. 对称性:d(x,y)= d(y,x)
  4. 三角不等式: d(x, y) + d(y, z) >= d(x, z)

由于调用python函数涉及Python对象开销,因此这将相当慢,但是它将具有与其他距离相同的缩放比例。

方法

方法 说明
dist_to_rdist() 将真实距离转换为缩小的距离。
get_metric() 从字符串标识符获取给定的距离度量。
pairwise() 计算X和Y之间的成对距离
rdist_to_dist() 将缩小的距离转换为真实距离。
__init__(*args, **kwargs)

初始化. 请参阅help(type())以获得准确的说明。

dist_to_rdist()

将真实距离转换为缩小的距离。

为某些度量标准定义的减小的距离是一种计算上更有效的度量,可以保留真实距离的等级。 例如,在欧几里得距离度量标准中,减小的距离是欧几里德距离的平方。

get_metric()

从字符串标识符获取给定的距离度量。

有关可用度量的列表,请参见DistanceMetric的文档字符串。

参数 说明
metric string or class name
使用的距离度量
**kwargs 其他参数将传递到请求的指标
pairwise()

计算X和Y之间的成对距离

为了测试,这是一个方便的例程。 对于许多指标,scipy.spatial.distance.cdist和scipy.spatial.distance.pdist中的实用程序将更快。

参数 说明
X array_like
形状数组(Nx,D),代表D维中的Nx个点。
Y array_like (optional)
形状数组(Ny,D),代表D维中的Ny个点。 如果未指定,则Y = X。
返回值 说明
dist ndarray
X和Y中的点之间的成对距离的形状(Nx,Ny)数组。
rdist_to_dist()

将缩小的距离转换为真实距离。

为某些度量标准定义的减小的距离是一种计算上更有效的度量,可以保留真实距离的等级。 例如,在欧几里得距离度量标准中,减小的距离是欧几里德距离的平方。