.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/cluster/plot_linkage_comparison.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_cluster_plot_linkage_comparison.py: ================================================================ مقارنة طرق الربط الهرمي المختلفة على مجموعات بيانات تجريبية ================================================================ يوضح هذا المثال خصائص طرق الربط المختلفة للتجميع الهرمي على مجموعات البيانات التي "مثيرة للاهتمام" ولكنها لا تزال ثنائية الأبعاد. الملاحظات الرئيسية التي يجب إجراؤها هي: - الربط الفردي سريع، ويمكن أن يعمل بشكل جيد على البيانات غير الكروية، ولكنه يعمل بشكل سيئ في وجود ضوضاء. - يعمل الربط المتوسط ​​والكامل بشكل جيد على التجمعات الكروية المنفصلة بشكل نظيف، ولكن له نتائج مختلطة خلاف ذلك. - Ward هي الطريقة الأكثر فعالية للبيانات المشوشة. بينما تعطي هذه الأمثلة بعض الحدس حول الخوارزميات، فقد لا ينطبق هذا الحدس على البيانات عالية الأبعاد. .. GENERATED FROM PYTHON SOURCE LINES 25-39 .. code-block:: Python # Authors: The scikit-learn developers # SPDX-License-Identifier: BSD-3-Clause import time import warnings from itertools import cycle, islice import matplotlib.pyplot as plt import numpy as np from sklearn import cluster, datasets from sklearn.preprocessing import StandardScaler .. GENERATED FROM PYTHON SOURCE LINES 40-42 إنشاء مجموعات البيانات. نختار الحجم كبيرًا بما يكفي لرؤية قابلية التوسع للخوارزميات، ولكن ليس كبيرًا جدًا لتجنب أوقات التشغيل الطويلة جدًا .. GENERATED FROM PYTHON SOURCE LINES 42-64 .. code-block:: Python n_samples = 1500 noisy_circles = datasets.make_circles( n_samples=n_samples, factor=0.5, noise=0.05, random_state=170 ) noisy_moons = datasets.make_moons( n_samples=n_samples, noise=0.05, random_state=170) blobs = datasets.make_blobs(n_samples=n_samples, random_state=170) rng = np.random.RandomState(170) no_structure = rng.rand(n_samples, 2), None # بيانات موزعة بشكل متباين الخواص X, y = datasets.make_blobs(n_samples=n_samples, random_state=170) transformation = [[0.6, -0.6], [-0.4, 0.8]] X_aniso = np.dot(X, transformation) aniso = (X_aniso, y) # نقاط متغيرة التباينات varied = datasets.make_blobs( n_samples=n_samples, cluster_std=[1.0, 2.5, 0.5], random_state=170 ) .. GENERATED FROM PYTHON SOURCE LINES 65-66 تشغيل التجميع والرسم .. GENERATED FROM PYTHON SOURCE LINES 66-180 .. code-block:: Python # إعداد معلمات التجميع plt.figure(figsize=(9 * 1.3 + 2, 14.5)) plt.subplots_adjust( left=0.02, right=0.98, bottom=0.001, top=0.96, wspace=0.05, hspace=0.01 ) plot_num = 1 default_base = {"n_neighbors": 10, "n_clusters": 3} datasets = [ (noisy_circles, {"n_clusters": 2}), (noisy_moons, {"n_clusters": 2}), (varied, {"n_neighbors": 2}), (aniso, {"n_neighbors": 2}), (blobs, {}), (no_structure, {}), ] for i_dataset, (dataset, algo_params) in enumerate(datasets): # تحديث المعلمات بقيم خاصة بمجموعة البيانات params = default_base.copy() params.update(algo_params) X, y = dataset # تسوية مجموعة البيانات لتسهيل اختيار المعلمات X = StandardScaler().fit_transform(X) # ============ # إنشاء كائنات التجميع # ============ ward = cluster.AgglomerativeClustering( n_clusters=params["n_clusters"], linkage="ward" ) complete = cluster.AgglomerativeClustering( n_clusters=params["n_clusters"], linkage="complete" ) average = cluster.AgglomerativeClustering( n_clusters=params["n_clusters"], linkage="average" ) single = cluster.AgglomerativeClustering( n_clusters=params["n_clusters"], linkage="single" ) clustering_algorithms = ( ("ربط فردي", single), ("ربط متوسط", average), ("ربط كامل", complete), ("ربط Ward", ward), ) for name, algorithm in clustering_algorithms: t0 = time.time() # التقاط التحذيرات المتعلقة بـ kneighbors_graph with warnings.catch_warnings(): warnings.filterwarnings( "ignore", message="the number of connected components of the " + "connectivity matrix is [0-9]{1,2}" + " > 1. Completing it to avoid stopping the tree early.", category=UserWarning, ) algorithm.fit(X) t1 = time.time() if hasattr(algorithm, "labels_"): y_pred = algorithm.labels_.astype(int) else: y_pred = algorithm.predict(X) plt.subplot(len(datasets), len(clustering_algorithms), plot_num) if i_dataset == 0: plt.title(name, size=18) colors = np.array( list( islice( cycle( [ "#377eb8", "#ff7f00", "#4daf4a", "#f781bf", "#a65628", "#984ea3", "#999999", "#e41a1c", "#dede00", ] ), int(max(y_pred) + 1), ) ) ) plt.scatter(X[:, 0], X[:, 1], s=10, color=colors[y_pred]) plt.xlim(-2.5, 2.5) plt.ylim(-2.5, 2.5) plt.xticks(()) plt.yticks(()) plt.text( 0.99, 0.01, ("%.2fs" % (t1 - t0)).lstrip("0"), transform=plt.gca().transAxes, size=15, horizontalalignment="right", ) plot_num += 1 plt.show() .. image-sg:: /auto_examples/cluster/images/sphx_glr_plot_linkage_comparison_001.png :alt: ربط فردي, ربط متوسط, ربط كامل, ربط Ward :srcset: /auto_examples/cluster/images/sphx_glr_plot_linkage_comparison_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 1.976 seconds) .. _sphx_glr_download_auto_examples_cluster_plot_linkage_comparison.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/cluster/plot_linkage_comparison.ipynb :alt: Launch binder :width: 150 px .. container:: lite-badge .. image:: images/jupyterlite_badge_logo.svg :target: ../../lite/lab/index.html?path=auto_examples/cluster/plot_linkage_comparison.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_linkage_comparison.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_linkage_comparison.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_linkage_comparison.zip ` .. include:: plot_linkage_comparison.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_