K-means is a kind of cluster algorithm, It allows us to find characteristics in the No characteristic data.
The two important steps of K-means : One is that clustering every example to its right centroid . Another is that computing every example of each centroid’s average,then move the correspond cenroid to the average point.
Here are the whole steps of K-mean:
- random initialize K(it is better to choose K from the exit examples).
repeat{ 1.clustering every example to its right centroid 2. computing every example of each centroid’s average,then move the correspond cenroid to the average point. }
Something more important already mentioned in the lecture notes.
The solution (U should do it by yourself,i am just recording so i can review it future)
- findClosestCentroids.m
minvec=zeros(K,1);
for index = 1:size(X,1)
for i = 1:K
minvec( i , 1 ) = sum( ( X(index,:)-centroids(i,:) ).^2 ) ;
end
[m , n] = min( minvec );
idx(index , 1) = n;
end
- computeCentroids.m
for index = 1:K
m1 = find(idx==index);
centroids(index,:) = ( sum(X(m1,:)) )/size(m1,1);
end