菲茨康

适合k-最近邻分类器

描述

Mdl= fitcknn (资源描述ResponseVarName返回一个k-基于表中输入变量(也称为预测器、特征或属性)的最近邻分类模型资源描述和输出(响应)Tbl.ResponseVarName

Mdl= fitcknn (资源描述公式返回一个k-基于表中输入变量的最近邻分类模型资源描述公式是反应的解释模型和预测变量的子集资源描述

Mdl= fitcknn (资源描述Y返回一个k-基于表中预测变量的最近邻分类模型资源描述数组和响应Y

例子

Mdl= fitcknn (XY返回一个k-基于预测数据的最近邻分类模型X和响应Y

例子

Mdl= fitcknn (___名称,值使用前面的任何语法,使用一个或多个名称-值对参数指定的附加选项来适合模型。例如,您可以指定tie-breaking算法、距离度量或观测权值。

例子

全部崩溃

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

载入费雪的虹膜数据。

负载fisheririsX =量;Y =物种;

X是一个数字矩阵,包含四个花瓣测量150鸢尾。Y是包含相应虹膜种类的字符向量的细胞阵列。

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

Mdl = fitcknn (X, Y,“纽曼尼斯堡”5.“标准化”,1)
Mdl = ClassificationKNN ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150距离:'euclidean' NumNeighbors: 5属性,方法

Mdl是一个培训分类KNN分类器,它的一些属性出现在命令窗口中。

要访问Mdl,使用点符号。

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

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

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

Mdl。Prior = [0.5 0.2 0.3];

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

载入费雪的虹膜数据集。

负载fisheririsX =量;Y =物种;

X是一个数字矩阵,包含四个花瓣测量150鸢尾。Y是包含相应虹膜种类的字符向量的细胞阵列。

使用闵可夫斯基度量训练3个最近邻分类器。要使用闵可夫斯基度规,必须使用穷举搜索器。标准化非分类预测数据是一个很好的实践。

Mdl = fitcknn (X, Y,“纽曼尼斯堡”3....“NSMethod”“详尽”“距离”“明可夫斯基”...“标准化”,1);

Mdl是一个分类KNN分类器。

您可以检查Mdl双击Mdl在工作区窗口中。这将打开变量编辑器。

训练k-使用卡方距离的最近邻分类器。

载入费雪的虹膜数据集。

负载fisheririsX =量;%预测Y =物种;%响应

卡方距离j-维点xz

χ x z j 1 J w j x j - z j 2

在哪里 w j 是与维度关联的权重j

指定卡方距离函数。距离函数必须:

  • 拿一排X,例如,x,矩阵Z

  • 比较x每行Z

  • 返回一个向量D长度 n z 哪里 n z 是的行数Z.的每个元素D观察到的距离是否对应x以及对应于每行数据的观测值Z

chiSqrDist=@(x,Z,wt)sqrt((bsxfun(@负,x,Z)。^2)*wt);

本例使用任意权重进行说明。

训练一个3-最近邻分类器。标准化非分类预测数据是一个很好的实践。

k=3;w=[0.3;0.3;0.2;0.2];KNNMdl=fitchnn(X,Y,“距离”@ (x, Z) chiSqrDist (x, Z, w),...“纽曼尼斯堡”、钾、“标准化”,1);

KNNMdl是一个分类KNN分类器。

使用默认的10倍交叉验证交叉验证KNN分类器。检查分类错误。

rng (1);%为了再现性CVKNNMdl=交叉值(KNNMdl);classError=kfoldLoss(CVKNNMdl)
classError=0.0600

CVKNNMdl是一个ClassificationPartitionedModel分类器。10倍分类误差为4%。

将分类器与使用不同权重方案的分类器进行比较。

w2=[0.2;0.2;0.3;0.3];CVKNNMdl2=Fitchnn(X,Y,“距离”,@(x,Z)chiSqrDist(x,Z,w2),...“纽曼尼斯堡”、钾、“KFold”,10,“标准化”,1); classError2=kfoldLoss(CVKNNMdl2)
classError2 = 0.0400

第二个加权方案产生了一个具有更好的样本外性能的分类器。

这个例子展示了如何自动优化超参数使用菲茨康。该示例使用Fisher iris数据。

加载数据。

负载fisheririsX =量;Y =物种;

通过使用自动超参数优化,找到最小化五倍交叉验证损失的超参数。

为了重现性,设置随机种子并使用“预期改善加成”采集功能。

rng(1)Mdl=Fitchnn(X,Y,“优化超参数”“汽车”...“HyperparameterOptimizationOptions”...结构(“AcquisitionFunctionName”“预期改善加成”))
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | NumNeighbors距离| | | | |结果运行时| | | (estim(观察) .) | | | |=====================================================================================================||1|Be年代t | 0.026667 | 0.97867 | 0.026667 | 0.026667 | 30 | cosine |
|2 |接受| 0.04 | 0.38006 | 0.026667 | 0.027197 | 2 |切比切夫|
| 3 |接受| 0.19333 | 0.11535 | 0.026667 | 0.030324 | 1 |汉明|
| 4 |接受| 0.33333 | 0.12667 | 0.026667 | 0.033313 | 31 | spearman |
|5 |最佳| 0.02 | 0.075077 | 0.02 | 0.020648 | 6 |余弦|
|6 |接受| 0.073333 | 0.069325 | 0.02 | 0.023082 | 1 |相关性|
|7 |接受| 0.06 | 0.071807 | 0.02 | 0.020875 | 2 |城市街区|
| 8 |接受| 0.04 | 0.067053 | 0.02 | 0.020622 | 1 |欧氏|
| 9 |接受| 0.24 | 0.32008 | 0.02 | 0.020562 | 74 | mahalanobis |
| 10 |接受| 0.04 | 0.087131 | 0.02 | 0.020649 | 1 | minkowski |
| 11 |接受| 0.053333 | 0.12363 | 0.02 | 0.020722 | 1 | seuclidean |
| 12 |接受| 0.19333 | 0.092799 | 0.02 | 0.020701 | 1 | jaccard |
| 13 | Accept | 0.04 | 0.073193 | 0.02 | 0.029203 | 1 | cos |
|14 |接受| 0.04 | 0.064227 | 0.02 | 0.031888 | 75 |余弦|
| 15 |接受| 0.04 | 0.071708 | 0.02 | 0.020076 | 1 | cos |
|16 |接受| 0.093333 | 0.069671 | 0.02 | 0.020073 | 75 |欧几里德|
|17 |接受| 0.093333 | 0.066044 | 0.02 | 0.02007 | 75 |明考斯基|
|18 |接受| 0.1 | 0.066907 | 0.02 | 0.020061 | 75 |切比切夫|
|19 |接受| 0.15333 | 0.066742 | 0.02 | 0.020044 | 75 | seuclidean|
|20 |接受| 0.1 | 0.066637 | 0.02 | 0.020044 | 75 |城市街区|
|=====================================================================================================| | Iter | Eval客观客观| | | BestSoFar | BestSoFar | NumNeighbors距离| | | | |结果运行时| | | (estim(观察) .) | | | |=====================================================================================================||21|一个ccept | 0.033333 | 0.065178 | 0.02 | 0.020046 | 75 | correlation |
|22 |接受| 0.033333 | 0.076276 | 0.02 | 0.02656 | 9 |余弦|
|23 |接受| 0.033333 | 0.069098 | 0.02 | 0.02854 | 9 |余弦|
| 24 |接受| 0.02 | 0.071597 | 0.02 | 0.028607 | 1 | chebychev |
| 25 |接受| 0.02 | 0.064268 | 0.02 | 0.022264 | 1 | chebychev |
|26 |接受| 0.02 | 0.07473 | 0.02 | 0.021439 | 1 |切比切夫|
|27 |接受| 0.02 | 0.066959 | 0.02 | 0.020999 | 1 |切比切夫|
| 28 |接受| 0.66667 | 0.064738 | 0.02 | 0.020008 | 75 |汉明|
| 29 |接受| 0.04 | 0.082548 | 0.02 | 0.020008 | 12 |相关|
| 30 | Best | 0.013333 | 0.06474 | 0.013333 | 0.013351 | 6 |欧几里得|

__________________________________________________________ 优化完成。maxobjective达到30个。总函数计算:30总运行时间:30.7839秒。总目标函数评估时间:3.7529最佳观测可行点:NumNeighbors Distance ____________ _________ 6欧氏观测目标函数值= 0.013333估计目标函数值= 0.013351函数评估时间= 0.06474最佳估计可行点(根据模型):NumNeighbors Distance ____________ _________ 6欧几里德估计目标函数值= 0.013351估计函数计算时间= 0.090787
Mdl = ClassificationKNN ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 HyperparameterOptimizationResults: [1×1 BayesianOptimization] Distance: 'euclidean' NumNeighbors: 6 Properties, Methods . NumNeighbors: 6 Properties,方法

输入参数

全部崩溃

用于训练模型的样本数据,以表格形式指定。每行资源描述对应一个观察值,每一列对应一个预测变量。可选地,资源描述可以为响应变量包含一个额外的列。除了字符向量的单元格数组之外,不允许使用多列变量和单元格数组。

如果资源描述包含响应变量,并且您希望使用中的所有剩余变量资源描述作为预测器,然后使用ResponseVarName

如果资源描述包含响应变量,并且您只希望使用中剩余变量的子集资源描述作为预测器,然后通过使用公式

如果资源描述不包含响应变量,则使用Y. 响应变量的长度和中的行数资源描述必须是相等的。

数据类型:桌子

中的响应变量名,指定为变量名资源描述

您必须指定ResponseVarName作为字符向量或字符串标量。例如,如果响应变量Y存储为待定,则指定为“是的”.否则,软件将对所有列进行处理资源描述包括…在内Y,作为训练模型时的预测因子。

响应变量必须是分类、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。如果Y是字符数组,则响应变量的每个元素必须对应于数组的一行。

一个好的实践是使用一会名称-值对的论点。

数据类型:烧焦|一串

响应变量和预测变量子集的解释模型,指定为以下形式的字符向量或字符串标量“Y ~ X1 + X2 + X3”. 以这种形式,,Y表示响应变量,和X1X2X3表示预测变量。

中指定变量的子集资源描述作为训练模型的预测器,使用一个公式。如果你指定一个公式,那么软件不使用任何变量资源描述没有出现在公式

公式中的变量名必须是公式中的两个变量名资源描述Tbl.Properties.VariableNames)并且是有效的MATLAB®标识符。

您可以在中验证变量名资源描述通过使用伊斯瓦名称函数。下面的代码返回逻辑的1符合事实的)对于具有有效变量名的每个变量。

cellfun(@isvarname,Tbl.Properties.VariableNames)
如果变量名在资源描述无效,然后使用matlab.lang.makeValidName函数。
Tbl.Properties.VariableNames=matlab.lang.makeValidName(Tbl.Properties.VariableNames);

数据类型:烧焦|一串

类标签,指定为类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。每行Y的对应行的分类X

软件认为''(空字符向量),""(空字符串),< >失踪<定义>价值观Y丢失值。因此,该软件不会使用缺少响应的观察结果进行训练。

数据类型:分类|烧焦|一串|逻辑|仅有一个的|双重的|细胞

预测器数据,指定为数字矩阵。

每行对应一个观察值(也称为实例或示例),每列对应一个预测变量(也称为特征)。

的长度Y以及X必须是相等的。

按预测值在中的出现顺序指定其名称X,可以使用PredictorNames名称-值对的论点。

数据类型:双重的|仅有一个的

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。名称是参数名和价值是对应的值。名称必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:Name1, Value1,…,的家

例子:“NumNeighbors”,3,“NSMethod”,“穷举”,“Distance”,“minkowski”使用最近邻搜索方法和Minkowski度量为三个最近邻指定分类器。

笔记

不能将任何交叉验证名称-值对参数与“优化超参数”名称-值对参数。您可以修改的交叉验证“优化超参数”只有使用“HyperparameterOptimizationOptions”名称-值对的论点。

模型参数

全部崩溃

决胜算法所使用的预测如果多个类具有相同的最小开销,则指定为逗号分隔的对“布朗蒂丝”以及以下其中之一:

  • “最小的”—在绑定组之间使用最小的索引。

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

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

在默认情况下,当多个类之间有相同数量的最近点时,就会发生平局K最近的邻居。

例子:“BreakTies”,“最近的”

服务器的叶节点中的最大数据点数kd-树,指定为逗号分隔对,由“BucketSize”和一个正整数值。这个论点只有在下列情况下才有意义NSMethod“kdtree”

例子:“BucketSize”,40

数据类型:仅有一个的|双重的

分类预测器标志,指定为逗号分隔对,由“CategoricalPredictors”以及以下其中之一:

  • “全部”-所有的预测都是绝对的。

  • []-没有预测是绝对的。

预测数据菲茨康必须是全部连续的或全部分类的。

  • 如果预测器数据在表中(资源描述),菲茨康如果一个变量是逻辑向量、分类向量、字符数组、字符串数组或字符向量的单元格数组,则假设它是类别变量。如果资源描述包括连续值和分类值,则必须指定“CategoricalPredictors”菲茨康可以确定如何将所有预测因子作为连续变量或分类变量来处理。

  • 如果预测数据是一个矩阵(X),菲茨康假设所有预测器都是连续的。确定所有的预测因素X分类,指定“CategoricalPredictors”“全部”

当您设置分类预测因子“全部”,默认值距离“哈明”

例子:“分类预测因子”,“全部”

要用于训练的类名,指定为逗号分隔对,由“类名”以及类别、字符或字符串数组、逻辑或数字向量或字符向量的单元格数组。一会必须具有与相同的数据类型Y

如果一会是字符数组,则每个元素必须对应于数组的一行。

使用“类名”:

  • 在培训期间安排课程。

  • 指定与类顺序对应的任何输入或输出参数维度的顺序。例如,使用“类名”指定尺寸的顺序费用或返回的分类分数的列顺序预测

  • 选择用于培训的类的子集。例如,假设集合中所有不同的类名Y{'a','b','c'}.使用课堂观察来训练模型“a”“c”仅指定'ClassNames',{'a','c'}

的默认值一会中所有不同类名的集合Y

例子:“类名”,{' b ', ' g '}

数据类型:分类|烧焦|一串|逻辑|仅有一个的|双重的|细胞

点的错误分类成本,指定为逗号分隔对,包括“成本”以及以下其中之一:

  • 方阵,在哪里成本(i,j)是将一个点分类为类的成本j如果它真正的阶级是(即,行对应于真实类,列对应于预测类)。为相应的行和列指定类顺序的步骤费用,另外指定一会名称-值对的论点。

  • 结构年代有两个领域:美国类名包含组名作为与相同类型的变量YS.ClassificationCosts包含成本矩阵。

默认值是成本(i, j) = 1如果i~=j成本(i, j) = 0如果我=我

数据类型:仅有一个的|双重的|结构体

协方差矩阵,指定为逗号分隔对,由“Cov”以及计算马氏距离时表示协方差矩阵的标量值的正定矩阵。此参数仅在以下情况下有效“距离”“马哈拉诺比斯”

不能同时指定“标准化”的,要么“规模”“Cov”

数据类型:仅有一个的|双重的

距离度量,指定为逗号分隔对,由“距离”和一个有效的距离度量名称或函数句柄。允许的距离度量名称取决于你选择的邻居搜索方法(见NSMethod).

NSMethod 距离指标名称
详尽的 任意距离度量ExhaustiveSearcher
kdtree “cityblock”“切比切夫”“欧几里得”“明可夫斯基”

此表包括以下各项的有效距离度量:ExhaustiveSearcher

距离指标名称 描述
“cityblock” 城市街区的距离。
“切比切夫” 切比切夫距离(最大坐标差)。
“相关” 1减去观测值之间的样本线性相关性(视为值序列)。
“余弦” 一减去观测值之间夹角的余弦(视为向量)。
“欧几里得” 欧氏距离。
“哈明” 汉明距离,不同坐标的百分比。
“jaccard” 1减去Jaccard系数,即不同的非零坐标的百分比。
“马哈拉诺比斯” 马氏距离,用正定协方差矩阵计算C. 的默认值C样本协方差矩阵是X,由nancov (X).指定一个不同的值C,可以使用“Cov”名称-值对的论点。
“明可夫斯基” 闵可夫斯基距离。默认指数为2. 要指定不同的指数,请使用“指数”名称-值对的论点。
“seuclidean” 标准化欧几里德距离。每个坐标之间的差异X查询点被缩放,也就是除以一个缩放值年代. 的默认值年代标准偏差是从XS=Td(X)。为指定另一个值年代,可以使用规模名称-值对的论点。
“枪兵” 1减去样本斯皮尔曼观察值之间的等级相关性(视为值序列)。
迪斯芬

距离函数处理。迪斯芬有表格吗

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

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

  • ZJ是一个平方米-借-N的多行矩阵XY

  • D2是一个平方米-借-1距离向量,以及D2 (k)观察距离是多少ZJ(k,:)

如果您指定分类预测因子“全部”,则默认距离度量为“哈明”.否则,默认距离度量为“欧几里得”

定义,请参阅距离度量

例子:“距离”,“闵可夫斯基”

数据类型:烧焦|一串|function_handle

距离加权函数,指定为逗号分隔对,由“距离重量”以及函数句柄或此表中的某个值。

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

例子:“距离权重”,“反向”

数据类型:烧焦|一串|function_handle

闵可夫斯基距离指数,指定为逗号分隔对,由“指数”和一个正的标量值。此参数仅在以下情况下有效:“距离”“明可夫斯基”

例子:“指数”,3

数据类型:仅有一个的|双重的

连接包含标志,指定为由逗号分隔的对组成“包括”以及指示是否预测包括距离值等于K最小距离。如果包括符合事实的预测包括所有这些邻居。否则,预测使用完全K邻居。

例子:“IncludeTies”,真的

数据类型:逻辑

最近邻搜索方法,指定为逗号分隔对,由“NSMethod”“kdtree”“详尽”

  • “kdtree”-创建和使用kd树来寻找最近的邻居。“kdtree”当距离度量值为以下值之一时有效:

    • “欧几里得”

    • “cityblock”

    • “明可夫斯基”

    • “切比切夫”

  • “详尽”-使用穷举搜索算法。当预测新点的等级时xnew,软件将计算中所有点的距离值Xxnew寻找最近的邻居。

默认值是“kdtree”什么时候X10或更少的列,X不是稀疏的,距离度量是a“kdtree”类型否则“详尽”

例子:“NSMethod”,“穷举”

最近的邻居的数量X要查找以便在预测时对每个点进行分类,指定为逗号分隔对,由“纽曼尼斯堡”和一个正整数值。

例子:“NumNeighbors”,3

数据类型:仅有一个的|双重的

预测器变量名,指定为逗号分隔对,由“PredictorNames”以及唯一名称的字符串数组或唯一字符向量的单元格数组。的功能“PredictorNames”这取决于你提供培训数据的方式。

  • 如果你提供XY,然后您可以使用“PredictorNames”来给出预测变量X的名字。

    • 名字的顺序PredictorNames必须对应于的列顺序X.就是,PredictorNames {1}你的名字是什么X(:,1)PredictorNames {2}你的名字是什么X(:,2),等等。还有,大小(X, 2)numel(预测名称)必须是相等的。

    • 默认情况下,PredictorNames{'x1','x2',…}

  • 如果你提供资源描述,然后您可以使用“PredictorNames”选择在训练中使用的预测变量。即,菲茨康仅使用中的预测变量PredictorNames以及训练中的反应变量。

    • PredictorNames必须是Tbl.Properties.VariableNames并且不能包含响应变量的名称。

    • 默认情况下,PredictorNames包含所有预测变量的名称。

    • 一个好的实践是指定使用这两种方法进行训练的预测器“PredictorNames”公式只有。

例子:PredictorNames,{‘SepalLength’,‘SepalWidth’,‘PetalLength’,‘PetalWidth}

数据类型:一串|细胞

每个类的先验概率,指定为逗号分隔对,由“之前”和表中的一个值。

价值 描述
“经验” 类先验概率是类的相对频率Y
“统一” 所有类的先验概率都等于1/K哪里K是班级的数量。
数值向量 每个元素都是一类先验概率。按顺序排列元素Mdl.ClassNames或者使用一会名称-值对的论点。软件将元素标准化,使它们相加为1
结构

建筑物年代两个字段:

  • 美国类名将类名包含为与Y

  • S.ClassProbs包含相应先验概率的向量。软件对元素进行规范化,使其总和为1

如果你为两者都设置了值权重之前,将权重重新规范化,使之相加为相应类别中先验概率的值。

例子:“优先”,“制服”

数据类型:烧焦|一串|仅有一个的|双重的|结构体

响应变量名称,指定为逗号分隔对,由“ResponseName”以及字符向量或字符串标量。

  • 如果你提供Y,然后您可以使用“ResponseName”为响应变量指定名称。

  • 如果你提供ResponseVarName公式,则不能使用“ResponseName”

例子:“ResponseName”、“响应”

数据类型:烧焦|一串

距离比例尺,指定为逗号分隔对,由“规模”以及包含非负标量值的向量,其长度等于列数X. 之间的每个坐标差X查询点由查询点的对应元素进行缩放规模.此参数仅在以下情况下有效“距离”“seuclidean”

不能同时指定“标准化”的,要么“规模”“Cov”

数据类型:仅有一个的|双重的

分数转换,指定为逗号分隔对,由“分数变换”以及字符向量、字符串标量或函数句柄。

此表总结了可用的字符向量和字符串标量。

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

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

例子:“ScoreTransform”和“logit”

数据类型:烧焦|一串|function_handle

标记来标准化预测器,指定为逗号分隔对,由“标准化”符合事实的1)或错误的(0)

如果你设置“标准化”,没错,然后软件集中并缩放预测数据的每一列(X)分别按列平均值和标准偏差。

软件没有标准化分类预测值,如果所有预测值都是分类的,则会抛出错误。

不能同时指定“标准化”,1的,要么“规模”“Cov”

将预测数据标准化是一种很好的做法。

例子:“标准化”,没错

数据类型:逻辑

观察权重,指定为逗号分隔对,由“重量”和一个正数的数字向量或变量名资源描述.该软件对每一行的观察结果进行权衡X资源描述对应的值在权重.的大小权重必须等于X资源描述

如果您将输入数据指定为表资源描述然后权重可以是变量的名称资源描述包含数字向量的。在这种情况下,必须指定权重作为字符向量或字符串标量。例如,如果W存储为待定,则指定为“W”.否则,软件将对所有列进行处理资源描述包括…在内W,作为预测因子或训练模型时的响应。

该软件可实现权重求和为各类的先验概率值。

默认情况下,权重一个(n,1)哪里n是中的观察数X资源描述

数据类型:双重的|仅有一个的|烧焦|一串

交叉验证选项

全部崩溃

交叉验证标志,指定为逗号分隔对,由“Crossval”“上”“关闭”

如果您指定“上”,然后软件实现10倍交叉验证。

要覆盖此交叉验证设置,请使用以下名称-值对参数之一:CVPartition坚持肯福尔德发酵剂. 要创建交叉验证模型,一次只能使用一个交叉验证名称-值对参数。

或者,稍后通过传递进行交叉验证Mdlcrossval

例子:“CrossVal”,“上”

交叉验证分区,指定为逗号分隔对,由“CVPartition”和一个CVD分区由创建的分区对象CVD分区。分区对象指定交叉验证的类型以及训练集和验证集的索引。

要创建一个交叉验证的模型,您只能使用以下四个名称-值对参数之一:CVPartition坚持肯福尔德发酵剂

例子:假设您创建了一个随机分区,通过使用本量利= cvpartition(500年,“KFold”,5)。然后,您可以使用指定交叉验证模型“cvp”,cvp

用于保持有效性验证的部分数据,指定为逗号分隔对,由“坚持”和范围(0,1)中的标量值。如果指定‘坚持’,p,则软件完成以下步骤:

  1. 随机选择和保留p*100%将这些数据作为验证数据,并使用其余数据对模型进行训练。

  2. 将经过训练的小型模型存储在训练有素的交叉验证模型的性质。

要创建一个交叉验证的模型,您只能使用以下四个名称-值对参数之一:CVPartition坚持肯福尔德发酵剂

例子:“坚持”,0.1

数据类型:双重的|仅有一个的

要在交叉验证的模型中使用的折叠数,指定为逗号分隔的对,由“KFold”和大于1的正整数值。如果指定KFold, k,则软件完成以下步骤:

  1. 将数据随机划分为k集。

  2. 对于每个集合,保留集合作为验证数据,并使用其他集合训练模型k– 1集。

  3. 存储k细胞中的紧凑、经过训练的模型k-by-1细胞载体训练有素的交叉验证模型的性质。

要创建一个交叉验证的模型,您只能使用以下四个名称-值对参数之一:CVPartition坚持肯福尔德发酵剂

例子:“KFold”,5

数据类型:仅有一个的|双重的

省略一个交叉验证标志,指定为逗号分隔的对,由“Leaveout”“上”“关闭”.如果您指定“Leavout”和“on”,那么,对于每一个n观察(在哪里n是表中规定的不包括缺失观测的观测数NumObservations属性),软件完成以下步骤:

  1. 保留观测数据作为验证数据,并使用其他数据训练模型n–1观察结果。

  2. 存储n紧凑的、经过训练的模型n-by-1细胞载体训练有素的交叉验证模型的性质。

要创建一个交叉验证的模型,您只能使用以下四个名称-值对参数之一:CVPartition坚持肯福尔德发酵剂

例子:“Leavout”和“on”

Hyperparameter优化选项

全部崩溃

要优化的参数,指定为逗号分隔对,由“优化超参数”以及以下其中之一:

  • “没有”-不要优化。

  • “汽车”-使用{'Distance','numnighbors'}

  • “全部”-优化所有符合条件的参数。

  • 符合条件的参数名称的字符串数组或单元格数组。

  • 向量优化变量对象,通常是hyperparameters

该优化尝试将交叉验证损失(错误)降至最低菲茨康通过改变参数。有关交叉验证丢失的信息(尽管在不同的上下文中),请参阅分类损失。要控制交叉验证类型和优化的其他方面,请使用HyperparameterOptimizationOptions名称-值对。

笔记

“优化超参数”值覆盖使用其他名称-值对参数设置的任何值。例如,设置“优化超参数”“汽车”导致“汽车”值应用。

符合条件的参数菲茨康是:

  • 距离- - - - - -菲茨康搜索“cityblock”“切比切夫”“相关”“余弦”“欧几里得”“哈明”“jaccard”“马哈拉诺比斯”“明可夫斯基”“seuclidean”“枪兵”

  • 距离重量- - - - - -菲茨康搜索“平等”“逆”“squaredinverse”

  • 指数- - - - - -菲茨康默认情况下,在范围内的正实值之间搜索(0.5, 3)

  • NumNeighbors- - - - - -菲茨康在正整数中搜索,默认在范围内按对数缩放[1,马克斯(2轮(NumObservations / 2)))

  • 标准化- - - - - -菲茨康在值之间进行搜索“真的”“假”

通过传递的向量来设置非默认参数优化变量具有非默认值的对象。例如,

负载fisheriris参数=超参数(“菲茨康”量,物种);参数(1)。范围=(1、20);

通过params作为OptimizeHyperparameters

默认情况下,在命令行出现迭代显示,并根据优化中超参数的数量出现绘图。对于优化和绘图,目标函数为Log(1 +交叉验证损失)用于回归和分类的误分类率。要控制迭代显示,请设置详细的领域“HyperparameterOptimizationOptions”名称-值对的论点。要控制情节,设置ShowPlots领域“HyperparameterOptimizationOptions”名称-值对的论点。

例如,请参见优化拟合KNN分类器

例子:“汽车”

优化选项,指定为逗号分隔对,由“HyperparameterOptimizationOptions”和一个结构。这个参数修改了OptimizeHyperparameters名称-值对的论点。结构中的所有字段都是可选的。

字段名 默认的
优化器
  • “bayesopt”-使用贝叶斯优化。在内部,此设置调用贝耶斯波特

  • “网格搜索”-使用网格搜索NumGridDivisions每个维度值。

  • “随机搜索”-随机搜索MaxObjectiveEvaluations点。

“网格搜索”以随机顺序搜索,使用均匀抽样而不从网格中替换。优化之后,您可以使用该命令获得一个按网格顺序排列的表sortrows(Mdl.HyperparameterOptimizationResults)

“bayesopt”
AcquisitionFunctionName

  • “expected-improvement-per-second-plus”

  • “预期改善”

  • “预期改善加成”

  • “expected-improvement-per-second”

  • “置信下限”

  • “probability-of-improvement”

获取函数的名称包括每秒不会产生可重复的结果,因为优化依赖于目标函数的运行时间。获取函数的名称包括当他们过度开发一个区域时,调整他们的行为。有关详细信息,请参见采集功能类型

“expected-improvement-per-second-plus”
MaxObjectiveEvaluations 目标函数评估的最大数量。 30对于“bayesopt”“随机搜索”,以及“网格搜索”
MaxTime

时间限制,指定为正实数。时间限制以秒为单位,由抽搐toc. 运行时间可以超过MaxTime因为MaxTime不中断功能评估。

NumGridDivisions 对于“网格搜索”,每个维度中的值数。该值可以是给出每个维度值数的正整数向量,也可以是适用于所有维度的标量。对于分类变量,此字段将被忽略。 10
ShowPlots 指示是否显示绘图的逻辑值。如果符合事实的,该域根据迭代次数绘制出最佳目标函数值。如果有一个或两个优化参数,如果优化器“bayesopt”然后ShowPlots还根据参数绘制了目标函数的模型。 符合事实的
SaveIntermediateResults 表示是否保存结果的逻辑值优化器“bayesopt”.如果符合事实的,此字段将覆盖名为“BayeSotResults”在每次迭代中,变量是一个BayesianOptimization对象。 错误的
详细的

显示到命令行。

  • 0-没有迭代显示

  • 1-迭代显示

  • 2-带额外信息的迭代显示

有关详细信息,请参阅贝耶斯波特详细的名称-值对的论点。

1
使用并行 指示是否并行运行贝叶斯优化的逻辑值,需要并行计算工具箱™. 由于并行计时的不可再现性,并行贝叶斯优化不一定产生可再现的结果。有关详细信息,请参阅并行贝叶斯优化 错误的
再分配

指示是否在每次迭代时重新划分交叉验证的逻辑值。如果错误的,优化器使用单个分区进行优化。

符合事实的通常给出最健壮的结果,因为这个设置考虑到了分区噪声。然而,为了得到好的结果,符合事实的需要至少两倍的函数求值。

错误的
使用以下三个字段名中的一个。
CVPartition 一个CVD分区对象,如所创建的CVD分区 “Kfold”,5如果未指定任何交叉验证字段
坚持 范围内的标量(0,1)代表抵抗分数。
肯福尔德 大于1的整数。

例子:“HyperparameterOptimizationOptions”、结构(MaxObjectiveEvaluations, 60)

数据类型:结构体

输出参数

全部崩溃

训练有素的k-最近邻分类模型,作为分类KNN模型对象或ClassificationPartitionedModel旨在模型对象。

如果您设置任何名称-值对参数肯福尔德坚持CrossValCVPartition然后Mdl是一个ClassificationPartitionedModel旨在模型对象。否则,Mdl是一个分类KNN模型对象。

引用Mdl,使用点符号。例如,要在命令窗口显示距离度量,输入距离

更多关于

全部崩溃

预测

分类KNN预测点的分类xnew使用与此等效的程序:

  1. 找到NumNeighbors训练集中的分数X最接近xnew

  2. 找到NumNeighbors响应值Y到那些最近的点。

  3. 分配分类标签ynew它的后验概率最大Y

有关详细信息,请参阅后验概率预测文档。

提示

在训练模型之后,您可以生成C/ c++代码来预测新数据的标签。生成C/ c++代码需要MATLAB编码器™。有关详情,请参阅代码生成简介

算法

  • 南斯<定义>S表示观测缺失。下面描述的行为菲茨康当数据集或权重包含缺失的观测值时。

    • 的任何值Y或者任何重量都不见了菲茨康从中删除这些值Y,权重,以及相应的X从数据。软件将权重的总和重新归一化1

    • 如果您指定要标准化预测器(“标准化”,1)或标准欧几里得距离(“距离”,“修克利丁”)然后就不用体重计了菲茨康在计算平均值和标准偏差之前,从单个预测值中删除缺失的观测值nanmeannanstd在每个预测器上。

    • 如果指定马氏距离(“距离”、“mahalanbois”)如果没有协方差矩阵菲茨康删除行X包含至少一个缺失值。换句话说,软件实现了nancov关于预测矩阵X

  • 假设你设置“标准化”,1

    • 如果你也指定之前权重然后,软件考虑了观测权重。具体来说,预测值的加权平均值j

      x ¯ j B j w k x j k

      加权标准差是

      年代 j B j w k x j k x ¯ j

      在哪里Bj是指数集吗kxjkwk没有人失踪。

    • 如果你还设置“距离”、“mahalanobis”“距离”,“修克利丁”,则不能指定规模.相反,软件:

      1. 计算每个预测值的平均值和标准偏差

      2. 使用步骤1的结果标准化数据

      3. 使用它们各自的默认值计算距离参数值。

  • 如果您指定规模的,要么之前权重,然后用加权标准差对观测距离进行标度。

  • 如果您指定的,要么之前权重,则该软件将加权协方差矩阵应用于距离。换句话说,

    C o v B w j B w j 2 B w j 2 B w j x j x ¯ x j x ¯

    在哪里B是指数集吗j观察结果是什么xj没有任何缺少的值和wj没有丢失。

选择

虽然菲茨康可以训练一个多类KNN分类器,你可以将一个多类学习问题简化为一系列KNN二进制学习者使用fitcecoc

扩展能力

介绍了R2014a