簡體   English   中英

我如何在Matlab中使用輪廓函數

[英]How do i use the silhouette function in matlab

我對如何在Matlab中使用輪廓函數有疑問

如果我有我的相關矩陣X = 90x90和我的數據的集群成員數; 說我有五個集群。 定義為cidx,其長度為90x1,每個值分配一個從1到5的數字。

我可以只將相關矩陣和cidx傳遞給Silhouette函數並將度量指定為“ correlation”,還是應該將其傳遞給我的收益矩陣?

謝謝你的幫助!

首先,您需要建立集群。 例如,matlab中的kmeans函數可以為您完成此任務。

cidx = kmeans(X,2,'distance','Euclidean');

根據MATLAB:

IDX = k均值(X,k)的划分的n乘p個數據矩陣X的點分成k個簇。 此迭代分區在所有群集上將點到群集質心距離的群集內總和最小化。 X的行對應於點,列的對應於變量。 kmeans返回包含每個點的聚簇索引的n×1向量IDX

所以cidxn乘1的簇索引。 找到后,指數就可以通過XCIDX剪影功能:

s = silhouette(X,cidx,'Euclidean')

s是n×1向量中的輪廓值。

輪廓用於確定聚類的質量。 下面使用100 * 3大小的矩陣說明了此函數的工作方式。 范例-

NofClusters=3;

numObservarations = 100;
dimensions = 3;
data = rand([numObservarations dimensions]);
numObservarations = length(data);

%% cluster
opts = statset('MaxIter', 500, 'Display', 'iter');
[clustIDX, clusters, interClustSum, Dist] = kmeans(data, K, 'options',opts, ...
    'distance','sqEuclidean', 'EmptyAction','singleton', 'replicates',3);
%% plot data+clusters
figure, hold on
scatter3(data(:,1),data(:,2),data(:,3), 50, clustIDX, 'filled')
scatter3(clusters(:,1),clusters(:,2),clusters(:,3), 200, (1:K)', 'filled')
hold off, xlabel('x'), ylabel('y'), zlabel('z')

%% plot clusters quality
figure
[silh,h] = silhouette(data, clustIDX);
avrgScore = mean(silh);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM