主要内容

穷举搜索器

创建穷举最近邻搜索器

描述

穷举搜索器模型对象存储训练数据、距离度量和距离度量的参数值,用于穷举最近邻搜索。穷举搜索算法求出每个查询观测到所有观测的距离N在培训数据中的观察,这是一个N-借-K.数字矩阵。

一旦你创建了一个穷举搜索器模型对象,使用最近邻搜索方法,在训练数据中找到与查询数据相邻的点knnsearch.或半径搜索使用rangesearch.穷举搜索算法比K.D-树算法何时K.很大(即,K.> 10),它比这更灵活K.关于距离度量选择的d-树算法。这个穷举搜索器模型对象也支持稀疏数据。金宝app

创造

使用创造函数或穷举搜索器函数(此处描述)创建穷举搜索器对象这两个函数使用相同的语法,只是创造功能有“NSMethod”名称-值对参数,用于选择最近邻搜索方法。这创造函数还创建KDTreeSearcher目的。指定“NSMethod”、“详尽”创建穷举搜索器对象默认值是“详尽的”如果K.> 10,训练数据稀疏,或距离度量不是欧几里德,城市块,Chebychev或Minkowski。

描述

例子

Mdl= ExhaustiveSearcher (X创建一个详尽的最近邻搜索器对象(Mdl) 使用N-借-K.训练数据的数字矩阵(X)。

例子

Mdl= ExhaustiveSearcher (X名称,价值使用一个或多个名称-值对参数指定其他选项。您可以指定距离度量并设置距离度量参数(DistParameter) 财产。例如,穷举搜索器(X,'Distance','chebychev')使用Chebychev距离创建穷尽的最近邻搜索器对象。指定DistParameter, 使用P.,或规模名称值对参数。

输入参数

全部展开

准备穷举搜索算法的训练数据,指定为一个数值矩阵。XN行,每个人对应于观察(即实例或示例),以及K.列,每个列对应一个预测器(即特征)。

数据类型:|双重的

名称值对参数

指定可选的逗号分离对名称,价值论据。的名字是参数名称和价值为对应值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数名称1,值1,…,名称,值

例子:'距离','mahalanobis','cov',眼睛(3)指定在搜索最近邻时使用马氏距离,并为马氏距离度量中的协方差矩阵使用3乘3的单位矩阵。

呼叫时使用的距离度量knnsearch.rangesearch为将来的查询点查找最近的邻居,指定为逗号分隔对,由“距离”和字符矢量,字符串标量或功能句柄。

此表描述了指定为字符向量或字符串标量的受支持的距离金宝app度量。

价值 描述
'chebbychev' Chebychev距离(最大坐标差异)。
“cityblock” 城市街区距离。
“相关性” 一个减去观察之间的样本线性相关性(作为值序列处理)。
'余弦' 一个减去观察之间的包含角度的余弦(作为行向量处理)。
'euclidean' 欧几里德距离。
'汉明' 汉明距离,即不同坐标的百分比。
“杰卡德” 1减去雅卡尔系数,雅卡尔系数是不同的非零坐标的百分比。
'minkowski' Minkowski距离。默认指数为2。若要指定其他指数,请使用'P'名称值对参数。
“马哈拉诺比斯” Mahalanobis距离,使用正定的协方差矩阵计算。要更改协方差矩阵的值,请使用“Cov”名称值对参数。
“seuclidean” 标准化的欧几里德距离。行之间的每个坐标差异Mdl。X查询矩阵的比例是通过除以相应的标准偏差元素计算出来的Mdl。X. 要指定其他缩放,请使用“规模”名称值对参数。
“枪兵” 一个减去样本Spearman的观察之间的秩相关性(视为值序列)。

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

可以使用@(例如,@distfun).自定义距离函数必须:

  • 有形式函数D2 = distfun(ZI, ZJ)

  • 以作为参数:

    • 1 -K.向量包含来自的单行X或从查询点y哪里K.列数是多少X

    • 一个m-借-K.矩阵ZJ包含多行Xy哪里m是一个正整数。

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

该软件不使用距离度量来创建穷举搜索器模型对象,因此您可以在创建对象后使用点表示法更改距离度量。

例子:“距离”,“马哈拉诺比斯”

用于Mahalanobis距离度量的协方差矩阵,指定为逗号分隔对组成“Cov”和一个K.-借-K.正定的矩阵,在哪里K.列数是多少X.此参数仅当“距离”“马哈拉诺比斯”

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

数据类型:|双重的

Minkowski距离度量的指数,指定为逗号分隔对,由'P'和一个正标量。此参数仅在以下情况下有效:“距离”'minkowski'

例子:'P',3

数据类型:|双重的

尺度参数值为标准化的欧几里得距离度量,指定为逗号分隔对组成“规模”和一个长度的非负数字矢量K.哪里K.列数是多少X.软件使用相应的规模.此参数仅当“距离”“seuclidean”

例子:'Scale',Smianile(x,0.75) - smartile(x,0.25)

数据类型:|双重的

性质

全部展开

此属性是只读的。

准备穷举搜索算法的训练数据,指定为一个数值矩阵。XN行,每个人对应于观察(即实例或示例),以及K.列,每个列对应一个预测器(即特征)。

输入参数X创造穷举搜索器设置此属性。

数据类型:|双重的

呼叫时使用的距离度量knnsearch.rangesearch为将来的查询点查找最近的邻居,指定为字符向量或字符串标量('chebbychev'“cityblock”“相关性”'余弦''euclidean''汉明'“杰卡德”'minkowski'“马哈拉诺比斯”“seuclidean”,或“枪兵”),或函数句柄。

“距离”的名称-值对参数创造穷举搜索器设置此属性。

该软件不使用距离度量来创建穷举搜索器模型对象,因此您可以使用点表示法更改它。

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

该表描述了支持距离指标的距离参数。金宝app

距离度量 参数描述
“马哈拉诺比斯”

一种正定矩阵,表示用于计算马氏距离的协方差矩阵。默认情况下,软件使用cov(mdl.x,'omitrows')

“Cov”的名称-值对参数创造穷举搜索器设置此属性。

你可以改变DistParameter例如,通过使用点符号,mdl.distparameter = covnew.哪里新冠是一个K.-借-K.正定数值矩阵。

'minkowski'

指示闵可夫斯基距离指数的正标量。默认情况下,指数为2

'P'的名称-值对参数创造穷举搜索器设置此属性。

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

“seuclidean”

在计算标准化的欧几里德距离时,显示软件使用的值以缩放预测器的正数矢量。默认情况下,软件:

  1. 估计每个预测器(列)的标准差X使用规模=性病(Mdl.X omitnan)

  2. 缩放行之间的每个坐标差异X和查询矩阵通过除以对应的元素规模

“规模”的名称-值对参数创造穷举搜索器设置此属性。

你可以改变DistParameter例如,通过使用点符号,Mdl.DistParameter=sNew哪里滑雪是一个K.- 二维正数矢量。

如果Mdl。距离这不是表中列出的参数之一吗Mdl.DistParameter[],这意味着指定的距离度量公式没有参数。

数据类型:|双重的

对象功能

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

例子

全部收缩

加载Fisher的虹膜数据集。

加载渔民X=多边环境协定;[n,k]=尺寸(X)
n = 150.
k = 4

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

使用整个数据集作为训练数据,准备一个详尽的最近邻搜索器。

Mdl1 = ExhaustiveSearcher (X)
Mdl1 = exptivesearcher with properties: Distance: 'euclidean' DistParameter: [] X: [150x4 double]

MDL1是一个穷举搜索器模型对象,其属性显示在命令窗口中。该对象包含有关培训算法的信息,例如距离度量。您可以使用点表示法更改属性值。

或者,您可以通过使用创造并指定“详尽的”作为搜索方法。

Mdl2=createns(X,“NSMethod”“详尽的”
Mdl2 = exptivesearcher with properties: Distance: 'euclidean' DistParameter: [] X: [150x4 double]

MDL2.也是AN穷举搜索器模型对象,它相当于MDL1

搜索X对于一批查询数据的最近邻,传递穷举搜索器模型对象和查询数据到knnsearch.rangesearch

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

加载渔民X = meas(:,[3 4]);%预测因子

准备一个详尽的最近邻搜索。指定Mahalanobis距离度量标准。

Mdl = createns (X,“距离”“马哈拉诺比斯”
Mdl = exptivesearcher with properties: Distance: 'mahalanobis' DistParameter: [2x2 double] X: [150x2 double]

因为距离度量是马氏体,创造创造一个穷举搜索器默认模型对象。

访问属性Mdl通过使用点表示法。例如,使用Mdl.DistParameter访问Mahalanobis Covariance参数。

Mdl.DistParameter
ans =.2×23.1163 1.2956 1.2956 0.5810

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

创建一个穷举搜索器为对象建模并更改距离使用点表示法。

加载Fisher的虹膜数据集。

加载渔民X=多边环境协定;

使用整个数据集作为训练数据,训练一个默认的穷举搜索算法。

Mdl=排气搜索器(X)
Mdl=带属性的ExtreatveSearcher:距离:“欧几里德”距离参数:[]X:[150x4双精度]

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

mdl.distance =.“马哈拉诺比斯”
Mdl = exptivesearcher with properties: Distance: 'mahalanobis' DistParameter: [4x4 double] X: [150x4 double]

你可以通过Mdl和查询数据到任一个knnsearch.rangesearch根据马氏距离查找查询数据中点的最近邻。

使用创造功能。将对象和查询数据传递给knnsearch.找到的功能K.- 最邻居。

加载Fisher的虹膜数据集。

加载渔民

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

rng (“默认”);%为了再现性n =尺寸(meas,1);%样本大小qIdx = randsample (n, 5);查询数据的%指数x = meas(〜ismember(1:n,qidx),:);y = meas(qidx,:);

使用训练数据准备一个详尽的最近邻搜索器。指定寻找最近邻居的马氏距离。

Mdl = createns (X,“距离”“马哈拉诺比斯”
Mdl = exptivesearcher with properties: Distance: 'mahalanobis' DistParameter: [4x4 double] X: [145x4 double]

因为距离度量是马氏体,创造创造一个穷举搜索器默认模型对象。

该软件利用训练数据中预测因子(列)的协方差矩阵计算马氏距离。要显示此值,请使用Mdl.DistParameter

Mdl.DistParameter
ans =.4×40.6547 -0.0368 1.2320 0.5026 -0.0368 0.1914 -0.3227 -0.1193 1.2320 -0.3227 3.0671 1.2842 0.5026 -0.1193 1.2842 0.5800

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

IdxNN = knnsearch (Mdl Y“K”,2)
IdxNN=5×25 6 98 95 104 128 135 65 102 115

每一行的idxnn.对应于查询数据观察。列顺序对应于最近邻相对于上升距离的顺序。例如,基于马氏度量,即Y(3,:)X(128年:)

扩展能力

在R2010A介绍