ClassificationKNN
k-最近邻分类
描述
ClassificationKNN
是一个最近邻分类模型,您可以在其中更改距离度量和最近邻的数量。因为一个ClassificationKNN
分类器存储训练数据,可以使用该模型计算再替代预测。或者,使用模型对新的观测进行分类预测
方法。
创建
创建一个ClassificationKNN
模型使用fitcknn
.
属性
然而,属性
BreakTies
- - - - - -打破僵局的算法
“最小”
(默认)|“最近的”
|“随机”
所使用的破领带算法预测
当多个类具有相同的最小代价时,指定为以下之一:
“最小”
—使用绑定组中最小的索引。“最近的”
—使用绑定组中最近的类。“随机”
-在打平的组中使用随机的决胜局。
缺省情况下,当多个类之间具有相同数量的最近点时,就会发生联系k最近的邻居。BreakTies
适用于当IncludeTies
是假
.
改变BreakTies
使用点符号:mdl。破领带=新破领带
.
距离
- - - - - -距离度量
“cityblock”
|“chebychev”
|“相关”
|的余弦
|“欧几里得”
|函数处理|……
距离度量,指定为字符向量或函数句柄。所允许的值取决于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 查询点被缩放,即除以一个缩放值年代 .的默认值年代 标准差是从哪里计算出来的X ,S = std(X,'omitnan') .为指定另一个值年代 ,设置DistParameter 的属性mdl 使用点表示法。 |
“枪兵” |
1减去观测值之间的样本斯皮尔曼秩相关(被视为值序列)。 |
@ |
距离函数句柄。 函数D2 = distfun(ZI,ZJ)距离计算%...
|
有关更多信息,请参见距离度量.
改变距离
使用点符号:mdl。距离= newDistance
.
如果NSMethod
是“kdtree”
,您可以使用点表示法进行更改距离
仅针对度量“cityblock”
,“chebychev”
,“欧几里得”
,闵可夫斯基的
.
数据类型:字符
|function_handle
DistanceWeight
- - - - - -距离加权函数
“平等”
|“逆”
|“squaredinverse”
|函数处理
距离加权函数,指定为本表中的值之一。
价值 | 描述 |
---|---|
“平等” |
没有权重 |
“逆” |
重量是1 /距离 |
“squaredinverse” |
重量是1 /距离2 |
@ |
fcn 是一个函数,它接受非负距离的矩阵,并返回包含非负距离权重的相同大小的矩阵。例如,“squaredinverse” 等于@ (d) d。^ (2) . |
改变DistanceWeight
使用点符号:mdl。DistanceWeight = newDistanceWeight
.
数据类型:字符
|function_handle
DistParameter
- - - - - -距离度量参数
正定协方差矩阵|积极的标量|正比例值的向量
参数的距离度量,指定为本表中描述的值之一。
距离度量 | 参数 |
---|---|
“mahalanobis” |
正定协方差矩阵C |
闵可夫斯基的 |
闵可夫斯基距离指数,一个正标量 |
“seuclidean” |
正比例值的向量,其长度等于的列数X |
对于任何其他距离度量,的值DistParameter
必须[]
.
你可以改变DistParameter
使用点符号:mdl。DistParameter = newDistParameter
.然而,如果距离
是“mahalanobis”
或“seuclidean”
,那么你就不能改变DistParameter
.
数据类型:单
|双
IncludeTies
- - - - - -领带包含标志
假
(默认)|真正的
领带是否包含标志预测
包含距离值等于的所有邻居k最小距离,指定为假
或真正的
.如果IncludeTies
是真正的
,预测
包括所有这些邻居。否则,预测
使用完全k邻居(请参阅BreakTies
属性)。
改变IncludeTies
使用点符号:mdl。IncludeTies = newIncludeTies
.
数据类型:逻辑
NSMethod
- - - - - -最近邻搜索法
“kdtree”
|“详尽”
此属性是只读的。
最近邻搜索方法,指定为任意一种“kdtree”
或“详尽”
.
“kdtree”
—创建并使用Kd-树来寻找最近的邻居。“详尽”
—使用穷举搜索算法。在预测一个新点的类时xnew
,软件计算所有点的距离值X
来xnew
寻找最近的邻居。
默认值为“kdtree”
当X
有10
或者少列,X
是不是稀疏的,距离度量是一个“kdtree”
类型。否则,默认值为“详尽”
.
NumNeighbors
- - - - - -最近邻居数
正整数值
中最近邻居的个数X
用于对预测期间的每个点进行分类,指定为正整数值。
改变NumNeighbors
使用点符号:mdl。NumNeighbors = newNumNeighbors
.
数据类型:单
|双
其他分类属性
CategoricalPredictors
- - - - - -分类预测指标
[]
|正整数向量
此属性是只读的。
分类预测指标,指定为正整数向量。CategoricalPredictors
包含指示相应预测符是分类的索引值。索引值在1和之间p
,在那里p
用于训练模型的预测器的数量。如果没有一个预测符是分类的,则此属性为空([]
).
数据类型:双
一会
- - - - - -训练数据中的类名Y
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
此属性是只读的。
训练数据中的课程名称Y
删除重复项后,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。一会
数据类型与Y
.(该软件将字符串数组视为字符向量的单元格数组。)
数据类型:分类
|字符
|逻辑
|单
|双
|细胞
成本
- - - - - -分类错误的代价
方阵
点错误分类的代价,用方阵表示。成本(i, j)
将一个点分类的成本是多少j
如果它真正的阶级是我
(即行对应真实的类,列对应预测的类)。中的行和列的顺序成本
中类的顺序对应一会
.中的行数和列数成本
响应中唯一类的数量。
默认情况下,成本(i,j) = 1
如果I ~= j
,Cost(i,j) = 0
如果I = j
.换句话说,成本是0
正确的分类和1
不正确的分类。
改变一个成本
使用点表示法的矩阵:mdl。成本= costMatrix
.
数据类型:单
|双
ExpandedPredictorNames
- - - - - -扩展的预测器名称
字符向量的单元格数组
此属性是只读的。
扩展的预测器名称,指定为字符向量的单元格数组。
如果模型对分类变量使用编码,则ExpandedPredictorNames
包括描述展开变量的名称。否则,ExpandedPredictorNames
和PredictorNames
.
数据类型:细胞
ModelParameters
- - - - - -训练参数ClassificationKNN
对象
此属性是只读的。
用于训练的参数ClassificationKNN
模型,指定为对象。
μ
- - - - - -预测方法
数值向量
此属性是只读的。
预测器的意思是,指定为长度的数字向量元素个数(PredictorNames)
.
如果你不标准化mdl
在训练模型时使用fitcknn
,然后μ
为空([]
).
数据类型:单
|双
NumObservations
- - - - - -观察次数
正整数标量
此属性是只读的。
用于训练的观察数ClassificationKNN
模型,指定为正整数标量。这个数字可以小于训练数据中的行数,因为行包含南
价值观不是适合的一部分。
数据类型:双
PredictorNames
- - - - - -预测变量名称
字符向量的单元格数组
此属性是只读的。
预测器变量名,指定为字符向量的单元格数组。变量名与它们在训练数据中出现的顺序相同X
.
数据类型:细胞
之前
- - - - - -每个类的先验概率
数值向量
每种类别的先验概率,用数字向量表示。元素的顺序之前
中类的顺序对应一会
.
添加或更改之前
用点表示的向量:mdl。Prior = priorVector
.
数据类型:单
|双
ResponseName
- - - - - -响应变量名
特征向量
此属性是只读的。
响应变量名,指定为字符向量。
数据类型:字符
RowsUsed
- - - - - -拟合中使用的行
[]
|逻辑向量
此属性是只读的。
用于拟合的原始训练数据行ClassificationKNN
模型,指定为逻辑向量。如果使用所有行,则此属性为空。
数据类型:逻辑
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
使用点符号:mdl。年代coreTransform = newScoreTransform
.
数据类型:字符
|function_handle
σ
- - - - - -预测标准偏差
数值向量
此属性是只读的。
预测器的标准偏差,以长度的数字向量表示元素个数(PredictorNames)
.
如果你在训练期间没有标准化预测变量,那么σ
为空([]
).
数据类型:单
|双
W
- - - - - -观察权重
非负值的向量
此属性是只读的。
观察权重,指定为具有相同行数的非负值的向量Y
.每一项W
中相应观测值的相对重要性Y
.
数据类型:单
|双
X
- - - - - -非标准化预测数据
数字矩阵
此属性是只读的。
未标准化的预测数据,指定为数值矩阵。的每一列X
表示一个预测器(变量),每一行表示一个观察结果。
数据类型:单
|双
Y
- - - - - -类标签
分类数组|字符数组|逻辑向量|数值向量|字符向量的单元格数组
此属性是只读的。
类标签,指定为类别或字符数组、逻辑或数字向量或字符向量的单元格数组。中的每个值Y
观察到的类标签是否为对应的行X
.
Y
与中的数据类型相同Y
用于训练模型。(该软件将字符串数组视为字符向量的单元格数组。)
数据类型:单
|双
|逻辑
|字符
|细胞
|分类
超参数优化属性
HyperparameterOptimizationResults
- - - - - -超参数的交叉验证优化
BayesianOptimization
对象|表格
此属性是只读的。
超参数的交叉验证优化,指定为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-最近邻分类器
训练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];
提示
的
紧凑的
函数通过删除训练数据属性和预测新观测值标签不需要的任何其他属性来减少大多数分类模型的大小。因为k最近邻分类模型需要所有的训练数据来预测标签,你不能减少一个的大小ClassificationKNN
模型。
选择功能
knnsearch
找到了k-点的最近邻居。rangesearch
找到固定距离内的所有点。可以使用这些函数进行分类,如分类查询数据.如果要执行分类,则使用ClassificationKNN
模型可以更方便,因为你可以在一步中训练一个分类器(使用fitcknn
),并在其他步骤(使用预测
).或者,你可以训练一个k-最近邻分类模型中使用的交叉验证选项之一调用fitcknn
.在这种情况下,fitcknn
返回一个ClassificationPartitionedModel
交叉验证的模型对象。
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
的
预测
函数支持代码生成。万博1manbetx当你训练k-最近邻分类模型的应用
fitcknn
,则适用以下限制。的值
“距离”
名称-值对参数不能是自定义距离函数。的值
“DistanceWeight”
名称-值对参数可以是自定义距离权重函数,但不能是匿名函数。的值
“ScoreTransform”
名称-值对参数不能是匿名函数。
有关更多信息,请参见代码生成简介.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
使用注意事项和限制:
以下对象函数完全支持GPU阵列:万博1manbetx
以下对象函数对GPU阵列提供有限的支持:万博1manbetx
如果满足以下条件之一,对象函数将在GPU上执行:
该模型采用GPU阵列进行拟合。
传递给对象函数的预测器数据是一个GPU数组。
有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
版本历史
在R2012a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。