主要内容

ExhaustiveSearcher

建立详尽的最近邻搜索器

描述

ExhaustiveSearcher模型对象存储训练数据,距离度量,参数值的距离度量一个详尽的最近邻搜索。穷举搜索算法发现每个查询的距离观察n在训练数据的观察,这是一个n——- - - - - -K数字矩阵。

一旦你创建一个ExhaustiveSearcher模型对象,找到相邻点的训练数据查询数据通过执行一个最近邻搜索使用knnsearch或者一个半径搜索使用rangesearch。穷举搜索算法更有效的比Kd-tree算法时K大(即K> 10),比它更灵活Kd-tree算法对距离度量的选择。的ExhaustiveSearcher模型对象还支持稀疏数据。万博1manbetx

创建

使用createns函数或ExhaustiveSearcher(这里描述)来创建一个函数ExhaustiveSearcher对象。除了两个函数使用相同的语法createns函数有“NSMethod”名称-值对参数,您可以用它来选择最近邻搜索方法。的createns函数还创建了一个KDTreeSearcher对象。指定“NSMethod”、“详尽”创建一个ExhaustiveSearcher对象。默认值是“详尽”如果K> 10,训练数据稀疏,或距离度量不是欧几里德,街区,Chebychev或闵可夫斯基。

描述

例子

Mdl= ExhaustiveSearcher (X)创建一个详尽的最近邻搜索对象(Mdl)使用n——- - - - - -K训练数据的数值矩阵(X)。

例子

Mdl= ExhaustiveSearcher (X,名称,值)使用一个或多个指定附加选项名称-值对参数。您可以指定的距离度量和距离度量参数设置(DistParameter)的财产。例如,ExhaustiveSearcher (X,“距离”,“chebychev”)创建一个详尽的最近邻搜索对象使用Chebychev距离。指定DistParameter,可以使用,P,或规模名称-值对的论点。

输入参数

全部展开

训练数据,准备详尽的搜索算法,指定为一个数字矩阵。Xn行,每个对应一个观察(即一个实例或例子)K列,每个对应一个预测(即功能)。

数据类型:|

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“距离”、“mahalanobis’,‘x’,眼睛(3)当搜索指定使用Mahalanobis距离最近的邻居和一个3×3单位矩阵的协方差矩阵的距离度量。

距离度量时使用电话knnsearchrangesearch为未来找到最近的邻居查询点,指定为逗号分隔组成的“距离”和一个特征向量,字符串标量,或函数句柄。

此表描述了支持距离度量指定为特征向量或字符串标量。万博1manbetx

价值 描述
“chebychev” Chebychev距离(最大坐标差异)。
“cityblock” 城市街区的距离。
“相关” 1 -样本线性相关性的观察(作为序列的值)。
的余弦 1 -之间的夹角的余弦值观察(视为行向量)。
“欧几里得” 欧氏距离。
“汉明” 汉明距离,协调不同的百分比。
“jaccard” 1 - Jaccard系数,非零坐标不同的百分比。
闵可夫斯基的 闵可夫斯基距离。默认的指数是2。指定一个不同的指数,使用“P”名称-值对的论点。
“mahalanobis” 使用正定Mahalanobis距离,计算协方差矩阵。改变协方差矩阵的值,使用“浸”名称-值对的论点。
“seuclidean” 标准化的欧氏距离。每个坐标行之间的区别Mdl.X和查询矩阵是通过除以相应的扩展元素的标准差计算Mdl.X。要指定另一个扩展,可以使用“规模”名称-值对的论点。
“枪兵” 1 -样本之间的斯皮尔曼等级相关的观察(作为序列的值)。

更多细节,请参阅距离度量

您可以指定一个函数处理为一个自定义的距离度量@(例如,@distfun)。一个自定义距离函数必须:

  • 的形式ZJ函数D2 = distfun(子)

  • 以作为参数:

    • 1 -K向量包含单个行X或从查询点Y,在那里K列的数量吗X

    • 一个——- - - - - -K矩阵ZJ包含多个行XY,在那里是一个正整数。

  • 返回一个1的向量距离D2,在那里D2 (j)是观察之间的距离ZJ (j:)

该软件创建一个不使用的距离度量ExhaustiveSearcher距离度量模型对象,所以你可以改变通过使用点符号在创建对象。

例子:“距离”、“mahalanobis”

协方差矩阵的Mahalanobis距离度量,指定为逗号分隔组成的“浸”和一个K——- - - - - -K正定矩阵,K列的数量吗X。这个论点是有效的前提“距离”“mahalanobis”

例子:“浸”,眼睛(3)

数据类型:|

闵可夫斯基距离度量指数,指定为逗号分隔组成的“P”和积极的标量。这个论点是有效的前提“距离”闵可夫斯基的

例子:“P”3

数据类型:|

标准化的欧氏距离度量,尺度参数值指定为逗号分隔组成的“规模”和一个非负数字向量的长度K,在那里K列的数量吗X。软件规模每个不同的培训和使用相应的查询数据元素规模。这个论点是有效的前提“距离”“seuclidean”

例子:“规模”,分位数(0.75 X)——分位数(0.25 X))

数据类型:|

属性

全部展开

这个属性是只读的。

训练数据,准备详尽的搜索算法,指定为一个数字矩阵。Xn行,每个对应一个观察(即一个实例或例子)K列,每个对应一个预测(即功能)。

输入参数XcreatensExhaustiveSearcher设置此属性。

数据类型:|

距离度量时使用电话knnsearchrangesearch为未来找到最近的邻居查询点,指定为一个特征向量或字符串标量(“chebychev”,“cityblock”,“相关”,的余弦,“欧几里得”,“汉明”,“jaccard”,闵可夫斯基的,“mahalanobis”,“seuclidean”,或“枪兵”),或一个函数处理。

“距离”名称-值对的观点creatensExhaustiveSearcher设置此属性。

该软件创建一个不使用的距离度量ExhaustiveSearcher模型对象,因此您可以通过使用点符号改变它。

距离度量参数值,指定为空([])或积极的标量。

此表描述了距离参数支持的距离度量。万博1manbetx

距离度量 参数描述
“mahalanobis”

一个代表协方差矩阵的正定矩阵用于计算距离。默认情况下,软件设置使用的协方差浸(Mdl.X omitrows)

“浸”名称-值对的观点creatensExhaustiveSearcher设置此属性。

你可以改变DistParameter例如,通过使用点符号Mdl.DistParameter= CovNew,在那里CovNew是一个K——- - - - - -K正定矩阵数值。

闵可夫斯基的

积极的标量表示指数的闵可夫斯基距离。默认情况下,指数2

“P”名称-值对的观点creatensExhaustiveSearcher设置此属性。

你可以改变DistParameter例如,通过使用点符号Mdl.DistParameter= PNew,在那里PNew是一个积极的标量。

“seuclidean”

积极的数字向量表示的值时使用的软件规模预测计算标准化的欧氏距离。默认情况下,软件:

  1. 估计的标准偏差(列)的预测指标X使用规模=性病(Mdl.X omitnan)

  2. 尺度每个坐标的行之间的区别X和查询矩阵通过除以相应的元素规模

“规模”名称-值对的观点creatensExhaustiveSearcher设置此属性。

你可以改变DistParameter例如,通过使用点符号Mdl.DistParameter= sNew,在那里sNew是一个K维正数值向量。

如果Mdl.Distance不是一个参数表中列出,然后呢Mdl.DistParameter[],这意味着没有参数指定的距离度量公式。

数据类型:|

对象的功能

knnsearch 找到k最近的邻居使用搜索对象
rangesearch 找到所有的邻居指定距离内使用搜索对象

例子

全部折叠

加载费雪的虹膜数据集。

负载fisheririsX =量;(n, k)大小(X) =
n = 150
k = 4

X150观察和预测。

准备一份详尽的最近邻搜索者使用整个数据集作为训练数据。

Mdl1 = ExhaustiveSearcher (X)
Mdl1 = ExhaustiveSearcher属性:距离:“欧几里得”DistParameter: [] X: (x4 150双)

Mdl1是一个ExhaustiveSearcher模型对象,其属性出现在命令窗口。对象包含有关训练算法,如距离度量。可以使用点符号改变属性值。

或者,你可以准备一个详尽的最近邻搜索者通过使用createns并指定“详尽”搜索方法。

Mdl2 = createns (X,“NSMethod”,“详尽”)
Mdl2 = ExhaustiveSearcher属性:距离:“欧几里得”DistParameter: [] X: (x4 150双)

Mdl2也是一个ExhaustiveSearcher模型对象,它相当于Mdl1

搜索X最近的邻居的一批查询数据,通过ExhaustiveSearcher模型对象和查询数据knnsearchrangesearch

加载费雪的虹膜数据集。专注于花瓣维度。

负载fisheririsX =量(:[3 - 4]);%预测

准备一个详尽的最近邻搜索器。指定的距离度量。

Mdl = createns (X,“距离”,“mahalanobis”)
Mdl = ExhaustiveSearcher属性:距离:“mahalanobis”DistParameter: [2 x2双]X: [150 x2双)

因为距离度量Mahalanobis,createns创建一个ExhaustiveSearcher默认模型对象。

访问的属性Mdl通过使用点符号。例如,使用Mdl.DistParameter访问协方差参数。

Mdl.DistParameter
ans =2×23.1163 1.2956 1.2956 0.5810

你可以通过查询数据和Mdl:

  • knnsearch发现指数和距离最近的邻居

  • rangesearch寻找指标的最近的邻居在一个指定的距离

创建一个ExhaustiveSearcher模型对象和改变距离通过使用点符号属性。

加载费雪的虹膜数据集。

负载fisheririsX =量;

火车默认的穷举搜索算法使用整个数据集作为训练数据。

Mdl = ExhaustiveSearcher (X)
Mdl = ExhaustiveSearcher属性:距离:“欧几里得”DistParameter: [] X: (x4 150双)

指定你的邻居搜索者使用Mahalanobis度量计算培训和查询数据之间的距离。

Mdl.Distance=“mahalanobis”
Mdl = ExhaustiveSearcher属性:距离:“mahalanobis”DistParameter: [4 x4双]X: (x4 150双)

你可以通过Mdl和查询数据knnsearchrangesearch找到最近的邻居的点查询数据基于距离。

创建一个详尽的搜索对象使用createns函数。通过对象和查询数据knnsearch函数来找到k最近的邻居。

加载费雪的虹膜数据集。

负载fisheriris

删除5虹膜随机预测的数据作为查询集。

rng (“默认”);%的再现性1)n =大小(量;%样本大小qIdx = randsample (n, 5);%查询数据的指标X =量(~ ismember (1: n, qIdx):);:Y =量(qIdx);

准备一份详尽的最近邻搜索者使用训练数据。指定距离寻找最近的邻居。

Mdl = createns (X,“距离”,“mahalanobis”)
Mdl = ExhaustiveSearcher属性:距离:“mahalanobis”DistParameter: [4 x4双]X: (x4 145双)

因为距离度量Mahalanobis,createns创建一个ExhaustiveSearcher默认模型对象。

软件使用的协方差矩阵预测(列)的训练数据计算距离。显示这个值,使用Mdl.DistParameter

Mdl.DistParameter
ans =4×40.6547 -0.0368 1.2320 0.5026 -0.0368 0.1914 -0.3227 -0.1193 1.2320 -0.3227 3.0671 1.2842 0.5026 -0.1193 1.2842 0.5800

找到训练数据的指标(Mdl.X)是两个最近邻居查询数据(每一个点的Y)。

IdxNN = knnsearch (Mdl Y“K”,2)
IdxNN =5×25 6 98 95 104 128 135 65 102 115

每一行的IdxNN对应于一个查询数据的观察。列顺序对应于最近的邻居的顺序对提升距离。例如,基于Mahalanobis度规,第二个最近邻Y (3:)X(128年:)

扩展功能

版本历史

介绍了R2010a