pl.quiver(0, 0, x_axis, y_axis, zorder=11, width=0.01, scale=6, color=color) pl.hlines(0, -3, 3) pl.vlines(0, -3, 3) pl.xlim(-3, 3) pl.ylim(-3, 3) pl.xlabel('$x$') pl.ylabel('$y$') pl.close('all') pl.subplot(2, 2, 1) plot_samples(S / S.std()) pl.title('True Independant Sources') axis_list = [pca.components_, ica.get_mixing_matrix()] pl.subplot(2, 2, 2) plot_samples(X / np.std(X), axis_list=axis_list) pl.legend(['PCA', 'ICA'], loc='upper left') pl.title('Observations') pl.subplot(2, 2, 3) plot_samples(S_pca_ / np.std(S_pca_, axis=-1)[:, np.newaxis]) pl.title('PCA scores') pl.subplot(2, 2, 4) plot_samples(S_ica_ / np.std(S_ica_)) pl.title('ICA estimated sources') pl.subplots_adjust(0.09, 0.04, 0.94, 0.94, 0.26, 0.26)
scale=6, color=color) pl.hlines(0, -3, 3) pl.vlines(0, -3, 3) pl.xlim(-3, 3) pl.ylim(-3, 3) pl.xlabel('$x$') pl.ylabel('$y$') pl.subplot(2, 2, 1) plot_samples(S / S.std()) pl.title('True Independant Sources') axis_list = [pca.components_, ica.get_mixing_matrix()] pl.subplot(2, 2, 2) plot_samples(X / np.std(X), axis_list=axis_list) pl.legend(['PCA', 'ICA'], loc='upper left') pl.title('Observations') pl.subplot(2, 2, 3) plot_samples(S_pca_ / np.std(S_pca_, axis=-1)[:, np.newaxis]) pl.title('PCA scores') pl.subplot(2, 2, 4) plot_samples(S_ica_ / np.std(S_ica_)) pl.title('ICA estimated sources') pl.subplots_adjust(0.09, 0.04, 0.94, 0.94, 0.26, 0.26)
np.random.seed(0) n_samples = 2000 time = np.linspace(0, 10, n_samples) s1 = np.sin(2*time) # Signal 1 : sinusoidal signal s2 = np.sign(np.sin(3*time)) # Signal 2 : square signal S = np.c_[s1,s2].T S += 0.2*np.random.normal(size=S.shape) # Add noise S /= S.std(axis=1)[:,np.newaxis] # Standardize data # Mix data A = [[1, 1], [0.5, 2]] # Mixing matrix X = np.dot(A, S) # Generate observations # Compute ICA ica = FastICA() S_ = ica.fit(X).transform(X) # Get the estimated sources A_ = ica.get_mixing_matrix() # Get estimated mixing matrix assert np.allclose(X, np.dot(A_, S_)) ############################################################################### # Plot results pl.figure() pl.subplot(3, 1, 1) pl.plot(S.T) pl.title('True Sources') pl.subplot(3, 1, 2) pl.plot(X.T) pl.title('Observations (mixed signal)') pl.subplot(3, 1, 3) pl.plot(S_.T) pl.title('ICA estimated sources')
np.random.seed(0) n_samples = 2000 time = np.linspace(0, 10, n_samples) s1 = np.sin(2 * time) # Signal 1 : sinusoidal signal s2 = np.sign(np.sin(3 * time)) # Signal 2 : square signal S = np.c_[s1, s2].T S += 0.2 * np.random.normal(size=S.shape) # Add noise S /= S.std(axis=1)[:, np.newaxis] # Standardize data # Mix data A = [[1, 1], [0.5, 2]] # Mixing matrix X = np.dot(A, S) # Generate observations # Compute ICA ica = FastICA() S_ = ica.fit(X).transform(X) # Get the estimated sources A_ = ica.get_mixing_matrix() # Get estimated mixing matrix assert np.allclose(X, np.dot(A_, S_)) ############################################################################### # Plot results pl.figure() pl.subplot(3, 1, 1) pl.plot(S.T) pl.title('True Sources') pl.subplot(3, 1, 2) pl.plot(X.T) pl.title('Observations (mixed signal)') pl.subplot(3, 1, 3) pl.plot(S_.T) pl.title('ICA estimated sources')