def test_init_data(self): # Try it with 2D muX, sigmaX = 0, 0.2 # mean and standard deviation muY, sigmaY = 2, 0.2 x = np.random.normal(muX, sigmaX, 250) y = np.random.normal(muY, sigmaY, 250) y2 = y + 5 points1 = array([x,y]).T points2 = array([x, y2]).T points = np.concatenate([points1, points2]) k = 2 kmr = kmeans.kmeans_runner(k) kmr.init_data(points) self.assertTrue( (kmr.data == points).all() ) self.assertEquals( kmr.k_classes, k ) self.assertEquals( kmr.centroids.shape, (k, 2) ) # Try it with moreD muZ, sigmaZ = -1, .3 z = np.random.normal(muZ, sigmaZ, 250) points1 = array([x, y, z]).T points2 = array([x, y2, z + 2]).T points3 = array([x - 4, y - 2, z + 5]).T points4 = array([x + 2, y + 10, z]).T points = np.concatenate([points1, points2, points3, points4]) k = 4 kmr = kmeans.kmeans_runner(k) kmr.init_data(points) self.assertTrue( (kmr.data == points).all() ) self.assertEquals( kmr.k_classes, k ) self.assertEquals( kmr.centroids.shape, (k, 3) )
def test_init_data(self): # Try it with 2D muX, sigmaX = 0, 0.2 # mean and standard deviation muY, sigmaY = 2, 0.2 x = np.random.normal(muX, sigmaX, 250) y = np.random.normal(muY, sigmaY, 250) y2 = y + 5 points1 = array([x, y]).T points2 = array([x, y2]).T points = np.concatenate([points1, points2]) k = 2 kmr = kmeans.kmeans_runner(k) kmr.init_data(points) self.assertTrue((kmr.data == points).all()) self.assertEquals(kmr.k_classes, k) self.assertEquals(kmr.centroids.shape, (k, 2)) # Try it with moreD muZ, sigmaZ = -1, .3 z = np.random.normal(muZ, sigmaZ, 250) points1 = array([x, y, z]).T points2 = array([x, y2, z + 2]).T points3 = array([x - 4, y - 2, z + 5]).T points4 = array([x + 2, y + 10, z]).T points = np.concatenate([points1, points2, points3, points4]) k = 4 kmr = kmeans.kmeans_runner(k) kmr.init_data(points) self.assertTrue((kmr.data == points).all()) self.assertEquals(kmr.k_classes, k) self.assertEquals(kmr.centroids.shape, (k, 3))
def kmr_test_plot(data, k, end_thresh): from matplotlib.pylab import ion, figure, draw, ioff, show, plot, cla ion() fig = figure() ax = fig.add_subplot(111) ax.grid(True) # get k centroids kmr = kmeans.kmeans_runner(k, end_thresh) kmr.init_data(data) print kmr.centroids plot(data[:, 0], data[:, 1], 'o') i = 0 while kmr.stop_flag is False: kmr.iterate() #print kmr.centroids, kmr.itr_count plot(kmr.centroids[:, 0], kmr.centroids[:, 1], 'sr') time.sleep(.2) draw() i += 1 print "N Iterations: %d" % (i) plot(kmr.centroids[:, 0], kmr.centroids[:, 1], 'g^', linewidth=3) ioff() show() print kmr.itr_count, kmr.centroids
def kmr_test_plot(data, k, end_thresh): from matplotlib.pylab import ion, figure, draw, ioff, show, plot, cla ion() fig = figure() ax = fig.add_subplot(111) ax.grid(True) # get k centroids kmr = kmeans.kmeans_runner(k, end_thresh) kmr.init_data(data) print kmr.centroids plot(data[:,0], data[:,1], 'o') i = 0 while kmr.stop_flag is False: kmr.iterate() #print kmr.centroids, kmr.itr_count plot(kmr.centroids[:, 0], kmr.centroids[:, 1], 'sr') time.sleep(.2) draw() i += 1 print "N Iterations: %d" % (i) plot(kmr.centroids[:, 0], kmr.centroids[:, 1], 'g^', linewidth=3) ioff() show() print kmr.itr_count, kmr.centroids
def onlinetest(data, k, end_thresh, on_denom): print "onlinetest", k, end_thresh, on_denom kmr = kmeans.kmeans_runner(k, end_thresh) cutoffIdx = np.ceil(len(data) / np.float(on_denom)) np.random.shuffle(data) kmr.init_data(data[:(cutoffIdx)]) print "Initial:", kmr.centroids for point in data[cutoffIdx:]: kmr.iterate_online(point) print "Final Counts:", kmr.k_counts print kmr.centroids
def onlineplot(data, k, end_thresh, on_denom): from matplotlib.pylab import ion, figure, draw, ioff, show, plot print "onlineplot", k, end_thresh, on_denom ion() fig = figure() ax = fig.add_subplot(111) ax.grid(True) ax.set_ylim((-1.5, 1.5)) ax.set_xlim((-1.5, 1.5)) # get k centroids kmr = kmeans.kmeans_runner(k, end_thresh) cutoffIdx = np.ceil(len(data) / np.float(on_denom)) np.random.shuffle(data) initialData = data[:cutoffIdx] remainingData = data[cutoffIdx:] kmr.init_data(initialData) print "Initial:", kmr.centroids plot(initialData[:, 0], initialData[:, 1], 'o') for point in remainingData: kmr.iterate_online(point) plot(kmr.centroids[:, 0], kmr.centroids[:, 1], 'sr') plot(point[0], point[1], 'ob') #time.sleep(.) draw() plot(kmr.centroids[:, 0], kmr.centroids[:, 1], 'g^', linewidth=3) ioff() show() print "Final Counts:", kmr.k_counts print kmr.centroids
def onlineplot(data, k, end_thresh, on_denom): from matplotlib.pylab import ion, figure, draw, ioff, show, plot print "onlineplot", k, end_thresh, on_denom ion() fig = figure() ax = fig.add_subplot(111) ax.grid(True) ax.set_ylim((-1.5, 1.5)) ax.set_xlim((-1.5, 1.5)) # get k centroids kmr = kmeans.kmeans_runner(k, end_thresh) cutoffIdx = np.ceil(len(data) / np.float(on_denom)) np.random.shuffle(data) initialData = data[:cutoffIdx] remainingData = data[cutoffIdx:] kmr.init_data(initialData) print "Initial:", kmr.centroids plot(initialData[:,0], initialData[:,1], 'o') for point in remainingData: kmr.iterate_online(point) plot(kmr.centroids[:, 0], kmr.centroids[:, 1], 'sr') plot(point[0], point[1], 'ob') #time.sleep(.) draw() plot(kmr.centroids[:, 0], kmr.centroids[:, 1], 'g^', linewidth=3) ioff() show() print "Final Counts:", kmr.k_counts print kmr.centroids