このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
クラスター評価
この例では、フィッシャーのアヤメのデータ内にあるクラスターを識別する方法を示します。
フィッシャーのアヤメのデータセットを読み込みます。
load fisheriris
X = meas;
y = categorical(species);
X
は、150 本のアヤメについて 2 つの花弁の測定値が含まれている数値行列です。Y
は、対応するアヤメの種類が含まれている文字ベクトルの cell 配列です。
1 ~ 10 の複数のクラスターを評価します。
eva = evalclusters(X,'kmeans','CalinskiHarabasz','KList',1:10)
eva = CalinskiHarabaszEvaluation with properties: NumObservations: 150 InspectedK: [1 2 3 4 5 6 7 8 9 10] CriterionValues: [NaN 513.9245 561.6278 530.4871 456.1279 469.5068 ... ] OptimalK: 3
OptimalK
の値は、Calinski-Harabasz 基準に基づく最適なクラスター数が 3 つであることを示しています。
各クラスター数の結果を確認するには、eva
を可視化します。
plot(eva)
ほとんどのクラスタリング アルゴリズムでは、クラスター数が事前にわかっていなければなりません。この情報を利用できない場合は、クラスターの評価手法を使用して、指定されたメトリクスに基づいてデータ内に存在するクラスターの数を決定します。
3 つのクラスターはデータ内に存在する 3 つの種に一致しています。
categories(y)
ans = 3x1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
可視化するために、データの非負のランク 2 の近似を計算します。
Xred = nnmf(X,2);
元の特徴量が 2 つの特徴量に削減されます。負の特徴量は存在しないため、特徴量が非負であることも nnmf
によって保証されます。
散布図を使用して 3 つのクラスターを視覚的に確認します。
gscatter(Xred(:,1),Xred(:,2),y) xlabel('Column 1') ylabel('Column 2') grid on