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 propiedadesNon-negativity: d(x, y) >= 0
Identity: d(x, y) = 0 si solo si x == y
Symmetry: d(x, y) = d(y, x)
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
Convierte la distancia real en la distancia reducida.
Obtiene la métrica de distancia dada a partir del identificador de la cadena.
Calcular las distancias por pares entre X e Y
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.