提高knn分类器的准确性

时间:2016-03-02 22:48:18

标签: matlab knn

我的训练集大小为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的最佳值?

1 个答案:

答案 0 :(得分:0)

我不知道matlab也不知道你提供的knn的实现,所以我只能回答你的一些问题。

1)你的假设是正确的。 trainlabel54*1向量或大小为54或等效的数组,用于定义训练集中每个数据点(行)所属的组。

2) ...... MATLAB /实现相关,抱歉

3)这是一个非常大的讨论。可能的方法是:

  • 选择更好的K值。
  • 预处理数据(如果已经应用,则更好地进行预处理)。
  • 获得更好/更大的火车组。

仅举几例......

4)您可以在测量每个值的准确度时使用不同的值并保持最佳状态。 (注意:如果你这样做,请确保你没有按照k每个值来衡量分类器的准确度,而是使用某种技术,例如 10-Folding 或某事) 您为K-NN分类器使用的库提供此类实用程序的可能性非常大。