.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/mixture/plot_gmm_init.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_mixture_plot_gmm_init.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_mixture_plot_gmm_init.py: ========================== GMM åˆå§‹åŒ–方法 ========================== é«˜æ–¯æ··åˆæ¨¡åž‹ä¸ä¸åŒåˆå§‹åŒ–方法的示例 有关估计器的更多信æ¯ï¼Œè¯·å‚è§ :ref:`gmm` 。 在这里,我们生æˆäº†ä¸€äº›å…·æœ‰å››ä¸ªæ˜“äºŽè¯†åˆ«çš„ç°‡çš„æ ·æœ¬æ•°æ®ã€‚ æ¤ç¤ºä¾‹çš„目的是展示åˆå§‹åŒ–傿•° *init_param* 的四ç§ä¸åŒæ–¹æ³•。 这四ç§åˆå§‹åŒ–方法是 *kmeans*(默认)ã€*random*ã€*random_from_data* å’Œ *k-means++*。 橙色è±å½¢ä»£è¡¨ç”± *init_param* 生æˆçš„ gmm çš„åˆå§‹åŒ–ä¸å¿ƒã€‚其余数æ®è¡¨ç¤ºä¸ºå‰å·ï¼Œé¢œè‰²è¡¨ç¤º GMM 完æˆåŽçš„æœ€ç»ˆå…³è”分类。 æ¯ä¸ªå图å³ä¸Šè§’的数å—è¡¨ç¤ºé«˜æ–¯æ··åˆæ¨¡åž‹æ”¶æ•›æ‰€éœ€çš„è¿ä»£æ¬¡æ•°å’Œç®—法è¿è¡Œåˆå§‹åŒ–部分所需的相对时间。åˆå§‹åŒ–时间较çŸçš„å¾€å¾€éœ€è¦æ›´å¤šçš„è¿ä»£æ¬¡æ•°æ‰èƒ½æ”¶æ•›ã€‚ åˆå§‹åŒ–时间是该方法所需时间与默认 *kmeans* 方法所需时间的比率。如您所è§ï¼Œä¸Ž *kmeans* ç›¸æ¯”ï¼Œæ‰€æœ‰ä¸‰ç§æ›¿ä»£æ–¹æ³•åˆå§‹åŒ–所需时间都较少。 在æ¤ç¤ºä¾‹ä¸ï¼Œå½“使用 *random_from_data* 或 *random* åˆå§‹åŒ–æ—¶ï¼Œæ¨¡åž‹éœ€è¦æ›´å¤šçš„è¿ä»£æ¬¡æ•°æ‰èƒ½æ”¶æ•›ã€‚这里 *k-means++* 在åˆå§‹åŒ–æ—¶é—´çŸå’Œé«˜æ–¯æ··åˆæ¨¡åž‹è¿ä»£æ¬¡æ•°å°‘æ–¹é¢è¡¨çŽ°è‰¯å¥½ã€‚ .. GENERATED FROM PYTHON SOURCE LINES 23-99 .. image-sg:: /auto_examples/mixture/images/sphx_glr_plot_gmm_init_001.png :alt: GMM iterations and relative time taken to initialize, kmeans, Iter 8 | Init Time 1.00x, random_from_data, Iter 137 | Init Time 0.30x, k-means++, Iter 11 | Init Time 0.39x, random, Iter 47 | Init Time 0.28x :srcset: /auto_examples/mixture/images/sphx_glr_plot_gmm_init_001.png :class: sphx-glr-single-img .. code-block:: Python # 作者: Gordon Walsh <gordon.p.walsh@gmail.com> # æ•°æ®ç”Ÿæˆä»£ç æ¥è‡ª Jake Vanderplas <vanderplas@astro.washington.edu> from timeit import default_timer as timer import matplotlib.pyplot as plt import numpy as np from sklearn.datasets._samples_generator import make_blobs from sklearn.mixture import GaussianMixture from sklearn.utils.extmath import row_norms print(__doc__) # 生æˆä¸€äº›æ•°æ® X, y_true = make_blobs(n_samples=4000, centers=4, cluster_std=0.60, random_state=0) X = X[ :, ::-1] n_samples = 4000 n_components = 4 x_squared_norms = row_norms(X, squared=True) def get_initial_means(X, init_params, r): # è¿è¡Œä¸€ä¸ª GaussianMixture 并设置 max_iter=0 以输出åˆå§‹åŒ–å‡å€¼ gmm = GaussianMixture( n_components=4, init_params=init_params, tol=1e-9, max_iter=0, random_state=r ).fit(X) return gmm.means_ methods = ["kmeans", "random_from_data", "k-means++", "random"] colors = ["navy", "turquoise", "cornflowerblue", "darkorange"] times_init = {} relative_times = {} plt.figure(figsize=(4 * len(methods) // 2, 6)) plt.subplots_adjust( bottom=0.1, top=0.9, hspace=0.15, wspace=0.05, left=0.05, right=0.95 ) for n, method in enumerate(methods): r = np.random.RandomState(seed=1234) plt.subplot(2, len(methods) // 2, n + 1) start = timer() ini = get_initial_means(X, method, r) end = timer() init_time = end - start gmm = GaussianMixture( n_components=4, means_init=ini, tol=1e-9, max_iter=2000, random_state=r ).fit(X) times_init[method] = init_time for i, color in enumerate(colors): data = X[gmm.predict(X) == i] plt.scatter(data[:, 0], data[:, 1], color=color, marker="x") plt.scatter( ini[:, 0], ini[:, 1], s=75, marker="D", c="orange", lw=1.5, edgecolors="black" ) relative_times[method] = times_init[method] / times_init[methods[0]] plt.xticks(()) plt.yticks(()) plt.title(method, loc="left", fontsize=12) plt.title( "Iter %i | Init Time %.2fx" % (gmm.n_iter_, relative_times[method]), loc="right", fontsize=10, ) plt.suptitle("GMM iterations and relative time taken to initialize") plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.365 seconds) .. _sphx_glr_download_auto_examples_mixture_plot_gmm_init.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/mixture/plot_gmm_init.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_gmm_init.ipynb <plot_gmm_init.ipynb>` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_gmm_init.py <plot_gmm_init.py>` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_gmm_init.zip <plot_gmm_init.zip>` .. include:: plot_gmm_init.recommendations .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_