计算距离

  • 欧几里得距离

聚类分析的第一步都是度量样本单元间的距离、相异性或类似性,两个观测值之间的欧几里得距离函数

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