.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/bicluster/plot_spectral_biclustering.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` 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_biclustering.py: ============================================= عرض توضيحي لخوارزمية التجميع الطيفي الثنائي ============================================= هذا المثال يوضح كيفية إنشاء مجموعة بيانات لوحة الشطرنج وتجميعها باستخدام خوارزمية :class:`~sklearn.cluster.SpectralBiclustering`. تم تصميم خوارزمية التجميع الطيفي الثنائي خصيصًا لتجميع البيانات عن طريق النظر في كل من الصفوف (العينات) والأعمدة (الميزات) للمصفوفة في نفس الوقت. تهدف إلى تحديد الأنماط ليس فقط بين العينات ولكن أيضًا داخل المجموعات الفرعية من العينات، مما يسمح بالكشف عن البنية الموضعية داخل البيانات. وهذا يجعل التجميع الطيفي الثنائي مناسبًا بشكل خاص لمجموعات البيانات حيث يكون ترتيب الميزات أو ترتيبها ثابتًا، كما هو الحال في الصور أو السلاسل الزمنية أو الجينومات. يتم إنشاء البيانات، ثم يتم خلطها وتمريرها إلى خوارزمية التجميع الطيفي الثنائي. يتم بعد ذلك إعادة ترتيب الصفوف والأعمدة للمصفوفة المخلوطة لرسم مجموعات التجميع الفرعية التي تم العثور عليها. .. GENERATED FROM PYTHON SOURCE LINES 15-19 .. code-block:: Python # المؤلفون: مطوري سكايلرن # معرف الترخيص: BSD-3-Clause .. GENERATED FROM PYTHON SOURCE LINES 20-29 إنشاء بيانات العينة -------------------- نقوم بإنشاء بيانات العينة باستخدام :func:`~sklearn.datasets.make_checkerboard`. يمثل كل بكسل داخل `shape=(300, 300)` بلون قيمة من توزيع موحد. تتم إضافة الضجيج من التوزيع الطبيعي، حيث يتم اختيار القيمة لـ `noise` هي الانحراف المعياري. كما ترى، يتم توزيع البيانات على 12 خلية تجميع وهي مميزة جيدًا نسبيًا. .. GENERATED FROM PYTHON SOURCE LINES 29-45 .. code-block:: Python from sklearn.metrics import consensus_score from sklearn.cluster import SpectralBiclustering import numpy as np from matplotlib import pyplot as plt from sklearn.datasets import make_checkerboard n_clusters = (4, 3) data, rows, columns = make_checkerboard( shape=(300, 300), n_clusters=n_clusters, noise=10, shuffle=False, random_state=42 ) plt.matshow(data, cmap=plt.cm.Blues) plt.title("Original dataset") _ = plt.show() .. image-sg:: /auto_examples/bicluster/images/sphx_glr_plot_spectral_biclustering_001.png :alt: Original dataset :srcset: /auto_examples/bicluster/images/sphx_glr_plot_spectral_biclustering_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 46-48 نقوم بخلط البيانات والهدف هو إعادة بنائها لاحقًا باستخدام :class:`~sklearn.cluster.SpectralBiclustering`. .. GENERATED FROM PYTHON SOURCE LINES 48-54 .. code-block:: Python # إنشاء قوائم من فهارس الصفوف والأعمدة المخلوطة rng = np.random.RandomState(0) row_idx_shuffled = rng.permutation(data.shape[0]) col_idx_shuffled = rng.permutation(data.shape[1]) .. GENERATED FROM PYTHON SOURCE LINES 55-57 نعيد تعريف البيانات المخلوطة ونرسمها. نلاحظ أننا فقدنا بنية مصفوفة البيانات الأصلية. .. GENERATED FROM PYTHON SOURCE LINES 57-63 .. code-block:: Python data = data[row_idx_shuffled][:, col_idx_shuffled] plt.matshow(data, cmap=plt.cm.Blues) plt.title("Shuffled dataset") _ = plt.show() .. image-sg:: /auto_examples/bicluster/images/sphx_glr_plot_spectral_biclustering_002.png :alt: Shuffled dataset :srcset: /auto_examples/bicluster/images/sphx_glr_plot_spectral_biclustering_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 64-70 تناسب `SpectralBiclustering` ------------------------------ نقوم بتناسب النموذج ومقارنة التجميعات الناتجة مع الحقيقة الأرضية. لاحظ أنه عند إنشاء النموذج، نقوم بتحديد نفس عدد التجميعات التي استخدمناها لإنشاء مجموعة البيانات (`n_clusters = (4, 3)`)، مما سيساهم في الحصول على نتيجة جيدة. .. GENERATED FROM PYTHON SOURCE LINES 70-82 .. code-block:: Python model = SpectralBiclustering( n_clusters=n_clusters, method="log", random_state=0) model.fit(data) # حساب التشابه بين مجموعتين من مجموعات التجميع الفرعية score = consensus_score( model.biclusters_, (rows[:, row_idx_shuffled], columns[:, col_idx_shuffled]) ) print(f"consensus score: {score:.1f}") .. rst-class:: sphx-glr-script-out .. code-block:: none consensus score: 1.0 .. GENERATED FROM PYTHON SOURCE LINES 83-85 النتيجة بين 0 و 1، حيث 1 يتوافق مع تطابق مثالي. إنه يظهر جودة التجميع الثنائي. .. GENERATED FROM PYTHON SOURCE LINES 87-93 رسم النتائج ---------------- الآن، نقوم بإعادة ترتيب البيانات بناءً على تسميات الصفوف والأعمدة التي قام النموذج بتعيينها :class:`~sklearn.cluster.SpectralBiclustering` بترتيب تصاعدي ورسمها مرة أخرى. تتراوح `row_labels_` من 0 إلى 3، بينما تتراوح `column_labels_` من 0 إلى 2، مما يمثل ما مجموعه 4 مجموعات تجميع لكل صف و 3 مجموعات لكل عمود. .. GENERATED FROM PYTHON SOURCE LINES 93-102 .. code-block:: Python # إعادة ترتيب الصفوف أولاً ثم الأعمدة. reordered_rows = data[np.argsort(model.row_labels_)] reordered_data = reordered_rows[:, np.argsort(model.column_labels_)] plt.matshow(reordered_data, cmap=plt.cm.Blues) plt.title("After biclustering; rearranged to show biclusters") _ = plt.show() .. image-sg:: /auto_examples/bicluster/images/sphx_glr_plot_spectral_biclustering_003.png :alt: After biclustering; rearranged to show biclusters :srcset: /auto_examples/bicluster/images/sphx_glr_plot_spectral_biclustering_003.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 103-108 كخطوة أخيرة، نريد توضيح العلاقات بين تسميات الصفوف والأعمدة التي قام النموذج بتعيينها. لذلك، نقوم بإنشاء شبكة باستخدام :func:`numpy.outer`، والتي تأخذ `row_labels_` و `column_labels_` المرتبة وتضيف 1 إلى كل منها لضمان أن تبدأ التسميات من 1 بدلاً من 0 لتحسين العرض المرئي. .. GENERATED FROM PYTHON SOURCE LINES 108-116 .. code-block:: Python plt.matshow( np.outer(np.sort(model.row_labels_) + 1, np.sort(model.column_labels_) + 1), cmap=plt.cm.Blues, ) plt.title("Checkerboard structure of rearranged data") plt.show() .. image-sg:: /auto_examples/bicluster/images/sphx_glr_plot_spectral_biclustering_004.png :alt: Checkerboard structure of rearranged data :srcset: /auto_examples/bicluster/images/sphx_glr_plot_spectral_biclustering_004.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 117-120 حاصل الضرب الخارجي لمتجهات تسميات الصفوف والأعمدة يظهر تمثيلًا لهيكل لوحة الشطرنج، حيث يتم تمثيل مجموعات مختلفة من تسميات الصفوف والأعمدة بظلال مختلفة من اللون الأزرق. .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.716 seconds) .. _sphx_glr_download_auto_examples_bicluster_plot_spectral_biclustering.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/main?urlpath=lab/tree/notebooks/auto_examples/bicluster/plot_spectral_biclustering.ipynb :alt: Launch binder :width: 150 px .. container:: lite-badge .. image:: images/jupyterlite_badge_logo.svg :target: ../../lite/lab/index.html?path=auto_examples/bicluster/plot_spectral_biclustering.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_spectral_biclustering.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_spectral_biclustering.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_spectral_biclustering.zip ` .. include:: plot_spectral_biclustering.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_