聚类分析的第一步都是度量样本单元间的距离、相异性或类似性,两个观测值之间的欧几里得距离函数
i、j:表明第 i 和第 j 个观测值,flex
p:变量的个数spa
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