2016-03-02 105 views
1

我有一套尺寸为54 * 65536的训练集和一套测试集18 * 65536增强knn分类器的准确性

我想用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/implementation related,sorry

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

  • 选择一个更好的值K
  • 预处理数据(或者如果已经应用,则预处理效果更好)。
  • 获得更好/更大的火车组。

仅举几例...

4),同时测量精度为每一个可以使用不同的价值观和保持最佳状态。 (注意:如果你这样做,确保你没有测量每个值k的分类器的准确度只有一次,而是你使用一些技术,如10-Folding)。
您正在使用K-NN分类器的库提供此类实用程序的可能性很大。