計算距離

  • 歐幾里得距離

聚類分析的第一步都是度量樣本單元間的距離、相異性或類似性,兩個觀測值之間的歐幾里得距離函數

i、j:表明第 i 和第 j 個觀測值,flex

p:變量的個數spa

  • dist()

R中自帶dist()函數計算矩陣或數據框中全部行(觀測值)之間的距離,格式爲code

dist(x,method=)

x:表示輸入數據ci

method:默認爲歐幾里得距離it

dist()函數默認返回一個下三角矩陣,可是 as.matrix()函數能夠使用標準括號符號獲得距離變量

#flexclust包中的養分數據集
#
> data(nutrient, package = "flexclust") #從包中導入數據的方法
> head(nutrient,4) #獲取前4行
             energy protein fat calcium iron   #energy數值的變化很大,須要對數據進行縮放
BEEF BRAISED    340      20  28       9  2.6
HAMBURGER       245      21  17       9  2.7
BEEF ROAST      420      15  39       7  2.0
BEEF STEAK      375      19  32       9  2.6

d <- dist(nutrient)
> as.matrix(d)[1:4,1:4]
             BEEF BRAISED HAMBURGER BEEF ROAST BEEF STEAK
BEEF BRAISED      0.00000   95.6400   80.93429   35.24202  #觀測值之間的距離越大,異質性就越大
HAMBURGER        95.64000    0.0000  176.49218  130.87784
BEEF ROAST       80.93429  176.4922    0.00000   45.76418
BEEF STEAK       35.24202  130.8778   45.76418    0.00000
  • 混合數據類型的聚類分析

歐幾里得距離一般做爲 連續型數據的距離度量,但若是存在其餘類型的數據,則須要相異的替代措施。數據類型

能夠使用cluster包中的daisy()函數來得到包含任意二元(binary)、名義(nomial)、有序(ordinal)、連續(continuous)屬性組合的相異矩陣。方法

cluster包中的其餘函數能夠使用這些異質性進行聚類分析。例如 agnes()函數提供了層次聚類,pam()函數提供了圍繞中心點的劃分的辦法。im

相關文章
相關標籤/搜索