Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

pdist

Distancia por pares entre pares de observaciones

Descripción

ejemplo

D = pdist(X) devuelve la distancia euclidiana entre pares de observaciones en .X

ejemplo

D = pdist(X,Distance) devuelve la distancia mediante el método especificado por .Distance

ejemplo

D = pdist(X,Distance,DistParameter) devuelve la distancia mediante el método especificado por y .DistanceDistParameter Solo puede especificar cuándo es , , o .DistParameterDistance'seuclidean''minkowski''mahalanobis'

Ejemplos

contraer todo

Calcular la distancia euclidiana entre pares de observaciones y convertir el vector de distancia en una matriz utilizando .squareform

Cree una matriz con tres observaciones y dos variables.

rng('default') % For reproducibility X = rand(3,2);

Calcular la distancia euclidiana.

D = pdist(X)
D = 1×3

    0.2954    1.0670    0.9448

Las distancias por pares se organizan en el orden (2,1), (3,1), (3,2). Puede localizar fácilmente la distancia entre las observaciones y utilizando .ijsquareform

Z = squareform(D)
Z = 3×3

         0    0.2954    1.0670
    0.2954         0    0.9448
    1.0670    0.9448         0

devuelve una matriz simétrica donde corresponde a la distancia por pares entre las observaciones y .squareformZ(i,j)ij Por ejemplo, puede encontrar la distancia entre las observaciones 2 y 3.

Z(2,3)
ans = 0.9448 

Pase a la función para reproducir la salida de la función.Zsquareformpdist

y = squareform(Z)
y = 1×3

    0.2954    1.0670    0.9448

Las salidas desde y desde son las mismas.ysquareformDpdist

Cree una matriz con tres observaciones y dos variables.

rng('default') % For reproducibility X = rand(3,2);

Calcula la distancia de Minkowski con el exponente predeterminado 2.

D1 = pdist(X,'minkowski')
D1 = 1×3

    0.2954    1.0670    0.9448

Calcular la distancia Minkowski con un exponente de 1, que es igual a la distancia de la manzana de la ciudad.

D2 = pdist(X,'minkowski',1)
D2 = 1×3

    0.3721    1.5036    1.3136

D3 = pdist(X,'cityblock')
D3 = 1×3

    0.3721    1.5036    1.3136

Defina una función de distancia personalizada que ignore las coordenadas con valores y calcule la distancia por pares mediante la función de distancia personalizada.NaN

Cree una matriz con tres observaciones y dos variables.

rng('default') % For reproducibility X = rand(3,2); 

Supongamos que falta el primer elemento de la primera observación.

X(1,1) = NaN; 

Calcular la distancia euclidiana.

D1 = pdist(X) 
 D1 =         NaN       NaN    0.9448  

Si la observación o contiene valores, la función vuelve para la distancia por pares entre y .ijNaNpdistNaNij Por lo tanto, D1(1) y D1(2), las distancias por pares (2,1) y (3,1), son valores.NaN

Defina una función de distancia personalizada que ignore las coordenadas con los valores y devuelva la distancia euclidiana.naneucdistNaN

 function D2 = naneucdist(XI,XJ)   %NANEUCDIST Euclidean distance ignoring coordinates with NaNs n = size(XI,2); sqdx = (XI-XJ).^2; nstar = sum(~isnan(sqdx),2); % Number of pairs that do not contain NaNs nstar(nstar == 0) = NaN; % To return NaN if all pairs include NaNs D2squared = nansum(sqdx,2).*n./nstar; % Correction for missing coordinates D2 = sqrt(D2squared);  

Calcular la distancia pasando el identificador de función como argumento de entrada de .naneucdistpdist

D2 = pdist(X,@naneucdist) 
 D2 =      0.3974    1.1538    0.9448  

Argumentos de entrada

contraer todo

Datos de entrada, especificados como una matriz numérica de tamaño -por- .mn Las filas corresponden a observaciones individuales y las columnas corresponden a variables individuales.

Tipos de datos: single | double

Métrica de distancia, especificada como vector de caracteres, escalar de cadena o identificador de función, como se describe en la tabla siguiente.

ValorDescripción
'euclidean'

Distancia euclidiana (predeterminada).

'squaredeuclidean'

Distancia euclidiana cuadrada. (Esta opción se proporciona solo para eficiencia. No satisface la desigualdad del triángulo.)

'seuclidean'

Distancia euclidiana estandarizada. Cada diferencia de coordenadas entre observaciones se escala dividiendo por el elemento correspondiente de la desviación estándar, S = nanstd(X). Se utiliza para especificar otro valor para .DistParameterS

'mahalanobis'

Mahalanobis distancia utilizando la covarianza de muestra de ,X C = nancov(X). Se utiliza para especificar otro valor para , donde la matriz es simétrica y definida positivamente.DistParameterCC

'cityblock'

Distancia del bloque de la ciudad.

'minkowski'

Distancia de Minkowski. El exponente predeterminado es 2. Se utiliza para especificar un exponente diferente, donde hay un valor escalar positivo del exponente.DistParameterPP

'chebychev'

Distancia de Chebychev (diferencia máxima de coordenadas).

'cosine'

Uno menos el coseno del ángulo incluido entre puntos (tratados como vectores).

'correlation'

Uno menos la correlación de la muestra entre puntos (tratados como secuencias de valores).

'hamming'

Distancia de hamming, que es el porcentaje de coordenadas que difieren.

'jaccard'

Uno menos el coeficiente Jaccard, que es el porcentaje de coordenadas distintas de cero que difieren.

'spearman'

Uno menos la correlación de rango de Spearman de la muestra entre las observaciones (tratadas como secuencias de valores).

@distfun

Mango de función de distancia personalizada. Una función de distancia tiene la forma en la que

function D2 = distfun(ZI,ZJ) % calculation of distance ...

  • es un vector -por- que contiene una sola observación.ZI1n

  • es una matriz por- que contiene múltiples observaciones. debe aceptar una matriz con un número arbitrario de observaciones.ZJm2ndistfunZJ

  • es un vector -por- de distancias, y es la distancia entre las observaciones y .D2m21D2(k)ZIZJ(k,:)

Si los datos no son dispersos, generalmente puede calcular la distancia más rápidamente mediante una distancia integrada en lugar de un identificador de función.

Para obtener definiciones, consulte .Métricas de distancia

Cuando utilice , , o , puede especificar un argumento de entrada adicional para controlar estas métricas.'seuclidean''minkowski''mahalanobis'DistParameter También puede utilizar estas métricas de la misma manera que las otras métricas con un valor predeterminado de .DistParameter

Ejemplo: 'minkowski'

Valores de parámetro de métrica de distancia, especificados como un escalar positivo, un vector numérico o una matriz numérica. Este argumento solo es válido cuando se especifica como , , o .Distance'seuclidean''minkowski''mahalanobis'

  • Si es , es un vector de factores de escala para cada dimensión, especificado como un vector positivo.Distance'seuclidean'DistParameter El valor predeterminado es nanstd(X).

  • Si es , es el exponente de la distancia Minkowski, especificado como un escalar positivo.Distance'minkowski'DistParameter El valor predeterminado es 2.

  • Si es , es una matriz de covarianza, especificada como una matriz numérica.Distance'mahalanobis'DistParameter El valor predeterminado es . debe ser simétrica y positiva definitiva.nancov(X)DistParameter

Ejemplo: 'minkowski',3

Tipos de datos: single | double

Argumentos de salida

contraer todo

Distancias por pares, devueltas como un vector de fila numérico de longitud ( –1)/2, correspondiente a pares de observaciones, donde está el número de observaciones en .mmmX

Las distancias se organizan en el orden (2,1), (3,1), ..., ( ,1), (3,2), ..., ( ,2), ..., ( , –1), es decir, el triángulo inferior izquierdo de la matriz de distancia -por- en orden de columna.mmmmmm La distancia por pares entre las observaciones y está enijD((i-1)*(m-i/2)+j-i) ij.

Puede convertir en una matriz simétrica mediante la función. devuelve una matriz -por- donde corresponde a la distancia por pares entre las observaciones y .DsquareformZ = squareform(D)mmZ(i,j)ij

Si la observación o contiene s, entonces el valor correspondiente en es para las funciones de distancia incorporadas.ijNaNDNaN

se utiliza comúnmente como una matriz de diferenciaentas en la agrupación en clústeres o escalado multidimensional.D Para obtener más información, consulte las páginas de referencia de función para , , , y .Clustering jerárquicocmdscalecophenetlinkagemdscaleoptimalleaforder Estas funciones toman como argumento de entrada.D

Más acerca de

contraer todo

Métricas de distancia

Una métrica de distancia es una función que define una distancia entre dos observaciones. pdist admite varias métricas de distancia: Distancia euclidiana, distancia euclidiana estandarizada, distancia Mahalanobis, distancia de la manzana de la ciudad, distancia de Minkowski, distancia de Chebychev, distancia del coseno, distancia de correlación, distancia Hamming, distancia Jaccard y distancia de Spearman.

Dada una matriz de datos -por-, que se trata como vectores de fila (1 por)mnXmn X1, X2, ..., Xm, las distintas distancias entre el vector Xs Y Xt se definen de la siguiente manera:

  • Distancia euclidiana

    dst2=(xsxt)(xsxt).

    La distancia euclidiana es un caso especial de la distancia Minkowski, donde p = 2.

  • Distancia euclidiana estandarizada

    dst2=(xsxt)V1(xsxt),

    donde está la matriz -by- diagonal cuyo elemento diagonal es ( ( ))VnnjSj2, donde hay un vector de factores de escala para cada dimensión.S

  • Distancia Mahalanobis

    dst2=(xsxt)C1(xsxt),

    donde está la matriz de covarianza.C

  • Distancia del bloque de la ciudad

    dst=j=1n|xsjxtj|.

    La distancia de la manzana de la ciudad es un caso especial de la distancia Minkowski, donde p = 1.

  • Distancia de Minkowski

    dst=j=1n|xsjxtj|pp.

    Para el caso especial de p = 1, la distancia de Minkowski da a la manzana de la ciudad distancia. Para el caso especial de p = 2, la distancia De Minkowski da la distancia euclidiana. Para el caso especial de p = ∞, la distancia de Minkowski da la distancia Chebychev.

  • Distancia de Chebychev

    dst=maxj{|xsjxtj|}.

    La distancia de Chebychev es un caso especial de la distancia Minkowski, donde p = ∞.

  • Distancia coseno

    dst=1xsxt(xsxs)(xtxt).

  • Distancia de correlación

    dst=1(xsx¯s)(xtx¯t)(xsx¯s)(xsx¯s)(xtx¯t)(xtx¯t),

    Dónde

    x¯s=1njxsj Y x¯t=1njxtj.

  • Distancia de Hamming

    dst=(#(xsjxtj)/n).

  • Distancia Jaccard

    dst=#[(xsjxtj)((xsj0)(xtj0))]#[(xsj0)(xtj0)].

  • Distancia de Spearman

    dst=1(rsr¯s)(rtr¯t)(rsr¯s)(rsr¯s)(rtr¯t)(rtr¯t),

    Dónde

    • Rsj es el rango de Xsj tomado el controlx1j, x2j, ...Xmj, calculado por .tiedrank

    • Rs Y Rt son los vectores de rango coordinado de Xs Y XtI.e. Rs = (Rs1, Rs2, ... Rsn).

    • r¯s=1njrsj=(n+1)2.

    • r¯t=1njrtj=(n+1)2.

Capacidades ampliadas

Introducido antes de R2006a