當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。