Beispiel #1
0
def test_sumd():
    data = scipy.io.loadmat('test_sumd.mat',struct_as_record=True)['X']
    codebook = np.array([[3.6211,   3.1914],
                         [-3.6694, -3.3425]])

    actual_code, dist = vq( data, codebook)
    actual_dist, count = postcluster.get_summed_inner_distance( codebook, data )

    # The hard-coded expected values -- pre-computed using MATLAB kmeans().
    expected_code = np.array([1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1])
    expected_dist = np.array([21.9997,18.1554])

    assert np.allclose( actual_code, expected_code )

    assert np.allclose( actual_dist, expected_dist )
    d.append( (a, b, zi) )
random.shuffle(d)
d = np.array(d)

codebook0 = np.array( [[3,3,0],
                       [-3,-3,0]], dtype = np.float )

codebook1 = np.array( [[3.1,3,0],
                       [-3,-3,0]], dtype = np.float )

codebook2 = np.array( [[3.1,4.0,0],
                       [-3,-3,0]], dtype = np.float )

codebook3 = np.array( [[3.1,5.0,0],
                       [-3,-3,0]], dtype = np.float )

IDX0,_ = vq( d, codebook0 )
IDX1 = IDX0+1 # one-based indexing
SUMD,_ = postcluster.get_summed_inner_distance( codebook0, d )

scipy.io.savemat('generated_data',
                 {'X':d,
                  'codebook0':codebook0,
                  'codebook1':codebook1,
                  'codebook2':codebook2,
                  'codebook3':codebook3,
                  'IDX0':IDX0,
                  'IDX1':IDX1,
                  'SUMD':SUMD,
                  }, oned_as='column')