Esempio n. 1
0
    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) )
Esempio n. 2
0
    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))
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
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