主要内容

rangesearch.

使用Searcher对象查找指定距离内的所有邻居

描述

例子

idx.= RangeSearch(MdlyR.搜索所有邻居(即点,行或观察)mdl.x.在半径范围内R.查询数据中的每个点(即行或观察)y使用详尽的搜索或一个K.d-tree。rangesearch.回报idx.,这是索引的列向量mdl.x.R.单位。

例子

idx.= RangeSearch(MdlyR.名称,值返回观测值的索引mdl.x.在半径范围内R.每个观察y附加选项由一个或多个指定名称,值对论点。例如,您可以指定使用比存储在的不同距离度量mdl.distance.或者比存储在的不同距离度量参数mdl.distparameter.

例子

[idx.D.) = rangesearch (___另外返回矩阵D.使用先前语法中的任何输入参数。D.包含观测值之间的距离mdl.x.在半径范围内R.每个观察y.默认情况下,函数排列的列D.按升序通过接近,相对于距离度量。

例子

全部折叠

rangesearch.接受ExhaustiveSearcherKDTreeSearcher模型对象,用于搜索最近邻居的训练数据到查询数据。一个ExhaustiveSearcher模型调用穷举搜索算法KDTreeSearcher模型定义A.K.D树,哪个rangesearch.用于搜索最近的邻居。

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

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

生长默认的二维K.d-tree。

mdlkdt = kdtreesearcher(x)
MDLKDT =具有属性的KDTreeSearcher:Bucketsize:50距离:'euclidean'distParameter:[] X:[145x2双]

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

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

mdl = ExhaustiveSearcher (X)
MdlES = exptivesearcher with properties: Distance: 'euclidean' DistParameter: [] X: [145x2 double]

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

或者,你可以种植一个K.用D-tree或准备一个穷举的最近邻搜索器createns

搜索最近邻界面的培训数据,该数据对应于0.5cm半径内的每个查询观察。进行两种类型的搜索并使用默认设置。

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

IDXKDT.idxes.是对应于索引的传感器阵列X这在观察中的0.15厘米处y.索引矩阵的每一行对应于查询观察。

比较两种方法的结果。

Cellfun(@ isequal,Idxkdt,Idxes)
ans =5 x1逻辑阵列1 1 1 1

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

画出鸢尾的结果。

setosaidx = strcmp(物种(〜ismember(1:n,Idx)),“setosa”);XSetosa = X (setosaIdx:);ySetosaIdx = strcmp(物种(idx),“setosa”);ysetosa = y(ysetosaidx,:);数字;绘图(Xsetosa(:,1),Xsetosa(:,2),'.k');抓住;绘图(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;fimplic(circlefun,[c(1)+ [-1 1] * r,c(2)+ [-1 1] * r],“b -”结尾包含'花瓣长度(cm)';ylabel'花瓣宽度(cm)';标题“Setosa花瓣测量”;传奇('观察''查询数据'“搜索半径”);轴平等的抓住

图包含轴。具有标题Setosa花瓣测量的轴包含5个类型的线,ImplicitCunctionLine。这些对象表示观察,查询数据,搜索半径。

载入费雪的虹膜数据集。

加载fisheriris

从预测器数据随机删除五个虹膜以用作查询集。

rng (1);%的再现性1) n =大小(量;%样本大小qidx = randsample(n,5);查询数据的%指数x = meas(〜ismember(1:n,qidx),:);y = meas(qidx,:);

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

Mdl = ExhaustiveSearcher (X)
MDL =具有属性的令人疲劳性研究:距离:'euclidean'tatterParameter:[] X:[145x4双]

Mdl是一个ExhaustiveSearcher模型。

找到训练数据的指标(X),与查询数据中每个点的距离在0.15厘米以内(y).指定距离是关于马氏度规的。

r = 1;idx = rangesearch(mdl,y,r,“距离”'mahalanobis'
Idx =5×1单元阵列{[26 38 7 17 47 4 27 46 25 10 39 20 21 2 33]} {[6 21 25 4 19]} {[1 34 33 22 24 2]} {[84]} {[69]}
Idx {3}
ans =1×6.1 34 33 22 24

每个单元的idx.对应于查询数据观察并包含在X距离查询数据0.15cm范围内的邻居索引向量。rangesearch.按距离升序排列指标。例如,使用马氏距离,第二近邻Y(3,:): X (34)

载入费雪的虹膜数据集。

加载fisheriris

从预测器数据随机删除五个虹膜以用作查询集。

RNG(4);%的再现性1) n =大小(量;%样本大小qidx = randsample(n,5);查询数据的%指数x = meas(〜ismember(1:n,qidx),:);y = meas(qidx,:);

长四维K.D-tree使用训练数据。指定使用Minkowski距离来查找最近的邻居。

Mdl = KDTreeSearcher (X);

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

找到训练数据的指标(X),距离查询数据中每个点0.5厘米以内(y).

r = 0.5;[idx,d] = rangesearch(mdl,y,r);

idx.D.是五元素的传感器阵列。矢量值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.使用生长K.d-树来搜索最近的邻居。

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

y是一个m——- - - - - -K.矩阵。行y对应于观察(即,示例),并且列对应于预测器(即变量或特征)。y必须具有与存储在mdl.x.

数据类型:单身的|

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

rangesearch.找到所有观察Mdl.X那在距离之内R.每个观察y.物业mdl.distance.存储距离。

数据类型:单身的|

名称-值对的观点

指定可选的逗号分离对名称,值参数。名称是参数名称和价值为对应值。名称必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“距离”、“闵可夫斯基”,“P”3中的所有观察值mdl.x.在距离R.每个观察y,使用带指数的闵可夫斯基距离度量3.
对于最近的邻居搜索者

全部折叠

距离指标用于查找训练数据的邻居到查询观察,指定为包括的逗号分隔对“距离”和字符矢量,字符串标量或功能句柄。

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

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

如果Mdl是一个ExhaustiveSearcher模型对象,然后rangesearch.还支持这些金宝app距离指标。

价值 描述
“相关” 一减去观察值之间的样本线性相关性(作为值的序列处理)。
'余弦' 一个减去观察之间的包含角度的余弦(作为行向量处理)。
'汉明' 汉明距离,是坐标差的百分比。
'jaccard' 一个减去Jaccard系数,这是非零坐标的百分比。
'mahalanobis' Mahalanobis距离,使用正定的协方差矩阵计算。要更改协方差矩阵的值,请使用'COV'名称值对参数。
'seuclidean' 标准化的欧几里德距离。行之间的每个坐标差异mdl.x.查询矩阵的比例是通过除以相应的标准偏差元素计算出来的mdl.x..要指定另一个缩放,请使用“规模”名称值对参数。
“矛曼” 一个减去样本Spearman的观察之间的秩相关性(视为值序列)。

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

  • 的形式功能d2 = distfun(zi,zj)

  • 作为论点:

    • 1 -K.向量包含单行mdl.x.y, 在哪里K.的列数是多少mdl.x.

    • 一个m——- - - - - -K.矩阵ZJ包含多行mdl.x.y, 在哪里m是一个正整数。

  • 返回A.m-乘1的距离向量D2, 在哪里D2 (j观测值之间的距离是多少ZJ(j,:)

有关更多详细信息,请参阅距离度量

例子:'距离','minkowski'

闵可夫斯基距离度量的指数,指定为逗号分隔对,由'P'和正标量。此参数仅在此处有效“距离”闵可夫斯基的

例子:'P',3

数据类型:单身的|

标志根据距离对返回的索引进行排序,指定为逗号分隔的对,由'sortindices',要么真正的1)或0.).

为了更快的性能y包含许多有许多最近点的观测值,您可以设置SortIndices.在这种情况下,rangesearch.以特定的顺序返回最近点的指数。什么时候SortIndices真正的,函数将最近点的指数按距离升序排列。

例子:'sortindices',false

数据类型:逻辑

对于详尽的最近邻搜索者

全部折叠

马氏距离度量的协方差矩阵,指定为逗号分隔对,由'COV'和一个积极的矩阵。是A.K.——- - - - - -K.矩阵,K.的列数是多少mdl.x..如果您指定不要指定'距离','mahalanobis', 然后rangesearch.返回错误消息。

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

数据类型:单身的|

标准化欧几里德距离度量的比例参数值,指定为逗号分隔对组成“规模”和一个非负数字矢量。规模长度K., 在哪里K.的列数是多少mdl.x.

软件使用相应的元素缩放训练和查询数据之间的每个区别规模.如果您指定规模不要指定'距离”、“seuclidean”, 然后rangesearch.返回错误消息。

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

数据类型:单身的|

笔记

如果您指定'距离''''P.', 要么'规模', 然后mdl.distance.mdl.distparameter.不要改变价值。

输出参数

全部折叠

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

idx.是一个m——- - - - - -1单元阵列使细胞jIdx {j})包含一个mj- 减去观察的指标向量mdl.x.那是内心的R.单位到查询观测Y (j,:).如果SortIndices真正的, 然后rangesearch.将向量的元素按距离升序排列。

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

D.是一个m——- - - - - -1单元阵列使细胞jd {j})包含一个mj- 观察的距离的多维向量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