我的训练集大小为54 * 65536
,测试集为18 * 65536
。
我想使用knn分类器,但我有一些问题:
1)我应该如何定义trainlabel
?
Class = knnclassify(TestVec,TrainVec, TrainLabel,k);
大小为54 * 1
的向量是否定义了训练集中每一行属于哪个组?这里的组编号为1,2,..
2)为了找到我使用的准确度:
cp = classperf(TrainLabel);
Class = knnclassify(TestVec,TrainVec, TrainLabel);
cp = classperf(TestLabel,Class);
cp.CorrectRate*100
这是对的吗?还有另一种计算方法吗?
3)如何提高准确度?
4)如何选择k的最佳值?
答案 0 :(得分:0)
我不知道matlab也不知道你提供的knn的实现,所以我只能回答你的一些问题。
1)你的假设是正确的。 trainlabel
是54*1
向量或大小为54或等效的数组,用于定义训练集中每个数据点(行)所属的组。
2) ...... MATLAB /实现相关,抱歉。
3)这是一个非常大的讨论。可能的方法是:K
值。仅举几例......
4)您可以在测量每个值的准确度时使用不同的值并保持最佳状态。 (注意:如果你这样做,请确保你没有按照k
每个值来衡量分类器的准确度,而是使用某种技术,例如 10-Folding 或某事)
您为K-NN
分类器使用的库提供此类实用程序的可能性非常大。