KNN Search
Encontrar los k vecinos más cercanos utilizando un objeto de búsqueda
Desde R2023b
![](knn_search_ic.png)
Bibliotecas:
Statistics and Machine Learning Toolbox /
Neighborhood Searcher
Descripción
El bloque KNN Search encuentra los vecinos más cercanos en los datos a un punto de consulta utilizando un objeto de búsqueda de vecinos más cercanos (ExhaustiveSearcher
o KDTreeSearcher
).
Importe un objeto de búsqueda entrenado que contenga datos de observaciones en el bloque especificando el nombre de una variable del área de trabajo que contenga el objeto. El puerto de entrada x recibe un punto de consulta y el puerto de salida Idx devuelve los índices de los k puntos vecinos más cercanos en los datos. El puerto de salida opcional D devuelve las distancias entre el punto de consulta y los puntos vecinos más cercanos.
Ejemplos
Puertos
Entrada
x — Punto de consulta
vector fila
Punto de consulta, especificado como un vector fila. x debe tener el mismo número de columnas que el número de variables predictoras en el objeto searcher
especificado por Select nearest neighbor searcher. Las columnas de x deben estar en el mismo orden que las del objeto searcher
.
Tipos de datos: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
Salida
Idx — Índices de los vecinos más cercanos
vector fila numérico | Arreglo de celdas de 1 por 1
Índices de los vecinos más cercanos en los datos, devueltos como vector fila numérico o arreglo de celdas de 1 por 1.
Si no selecciona Include ties en la pestaña Main del cuadro de diálogo Block Parameters, el bloque devuelve un vector fila numérico de 1 por k, donde k es el número de vecinos más cercanos buscados. Cada columna del vector fila contiene el índice de un punto vecino más cercano en los datos, ordenado por distancia creciente al punto de consulta x.
Si selecciona Include ties en la pestaña Main del cuadro de diálogo Block Parameters, el bloque devuelve un arreglo de celdas de 1 por 1 como señal de tamaño variable que contiene un vector fila numérico de al menos k índices de las observaciones más cercanas en los datos al punto de consulta x. Las columnas del vector se ordenan por distancia creciente al punto de consulta.
Tipos de datos: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
D — Distancias de los vecinos más cercanos
vector fila numérico | Arreglo de celdas de 1 por 1
Distancias de los vecinos más cercanos a los puntos de consulta, devueltas como vector fila numérico o arreglo de celdas de 1 por 1.
Si no selecciona Include ties en la pestaña Main del cuadro de diálogo Block Parameters, el bloque devuelve un vector fila numérico de 1 por k, donde k es el número de vecinos más cercanos buscados. Cada columna del vector fila contiene la distancia de un punto vecino más cercanos en los datos al punto de consulta x, según la métrica de distancia. Las columnas del vector fila se ordenan por distancia creciente al punto de consulta.
Si selecciona Include ties en la pestaña Main del cuadro de diálogo Block Parameters, el bloque devuelve un arreglo de celdas de 1 por 1 como señal de tamaño variable que contiene un vector fila numérico de al menos k distancias de las observaciones más cercanas en los datos al punto de consulta x. Las columnas del vector se ordenan por distancia creciente al punto de consulta.
Dependencias
Para habilitar este puerto, seleccione Add output port for nearest neighbor distances en el bloque KNN Search.
Tipos de datos: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Parámetros
Principal
Seleccionar el buscador de vecinos más cercanos — Método de búsqueda de vecinos más cercanos
searcher
(predeterminado) | objeto ExhaustiveSearcher
| objeto KDTreeSearcher
Especifique el nombre de una variable del área de trabajo que contenga un objeto ExhaustiveSearcher
o KDTreeSearcher
.
Nota
El software utiliza la configuración predeterminada para todos los parámetros que puede especificar en el cuadro de diálogo Block Parameters. Los parámetros del cuadro de diálogo anulan los del objeto de búsqueda.
Uso programático
Parámetro de bloque: NeighborhoodSearcher |
Tipo: variable del área de trabajo |
Valores: objeto ExhaustiveSearcher | objeto KDTreeSearcher |
Valor predeterminado: "searcher" |
Añadir puerto de salida para distancias a los vecinos más cercanos — Añadir un segundo puerto de salida para las distancias a los vecinos más cercanos
off
(predeterminado) | on
Seleccione la casilla de verificación para incluir el segundo puerto de salida D en el bloque KNN Search.
Uso programático
Parámetro de bloque: ShowOutputDistances |
Tipo: vector de caracteres |
Valores: "off" | "on" |
Valor predeterminado: "off" |
Número de vecinos más cercanos — Número de vecinos más cercanos
1
(predeterminado) | entero positivo
Especifique el número de vecinos más cercanos que desea encontrar en los datos para el punto de consulta.
Uso programático
Parámetro de bloque: NumNeighbors |
Tipo: entero positivo |
Valores: single | double |
Valor predeterminado: 1 |
Incluir empates — Marcador para incluir todos los vecinos más cercanos
off
(predeterminado) | on
Si no selecciona Include ties en la pestaña Main del cuadro de diálogo Block Parameters, el bloque seleccionará la observación con el índice más pequeño entre las observaciones que tengan la misma distancia al punto de consulta.
Si selecciona Include ties:
La salida del bloque incluye a todos los vecinos más cercanos cuyas distancias sean iguales a la k-ésima distancia más pequeña de los argumentos de salida. Si hay más de cinco vecinos más cercanos con igual distancia a la k-ésima distancia más pequeña, la salida del bloque incluye solo los cinco primeros vecinos más cercanos con los valores de índice más pequeños.
Las salidas de los bloques Idx y D son arreglos de celdas de 1 por 1 en las que cada celda contiene un vector de al menos k índices y distancias, respectivamente. Las columnas de los vectores se ordenan por distancia creciente al punto de consulta.
Uso programático
Parámetro de bloque: IncludeTies |
Tipo: vector de caracteres |
Valores: "off" | "on" |
Valor predeterminado: "off" |
Métrica de distancia — Métrica de distancia
euclidean
(predeterminado) | chebychev
| cityblock
| minkowski
| correlation
| cosine
| hamming
| jaccard
| mahalanobis
| seuclidean
| spearman
Especifique la métrica de distancia utilizada para encontrar los vecinos más cercanos en los datos al punto de consulta.
Tanto para los objetos ExhaustiveSearcher
como para los objetos KDTreeSearcher
, el bloque es compatible con estas métricas de distancia.
Valor | Descripción |
---|---|
"chebychev" | Distancia de Chebyshov (diferencia de coordenada máxima) |
"cityblock" | Distancia Manhattan |
"euclidean" | Distancia euclidiana |
"minkowski" | Distancia de Minkowski. El exponente predeterminado es 2. Puede especificar un exponente diferente en el cuadro de diálogo Block Parameters. |
Para un objeto ExhaustiveSearcher
, el bloque también es compatible con estas métricas de distancia.
Valor | Descripción |
---|---|
"correlation" | Uno menos la correlación lineal de muestra entre observaciones (tratadas como secuencias de valores) |
"cosine" | Uno menos el coseno del ángulo incluido entre observaciones (tratadas como vectores fila) |
"hamming" | Distancia de Hamming, que es el porcentaje de coordenadas que difieren |
"jaccard" | Uno menos el coeficiente de Jaccard, que es el porcentaje de coordenadas, que no son cero, que difieren |
"mahalanobis" | Distancia de Mahalanobis, calculada utilizando una matriz de covarianzas definida positiva. El bloque calcula la matriz de covarianzas a partir de los datos del objeto searcher , de forma predeterminada. Puede especificar una matriz de covarianzas personalizada en el cuadro de diálogo Block Parameters. |
"seuclidean" | Distancia euclidiana estandarizada. Cada diferencia de coordenadas entre el punto de consulta x y los datos se escala dividiendo por el elemento correspondiente de la desviación estándar calculada a partir de los datos. Puede especificar un método de escalado diferente en el cuadro de diálogo Block Parameters. |
"spearman" | Uno menos la correlación del coeficiente de Spearman entre observaciones (tratadas como secuencias de valores) |
Nota
La configuración de la métrica de distancia anula la propiedad
Distance
del objetosearcher
especificado.El bloque KNN Search no admite la métrica de distancia
"fasteuclidean"
o"fastseuclidean"
(consulte Métricas de distancia).
Uso programático
Parámetro de bloque: DistanceMetric |
Tipo: vector de caracteres |
Valores: "euclidean" | "chebychev" | "cityblock" | "minkowski" | "correlation" | "cosine" | "hamming" | "jaccard" | "mahalanobis" | "seuclidean" | "spearman" |
Valor predeterminado: "euclidean" |
Matriz de covarianzas — Matriz de covarianzas para la métrica de distancia de Mahalanobis
Computed using data in searcher
(predeterminado) | Customized
El bloque calcula la matriz de covarianzas a partir de los datos del objeto searcher
, de forma predeterminada. Puede especificar una matriz de covarianzas personalizada seleccionando Customized
e introduciendo una matriz definida positiva en el cuadro Customized matrix
.
Nota
Esta configuración anula la propiedad DistParameter
del objeto searcher
especificado.
Uso programático
Parámetro de bloque: CovarianceMatrix |
Tipo: matriz definida positiva |
Valores: "Computed using data in searcher" | "Customized" |
Valor predeterminado: "Computed using data in searcher" |
Dependencias
Para habilitar este parámetro, establezca Distance Metric en "mahalanobis"
.
Escala — Valor del parámetro de escala para la métrica de distancia euclidiana estandarizada
Standard deviation of data in searcher
(predeterminado) | Customized
De forma predeterminada, el bloque calcula el valor del parámetro de escala a partir de los datos del objeto searcher
. Puede especificar un valor de parámetro de escala personalizado seleccionando Customized
e introduciendo un vector fila numérico no negativo en el cuadro de texto Customized scale
. El vector fila debe tener el mismo número de columnas que el número de variables predictoras del objeto searcher
. Cuando el bloque calcula la distancia euclidiana estandarizada, cada coordenada de los datos se escala por el elemento correspondiente de Scale
, al igual que el punto de consulta.
Nota
Esta configuración anula la propiedad DistParameter
del objeto searcher
especificado.
Uso programático
Parámetro de bloque: Scale |
Tipo: vector fila numérico no negativo |
Valores: "Standard deviation of data in searcher" | "Customized" |
Valor predeterminado: "Standard deviation of data in searcher" |
Dependencias
Para habilitar este parámetro, establezca Distance Metric en "seuclidean"
.
P — Exponente para la métrica de distancia de Minkowski
2
(predeterminado) | entero positivo
Especifique el exponente para la métrica de distancia de Minkowski. Para el caso predeterminado de P = 2, la distancia de Minkowski ofrece la distancia euclidiana. Para el caso especial de P = 1, la distancia de Minkowski ofrece la distancia Manhattan. Para el caso especial de P = ∞, la distancia de Minkowski ofrece la distancia de Chebyshov.
Nota
Esta configuración anula la propiedad DistParameter
del objeto searcher
especificado.
Uso programático
Parámetro de bloque: MinkExp |
Tipo: entero positivo |
Valores: positive integer |
Valor predeterminado: 2 |
Dependencias
Para habilitar este parámetro, establezca Distance Metric en "minkowski"
.
Tipos de datos
Parámetros operativos de punto fijoModo de redondeo de valores enteros — Modo de redondeo para operaciones de punto fijo
Floor
(predeterminado) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Especifique el modelo de redondeo para operaciones de punto fijo. Para obtener más información, consulte Rounding (Fixed-Point Designer).
Los parámetros de bloque siempre se redondean al valor representable más cercano. Para controlar el redondeo de un parámetro de bloque, introduzca una expresión en el campo de máscara usando una función de redondeo de MATLAB®.
Uso programático
Parámetro de bloque: RndMeth |
Tipo: vector de caracteres |
Valores: "Ceiling" | "Convergent" | "Floor" | "Nearest" | "Round" | "Simplest" | "Zero" |
Valor predeterminado: "Floor" |
Saturar en el desbordamiento de números enteros — Método de acción de desbordamiento
off
(predeterminado) | on
Especifique si los desbordamientos saturan o se adaptan.
Acción | Justificación | Impacto en los desbordamientos | Ejemplo |
---|---|---|---|
Seleccionar esta casilla ( | Su modelo tiene un posible desbordamiento y quiere protección frente a saturación explícita en el código generado. | Los desbordamientos saturan el valor mínimo o máximo que el tipo de datos puede representar. | El valor máximo que el tipo de datos |
Desmarcar esta casilla ( | Desea optimizar la eficacia de su código generado. Quiere evitar explicar excesivamente cómo maneja un bloque las señales fuera de rango. Para obtener más información, consulte Troubleshoot Signal Range Errors (Simulink). | Los desbordes se adaptan al valor apropiado que el tipo de datos puede representar. | El valor máximo que el tipo de datos |
Uso programático
Parámetro de bloque: SaturateOnIntegerOverflow |
Tipo: vector de caracteres |
Valores: "off" | "on" |
Valor predeterminado: "off" |
Bloquear la configuración del tipo de datos de salida contra los cambios de las herramientas de punto fijo — Evitar que las herramientas de punto fijo anulen el tipo de datos
off
(predeterminado) | on
Seleccione este parámetro para evitar que las herramientas de punto fijo anulen el tipo de datos que especifica para el bloque. Para obtener más información, consulte Use Lock Output Data Type Setting (Fixed-Point Designer).
Uso programático
Parámetro de bloque: LockScale |
Tipo: vector de caracteres |
Valores: "off" | "on" |
Valor predeterminado: "off" |
Tipo de datos de índice — Tipo de datos de la salida de índice
Inherit: auto
(predeterminado) | double
| single
| half
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| <data type expression>
Especifique el tipo de datos para la salida Idx. El tipo puede heredarse, especificarse directamente o expresarse como un objeto de tipo de datos como Simulink.NumericType
.
Haga clic en el botón Show data type assistant para mostrar el Data Type Assistant, que le ayudará a configurar los atributos de tipo de datos. Para obtener más información, consulte Specify Data Types Using Data Type Assistant (Simulink).
Uso programático
Parámetro de bloque: IndicesDataTypeStr |
Tipo: vector de caracteres |
Valores: "Inherit: auto" | "double" | "single" | "half" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" | "fixdt(1,16,0)" | "fixdt(1,16,2^0,0)" | "<data type expression>" |
Valor predeterminado: "Inherit: auto" |
Mínimo del tipo de datos del índice — Mínimo de la salida de índice
[]
(predeterminado) | escalar
Especifique el valor mínimo del rango de salida Idx que Simulink® comprueba.
Simulink utiliza el valor mínimo para realizar:
La comprobación del intervalo de parámetros para algunos bloques (consulte Specify Minimum and Maximum Values for Block Parameters (Simulink)).
La comprobación del intervalo de simulación (consulte Specify Signal Ranges (Simulink) y Enable Simulation Range Checking (Simulink)).
La optimización del código que ha generado desde el modelo. Esta optimización puede eliminar código algorítmico y afectar a los resultados de algunos modos de simulación, como el modo software-in-the-loop (SIL) o el modo externo. Para obtener más información, consulte Optimize using the specified minimum and maximum values (Embedded Coder).
Nota
El parámetro Index data type Minimum no satura ni reduce la señal de salida Idx real. Para hacerlo, use la función Saturation (Simulink) en su lugar.
Uso programático
Parámetro de bloque: IndicesOutMin |
Tipo: escalar |
Valores: "[]" | escalar |
Valor predeterminado: "[]" |
Máximo del tipo de datos de índice — Máximo de la salida de índice
[]
(predeterminado) | escalar
Especifique el valor máximo del rango de salida Idx que Simulink comprueba.
Simulink utiliza el valor máximo para realizar:
La comprobación del intervalo de parámetros para algunos bloques (consulte Specify Minimum and Maximum Values for Block Parameters (Simulink)).
La comprobación del intervalo de simulación (consulte Specify Signal Ranges (Simulink) y Enable Simulation Range Checking (Simulink)).
La optimización del código que ha generado desde el modelo. Esta optimización puede eliminar código algorítmico y afectar a los resultados de algunos modos de simulación, como el modo software-in-the-loop (SIL) o el modo externo. Para obtener más información, consulte Optimize using the specified minimum and maximum values (Embedded Coder).
Nota
El parámetro Index data type Maximum no satura ni reduce la señal de salida Idx real. Para hacerlo, use la función Saturation (Simulink) en su lugar.
Uso programático
Parámetro de bloque: IndicesOutMax |
Tipo: escalar |
Valores: "[]" | escalar |
Valor predeterminado: "[]" |
Tipo de datos de distancia — Tipo de datos de salida de distancia
Inherit: auto
(predeterminado) | double
| single
| half
| int8
| uint8
| int16
| uint16
| int32
| uint32
| int64
| uint64
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| <data type expression>
Especifique el tipo de datos para la salida de distancia (D). El tipo puede heredarse, especificarse directamente o expresarse como un objeto de tipo de datos como Simulink.NumericType
.
Haga clic en el botón Show data type assistant para mostrar el Data Type Assistant, que le ayudará a configurar los atributos de tipo de datos. Para obtener más información, consulte Specify Data Types Using Data Type Assistant (Simulink).
Uso programático
Parámetro de bloque: DistanceDataTypeStr |
Tipo: vector de caracteres |
Valores: "Inherit: auto" | "double" | "single" | "half" | "int8" | "uint8" | "int16" | "uint16" | "int32" | "uint32" | "int64" | "uint64" | "fixdt(1,16,0)" | "fixdt(1,16,2^0,0)" | "<data type expression>" |
Valor predeterminado: "Inherit: auto" |
Nota
Los tipos de datos de punto fijo no son compatibles con la métrica de distancia de Spearman.
Dependencias
Para habilitar este parámetro, seleccione Add output port for nearest neighbor distances en la pestaña Main del cuadro de diálogo Block Parameters.
Mínimo del tipo de datos de distancia — Mínimo de la salida de distancia
[]
(predeterminado) | escalar
Especifique el valor mínimo del rango de salida de distancia (D) que Simulink comprueba.
Simulink utiliza el valor mínimo para realizar:
La comprobación del intervalo de parámetros para algunos bloques (consulte Specify Minimum and Maximum Values for Block Parameters (Simulink)).
La comprobación del intervalo de simulación (consulte Specify Signal Ranges (Simulink) y Enable Simulation Range Checking (Simulink)).
La optimización del código que ha generado desde el modelo. Esta optimización puede eliminar código algorítmico y afectar a los resultados de algunos modos de simulación, como el modo software-in-the-loop (SIL) o el modo externo. Para obtener más información, consulte Optimize using the specified minimum and maximum values (Embedded Coder).
Nota
El parámetro Distance data type Maximum no satura ni reduce la señal de salida D real. Para hacerlo, use la función Saturation (Simulink) en su lugar.
Uso programático
Parámetro de bloque: DistanceOutMin |
Tipo: escalar |
Valores: "[]" | escalar |
Valor predeterminado: "[]" |
Dependencias
Para habilitar este parámetro, seleccione Add output port for nearest neighbor distances en la pestaña Main del cuadro de diálogo Block Parameters.
Máximo del tipo de datos de distancia — Máximo de la salida de distancia
[]
(predeterminado) | escalar
Especifique el valor máximo del rango de salida de distancia (D) que Simulink comprueba.
Simulink utiliza el valor máximo para realizar:
La comprobación del intervalo de parámetros para algunos bloques (consulte Specify Minimum and Maximum Values for Block Parameters (Simulink)).
La comprobación del intervalo de simulación (consulte Specify Signal Ranges (Simulink) y Enable Simulation Range Checking (Simulink)).
La optimización del código que ha generado desde el modelo. Esta optimización puede eliminar código algorítmico y afectar a los resultados de algunos modos de simulación, como el modo software-in-the-loop (SIL) o el modo externo. Para obtener más información, consulte Optimize using the specified minimum and maximum values (Embedded Coder).
Nota
El parámetro Distance data type Maximum no satura ni reduce la señal de salida D real. Para hacerlo, use la función Saturation (Simulink) en su lugar.
Uso programático
Parámetro de bloque: DistanceOutMax |
Tipo: escalar |
Valores: "[]" | escalar |
Valor predeterminado: "[]" |
Dependencias
Para habilitar este parámetro, seleccione Add output port for nearest neighbor distances en la pestaña Main del cuadro de diálogo Block Parameters.
Características del bloque
Tipos de datos |
|
Paso directo |
|
Señales multidimensionales |
|
Señales de tamaño variable |
|
Detección de cruce por cero |
|
Funcionalidad alternativa
Puede utilizar un bloque Function de MATLAB con la función de objeto knnsearch
de un objeto de búsqueda del vecino más cercano (ExhaustiveSearcher
o KDTreeSearcher
). Para ver un ejemplo, consulte Predict Class Labels Using MATLAB Function Block.
Cuando decida si utilizar el bloque KNN Search en la biblioteca Statistics and Machine Learning Toolbox™ o un bloque Function de MATLAB con la función knnsearch
, considere lo siguiente:
Si utiliza el bloque de biblioteca Statistics and Machine Learning Toolbox, puede utilizar la herramienta Fixed-Point Tool (Fixed-Point Designer) para convertir un modelo de punto flotante en uno de punto fijo.
La compatibilidad con los arreglos de tamaño variable debe activarse para un bloque Function de MATLAB con la función
knnsearch
.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante Simulink® Coder™.
Conversión de punto fijo
Diseñe y simule sistemas en punto fijo mediante Fixed-Point Designer™.
Historial de versiones
Introducido en R2023b
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)