How to assign new data to previous Centroid using K-means
11 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(1 个)
Image Analyst
2022-5-14
Maybe you can just find the distances of all points in your training set from their centroids. Then, for your second set, compute the distances of each point to each of the centroids. Whichever centriod the point is closest to is the cluster it belongs to. You could also use knnsearch for that.
8 个评论
Image Analyst
2022-5-19
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.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!