2016-03-02 106 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分類器的庫提供此類實用程序的可能性很大。