主要内容

rangesearch

找到所有的邻居指定距离内使用搜索对象

描述

例子

Idx= rangesearch (Mdl,Y,r)搜索所有的邻居(即。,points, rows, or observations) inMdl.X半径内r每一个点(即。,row or observation) in the query dataY使用穷举搜索或Kd-tree。rangesearch返回Idx,这是一个列向量的指标Mdl.Xr单位。

例子

Idx= rangesearch (Mdl,Y,r,名称,值)返回的观察指标Mdl.X半径内r每个观测的Y由一个或多个指定附加选项名称,值对参数。例如,您可以指定使用一个比存储在不同的距离度量Mdl.Distance或比存储在不同的距离度量参数Mdl.DistParameter

例子

(Idx,D)= rangesearch (___)此外返回矩阵D使用任何输入参数在前面的语法。D包含观察之间的距离Mdl.X半径内r每个观测的Y。默认情况下,函数列的安排D按升序亲密,对距离度量。

例子

全部折叠

rangesearch接受ExhaustiveSearcherKDTreeSearcher模型对象在训练数据搜索最近的邻居来查询数据。一个ExhaustiveSearcher模型调用详尽的搜索算法,KDTreeSearcher模型定义了一个Kd-tree,rangesearch使用搜索最近的邻居。

加载费雪的虹膜数据集。随机储备5观测数据的查询数据。专注于花瓣维度。

负载fisheririsrng (1);%的再现性1)n =大小(量;idx = randsample (n, 5);X =量(~ ismember (1: n, idx) 3:4);%的训练数据Y =量(idx 3:4);%查询数据

成长一个默认的二维Kd-tree。

MdlKDT = KDTreeSearcher (X)
MdlKDT = KDTreeSearcher属性:BucketSize: 50距离:“欧几里得”DistParameter: [] X: [145 x2双)

MdlKDT是一个KDTreeSearcher模型对象。你可以改变它的可写属性使用点符号。

准备一个详尽的最近邻搜索器。

mdl = ExhaustiveSearcher (X)
mdl = ExhaustiveSearcher属性:距离:“欧几里得”DistParameter: [] X: [145 x2双)

mdl是一个ExhaustiveSearcher模型对象。它包含的选项,比如距离度量,使用找到最近的邻居。

或者,你可以种植Kd-tree或准备一个详尽的最近邻搜索器使用createns

最近邻搜索训练数据指标,对应于每个查询半径0.5厘米内的观察。进行两种类型的搜索和使用默认设置。

r = 0.15;%的搜索半径IdxKDT = rangesearch (MdlKDT, Y, r);idx = rangesearch (mdl, Y, r);[IdxKDT idx]
ans =5×2单元阵列{1 x27双}{1 x27双}{[13]}{[13]}{1 x27双}{1 x27双}{1 x2双}{1 x2双}{1 x0双}{1 x0双}

IdxKDTidx是细胞数组向量对应的指标吗X内0.15厘米的观察Y。指数矩阵的每一行对应一个查询的观察。

方法之间的比较结果。

cellfun (@isequal IdxKDT idx)
ans =5 x1逻辑阵列1 1 1 1 1

在这种情况下,结果都是一样的。

阴谋的结果setosa虹膜。

setosaIdx = strcmp(物种(~ ismember (1: n, idx)),“setosa”);XSetosa = X (setosaIdx:);ySetosaIdx = strcmp(物种(idx),“setosa”);YSetosa = Y (ySetosaIdx:);图;情节(XSetosa (: 1) XSetosa (:, 2),“同意”);持有;情节(YSetosa (: 1) YSetosa (:, 2),“* r”);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) * r c (2) + (1) * r],“b -”)结束包含“花瓣长度(厘米)”;ylabel“花瓣宽度(cm)”;标题“Setosa花瓣测量”;传奇(“观察”,查询数据的,“搜索半径”);轴平等的持有

加载费雪的虹膜数据集。

负载fisheriris

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

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

准备一个默认的详尽的最近邻搜索者。

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

Mdl是一个ExhaustiveSearcher模型。

找到训练数据的指标(X)0.15厘米内的每个点查询数据(Y)。指定距离的度量。

r = 1;Idx = rangesearch (Mdl, Y, r,“距离”,“mahalanobis”)
Idx =5×1单元阵列{1连接双}{1 x5双}{1 x6双}{[84]}{[69]}
Idx {3}
ans =1×61 34 33 22日24日2

每个单元的Idx对应于一个查询数据观察和包含X矢量指数的邻居在查询数据的0.15厘米。rangesearch安排指数在距离升序排列。例如,使用Mahalanobis距离,第二个最近邻Y (3:):X (34)

加载费雪的虹膜数据集。

负载fisheriris

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

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

增加一个四维Kd-tree使用训练数据。指定使用闵可夫斯基距离寻找最近的邻居。

Mdl = KDTreeSearcher (X);

Mdl是一个KDTreeSearcher模型。默认情况下,距离度量寻找最近的邻居是欧几里得度量。

找到训练数据的指标(X0.5厘米内)查询中的每个点数据(Y)。

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

IdxD是五行细胞数组向量。向量的值在Idx的指数是X。的X指数代表的观察中查询数据的0.5厘米,YD包含对应于观测的距离。

显示查询的结果观察3。

Idx {3}
ans =1×2127 122
D {3}
ans =1×20.2646 - 0.4359

最近的观察Y (3:)X(127年:),这是0.2646厘米了。下一个最近的是X(122年:),这是0.4359厘米了。大于所有其他观察0.5厘米的距离:Y(5日)

输入参数

全部折叠

最近邻搜索,指定为一个ExhaustiveSearcherKDTreeSearcher分别为模型对象。

如果Mdl是一个ExhaustiveSearcher模型,然后rangesearch使用穷举搜索搜索最近的邻居。否则,rangesearch使用生长Kd-tree搜索最近的邻居。

查询数据,指定为一个数字矩阵。

Y是一个——- - - - - -K矩阵。行Y对应于观测(即。,例子s), and columns correspond to predictors (i.e., variables or features).Y必须有相同数量的列作为训练数据存储在吗Mdl.X

数据类型:|

搜索半径在每个点查询数据,指定为负的标量。

rangesearch所有的观察发现Mdl。X内的距离r每个观测的Y。房地产Mdl.Distance商店的距离。

数据类型:|

名称-值对的观点

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:“距离”、“闵可夫斯基”,“P”3指定要查找所有的观察Mdl.X在距离r每个观测的Y与指数,使用闵可夫斯基距离度量3
最近邻搜索者

全部折叠

距离度量用来发现邻居的训练数据查询观察,指定为逗号分隔组成的“距离”和一个特征向量,字符串标量,或函数句柄。

对于这两种类型的最近邻搜索,rangesearch金宝app支持这些距离度量。

价值 描述
“chebychev” Chebychev距离(最大坐标差异)。
“cityblock” 城市街区的距离。
“欧几里得” 欧氏距离。
闵可夫斯基的 闵可夫斯基距离。默认的指数是2。指定一个不同的指数,使用“P”名称-值对的论点。

如果Mdl是一个ExhaustiveSearcher模型对象,然后rangesearch也支持这些金宝app距离度量。

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

如果Mdl是一个ExhaustiveSearcher模型对象,那么您还可以指定一个函数处理为一个自定义的距离度量@(例如,@distfun)。自定义距离函数必须:

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

  • 以作为参数:

    • 1 -K向量包含单个行Mdl.XY,在那里K列的数量吗Mdl.X

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

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

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

例子:“距离”,“闵可夫斯基”

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

例子:“P”3

数据类型:|

国旗返回指数进行排序根据距离,指定为逗号分隔组成的“SortIndices”,要么真正的(1)或(0)。

为了更快的性能时Y包含了许多的观察,有许多最近的点,您可以设置SortIndices。在这种情况下,rangesearch返回最近的点的指数排名不分先后。当SortIndices真正的,功能安排最近的点的指数在距离升序排列。

例子:“SortIndices”,假的

数据类型:逻辑

详尽的最近邻搜索者

全部折叠

协方差矩阵的Mahalanobis距离度量,指定为逗号分隔组成的“浸”和一个正定矩阵。是一个K——- - - - - -K矩阵,K列的数量吗Mdl.X。如果您指定并没有指定距离”、“mahalanobis”,然后rangesearch返回一个错误消息。

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

数据类型:|

标准化的欧氏距离度量,尺度参数值指定为逗号分隔组成的“规模”和一个非负数字向量。规模长度K,在那里K列的数量吗Mdl.X

软件规模每个不同的培训和使用相应的查询数据元素规模。如果您指定规模并没有指定距离”、“seuclidean”,然后rangesearch返回一个错误消息。

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

数据类型:|

请注意

如果您指定距离,,P,或规模,然后Mdl.DistanceMdl.DistParameter不改变的价值。

输出参数

全部折叠

训练数据的指数最近的邻居,作为细胞返回数组的数值向量。

Idx是一个——- - - - - -1单元阵列,这样细胞j(Idx {j})包含一个j维向量指标的观察Mdl.Xr观察单位查询Y (j,:)。如果SortIndices真正的,然后rangesearch安排在升序排序向量的元素的距离。

邻居的距离来查询数据,返回的数值矩阵或单元阵列数值向量。

D是一个——- - - - - -1单元阵列,这样细胞j(D {j})包含一个j维的向量距离的观测Mdl.X从查询观察吗Y (j,:)。向量的所有元素都不到r。如果SortIndices真正的,然后rangesearch安排在升序排序向量的元素。

提示

knnsearch找到了k(正整数)点Mdl.X这是k最近的每一Y点。相比之下,rangesearch发现所有的点Mdl.X内的距离r(积极的标量)Y点。

选择功能

rangesearch是一个对象的函数需要一个吗ExhaustiveSearcher或者一个KDTreeSearcher模型对象,查询数据,和一个距离。在同等条件下,rangesearch返回相同的结果rangesearch当你指定名称-值对的论点“NSMethod”、“详尽”“NSMethod”、“kdtree”,分别。

扩展功能

介绍了R2011b