主要内容

KDTreeSearcher

创建Kd-树最近邻搜索器

描述

KDTreeSearcher模型对象存储使用Kd-tree算法。结果包括训练数据、距离度量及其参数、每个叶节点最大数据点个数(即桶大小)。这个Kd-树算法划分N-借-K递归分割数据集N指向K维空间变成了二叉树。

一旦你创建了KDTreeSearcher在模型对象中,通过使用执行最近邻搜索,可以搜索存储的树以查找查询数据的所有相邻点knnsearch或半径搜索使用rangesearch这个K时,d-树算法比穷举搜索算法效率更高K是小的(即,K≤10),训练集和查询集不稀疏,且训练集和查询集有较多的观测值。

创建

使用createns功能或KDTreeSearcher函数(此处描述)创建KDTreeSearcher这两个函数使用相同的语法,除了createns函数具有“NSMethod”名称-值对参数,用于选择最近邻搜索方法createns函数还创建一个穷举搜索器对象。指定“NSMethod”、“kdtree”创建一个KDTreeSearcher对象。默认值是“kdtree”如果K≤10时,训练数据不稀疏,距离度量为Euclidean、city block、Chebychev或Minkowski。

描述

实例

Mdl=KDTreeSearcher(X)增长默认值Kd-树(Mdl)使用N-借-K训练数据的数值矩阵(X).

实例

Mdl=KDTreeSearcher(X,名称、值)使用一个或多个名称-值对参数指定其他选项。可以指定每个叶节点中数据点的最大数目(即,存储桶大小)和距离度量,并设置距离度量参数(DistParameter)财产。例如KDTreeSearcher (X,‘距离’,‘闵可夫斯基’,‘BucketSize’,10)指定在搜索最近邻时使用闵可夫斯基距离,并使用10为桶的大小。指定DistParameter,使用P名称-值对参数。

输入参数

全部展开

培训数据增长了Kd-树,指定为数字矩阵。XN行,每个行对应于一个观察(即一个实例或示例),以及K列,每个列对应一个预测器(即特征)。

数据类型:|

名称-值对参数

指定可选的逗号分隔的字符对名称、值论据。的名字是参数名和价值为对应值。的名字必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:名称1,值1,…,名称,值

例子:“距离”、“闵可夫斯基”,“P”,3,BucketSize, 10指定在搜索最近邻居时使用以下选项:Minkowski距离,3.对于Minkowski距离度量指数,以及10为桶的大小。

通话时使用的距离度量knnsearchrangesearch为将来的查询点查找最近的邻居,指定为逗号分隔的对,由“距离”其中一个值。

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

有关详细信息,请参见距离度量

软件不使用距离度量来创建距离KDTreeSearcher为对象建模,因此可以在创建对象后使用点表示法更改距离度量。

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

闵可夫斯基距离度量的指数,指定为逗号分隔对,由“P”一个正标量。此参数仅当“距离”“明可夫斯基”

例子:“P”,3

数据类型:|

的每个叶节点的最大数据点数Kd-树,指定为逗号分隔对,由“BucketSize”和一个正整数。

例子:“BucketSize”,10

数据类型:|

属性

全部展开

此属性是只读的。

培训数据增长了Kd-树,指定为数字矩阵。XN行,每个行对应于一个观察(即一个实例或示例),以及K列,每个列对应一个预测器(即特征)。

输入参数XcreatensKDTreeSearcher设置此属性。

数据类型:|

通话时使用的距离度量knnsearchrangesearch为将来的查询点查找最近的邻居,指定为“切比切夫”,“cityblock”,“欧几里得”,或“明可夫斯基”

这个“距离”的名称-值对参数creatensKDTreeSearcher设置此属性。

软件不使用距离度量来创建距离KDTreeSearcher模型对象,因此可以使用点表示法对其进行更改。

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

如果距离“明可夫斯基”然后DistParameter是闵可夫斯基距离公式中的指数。否则,DistParameter[],表示指定的距离度量公式没有参数。

这个“P”的名称-值对参数creatensKDTreeSearcher设置此属性。

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

数据类型:|

此属性是只读的。

的每个叶节点的最大数据点数Kd-树,指定为正整数。

这个“BucketSize”的名称-值对参数creatensKDTreeSearcher设置此属性。

数据类型:|

目标函数

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

例子

全部崩溃

增加一个四维K使用欧几里德距离的d-树。

加载Fisher的虹膜数据集。

负载鱼腥草X =量;(n, k)大小(X) =
n=150
k = 4

X有150个观察和4个预测。

增加一个四维K使用整个数据集作为训练数据的d-树。

Mdl1=KDTreeSearcher(X)
Mdl1=KDTreeSearcher,属性:BucketSize:50距离:“欧几里德”距离参数:[]X:[150x4双精度]

Mdl1是一个KDTreeSearcher模型对象及其属性显示在命令窗口中。该对象包含有关生长的四维模型的信息Kd-树,比如距离度量。可以使用点表示法更改属性值。

或者,你可以种植一个Kd-树createns

Mdl2=createns(X)
Mdl2=KDTreeSearcher,属性:BucketSize:50距离:“欧几里德”距离参数:[]X:[150x4双精度]

Mdl2也是一个KDTreeSearcher模型对象,它等价于Mdl1.因为X有四列,默认的距离度量是欧几里得,createns创建一个KDTreeSearcher默认模式。

找到最近的邻居X对于一批查询数据,传递KDTreeSearcher模型对象和要创建的查询数据knnsearchrangesearch

加载Fisher的虹膜数据。关注花瓣的尺寸。

负载鱼腥草X = meas(:,[3 4]);%预测

生成二维图形Kd-树使用createns以及训练数据。指定闵可夫斯基距离度量。

Mdl = createns (X,“距离”,“明可夫斯基”)
Mdl = KDTreeSearcher with properties: BucketSize: 50 Distance: 'minkowski' DistParameter: 2 X: [150x2 double]

因为X有两列,距离度量为Minkowski,createns创建一个KDTreeSearcher默认模型对象。

的访问属性Mdl通过使用点表示法。例如,使用Mdl。DistParameter访问Minkowski距离指数。

Mdl。DistParameter
ans = 2

您可以传递查询数据和Mdl致:

  • knnsearch查找最近邻的索引和距离

  • rangesearch查找指定距离内所有最近邻居的索引

创建一个KDTreeSearcher对象建模并更改距离属性使用点表示法。

加载Fisher的虹膜数据集。

负载鱼腥草X =量;

增长默认的四维空间K使用整个数据集作为训练数据的d-树。

Mdl = KDTreeSearcher (X)
Mdl = KDTreeSearcher with properties: BucketSize: 50 Distance: 'euclidean' DistParameter: [] X: [150x4 double]

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

距离=“明可夫斯基”
Mdl = KDTreeSearcher with properties: BucketSize: 50 Distance: 'minkowski' DistParameter: 2 X: [150x4 double]

你可以通过Mdl并将查询数据knnsearchrangesearch根据Minkowski距离查找查询数据中点的最近邻。

长出K使用createns作用将对象和查询数据传递给knnsearch查找函数K-最近的邻居。

加载Fisher的虹膜数据集。

负载鱼腥草

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

rng(1);%为了再现性n=尺寸(平均值,1);%样本量qIdx = randsample (n, 5);%查询数据索引tIdx=~ismember(1:n,qIdx);%训练数据索引Q=meas(qIdx,:);X=meas(tIdx,:);

增加一个四维K使用训练数据的d-树。指定查找最近邻居的Minkowski距离。

Mdl = createns (X,“距离”,“明可夫斯基”)
Mdl=KDTreeSearcher,属性:BucketSize:50距离:“minkowski”距离参数:2 X:[145x4双精度]

因为X有四列,距离度量是闵可夫斯基,createns创建一个KDTreeSearcher默认模型对象。闵可夫斯基距离指数是2.默认情况下。

找到训练数据的指标(Mdl。X),即查询数据中每个点最近的两个邻居(Q).

IdxNN = knnsearch (Mdl Q“K”, 2)
IdxNN =5×217 4 6 2 1 12 89 66 124 100

每一行的IdxNN对应一个查询数据观察,列顺序对应最近的邻居的顺序,相对于上升的距离。例如,根据闵可夫斯基距离,的第二近邻问题(3,:)X(12,:)

扩展功能

R2010a中引入