.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "auto_examples/bicluster/plot_spectral_coclustering.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_auto_examples_bicluster_plot_spectral_coclustering.py>`
        to download the full example code or to run this example in your browser via JupyterLite or Binder

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_auto_examples_bicluster_plot_spectral_coclustering.py:


==============================================
A demo of the Spectral Co-Clustering algorithm
==============================================

This example demonstrates how to generate a dataset and bicluster it
using the Spectral Co-Clustering algorithm.

The dataset is generated using the ``make_biclusters`` function, which
creates a matrix of small values and implants bicluster with large
values. The rows and columns are then shuffled and passed to the
Spectral Co-Clustering algorithm. Rearranging the shuffled matrix to
make biclusters contiguous shows how accurately the algorithm found
the biclusters.

.. GENERATED FROM PYTHON SOURCE LINES 17-57



.. rst-class:: sphx-glr-horizontal


    *

      .. image-sg:: /auto_examples/bicluster/images/sphx_glr_plot_spectral_coclustering_001.png
         :alt: Original dataset
         :srcset: /auto_examples/bicluster/images/sphx_glr_plot_spectral_coclustering_001.png
         :class: sphx-glr-multi-img

    *

      .. image-sg:: /auto_examples/bicluster/images/sphx_glr_plot_spectral_coclustering_002.png
         :alt: Shuffled dataset
         :srcset: /auto_examples/bicluster/images/sphx_glr_plot_spectral_coclustering_002.png
         :class: sphx-glr-multi-img

    *

      .. image-sg:: /auto_examples/bicluster/images/sphx_glr_plot_spectral_coclustering_003.png
         :alt: After biclustering; rearranged to show biclusters
         :srcset: /auto_examples/bicluster/images/sphx_glr_plot_spectral_coclustering_003.png
         :class: sphx-glr-multi-img


.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    consensus score: 1.000






|

.. code-block:: default


    # Author: Kemal Eren <kemal@kemaleren.com>
    # License: BSD 3 clause

    import numpy as np
    from matplotlib import pyplot as plt

    from sklearn.cluster import SpectralCoclustering
    from sklearn.datasets import make_biclusters
    from sklearn.metrics import consensus_score

    data, rows, columns = make_biclusters(
        shape=(300, 300), n_clusters=5, noise=5, shuffle=False, random_state=0
    )

    plt.matshow(data, cmap=plt.cm.Blues)
    plt.title("Original dataset")

    # shuffle clusters
    rng = np.random.RandomState(0)
    row_idx = rng.permutation(data.shape[0])
    col_idx = rng.permutation(data.shape[1])
    data = data[row_idx][:, col_idx]

    plt.matshow(data, cmap=plt.cm.Blues)
    plt.title("Shuffled dataset")

    model = SpectralCoclustering(n_clusters=5, random_state=0)
    model.fit(data)
    score = consensus_score(model.biclusters_, (rows[:, row_idx], columns[:, col_idx]))

    print("consensus score: {:.3f}".format(score))

    fit_data = data[np.argsort(model.row_labels_)]
    fit_data = fit_data[:, np.argsort(model.column_labels_)]

    plt.matshow(fit_data, cmap=plt.cm.Blues)
    plt.title("After biclustering; rearranged to show biclusters")

    plt.show()


.. rst-class:: sphx-glr-timing

   **Total running time of the script:** (0 minutes 0.327 seconds)


.. _sphx_glr_download_auto_examples_bicluster_plot_spectral_coclustering.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example


    .. container:: binder-badge

      .. image:: images/binder_badge_logo.svg
        :target: https://mybinder.org/v2/gh/scikit-learn/scikit-learn/1.3.X?urlpath=lab/tree/notebooks/auto_examples/bicluster/plot_spectral_coclustering.ipynb
        :alt: Launch binder
        :width: 150 px



    .. container:: lite-badge

      .. image:: images/jupyterlite_badge_logo.svg
        :target: ../../lite/lab/?path=auto_examples/bicluster/plot_spectral_coclustering.ipynb
        :alt: Launch JupyterLite
        :width: 150 px

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: plot_spectral_coclustering.py <plot_spectral_coclustering.py>`

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: plot_spectral_coclustering.ipynb <plot_spectral_coclustering.ipynb>`


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_