# How to assign new data to previous Centroid using K-means

28 views (last 30 days)

Show older comments

Hello everyone, I hope you are doing well.

I have written the following code. Now, i am going to apply on new incoming dataset.

for example one data come then i applied K-means, the output is save and the second data come the algorithm check if it belong to that centroid it assign that data to that centroid.

How can i modified the code for new incoming dataset.

%Read Dataset

%Find the Optimal Clusters for this dataset

eva = evalclusters(dataset1,'kmeans','silhouette','KList',[1:10])

K=eva.OptimalK;

%Apply Kmeans to the dataset with Optimal Clusters K

[idx,C,sumdist] = kmeans(dataset,K,'Display','final','Replicates',5);

%Plot the Clusters

figure

gscatter(dataset(:,1),dataset(:,2),idx,'bgmkr')

hold on

plot(C(:,1),C(:,2),'kx')

legend('Cluster 1','Cluster 2','Cluster 3','Cluster 4','Cluster 5','Cluster Centroid')

##### 0 Comments

### Answers (1)

Image Analyst
on 14 May 2022

##### 8 Comments

Image Analyst
on 19 May 2022

I gave you option 2 already. Here it is again:

[rows, columns] = size(testData)

for k = 1 : rows

% Get coordinates of this one test data point.

tx = testData(k, 1);

ty = testData(k, 2);

% Get distance of that one point to all centroid coordinates.

distances = sqrt((tx - C(:, 1)) .^ 2 + (ty - C(:, 2));

% Find out which centroid is closest to this data point

% and assign the closest class to IndexOfClosestClass.

[minDistance, IndexOfClosestClass(k)] = min(distances);

end

Where C is what you got from doing kmeans() on the first set.

### See Also

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!