資料採礦之分類演算法---knn演算法(有matlab例子)

來源:互聯網
上載者:User

標籤:knn   分類演算法   資料採礦   

knn演算法(k-Nearest Neighbor algorithm).是一種經典的分類演算法.

注意,不是聚類演算法.所以這種分類演算法必然包括了訓練過程.


然而和一般性的分類演算法不同,knn演算法是一種懶惰演算法.它並非

像其他的分類演算法先通過訓練建立分類模型.,而是一種被動的分類

過程.它是邊測試邊訓練建立分類模型.


演算法的一般描述過程如下:

1.首先計算每個測試樣本點到其他每個點的距離.

這個距離可以是歐氏距離,餘弦距離等.


2. 然後取出距離小於設定的距離閾值的點.

這些點即為根據閾值環繞在測試樣本最鄰近的點.


3.選出這些鄰近點中比例最大的點簇的類.

那麼就將概測試點歸入此類.



注意:knn演算法的開銷很大,因為要計算每個樣本點到其他所有點的距離.

    knn演算法的距離一般要根據實際樣本點的情況來選取.

    knn演算法的距離閾值要根據樣本的分散集中程度來選取.經驗一般選取樣本點集合的均方差.

    


下面是一個matlab中運用knn函數分類的例子.

clc;clear;load 'Train_Data.mat' %載入訓練資料load 'Train_Label.mat' %載入訓練分類標籤test_data=[43;           42;           192;           193];       %測試資料%knnclassify為matlab提供的knn分類函數.    %參數test_data是待分類的測試資料    %Train_Data是用於knn分類器訓練的資料    %Train_Label是訓練的分類標籤    %3,即為knn的k值.意思是取某個待分類測試樣本點周圍三個樣本點    %'cosine'---為距離度量,這裡採用餘弦距離    %'random'---為分類規則.如何對k個臨近點進行分類.    % 'k'--即為對測試資料的knn分類結果的類標籤k=knnclassify(test_data,Train_Data',Train_Label',3,'euclidean','random');

Train_Data.mat如下:


Train_Label.mat如下:


k結果如下:



轉載請註明小劉

資料採礦之分類演算法---knn演算法(有matlab例子)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.