适合k-最近邻分类器
返回一个k-最近邻分类模型基于表中的输入变量(也称为预测因子、特征或属性)Mdl
= fitcknn (资源描述
,ResponseVarName
)资源描述
输出(响应)资源描述。ResponseVarName
.
训练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];
加载费雪的虹膜数据集。
负载fisheririsX = meas;Y =物种;
X
是一个数字矩阵,包含150个鸢尾花的四个花瓣测量值。Y
是包含相应虹膜种类的特征向量的单元格数组。
使用闵可夫斯基度量训练一个3近邻分类器。要使用闵可夫斯基度量,必须使用穷尽式搜索器。标准化非分类预测器数据是一个很好的实践。
Mdl = fitcknn(X,Y,“NumNeighbors”3,...“NSMethod”,“详尽”,“距离”,闵可夫斯基的,...“标准化”1);
Mdl
是一个ClassificationKNN
分类器。
你可以检查的性质Mdl
通过双击Mdl
在工作区窗口中。这将打开变量编辑器。
训练k-使用卡方距离的最近邻分类器。
加载费雪的虹膜数据集。
负载fisheririsX = meas;%预测Y =物种;%响应
之间的卡方距离j维点x而且z是
在哪里 重量与尺寸有关吗j.
指定卡方距离函数。距离函数必须:
取一排X
,例如,x
,和矩阵Z
.
比较x
每一行Z
.
返回一个向量D
的长度
,在那里
的行数是多少Z
.的每个元素D
观测值之间的距离是否对应x
和每一行对应的观察值Z
.
chiSqrDist = @ x, Z, wt)√((bsxfun (@minus, x, Z)。^ 2)* wt);
本例使用任意权重进行说明。
训练一个3-最近邻分类器。标准化非分类预测器数据是一个很好的实践。
K = 3;W = [0.3;0.3;0.2;0.2);KNNMdl = fitcknn(X,Y,“距离”@ (x, Z) chiSqrDist (x, Z, w),...“NumNeighbors”、钾、“标准化”1);
KNNMdl
是一个ClassificationKNN
分类器。
使用默认的10倍交叉验证交叉验证KNN分类器。检查分类错误。
rng (1);%用于再现性CVKNNMdl = crossval(KNNMdl);classError = kfoldLoss(CVKNNMdl)
classError = 0.0600
CVKNNMdl
是一个ClassificationPartitionedModel
分类器。10倍的分类误差为4%。
将该分类器与使用不同加权方案的分类器进行比较。
W2 = [0.2;0.2;0.3;0.3);CVKNNMdl2 = fitcknn(X,Y,“距离”@ (x, Z) chiSqrDist (x, Z, w2),...“NumNeighbors”、钾、“KFold”10“标准化”1);classError2 = kfoldLoss(CVKNNMdl2)
classError2 = 0.0400
第二种加权方案产生的分类器具有更好的样本外性能。
这个例子展示了如何使用自动优化超参数fitcknn
.本例使用Fisher虹膜数据。
加载数据。
负载fisheririsX = meas;Y =物种;
通过使用自动超参数优化,找到最小化5倍交叉验证损失的超参数。
为了重现性,设置随机种子并使用“expected-improvement-plus”
采集功能。
rng(1) Mdl = fitcknn(X,Y,“OptimizeHyperparameters”,“汽车”,...“HyperparameterOptimizationOptions”,...结构(“AcquisitionFunctionName”,“expected-improvement-plus”))
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | NumNeighbors距离| | | | |结果运行时| | | (estim(观察) .) | | | |=====================================================================================================| | 最好1 | | 0.026667 | 0.54254 | 0.026667 | 0.026667 | 30 |余弦| | 2 |接受| 0.04 | 0.26232 | 0.026667 | 0.027197 | 2 | chebychev | | 3 |接受| 0.19333 | 0.15759 | 0.026667 | 0.030324 | 1 |汉明| | 4 |接受| 0.33333 | 0.13789 | 0.026667 | 0.033313 | | 31日斯皮尔曼| | 5 |的| 0.02 | 0.12 | 0.02 | 0.020648 | 6 |余弦| | 6 |接受| 0.073333 | 0.090568 | 0.02 | 0.023082 | 1 |相关| | | 7日接受| 0.06 | 0.1765 | 0.02 | 0.020875 | 2 | cityblock | | |接受8 | 0.04 | 0.09667 | 0.02 | 0.020622 | 1 |欧几里得| | | 9日接受| 0.24 | 0.18413 | 0.02 | 0.020562 | 74 | mahalanobis | | 10 | | 0.04 | 0.12729| 0.02 | 0.020649 | 1 |闵可夫斯基| | | 11日接受| 0.053333 | 0.14621 | 0.02 | 0.020722 | 1 | seuclidean | | | 12日接受| 0.19333 | 0.089278 | 0.02 | 0.020701 | 1 | jaccard | | | 13日接受| 0.04 | 0.097394 | 0.02 | 0.029203 | 1 | cos | | | 14日接受| 0.04 | 0.090084 | 0.02 | 0.031888 | 75 |余弦| | 15 |接受| 0.04 | 0.092301 | 0.02 | 0.020076 | 1 | cos | | | 16日接受| 0.093333 | 0.18574 | 0.02 | 0.020073 | 75 |欧几里得| | | 17日接受| 0.093333 | 0.098888 | 0.02 | 0.02007 |18 75 |闵可夫斯基| | |接受| 0.1 | 0.10177 | 0.02 | 0.020061 | 75 | chebychev | | | 19日接受| 0.15333 | 0.091498 | 0.02 | 0.020044 | 75 | seuclidean | | |接受20 | 0.1 | 0.12453 | 0.02 | 0.020044 | 75 | cityblock | |=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | NumNeighbors距离| | | | |结果运行时| |(观察)| (estim) | | ||=====================================================================================================| | 21日|接受| 0.033333 | 0.12905 | 0.02 | 0.020046 | 75 |相关| | | 22日接受| 0.033333 | 0.17091 | 0.02 | 0.02656 | 9 |余弦| | | 23日接受| 0.033333 | 0.28665 | 0.02 | 0.02854 | 9 |余弦| | | 24日接受| 0.02 | 0.12217 | 0.02 | 0.028607 | 1 | chebychev | | | 25日接受| 0.02 | 0.11392 | 0.02 | 0.022264 | 1 | chebychev | | | 26日接受| 0.02 | 0.092565 | 0.02 | 0.021439 | 1| chebychev | | 27 | Accept | 0.02 | 0.098058 | 0.02 | 0.020999 | 1 | chebychev | | 28 | Accept | 0.66667 | 0.21811 | 0.02 | 0.020008 | 75 | hamming | | 29 | Accept | 0.04 | 0.17081 | 0.02 | 0.020008 | 12 | correlation | | 30 | Best | 0.013333 | 0.14369 | 0.013333 | 0.013351 |欧几里得|
__________________________________________________________ 优化完成。最大目标达到30个。总函数评估:30总运行时间:61.4049秒总目标函数评估时间:4.5591最佳观测可行点:NumNeighbors Distance ____________ _________ 6 euclidean观测目标函数值= 0.013333估计目标函数值= 0.013351函数评估时间= 0.14369最佳估计可行点(根据模型):NumNeighbors Distance ____________ _________ 6欧几里得估计目标函数值= 0.013351估计函数评估时间= 0.14301
Mdl = ClassificationKNN ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 HyperparameterOptimizationResults: [1x1 BayesianOptimization] Distance: 'euclidean' NumNeighbors: 6 Properties, Methods
资源描述
- - - - - -样本数据用于训练模型的示例数据,指定为表。每行资源描述
对应一个观测值,每一列对应一个预测变量。可选地,资源描述
可以为响应变量包含一个额外的列。不允许使用字符向量的单元格数组以外的多列变量和单元格数组。
如果资源描述
包含响应变量,您希望在中使用所有剩余变量资源描述
作为预测器,然后通过使用指定响应变量ResponseVarName
.
如果资源描述
包含响应变量,并且您希望仅在中使用其余变量的子集资源描述
作为预测器,然后通过使用指定一个公式公式
.
如果资源描述
不包含响应变量,然后通过使用Y
.响应变量的长度和其中的行数资源描述
必须是相等的。
数据类型:表格
公式
- - - - - -响应变量的解释模型和预测变量的子集响应变量和预测变量子集的解释模型,在表单中指定为字符向量或字符串标量“Y ~ x1 + x2 + x3”
.在这种形式下,Y
表示响应变量,和x1
,x2
,x3
表示预测变量。
中指定变量的子集资源描述
使用公式作为训练模型的预测因子。如果您指定了一个公式,那么该软件不使用任何变量资源描述
没有出现在公式
.
公式中的变量名必须同时为资源描述
(Tbl.Properties.VariableNames
)和有效的MATLAB®标识符。中的变量名可以验证资源描述
通过使用isvarname
函数。变量名无效,则可以使用matlab.lang.makeValidName
函数。
数据类型:字符
|字符串
Y
- - - - - -类标签类标签,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。每行Y
的对应行的分类X
.
软件考虑南
,”
(空字符向量),""
(空字符串),< >失踪
,<定义>
值Y
丢失的值。因此,该软件不会使用缺少响应的观察进行训练。
数据类型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
X
- - - - - -预测数据预测器数据,指定为数值矩阵。
每行对应一个观察结果(也称为实例或示例),每列对应一个预测变量(也称为特征)。
的长度Y
的行数X
必须是相等的。
中出现的顺序指定预测符的名称X
,使用PredictorNames
名称-值对参数。
数据类型:双
|单
的可选逗号分隔对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“NumNeighbors”3“NSMethod”、“穷举”,“距离”,“闵可夫斯基”
使用最近邻搜索方法和闵可夫斯基度量为三个最近邻指定分类器。
请注意
方法时,不能使用任何交叉验证名称-值对参数“OptimizeHyperparameters”
名称-值对参数。您可以修改交叉验证“OptimizeHyperparameters”
只有使用“HyperparameterOptimizationOptions”
名称-值对参数。
“BreakTies”
- - - - - -打破僵局的算法“最小”
(默认)|“最近的”
|“随机”
所使用的抢断算法预测
方法,如果多个类具有相同的最小代价,则指定为由逗号分隔的对组成“BreakTies”
和以下其中之一:
“最小”
—使用绑定组中最小的索引。
“最近的”
—使用绑定组中最近的类。
“随机”
-在打平的组中使用随机的决胜局。
缺省情况下,当多个类之间具有相同数量的最近点时,就会发生联系K
最近的邻居。
例子:“BreakTies”,“最近”
“BucketSize”
- - - - - -节点中的最大数据点50
(默认)|正整数值的叶节点中的最大数据点数kD-tree,指定为逗号分隔的对,由“BucketSize”
一个正整数值。这个论点只有在NSMethod
是“kdtree”
.
例子:“BucketSize”,40岁
数据类型:单
|双
“CategoricalPredictors”
- - - - - -分类预测标志[]
|“所有”
类别预测器标志,指定为逗号分隔的对,由“CategoricalPredictors”
和以下其中之一:
“所有”
-所有预测因素都是绝对的。
[]
-没有绝对的预测因素。
预测数据fitcknn
必须是全部连续的或全部直言的。
当你设置CategoricalPredictors
来“所有”
,默认距离
是“汉明”
.
例子:“CategoricalPredictors”、“所有”
“类名”
- - - - - -用于培训的类名用于训练的类名,指定为类别、字符或字符串数组;向量:逻辑或数字向量;或者是字符向量的单元格数组。一会
必须具有与响应变量相同的数据类型资源描述
或Y
.
如果一会
是字符数组,则每个元素必须对应数组中的一行。
使用一会
:
在培训期间指定课程的顺序。
指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用一会
指定…尺寸的顺序成本
或返回的分类分数的列顺序预测
.
选择用于培训的类的子集。例如,假设集合中所有不同的类名Y
是{' a ', ' b ', ' c '}
.用课堂上的观察来训练模型“一个”
而且“c”
只是,指定“类名”,{' a ', ' c '}
.
的默认值一会
响应变量中所有不同类名的集合在吗资源描述
或Y
.
例子:“类名”,{' b ', ' g '}
数据类型:分类
|字符
|字符串
|逻辑
|单
|双
|细胞
“浸”
- - - - - -协方差矩阵X (X, omitrows)
(默认)|标量值的正定矩阵协方差矩阵,以逗号分隔的对组成“浸”
在计算马氏距离时,用标量值的正定矩阵表示协方差矩阵。这个论点只有在“距离”
是“mahalanobis”
.
你不能同时指定“标准化”
任意一个“规模”
或“浸”
.
数据类型:单
|双
“距离”
- - - - - -距离度量“cityblock”
|“chebychev”
|“相关”
|的余弦
|“欧几里得”
|“汉明”
|函数处理|……距离度量,指定为逗号分隔的对,由“距离”
和有效的距离度量名称或函数句柄。允许的距离度量名称取决于您选择的邻居搜索器方法(请参阅NSMethod
).
NSMethod |
距离度量名称 |
---|---|
详尽的 |
的任何距离度量ExhaustiveSearcher |
kdtree |
“cityblock” ,“chebychev” ,“欧几里得” ,或闵可夫斯基的 |
该表包括有效的距离度量ExhaustiveSearcher
.
距离度量名称 | 描述 |
---|---|
“cityblock” |
城市街区距离。 |
“chebychev” |
切比雪夫距离(最大坐标差)。 |
“相关” |
1减去观测值之间的样本线性相关(被视为值序列)。 |
的余弦 |
1减去观测值之间夹角的余弦(作为向量处理)。 |
“欧几里得” |
欧氏距离。 |
“汉明” |
汉明距离,不同坐标的百分比。 |
“jaccard” |
1减去杰卡德系数,非零坐标的百分比不同。 |
“mahalanobis” |
马氏距离,用正定协方差矩阵计算C .的默认值C 样本协方差矩阵是X ,按X (X, omitrows) .指定不同的值C ,使用“浸” 名称-值对参数。 |
闵可夫斯基的 |
闵可夫斯基距离。默认指数为2 .要指定不同的指数,请使用“指数” 名称-值对参数。 |
“seuclidean” |
标准化欧氏距离。各坐标之间的差X 查询点被缩放,即除以一个缩放值年代 .的默认值年代 标准差是从哪里计算出来的X ,S = std(X,'omitnan') .为指定另一个值年代 ,使用规模 名称-值对参数。 |
“枪兵” |
1减去观测值之间的样本斯皮尔曼秩相关(被视为值序列)。 |
@ |
距离函数句柄。 函数D2 = distfun(ZI,ZJ)距离计算%...
|
如果你指定CategoricalPredictors
作为“所有”
,则默认距离度量为“汉明”
.否则,默认的距离度量为“欧几里得”
.
有关定义,请参见距离度量.
例子:“距离”,“闵可夫斯基”
数据类型:字符
|字符串
|function_handle
“DistanceWeight”
- - - - - -距离加权函数“平等”
(默认)|“逆”
|“squaredinverse”
|函数处理距离加权函数,指定为由逗号分隔的对组成“DistanceWeight”
一个函数句柄或者这个表中的一个值。
价值 | 描述 |
---|---|
“平等” |
没有权重 |
“逆” |
重量是1/距离 |
“squaredinverse” |
重量是1/距离2 |
@ |
fcn 是一个函数,它接受非负距离的矩阵,并返回包含非负距离权重的相同大小的矩阵。例如,“squaredinverse” 等于@ (d) d。^ (2) . |
例子:“DistanceWeight”、“逆”
数据类型:字符
|字符串
|function_handle
“指数”
- - - - - -闵可夫斯基距离指数2
(默认)|正标量值闵可夫斯基距离指数,指定为逗号分隔的对,由“指数”
一个正标量。这个论点只有在“距离”
是闵可夫斯基的
.
例子:“指数”,3
数据类型:单
|双
“IncludeTies”
- - - - - -领带包含标志假
(默认)|真正的
领带包含标志,指定为由逗号分隔的对组成“IncludeTies”
和表示是否的逻辑值预测
包含距离值等于的所有邻居K
最小距离。如果IncludeTies
是真正的
,预测
包括所有这些邻居。否则,预测
使用完全K
邻居。
例子:“IncludeTies”,真的
数据类型:逻辑
“NSMethod”
- - - - - -最近邻搜索法“kdtree”
|“详尽”
最近邻搜索方法,指定为逗号分隔的对,由“NSMethod”
而且“kdtree”
或“详尽”
.
“kdtree”
—创建并使用kd-树来寻找最近的邻居。“kdtree”
当距离度量是下列之一时有效:
“欧几里得”
“cityblock”
闵可夫斯基的
“chebychev”
“详尽”
—使用穷举搜索算法。在预测一个新点的类时xnew
,软件计算所有点的距离值X
来xnew
寻找最近的邻居。
默认为“kdtree”
当X
有10
或者少列,X
不是疏还是个gpuArray
,距离度规为a“kdtree”
类型;否则,“详尽”
.
例子:“NSMethod”、“详尽”
“NumNeighbors”
- - - - - -要找到的最近邻居的数量1
(默认)|正整数值“PredictorNames”
- - - - - -预测变量名称预测器变量名,指定为唯一名称的字符串数组或唯一字符向量的单元格数组。的功能PredictorNames
这取决于你提供训练数据的方式。
如果你提供X
而且Y
,那么你就可以使用了PredictorNames
中预测变量的名称X
.
里面名字的顺序PredictorNames
必须对应的列顺序X
.也就是说,PredictorNames {1}
名字是X (: 1)
,PredictorNames {2}
名字是X (:, 2)
等等。同时,大小(X, 2)
而且元素个数(PredictorNames)
必须是相等的。
默认情况下,PredictorNames
是{x1, x2,…}
.
如果你提供资源描述
,那么你就可以使用了PredictorNames
选择在训练中使用哪些预测变量。也就是说,fitcknn
中仅使用预测变量PredictorNames
以及训练中的响应变量。
PredictorNames
的子集Tbl.Properties.VariableNames
并且不能包括响应变量的名称。
默认情况下,PredictorNames
包含所有预测变量的名称。
一个好的实践是使用其中一种来指定训练的预测器“PredictorNames”
或公式
,但不是两者都有。
例子:PredictorNames,{‘SepalLength’,‘SepalWidth’,‘PetalLength’,‘PetalWidth}
数据类型:字符串
|细胞
“之前”
- - - - - -先验概率“经验”
(默认)|“统一”
|标量向量|结构每个类的先验概率,由逗号分隔的对组成“之前”
和这个表中的一个值。
价值 | 描述 |
---|---|
“经验” |
类先验概率是类的相对频率Y . |
“统一” |
所有类先验概率都等于1/K,在那里K是类的数量。 |
数值向量 | 每个元素都是一个类先验概率。对元素进行排序Mdl .ClassNames 或使用一会 名称-值对参数。软件将元素规范化,使它们的和为1 . |
结构 | 一个结构
|
如果你同时设置两个值权重
而且之前
时,将权重重新规整,使其加起来等于相应类别中的先验概率值。
例子:“前”、“制服”
数据类型:字符
|字符串
|单
|双
|结构体
“ResponseName”
- - - - - -响应变量名“Y”
(默认)|特征向量|字符串标量响应变量名,指定为字符向量或字符串标量。
如果你提供Y
,那么你就可以使用了“ResponseName”
为响应变量指定名称。
如果你提供ResponseVarName
或公式
,那么你就不能用了“ResponseName”
.
例子:“ResponseName”、“响应”
数据类型:字符
|字符串
“规模”
- - - - - -距离范围内性病(X, omitnan)
(默认)|非负标量值的向量距离刻度,指定为逗号分隔的对,由“规模”
和包含非负标量值的向量,其长度等于中的列数X
.各坐标之间的差X
的对应元素对查询点进行缩放规模
.这个论点只有在“距离”
是“seuclidean”
.
你不能同时指定“标准化”
任意一个“规模”
或“浸”
.
数据类型:单
|双
“ScoreTransform”
- - - - - -分数转换“没有”
(默认)|“doublelogit”
|“invlogit”
|“ismax”
|分对数的
|函数处理|……分数转换,指定为字符向量、字符串标量或函数句柄。
该表总结了可用的字符向量和字符串标量。
价值 | 描述 |
---|---|
“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”、“分对数的
数据类型:字符
|字符串
|function_handle
“标准化”
- - - - - -标志来标准化预测器假
(默认)|真正的
标志来标准化预测器,指定为逗号分隔的对,由“标准化”
而且真正的
(1
)或假
(0)
.
如果你设置“标准化”,真的
,然后软件对预测器数据的每列进行集中和缩放(X
)分别用列均值和标准差表示。
该软件没有标准化分类预测器,如果所有预测器都是分类的,则会抛出一个错误。
你不能同时指定“标准化”,1
任意一个“规模”
或“浸”
.
将预测数据标准化是一个很好的实践。
例子:“标准化”,真的
数据类型:逻辑
“重量”
- - - - - -观察权重资源描述
“CVPartition”
- - - - - -交叉验证分区[]
(默认)|cvpartition
分区对象交叉验证分区,指定为cvpartition
创建的分区对象cvpartition
.分区对象指定交叉验证的类型以及训练集和验证集的索引。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:假设您创建一个随机分区,对500个观察结果进行5次交叉验证,使用cvp = cvpartition(500,'KFold',5)
.然后,您可以通过使用指定交叉验证的模型“CVPartition”,本量利
.
“坚持”
- - - - - -顽固性验证的数据比例用于拒绝验证的数据的百分比,指定为范围(0,1)中的标量值。如果你指定‘坚持’,p
,然后软件完成以下步骤:
随机选择并保留p * 100
%的数据作为验证数据,并使用其余数据训练模型。
将紧凑的、训练过的模型存储在训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“坚持”,0.1
数据类型:双
|单
“KFold”
- - - - - -折叠数10
(默认)|大于1的正整数值交叉验证模型中使用的折叠数,指定为大于1的正整数值。如果你指定KFold, k
,然后软件完成以下步骤:
将数据随机划分为k
集。
对于每个集合,保留该集合作为验证数据,并使用另一个集合训练模型k
- 1集。
存储k
紧凑,训练有素的模型k
的-by-1单元格向量训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“KFold”,5
数据类型:单
|双
“Leaveout”
- - - - - -省略一个交叉验证标志“关闭”
(默认)|“上”
省略一个交叉验证标志,指定为“上”
或“关闭”
.如果你指定“Leaveout”,“上”
,然后对每个的n观察(n(不包括遗漏的观测数据)的观测数据数目是否已列明NumObservations
属性的模型),软件完成这些步骤:
保留一个观察数据作为验证数据,并使用另一个数据训练模型n- 1次观察。
存储n紧凑,训练有素的模型在一个n的-by-1单元格向量训练有素的
交叉验证模型的属性。
要创建交叉验证的模型,您只能指定以下四个名称-值参数中的一个:CVPartition
,坚持
,KFold
,或Leaveout
.
例子:“Leaveout”,“上”
“OptimizeHyperparameters”
- - - - - -需要优化的参数“没有”
(默认)|“汽车”
|“所有”
|符合条件的参数名的字符串数组或单元格数组|向量的optimizableVariable
对象参数进行优化,指定为由逗号分隔的对组成“OptimizeHyperparameters”
和以下其中之一:
“没有”
-不要优化。
“汽车”
——使用{‘距离’,‘NumNeighbors}
.
“所有”
-优化所有符合条件的参数。
符合条件的参数名的字符串数组或单元格数组。
向量的optimizableVariable
对象的输出hyperparameters
.
优化尝试最小化交叉验证损失(错误)fitcknn
通过改变参数。有关交叉验证丢失的信息(尽管是在不同的上下文中),请参见分类损失.若要控制交叉验证类型和优化的其他方面,请使用HyperparameterOptimizationOptions
名称-值对。
请注意
“OptimizeHyperparameters”
值覆盖使用其他名称-值对参数设置的任何值。例如,设置“OptimizeHyperparameters”
来“汽车”
导致“汽车”
要应用的值。
符合条件的参数fitcknn
是:
距离
- - - - - -fitcknn
搜索中“cityblock”
,“chebychev”
,“相关”
,的余弦
,“欧几里得”
,“汉明”
,“jaccard”
,“mahalanobis”
,闵可夫斯基的
,“seuclidean”
,“枪兵”
.
DistanceWeight
- - - - - -fitcknn
搜索中“平等”
,“逆”
,“squaredinverse”
.
指数
- - - - - -fitcknn
默认情况下,搜索范围内的正实数(0.5, 3)
.
NumNeighbors
- - - - - -fitcknn
在正整数值中搜索,默认情况下在范围内按对数缩放[1,马克斯(2轮(NumObservations / 2)))
.
标准化
- - - - - -fitcknn
在值之间搜索“真正的”
而且“假”
.
通过传递的向量来设置非默认参数optimizableVariable
具有非默认值的对象。例如,
负载fisheririsParams =超参数(“fitcknn”量,物种);参数(1)。Range = [1,20];
通过参数个数
作为价值OptimizeHyperparameters
.
默认情况下,在命令行上出现迭代显示,并根据优化中的超参数数量显示图形。对于优化和绘图,目标函数为Log(1 +交叉验证损失)用于回归和分类的误分类率。要控制迭代显示,请设置详细的
字段“HyperparameterOptimizationOptions”
名称-值对参数。为了控制情节,设置ShowPlots
字段“HyperparameterOptimizationOptions”
名称-值对参数。
有关示例,请参见优化拟合KNN分类器.
例子:“汽车”
“HyperparameterOptimizationOptions”
- - - - - -优化选项用于优化的选项,指定为逗号分隔的对,由“HyperparameterOptimizationOptions”
还有一个结构。的效果OptimizeHyperparameters
名称-值对参数。结构中的所有字段都是可选的。
字段名 | 值 | 默认的 |
---|---|---|
优化器 |
|
“bayesopt” |
AcquisitionFunctionName |
名称包括的获取函数 |
“expected-improvement-per-second-plus” |
MaxObjectiveEvaluations |
目标函数求值的最大个数。 | 30. 为“bayesopt” 或“randomsearch” ,而整个电网为“gridsearch” |
MaxTime |
时间限制,指定为正实数。时间限制以秒为单位,由 |
正 |
NumGridDivisions |
为“gridsearch” ,表示每个维度中值的数量。该值可以是一个正整数向量,给出每个维度的值的数量,也可以是一个适用于所有维度的标量。对于分类变量,该字段将被忽略。 |
10 |
ShowPlots |
指示是否显示图的逻辑值。如果真正的 ,该字段根据迭代次数绘制最佳目标函数值。如果有一个或两个优化参数,如果优化器 是“bayesopt” ,然后ShowPlots 还绘制了目标函数对参数的模型。 |
真正的 |
SaveIntermediateResults |
时是否保存结果的逻辑值优化器 是“bayesopt” .如果真正的 ,此字段将覆盖名为“BayesoptResults” 在每次迭代中。变量是aBayesianOptimization 对象。 |
假 |
详细的 |
显示到命令行。
详细信息请参见 |
1 |
UseParallel |
指示是否并行运行贝叶斯优化的逻辑值,这需要并行计算工具箱™。由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。详细信息请参见并行贝叶斯优化. | 假 |
重新分区 |
指示是否在每次迭代中重新划分交叉验证的逻辑值。如果
|
假 |
使用以下三个字段名中的一个。 | ||
CVPartition |
一个cvpartition 对象创建的cvpartition . |
“Kfold”,5 如果您没有指定任何交叉验证字段 |
坚持 |
范围内的标量(0,1) 表示抵抗分数。 |
|
Kfold |
大于1的整数。 |
例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)
数据类型:结构体
Mdl
——培训k-最近邻分类模型ClassificationKNN
模型对象|ClassificationPartitionedModel
交叉验证的模型对象训练有素的k-最近邻分类模型,返回为aClassificationKNN
模型对象或ClassificationPartitionedModel
交叉验证的模型对象。
如果您设置了任何名称-值对参数KFold
,坚持
,CrossVal
,或CVPartition
,然后Mdl
是一个ClassificationPartitionedModel
交叉验证的模型对象。否则,Mdl
是一个ClassificationKNN
模型对象。
引用Mdl
,使用点表示法。例如,要在命令窗口中显示距离度量,请输入Mdl。D我年代tance
.
在训练模型之后,您可以生成C/ c++代码来预测新数据的标签。生成C/ c++代码需要MATLAB编码器™.详细信息请参见代码生成简介.
nan
或<定义>
S表示缺失的观测值。下面描述的行为fitcknn
当数据集或权重包含缺失观测值时。
假设你设“标准化”,1
.
如果你指定规模
任意一个之前
或权重
,然后软件用加权标准差对观测距离进行缩放。
如果你指定浸
任意一个之前
或权重
,然后软件将加权协方差矩阵应用于距离。换句话说,
在哪里B是指数的集合吗j因为观察到xj没有任何缺失的值和wj不是失踪。
虽然fitcknn
可以训练一个多类KNN分类器,你可以将一个多类学习问题简化为一系列KNN二元学习器使用fitcecoc
.
要执行并行超参数优化,请使用“HyperparameterOptimizationOptions”、结构(UseParallel,真的)
此函数调用中的名称-值参数。
有关并行超参数优化的更多信息,请参见并行贝叶斯优化.
有关并行计算的一般信息,请参见运行MATLAB函数与自动并行支持金宝app(并行计算工具箱).
使用注意事项和限制:
默认情况下,fitcknn
采用穷举最近邻搜索算法gpuArray
输入参数。
不能指定名称-值参数“NSMethod”
作为“kdtree”
.
不能指定名称-值参数“距离”
作为函数句柄。
fitcknn
仅在以下情况下返回与GPU数组输入参数匹配的分类模型:
输入参数X
是一个gpuArray
.
输入参数资源描述
包含gpuArray
元素。
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。