k均值演算法,k-means演算法原理
一 經典的k-均值聚類
思路:
1 隨機建立k個質心(k必須指定,二維的很容易確定,視覺化資料分佈,直觀確定即可);
2 遍歷資料集的每個例項,計算其到每個質心的相似度,這裡也就是歐氏距離;把每個例項都分配到距離最近的質心的那一類,用一個二維陣列資料結構儲存,第一列是最近質心序號,第二列是距離;
3 根據二維陣列儲存的資料,重新計算每個聚簇新的質心;
4 迭代2 和 3,直到收斂,即質心不再變化;
二 二分k-均值聚類演算法
二分k-均值聚類演算法是基於經典k-均值演算法實現的;裡面呼叫經典k-均值(k=2),把一個聚簇分成兩個,迭代到分成k個停止;
具體思路:
1 把整個資料集看成一個聚簇,計算質心;並用同樣的資料結構二維陣列儲存每個例項到質心的距離;
2 對每一個聚簇進行2-均值聚類劃分;
3 計算劃分後的誤差,選擇所有被劃分的聚簇中總誤差最小的劃分儲存;
4 迭代2 和 3 直到聚簇數目達到k停止;
首先二分-K均值是為了解決k-均值的使用者自定義輸入簇值k所延伸出來的自己判斷k數目,其基本思路是:
為了得到k個簇,將所有點的集合分裂成兩個簇,從這些簇中選取一個繼續分裂,如此下去,直到產生k個簇。
虛擬碼:
初始化簇表,使之包含由所有的點組成的簇。 repeat 從簇表中取出一個簇。 {對選定的簇進行多次二分試驗} for i=1 to 試驗次數 do 使用基本k均值,二分選定的簇。 endfor 從二分試驗中選擇具有最小誤差的兩個簇。 將這兩個簇新增到簇表中。 until 簇表中包含k個簇比如要分成5個組,第一次分裂產生2個組,然後從這2個組中選一個目標函式產生的誤差比較大的,分裂這個組產生2個,這樣加上開始那1個就有3個組了,然後再從這3個組裡選一個分裂,產生4個組,重複此過程,產生5個組。這算是一中基本求精的思想。二分k均值不太受初始化的困擾,因為它執行了多次二分試驗並選取具有最小誤差的試驗結果,還因為每步只有兩個質心。
優缺點
基礎k-means優點:原理簡單,實現容易
缺點:
1.收斂太慢
2.演算法複雜度高O(nkt)
3.不能發現非凸形狀的簇,或大小差別很大的簇
4.需樣本存在均值(限定資料種類)
6.需先確定k的個數
7.對噪聲和離群點敏感
8.最重要是結果不一定是全域性最優,只能保證區域性最優。
相關推薦
k均值演算法,k-means演算法原理
一 經典的k-均值聚類 思路: 1 隨機建立k個質心(k必須指定,二維的很容易確定,視覺化資料分佈,直觀確定即可); 2 遍歷資料集的每個例項,計算其到每個質心的相似度,這裡也就是歐氏距離;把每個例項都分配到距離最近的質心的那一類,用一個二維陣列資料結構儲
java實現K-means演算法,k-means聚類演算法原理
/** * 需要所有point 以及族中心list * * @author:Yien * @when:2018年5月20日下午3:14:09 * @Description:TOD
模式識別導論大作業(k均值演算法,感知器演算法,fisher演算法,貝葉斯決策,特徵提取)
模式識別導論大作業 一、 K均值聚類 1. 功能描述: 利用K-均值演算法將150個模式樣本分成3類別。分別計算最後演算法所用的迭代次數,最終聚類中心以及每個類別中對應模式樣本的序號。 2. 帶註釋的原始碼 #include "st
C++實現的簡單k近鄰演算法(K-Nearest-Neighbour,K-NN)
</#include<map> #include<vector> #include<stdio.h> #include<cmath> #include<cstdlib> #include<algorithm> #include<
機器學習實戰:K-均值及二分K-均值聚類演算法
# coding=utf-8 ''' Created on Feb 16, 2011 k Means Clustering for Ch10 of Machine Learning in Action #@author: Peter Harrington ''' from
KNN演算法,k 鄰近(python)
1.原理 利用歐式距離計算各個特徵的相似度,歐式距離越小,相似度越大。 2.程式碼: from numpy import * import operator from os import listdir def kNNClassify(inX, da
聚類之K均值聚類和EM演算法
這篇部落格整理K均值聚類的內容,包括: 1、K均值聚類的原理; 2、初始類中心的選擇和類別數K的確定; 3、K均值聚類和EM演算法、高斯混合模型的關係。 一、K均值聚類的原理 K均值聚類(K-means)是一種基於中心的聚類演算法,通過迭代,將樣本分到K個類中,使得每個樣本與其所屬類
K近鄰(k-Nearest Neighbor,KNN)演算法,一種基於例項的學習方法
1. 基於例項的學習演算法 0x1:資料探勘的一些相關知識脈絡 本文是一篇介紹K近鄰資料探勘演算法的文章,而所謂資料探勘,就是討論如何在資料中尋找模式的一門學科。 其實人類的科學技術發展的歷史,就一直伴隨著資料探勘,人們一直在試圖中資料中尋找模式, 獵人在動物遷徙的行為中尋找模式 農夫在莊稼的生
貪心演算法,遞迴演算法,動態規劃演算法比較與總結
一般實際生活中我們遇到的演算法分為四類: 一>判定性問題 二>最優化問題 三>構造性問題 四>計算性問題 而今天所要總結的演算法就是著重解決 最優化問題 《演算法之道》對三種演算法進行了歸納總結,如下表所示: 分
西瓜書 課後習題5.5 標準bp演算法,累計bp演算法
import numpy as np def dataSet(): ''' 西瓜3.0資料集離散化 ''' X = np.mat('2,3,3,2,1,2,3,3,3,2,1,1,2,1,3,1,2;\ 1,1,1,1,1,2,2,2,2,
問題:求n以內的所有素數。要求給出自然語言描述的演算法,並且實現演算法。事先分析演算法的時間複雜度和空間複雜度。/*如果錯誤或相關改進的歡迎提出,謝謝!*/
/*2018.10.20上傳,該貼還有部分需要完善,比如2輸不出,還有許多可以優化的地方,未完,待更~~*/ #include <stdio.h> #include <math.h> #include <time.h> void pr
何為啟發式演算法——退火演算法,蟻群演算法,遺傳演算法
一、退火演算法 模擬退火演算法來源於固體退火原理,將固體加溫至充分高,再讓其徐徐冷卻,加溫時,固體內部粒子隨溫升變為無序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達到平衡態,最後在常溫時達到基態,內能減為最小。 模擬退火演算法新解的產生和接受
廣度優先演算法,深度優先演算法和DijKstra演算法
我們經常會碰到最短路徑問題,而最短路徑問題的解決方法多種多樣,廣度優先搜尋(BFS),深度優先搜尋(DFS)和DijKstra演算法貌似都能解決這個問題,這裡就簡單介紹一下這些演算法,分析一下它們的適用範圍。 一、原理剖析: 1 廣度優先搜尋(BFS)
Java資料結構:四種基本演算法(窮舉演算法,遞推演算法,分治演算法,概論演算法)
1,窮舉演算法 主要解決雞兔同籠類似問題 public class 窮舉演算法 { public static void main(String[] args) { int head = 35; int foot = 94; int j = 0; i
HMM前向演算法,維位元演算法,後向演算法,前向後向演算法程式碼
typedef struct { int N; /* 隱藏狀態數目;Q={1,2,…,N} */ int M; /* 觀察符號數目; V={1,2,…,M}*/ double **A; /* 狀態轉移矩陣A[1..N][1..N]. a[i][j] 是從t時刻狀態i到t+1
面試演算法之字串匹配演算法,Rabin-Karp演算法詳解
既然談論到字串相關演算法,那麼字串匹配是根本繞不過去的坎。在面試中,面試官可能會要你寫或談談字串的匹配演算法,也就是給定兩個字串,s 和 t, s是要查詢的字串,t是被查詢的文字,要求你給出一個演算法,找到s在t中第一次出現的位置,假定s為 acd, t為a
遺傳演算法,粒子群演算法,蟻群演算法對比
遺傳演算法適合求解離散問題,具備數學理論支援,但是存在著漢明懸崖等問題.粒子群演算法適合求解實數問題,演算法簡單,計算方便,求解速度快,但是存在著陷入區域性最優等問題.蟻群演算法適合在圖上搜索路徑問題,計算開銷會大.要將三種演算法進行混合,就要針對特定問題,然後融合其中的優勢
ANSI-X99MAC演算法和PBOC的3DES MAC演算法,附DES演算法工具
/************************************************** * PBOC-3DES MAC計算 **************************************************/
c模擬記憶體分配演算法(首次適應演算法,最佳適應演算法,最壞適應演算法)
#include<bits/stdc++.h> using namespace std; /*定義記憶體的大小為100*/ #define MEMSIZE 100 /*如果小於此值,將不再分割記憶體*/ #define MINSIZE 2 /*記憶體分割槽空間表結構*/ typedef str
Rocchio演算法,其他分類演算法通用閾值確定方法
通過對PR曲線的繪製,瞭解閾值設定對PR值影響的狀況,這裡假定P,R都是重要的,採用角平分線和該曲線的交點,交點處為PR值達到最佳的點,作為調和平均數F-measure,P,R均取高值,該指標才可能高。 下圖為公交分類過程中,閾值不同,描出的不同點,通過計算夾角餘玄設定為0。