k-means算法(k-均值聚類算法)是一種基本的已知聚類類別數的劃分算法。它是很典型的基於距離的聚類算法,採用距離做爲類似性的評價指標,即認爲兩個對象的距離越近,其類似度就越大。它是使用歐氏距離度量的(簡單理解就是兩點間直線距離,歐氏距離只是將這個距離定義更加規範化,擴展到N維而已)。它能夠處理大數據集,且高效。聚類結果是劃分爲k類的k個數據集。根據聚類結果的表達方式又能夠分爲硬 k-means(H CM)算法、模糊k-means算法(F CM)和機率k-means算法(P CM)。算法
它是基於給定的聚類目標函數,算法採用迭代更新的方法,每一次迭代過程都是向目標函數減少的方向進行,最終聚類結果使得目標函數取得極小值,達到較好的分類效果機器學習
原始的k-means算法首先隨機選取k個點做爲初始聚類中心,而後計算各個數據對 象到各聚類中心的距離,把數據對象歸到離它最近的那個聚類中心所在的類; 調整後的新類計算新的聚類中心,若是相鄰兩次的聚類中心沒有任何變化,說明 數據對象調整結束,聚類準則函數f已經收斂。在每次迭 代中都要考察每一個樣本的分類是否正確,若不正確,就要調整。在所有數據調整 完後,再修改聚類中心,進入下一次迭代。若是在一次迭代算法中,全部的數據 對象被正確分類,則不會有調整,聚類中心也不會有任何變化,這標誌着f已 經收斂,算法結束。函數
1) 選擇批次距離儘量遠的K個點學習
首先隨機選擇一個點做爲第一個初始類簇中心點,而後選擇距離該點最遠的那個點做爲第二個初始類簇中心點,而後再選擇距離前兩個點的最近距離最大的點做爲第三個初始類簇的中心點,以此類推,直至選出K個初始類簇中心點。測試
2) 選用層次聚類或者Canopy算法進行初始聚類,而後利用這些類簇的中心點做爲K-Means算法初始類簇中心點。大數據
只要咱們假設的類簇的數目等於或者高於真實的類簇的數目時,該指標上升會很緩慢,而一旦試圖獲得少於真實數目的類簇時,該指標會急劇上升。類簇指標 做爲一個重要的參考指標。spa
類簇的直徑是指類簇內任意兩點之間的最大距離。rest
類簇的半徑是指類簇內全部點到類簇中心距離的最大值。對象
使用簡單,是由於它使用了一個隨機的元素,因此它不能保證找到最佳的類。 無須要一個合理初始化要聚類的個數:即要初始化K 。blog
K N N的思想: 從上圖中咱們能夠看到,圖中的數據集是良好的數據,即都打好了label,一類是藍色的正方形,一類是紅色的三角形,那個綠色的圓形是咱們待分類的數據。 若是K=3,那麼離綠色點最近的有2個紅色三角形和1個藍色的正方形,這3個點投票,因而綠色的這個待分類點屬於紅色的三角形 若是K=5,那麼離綠色點最近的有2個紅色三角形和3個藍色的正方形,這5個點投票,因而綠色的這個待分類點屬於藍色的正方形 即若是一個樣本在特徵空間中的k個最相鄰的樣本中,大多數屬於某一個類別,則該樣本也屬於這個類別。咱們能夠看到,K N N本質是基於一種數據統計的方法!其實不少機器學習算法也是基於數據統計的。
介紹
K N N即K-Nearest Neighbor,是一種memory-based learning,也叫instance-based learning,屬於lazy learning。即它沒有明顯的前期訓練過程,而是程序開始運行時,把數據集加載到內存後,不須要進行訓練,就能夠開始分類了。 K N N也是一種監督學習算法,經過計算新數據與訓練數據特徵值之間的距離,而後選取K(K>=1)個距離最近的鄰居進行分類判(投票法)或者回歸。若K=1,新數據被簡單分配給其近鄰的類。
步驟
1)計算測試數據與各個訓練數據之間的距離;可使用歐式距離的公式來進行計算。
2)按照距離的遞增關係進行排序;
3)選取距離最小的K個點(k值是由本身來肯定的)
4)肯定前K個點所在類別的出現頻率;
5)返回前K個點中出現頻率最高的類別做爲測試數據的預測分類。
特色
非參數統計方法:不須要引入參數 K的選擇: K = 1時,將待分類樣本劃入與其最接近的樣本的類。 K = |X|時,僅根據訓練樣本進行頻率統計,將待分類樣本劃入最多的類。 K須要合理選擇,過小容易受干擾,太大增長計算複雜性。 算法的複雜度:維度災難,當維數增長時,所需的訓練樣本數急劇增長,通常採用降維處理。
優勢:簡單、有效
缺點:計算量較大。輸出的可解釋性不強。須要存儲所有的訓練樣本。
類似點: