预测
预测标签使用k最近的邻居分类模型
描述
例子
k最近的邻居分类预测
创建一个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”,…“位置”,“最佳”)轴紧持有从
红色和蓝色区域之间的分区边界的决定。如果你改变数量的邻居k,然后边界的变化。
训练分类器使用k= 1(默认值NumNeighbors
的fitcknn
),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”,…“位置”,“最佳”)轴紧持有从
图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”,…“位置”,“最佳”)轴紧持有从
边界的决定似乎线性化k增加。这种线性化发生,因为算法down-weights每个输入增加的重要性k。当k= 1,该算法正确预测几乎所有训练样本的物种。当k= 20,算法具有更高的误分类率在训练集,你可以找到一个最优值k通过使用OptimizeHyperparameters
名称-值参数fitcknn
。例如,看到的优化安装资讯分类器。
输入参数
mdl
- - - - - -k最近的邻居分类器模型
ClassificationKNN
对象
k最近的邻居分类器模型,指定为一个ClassificationKNN
对象。
X
- - - - - -预测分类数据
数字矩阵|表
预测数据分类,指定为一个数字矩阵或表。
每一行的X
对应于一个观察,每一列对应一个变量。
一个数字矩阵:
一个表:
预测
不支持多列变量和细金宝app胞数组以外的细胞阵列的特征向量。如果你训练
mdl
使用一个表(例如,资源描述
),那么所有的预测变量X
必须有相同的变量名和数据类型用于火车mdl
(存储在mdl.PredictorNames
)。然而,列的顺序X
不需要对应的列顺序资源描述
。这两个资源描述
和X
可以包含额外的变量(响应变量,观察体重、等等),但预测
忽略了它们。如果你训练
mdl
使用一个数字矩阵,然后预测名称mdl.PredictorNames
和相应的预测变量名称X
必须相同。指定预测名称在训练,看到PredictorNames
名称-值对的观点fitcknn
。所有的预测变量X
必须是数值向量。X
可以包含额外的变量(响应变量,观察体重、等等),但预测
忽略了它们。
如果你设置“标准化”,真的
在fitcknn
训练mdl
,那么软件标准化的列X
使用相应的手段mdl.Mu
和标准偏差mdl.Sigma
。
数据类型:双
|单
|表
输出参数
算法
预测类标签
预测
将通过最小化预期的误分类代价:
地点:
是预测分类。
K类的数量。
是类的后验概率j为观察x。
分类的成本是一个观察是吗y当它真正的类j。
后验概率
考虑一个向量(单查询点)xnew
和一个模型mdl
。
k最近的邻居的数量用于预测,
mdl.NumNeighbors
。xnew nbd (mdl)
指定了k最近的邻居xnew
在mdl.X
。Y (nbd)
指定点的分类xnew nbd (mdl)
,即mdl.Y (nbd)
。W (nbd)
指定点的权重xnew nbd (mdl)
。之前
指定类的先验mdl.Y
。
如果模型包含一个先验概率向量,然后观察权重W
归一化的类和先知先觉。这个过程可能涉及的计算点xnew
,因为权重可以依赖的距离xnew
点的mdl.X
。
的后验概率p(j|xnew
)是
在这里,
是1
当mdl.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)
是
在哪里
K类的数量。
是后验概率类的我为观察Xnew(n)。
是真正的错误分类的成本分类的观察j当它真正的类我。
选择功能
金宝app块
最近邻分类模型的集成预测模型金宝app®,你可以使用ClassificationKNN预测块的统计和机器学习的图书馆或MATLAB工具箱™®功能块的预测
函数。有关示例,请参见预测类标签使用ClassificationKNN预测块和预测类标签使用MATLAB函数块。
当决定使用哪种方法,考虑以下几点:
如果你使用统计和机器学习工具库,您可以使用定点的工具(定点设计师)一个浮点模型转换为定点。
金宝app支持适应可变数组必须启用的MATLAB函数块
预测
函数。如果使用MATLAB功能块,您可以使用MATLAB函数之前或之后预处理或后处理预测在同一MATLAB功能块。
扩展功能
高大的数组
计算和数组的行比装入内存。
这个函数完全支持高数组。金宝app有关更多信息,请参见高大的数组。
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
使用笔记和限制:
使用
saveLearnerForCoder
,loadLearnerForCoder
,codegen
(MATLAB编码器)生成的代码预测
函数。通过使用保存训练模型saveLearnerForCoder
。定义一个入口点函数,通过使用加载保存模型loadLearnerForCoder
并调用预测
函数。然后使用codegen
入口点函数来生成代码。生成单精度C / c++代码
预测
,指定名称参数“数据类型”、“单身”
当你打电话给loadLearnerForCoder
函数。此表包含的参数
预测
。参数不包括在这个表是完全支持。金宝app论点 笔记和局限性 mdl
一个
ClassificationKNN
模型对象是一个完整的对象,没有相应的紧凑的对象。对于这个模型,saveLearnerForCoder
节省一个紧凑版本不包括hyperparameter优化属性。如果
mdl
是一个模型训练用的吗kd-tree搜索算法和代码生成构建类型是一个墨西哥人函数,然后codegen
(MATLAB编码器)生成一个墨西哥人使用英特尔函数®线程构建块(TBB)并行计算。否则,codegen
生成的代码使用parfor
(MATLAB编码器)。墨西哥人的功能kd-tree搜索算法,
codegen
生成一个函数优化的墨西哥人使用英特尔TBB在多核平台上并行计算。您可以使用墨西哥人加速MATLAB函数算法。在英特尔TBB的详细信息,请参见https://www.intel.com/content/www/us/en/developer/tools/oneapi/onetbb.html。如果您生成墨西哥人函数测试生成的代码
parfor
版本,您可以禁用英特尔TBB的使用。设置ExtrinsicCalls
墨西哥人配置对象的属性假
。有关详细信息,请参见coder.MexCodeConfig
(MATLAB编码器)。墨西哥人穷举搜索算法和功能独立的C / c++代码两种算法生成的代码的
预测
使用parfor
(MATLAB编码器)创建循环,支持共享内存多核平台上并行运行生成的代码。金宝app如果你的编译器不支持开放的多处理(OpenMP)应用金宝app程序接口或禁用OpenMP库,MATLAB编码器™将parfor
循环,为
循环。找到支持的编译器金宝app,看看金宝app支持编译器。禁用OpenMP图书馆,设置EnableOpenMP
配置对象的属性假
。有关详细信息,请参见coder.CodeConfig
(MATLAB编码器)。
使用笔记和限制的模型对象,明白了代码生成的
ClassificationKNN
对象。
X
X
必须包含数字单精度和双精度矩阵或表变量,分类变量,或两者兼而有之。的行数,或观察
X
可以一个变量的大小,但列的数量X
必须是固定的。如果你想指定
X
作为一个表,那么您的模型必须被训练使用一个表,和你的入口点函数预测必须做到以下几点:接受数据数组。
创建一个表的数据输入参数并指定表中的变量名。
通过表
预测
。
这个表的一个示例工作流,请参阅生成代码对数据表进行分类。在代码生成中使用表格的更多信息,见代码生成表(MATLAB编码器)和表限制代码生成(MATLAB编码器)。
有关更多信息,请参见介绍代码生成。
GPU数组
加速代码运行在一个图形处理单元(GPU)使用并行计算工具箱™。
使用笔记和限制:
预测
不支持GPU数组金宝appClassificationKNN
模型与以下规格:的
“NSMethod”
财产被指定为“kdtree”
。的
“距离”
财产被指定为一个函数处理。的
“IncludeTies”
财产被指定为真正的
。
有关更多信息,请参见运行在GPU MATLAB函数(并行计算工具箱)。
版本历史
介绍了R2012a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。