関連情報

k-meansクラスタ分析

NAG Toolbox for MATLAB®用のサンプルコード

Keyword: k-means, クラスタ分析, cluster analysis, データマイニング

概要

本サンプルはk-meansクラスタリングを行うサンプルプログラムです。 本サンプルは以下の「分析対象データ」に示される変数が5個、観察数が20のデータを分析対象とします。 このサンプルではk-means法によりデータを3つのクラスタに分割します。 また k-means 法で必要な初期値も以下の「与える初期値」に示す通り与えます。 

k-meansクラスタ分析のデータ 

※本サンプルはNAG Toolbox for MATLAB®が提供する関数 g03ef() のExampleコードです。実行にはMATLAB®本体(他社製品)とNAG Toolbox for MATLAB®が必要です。
本サンプル及び関数の詳細情報は g03ef のマニュアルページをご参照ください。

入力データ


weight = 'u';
x = [77.3, 13, 9.7, 1.5, 6.4;
     82.5, 10, 7.5, 1.5, 6.5;
     66.9, 20.6, 12.5, 2.3, 7;
     47.2, 33.8, 19, 2.8, 5.8;
     65.3, 20.5, 14.2, 1.9, 6.9;
     83.3, 10, 6.7, 2.2, 7;
     81.6, 12.7, 5.7, 2.9, 6.7;
     47.8, 36.5, 15.7, 2.3, 7.2;
     48.6, 37.1, 14.3, 2.1, 7.2;
     61.6, 25.5, 12.9, 1.9, 7.3;
     58.6, 26.5, 14.9, 2.4, 6.7;
     69.3, 22.3, 8.4, 4, 7;
     61.8, 30.8, 7.4, 2.7, 6.4;
     67.7, 25.3, 7, 4.8, 7.3;
     57.2, 31.2, 11.6, 2.4, 6.5;
     67.2, 22.7, 10.1, 3.3, 6.2;
     59.2, 31.2, 9.6, 2.4, 6;
     80.2, 13.2, 6.6, 2, 5.8;
     82.2, 11.1, 6.7, 2.2, 7.2;
     69.7, 20.7, 9.6, 3.1, 5.9];
isx = [int32(1);1;1;1;1];
cmeans = [82.5, 10, 7.5, 1.5, 6.5;
     47.8, 36.5, 15.7, 2.3, 7.2;
     67.2, 22.7, 10.1, 3.3, 6.2];
wt = [0];
[cmeansOut, inc, nic, css, csw, ifail] = g03ef(weight, x, isx, cmeans, wt)

  • weight には重み付けをするかどうかを指定しています。 重みをつけない指定である U が指定されています。
  • x には観察データを与えています。各行はそれぞれの観察値であり、5つの値を持っています。
  • isx には計算で使う変数がどれであるかを指定しています。ここで 1 は計算で使う事を示しています。(0は計算で当該変数を使わないことを示します。ここで与える数字は変数の数分なければなりません。また指定される1の数が計算で使う変数の数と一致している必要があります) 今回のデータはすべての変数を計算で使うので5つの 1 が与えられています。
  • cmeans にはクラスタ中心の初期値を与えています。各行は各クラスタに対応し、5つの変数値が指定されています。
  • wt には重み付けをする場合は重みを指定しますが、この場合は重みをつけないのでこの値は参照されません。
  • 最後に本関数を呼び出す構文を指定しています。

出力結果


cmeansOut =
   81.1833   11.6667    7.1500    2.0500    6.6000
   47.8667   35.8000   16.3333    2.4000    6.7333
   64.0455   25.2091   10.7455    2.8364    6.6545
inc =
           1
           1
           3
           2
           3
           1
           1
           2
           2
           3
           3
           3
           3
           3
           3
           3
           3
           1
           1
           3
nic =
           6
           3
          11
css =
   46.5717
   20.3800
  468.8964
csw =
     6
     3
    11
ifail =
           0

  • cmeansOut は最終的に求まったクラスタ中心を示しています。 行方向がクラスタ、列方向が変数を表しています。
  • inc は各観察データがどのクラスタに属するかを示しています。 今回は3つのクラスタに分割していますので 1, 2, 3 のいずれかの数値が出力されています。 この出力では上から順番に
    観察データ1=第一クラスタ
    観察データ2=第一クラスタ
    観察データ3=第三クラスタ
    観察データ4=第二クラスタ

    であることを意味しています。
  • nic はそれぞれのクラスタにいくつのデータが含まれるかを示しています。 このサンプル出力では第一クラスタには6個、第二クラスタには3個、第三クラスタには11個のデータがそれぞれ含まれていることが示されています。
  • css はそれぞれのクラスタの二乗和を示しています。
  • csw はそれぞれのクラスタの重みの合計を示しています。 今回のサンプルデータでは重みづけを行わない設定 (つまり重みをすべて1.0として計算) ですのでデータの個数 x 1.0 が出力されています。
  • ifail は関数がエラーを検知しなければ"0"が出力されます。

Results matter. Trust NAG.

Privacy Policy | Trademarks