最適なクラスター数の評価
evalclusters
関数を使用して、データ セットにおける最適なクラスター数を特定します。
代わりに、データのクラスター化ライブ エディター タスクを使用して、k-means クラスタリングを対話的に実行することもできます。
fisheriris
データ セットを読み込みます。
load fisheriris
X = meas;
y = categorical(species);
X
は、150 本のアヤメについて 2 つのがく片と 2 つの花弁の測定値が含まれている数値行列です。y
は、対応するアヤメの種類が含まれている文字ベクトルの cell 配列です。
Calinski-Harabasz 基準を使用して、1 ~ 10 のうちの最適なクラスター数を評価します。k-means クラスタリング アルゴリズムを使用してデータをクラスター化します。
evaluation = evalclusters(X,"kmeans","CalinskiHarabasz",KList=1:10)
evaluation = 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 449.6410 435.8182 413.3837 386.5571] OptimalK: 3 Properties, Methods
OptimalK
の値は、Calinski-Harabasz 基準に基づく最適なクラスター数が 3 であることを示しています。
各クラスター数のクラスター評価結果を可視化します。
plot(evaluation) legend(["Criterion values","Criterion value at OptimalK"])
ほとんどのクラスタリング アルゴリズムでは、クラスター数が事前にわかっていなければなりません。クラスター数がわからない場合は、クラスターの評価手法を使用して、指定されたメトリクスに基づいてデータ内に存在するクラスターの数を決定します。
データ内で 3 つのクラスターを識別することは、データ内に 3 つの種類があることと整合することに注意してください。
categories(y)
ans = 3×1 cell
{'setosa' }
{'versicolor'}
{'virginica' }
データを可視化するために、データの非負のランク 2 の近似を計算します。
reducedX = nnmf(X,2);
元の特徴量が 2 つの特徴量に削減されます。負の特徴量は存在しないため、特徴量が非負であることが nnmf
によって保証されます。
散布図を使用して 3 つのクラスターを可視化します。色を使用してアヤメの種類を示します。
gscatter(reducedX(:,1),reducedX(:,2),y) xlabel("Column 1") ylabel("Column 2") grid on
参考
evalclusters
| nnmf
| gscatter
| データのクラスタリング