DistanceMetric#

class sklearn.metrics.DistanceMetric#

用于快速距离度量函数的统一接口。

DistanceMetric 类提供了一种便捷的方式来计算样本之间的成对距离。它支持多种距离度量,例如欧氏距离、曼哈顿距离等。

pairwise 方法可用于计算输入数组中样本之间的成对距离。它返回一个距离矩阵,表示所有样本对之间的距离。

get_metric 方法允许您使用其字符串标识符检索特定度量。

示例

>>> from sklearn.metrics import DistanceMetric
>>> dist = DistanceMetric.get_metric('euclidean')
>>> X = [[1, 2], [3, 4], [5, 6]]
>>> Y = [[7, 8], [9, 10]]
>>> dist.pairwise(X,Y)
array([[7.81..., 10.63...]
       [5.65...,  8.48...]
       [1.41...,  4.24...]])

可用度量

以下列出了字符串度量标识符和相关的距离度量类

适用于实值向量空间的度量

标识符

类名

参数

距离函数

“euclidean”

EuclideanDistance

sqrt(sum((x - y)^2))

“manhattan”

ManhattanDistance

sum(|x - y|)

“chebyshev”

ChebyshevDistance

max(|x - y|)

“minkowski”

MinkowskiDistance

p, w

sum(w * |x - y|^p)^(1/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)))

适用于整数值向量空间的度量:尽管这些度量旨在用于整数值向量,但它们对于实值向量也有效。

标识符

类名

距离函数

“hamming”

HammingDistance

N_unequal(x, y) / N_tot

“canberra”

CanberraDistance

sum(|x - y| / (|x| + |y|))

“braycurtis”

BrayCurtisDistance

sum(|x - y|) / (sum(|x|) + sum(|y|))

适用于布尔值向量空间的度量:任何非零项均被评估为“True”。在下面的列表中,使用了以下缩写:

  • N: 维度数量

  • NTT: 两个值均为 True 的维度数量

  • NTF: 第一个值为 True,第二个值为 False 的维度数量

  • NFT: 第一个值为 False,第二个值为 True 的维度数量

  • NFF: 两个值均为 False 的维度数量

  • NNEQ: 不相等维度数量,NNEQ = NTF + NFT

  • NNZ: 非零维度数量,NNZ = NTF + NFT + NTT

标识符

类名

距离函数

“jaccard”

JaccardDistance

NNEQ / NNZ

“matching”

MatchingDistance

NNEQ / N

“dice”

DiceDistance

NNEQ / (NTT + NNZ)

“kulsinski”

KulsinskiDistance

(NNEQ + N - NTT) / (NNEQ + N)

“rogerstanimoto”

RogersTanimotoDistance

2 * NNEQ / (N + NNEQ)

“russellrao”

RussellRaoDistance

(N - NTT) / N

“sokalmichener”

SokalMichenerDistance

2 * NNEQ / (N + NNEQ)

“sokalsneath”

SokalSneathDistance

NNEQ / (NNEQ + 0.5 * NTT)

用户自定义距离

标识符

类名

参数

“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 对象开销,这将相对较慢,但它的缩放比例将与其他距离相同。

classmethod get_metric(metric, dtype=<class 'numpy.float64'>, **kwargs)#

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

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

参数:
metric字符串或类名

所需距离度量的字符串标识符或类名。有关可用度量的列表,请参阅 DistanceMetric 类的文档。

dtype{np.float32, np.float64},默认为 np.float64

将应用度量的数据输入的类型。这会影响计算距离的精度。默认设置为 np.float64

**kwargs

将传递给所请求度量的其他关键字参数。这些参数可用于自定义特定度量的行为。

返回:
metric_obj所请求度量的实例

所请求距离度量类的实例。