def ica(X): """ Wrapper function for Independent Component Analysis of scikits.learn.decomposition """ from scikits.learn.decomposition import FastICA model = FastICA() model.fit(X.T) Y = model.transform(X.T).T return Y / Y.std(0)
from scikits.learn.decomposition import PCA, FastICA ############################################################################### # Generate sample data S = np.random.standard_t(1.5, size=(10000, 2)) S[0] *= 2. # Mix data A = np.array([[1, 1], [0, 2]]) # Mixing matrix X = np.dot(S, A.T) # Generate observations pca = PCA() S_pca_ = pca.fit(X).transform(X) ica = FastICA() S_ica_ = ica.fit(X).transform(X) # Estimate the sources S_ica_ /= S_ica_.std(axis=0) ############################################################################### # Plot results def plot_samples(S, axis_list=None): pl.scatter(S[:,0], S[:,1], s=2, marker='o', linewidths=0, zorder=10) if axis_list is not None: colors = [(0, 0.6, 0), (0.6, 0, 0)] for color, axis in zip(colors, axis_list): axis /= axis.std() x_axis, y_axis = axis
def run_ica(data, ncomponents): logging.debug("running ica: %i" % ncomponents) ica = FastICA(ncomponents) ica.fit(data) return ica