.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/plot_icasso_fastica.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_plot_icasso_fastica.py: .. _tut_icasso_fastica: Extend scikit-learn FastICA example to use Icasso ================================================= FastICA is fit multiple times to simple example data and performance can be visually inspected. .. GENERATED FROM PYTHON SOURCE LINES 10-27 .. code-block:: default # Authors: Erkka Heinila # # License BSD (3-clause) from itertools import cycle import numpy as np import matplotlib.pyplot as plt from scipy import signal from sklearn.decomposition import FastICA from sklearn.decomposition import PCA from icasso import Icasso .. GENERATED FROM PYTHON SOURCE LINES 28-29 For replicability .. GENERATED FROM PYTHON SOURCE LINES 29-32 .. code-block:: default random_state = 50 distance=0.12 .. GENERATED FROM PYTHON SOURCE LINES 33-34 Generate sample data .. GENERATED FROM PYTHON SOURCE LINES 34-43 .. code-block:: default n_samples = 2000 time = np.linspace(0, 8, n_samples) s1 = np.sin(2 * time) # Signal 1 : sinusoidal signal s2 = np.sign(np.sin(3 * time)) # Signal 2 : square signal s3 = signal.sawtooth(2 * np.pi * time) # Signal 3: saw tooth signal S = np.c_[s1, s2, s3] .. GENERATED FROM PYTHON SOURCE LINES 44-45 Add noise and standardize .. GENERATED FROM PYTHON SOURCE LINES 45-48 .. code-block:: default S += 0.4 * np.random.RandomState(random_state).normal(size=S.shape) S /= S.std(axis=0) .. GENERATED FROM PYTHON SOURCE LINES 49-50 Mix data .. GENERATED FROM PYTHON SOURCE LINES 50-53 .. code-block:: default A = np.array([[1, 1, 1], [0.5, 2, 1.0], [1.5, 1.0, 2.0]]) X = np.dot(S, A.T) .. GENERATED FROM PYTHON SOURCE LINES 54-55 Define functions for extracting bootstraps and unmixing matrices from ica object .. GENERATED FROM PYTHON SOURCE LINES 55-61 .. code-block:: default def bootstrap_fun(data, generator): return data[generator.choice(range(data.shape[0]), size=data.shape[0]), :] def unmixing_fun(ica): return ica.components_ .. GENERATED FROM PYTHON SOURCE LINES 62-63 Create the Icasso object .. GENERATED FROM PYTHON SOURCE LINES 63-69 .. code-block:: default ica_params = { 'n_components': 3 } icasso = Icasso(FastICA, ica_params=ica_params, iterations=100, bootstrap=True, vary_init=True) .. GENERATED FROM PYTHON SOURCE LINES 70-71 Fit the Icasso .. GENERATED FROM PYTHON SOURCE LINES 71-74 .. code-block:: default icasso.fit(data=X, fit_params={}, random_state=random_state, bootstrap_fun=bootstrap_fun, unmixing_fun=unmixing_fun) .. GENERATED FROM PYTHON SOURCE LINES 75-76 Plot dendrogram .. GENERATED FROM PYTHON SOURCE LINES 76-78 .. code-block:: default icasso.plot_dendrogram() .. image-sg:: /auto_examples/images/sphx_glr_plot_icasso_fastica_001.png :alt: Hierarchical Clustering Dendrogram :srcset: /auto_examples/images/sphx_glr_plot_icasso_fastica_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none
.. GENERATED FROM PYTHON SOURCE LINES 79-80 Plot mds .. GENERATED FROM PYTHON SOURCE LINES 80-82 .. code-block:: default icasso.plot_mds(distance=distance) .. image-sg:: /auto_examples/images/sphx_glr_plot_icasso_fastica_002.png :alt: MDS :srcset: /auto_examples/images/sphx_glr_plot_icasso_fastica_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none
.. GENERATED FROM PYTHON SOURCE LINES 83-84 Get the unmixing matrix and use it get the sources. .. GENERATED FROM PYTHON SOURCE LINES 84-105 .. code-block:: default W_, scores = icasso.get_centrotype_unmixing(distance=distance) S_ = np.dot(W_, X.T).T # ############################################################################# # Plot results plt.figure() models = [X, S, S_,] names = ['Observations (mixed signal)', 'True Sources', 'ICA recovered signals'] for ii, (model, name) in enumerate(zip(models, names), 1): colors = cycle(['red', 'steelblue', 'orange', 'green', 'yellow']) plt.subplot(4, 1, ii) plt.title(name) for sig, color in zip(model.T, colors): plt.plot(sig, color=color) plt.subplots_adjust(0.09, 0.04, 0.94, 0.94, 0.26, 0.46) plt.show() .. image-sg:: /auto_examples/images/sphx_glr_plot_icasso_fastica_003.png :alt: Observations (mixed signal), True Sources, ICA recovered signals :srcset: /auto_examples/images/sphx_glr_plot_icasso_fastica_003.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 2.914 seconds) .. _sphx_glr_download_auto_examples_plot_icasso_fastica.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_icasso_fastica.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_icasso_fastica.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_