R Language                
            hclustによる階層的クラスタリング
        
        
            
    サーチ…
前書き
 statsパッケージはhclust関数を提供し、階層的クラスタリングを実行します。 
備考
hclust以外にも、他の方法もあります。「 クラスタリングのCRANパッケージの表示」を参照してください。
例1 - hclustの基本的な使い方、デンドログラムの表示、プロットクラスタ
クラスタライブラリにはruspiniデータが含まれています。これはクラスタ分析を説明するための標準データセットです。
    library(cluster)                ## to get the ruspini data
    plot(ruspini, asp=1, pch=20)    ## take a look at the data
hclustは元のデータではなく、距離行列を求めます。デフォルトのパラメータを使用してツリーを計算して表示します。ハングパラメータは、ベースラインに沿ってツリーのすべての葉を並べます。
    ruspini_hc_defaults <- hclust(dist(ruspini))
    dend <- as.dendrogram(ruspini_hc_defaults)
    if(!require(dendextend)) install.packages("dendextend"); library(dendextend)
    dend <- color_branches(dend, k = 4) 
    plot(dend)
ツリーをカットして4つのクラスターを与え、クラスターごとに点を塗りつぶすデータを置き換えます。 kは所望のクラスタ数である。
    rhc_def_4 = cutree(ruspini_hc_defaults,k=4)
    plot(ruspini, pch=20, asp=1, col=rhc_def_4)
このクラスタリングはちょっと奇妙です。データを先にスケーリングすることで、より良いクラスタリングを得ることができます。
    scaled_ruspini_hc_defaults = hclust(dist(scale(ruspini)))
    srhc_def_4 = cutree(scaled_ruspini_hc_defaults,4)
    plot(ruspini, pch=20, asp=1, col=srhc_def_4)
クラスタを比較するためのデフォルトの相違度の尺度は「完全」です。 methodパラメータで別のメジャーを指定できます。
    ruspini_hc_single = hclust(dist(ruspini), method="single")
例2 - hclustと外れ値
階層的クラスタリングでは、外れ値は1点クラスターとして表示されることがよくあります。
異常値の影響を説明するために、3つのガウス分布を生成します。
    set.seed(656)
    x = c(rnorm(150, 0, 1), rnorm(150,9,1), rnorm(150,4.5,1))
    y = c(rnorm(150, 0, 1), rnorm(150,0,1), rnorm(150,5,1))
    XYdf = data.frame(x,y)
    plot(XYdf, pch=20)
クラスタ構造を構築し、3つのクラスタに分割します。
    XY_sing = hclust(dist(XYdf), method="single")
    XYs3 = cutree(XY_sing,k=3)
    table(XYs3)
    XYs3
      1   2   3 
    448   1   1 
hclustは2つの異常値を見つけ出し、すべてを他の大きなクラスターに入れました。 「本当の」クラスターを得るには、kを高く設定する必要があります。
    XYs6 = cutree(XY_sing,k=6)
    table(XYs6)
    XYs6
      1   2   3   4   5   6 
    148 150   1 149   1   1 
    plot(XYdf, pch=20, col=XYs6)
このStackOverflowポストには、クラスタの数を選択する方法についてのガイダンスがありますが、階層的クラスタリングではこの動作に注意してください。
Modified text is an extract of the original Stack Overflow Documentation
        ライセンスを受けた CC BY-SA 3.0
        所属していない Stack Overflow
    




