MATLAB Answers

0

Kmeans (Initialise centroids)

Asked by Ioanna Thoma on 19 Sep 2019 at 14:58
Latest activity Commented on by Akira Agata
on 6 Oct 2019 at 23:56
I have a dataset (X) where i use k means and save the centroids in matrix ( C), then I want to use the same centroids to cluster a different dataset. Can you please tell me the syntax? I know that I have to use 'start' but I am not doing it in a correct way.

  0 Comments

Sign in to comment.

1 Answer

Answer by Akira Agata
on 20 Sep 2019 at 13:00

Like this?
% Apply k-means clustering to data set X (e.g num of classes = 2), and obtain centroids C
numClass = 2;
[cluster,C] = kmeans(X,numClass);
% Calculate distance from each row of new data set X2 and C
d = pdist2(X2,C);
% Cluster the data set X2 based on the distance from the centroids C
[~,cluster2] = min(d,[],2);

  2 Comments

Ioanna Thoma on 23 Sep 2019 at 13:29
I mean, by using idx=kmeans(X,k,Name,Value)
After appling k-means to the dataset I have:
[idx,centroids]=kmeans(X,5) %I need 5 clusters
so then what do I have to do?
idxnew=kmeans(X,5,'Start',centroids) is not working:/
Akira Agata
on 6 Oct 2019 at 23:56
I think the same strategy should work. Here is an 5-cluster example :
% Sample data
X = rand(100,2); % dataset1
X2 = rand(100,2); % dataset2
% Apply k-means clustering to dataset1 (e.g num of classes = 5), and obtain centroids C
numClass = 5;
[cluster,C] = kmeans(X,numClass);
% Calculate distance from each row of new dataset (dataset2) against the centroids C
d = pdist2(X2,C);
% Clustering the dataset2 based on the centroids C
[~,cluster2] = min(d,[],2);
% Visualize the result
figure
gscatter(X2(:,1),X2(:,2),cluster2)

Sign in to comment.