evalclusters
クラスタリングの解の評価
説明
例
Calinski-Harabasz 基準によるクラスタリングの解の評価
Calinski-Harabasz クラスタリング評価基準を使用して最適なクラスター数を評価します。
標本データを読み込みます。
load fisheriris
このデータには、3 種のアヤメの花のがく片と花弁からの長さと幅の測定値が含まれています。
Calinski-Harabasz 基準を使用して最適なクラスター数を評価します。データのクラスタリングには kmeans
を使用します。
rng('default') % For reproducibility eva = evalclusters(meas,'kmeans','CalinskiHarabasz','KList',1:6)
eva = CalinskiHarabaszEvaluation with properties: NumObservations: 150 InspectedK: [1 2 3 4 5 6] CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068] OptimalK: 3
OptimalK
の値は、Calinski-Harabasz 基準に基づく最適なクラスター数が 3 つであることを示しています。
クラスタリングの解の行列の評価
推奨されるクラスタリングの解の入力行列を使用して、最適なクラスター数を評価します。
標本データを読み込みます。
load fisheriris;
このデータには、3 種のアヤメの花のがく片と花弁からの長さと幅の測定値が含まれています。
kmeans
を使用し、クラスター数を 1、2、3、4、5、6 にして、がく片の長さの測定値に対する推奨されるクラスタリングの解の入力行列を作成します。
clust = zeros(size(meas,1),6); for i=1:6 clust(:,i) = kmeans(meas,i,'emptyaction','singleton',... 'replicate',5); end
clust
の各行は、1 つのがく片の長さの測定値に対応します。6 つの各列は、1 ~ 6 クラスターを含むクラスタリングの解に対応します。
Calinski-Harabasz 基準を使用して最適なクラスター数を評価します。
eva = evalclusters(meas,clust,'CalinskiHarabasz')
eva = CalinskiHarabaszEvaluation with properties: NumObservations: 150 InspectedK: [1 2 3 4 5 6] CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068] OptimalK: 3
OptimalK
の値は、Calinski-Harabasz 基準に基づく最適なクラスター数が 3 つであることを示しています。
関数ハンドルを使用したクラスタリング アルゴリズムの指定
関数ハンドルを使用してクラスタリング アルゴリズムを指定してから、最適なクラスター数を評価します。
標本データを読み込みます。
load fisheriris;
このデータには、3 種のアヤメの花のがく片と花弁からの長さと幅の測定値が含まれています。
関数ハンドルを使用してクラスタリング アルゴリズムを指定します。
myfunc = @(X,K)(kmeans(X, K, 'emptyaction','singleton',... 'replicate',5));
Calinski-Harabasz 基準を使用してがく片の長さのデータに対する最適なクラスター数を評価します。
eva = evalclusters(meas,myfunc,'CalinskiHarabasz',... 'klist',[1:6])
eva = CalinskiHarabaszEvaluation with properties: NumObservations: 150 InspectedK: [1 2 3 4 5 6] CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068] OptimalK: 3
OptimalK
の値は、Calinski-Harabasz 基準に基づく最適なクラスター数が 3 つであることを示しています。
入力引数
x
— 入力データ
行列
N 行 P 列の行列として指定される入力データ。N は観測値の数、P は変数の数です。
データ型: single
| double
clust
— クラスタリング アルゴリズム
'kmeans'
| 'linkage'
| 'gmdistribution'
| クラスタリングの解の行列 | 関数ハンドル
クラスタリング アルゴリズム。次のいずれかとして指定します。
'kmeans' | x のデータを kmeans クラスタリング アルゴリズムを使用してクラスタリングします。'EmptyAction' は 'singleton' 、'Replicates' は 5 に設定されます。 |
'linkage' | x のデータを clusterdata 凝集型クラスタリング アルゴリズムを使用してクラスタリングします。'Linkage' は 'ward' に設定されます。 |
'gmdistribution' | x のデータを gmdistribution 混合ガウス分布アルゴリズムを使用してクラスタリングします。'SharedCov' は true 、'Replicates' は 5 に設定されます。 |
criterion
が 'CalinskiHarabasz'
、'DaviesBouldin'
または 'silhouette'
の場合、関数ハンドルを使用してクラスタリング アルゴリズムを指定できます。この関数は C = clustfun(DATA,K)
(DATA
はクラスタリングするデータ、K
はクラスター数) という形式でなければなりません。clustfun
の出力は、次のいずれかでなければなりません。
DATA
の各観測値のクラスター インデックスを表す整数のベクトル。このベクトルにはK
個の一意の値がなければなりません。n 個の観測値と K 個のクラスのスコアから成る n 行 K 列の数値行列。この場合、各観測値のクラスター インデックスは各行の最大スコアの値に基づいて決定されます。
criterion
が 'CalinskiHarabasz'
、'DaviesBouldin'
または 'silhouette'
の場合は、clust
を推奨されるクラスタリングの解を含む n 行 K 列の行列として指定することもできます。n は標本データの観測値の数、K は推奨されるクラスタリングの解の数です。列 j に、j 番目のクラスタリングの解として、N 個の各点に対するクラスター インデックスが格納されます。
データ型: single
| double
| char
| string
| function_handle
criterion
— クラスタリング評価基準
'CalinskiHarabasz'
| 'DaviesBouldin'
| 'gap'
| 'silhouette'
クラスタリング評価基準。次のいずれかとして指定します。
'CalinskiHarabasz' | Calinski-Harabasz インデックス値を含む CalinskiHarabaszEvaluation クラスタリング評価オブジェクトを作成します。詳細は、Calinski-Harabasz 基準を参照してください。 |
'DaviesBouldin' | Davies-Bouldin インデックス値を含む DaviesBouldinEvaluation クラスター評価オブジェクトを作成します。詳細は、Davies-Bouldin 基準を参照してください。 |
'gap' | ギャップ基準値を含む GapEvaluation クラスター評価オブジェクトを作成します。詳細は、ギャップ値を参照してください。 |
'silhouette' | シルエット値を含む SilhouetteEvaluation クラスター評価オブジェクトを作成します。詳細は、シルエット値とシルエット基準を参照してください。 |
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: 'KList',[1:5],'Distance','cityblock'
は、市街地距離計量を使用して、1、2、3、4 および 5 つのクラスターを検定するよう指定します。
Distance
— 距離計量
'sqEuclidean'
(既定値) | 'Euclidean'
| 'cityblock'
| ベクトル | 関数 | ...
基準値の計算に使用する距離計量。'Distance'
と以下のいずれかで構成されるコンマ区切りのペアとして指定します。
'sqEuclidean' | 2 乗ユークリッド距離 |
'Euclidean' | ユークリッド距離。このオプションは、kmeans のクラスタリング アルゴリズムには使用できません。 |
'cityblock' | 差の絶対値の総和 |
'cosine' | 1 から、ベクトルとして扱われる点の間の夾角の余弦を引いた値 |
'correlation' | 1 から、値の系列として扱われる点の間の標本相関を引いた値 |
'Hamming' | 一致しない座標の比率。このオプションは、Silhouette 基準の場合のみ有効です。 |
'Jaccard' | ゼロ以外の一致しない座標の比率。このオプションは、Silhouette 基準の場合のみ有効です。 |
それぞれの距離計量の詳細は、関数 pdist
を参照してください。
関数ハンドルを使用して距離計量の関数を指定することもできます。距離関数の形式は d2 = distfun(XI,XJ)
でなければなりません。ここで、XI
は入力行列 X
の 1 つの行に対応する 1 行 n 列のベクトル、XJ
は X
の複数の行に対応する m2 行 n 列の行列です。distfun
は距離 d2
が含まれている m2 行 1 列のベクトルを返さなければなりません。このベクトルの k 番目の要素は XI
と XJ(k,:)
の間の距離です。
クラスタリング アルゴリズム clust
が距離計量として関数ハンドルを受け入れる場合のみ、Distance
は関数ハンドルを受け入れます。たとえば、kmeans
クラスタリング アルゴリズムは距離計量として関数ハンドルを受け入れません。したがって、kmeans
アルゴリズムを使用して Distance
の関数ハンドルを指定すると、エラーが発生します。
criterion
が'silhouette'
である場合、関数pdist
で作成される出力ベクトルとしてDistance
を指定することもできます。clust
が'kmeans'
または'gmdistribution'
である場合、evalclusters
はDistance
について指定された距離計量を使用してデータをクラスター化します。clust
が'linkage'
であり、Distance
が'sqEuclidean'
または'Euclidean'
である場合、ユークリッド距離とウォード連結法がクラスタリング アルゴリズムで使用されます。clust
が'linkage'
で、Distance
が他のいずれかの計量の場合は、指定した距離計量と平均連結法がクラスタリング アルゴリズムで使用されます。それ以外の場合はいずれも、
Distance
に指定した距離計量とクラスタリング アルゴリズムで使用される距離計量が一致していないと有意な結果が得られません。
例: 'Distance','Euclidean'
データ型: single
| double
| char
| string
| function_handle
ClusterPriors
— 各クラスターの事前確率
'empirical'
(既定値) | 'equal'
各クラスターの事前確率。'ClusterPriors'
と、以下のいずれかで構成されるコンマ区切りのペアとして指定します。
'empirical' | すべてのポイントのシルエット値を平均化することによって、クラスタリングの解の全体的なシルエット値を計算します。各クラスターは、サイズに比例して全体的なシルエット値に寄与します。 |
'equal' | 各クラスター内のすべてのポイントのシルエット値を平均化し、次にこれらの値をすべてのクラスターについて平均化することによって、クラスタリングの解の全体的なシルエット値を計算します。各クラスターは、サイズに関係なく、全体的なシルエット値に均等に寄与します。 |
例: 'ClusterPriors','empirical'
B
— 参照データ セットの数
100
(既定値) | 正の整数値
参照分布 ReferenceDistribution
から生成される参照データ セットの数。'B'
と正の整数値で構成されるコンマ区切りのペアとして指定します。
例: 'B',150
データ型: single
| double
ReferenceDistribution
— 参照データの生成方法
'PCA'
(既定値) | 'uniform'
参照データの生成方法。'ReferenceDistributions'
と以下のいずれかで構成されるコンマ区切りのペアとして指定します。
'PCA' | データ行列 x の主成分に合わせて整列されたボックスにおける一様分布から参照データを生成します。 |
'uniform' | データ行列 x の各特徴の範囲で均一に参照データを生成します。 |
例: 'ReferenceDistribution','uniform'
SearchMethod
— 最適なクラスター数の選択方法
'globalMaxSE'
(既定値) | 'firstMaxSE'
最適なクラスター数の選択方法。'SearchMethod'
と以下のいずれかで構成されるコンマ区切りのペアとして指定します。
'globalMaxSE' |
K はクラスター数、Gap(K) は K 個のクラスターに対するクラスタリングの解のギャップ値、GAPMAX は最大ギャップ値、SE(GAPMAX) は最大ギャップ値に対応する標準誤差です。 |
'firstMaxSE' |
K はクラスター数、Gap(K) は K 個のクラスターに対するクラスタリングの解のギャップ値、SE(K + 1) は K + 1 個のクラスターに対するクラスターの解の標準誤差です。 |
例: 'SearchMethod','globalMaxSE'
出力引数
eva
— クラスタリング評価データ
クラスタリング評価オブジェクト
クラスタリング評価データ。クラスタリング評価オブジェクトとして返されます。
バージョン履歴
R2013b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)