sklearn.neighbors.DistanceMetric

class sklearn.neighbors.DistanceMetric

Clase DistanceMetric

Esta clase proporciona una interfaz uniforme para las funciones métricas de distancia rápida. Se puede acceder a las distintas métricas a través del método de clase get_metric y del identificador de la cadena métrica (ver más abajo).

Ejemplos

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

Métricas disponibles

A continuación se detallan los identificadores métricos de cadena y las clases métricas de distancia asociadas:

Métricas destinadas a espacios vectoriales con valor real:

identificador

nombre de la clase

args

función de distancia

«euclidean»

EuclideanDistance

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

«manhattan»

ManhattanDistance

sum(|x - y|)

«chebyshev»

ChebyshevDistance

max(|x - y|)

«minkowski»

MinkowskiDistance

p

sum(|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

V o VI

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

Métrica pensada para espacios vectoriales bidimensionales: Nótese que la métrica de distancia haversina requiere datos en forma de [latitud, longitud] y tanto las entradas como las salidas están en unidades de radianes.

identificador

nombre de la clase

función de distancia

«haversine»

HaversineDistance

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

Métricas destinadas a espacios vectoriales con valor entero: Aunque están destinadas a vectores con valor entero, estas también son métricas válidas en el caso de vectores con valor real.

identificador

nombre de la clase

función de distancia

«hamming»

HammingDistance

N_unequal(x, y) / N_tot

«canberra»

CanberraDistance

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

«braycurtis»

BrayCurtisDistance

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

Métricas destinadas a espacios vectoriales con valor booleano: Cualquier entrada distinta de cero es evaluada a «True». En los listados a continuación, se utilizan las siguientes abreviaturas:

  • N : número de dimensiones

  • NTT : número de dims en los que ambos valores son True

  • NTF : número de dims en los que el primer valor es True, el segundo es False

  • NFT : número de dims en los que el primer valor es False, el segundo es True

  • NFF : número de dims en los que ambos valores son False

  • NNEQ : número de dimensiones no iguales, NNEQ = NTF + NFT

  • NNZ : número de dimensiones no nulas, NNZ = NTF + NFT + NTT

identificador

nombre de la clase

función de distancia

«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

NNZ / N

«sokalmichener»

SokalMichenerDistance

2 * NNEQ / (N + NNEQ)

«sokalsneath»

SokalSneathDistance

NNEQ / (NNEQ + 0.5 * NTT)

Distancia definida por el usuario:

identificador

nombre de la clase

args

«pyfunc»

PyFuncDistance

func

Aquí func es una función que toma dos arreglos unidimensionales de numpy, y devuelve una distancia. Ten en cuenta que para ser utilizada dentro del BallTree, la distancia debe ser una métrica verdadera: es decir, debe satisfacer las siguientes propiedades

  1. Non-negativity: d(x, y) >= 0

  2. Identity: d(x, y) = 0 si solo si x == y

  3. Symmetry: d(x, y) = d(y, x)

  4. Triangle Inequality: d(x, y) + d(y, z) >= d(x, z)

Debido a la sobrecarga de objetos de Python implicada en la llamada a la función de Python, esto será bastante lento, pero tendrá la misma escala que otras distancias.

Métodos

dist_to_rdist

Convierte la distancia real en la distancia reducida.

get_metric

Obtiene la métrica de distancia dada a partir del identificador de la cadena.

pairwise

Calcular las distancias por pares entre X e Y

rdist_to_dist

Convierte la distancia reducida a la distancia real.

dist_to_rdist()

Convierte la distancia real en la distancia reducida.

La distancia reducida, definida para algunas métricas, es una medida computacionalmente más eficiente que preserva el rango de la distancia verdadera. Por ejemplo, en la métrica de la distancia euclidiana, la distancia reducida es la distancia euclidiana al cuadrado.

get_metric()

Obtiene la métrica de distancia dada a partir del identificador de la cadena.

Consulta el docstring de DistanceMetric para obtener una lista de métricas disponibles.

Parámetros
metricstring o nombre de clase

La métrica de distancia a utilizar

**kwargs

se pasarán argumentos adicionales a la métrica solicitada

pairwise()

Calcular las distancias por pares entre X e Y

Esta es una rutina de conveniencia para las pruebas. Para muchas métricas, las utilidades de scipy.spatial.distance.cdist y scipy.spatial.distance.pdist serán más rápidas.

Parámetros
Xarray-like

Arreglo de forma (Nx, D), que representa Nx puntos en D dimensiones.

Yarray-like (opcional)

Arreglo de forma (Ny, D), que representa Ny puntos en D dimensiones. Si no se especifica, entonces Y=X.

Devuelve
——-
distndarray

La forma (Nx, Ny) arreglo de distancias por pares entre puntos en X e Y.

rdist_to_dist()

Convierte la distancia reducida a la distancia real.

La distancia reducida, definida para algunas métricas, es una medida computacionalmente más eficiente que preserva el rango de la distancia verdadera. Por ejemplo, en la métrica de la distancia euclidiana, la distancia reducida es la distancia euclidiana al cuadrado.