.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/cluster/plot_coin_segmentation.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_coin_segmentation.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_coin_segmentation.py: ================================================ 将希腊硬å¸çš„图片分割æˆå¤šä¸ªåŒºåŸŸ ================================================ 本示例使用图åƒä¸ä½“ç´ é—´å·®å¼‚åˆ›å»ºçš„å›¾ä¸Šçš„å…‰è°±èšç±»æ¥å°†å›¾åƒåˆ†å‰²æˆå¤šä¸ªéƒ¨åˆ†åŒè´¨çš„区域。 è¿™ç§æ–¹æ³•(图åƒä¸Šçš„光谱èšç±»ï¼‰æ˜¯æ‰¾åˆ°å½’一化图割问题的高效近似解决方案。 有三ç§åˆ†é…æ ‡ç¾çš„选项: * 'kmeans' 光谱èšç±»åœ¨åµŒå…¥ç©ºé—´ä¸ä½¿ç”¨kmeansç®—æ³•å¯¹æ ·æœ¬è¿›è¡Œèšç±» * 'discrete' è¿ä»£æœç´¢ä¸Žå…‰è°±èšç±»çš„嵌入空间最接近的分区空间 * 'cluster_qr' 使用带枢轴的QR分解直接在嵌入空间ä¸ç¡®å®šåˆ†åŒºæ¥åˆ†é…æ ‡ç¾ .. GENERATED FROM PYTHON SOURCE LINES 16-52 .. code-block:: Python # 作者:scikit-learn å¼€å‘者 # SPDX-License-Identifier: BSD-3-Clause import time import matplotlib.pyplot as plt import numpy as np from scipy.ndimage import gaussian_filter from skimage.data import coins from skimage.transform import rescale from sklearn.cluster import spectral_clustering from sklearn.feature_extraction import image # 将硬å¸åŠ è½½ä¸ºnumpy数组 orig_coins = coins() # 将其调整为原始大å°çš„20%ä»¥åŠ å¿«å¤„ç†é€Ÿåº¦ # 在缩å°ä¹‹å‰åº”用高斯滤波进行平滑处ç†å¯ä»¥å‡å°‘æ··å 伪影。 smoothened_coins = gaussian_filter(orig_coins, sigma=2) rescaled_coins = rescale(smoothened_coins, 0.2, mode="reflect", anti_aliasing=False) # 将图åƒè½¬æ¢ä¸ºå…·æœ‰è¾¹ç¼˜æ¢¯åº¦å€¼çš„图。 graph = image.img_to_graph(rescaled_coins) # å–æ¢¯åº¦çš„递å‡å‡½æ•°ï¼šæŒ‡æ•°å‡½æ•° # beta è¶Šå°ï¼Œåˆ†å‰²ä¸Žå®žé™…图åƒçš„独立性越强。对于 beta=1,分割接近于 Voronoi 图。 beta = 10 eps = 1e-6 graph.data = np.exp(-beta * graph.data / graph.data.std()) + eps # éœ€è¦æ‰‹åŠ¨é€‰æ‹©è¦æ˜¾ç¤ºçš„分割区域数é‡ã€‚ # 当å‰ç‰ˆæœ¬çš„'spectral_clustering'䏿”¯æŒè‡ªåŠ¨ç¡®å®šé«˜è´¨é‡èšç±»çš„æ•°é‡ã€‚ n_regions = 26 .. GENERATED FROM PYTHON SOURCE LINES 53-54 计算并å¯è§†åŒ–结果区域 .. GENERATED FROM PYTHON SOURCE LINES 54-92 .. code-block:: Python # 计算一些é¢å¤–的特å¾å‘é‡å¯èƒ½ä¼šåŠ å¿«ç‰¹å¾å€¼æ±‚解器的速度。 # 请求é¢å¤–的分割区域也å¯èƒ½æé«˜è°±èšç±»çš„è´¨é‡ã€‚ n_regions_plus = 3 # 使用默认的特å¾å€¼æ±‚解器 'arpack' 进行谱èšç±»ã€‚ # å¯ä»¥ä½¿ç”¨ä»»ä½•已实现的求解器:eigen_solver='arpack'ã€'lobpcg' 或 'amg'。 # 选择 eigen_solver='amg' 需è¦é¢å¤–的包 'pyamg'。 # 分割质é‡å’Œè®¡ç®—速度主è¦ç”±æ±‚解器的选择和容差 'eigen_tol' 的值决定。 # TODO: 对于 'lobpcg' å’Œ 'amg'ï¼Œæ”¹å˜ eigen_tol 似乎没有效果。 for assign_labels in ("kmeans", "discretize", "cluster_qr"): t0 = time.time() labels = spectral_clustering( graph, n_clusters=(n_regions + n_regions_plus), eigen_tol=1e-7, assign_labels=assign_labels, random_state=42, ) t1 = time.time() labels = labels.reshape(rescaled_coins.shape) plt.figure(figsize=(5, 5)) plt.imshow(rescaled_coins, cmap=plt.cm.gray) plt.xticks(()) plt.yticks(()) title = "Spectral clustering: %s, %.2fs" % (assign_labels, (t1 - t0)) print(title) plt.title(title) for l in range(n_regions): colors = [plt.cm.nipy_spectral((l + 4) / float(n_regions + 4))] plt.contour(labels == l, colors=colors) # è¦æŸ¥çœ‹å•个片段,请在 plt.pause(0.5) 䏿·»åŠ æ³¨é‡Š plt.show() # å¾…21194åˆå¹¶ä¸”21243ä¿®å¤åŽï¼Œæ£€æŸ¥å“ªä¸ªeigen_solver是最好的,并在æ¤ç¤ºä¾‹ä¸æ˜Žç¡®è®¾ç½®eigen_solver='arpack'ã€'lobpcg'或'amg'以åŠeigen_tol。 .. rst-class:: sphx-glr-horizontal * .. image-sg:: /auto_examples/cluster/images/sphx_glr_plot_coin_segmentation_001.png :alt: Spectral clustering: kmeans, 1.40s :srcset: /auto_examples/cluster/images/sphx_glr_plot_coin_segmentation_001.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/cluster/images/sphx_glr_plot_coin_segmentation_002.png :alt: Spectral clustering: discretize, 1.18s :srcset: /auto_examples/cluster/images/sphx_glr_plot_coin_segmentation_002.png :class: sphx-glr-multi-img * .. image-sg:: /auto_examples/cluster/images/sphx_glr_plot_coin_segmentation_003.png :alt: Spectral clustering: cluster_qr, 1.10s :srcset: /auto_examples/cluster/images/sphx_glr_plot_coin_segmentation_003.png :class: sphx-glr-multi-img .. rst-class:: sphx-glr-script-out .. code-block:: none Spectral clustering: kmeans, 1.40s Spectral clustering: discretize, 1.18s Spectral clustering: cluster_qr, 1.10s .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 4.020 seconds) .. _sphx_glr_download_auto_examples_cluster_plot_coin_segmentation.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_coin_segmentation.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_coin_segmentation.ipynb <plot_coin_segmentation.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_coin_segmentation.py <plot_coin_segmentation.py>` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_coin_segmentation.zip <plot_coin_segmentation.zip>` .. include:: plot_coin_segmentation.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_