[英]R implementation cluster analysis
我正在實施一些用於聚類分析的算法,尤其是聚類驗證。 交叉驗證,外部索引,內部索引,相對索引等方法很少。 我正在嘗試實現一種在內部索引下的算法。
內部索引-基於數據的固有內容。 它用於在不考慮外部信息的情況下測量聚類結構的優劣。 我的興趣是輪廓系數
s(i) = b(i) - a(i) / max{a(i), b(i)}
為了更加清楚,假設我具有以下多模型分布:
library(mixtools)
wait = faithful$waiting
mixmdl = normalmixEM(wait)
plot(mixmdl,which=2)
lines(density(wait), lty=2, lwd=2)
我們看到有兩個簇,截止標記在68附近。這里沒有標簽數據,因此沒有進行交叉驗證的依據(無監督)。 因此,我們需要一種評估聚類的機制。 在這種情況下,我們從可視化中知道有兩個聚類,但是如何清除表明兩個分布實際上屬於聚類。 根據我在Wikipedia Silhouette上獲得的紅色,我們可以進行驗證。
我想實現一個方法(實現Silhouette),以便在我的示例中獲取值的ar列表,其等待時間,本例中的簇數2以及作為模型的模型並返回平均值s(i)。
我已經開始,但無法真正弄清楚如何前進
Silhouette = function(rList, num_clusters, model) {
}
我的清單摘要如下所示:
Length Class Mode
clust_A 416014 -none- numeric
clust_B 72737 -none- numeric
clust_C 6078 -none- numeric
myList$clust_A
將返回屬於該集群的點
[1] 13 880 497 1864 392 55 1130 248 437 37 62 153 60 117
[15] 22 106 71 1026 446 1558 23 56 287 402 46 1506 115 2700
[29] 67 134 48 536 41 506 1098 33 30 280 225 16 25 17
[43] 63 1762 477 174 98 76 157 698 47 312 40 3 198 621
[57] 15 34 226 657 48 110 23 250 14 32 137 272 26 257
[71] 270 133 1734 78 134 8 5 225 187 166 35 15 94 2825
[85] 2 8 94 89 54 91 77 17 106 1397 16 25 16 103
問題是我不認為現有的庫接受這種類型的數據結構。
Silhouette假定所有聚類具有相同的方差。
恕我直言,將此措施與EM群集結合使用是沒有意義的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.