SAS 聚類分析 K 均值聚類

2021-10-07 18:29:34 字數 1473 閱讀 1898

k-均值方法,有時也叫勞埃德方法或 lioyd-forgy 方法。

k-均值聚類的核心思想是 為指定劃分數目的最佳劃分。

對於 n 個觀測,每個觀測是 m 維的實數向量,現在需要找到 k 個聚類 (其中 k <= n,即 n 個子集),使得每個類別分組內的方差最小化。

1.隨機選取 k 個真實/或虛擬的資料點作為初始質心(即 選擇 k 個樣品作為初始凝聚點,或者將所有樣品分成 k 個初始類,然後將這 k 個類的重心(均值)作為初始凝聚點)。初始質心的選擇對聚類結果具有重要影響,因此如何科學選擇這些初始質心很重要,一般選擇彼此盡可能遠的若干樣本。

2.分配類別階段:對所有的樣品逐個歸類,將每個樣品歸入凝聚點離這個樣品最近的那個類(通常採用歐氏距離)。例如:計算第乙個樣品分別到第 k 個類(均值)的歐式距離,將第乙個樣品歸到歐氏距離小的那乙個類,如果第乙個樣品在歸類之前就已經在這個類當中,就不需要重新分配(移動)。

3.更新質心階段:通過第2步的歸類步驟,有乙個新的樣品歸入了那個類,所以要重新計算這 k 個類別的均值,這 k 類的凝聚點更新為這一類目前的均值,直至所有樣品都歸了類。例如:計算第二個樣品到新的 k 個類的均值的距離,將第二個樣品歸類到距離小的那個類中去。

4.重複步驟2和步驟3,直至所有的樣品都不能再分配為止。

libname txy "d:\sasljk"

;run;

proc standand data=txy.exec65 mean=0 std=1 out=stan;

proc fastclus data=stan maxc=5 drift list;

var x1-x8;

id nation;

run;

程式說明:

① 「proc standard」是乙個標準化過程,將sas資料集中的指定變數按給定的均值和標準差進行標準化變換;

② 選項「mean=0 std=1」規定按均值為 0 、標準差為 1 進行標準化變換;

③ 選項「out = stan」要求生成乙個包含標準化值的新資料集,並命名為 stan 。

注意:這裡 stan 資料集名前面沒有加邏輯庫名,所以是預設儲存在 work 臨時邏輯庫裡面的。

④「proc fastclus」是乙個動態聚類過程(或快速聚類過程)

⑤「maxc=5」』指定所允許的最大分類個數為 5

⑥選項「drift」表明使用 k 均值法

⑦選項「list」要求列出各觀測所聚的類別

注:proc fastclus 的系統耗時與樣本量 n 成正比,因此它是一種快速聚類方法,可用於處理較大規模的資料集。實踐中一般將它用於較大規模資料的預先處理形成分割槽,然後使用 proc cluster 再次聚類。

但對於小資料量的資料,聚類結果可能因初始凝聚點的選擇而對樣本出現順序敏感。而且由於 k-均值方法受數值較大的變數影響更大,通常需要對樣本資料先做標準化處理。

sas輸出結果:

K 均值聚類

剛剛寫了篇分級聚類的,趁著餘熱,再寫一下關於k 均值聚類的。為了突出k 均值聚類的特點,先黑一下分級聚類。跟k 均值聚模擬起來,分級聚類演算法有一下缺點 第一,的那個沒有額外投入的時候,樹形試圖是不會真正將資料拆分成不同組的。第二,分級聚類的計算演算法計算量相當大。當兩個節點合併之後,節點之間的距離...

k均值聚類

k均值聚類就是利用歐氏距離的度量將距離相近的樣本分為k類 a.假設有m個樣本,首先隨機選擇k個樣本作為聚類的質心 要分成k類 b.然後對於每個樣本,計算它到每個質心的距離,將它歸類於距離最小的那個質心 c.接著對初步分類的k個類別重新計算該類的質心,也就是對每個類別的樣本座標求平均 d.重複 b 步...

k均值聚類演算法

輸入 簇的數目k和包含n個物件的資料庫。輸出 k個簇,使平方誤差準則最小。演算法步驟 1.為每個聚類確定乙個初始聚類中心,這樣就有k 個初始聚類中心。2.將樣本集中的樣本按照最小距離原則分配到最鄰近聚類 3.使用每個聚類中的樣本均值作為新的聚類中心。4.重複步驟2.3直到聚類中心不再變化。5.結束,...