主要内容

预测

预测标签使用k最近的邻居分类模型

描述

例子

标签=预测(mdl,X)返回一个矢量预测类标签的预测数据表或矩阵X基于训练k最近的邻居分类模型mdl。看到预测类标签

例子

(标签,分数,成本)=预测(mdl,X)返回:

  • 一个矩阵的分类评分(分数)显示一个标签的可能性来自于一个特定的类。为k最近的邻居,分数是后验概率。看到后验概率

  • 一个矩阵的预期成本分类(成本)。为每一个观察X,预测类标签对应的最低预期分类成本在所有类。看到预期成本

例子

全部折叠

创建一个k最近的邻居为费雪的虹膜数据分类器,k= 5。计算模型预测新数据。

加载费舍尔虹膜数据集。

负载fisheririsX =量;Y =物种;

创建一个分类器五最近的邻居。规范noncategorical预测数据。

mdl = fitcknn (X, Y,“NumNeighbors”5,“标准化”1);

预测分类对于最低的鲜花,意思是,和最大的特点。

Xnew = [min (X);意味着(X),马克斯(X));(标签、分数、成本)=预测(mdl Xnew)
标签=3 x1细胞{“癣”}{“癣”}{' virginica '}
分数=3×30.4000 - 0.6000 1.0000 1.0000 0 0 0 0 0
成本=3×30.6000 0.4000 1.0000 1.0000 1.0000 1.0000 1.0000 0

第二和第三行得分矩阵和成本的二进制值,这意味着所有五个最近的邻居的平均和最大花测量相同的分类。

火车k最近的邻居对各种分类器k值,并比较分类器的决策边界。

加载fisheriris数据集。

负载fisheriris

数据集包含的萼片和花瓣长度和宽度测量三种虹膜花。删除花萼长度和宽度,所有观察setosa虹膜。

第1 = ~ strcmp(物种,“setosa”);X =量(第1 3:4);物种=物种(第1);

创建一个二进制变量标签y。virginica虹膜的标签是1和0杂色的。

y = strcmp(物种,“virginica”);

培训k -最近邻分类器。5指定为最近的邻居发现的数量,和规范预测数据。

EstMdl = fitcknn (X, y,“NumNeighbors”5,“标准化”,1)
EstMdl = ClassificationKNN ResponseName:‘Y’CategoricalPredictors:[]类名:[0 1]ScoreTransform:“没有一个”NumObservations: 100距离:“欧几里得”NumNeighbors: 5属性,方法

EstMdl是一个培训ClassificationKNN分类器。它的一些属性出现在命令窗口。

情节决定边界,这是区分两个虹膜物种根据它们的特征。

x1 = min (X(: 1)): 0.01:马克斯(X (: 1));x2 = min (X(:, 2)): 0.01:马克斯(X (:, 2));[x1G, x2G] = meshgrid (x1, x2);XGrid = [x1G (:), x2G (:));pred =预测(EstMdl XGrid);图gscatter (XGrid (: 1), XGrid (:, 2), pred, [1, 0, 0, 0, 0.5, 1])情节(X (y = = 0, 1), X (y = = 0, 2),“柯”,X (y = = 1, 1), X (y = = 1, 2),“kx”)包含(“花瓣长度(厘米)”)ylabel (“花瓣宽度(cm)”)标题(”{\ bf 5-Nearest近邻分类器决策边界}’)传说(“杂色的地区”,“Virginica地区”,“采样杂色的”,“采样Virginica”,“位置”,“最佳”)轴持有

图包含一个坐标轴对象。坐标轴对象与标题空白5 - N e r e s t空白N e i g h b o r l C s s我f e r空白D e C s i o N空白b o u N D r y,包含花瓣长度(厘米),ylabel花瓣宽度(cm)包含4线类型的对象。一个或多个行显示的值只使用这些对象标记代表杂色的地区,Virginica地区,杂色的采样,采样Virginica。

红色和蓝色区域之间的分区边界的决定。如果你改变数量的邻居k,然后边界的变化。

训练分类器使用k= 1(默认值NumNeighborsfitcknn),k= 20。

EstMdl1 = fitcknn (X, y);pred1 =预测(EstMdl1 XGrid);EstMdl20 = fitcknn (X, y,“NumNeighbors”,20);pred20 =预测(EstMdl20 XGrid);图gscatter (XGrid (: 1), XGrid (:, 2), pred1, [1, 0, 0, 0, 0.5, 1])情节(X (y = = 0, 1), X (y = = 0, 2),“柯”,X (y = = 1, 1), X (y = = 1, 2),“kx”)包含(“花瓣长度(厘米)”)ylabel (“花瓣宽度(cm)”)标题(”{\ bf 1-Nearest近邻分类器决策边界}’)传说(“杂色的地区”,“Virginica地区”,“采样杂色的”,“采样Virginica”,“位置”,“最佳”)轴持有

图包含一个坐标轴对象。坐标轴对象与标题空白1 - N e r e s t空白N e i g h b o r l C s s我f e r空白D e C s i o N空白b o u N D r y,包含花瓣长度(厘米),ylabel花瓣宽度(cm)包含4线类型的对象。一个或多个行显示的值只使用这些对象标记代表杂色的地区,Virginica地区,杂色的采样,采样Virginica。

图gscatter (XGrid (: 1), XGrid (:, 2), pred20, [1, 0, 0, 0, 0.5, 1])情节(X (y = = 0, 1), X (y = = 0, 2),“柯”,X (y = = 1, 1), X (y = = 1, 2),“kx”)包含(“花瓣长度(厘米)”)ylabel (“花瓣宽度(cm)”)标题(”{\ bf 20-Nearest近邻分类器决策边界}’)传说(“杂色的地区”,“Virginica地区”,“采样杂色的”,“采样Virginica”,“位置”,“最佳”)轴持有

图包含一个坐标轴对象。坐标轴对象标题空白2 0 - N e r e s t空白N e i g h b o r空白C l s年代我f e r空白D e C s i o N空白b o u N D r y,包含花瓣长度(厘米),ylabel花瓣宽度(cm)包含4线类型的对象。一个或多个行显示的值只使用这些对象标记代表杂色的地区,Virginica地区,杂色的采样,采样Virginica。

边界的决定似乎线性化k增加。这种线性化发生,因为算法down-weights每个输入增加的重要性k。当k= 1,该算法正确预测几乎所有训练样本的物种。当k= 20,算法具有更高的误分类率在训练集,你可以找到一个最优值k通过使用OptimizeHyperparameters名称-值参数fitcknn。例如,看到的优化安装资讯分类器

输入参数

全部折叠

k最近的邻居分类器模型,指定为一个ClassificationKNN对象。

预测数据分类,指定为一个数字矩阵或表。

每一行的X对应于一个观察,每一列对应一个变量。

  • 一个数字矩阵:

    • 的变量的列X必须有相同的订单预测变量用于火车mdl

    • 如果你训练mdl使用一个表(例如,资源描述),然后X可以是一个数字矩阵如果资源描述包含所有数值预测变量。k最近的邻居分类需要均匀的预测。因此,对所有数值预测资源描述分类在训练集“CategoricalPredictors”、“所有”当你训练使用fitcknn。如果资源描述包含了异构预测(例如,数字和分类数据类型)X是一个数字矩阵,然后呢预测抛出一个错误。

  • 一个表:

    • 预测不支持多列变量和细金宝app胞数组以外的细胞阵列的特征向量。

    • 如果你训练mdl使用一个表(例如,资源描述),那么所有的预测变量X必须有相同的变量名和数据类型用于火车mdl(存储在mdl.PredictorNames)。然而,列的顺序X不需要对应的列顺序资源描述。这两个资源描述X可以包含额外的变量(响应变量,观察体重、等等),但预测忽略了它们。

    • 如果你训练mdl使用一个数字矩阵,然后预测名称mdl.PredictorNames和相应的预测变量名称X必须相同。指定预测名称在训练,看到PredictorNames名称-值对的观点fitcknn。所有的预测变量X必须是数值向量。X可以包含额外的变量(响应变量,观察体重、等等),但预测忽略了它们。

如果你设置“标准化”,真的fitcknn训练mdl,那么软件标准化的列X使用相应的手段mdl.Mu和标准偏差mdl.Sigma

数据类型:||

输出参数

全部折叠

预测类标签的观察(行)X,作为分类数组,返回字符数组,逻辑向量,向量的数值,或者单元阵列特征向量。标签长度等于中的行数X

对于每个观测,标签类以最小的预期成本。的观察与分数,该函数将观察分为多数类,占最大比例的训练标签。

看到预测类标签

预测类分数或后验概率,作为数字返回矩阵的大小n——- - - - - -Kn观察(行)的数量吗X,K类的数量(在吗mdl.ClassNames)。评分(i, j)是观察的后验概率X的类jmdl.ClassNames。看到后验概率

数据类型:|

预期成本分类,返回一个数字矩阵的大小n——- - - - - -Kn观察(行)的数量吗X,K类的数量(在吗mdl.ClassNames)。成本(i, j)行分类的成本吗X作为类jmdl.ClassNames。看到预期成本

数据类型:|

算法

全部折叠

预测类标签

预测将通过最小化预期的误分类代价:

y ^ = 参数 最小值 y = 1 , , K j = 1 K P ^ ( j | x ) C ( y | j ) ,

地点:

  • y ^ 是预测分类。

  • K类的数量。

  • P ^ ( j | x ) 是类的后验概率j为观察x

  • C ( y | j ) 分类的成本是一个观察是吗y当它真正的类j

后验概率

考虑一个向量(单查询点)xnew和一个模型mdl

  • k最近的邻居的数量用于预测,mdl.NumNeighbors

  • xnew nbd (mdl)指定了k最近的邻居xnewmdl.X

  • Y (nbd)指定点的分类xnew nbd (mdl),即mdl.Y (nbd)

  • W (nbd)指定点的权重xnew nbd (mdl)

  • 之前指定类的先验mdl.Y

如果模型包含一个先验概率向量,然后观察权重W归一化的类和先知先觉。这个过程可能涉及的计算点xnew,因为权重可以依赖的距离xnew点的mdl.X

的后验概率p(j|xnew)是

p ( j | x ) = nbd W ( ) 1 Y ( X ( ) ) = j nbd W ( )

在这里, 1 Y ( X ( ) ) = j 1mdl.Y (i) = j,0否则。

真正的误分类代价

两个成本与资讯相关分类:真正的误分类代价每个类和预期的误分类代价的观察。

您可以设置每类通过使用真正的误分类代价“成本”当您运行名称-值对的论点fitcknn。的值成本(i, j)分类的成本是一个观察到班呢j如果它真正的类。默认情况下,成本(i, j) = 1如果我~ = j,成本(i, j) = 0如果我=我。换句话说,是成本0正确的分类和1不正确的分类。

预期成本

两个成本与资讯相关分类:真正的误分类代价每个类和预期的误分类代价的观察。第三输出预测是预期的误分类代价/观察。

假设你有脑袋观察你想要训练的分类器进行分类mdl,你有K类。你把观测到一个矩阵Xnew有一个观察每一行。命令

(标签、分数、成本)=预测(mdl Xnew)

返回一个矩阵成本的大小脑袋——- - - - - -K等输出。的每一行成本矩阵包含预期的(平均)的观察到每个分类的成本K类。成本(n, j)

= 1 K P ^ ( | X n e w ( n ) ) C ( j | ) ,

在哪里

  • K类的数量。

  • P ^ ( | X ( n ) ) 后验概率类的为观察Xnew(n)。

  • C ( j | ) 是真正的错误分类的成本分类的观察j当它真正的类

选择功能

金宝app

最近邻分类模型的集成预测模型金宝app®,你可以使用ClassificationKNN预测块的统计和机器学习的图书馆或MATLAB工具箱™®功能块的预测函数。有关示例,请参见预测类标签使用ClassificationKNN预测块预测类标签使用MATLAB函数块

当决定使用哪种方法,考虑以下几点:

  • 如果你使用统计和机器学习工具库,您可以使用定点的工具(定点设计师)一个浮点模型转换为定点。

  • 金宝app支持适应可变数组必须启用的MATLAB函数块预测函数。

  • 如果使用MATLAB功能块,您可以使用MATLAB函数之前或之后预处理或后处理预测在同一MATLAB功能块。

扩展功能

版本历史

介绍了R2012a