当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R fanny 模糊分析聚类


R语言 fanny 位于 cluster 包(package)。

说明

将数据的模糊聚类计算为 k 聚类。

用法

fanny(x, k, diss = inherits(x, "dist"), memb.exp = 2,
      metric = c("euclidean", "manhattan", "SqEuclidean"),
      stand = FALSE, iniMem.p = NULL, cluster.only = FALSE,
      keep.diss = !diss && !cluster.only && n < 100,
      keep.data = !diss && !cluster.only,
      maxit = 500, tol = 1e-15, trace.lev = 0)

参数

x

数据矩阵或 DataFrame ,或相异矩阵,具体取决于 diss 参数的值。

对于矩阵或 DataFrame ,每行对应一个观察值,每列对应一个变量。所有变量都必须是数字。允许缺失值 (NA)。

在相异矩阵的情况下, x 通常是 daisydist 的输出。长度为 n*(n-1)/2 的向量也是允许的(其中 n 是观测值的数量),并且将以与上述函数的输出相同的方式进行解释。不允许存在缺失值 (NA)。

k

给出所需簇数的整数。需要 ,其中 是观测值数量。

diss

逻辑标志:如果为 TRUE(distdissimilarity 对象的默认值),则假定 x 是相异矩阵。如果为 FALSE,则 x 被视为变量观察值矩阵。

memb.exp

number 严格大于 1,指定拟合标准中使用的隶属指数;请参阅下面的“详细信息”。默认值:2,以前是在 FANNY 内部硬连线的。

metric

字符串,指定用于计算观测值之间差异的度量。选项有"euclidean"(默认),"manhattan", 和"SqEuclidean"。欧几里德距离是差值的平方根,曼哈顿距离是绝对差值之和,并且"SqEuclidean", 这平方欧氏距离是差值的平方和。使用最后一个选项相当于(但速度稍慢)计算所谓的“模糊C-means”。
如果x已经是相异矩阵,那么这个参数将被忽略。

stand

逻辑性;如果为真,则在计算差异之前对 x 中的测量值进行标准化。通过减去变量的平均值并除以变量的平均绝对偏差,对每个变量(列)的测量值进行标准化。如果x已经是相异矩阵,则该参数将被忽略。

iniMem.p

数值 矩阵或NULL(默认);可用于指定起始membership矩阵,即非负数矩阵,每行总和为一。

cluster.only

逻辑性;如果为 true,则不会计算并返回任何轮廓信息,请参阅详细信息。

keep.diss , keep.data

逻辑指示是否应将差异和/或输入数据x保留在结果中。将它们设置为 FALSE 可以得到更小的结果,因此也可以节省内存分配时间。

maxit , tol

FANNY 算法的最大迭代次数和默认收敛容差(拟合标准的相对收敛)。默认值 maxit = 500tol = 1e-15 过去是在算法内部硬连线的。

trace.lev

指定 C-internal 算法期间打印诊断的跟踪级别的整数。默认 0 不打印任何内容;值越高,打印的内容就越多。

细节

在模糊聚类中,每个观察值都是各个聚类上的“spread out”。用 表示观察 到聚类 的成员资格。

隶属度是非负的,对于固定观察 i,它们的总和为 1。特定方法 fanny 源自 Kaufman 和 Rousseeuw (1990) 的第 4 章(请参阅 daisy 中的参考文献),并已由 Martin Maechler 扩展为允许用户指定 memb.expiniMem.pmaxittol 等。

Fanny 的目标是最小化目标函数

其中 是观测值的数量, 是簇的数量, 是隶属度指数memb.exp 是观察值之间的差异 .
注意 给出越来越清晰的聚类,而 导致完全模糊。 K&R;(1990), p.191 指出,值太接近 1 会导致收敛缓慢。进一步注意,即使是默认值, 可能导致完全模糊,即隶属度 。在这种情况下,会发出警告信号,建议用户选择较小的memb.exp( )。

与其他模糊聚类方法相比,fanny 具有以下特点: (a) 它还接受相异矩阵; (b) 它对 spherical cluster 假设更加稳健; (c) 它提供了一种新颖的图形显示,即轮廓图(参见plot.partition)。

代表聚类的 "fanny" 类的对象。有关详细信息,请参阅fanny.object

例子

## generate 10+15 objects in two clusters, plus 3 objects lying
## between those clusters.
x <- rbind(cbind(rnorm(10, 0, 0.5), rnorm(10, 0, 0.5)),
           cbind(rnorm(15, 5, 0.5), rnorm(15, 5, 0.5)),
           cbind(rnorm( 3,3.2,0.5), rnorm( 3,3.2,0.5)))
fannyx <- fanny(x, 2)
## Note that observations 26:28 are "fuzzy" (closer to # 2):
fannyx
summary(fannyx)
plot(fannyx)

(fan.x.15 <- fanny(x, 2, memb.exp = 1.5)) # 'crispier' for obs. 26:28
(fanny(x, 2, memb.exp = 3))               # more fuzzy in general

data(ruspini)
f4 <- fanny(ruspini, 4)
stopifnot(rle(f4$clustering)$lengths == c(20,23,17,15))
plot(f4, which = 1)
## Plot similar to Figure 6 in Stryuf et al (1996)
plot(fanny(ruspini, 5))

也可以看看

agnes 用于背景和参考; fanny.objectpartition.objectplot.partitiondaisydist

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Fuzzy Analysis Clustering。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。