kNN與kMeans聚類算法的區別


KNN

K-Means

目的是為了確定一個點的分類

目的是為了將一系列點集分成k類

KNN是分類算法

K-Means是聚類算法

監督學習,分類目標事先已知

非監督學習,將相似數據歸到一起從而得到分類,沒有外部分類

訓練數據集有label,已經是完全正確的數據

訓練數據集無label,是雜亂無章的,經過聚類后才變得有點順序,先無序,后有序

沒有明顯的前期訓練過程,屬於memory-based learning

有明顯的前期訓練過程

K的含義:“k”是用來計算的相鄰數據數。來了一個樣本x,要給它分類,即求出它的y,就從數據集中,在x附近找離它最近的K個數據點,這K個數據點,類別c占的個數最多,就把x的label設為c

K的含義:“k”是類的數目。K是人工固定好的數字,假設數據集合可以分為K個簇,由於是依靠人工定好,需要一點先驗知識

K值確定后每次結果固定

K值確定后每次結果可能不同,從 n個數據對象任意選擇 k 個對象作為初始聚類中心,隨機性對結果影響較大

時間復雜度:O(n)

時間復雜度:O(n*k*t),t為迭代次數

相似點:都包含這樣的過程,給定一個點,在數據集中找離它最近的點。即二者都用到了NN(Nears Neighbor)算法,一般用KD樹來實現NN。

 

參考引用:

  1. http://www.tuicool.com/articles/qamYZv
  2. http://www.tuicool.com/articles/yUBBbyR
  3. http://stats.stackexchange.com/questions/56500/what-are-the-main-differences-between-k-means-and-k-nearest-neighbours
  4. k-Means:http://blog.pluskid.org/?p=17

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM