Пример #1
0
                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)
Пример #2
0
                      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')
Пример #4
0
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')