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')