KNN 搜索

库:
Statistics and Machine Learning Toolbox /
Neighborhood Searcher
描述
KNN Search 模块使用最近邻搜索器对象(ExhaustiveSearcher
或 KDTreeSearcher
)在数据中查找一个查询点的最近邻。
通过指定包含某经过训练的搜索器对象的工作区变量的名称,将包含观测数据的该对象导入模块中。输入端口 x 接收一个查询点,输出端口 Idx 返回数据中 k 最近邻点的索引。可选输出端口 D 返回查询点和最近邻点之间的距离。
示例
Find Nearest Neighbors Using KNN Search Block
Train a nearest neighbor searcher model, and then use the KNN Search block for label prediction.
- 自 R2023b 起
- 打开实时脚本
端口
输入
输出
数据中最近邻的索引,以数值行向量或 1×1 元胞数组形式返回。
如果您未在“模块参数”对话框的主要选项卡上选择包括结值,则模块返回一个 1×k 数值行向量,其中 k 是搜索的最近邻的数量。该行向量的每列都包含数据中一个最近邻点的索引,按到查询点 x 的距离升序排序。
如果您在“模块参数”对话框的主要选项卡上选择包括结值,则模块返回一个 1×1 元胞数组作为可变大小信号,其中包含一个数值行向量,其元素是数据中到查询点 x 最近的观测值的至少 k 个索引。向量的列按到查询点的距离升序排序。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
最近邻到查询点的距离,以数值行向量或 1×1 元胞数组形式返回。
如果您未在“模块参数”对话框的主要选项卡上选择包括结值,则模块返回一个 1×k 数值行向量,其中 k 是搜索的最近邻的数量。根据距离度量,行向量的每列都包含数据中的一个最近邻到查询点 x 的距离。行向量的列按到查询点的距离升序排序。
如果您在“模块参数”对话框的常设选项卡上选择包括结值,则模块返回一个 1×1 元胞数组作为可变大小信号,其中包含一个数值行向量,其元素是数据中到查询点 x 最近的观测值的至少 k 个距离。向量的列按到查询点的距离升序排序。
依赖关系
要启用此端口,请在 KNN Search 模块中选择添加最近邻距离的输出端口。
数据类型: single
| double
| half
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
参数
主要
指定包含 ExhaustiveSearcher
或 KDTreeSearcher
对象的工作区变量的名称。
注意
软件对您可以在“模块参数”对话框中指定的所有参数使用默认设置。对话框中的参数会覆盖搜索器对象的参数。
编程用法
模块参数:NeighborhoodSearcher |
类型:工作区变量 |
值:ExhaustiveSearcher 对象 | KDTreeSearcher 对象 |
默认值:"searcher" |
选中该复选框可将第二个输出端口 D 包含在 KNN Search 模块中。
编程用法
模块参数:ShowOutputDistances |
类型:字符向量 |
值:"off" | "on" |
默认值:"off" |
指定要在数据中查找的查询点的最近邻的数量。
编程用法
模块参数:NumNeighbors |
类型:正整数 |
值:single | double |
默认值:1 |
如果您未在“模块参数”对话框的主要选项卡上选择包括结值,则模块会在与查询点距离相同的观测值中选择具有最小索引的观测值。
如果您选择包括结值,则:
模块输出包括距离等于输出参量中第 k 个最小距离的所有最近邻。如果五个以上最近邻的距离与第 k 个最小距离相等,则模块输出仅包括前五个具有最小索引值的最近邻。
Idx 和 D 模块输出是 1×1 元胞数组,其中每个元胞分别包含一个由至少 k 个索引和距离组成的向量。向量中的列按照到查询点的距离升序排序。
编程用法
模块参数:IncludeTies |
类型:字符向量 |
值:"off" | "on" |
默认值:"off" |
指定用于查找数据中查询点的最近邻的距离度量。
对于 ExhaustiveSearcher
和 KDTreeSearcher
对象,该模块都支持以下距离度量。
值 | 描述 |
---|---|
"chebychev" | 切比雪夫距离(最大坐标差) |
"cityblock" | 城市街区距离 |
"euclidean" | 欧几里德距离 |
"minkowski" | 闵可夫斯基距离。默认指数是 2。您可以在“模块参数”对话框中指定不同指数。 |
对于 ExhaustiveSearcher
对象,该模块还支持以下距离度量。
值 | 描述 |
---|---|
"correlation" | 1 减去观测值(视为值序列)之间的样本线性相关系数 |
"cosine" | 1 减去观测值(视为行向量)之间夹角的余弦值 |
"hamming" | 汉明距离,即相异坐标所占的百分比 |
"jaccard" | 1 减去杰卡德系数,即非零相异坐标所占的百分比 |
"mahalanobis" | 马氏距离,使用正定协方差矩阵计算。默认情况下,该模块基于 searcher 对象中的数据计算协方差矩阵。您可以在“模块参数”对话框中指定自定义的协方差矩阵。 |
"seuclidean" | 标准化的欧几里德距离。查询点 x 和数据之间的每个坐标差通过除以根据数据计算的标准差的对应元素来缩放。您可以在“模块参数”对话框中指定不同缩放方法。 |
"spearman" | 1 减去样本观测值(视为值序列)之间的斯皮尔曼秩相关 |
注意
距离度量设置将覆盖指定的
Distance
对象的searcher
属性。KNN Search 模块不支持
"fasteuclidean"
或"fastseuclidean"
距离度量(请参阅距离度量)。
编程用法
模块参数:DistanceMetric |
类型:字符向量 |
值:"euclidean" | "chebychev" | "cityblock" | "minkowski" | "correlation" | "cosine" | "hamming" | "jaccard" | "mahalanobis" | "seuclidean" | "spearman" |
默认值:"euclidean" |
默认情况下,该模块基于 searcher
对象中的数据计算协方差矩阵。您可以通过选择自定义并在自定义矩阵框中输入正定矩阵来指定自定义协方差矩阵。
注意
此设置将覆盖指定的 searcher
对象的 DistParameter
属性。
编程用法
模块参数:CovarianceMatrix |
类型:正定矩阵 |
值:"Computed using data in searcher" | "Customized" |
默认值:"Computed using data in searcher" |
依赖关系
要启用此参数,请将距离度量设置为 "mahalanobis"
。
默认情况下,该模块基于 searcher
对象中的数据计算尺度参数值。您可以通过选择自定义并在自定义尺度文本框中输入非负数值行向量来指定自定义尺度参数值。行向量的列数必须与 searcher
对象中预测变量的列数相同。当模块计算标准化的欧几里德距离时,数据的每个坐标由 Scale
的对应元素缩放,查询点也是如此。
注意
此设置将覆盖指定的 searcher
对象的 DistParameter
属性。
编程用法
模块参数:Scale |
类型:非负数值行向量 |
值:"Standard deviation of data in searcher" | "Customized" |
默认值:"Standard deviation of data in searcher" |
依赖关系
要启用此参数,请将距离度量设置为 "seuclidean"
。
指定闵可夫斯基距离度量的指数。对于默认情形 P = 2,闵可夫斯基距离即欧几里德距离。对于特例 P = 1,闵可夫斯基距离即城市街区距离。对于特例 P = ∞,闵可夫斯基距离即切比雪夫距离。
注意
此设置将覆盖指定的 searcher
对象的 DistParameter
属性。
编程用法
模块参数:MinkExp |
类型:正整数 |
值:positive integer |
默认值:2 |
依赖关系
要启用此参数,请将距离度量设置为 "minkowski"
。
数据类型
定点运算参数
指定定点运算的舍入模式。有关详细信息,请参阅舍入模式 (Fixed-Point Designer)。
模块参数始终舍入到最邻近的可表示值。要控制模块参数的舍入方法,请使用 MATLAB® 舍入函数在封装字段中输入表达式。
编程用法
模块参数:RndMeth |
类型:字符向量 |
值:"Ceiling" | "Convergent" | "Floor" | "Nearest" | "Round" | "Simplest" | "Zero" |
默认值:"Floor" |
指定对溢出是进行饱和处理还是绕回处理。
操作 | 基本原理 | 对溢出的影响 | 示例 |
---|---|---|---|
选中此复选框 ( | 您的模型可能有溢出,并且您希望在生成的代码中具有显式饱和保护。 | 将溢出饱和处理为数据类型能够表示的最小值或最大值。 |
|
清除此复选框 ( | 您想优化所生成代码的效率。 您希望避免过度地指定信号超出范围时模块的处理方式。有关详细信息,请参阅信号范围错误故障排除 (Simulink)。 | 溢出将绕回到数据类型可以表示的合适值。 |
|
编程用法
模块参数:SaturateOnIntegerOverflow |
类型:字符向量 |
值:"off" | "on" |
默认值:"off" |
选择此参数可防止定点工具覆盖您对模块指定的数据类型。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)。
编程用法
模块参数:LockScale |
类型:字符向量 |
值:"off" | "on" |
默认值:"off" |
数据类型
为 Idx 输出指定数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType
。
点击显示数据类型助手按钮 以显示数据类型助手,这有助于您设置数据类型属性。有关详细信息,请参阅使用数据类型助手指定数据类型 (Simulink)。
编程用法
模块参数:IndicesDataTypeStr |
类型:字符向量 |
值:"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>" |
默认值:"Inherit: auto" |
指定 Simulink® 检查的 Idx 输出范围的最小值。
Simulink 使用最小值执行下列操作:
某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值 (Simulink))。
从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如软件在环 (SIL) 模式或外部模式)的结果。有关详细信息,请参阅使用指定的最小值和值进行优化 (Embedded Coder)。
注意
索引数据类型最小值参数不会对实际 Idx 输出信号进行饱和处理或截断。为此,请改用 Saturation (Simulink) 模块。
编程用法
模块参数:IndicesOutMin |
类型:标量 |
值:"[]" | 标量 |
默认值:"[]" |
指定 Simulink 检查的 Idx 输出范围的最大值。
Simulink 使用最大值执行下列操作:
某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值 (Simulink))。
从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如软件在环 (SIL) 模式或外部模式)的结果。有关详细信息,请参阅使用指定的最小值和值进行优化 (Embedded Coder)。
注意
索引数据类型最大值参数不会对实际 Idx 输出信号进行饱和处理或截断。为此,请改用 Saturation (Simulink) 模块。
编程用法
模块参数:IndicesOutMax |
类型:标量 |
值:"[]" | 标量 |
默认值:"[]" |
指定距离 (D) 输出的数据类型。该类型可以继承、直接指定或表示为数据类型对象,如 Simulink.NumericType
。
点击显示数据类型助手按钮 以显示数据类型助手,这有助于您设置数据类型属性。有关详细信息,请参阅使用数据类型助手指定数据类型 (Simulink)。
编程用法
模块参数:DistanceDataTypeStr |
类型:字符向量 |
值:"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>" |
默认值:"Inherit: auto" |
注意
斯皮尔曼距离度量不支持定点数据类型。
依赖关系
要启用此参数,请在“模块参数”对话框的主要选项卡上选择添加最近邻距离的输出端口。
指定 Simulink 检查的距离 (D) 输出范围的最小值。
Simulink 使用最小值执行下列操作:
某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值 (Simulink))。
从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如软件在环 (SIL) 模式或外部模式)的结果。有关详细信息,请参阅使用指定的最小值和值进行优化 (Embedded Coder)。
注意
距离数据类型最小值参数不会对实际 D 输出信号进行饱和处理或截断。为此,请改用 Saturation (Simulink) 模块。
编程用法
模块参数:DistanceOutMin |
类型:标量 |
值:"[]" | 标量 |
默认值:"[]" |
依赖关系
要启用此参数,请在“模块参数”对话框的主要选项卡上选择添加最近邻距离的输出端口。
指定 Simulink 检查的距离 (D) 输出范围的最大值。
Simulink 使用最大值执行下列操作:
某些模块的参数范围检查(请参阅指定模块参数的最小值和最大值 (Simulink))。
从模型生成的代码的优化。此优化可删除算法代码,并影响某些仿真模式(如软件在环 (SIL) 模式或外部模式)的结果。有关详细信息,请参阅使用指定的最小值和值进行优化 (Embedded Coder)。
注意
距离数据类型最大值参数不会对实际 D 输出信号进行饱和处理或截断。为此,请改用 Saturation (Simulink) 模块。
编程用法
模块参数:DistanceOutMax |
类型:标量 |
值:"[]" | 标量 |
默认值:"[]" |
依赖关系
要启用此参数,请在“模块参数”对话框的主要选项卡上选择添加最近邻距离的输出端口。
模块特性
数据类型 |
|
直接馈通 |
|
多维信号 |
|
可变大小信号 |
|
过零检测 |
|
替代功能
您可以将 MATLAB Function 模块与最近邻搜索器对象(ExhaustiveSearcher
或 KDTreeSearcher
)的 knnsearch
对象函数结合使用。有关示例,请参阅Predict Class Labels Using MATLAB Function Block。
在决定是使用 Statistics and Machine Learning Toolbox™ 库中的 KNN Search 模块还是使用具有 knnsearch
函数的 MATLAB Function 模块时,请考虑以下几点:
如果使用 Statistics and Machine Learning Toolbox 库模块,可以使用定点工具 (Fixed-Point Designer)将浮点模型转换为定点。
必须为具有
knnsearch
函数的 MATLAB Function 模块启用对可变大小数组的支持。
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。
版本历史记录
在 R2023b 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)