def test_DiffusionMap_get_kernel_matrix_symmetry(mixtureNormals): "make sure the kernel matrix is symmetric" X = mixtureNormals df = DiffusionMap(sigma=1, embedding_dim=2, verbose=False) K = df.__get_kernel_matrix__(X, k=2) Q = (K - K.T).toarray() # np.all doesnt work on sparse matrices assert np.all(Q == 0), "returned kernel matrix is not symmetric"
def test_DiffusionMap_get_kernel_matrix_number_of_neighbours(mixtureNormals): """actually we would like to test for the exact number of neighvours but due tot the symmetrizing, it can exceed the kNN""" X = mixtureNormals embDim = 2 df = DiffusionMap(sigma=1, embedding_dim=embDim) kNN = 4 K = df.__get_kernel_matrix__(X, k=kNN) assert K.shape == (X.shape[0], X.shape[0]) nonzero_elements_per_row = np.sum(K.toarray() != 0, 1) print(nonzero_elements_per_row) assert np.all( nonzero_elements_per_row >= kNN ) # the number of nonzero elements must be kNN or larger (due to the symmetrizing
def test__get_kernel_matrix_sparse(mixtureNormals): df = DiffusionMap(sigma=1, embedding_dim=2, verbose=False) K = df.__get_kernel_matrix__(mixtureNormals, k=10) assert issparse(K)