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...]])

可用度量

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

Metrics intended for real-valued vector spaces:

标识符

类名

args

距离函数

“欧几里得”

EuclideanDistance

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

“曼哈顿”

ManhattanDistance

sum(|x - y|)

“切比舍夫”

ChebyshevDistance

max(|x - y|)

“明科斯基”

MinkowskiDistance

p、w

sum(w * |x - y|^p)^(1/p)

“seuclidean”

SEuclideanDistance

V

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

“马哈拉诺比斯”

MahalanobisDistance

V或VI

sqrt((x - y)' V^-1 (x - y))

Metrics intended for two-dimensional vector spaces: 请注意,半轴距离指标需要以下形式的数据 [latitude, longitude] 输入和输出都以弧度为单位。

标识符

类名

距离函数

半正矢

HaversineDistance

2 arcsin(sqrt(sin^2(0.5*dx) + cos(x1)cos(x2)sin^2(0.5*dy)))

Metrics intended for integer-valued vector spaces: 虽然旨在用于整值载体,但在实值载体的情况下,这些也是有效的指标。

标识符

类名

距离函数

“海明”

HammingDistance

N_unequal(x, y) / N_tot

“堪培拉”

CanberraDistance

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

“布雷柯蒂斯”

BrayCurtisDistance

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

Metrics intended for boolean-valued vector spaces: 任何非零条目都被评估为“True”。 在下面的列表中,使用了以下缩写:

  • N:维度数量

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

  • NTF:第一个值为True、第二个值为False的Dims数量

  • NFT:第一个值为False、第二个值为True的Dims数量

  • NFF:两个值均为假的Dims数量

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

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

标识符

类名

距离函数

“贾卡德”

JaccardDistance

NNEQ / NNZ

“匹配”

MatchingDistance

NNEQ / N

“骰子”

DiceDistance

NNEQ /(NTT + NNZ)

“库尔辛斯基”

KulsinskiDistance

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

“罗杰斯坦本”

RogersTanimotoDistance

2 * NNEQ /(N + NNEQ)

“拉塞尔劳”

RussellRaoDistance

(不- NTT)/ N

“索卡米切纳”

SokalMichenerDistance

2 * NNEQ /(N + NNEQ)

“索卡尔斯奈思”

SokalSneathDistance

NNEQ / (NNEQ + 0.5 * NTT)

User-defined distance:

标识符

类名

args

“pyfunc”

PyFuncDistance

func

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

  1. 非负性:d(x,y)>= 0

  2. 同一性:d(x,y)= 0当且仅当x == y

  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}, default=np.float64

将应用指标的输入的数据类型。这会影响计算距离的精度。默认情况下,它设置为 np.float64 .

**kwargs

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

返回:
metric_obj请求指标的实例

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