文档

rangesearch

使用object查找指定距离内的所有邻居

语法

Idx = rangesearch(Mdl,Y,r)
Idx = rangesearch(Mdl,Y,r,名称,值)
[Idx,D] = rangesearch(___

描述

例子

Idx= rangesearch (MdlYr中的所有邻居(即点、行或观测值)Mdl。X半径内r查询数据中的每个点(即行或观测值)Y使用详尽的搜索或Kd-tree。rangesearch返回Idx的指标的列向量Mdl。Xr单位。

例子

Idx= rangesearch (MdlYr名称,值返回中观测值的索引值Mdl。X半径内r的每一个观察Y带有一个或多个指定的附加选项名称,值对参数。例如,您可以指定使用不同于存储在其中的距离度量Mdl。D是tance或者是存储在不同的距离度量参数Mdl。D是tParameter

例子

IdxD= rangesearch(___另外返回矩阵D使用前面语法中的任何输入参数。D中观测值之间的距离Mdl。X半径内r的每一个观察Y.的列D根据距离的远近,按升序排列。

例子

全部折叠

rangesearch接受ExhaustiveSearcherKDTreeSearcher建模对象以搜索训练数据,寻找与查询数据最近的邻居。一个ExhaustiveSearcher模型调用穷举搜索器算法,并且KDTreeSearcher模型定义了Kd-tree,rangesearch用于搜索最近的邻居。

加载费雪的虹膜数据集。从数据中随机保留5个观测值作为查询数据。关注花瓣的尺寸。

负载fisheririsrng (1);%用于再现性N = size(meas,1);Idx = randsample(n,5);X = meas(~ismember(1:n,idx),3:4);培训数据Y = meas(idx,3:4);%查询数据

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

MdlKDT = KDTreeSearcher(X)
MdlKDT = KDTreeSearcher with properties: BucketSize: 50 Distance: 'euclidean' DistParameter: [] X: [145x2 double]

MdlKDT是一个KDTreeSearcher模型对象。您可以使用点表示法更改其可写属性。

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

MdlES =枯竭搜索器(X)
MdlES =筋疲力尽的搜索器属性:距离:'欧几里得' DistParameter: [] X: [145x2 double]

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

或者,你也可以种一种KD-tree或准备穷尽最近邻搜索器使用createns

在0.5 cm半径内的每个查询观测值对应的最近邻居索引中搜索训练数据。执行两种类型的搜索并使用默认设置。

R = 0.15;搜索半径%IdxKDT = rangesearch(MdlKDT,Y,r);IdxES =范围搜索(MdlES,Y,r);[IdxKDT idx]
ans =5x2单元阵列{1x27双}{1x27双}{[13]}{[13]}{1x27双}{1x27双}{1x2双}{1x2双}{1x0双}{1x0双}

IdxKDT而且idx向量的单元格数组是否对应于的下标X在0.15厘米的范围内Y.索引矩阵的每一行都对应一个查询观察结果。

比较两种方法的结果。

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

在这种情况下,结果是相同的。

绘制setosa鸢尾花的结果。

setosaIdx = strcmp(~ismember(1:n,idx)),“setosa”);XSetosa = X(setosaIdx,:);ySetosaIdx = strcmp(物种(idx),“setosa”);YSetosa = Y(ysetoaidx,:);图;情节(XSetosa (: 1) XSetosa (:, 2),“同意”);持有;情节(YSetosa (: 1) YSetosa (:, 2),“* r”);j = 1:sum(ySetosaIdx) c = YSetosa(j,:);circleFun = @(x1,x2)r^2 - (x1 - c(1))。²- (x2 - c(2)) ^2;ezplot (circleFun [c (1) + (1) * r c (2) + (1) * r])结束包含“花瓣长度(厘米)”;ylabel“花瓣宽度(厘米)”;标题“Setosa花瓣测量”;传奇(“观察”查询数据的“搜索半径”);轴平等的持有

加载费雪的虹膜数据集。

负载fisheriris

从预测器数据中随机移除5个虹膜作为查询集。

rng (1);%用于再现性N = size(meas,1);%样本量qIdx = randsample(n,5);%查询数据的索引X = meas(~ismember(1:n,qIdx),:);Y = meas(qIdx,:);

准备一个默认的穷举最近邻搜索器。

Mdl =枯竭搜索器(X)
Mdl =筋疲力尽的搜索器属性:距离:'欧几里得' DistParameter: [] X: [145x4 double]

Mdl是一个ExhaustiveSearcher模型。

找到训练数据的索引(X),在查询数据中每个点的距离不超过0.15厘米(Y).指定距离是关于马氏度规的。

R = 1;Idx = rangesearch(Mdl,Y,r,“距离”“mahalanobis”
Idx =5x1单元阵列{1x15 double} {1x5 double} {1x6 double} {[84]} {[69]}
Idx {3}
ans =1×61 34 33 22 24

每一个细胞Idx对应于一个查询数据的观察和包含X查询数据0.15cm范围内的邻居索引向量。rangesearch按距离升序排列索引。例如,使用马氏距离,的第二近邻Y (3:): X (34)

加载费雪的虹膜数据集。

负载fisheriris

从预测器数据中随机移除5个虹膜作为查询集。

rng (4);%用于再现性N = size(meas,1);%样本量qIdx = randsample(n,5);%查询数据的索引X = meas(~ismember(1:n,qIdx),:);Y = meas(qIdx,:);

培育一个四维空间Kd-树使用训练数据。指定使用闵可夫斯基距离来查找最近的邻居。

Mdl = KDTreeSearcher(X);

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

找到训练数据的索引(X),即查询数据中每个点的距离不超过0.5厘米(Y).

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

Idx而且D是向量的五元单元数组。中的向量值Idx索引是X.的X索引表示距离查询数据0.5 cm以内的观测值,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-树搜索最近的邻居。

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

Y是一个——- - - - - -K矩阵。行Y对应于观察结果(即例子),列对应于预测因子(即变量或特征)。Y必须与存储在其中的训练数据具有相同数量的列Mdl。X

数据类型:|

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

rangesearchMdl.X都在距离之内r的每一个观察Y.房地产Mdl。D是tance存储距离。

数据类型:|

名称-值对参数

的可选逗号分隔对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在单引号内(' ').您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“距离”、“闵可夫斯基”,“P”3中查找所有观测值Mdl。X在距离r的每一个观察Y,使用带有指数的闵可夫斯基距离度量3.

对于两个最近邻搜索器

全部折叠

距离度量用于查找训练数据到查询观察的邻居,指定为逗号分隔的对,由“距离”和字符向量、字符串标量或函数句柄。

对于这两种最近邻搜索器,rangesearch万博1manbetx支持这些距离度量。

价值 描述
“chebychev” 切比雪夫距离(最大坐标差)。
“cityblock” 城市街区距离。
“欧几里得” 欧氏距离。
闵可夫斯基的 闵可夫斯基距离。默认指数为2。要指定不同的指数,请使用“P”名称-值对参数。

如果Mdl是一个ExhaustiveSearcher建模对象,然后rangesearch也支持这些万博1manbetx距离度量。

价值 描述
“相关” 1减去观测值之间的样本线性相关(被视为值序列)。
的余弦 1减去观测值之间夹角的余弦(作为行向量处理)。
“汉明” 汉明距离,也就是不同坐标的百分比。
“jaccard” 1减去杰卡德系数,也就是非零坐标的百分比。
“mahalanobis” 马氏距离,用正定协方差矩阵计算。若要更改协方差矩阵的值,请使用“浸”名称-值对参数。
“seuclidean” 标准化欧氏距离。每一行之间的坐标差Mdl。X查询矩阵通过除以计算的标准偏差的相应元素来缩放Mdl。X.要指定另一种缩放,请使用“规模”名称-值对参数。
“枪兵” 1减去观测值之间的样本斯皮尔曼秩相关(被视为值序列)。

如果Mdl是一个ExhaustiveSearcher模型对象,然后还可以通过使用为自定义距离度量指定函数句柄@(例如,@distfun).自定义距离函数必须:

  • 有表格函数D2 = distfun(ZI,ZJ)

  • 作为参数:

    • 1 -K向量的单行Mdl。XY,在那里K列数是Mdl。X

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

  • 返回一个-by-1的距离向量D2,在那里D2 (j观测值之间的距离是多少而且ZJ (j:)

详情请参见距离度量

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

闵可夫斯基距离度量的指数,指定为逗号分隔的对,由“P”一个正标量。这个论点只有在以下情况下才成立“距离”闵可夫斯基的

例子:“P”3

数据类型:|

穷尽最近邻搜索器

全部折叠

马氏距离度量的协方差矩阵,指定为逗号分隔的对,由“浸”和一个正定矩阵。是一个K——- - - - - -K矩阵,K列数是Mdl。X.如果你指定不要详细说明距离”、“mahalanobis”,然后rangesearch返回一个错误消息。

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

数据类型:|

标准欧几里得距离度量的刻度参数值,指定为逗号分隔的对,由“规模”和一个非负数值向量。规模长度K,在那里K列数是Mdl。X

的相应元素,该软件在训练数据和查询数据之间缩放每个差异规模.如果你指定规模不要详细说明距离”、“seuclidean”,然后rangesearch返回一个错误消息。

例子:'Scale',分位数(mml . x,0.75) -分位数(mml . x,0.25)

数据类型:|

请注意

如果你指定距离P,或规模,然后Mdl。D是tance而且Mdl。D是tParameter不要改变值。

输出参数

全部折叠

训练最近邻居的数据索引,返回为数值向量的单元格数组。

Idx是一个——- - - - - -1单元格数组这样的单元格jIdx {j})包含j中观测值指标的-维向量Mdl。X都在里面r单位的查询观察Y (j,:)rangesearch按距离升序排列向量的元素。

查询数据的邻居的距离,作为数值矩阵或数值向量的单元格数组返回。

D是一个——- - - - - -1单元格数组这样的单元格jD {j})包含j-观测距离的维向量Mdl。X是从查询中观察到的Y (j,:).向量的所有元素都小于r.该函数以升序排列向量的元素。

提示

knnsearch找到了k(正整数)指向Mdl。X这是k-最近的每个Y点。相比之下,rangesearch找到所有向内的点Mdl。X都在距离之内r(正标量)Y点。

选择功能

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

扩展功能

在R2011b中引入

这个话题有用吗?