主要内容

KDTreeSearcher

创建Kd-tree最近邻搜索

描述

KDTreeSearcher模型对象存储的结果最近邻搜索使用Kd-tree算法。结果包括训练数据,距离度量及其参数,最大数量的数据点在每个叶节点(也就是说,桶的大小)。的Kd-tree算法分区一个n——- - - - - -K数据集由递归分割nK维空间分成一棵二叉树。

一旦你创建一个KDTreeSearcher模型对象,你可以找到所有邻近点搜索存储树查询数据通过执行一个最近邻搜索使用knnsearch或者一个半径搜索使用rangesearch。的Kd-tree算法更有效的比穷举搜索算法K小(即K≤10),培训和查询集不稀疏,训练和查询集有很多观察。

创建

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

描述

例子

Mdl= KDTreeSearcher (X)增加一个默认的Kd-tree (Mdl)使用n——- - - - - -K训练数据的数值矩阵(X)。

例子

Mdl= KDTreeSearcher (X,名称,值)使用一个或多个指定附加选项名称-值对参数。您可以指定的最大数量的数据点在每个叶节点(也就是说,桶的大小)和距离度量,并设置距离度量参数(DistParameter)的财产。例如,KDTreeSearcher (X,‘距离’,‘闵可夫斯基’,‘BucketSize’, 10)当搜索指定使用闵可夫斯基距离最近的邻居和使用10桶的大小。指定DistParameter,可以使用P名称-值对的论点。

输入参数

全部展开

训练数据生长Kd-tree,指定为一个数字矩阵。Xn行,每个对应一个观察(即一个实例或例子)K列,每个对应一个预测(即功能)。

数据类型:|

名称-值参数

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

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

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

距离度量时使用电话knnsearchrangesearch为未来找到最近的邻居查询点,指定为逗号分隔组成的“距离”和其中一个值。

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

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

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

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

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

例子:“P”3

数据类型:|

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

例子:“BucketSize”, 10

数据类型:|

属性

全部展开

这个属性是只读的。

训练数据生长Kd-tree,指定为一个数字矩阵。Xn行,每个对应一个观察(即一个实例或例子)K列,每个对应一个预测(即功能)。

输入参数XcreatensKDTreeSearcher设置此属性。

数据类型:|

距离度量时使用电话knnsearchrangesearch为未来找到最近的邻居查询点,指定为“chebychev”,“cityblock”,“欧几里得”,或闵可夫斯基的

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

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

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

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

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

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

数据类型:|

这个属性是只读的。

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

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

数据类型:|

对象的功能

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

例子

全部折叠

增加一个四维Kd-tree使用欧氏距离。

加载费雪的虹膜数据集。

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

X150观察和预测。

增加一个四维Kd-tree使用整个数据集作为训练数据。

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

Mdl1是一个KDTreeSearcher模型对象,其属性出现在命令窗口。对象包含有关发展四维的信息Kd-tree,如距离度量。可以使用点符号改变属性值。

或者,你可以种植Kd-tree通过使用createns

Mdl2 = createns (X)
Mdl2 = KDTreeSearcher属性:BucketSize: 50距离:“欧几里得”DistParameter: [] X: (x4 150双)

Mdl2也是一个KDTreeSearcher模型对象,它相当于Mdl1。因为X有四个列和欧氏距离度量违约,createns创建一个KDTreeSearcher默认模式。

找到最近的邻居X一批查询数据,通过KDTreeSearcher模型对象和查询数据knnsearchrangesearch

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

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

增加一个二维Kd-tree使用createns和训练数据。指定闵可夫斯基距离度量。

Mdl = createns (X,“距离”,闵可夫斯基的)
Mdl = KDTreeSearcher属性:BucketSize: 50距离:“闵可夫斯基”DistParameter: 2 X: [150 x2双)

因为X有两个列和闵可夫斯基距离度量,createns创建一个KDTreeSearcher默认模型对象。

访问的属性Mdl通过使用点符号。例如,使用Mdl.DistParameter访问闵可夫斯基距离指数。

Mdl.DistParameter
ans = 2

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

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

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

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

加载费雪的虹膜数据集。

负载fisheririsX =量;

增加一个默认的四维Kd-tree使用整个数据集作为训练数据。

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

指定你的邻居搜索者使用闵可夫斯基之间的距离度量来计算培训和查询数据。

Mdl。距离=闵可夫斯基的
Mdl = KDTreeSearcher属性:BucketSize: 50距离:“闵可夫斯基”DistParameter: 2 X: (x4 150双)

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

种植K通过使用d-tree最近邻搜索对象createns函数。通过对象和查询数据knnsearch函数来找到k最近的邻居。

加载费雪的虹膜数据集。

负载fisheriris

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

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

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

Mdl = createns (X,“距离”,闵可夫斯基的)
Mdl = KDTreeSearcher属性:BucketSize: 50距离:“闵可夫斯基”DistParameter: 2 X: (x4 145双)

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

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

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

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

扩展功能

版本历史

介绍了R2010a