Main Content

KNN Search

Encontrar los k vecinos más cercanos utilizando un objeto de búsqueda

Desde R2023b

  • KNN Search Block Icon

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.

Puertos

Entrada

expandir todo

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

expandir todo

Í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

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

expandir todo

Principal

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"

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"

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

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"

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.

ValorDescripció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.

ValorDescripció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 objeto searcher 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"

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".

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".

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 fijo

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"

Especifique si los desbordamientos saturan o se adaptan.

AcciónJustificaciónImpacto en los desbordamientosEjemplo

Seleccionar esta casilla (on).

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 int8 (indicado como un valor entero de 8 bits) puede representar es 127. Cualquier resultado de una operación de bloque superior a este valor máximo provoca el desbordamiento del entero de 8 bits. Con la casilla de verificación seleccionada, el bloque de salida se satura en 127. De manera similar, la salida del bloque se satura en el valor de salida mínimo de -128.

Desmarcar esta casilla (off).

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 int8 (indicado como un valor entero de 8 bits) puede representar es 127. Cualquier resultado de una operación de bloque superior a este valor máximo provoca el desbordamiento del entero de 8 bits. Con la casilla de verificación desmarcada, el software interpreta el valor que causa el desbordamiento como int8, que puede producir un resultado no intencionado. Por ejemplo, un resultado de bloque de 130 (en binario 1000 0010) expresado como int8 es –126.

Uso programático

Parámetro de bloque: SaturateOnIntegerOverflow
Tipo: vector de caracteres
Valores: "off" | "on"
Valor predeterminado: "off"

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

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"

Especifique el valor mínimo del rango de salida Idx que Simulink® comprueba.

Simulink utiliza el valor mínimo para realizar:

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: "[]"

Especifique el valor máximo del rango de salida Idx que Simulink comprueba.

Simulink utiliza el valor máximo para realizar:

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: "[]"

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.

Especifique el valor mínimo del rango de salida de distancia (D) que Simulink comprueba.

Simulink utiliza el valor mínimo para realizar:

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.

Especifique el valor máximo del rango de salida de distancia (D) que Simulink comprueba.

Simulink utiliza el valor máximo para realizar:

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

Boolean | double | enumerated | fixed point | half | integer | single

Paso directo

Señales multidimensionales

no

Señales de tamaño variable

Detección de cruce por cero

no

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