【问题标题】:Grouping variable must be a vector Error in KNN Classifier分组变量必须是 KNN 分类器中的向量错误
【发布时间】:2016-01-16 09:19:54
【问题描述】:
我正在使用matlab的函数做KNN分类器:
knnclassify(gp,trainingClass, gpTest),
在哪里
gp 是 <849x36 double> 矩阵,gpTest 是要测试的矩阵,但会引发以下错误
使用 grp2idx 时出错(第 39 行)分组变量必须是向量或
字符数组。
knnclassify 中的错误(第 81 行)[gindex,groups] = grp2idx(group);
测试错误(第 1 行)knnclassify(gp,trainingClass, gpTest);
【问题讨论】:
标签:
matlab
classification
knn
【解决方案1】:
错误很明显 - gpTest 变量应该是一个与训练数据 (trainingClass) 长度相同的向量,其中包含描述每个训练样本的组标签。这可以是数字或字符数组。
为了澄清这一点,knnclassify(最简单的形式)定义为
CLASS = knnclassify(SAMPLE,TRAINING,GROUP)
其中SAMPLE 包含您要根据TRAINING 中的m 个训练样本分类的n 个点,每个点都定义为属于一个GROUP 中给出的类。然后分类器将根据TRAINING 中训练数据中的k 个最近邻预测SAMPLE 中每个n 个样本的类别。 SAMPLE 和 TRAINING 应该包含相同数量的列。默认情况下,k 为 1,因此它将使用欧几里得距离根据最近的训练样本对每个点进行分类。