2014-09-19 158 views
0

我對MATLAB的使用還不是很熟悉,所以我很抱歉如果我的問題看起來有點愚蠢。我試圖學習K-NN分類,我的教授說我應該從MATLAB開始。我有一個向量,我們稱它爲x,它包含2列數據。第一列是特徵1,第二列是特徵2. x中的每一行表示一個數據點。我還有另一個向量,我們稱之爲c,其中包含每個數據點(1或2)的類標籤,但只有2個類。 下面是問題:我應該使用函數「knnsearch」來查找k鄰居,並構建一個K-NN分類器。我知道我的數據中的哪些點是訓練,驗證和測試集。那麼我應該查看被錯誤分類的點數,並且看看這個數字隨着k的增加而變化。在MATLAB中理解knn算法(分類)

我想我已經知道knnsearch是如何工作的,但不知道該從哪裏去。誰能幫忙?即使是關於算法工作原理的提示在這一點上也會有所幫助,因爲我花了超過11個小時試圖找出這個問題。

回答

1

您可能會發現ClassificationKNN類更適合您的需求,而不是knnsearch函數。 knnsearch只找到最近的鄰居; ClassificationKNN適用於構建分類模型。如果你願意,你也可以自己做,但ClassificationKNN要容易得多。

例如:

% X is your nx2 array of training data 
% Y is your nx1 array of training labels 

model = ClassificationKNN.fit(X,Y); 

% newX is an mx2 array of test data 

predictedY = predict(model, newX) 

應當那樣簡單。如果您查看統計工具箱的文檔,還有更多的示例ClassificationKNN

+0

山姆,我感謝你的幫助。我認爲你的解決方案會很好,但是如果我只是使用knnsearch函數來查找算法,並且我自己構建分類過程,我不覺得我會理解它。如果我想這樣做,你有建議嗎?如果沒有,是否有資源可以指向我? – 2014-09-20 03:36:43

0

如果你只想找到K-NN,您可以使用功能的MATLAB提供:

IDX = knnsearch(X,Y) 

Here你可以閱讀更多。

此外,你可能會發現this答案有用。