def runkMeans(X,initial_centroids,max_iters,plot_progress=None): if plot_progress == None : plot_progress=False #if plot_progress: shape=X.shape m=shape[0] K=initial_centroids.shape[0] centroids=initial_centroids previous_centroids=centroids idx=np.zeros((m,1)) for i in range(max_iters): print 'K-Means iteration: %d %d' % (i,max_iters) idx=FCC.findClosestCentroids(X,centroids) if plot_progress: PPKM.plotProgresskMeans(X,centroids,previous_centroids,idx,K,i) previous_centroids=centroids centroids= CC.computeCentroids(X,idx,K) return (centroids,idx)
print 'One: =============Find Closest Centroids...' data=sio.loadmat('ex7data2') X=data['X'] K=3 initial_centroids=np.array([[3,3],[6,2],[8,5]]) idx=FCC.findClosestCentroids(X,initial_centroids) print 'Closest Centroids for the first 3 examples: ' print idx[0:3] print '(the closest centroids should be 1, 3, 2 respectively)' #Part Two: Compute Means print 'Two: =============Compute Means ...' centroids=CC.computeCentroids(X,idx,K) print 'Centroids computed after initial finding of closest centroids: ' print centroids print '( the centroids should be [ [ 2.428301 3.157924 ] [ 5.813503 2.633656 ] [ 7.119387 3.616684 ]]' #Part Three: K-Means Clustering print 'Three: ================== K-Means Clustering ...' max_iters=10 res=RKM.runkMeans(X,initial_centroids,max_iters,True) plt.show() print 'K-Means Done...' #Part Four: K-Means Clustering on Pixels print 'Running K-Means clustering on pixels from an image ' img=cv2.imread('bird_small.png')