簡體   English   中英

R實現集群分析

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM