一、定義:將物理或抽象對象的集合分成由類似的對象組成的多個類的過程被稱為聚類
二、距離:歐幾里得度量(euclidean metric)也稱歐氏距離
絕對值距離(manhattan)
Lance距離(canberra)
定性變量距離(binary)
閔可夫斯基距離(minkowski)
三、使用函數dist()求點之間的距離,可以設置不同的方法,這里設置的是歐式距離,其操作對象是數據框,結果是得到一個距離矩陣
四、聚類
1.使用的方法:
最短距離法-------single
最長距離法-------complete
中間距離法-------median
類平均法---------average
重心法-----------centroid
離差平方和法-------ward
Mcquitty相似法--------maquitty
2.對數據對聚類之前一般要對數據進行處理,這里說的處理是對數據做中心化、標准化變換,使用函數scale()
數據的中心化和標准化:
數據中心化:是指數據集中的各項數據減去數據集的均值
數據標准化:是指在中心化之后在除以數據集的標准差,即數據集中的各項數據減去數據集的均值再除以數據集的標准差
mean()是求平均值,sd()是求標准差
在R中實現數據標准化和中心化可以使用函數scale(),第一個參數是操作的對象,第二個參數是進行中心化,當為TRUE時,第三個參數是進行標准化,當為TRUE時
3.進行聚類操作使用的函數時hclust(),第一個參數時操作對象,即上述使用函數dist()求出的距離矩陣,第二個參數時設置使用的方法,比如最短距離法(single)、最長距離法(complete)等,聚類的結果是展示出它的譜系圖
函數plot()是繪制圖形的,針對不同的數據類型繪制不同類型的圖,暫時先不介紹
步驟:
1)給出數據,一般這個過程會做數據的中心化和標准化轉變
2)計算出x的距離矩陣
3)進行聚類
結果分析:從譜系圖明顯可以看到,1和1先聚為一類,然后3和4再聚,后來5和3、4聚,最后聚一起
問題:聚類可以聚多少類?
一般是使用rect.hculse()函數進行人為指定,所說的人為指定,是大概肉眼能判斷出聚為幾類,這一點不如其他的軟件,這里設置k=2,即聚為兩類,這里的紅色線是分類線
五、聚類的譜系圖:使用函數as.dendrogram(),可以通過設置參數,從而得到不同類型的譜系圖
第一種:
第二種:
第三種:
edgePar 繪圖參數的列表,用於邊緣段和標簽,
dege.root =T/F 邏輯值,如果是真的,就畫一條邊到根節點。
第四種:
nodepar 用於節點的繪圖參數列表(見點)或默認為NULL,不在節點上繪制符號
horiz=T/F 表示樹狀圖是否應該被水平繪制的邏輯