主要内容

ClassificationKNN

k-最近邻分类

描述

ClassificationKNN是一个最近邻分类模型,您可以在其中更改距离度量和最近邻的数量。因为一个ClassificationKNN分类器存储训练数据,可以使用该模型计算再替代预测。或者,使用模型对新的观测进行分类预测方法。

创建

创建一个ClassificationKNN模型使用fitcknn

属性

全部展开

然而,属性

所使用的破领带算法预测当多个类具有相同的最小代价时,指定为以下之一:

  • “最小”—使用绑定组中最小的索引。

  • “最近的”—使用绑定组中最近的类。

  • “随机”-在打平的组中使用随机的决胜局。

缺省情况下,当多个类之间具有相同数量的最近点时,就会发生联系k最近的邻居。BreakTies适用于当IncludeTies

改变BreakTies使用点符号:mdl。破领带=新破领带

距离度量,指定为字符向量或函数句柄。所允许的值取决于NSMethod财产。

NSMethod 允许的距离度量
“详尽” 的任何距离度量ExhaustiveSearcher
“kdtree” “cityblock”“chebychev”“欧几里得”,或闵可夫斯基的

下表列出了ExhaustiveSearcher距离度量。

价值 描述
“cityblock” 城市街区距离。
“chebychev” 切比雪夫距离(最大坐标差)。
“相关” 1减去观测值之间的样本线性相关(被视为值序列)。
的余弦 1减去观测值之间夹角的余弦(作为向量处理)。
“欧几里得” 欧氏距离。
“汉明” 汉明距离,不同坐标的百分比。
“jaccard” 1减去杰卡德系数,非零坐标的百分比不同。
“mahalanobis” 马氏距离,用正定协方差矩阵计算C.的默认值C样本协方差矩阵是X,按X (X, omitrows).指定不同的值C,设置DistParameter的属性mdl使用点表示法。
闵可夫斯基的 闵可夫斯基距离。默认指数为2.要指定不同的指数,请设置DistParameter的属性mdl使用点表示法。
“seuclidean” 标准化欧氏距离。各坐标之间的差X查询点被缩放,即除以一个缩放值年代.的默认值年代标准差是从哪里计算出来的XS = std(X,'omitnan').为指定另一个值年代,设置DistParameter的属性mdl使用点表示法。
“枪兵” 1减去观测值之间的样本斯皮尔曼秩相关(被视为值序列)。
@distfun

距离函数句柄。distfun有形式

函数D2 = distfun(ZI,ZJ)距离计算%...
在哪里

  • 是一个1——- - - - - -N包含一行的向量XY

  • ZJ是一个平方米——- - - - - -N矩阵包含多行XY

  • D2是一个平方米——- - - - - -1距离向量,和D2 (k)观测值之间的距离是多少而且ZJ (k,:)

有关更多信息,请参见距离度量

改变距离使用点符号:mdl。距离= newDistance

如果NSMethod“kdtree”,您可以使用点表示法进行更改距离仅针对度量“cityblock”“chebychev”“欧几里得”,闵可夫斯基的

数据类型:字符|function_handle

距离加权函数,指定为本表中的值之一。

价值 描述
“平等” 没有权重
“逆” 重量是1 /距离
“squaredinverse” 重量是1 /距离2
@fcn fcn是一个函数,它接受非负距离的矩阵,并返回包含非负距离权重的相同大小的矩阵。例如,“squaredinverse”等于@ (d) d。^ (2)

改变DistanceWeight使用点符号:mdl。DistanceWeight = newDistanceWeight

数据类型:字符|function_handle

参数的距离度量,指定为本表中描述的值之一。

距离度量 参数
“mahalanobis” 正定协方差矩阵C
闵可夫斯基的 闵可夫斯基距离指数,一个正标量
“seuclidean” 正比例值的向量,其长度等于的列数X

对于任何其他距离度量,的值DistParameter必须[]

你可以改变DistParameter使用点符号:mdl。DistParameter = newDistParameter.然而,如果距离“mahalanobis”“seuclidean”,那么你就不能改变DistParameter

数据类型:|

领带是否包含标志预测包含距离值等于的所有邻居k最小距离,指定为真正的.如果IncludeTies真正的预测包括所有这些邻居。否则,预测使用完全k邻居(请参阅BreakTies属性)。

改变IncludeTies使用点符号:mdl。IncludeTies = newIncludeTies

数据类型:逻辑

此属性是只读的。

最近邻搜索方法,指定为任意一种“kdtree”“详尽”

  • “kdtree”—创建并使用Kd-树来寻找最近的邻居。

  • “详尽”—使用穷举搜索算法。在预测一个新点的类时xnew,软件计算所有点的距离值Xxnew寻找最近的邻居。

默认值为“kdtree”X10或者少列,X是不是稀疏的,距离度量是一个“kdtree”类型。否则,默认值为“详尽”

中最近邻居的个数X用于对预测期间的每个点进行分类,指定为正整数值。

改变NumNeighbors使用点符号:mdl。NumNeighbors = newNumNeighbors

数据类型:|

其他分类属性

此属性是只读的。

分类预测指标,指定为正整数向量。CategoricalPredictors包含指示相应预测符是分类的索引值。索引值在1和之间p,在那里p用于训练模型的预测器的数量。如果没有一个预测符是分类的,则此属性为空([]).

数据类型:

此属性是只读的。

训练数据中的课程名称Y删除重复项后,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。一会数据类型与Y(该软件将字符串数组视为字符向量的单元格数组。)

数据类型:分类|字符|逻辑|||细胞

点错误分类的代价,用方阵表示。成本(i, j)将一个点分类的成本是多少j如果它真正的阶级是(即行对应真实的类,列对应预测的类)。中的行和列的顺序成本中类的顺序对应一会.中的行数和列数成本响应中唯一类的数量。

默认情况下,成本(i,j) = 1如果I ~= j,Cost(i,j) = 0如果I = j.换句话说,成本是0正确的分类和1不正确的分类。

改变一个成本使用点表示法的矩阵:mdl。成本= costMatrix

数据类型:|

此属性是只读的。

扩展的预测器名称,指定为字符向量的单元格数组。

如果模型对分类变量使用编码,则ExpandedPredictorNames包括描述展开变量的名称。否则,ExpandedPredictorNamesPredictorNames

数据类型:细胞

此属性是只读的。

用于训练的参数ClassificationKNN模型,指定为对象。

此属性是只读的。

预测器的意思是,指定为长度的数字向量元素个数(PredictorNames)

如果你不标准化mdl在训练模型时使用fitcknn,然后μ为空([]).

数据类型:|

此属性是只读的。

用于训练的观察数ClassificationKNN模型,指定为正整数标量。这个数字可以小于训练数据中的行数,因为行包含价值观不是适合的一部分。

数据类型:

此属性是只读的。

预测器变量名,指定为字符向量的单元格数组。变量名与它们在训练数据中出现的顺序相同X

数据类型:细胞

每种类别的先验概率,用数字向量表示。元素的顺序之前中类的顺序对应一会

添加或更改之前用点表示的向量:mdl。Prior = priorVector

数据类型:|

此属性是只读的。

响应变量名,指定为字符向量。

数据类型:字符

此属性是只读的。

用于拟合的原始训练数据行ClassificationKNN模型,指定为逻辑向量。如果使用所有行,则此属性为空。

数据类型:逻辑

分数转换,指定为字符向量或函数句柄。

该表总结了可用的字符向量。

价值 描述
“doublelogit” 1 / (1 +e2x
“invlogit” 日志(x/ (1 -x))
“ismax” 将得分最大的类的得分设置为1,并将所有其他类的得分设置为0
“分对数” 1 / (1 +e- - - - - -x
“没有”“身份” x(转换)
“标志” 1x< 0
为0x= 0
1x> 0
“对称” 2x- 1
“symmetricismax” 将得分最大的类的得分设置为1,并将所有其他类的得分设置为-1
“symmetriclogit” 2 / (1 +e- - - - - -x) - 1

对于MATLAB®函数或您定义的函数,使用其函数句柄进行分数转换。函数句柄必须接受一个矩阵(原始分数)并返回一个相同大小的矩阵(转换后的分数)。

改变ScoreTransform使用点符号:mdl。年代coreTransform = newScoreTransform

数据类型:字符|function_handle

此属性是只读的。

预测器的标准偏差,以长度的数字向量表示元素个数(PredictorNames)

如果你在训练期间没有标准化预测变量,那么σ为空([]).

数据类型:|

此属性是只读的。

观察权重,指定为具有相同行数的非负值的向量Y.每一项W中相应观测值的相对重要性Y

数据类型:|

此属性是只读的。

未标准化的预测数据,指定为数值矩阵。的每一列X表示一个预测器(变量),每一行表示一个观察结果。

数据类型:|

此属性是只读的。

类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。中的每个值Y观察到的类标签是否为对应的行X

Y与中的数据类型相同Y用于训练模型。(该软件将字符串数组视为字符向量的单元格数组。)

数据类型:||逻辑|字符|细胞|分类

超参数优化属性

此属性是只读的。

超参数的交叉验证优化,指定为BayesianOptimization对象或超参数及相关值的表。属性时,此属性为非空“OptimizeHyperparameters”使用创建模型时,名称-值对参数为非空fitcknn.属性的设置“HyperparameterOptimizationOptions”当您创建模型时,名称-值对参数:

  • “bayesopt”(默认)-类的对象BayesianOptimization

  • “gridsearch”“randomsearch”-使用的超参数表,观察到的目标函数值(交叉验证损失),以及从最低(最好)到最高(最差)的观察值排序

对象的功能

compareHoldout 比较使用新数据的两种分类模型的准确性
crossval 交叉验证机器学习模型
边缘 的边缘k-最近邻分类器
收集 收集属性统计和机器学习工具箱来自GPU的对象
石灰 局部可解释模型不可知解释(LIME)
损失 的损失k-最近邻分类器
保证金 保证金的k-最近邻分类器
partialDependence 计算部分依赖关系
plotPartialDependence 创建部分依赖图(PDP)和个别条件期望图(ICE)
预测 使用预测标签k-最近邻分类模型
resubEdge 再置换分类边
resubLoss 再置换分类损失
resubMargin 再置换分类边际
resubPredict 使用训练过的分类器对训练数据进行分类
沙普利 沙普利值
testckfold 通过重复交叉验证比较两种分类模型的准确性

例子

全部折叠

训练k- Fisher虹膜数据的最近邻分类器,其中k,预测器中最近邻居的数量为5。

加载费雪的虹膜数据。

负载fisheririsX = meas;Y =物种;

X是一个数字矩阵,包含150个鸢尾花的四个花瓣测量值。Y是包含相应虹膜种类的特征向量的单元格数组。

训练一个5-近邻分类器。标准化非分类预测数据。

Mdl = fitcknn(X,Y,“NumNeighbors”5,“标准化”, 1)
Mdl = ClassificationKNN ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 Distance: 'euclidean' NumNeighbors: 5 Properties, Methods

Mdl是受过训练的ClassificationKNN分类器,它的一些属性显示在命令窗口中。

访问的属性Mdl,使用点表示法。

Mdl。ClassNames
ans =3 x1细胞{'setosa'} {'versicolor'} {'virginica'}
Mdl。之前
ans =1×30.3333 0.3333 0.3333

Mdl。之前包含类先验概率,您可以使用“之前”中的名称-值对参数fitcknn.类先验概率的顺序对应于中类的顺序Mdl。ClassNames.默认情况下,先验概率是数据中类别各自的相对频率。

你也可以在训练后重置先验概率。例如,将先验概率分别设置为0.5、0.2和0.3。

Mdl。先验= [0.5 0.2 0.3];

你可以通过Mdl预测标记新的测量或crossval交叉验证分类器。

提示

  • 紧凑的函数通过删除训练数据属性和预测新观测值标签不需要的任何其他属性来减少大多数分类模型的大小。因为k最近邻分类模型需要所有的训练数据来预测标签,你不能减少一个的大小ClassificationKNN模型。

选择功能

knnsearch找到了k-点的最近邻居。rangesearch找到固定距离内的所有点。可以使用这些函数进行分类,如分类查询数据.如果要执行分类,则使用ClassificationKNN模型可以更方便,因为你可以在一步中训练一个分类器(使用fitcknn),并在其他步骤(使用预测).或者,你可以训练一个k-最近邻分类模型中使用的交叉验证选项之一调用fitcknn.在这种情况下,fitcknn返回一个ClassificationPartitionedModel交叉验证的模型对象。

扩展功能

版本历史

在R2012a中引入