.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/cluster/plot_dbscan.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_cluster_plot_dbscan.py>` to download the full example code. or to run this example in your browser via Binder .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_cluster_plot_dbscan.py: =================================== DBSCANèšç±»ç®—法演示 =================================== DBSCAN(基于密度的噪声应用空间èšç±»ï¼‰åœ¨é«˜å¯†åº¦åŒºåŸŸä¸æ‰¾åˆ°æ ¸å¿ƒæ ·æœ¬ï¼Œå¹¶ä»Žä¸æ‰©å±•èšç±»ã€‚ 该算法适用于包å«ç›¸ä¼¼å¯†åº¦èšç±»çš„æ•°æ®ã€‚ 请å‚阅示例 :ref:`sphx_glr_auto_examples_cluster_plot_cluster_comparison.py` ,了解ä¸åŒèšç±»ç®—法在二维数æ®é›†ä¸Šçš„æ¼”示。 .. GENERATED FROM PYTHON SOURCE LINES 14-18 æ•°æ®ç”Ÿæˆ --------------- 我们使用 :class:`~sklearn.datasets.make_blobs` æ¥åˆ›å»º 3 ä¸ªåˆæˆç°‡ã€‚ .. GENERATED FROM PYTHON SOURCE LINES 18-29 .. code-block:: Python from sklearn.datasets import make_blobs from sklearn.preprocessing import StandardScaler centers = [[1, 1], [-1, -1], [1, -1]] X, labels_true = make_blobs( n_samples=750, centers=centers, cluster_std=0.4, random_state=0 ) X = StandardScaler().fit_transform(X) .. GENERATED FROM PYTHON SOURCE LINES 30-31 我们å¯ä»¥å°†ç»“果数æ®å¯è§†åŒ–: .. GENERATED FROM PYTHON SOURCE LINES 31-38 .. code-block:: Python import matplotlib.pyplot as plt plt.scatter(X[:, 0], X[:, 1]) plt.show() .. image-sg:: /auto_examples/cluster/images/sphx_glr_plot_dbscan_001.png :alt: plot dbscan :srcset: /auto_examples/cluster/images/sphx_glr_plot_dbscan_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 39-43 计算 DBSCAN -------------- å¯ä»¥ä½¿ç”¨ `labels_` 属性访问 :class:`~sklearn.cluster.DBSCAN` 分é…çš„æ ‡ç¾ã€‚å™ªå£°æ ·æœ¬è¢«èµ‹äºˆæ ‡ç¾ math:`-1` 。 .. GENERATED FROM PYTHON SOURCE LINES 43-59 .. code-block:: Python import numpy as np from sklearn import metrics from sklearn.cluster import DBSCAN db = DBSCAN(eps=0.3, min_samples=10).fit(X) labels = db.labels_ # æ ‡ç¾ä¸çš„簇数é‡ï¼Œå¦‚æžœå˜åœ¨å™ªå£°åˆ™å¿½ç•¥ã€‚ n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0) n_noise_ = list(labels).count(-1) print("Estimated number of clusters: %d" % n_clusters_) print("Estimated number of noise points: %d" % n_noise_) .. rst-class:: sphx-glr-script-out .. code-block:: none Estimated number of clusters: 3 Estimated number of noise points: 18 .. GENERATED FROM PYTHON SOURCE LINES 60-67 èšç±»ç®—æ³•æœ¬è´¨ä¸Šæ˜¯æ— ç›‘ç£å¦ä¹ 方法。然而,由于 :class:`~sklearn.datasets.make_blobs` æä¾›äº†åˆæˆç°‡çš„çœŸå®žæ ‡ç¾ï¼Œå› æ¤å¯ä»¥ä½¿ç”¨åˆ©ç”¨è¿™ç§â€œç›‘ç£â€çœŸå®žä¿¡æ¯çš„è¯„ä¼°æŒ‡æ ‡æ¥é‡åŒ–生æˆç°‡çš„è´¨é‡ã€‚è¿™ç±»æŒ‡æ ‡çš„ä¾‹å包括åŒè´¨æ€§ã€å®Œæ•´æ€§ã€V-测度ã€å…°å¾·æŒ‡æ•°ã€è°ƒæ•´å…°å¾·æŒ‡æ•°å’Œè°ƒæ•´äº’ä¿¡æ¯ï¼ˆAMI)。 如果ä¸çŸ¥é“çœŸå®žæ ‡ç¾ï¼Œåªèƒ½ä½¿ç”¨æ¨¡åž‹ç»“æžœæœ¬èº«è¿›è¡Œè¯„ä¼°ã€‚åœ¨è¿™ç§æƒ…况下,轮廓系数éžå¸¸æœ‰ç”¨ã€‚ 有关更多信æ¯ï¼Œè¯·å‚è§ :ref:`sphx_glr_auto_examples_cluster_plot_adjusted_for_chance_measures.py` 示例或 :ref:`clustering_evaluation` 模å—。 .. GENERATED FROM PYTHON SOURCE LINES 67-78 .. code-block:: Python print(f"Homogeneity: {metrics.homogeneity_score(labels_true, labels):.3f}") print(f"Completeness: {metrics.completeness_score(labels_true, labels):.3f}") print(f"V-measure: {metrics.v_measure_score(labels_true, labels):.3f}") print(f"Adjusted Rand Index: {metrics.adjusted_rand_score(labels_true, labels):.3f}") print( "Adjusted Mutual Information:" f" {metrics.adjusted_mutual_info_score(labels_true, labels):.3f}" ) print(f"Silhouette Coefficient: {metrics.silhouette_score(X, labels):.3f}") .. rst-class:: sphx-glr-script-out .. code-block:: none Homogeneity: 0.953 Completeness: 0.883 V-measure: 0.917 Adjusted Rand Index: 0.952 Adjusted Mutual Information: 0.916 Silhouette Coefficient: 0.626 .. GENERATED FROM PYTHON SOURCE LINES 79-83 绘制结果 ------------ æ ¸å¿ƒæ ·æœ¬ï¼ˆå¤§ç‚¹ï¼‰å’Œéžæ ¸å¿ƒæ ·æœ¬ï¼ˆå°ç‚¹ï¼‰æ ¹æ®åˆ†é…的簇进行颜色编ç ã€‚è¢«æ ‡è®°ä¸ºå™ªå£°çš„æ ·æœ¬ç”¨é»‘è‰²è¡¨ç¤ºã€‚ .. GENERATED FROM PYTHON SOURCE LINES 83-118 .. code-block:: Python unique_labels = set(labels) core_samples_mask = np.zeros_like(labels, dtype=bool) core_samples_mask[db.core_sample_indices_] = True colors = [plt.cm.Spectral(each) for each in np.linspace(0, 1, len(unique_labels))] for k, col in zip(unique_labels, colors): if k == -1: # 黑色用于噪声。 col = [0, 0, 0, 1] class_member_mask = labels == k xy = X[class_member_mask & core_samples_mask] plt.plot( xy[:, 0], xy[:, 1], "o", markerfacecolor=tuple(col), markeredgecolor="k", markersize=14, ) xy = X[class_member_mask & ~core_samples_mask] plt.plot( xy[:, 0], xy[:, 1], "o", markerfacecolor=tuple(col), markeredgecolor="k", markersize=6, ) plt.title(f"Estimated number of clusters: {n_clusters_}") plt.show() .. image-sg:: /auto_examples/cluster/images/sphx_glr_plot_dbscan_002.png :alt: Estimated number of clusters: 3 :srcset: /auto_examples/cluster/images/sphx_glr_plot_dbscan_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.082 seconds) .. _sphx_glr_download_auto_examples_cluster_plot_dbscan.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_dbscan.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_dbscan.ipynb <plot_dbscan.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_dbscan.py <plot_dbscan.py>` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_dbscan.zip <plot_dbscan.zip>` .. include:: plot_dbscan.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_