DistanceMetric#
- class sklearn.metrics.DistanceMetric#
统一接口,用于快速距离度量函数。
DistanceMetric
类提供了一种便捷的方式来计算样本之间的成对距离。它支持各种距离度量,如欧几里得距离、曼哈顿距离等。pairwise
方法可用于计算输入数组中样本之间的成对距离。它返回一个距离矩阵,表示所有样本对之间的距离。get_metric
方法允许你使用其字符串标识符检索特定度量。Examples
>>> 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...]])
可用度量
以下列出了字符串度量标识符及其关联的距离度量类:
适用于实值向量空间的度量:
identifier
class name
args
distance function
“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 距离度量要求数据格式为 [纬度, 经度],并且输入和输出单位为弧度。
identifier
class name
distance function
“haversine”
HaversineDistance
2 arcsin(sqrt(sin^2(0.5*dx) + cos(x1)cos(x2)sin^2(0.5*dy)))
适用于整数值向量空间的度量: 尽管这些度量是为整数值向量设计的,但它们在实值向量的情况下也是有效的度量。
identifier
class name
distance function
“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
class name
distance function
“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
class name
args
“pyfunc”
PyFuncDistance
func
这里
func
是一个函数,它接受两个一维 numpy 数组,并返回一个距离。注意,为了在 BallTree 中使用,距离必须是一个真正的度量:即它必须满足以下属性非负性: d(x, y) >= 0
同一性: d(x, y) = 0 当且仅当 x == y
对称性: d(x, y) = d(y, x)
三角不等式: d(x, y) + d(y, z) >= d(x, z)
由于调用 Python 函数涉及的 Python 对象开销,这将相当慢,但它将具有与其他距离相同的缩放比例。
- classmethod get_metric(metric, dtype=<class 'numpy.float64'>, **kwargs)#
获取从字符串标识符指定的距离度量。
请参阅DistanceMetric的docstring以获取可用度量列表。
- Parameters:
- metricstr or class name
所需距离度量的字符串标识符或类名。 请参阅
DistanceMetric
类的文档以获取可用度量列表。- dtype{np.float32, np.float64}, default=np.float64
将应用度量的输入数据类型。 这会影响计算距离的精度。 默认情况下,它设置为
np.float64
。- **kwargs
将传递给请求度量的其他关键字参数。 这些参数可用于自定义特定度量的行为。
- Returns:
- metric_obj请求度量的实例
请求的距离度量类的一个实例。