主要内容

ExhaustiveSearcher

创建穷举最近邻搜索器

描述

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

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

创建

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

描述

例子

Mdl= ExhaustiveSearcher (X创建穷举最近邻搜索器对象(Mdl) 使用N——- - - - - -K.训练数据的数字矩阵(X).

例子

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

输入参数

全部展开

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

数据类型:|

名称值对参数

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

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

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

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

价值 描述
'chebbychev' Chebychev距离(最大坐标差异)。
“cityblock” 城市街区的距离。
“相关” 一个减去观察之间的样本线性相关性(作为值序列处理)。
'余弦' 一个减去观察之间的包含角度的余弦(作为行向量处理)。
“欧几里得” 欧几里德距离。
'汉明' 汉明距离,是坐标差的百分比。
“jaccard” 1减去雅卡尔系数,雅卡尔系数是不同的非零坐标的百分比。
'minkowski' 闵可夫斯基距离。默认指数是2。要指定不同的指数,请使用'P'名称值对参数。
“mahalanobis” Mahalanobis距离,使用正定的协方差矩阵计算。要更改协方差矩阵的值,请使用“浸”名称值对参数。
“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,:)

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

例子:“距离”、“mahalanobis”

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

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

数据类型:|

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

例子:'P',3

数据类型:|

尺度参数值为标准化的欧几里得距离度量,指定为逗号分隔对组成“规模”和一个长度的非负数字矢量K.,在那里K.列数是多少X.该软件使用相应的元素来衡量训练数据和查询数据之间的每个差异规模.此参数仅当“距离”“seuclidean”

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

数据类型:|

属性

全部展开

此属性是只读的。

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

输入参数XcreatensExhaustiveSearcher设置此属性。

数据类型:|

呼叫时使用的距离度量knnsearch.rangesearch为将来的查询点查找最近的邻居,指定为字符向量或字符串标量('chebbychev'“cityblock”“相关”'余弦'“欧几里得”'汉明'“jaccard”'minkowski'“mahalanobis”“seuclidean”,或“枪兵”)或函数句柄。

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

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

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

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

距离度量 参数描述
“mahalanobis”

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

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

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

'minkowski'

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

'P'的名称-值对参数creatensExhaustiveSearcher设置此属性。

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

“seuclidean”

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

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

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

“规模”的名称-值对参数creatensExhaustiveSearcher设置此属性。

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

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

数据类型:|

对象功能

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

例子

全部收缩

载入费雪的虹膜数据集。

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

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

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

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

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

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

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

MDL2.也是ANExhaustiveSearcher模型对象,它相当于MDL1

寻找X对于最接近一批查询数据的邻居,传递ExhaustiveSearcher模型对象和查询数据到knnsearch.rangesearch

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

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

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

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

因为距离度量是马氏度规,createns创造一个ExhaustiveSearcher默认模型对象。

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

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

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

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

载入费雪的虹膜数据集。

加载fisheririsX =量;

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

Mdl = ExhaustiveSearcher (X)
参数:[]X: [150x4 double]

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

mdl.distance =.“mahalanobis”
Mdl = exptivesearcher with properties: Distance: 'mahalanobis' DistParameter: [4x4 double] X: [150x4 double]

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

属性创建彻底搜索器对象createns功能。将对象和查询数据传递给knnsearch.函数来找到K.- 最邻居。

载入费雪的虹膜数据集。

加载fisheriris

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

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

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

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

因为距离度量是马氏度规,createns创造一个ExhaustiveSearcher默认模型对象。

该软件利用训练数据中预测因子(列)的协方差矩阵计算马氏距离。要显示此值,请使用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介绍