主要内容

KDTreeSearcher

创建Kd树最近邻搜索器

描述

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

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

创建

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

描述

例子

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

例子

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

输入参数

全部展开

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

数据类型:|

名称-值对的观点

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

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

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

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

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

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

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

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

例子:“P”3

数据类型:|

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

例子:“BucketSize”,10

数据类型:|

属性

全部展开

此属性是只读的。

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

输入参数XcreatensKDTreeSearcher设置此属性。

数据类型:|

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

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

该软件不使用距离度量来创建一个KDTreeSearcher模型对象,所以你可以使用点符号来改变它。

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

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

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

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

数据类型:|

此属性是只读的。

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

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

数据类型:|

对象的功能

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

例子

全部折叠

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

载入费雪的虹膜数据集。

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

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

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

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

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

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

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

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

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

载入费雪的虹膜数据。关注花瓣的尺寸。

负载fisheririsX = meas(:,[3 4]);%预测

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

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

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

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

Mdl。DistParameter
ans = 2

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

创建一个KDTreeSearcher对象建模并更改距离属性使用点符号。

载入费雪的虹膜数据集。

负载fisheririsX =量;

发展一个默认的四维空间KD-tree,使用整个数据集作为训练数据。

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

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

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

你可以通过Mdl和查询数据到其中之一knnsearchrangesearch根据闵可夫斯基距离查找查询数据中各点的最近邻居。

种植Kd-树最近邻搜索对象createns函数。将对象和查询数据传递给knnsearch函数来找到k最近的邻居。

载入费雪的虹膜数据集。

负载fisheriris

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

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

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

Mdl = createns (X,“距离”闵可夫斯基的
Mdl = KDTreeSearcher with properties: BucketSize: 50 Distance: 'minkowski' DistParameter: 2 X: [145x4 double]

因为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