def test_ica_simple(method): """Test that ICA recovers the unmixing matrix in a simple case.""" _skip_check_picard(method) n_components = 3 n_samples = 1000 rng = np.random.RandomState(0) S = rng.laplace(size=(n_components, n_samples)) A = rng.randn(n_components, n_components) data = np.dot(A, S) ica = ICA(n_components=n_components, method=method, random_state=0) ica._fit(data, n_components, 0) transform = np.dot(np.dot(ica.unmixing_matrix_, ica.pca_components_), A) amari_distance = np.mean(np.sum(np.abs(transform), axis=1) / np.max(np.abs(transform), axis=1) - 1.) assert amari_distance < 0.1
def test_ica_simple(method): """Test that ICA recovers the unmixing matrix in a simple case.""" if method == "fastica": try: import sklearn # noqa: F401 except ImportError: raise SkipTest("scikit-learn not installed") _skip_check_picard(method) n_components = 3 n_samples = 1000 rng = np.random.RandomState(0) S = rng.laplace(size=(n_components, n_samples)) A = rng.randn(n_components, n_components) data = np.dot(A, S) ica = ICA(n_components=n_components, method=method, random_state=0) ica._fit(data, n_components, 0) transform = np.dot(np.dot(ica.unmixing_matrix_, ica.pca_components_), A) amari_distance = np.mean(np.sum(np.abs(transform), axis=1) / np.max(np.abs(transform), axis=1) - 1.) assert amari_distance < 0.1