当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn DistanceMetric用法及代码示例


本文简要介绍python语言中 sklearn.metrics.DistanceMetric 的用法。

用法:

class sklearn.metrics.DistanceMetric

DistanceMetric 类

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

例子

>>> from sklearn.metrics import DistanceMetric
>>> dist = DistanceMetric.get_metric('euclidean')
>>> X = [[0, 1, 2],
         [3, 4, 5]]
>>> dist.pairwise(X)
array([[ 0.        ,  5.19615242],
       [ 5.19615242,  0.        ]])

可用指标

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

用于实值向量空间的指标:

identifier

类名称

args

距离函数

“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)

“wminkowski”

WMinkowskiDistance

p, w

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

“seuclidean”

SEuclideanDistance

V

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

“mahalanobis”

MahalanobisDistance

Ⅴ或Ⅵ

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

请注意,带有非无 w 参数的 “minkowski” 实际上会使用 w=w ** (1/p) 调用 WMinkowskiDistance,以便与 scipy 1.8 及更高版本的参数化保持一致。

用于二维向量空间的度量:请注意,harsine 距离度量需要 [latitude, longitude] 形式的数据,输入和输出均以弧度为单位。

identifier

类名称

距离函数

“haversine”

HaversineDistance

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

用于整数值向量空间的度量:虽然用于整数值向量,但对于实值向量来说,这些也是有效的度量。

identifier

类名称

距离函数

“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

identifier

类名称

距离函数

“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)

用户定义距离:

identifier

类名称

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

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.metrics.DistanceMetric。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。