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.

rangesearch

Buscar todos los vecinos dentro de la distancia especificada mediante el objeto buscador

Descripción

ejemplo

Idx = rangesearch(Mdl,Y,r) busca todos los vecinos (es decir, puntos, filas u observaciones) dentro del radio de cada punto (es decir, fila o observación) en los datos de la consulta utilizando una búsqueda exhaustiva o un árbol-d. Devuelve, que es un vector de columna de los índices de dentro de las unidades.Mdl.XrYKrangesearchIdxMdl.Xr

ejemplo

Idx = rangesearch(Mdl,Y,r,Name,Value) Devuelve los índices de la observación dentro del radio de cada observación con opciones adicionales especificadas por uno o más argumentos de par.Mdl.XrYName,Value Por ejemplo, puede especificar que se utilice una métrica de distancia diferente a la almacenada en un parámetro de métrica de distancia diferente al almacenado.Mdl.DistanceMdl.DistParameter

ejemplo

[Idx,D] = rangesearch(___) Además devuelve la matriz utilizando cualquiera de los argumentos de entrada en las sintaxis anteriores. contiene las distancias entre las observaciones dentro del radio de cada observación.DDMdl.XrY De forma predeterminada, la función organiza las columnas en orden ascendente por cercanía, con respecto a la métrica de distancia.D

Ejemplos

contraer todo

acepta o Modele objetos para buscar los datos de entrenamiento de los vecinos más cercanos a los datos de la consulta.rangesearchExhaustiveSearcherKDTreeSearcher Un modelo invoca el algoritmo de buscador exhaustivo y un modelo define un árbol-d, que utiliza para buscar vecinos más cercanos.ExhaustiveSearcherKDTreeSearcherKrangesearch

Cargue el conjunto de datos de iris de Fisher. Reserve aleatoriamente cinco observaciones de los datos para los datos de consulta. Concéntrese en las dimensiones del pétalo.

load fisheriris rng(1); % For reproducibility n = size(meas,1); idx = randsample(n,5); X = meas(~ismember(1:n,idx),3:4); % Training data Y = meas(idx,3:4);                % Query data

Cultivar un d-árbol bidimensional por defecto.K

MdlKDT = KDTreeSearcher(X)
MdlKDT =    KDTreeSearcher with properties:         BucketSize: 50          Distance: 'euclidean'     DistParameter: []                 X: [145x2 double]  

es un objeto de modelo.MdlKDTKDTreeSearcher Puede alterar sus propiedades de escritura mediante la notación de puntos.

Prepare un buscador de vecinos exhaustivo más cercano.

MdlES = ExhaustiveSearcher(X)
MdlES =    ExhaustiveSearcher with properties:           Distance: 'euclidean'     DistParameter: []                 X: [145x2 double]  

es un objeto de modelo.MdlESExhaustiveSearcher Contiene las opciones, como la métrica de distancia, que se usarán para buscar los vecinos más cercanos.

Alternativamente, puede hacer crecer un árbol-d o preparar un buscador de vecino más cercano con un exhaustivo uso.Kcreatens

Buscar datos de entrenamiento para los índices de vecino más cercanos que corresponden a cada observación de consulta que están dentro de un radio de 0,5 cm. Realice ambos tipos de búsquedas y utilice la configuración predeterminada.

r = 0.15; % Search radius IdxKDT = rangesearch(MdlKDT,Y,r); IdxES = rangesearch(MdlES,Y,r); [IdxKDT IdxES]
ans = 5x2 cell array
    {1x27 double}    {1x27 double}
    {[       13]}    {[       13]}
    {1x27 double}    {1x27 double}
    {1x2  double}    {1x2  double}
    {1x0  double}    {1x0  double}

y son matrices celulares de vectores correspondientes a los índices de que están dentro de 0,15 cm de las observaciones en.IdxKDTIdxESXY Cada fila de las matrices de índice corresponde a una observación de consulta.

Compare los resultados entre los métodos.

cellfun(@isequal,IdxKDT,IdxES)
ans = 5x1 logical array

   1
   1
   1
   1
   1

En este caso, los resultados son los mismos.

Graficar los resultados de los iris de setosa.

setosaIdx = strcmp(species(~ismember(1:n,idx)),'setosa'); XSetosa = X(setosaIdx,:); ySetosaIdx = strcmp(species(idx),'setosa'); YSetosa = Y(ySetosaIdx,:);  figure; plot(XSetosa(:,1),XSetosa(:,2),'.k'); hold on; plot(YSetosa(:,1),YSetosa(:,2),'*r'); for j = 1:sum(ySetosaIdx)     c = YSetosa(j,:);     circleFun = @(x1,x2)r^2 - (x1 - c(1)).^2 - (x2 - c(2)).^2;     fimplicit(circleFun,[c(1) + [-1 1]*r, c(2) + [-1 1]*r],'b-') end xlabel 'Petal length (cm)'; ylabel 'Petal width (cm)'; title 'Setosa Petal Measurements'; legend('Observations','Query Data','Search Radius'); axis equal hold off

Cargue el conjunto de datos de iris de Fisher.

load fisheriris

Quite cinco iris aleatoriamente de los datos del predictor para usarlos como conjunto de consultas.

rng(1);                     % For reproducibility n = size(meas,1);           % Sample size qIdx = randsample(n,5);     % Indices of query data X = meas(~ismember(1:n,qIdx),:); Y = meas(qIdx,:);

Prepare un buscador de vecinos más cercano y exhaustivo predeterminado.

Mdl = ExhaustiveSearcher(X)
Mdl =    ExhaustiveSearcher with properties:           Distance: 'euclidean'     DistParameter: []                 X: [145x4 double]  

es un modelo.MdlExhaustiveSearcher

Busque los índices de los datos de entrenamiento () que se encuentran dentro de los 0,15 cm de cada punto de la consulta Data ().XY Especifique que las distancias son con respecto a la métrica Mahalanobis.

r = 1; Idx = rangesearch(Mdl,Y,r,'Distance','mahalanobis')
Idx = 5x1 cell array
    {1x15 double}
    {1x5  double}
    {1x6  double}
    {[       84]}
    {[       69]}

Idx{3}
ans = 1×6

     1    34    33    22    24     2

Cada celda de corresponde a una observación de datos de consulta y contiene en un vector de índices de los vecinos dentro de 0,15 cm de los datos de consulta. organiza los índices en orden ascendente por distancia.IdxXrangesearch Por ejemplo, utilizando la distancia de Mahalanobis, el segundo vecino más cercano de is.Y(3,:)X(34,:)

Cargue el conjunto de datos de iris de Fisher.

load fisheriris

Quite cinco iris aleatoriamente de los datos del predictor para usarlos como conjunto de consultas.

rng(4);                     % For reproducibility n = size(meas,1);           % Sample size qIdx = randsample(n,5);     % Indices of query data X = meas(~ismember(1:n,qIdx),:); Y = meas(qIdx,:);

Cultivar un árbol-d de cuatro dimensiones usando los datos de entrenamiento.K Especifique si desea utilizar la distancia Minkowski para encontrar los vecinos más cercanos.

Mdl = KDTreeSearcher(X);

es un modelo.MdlKDTreeSearcher De forma predeterminada, la métrica de distancia para encontrar los vecinos más cercanos es la métrica euclidiana.

Busque los índices de los datos de entrenamiento () que se encuentran dentro de los 0,5 cm de cada punto de la consulta Data ().XY

r = 0.5; [Idx,D] = rangesearch(Mdl,Y,r);

y son matrices de celdas de cinco elementos de vectores.IdxD Los valores vectoriales en son los índices en.IdxX Los índices representan las observaciones que se encuentran dentro de los 0,5 cm de los datos de consulta,. contiene las distancias que corresponden a las observaciones.XYD

Visualice los resultados para la observación de consultas 3.

Idx{3}
ans = 1×2

   127   122

D{3}
ans = 1×2

    0.2646    0.4359

La observación más cercana a es, que es cm de distancia.Y(3,:)X(127,:)0.2646 El siguiente más cercano es, que está a cm de distancia.X(122,:)0.4359 Todas las demás observaciones son mayores que cm de distancia de.0.5Y(5,:)

Argumentos de entrada

contraer todo

Buscador de vecino más cercano, especificado como un objeto de modelo o, respectivamente.ExhaustiveSearcherKDTreeSearcher

Si es un modelo,MdlExhaustiveSearcher rangesearch busca los vecinos más cercanos mediante una búsqueda exhaustiva. Lo contrario rangesearch utiliza el árbol d cultivado para buscar vecinos más cercanos.K

Datos de consulta, especificados como una matriz numérica.

es una-por-matriz.YmK Las filas corresponden a las observaciones (es decir, ejemplos) y las columnas corresponden a los predictores (es decir, variables o características). debe tener el mismo número de columnas que los datos de entrenamiento almacenados.YYMdl.X

Tipos de datos: single | double

Radio de búsqueda alrededor de cada punto de los datos de la consulta, especificado como un escalar no negativo.

encuentra todas las observaciones que están dentro de la distancia de cada observación.rangesearchMdl.XrY La propiedad almacena la distancia.Mdl.Distance

Tipos de datos: single | double

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: especifica para buscar todas las observaciones dentro de la distancia de cada observación, utilizando la métrica de distancia Minkowski con exponente.'Distance','minkowski','P',3Mdl.XrY3

Para los buscadores de vecinos más cercanos

contraer todo

Métrica de distancia utilizada para buscar los vecinos de los datos de entrenamiento en las observaciones de la consulta, especificadas como el par separado por comas que consta de un vector de caracteres, un escalar de cadena o un identificador de función.'Distance'

Para ambos tipos de buscadores de vecinos más cercanos, rangesearch admite estas métricas de distancia.

ValorDescripción
'chebychev'Chebychev distancia (diferencia máxima de coordenadas).
'cityblock'Distancia de bloque de ciudad.
'euclidean'Distancia euclidiana.
'minkowski'Distancia Minkowski. El exponente predeterminado es 2. Para especificar un exponente diferente, utilice el argumento de par nombre-valor.'P'

Si es un objeto de modelo,MdlExhaustiveSearcher rangesearch también admite estas métricas de distancia.

ValorDescripción
'correlation'Uno menos la correlación lineal de muestra entre las observaciones (tratadas como secuencias de valores).
'cosine'Uno menos el coseno del ángulo incluido entre las observaciones (tratado como vectores de fila).
'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.
'mahalanobis'Distancia de Mahalanobis, calculada utilizando una matriz de covarianza definida positiva. Para cambiar el valor de la matriz de covarianza, utilice el argumento de par nombre-valor.'Cov'
'seuclidean'Distancia euclidiana estandarizada. Cada diferencia de coordenadas entre las filas y la matriz de consulta se escala dividiendo por el elemento correspondiente de la desviación estándar calculada desde.Mdl.XMdl.X Para especificar otro escalado, use el argumento de par nombre-valor.'Scale'
'spearman'Uno menos la correlación de rango de Spearman de muestra entre las observaciones (tratadas como secuencias de valores).

Si es un objeto de modelo, también puede especificar un identificador de función para una métrica de distancia personalizada mediante (por ejemplo,).MdlExhaustiveSearcher@@distfun La función de distancia personalizada debe:

  • Tenga el formulario.function D2 = distfun(ZI,ZJ)

  • Tome como argumentos:

    • Un 1 por vector que contiene una sola fila de o, donde es el número de columnas de.KZIMdl.XYKMdl.X

    • Una-por-matriz que contiene varias filas de o, donde es un entero positivo.mKZJMdl.XYm

  • Devuelve un vector de distancias de un-por-1, dondemD2 D2(j) es la distancia entre las observaciones yZI ZJ(j,:).

Para obtener más información, consulte.Las métricas de distancia

Ejemplo: 'Distance','minkowski'

Exponente de la métrica de distancia Minkowski, especificada como el par separado por comas que consta de un escalar positivo.'P' Este argumento sólo es válido si es.'Distance''minkowski'

Ejemplo: 'P',3

Tipos de datos: single | double

Marcar para ordenar los índices devueltos según la distancia, especificado como el par separado por comas que consta de y cualquiera () o ().'SortIndices'true1false0

Para un rendimiento más rápido cuando contiene muchas observaciones que tienen muchos puntos más cercanos, puede establecer en.YSortIndicesfalse En este caso, devuelve los índices de los puntos más cercanos sin ningún orden en particular.rangesearch Cuando es, la función organiza los índices de los puntos más cercanos en orden ascendente por distancia.SortIndicestrue

Ejemplo: 'SortIndices',false

Tipos de datos: logical

Para los buscadores de vecinos más cercanos

contraer todo

Matriz de covarianza para la métrica de distancia de Mahalanobis, especificada como el par separado por comas que consta de una matriz definida positiva. es un-por-matriz, donde es el número de columnas de.'Cov'CovKKKMdl.X Si especifica y no especifica,Cov'Distance','mahalanobis' rangesearch Devuelve un mensaje de error.

Ejemplo: 'Cov',eye(3)

Tipos de datos: single | double

Valor de parámetro de escala para la métrica de distancia euclidiana estandarizada, especificada como el par separado por comas que consta de un vector numérico no negativo. tiene longitud, donde está el número de columnas de.'Scale'ScaleKKMdl.X

El software escala cada diferencia entre los datos de entrenamiento y consulta utilizando el elemento correspondiente de.Scale Si especifica y no especifica,Scale'Distance','seuclidean' rangesearch Devuelve un mensaje de error.

Ejemplo: 'Scale',quantile(Mdl.X,0.75) - quantile(Mdl.X,0.25)

Tipos de datos: single | double

Nota

Si especifica,, o, a continuación, y no cambia el valor.'Distance''Cov''P''Scale'Mdl.DistanceMdl.DistParameter

Argumentos de salida

contraer todo

Los índices de datos de entrenamiento de los vecinos más cercanos, devueltos como una matriz de vectores numéricos de celda.

es una matriz de celdas de tal forma que Cell () contiene unIdxm1jIdx{j} Mjvector dimensional de los índices de las observaciones que se encuentran dentro de las unidades a la observación de la consulta.Mdl.XrY(j,:) Si es así, organiza los elementos de los vectores en orden ascendente por distancia.SortIndicestruerangesearch

Distancias de los vecinos a los datos de consulta, devueltos como una matriz numérica o matriz de vectores numéricos.

es una matriz de celdas de tal forma que Cell () contiene unDm1jD{j} Mjvector dimensional de las distancias en las que se encuentran las observaciones desde la observación de la consulta.Mdl.XY(j,:) Todos los elementos del vector son menores que.r Si es así, organiza los elementos de los vectores en orden ascendente.SortIndicestruerangesearch

Sugerencias

encuentra los puntos (entero positivo) en que son más cercanos para cada punto.knnsearchkMdl.XkY Por el contrario, encuentra todos los puntos que están dentro de la distancia (escalar positivo) de cada punto.rangesearchMdl.XrY

Funcionalidad alternativa

rangesearch es una función de objeto que requiere un objeto de modelo, datos de consulta y una distancia.ExhaustiveSearcherKDTreeSearcher En condiciones equivalentes, rangesearch Devuelve los mismos resultados que cuando se especifica el argumento de par nombre-valor o, respectivamente.rangesearch'NSMethod','exhaustive''NSMethod','kdtree'

Capacidades ampliadas

Introducido en R2011b