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

La distancia en parejas 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

Calcule la distancia euclidiana entre pares de observaciones y convierta el vector de distancia a una matriz usando.squareform

Cree una matriz con tres observaciones y dos variables.

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

Calcule la distancia euclidiana.

D = pdist(X)
D = 1×3

    0.2954    1.0670    0.9448

Las distancias en pares se organizan en el orden (2, 1), (3, 1), (3, 2). Puede ubicar fácilmente la distancia entre las observaciones y el uso.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 en 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 hacia son las mismas.ysquareformDpdist

Cree una matriz con tres observaciones y dos variables.

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

Calcule la distancia de Minkowski con el exponente predeterminado 2.

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

    0.2954    1.0670    0.9448

Calcule la distancia Minkowski con un exponente de 1, que es igual a la distancia de bloque de 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 en 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; 

Calcule la distancia euclidiana.

D1 = pdist(X) 
 D1 =         NaN       NaN    0.9448  

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

Defina una función de distancia personalizada que ignore las coordenadas con 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);  

Calcule la distancia con pasando el identificador de función como un 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 un vector de caracteres, un escalar de cadena o un identificador de función, como se describe en la tabla siguiente.

ValorDescripción
'euclidean'

Distancia euclidiana (por defecto).

'squaredeuclidean'

Distancia euclidiana cuadrada. (Esta opción se proporciona sólo para la eficiencia. No satisface la desigualdad triangular.)

'seuclidean'

Distancia euclidiana estandarizada. Cada diferencia de coordenadas entre las observaciones se escala dividiendo por el elemento correspondiente de la desviación estándar, S = nanstd(X). Se usa 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 positiva definida.DistParameterCC

'cityblock'

Distancia de bloque de ciudad.

'minkowski'

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

'chebychev'

Chebychev distancia (diferencia máxima de coordenadas).

'cosine'

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

'correlation'

Uno menos la correlación de muestra entre los 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 muestra entre las observaciones (tratadas como secuencias de valores).

@distfun

Mango de función de distancia personalizado. Una función de distancia tiene la forma donde

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

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

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

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

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

Para las definiciones, vea.Las 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 usar estas métricas de la misma manera que las otras métricas con un valor predeterminado.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 sólo es válido cuando se especifica como, o.Distance'seuclidean''minkowski''mahalanobis'

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

  • Si es, es el exponente de 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étrico y positivo definitivo.nancov(X)DistParameter

Ejemplo: 'minkowski',3

Tipos de datos: single | double

Argumentos de salida

contraer todo

Distancias en parejas, 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-por-distancia en orden de columnas.mmmmmm La distancia en parejas 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-por-matriz donde corresponde a la distancia en 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 dessimilitud en clustering o escalado multidimensional.D Para obtener información detallada, vea y 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

Las métricas de distancia

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

Dada una matriz de datos, que se trata como (1-por-) vectores de filamnXmn X1, X2, ..., Xm, las diferentes 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-por-diagonal cuyo elemento diagonal es (())VnnjSj2, donde se encuentra un vector de factores de escalado para cada dimensión.S

  • Mahalanobis distancia

    dst2=(xsxt)C1(xsxt),

    donde está la matriz de covarianza.C

  • Distancia de bloque de ciudad

    dst=j=1n|xsjxtj|.

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

  • Distancia Minkowski

    dst=j=1n|xsjxtj|pp.

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

  • Chebychev distancia

    dst=maxj{|xsjxtj|}.

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

  • La distancia del 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).

  • La distancia Jaccard

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

  • La 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 tomadox1j,x2j, ...Xmj, según lo calculado por.tiedrank

    • Rs Y Rt son los vectores de rango de coordenadas 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