Main Content

データのクラスタリング

ライブ エディターでの k-means クラスタリングまたは階層的クラスタリングを使用したデータのクラスタリング

R2021b 以降

説明

[データのクラスタリング] ライブ エディター タスクでは、k-means クラスタリングまたは階層的クラスタリングを対話的に実行できます。このタスクにより、ライブ スクリプト用の MATLAB® コードが生成され、結果として得られるクラスター インデックスが MATLAB ワークスペースに返されます。k-means クラスタリングを実行する場合は、このタスクでクラスター重心位置も返されます。

次が可能です。

  • クラスターの数を手動で指定する。階層的クラスタリングの場合は、基になる階層クラスター ツリーのカットオフを指定できます。

  • ギャップ値、シルエット値、Davies-Bouldin インデックス値、Calinski-Harabasz インデックス値などの基準を指定して、データに最適なクラスター数を自動で決定する。

  • 使用する距離計量など、データをクラスタリングするためのパラメーターをカスタマイズする。

  • クラスタリングされたデータを自動的に可視化する。

ライブ エディター タスクの全般的な情報については、ライブ スクリプトへの対話型タスクの追加を参照してください。

Cluster Data task in the Live Editor

タスクを開く

[データのクラスタリング] タスクをライブ スクリプトに追加するには、次を実行します。

  • [ライブ エディター] タブで [タスク][データのクラスタリング] を選択します。

  • ライブ スクリプトのコード ブロックに、clusteringkmeanshierarchical などの関連するキーワードを入力します。推奨されたコマンド補完から、[データのクラスタリング] を選択します。

すべて展開する

この例では、[データのクラスタリング] タスクを使用して、指定した数のクラスターに k-means クラスタリングを対話的に実行する方法を示します。

標本データを読み込みます。このデータには、3 種のアヤメの花のがく片と花弁からの長さと幅の測定値が含まれています。

load fisheriris

[データのクラスタリング] タスクを開きます。タスクを開くには、まずコード ブロックにキーワード「clustering」を入力し、推奨されたコマンド補完から [データのクラスタリング] を選択します。

List of suggested command completions. The first suggestion in the list is for the Cluster Data task, and is selected.

タスクで [k-means クラスタリング] アルゴリズムを選択します。 (R2024a 以降)

2 つのクラスターにデータをクラスター化します。

  • 入力データとして変数 [meas] を選択します。

  • 必要に応じて、クラスター数を 2 に設定します。

  • [ライブ エディター] タブで、 [実行] ボタンをクリックしてタスクを実行します。

MATLAB により、クラスタリングされたデータおよびクラスター平均が散布図に表示されます。

Cluster Data task showing the selected parameters and the resulting scatter plot with the sample data divided into two clusters

クラスター数を 3 に増やして、タスクを再実行します。MATLAB により、更新済みのクラスタリングされたデータおよびクラスター平均が散布図に表示されます。

Cluster Data task showing the selected parameters and the resulting scatter plot with the sample data divided into three clusters

このタスクにより、ライブ スクリプトにコードが生成されます。生成されたコードは、選択したパラメーターおよびオプションを反映しており、散布図を生成するコードを含みます。生成コードを参照するには、タスク パラメーター エリアの下部にある [コードの表示] をクリックします。タスクが展開され、生成されたコードが表示されます。

Generated code for the Cluster Data task. The code uses the kmeans function to cluster the data and the scatter function to display the results.

既定では、生成されたコードは、MATLAB のワークスペースに返される出力変数の名前として、clusterIndices および centroids を使用します。clusterIndices ベクトルは、クラスター インデックスを含む数値列ベクトルです。clusterIndices の各行は、対応する観測値のクラスター割り当てを示します。centroids 行列は、クラスター重心位置を含む数値行列です。別の出力変数名を指定するには、タスクの上部の概要行に新しい名前を入力します。たとえば、2 つの変数名を c_indices および c_locations に変更します。

First row of the Cluster Data task with the renamed output c_indices and c_locations

タスクの実行時に生成コードが更新され、新しい変数名が反映されます。新しい変数 c_indices および c_locations が MATLAB のワークスペースに表示されます。

この例では、[データのクラスタリング] タスクを使用し、選択した基準に基づいてクラスタリング解を対話的に評価する方法を示します。

標本データを読み込みます。このデータには、3 種のアヤメの花のがく片と花弁からの長さと幅の測定値が含まれています。

load fisheriris

[データのクラスタリング] タスクを開きます。タスクを開くには、まずコード ブロックにキーワード「clustering」を入力し、推奨されたコマンド補完から [データのクラスタリング] を選択します。

List of suggested command completions. The first suggestion in the list is for the Cluster Data task, and is selected.

タスクで [k-means クラスタリング] アルゴリズムを選択します。 (R2024a 以降)

最適なクラスター数を評価します。

  • 入力データとして変数 [meas] を選択します。

  • クラスター数の選択方法を Optimal に設定します。

  • 範囲の最小値と最大値を 2 および 6 に設定します。

  • [ライブ エディター] タブで、 [実行] ボタンをクリックしてタスクを実行します。

Cluster Data task showing the selected parameters

MATLAB により、評価結果の棒グラフが表示され、Calinski-Harabasz 基準に基づく最適なクラスター数が 3 であることを示しています。散布図には、最適なクラスター数 3 を使用して、クラスタリングされたデータおよびクラスター平均が表示されます。結果は異なる場合があります。

Cluster Data task showing two plots. The first plot is a bar chart displaying the evaluation results for each cluster number, and the second plot is a scatter plot with the sample data divided into three clusters.

R2024a 以降

この例では、[データのクラスタリング] タスクを使用して、指定したクラスター ツリーのカットオフで階層的クラスタリングを対話的に実行する方法を示します。

標本データを読み込みます。このデータには、3 種のアヤメの花のがく片と花弁からの長さと幅の測定値が含まれています。

load fisheriris

[データのクラスタリング] タスクを開きます。タスクを開くには、まずコード ブロックにキーワード「clustering」を入力し、推奨されたコマンド補完から [データのクラスタリング] を選択します。

List of suggested command completions. The first suggestion in the list is for the Cluster Data task, and is selected.

タスクで [階層的クラスタリング] アルゴリズムを選択します。

既定のクラスター数を使用してデータをクラスタリングします。

  • 入力データとして変数 [meas] を選択します。

  • 必要に応じて、最大クラスター数を 2 に設定します。

  • [ライブ エディター] タブで、 [実行] ボタンをクリックしてタスクを実行します。

Cluster Data task showing the selected parameters

MATLAB により、クラスター ツリーが樹形図に表示され、クラスタリングされたデータが散布図に表示されます。

Cluster Data task showing the resulting plots with the sample data divided into two clusters

カットオフを使用してデータを 3 つのクラスターに分割し、タスクを再実行します。

  • クラスター数の選択方法を [Manual cutoff] に設定します。

  • しきい値を 1.8、クラスター基準を [Distance] に設定します。前の樹形図から、このカットオフ値によって階層クラスター ツリーが 3 つのクラスターに分割されることがわかります。

  • 樹形図に 3 つのクラスターが表示されるように、色のしきい値を 45 パーセントに設定します。

  • [ライブ エディター] タブで、 [実行] ボタンをクリックしてタスクを実行します。

Cluster Data task showing the selected parameters

MATLAB により、更新された樹形図と散布図が表示されます。

Cluster Data task showing the resulting plots with the sample data divided into three clusters

このタスクにより、ライブ スクリプトにコードが生成されます。生成されたコードは、選択したパラメーターおよびオプションを反映しており、散布図を生成するコードを含みます。生成コードを参照するには、タスク パラメーター エリアの下部にある [コードの表示] をクリックします。タスクが展開され、生成されたコードが表示されます。

Generated code for the Cluster Data task. The code uses the pdist, linkage, and cluster functions to cluster the data and the dendrogram function to display the results.

Generated code for the Cluster Data task. The code uses the gscatter function to display the results.

既定では、生成されたコードは、MATLAB ワークスペースに返される出力変数の名前として clusterIndices を使用します。clusterIndices ベクトルは、クラスター インデックスを含む数値列ベクトルです。clusterIndices の各行は、対応する観測値のクラスター割り当てを示します。別の出力変数名を指定するには、タスクの上部の概要行に新しい名前を入力します。たとえば、変数名を c_indices に変更します。

タスクの実行時に生成コードが更新され、新しい変数名が反映されます。新しい変数 c_indices が MATLAB ワークスペースに表示されます。

関連する例

パラメーター

すべて展開する

使用可能なワークスペース変数から変数を選択することにより、クラスタリングするデータを指定します。変数は、リストに表示されている数値行列でなければなりません。

データに最適なクラスター数を決定する方法を指定します。

k-means クラスタリングのオプション

  • 手動 (既定) — データをグループ化するクラスター数を手動で指定します。

  • 最適 — 関数 evalclusters を使用して、ギャップ値、シルエット値、Davies-Bouldin インデックス値、Calinski-Harabasz インデックス値などの基準に基づいて最適なクラスター数を求めます。

階層的クラスタリングのオプション

  • 手動のクラスター数 (既定) — データをグループ化する最大クラスター数を手動で指定します。

  • 手動カットオフ — 階層クラスター ツリーを打ち切り、データをグループ化するクラスター数を判定するためのしきい値を手動で指定します。[不整合] 基準を使用すると、サブクラスターの不整合係数がしきい値未満であるクラスターが [データのクラスタリング] タスクでグループ化されます。[距離] 基準を使用すると、サブクラスターの高さがしきい値未満であるクラスターが [データのクラスタリング] タスクでグループ化されます。

  • 最適なクラスター数 — 関数 evalclusters を使用して、ギャップ値、シルエット値、Davies-Bouldin インデックス値、Calinski-Harabasz インデックス値などの基準に基づいて最適なクラスター数を求めます。

評価するクラスター数のリストを、最小値と最大値から成る範囲として指定します。たとえば、最小値 2 および最大値 6 を指定した場合、クラスター数 2、3、4、5、6 を評価して、最適な数を決定します。

k-means クラスタリングの既定の範囲は 2:5 です。階層的クラスタリングの既定の範囲は 2:3 です。

クラスタリングされたデータを表示するには、以下の利用可能なオプションから選択します。

k-means クラスタリングのオプション

  • クラスタリングされたデータの主成分を 2D 散布図に表示するには、[2D 散布図 (PCA)] を選択します。[データのクラスタリング] タスクは、関数 pca および gscatter を使用して散布図を作成します。

  • 散布図の行列にクラスタリングされたデータを表示するには、[散布図の行列] を選択します。[散布図の行列] を選択すると、リストがチェック ボックスの右側に表示されます。リストの各項目は、指定された入力データの列を表します。Ctrl キーを押して、リストから最大 4 つの入力データ列を選択します。[データのクラスタリング] タスクは、関数 gplotmatrix を使用して、選択された列から散布図の行列を作成します。

    行列中の散布図は、選択した入力データ列をクラスター インデックス全体で比較しています。行列の対角線上の図は、選択した列の分布を各クラスター インデックスに対して表しているヒストグラムです。

どちらのプロットについても、クラスタリングされたデータとクラスター平均を表示するかどうかを選択できます。

階層的クラスタリングのオプション

  • 階層クラスター ツリーを表示するには、[樹形図] を選択します。[樹形図] を選択すると、3 つのパラメーターがチェック ボックスの右に表示されます。1 つ目のパラメーターは、色のしきい値をツリーにおける最大 (リンク) 距離の割合として指定します。2 つ目のパラメーターは、ツリーに表示するリーフ ノードの最大数を制御します。3 つ目のパラメーターは、ツリーの向きを [上][下][左]、または [右] に変更します。[データのクラスタリング] タスクは、関数 dendrogram を使用してプロットを作成します。樹形図は、[最適なクラスター数] 選択方法を使用する場合は利用できません。

  • クラスタリングされたデータを 2D 散布図に表示するには、[2D 散布図] を選択します。[2D 散布図] を選択すると、2 つのリストがチェック ボックスの右に表示されます。リストの項目は、指定された入力データの列を表します。1 つ目のリストでプロットの x 軸の変数を指定し、2 つ目のリストで y 軸の変数を指定します。[データのクラスタリング] タスクは、関数 gscatter を使用して散布図を作成します。

  • [2D 散布図] を選択する代わりに [3D 散布図] を選択すると、クラスタリングされたデータを 3D 散布図に表示できます。[3D 散布図] を選択すると、3 つのリストがチェック ボックスの右に表示されます。これらのリストで x 軸、y 軸、z 軸の各変数を指定します。[データのクラスタリング] タスクは、関数 scatter3 を使用して散布図を作成します。

  • 散布図の行列にクラスタリングされたデータを表示するには、[散布図の行列] を選択します。[散布図の行列] を選択すると、リストがチェック ボックスの右側に表示されます。リストの各項目は、指定された入力データの列を表します。Ctrl キーを押して、リストから最大 4 つの入力データ列を選択します。[データのクラスタリング] タスクは、関数 gplotmatrix を使用して、選択された列から散布図の行列を作成します。

ヒント

  • 既定では、[データのクラスタリング] タスクでは、タスク パラメーターを変更しても自動的には実行されません。変更後にタスクを自動的に実行させるには、タスクの右上にある [自動実行] ボックスを選択します。データ セットが大きい場合は、このオプションを有効にしないでください。

バージョン履歴

R2021b で導入

すべて展開する