<!DOCTYPE html> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <head> <meta charset="utf-8"> <meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" /> <meta property="og:title" content="sklearn.cluster.kmeans_plusplus" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://scikit-learn/stable/modules/generated/sklearn.cluster.kmeans_plusplus.html" /> <meta property="og:site_name" content="scikit-learn" /> <meta property="og:description" content="Examples using sklearn.cluster.kmeans_plusplus: An example of K-Means++ initialization" /> <meta property="og:image" content="https://scikit-learn/stable/_images/sphx_glr_plot_kmeans_plusplus_thumb.png" /> <meta property="og:image:alt" content="" /> <meta name="description" content="Examples using sklearn.cluster.kmeans_plusplus: An example of K-Means++ initialization" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>sklearn.cluster.kmeans_plusplus — scikit-learn 1.4.dev0 documentation</title> <link rel="canonical" href="http://scikit-learn.org/stable/modules/generated/sklearn.cluster.kmeans_plusplus.html" /> <link rel="shortcut icon" href="../../_static/favicon.ico"/> <link rel="stylesheet" href="../../_static/css/vendor/bootstrap.min.css" type="text/css" /> <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <link rel="stylesheet" href="../../_static/copybutton.css" type="text/css" /> <link rel="stylesheet" href="../../_static/plot_directive.css" type="text/css" /> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Vibur" type="text/css" /> <link rel="stylesheet" href="../../_static/jupyterlite_sphinx.css" type="text/css" /> <link rel="stylesheet" href="../../_static/sg_gallery.css" type="text/css" /> <link rel="stylesheet" href="../../_static/sg_gallery-binder.css" type="text/css" /> <link rel="stylesheet" href="../../_static/sg_gallery-dataframe.css" type="text/css" /> <link rel="stylesheet" href="../../_static/sg_gallery-rendered-html.css" type="text/css" /> <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" /> <script id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script> <script src="../../_static/js/vendor/jquery-3.6.3.slim.min.js"></script> </head> <body> <nav id="navbar" class="sk-docs-navbar navbar navbar-expand-md navbar-light bg-light py-0"> <div class="container-fluid sk-docs-container px-0"> <a class="navbar-brand py-0" href="../../index.html"> <img class="sk-brand-img" src="../../_static/scikit-learn-logo-small.png" alt="logo"/> </a> <button id="sk-navbar-toggler" class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation" > <span class="navbar-toggler-icon"></span> </button> <div class="sk-navbar-collapse collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> <li class="nav-item"> <a class="sk-nav-link nav-link" href="../../install.html">Install</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link" href="../../user_guide.html">User Guide</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link" href="../classes.html">API</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link" href="../../auto_examples/index.html">Examples</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link" target="_blank" rel="noopener noreferrer" href="https://blog.scikit-learn.org/">Community</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../getting_started.html" >Getting Started</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../tutorial/index.html" >Tutorial</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../whats_new/v1.4.html" >What's new</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../glossary.html" >Glossary</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../developers/index.html" >Development</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../faq.html" >FAQ</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../support.html" >Support</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../related_projects.html" >Related packages</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../roadmap.html" >Roadmap</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../governance.html" >Governance</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="../../about.html" >About us</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="https://github.com/scikit-learn/scikit-learn" >GitHub</a> </li> <li class="nav-item"> <a class="sk-nav-link nav-link nav-more-item-mobile-items" href="https://scikit-learn.org/dev/versions.html" >Other Versions and Download</a> </li> <li class="nav-item dropdown nav-more-item-dropdown"> <a class="sk-nav-link nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">More</a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="sk-nav-dropdown-item dropdown-item" href="../../getting_started.html" >Getting Started</a> <a class="sk-nav-dropdown-item dropdown-item" href="../../tutorial/index.html" >Tutorial</a> <a class="sk-nav-dropdown-item dropdown-item" href="../../whats_new/v1.4.html" >What's new</a> <a class="sk-nav-dropdown-item dropdown-item" href="../../glossary.html" >Glossary</a> <a class="sk-nav-dropdown-item dropdown-item" href="../../developers/index.html" >Development</a> <a class="sk-nav-dropdown-item dropdown-item" href="../../faq.html" >FAQ</a> <a class="sk-nav-dropdown-item dropdown-item" href="../../support.html" >Support</a> <a class="sk-nav-dropdown-item dropdown-item" href="../../related_projects.html" >Related packages</a> <a class="sk-nav-dropdown-item dropdown-item" href="../../roadmap.html" >Roadmap</a> <a class="sk-nav-dropdown-item dropdown-item" href="../../governance.html" >Governance</a> <a class="sk-nav-dropdown-item dropdown-item" href="../../about.html" >About us</a> <a class="sk-nav-dropdown-item dropdown-item" href="https://github.com/scikit-learn/scikit-learn" >GitHub</a> <a class="sk-nav-dropdown-item dropdown-item" href="https://scikit-learn.org/dev/versions.html" >Other Versions and Download</a> </div> </li> </ul> <div id="searchbox" role="search"> <div class="searchformwrapper"> <form class="search" action="../../search.html" method="get"> <input class="sk-search-text-input" type="text" name="q" aria-labelledby="searchlabel" /> <input class="sk-search-text-btn" type="submit" value="Go" /> </form> </div> </div> </div> </div> </nav> <div class="d-flex" id="sk-doc-wrapper"> <input type="checkbox" name="sk-toggle-checkbox" id="sk-toggle-checkbox"> <label id="sk-sidemenu-toggle" class="sk-btn-toggle-toc btn sk-btn-primary" for="sk-toggle-checkbox">Toggle Menu</label> <div id="sk-sidebar-wrapper" class="border-right"> <div class="sk-sidebar-toc-wrapper"> <div class="btn-group w-100 mb-2" role="group" aria-label="rellinks"> <a href="sklearn.cluster.k_means.html" role="button" class="btn sk-btn-rellink py-1" sk-rellink-tooltip="sklearn.cluster.k_means">Prev</a><a href="../classes.html" role="button" class="btn sk-btn-rellink py-1" sk-rellink-tooltip="API Reference">Up</a> <a href="sklearn.cluster.mean_shift.html" role="button" class="btn sk-btn-rellink py-1" sk-rellink-tooltip="sklearn.cluster.mean_shift">Next</a> </div> <div class="alert alert-danger p-1 mb-2" role="alert"> <p class="text-center mb-0"> <strong>scikit-learn 1.4.dev0</strong><br/> <a href="http://scikit-learn.org/dev/versions.html">Other versions</a> </p> </div> <div class="alert alert-warning p-1 mb-2" role="alert"> <p class="text-center mb-0"> Please <a class="font-weight-bold" href="../../about.html#citing-scikit-learn"><string>cite us</string></a> if you use the software. </p> </div> <div class="sk-sidebar-toc"> <ul> <li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.cluster</span></code>.kmeans_plusplus</a><ul> <li><a class="reference internal" href="#sklearn.cluster.kmeans_plusplus"><code class="docutils literal notranslate"><span class="pre">kmeans_plusplus</span></code></a></li> <li><a class="reference internal" href="#examples-using-sklearn-cluster-kmeans-plusplus">Examples using <code class="docutils literal notranslate"><span class="pre">sklearn.cluster.kmeans_plusplus</span></code></a></li> </ul> </li> </ul> </div> </div> </div> <div id="sk-page-content-wrapper"> <div class="sk-page-content container-fluid body px-md-3" role="main"> <section id="sklearn-cluster-kmeans-plusplus"> <h1><a class="reference internal" href="../classes.html#module-sklearn.cluster" title="sklearn.cluster"><code class="xref py py-mod docutils literal notranslate"><span class="pre">sklearn.cluster</span></code></a>.kmeans_plusplus<a class="headerlink" href="#sklearn-cluster-kmeans-plusplus" title="Permalink to this heading">¶</a></h1> <dl class="py function"> <dt class="sig sig-object py" id="sklearn.cluster.kmeans_plusplus"> <span class="sig-prename descclassname"><span class="pre">sklearn.cluster.</span></span><span class="sig-name descname"><span class="pre">kmeans_plusplus</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">X</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_clusters</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_weight</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">x_squared_norms</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">random_state</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">n_local_trials</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference external" href="https://github.com/scikit-learn/scikit-learn/blob/702316c27/sklearn/cluster/_kmeans.py#L61"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#sklearn.cluster.kmeans_plusplus" title="Permalink to this definition">¶</a></dt> <dd><p>Init n_clusters seeds according to k-means++.</p> <div class="versionadded"> <p><span class="versionmodified added">New in version 0.24.</span></p> </div> <dl class="field-list"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><dl> <dt><strong>X</strong><span class="classifier">{array-like, sparse matrix} of shape (n_samples, n_features)</span></dt><dd><p>The data to pick seeds from.</p> </dd> <dt><strong>n_clusters</strong><span class="classifier">int</span></dt><dd><p>The number of centroids to initialize.</p> </dd> <dt><strong>sample_weight</strong><span class="classifier">array-like of shape (n_samples,), default=None</span></dt><dd><p>The weights for each observation in <code class="docutils literal notranslate"><span class="pre">X</span></code>. If <code class="docutils literal notranslate"><span class="pre">None</span></code>, all observations are assigned equal weight. <code class="docutils literal notranslate"><span class="pre">sample_weight</span></code> is ignored if <code class="docutils literal notranslate"><span class="pre">init</span></code> is a callable or a user provided array.</p> <div class="versionadded"> <p><span class="versionmodified added">New in version 1.3.</span></p> </div> </dd> <dt><strong>x_squared_norms</strong><span class="classifier">array-like of shape (n_samples,), default=None</span></dt><dd><p>Squared Euclidean norm of each data point.</p> </dd> <dt><strong>random_state</strong><span class="classifier">int or RandomState instance, default=None</span></dt><dd><p>Determines random number generation for centroid initialization. Pass an int for reproducible output across multiple function calls. See <a class="reference internal" href="../../glossary.html#term-random_state"><span class="xref std std-term">Glossary</span></a>.</p> </dd> <dt><strong>n_local_trials</strong><span class="classifier">int, default=None</span></dt><dd><p>The number of seeding trials for each center (except the first), of which the one reducing inertia the most is greedily chosen. Set to None to make the number of trials depend logarithmically on the number of seeds (2+log(k)) which is the recommended setting. Setting to 1 disables the greedy cluster selection and recovers the vanilla k-means++ algorithm which was empirically shown to work less well than its greedy variant.</p> </dd> </dl> </dd> <dt class="field-even">Returns<span class="colon">:</span></dt> <dd class="field-even"><dl class="simple"> <dt><strong>centers</strong><span class="classifier">ndarray of shape (n_clusters, n_features)</span></dt><dd><p>The initial centers for k-means.</p> </dd> <dt><strong>indices</strong><span class="classifier">ndarray of shape (n_clusters,)</span></dt><dd><p>The index location of the chosen centers in the data array X. For a given index and center, X[index] = center.</p> </dd> </dl> </dd> </dl> <p class="rubric">Notes</p> <p>Selects initial cluster centers for k-mean clustering in a smart way to speed up convergence. see: Arthur, D. and Vassilvitskii, S. “k-means++: the advantages of careful seeding”. ACM-SIAM symposium on Discrete algorithms. 2007</p> <p class="rubric">Examples</p> <div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">sklearn.cluster</span> <span class="kn">import</span> <span class="n">kmeans_plusplus</span> <span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> <span class="gp">>>> </span><span class="n">X</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">],</span> <span class="gp">... </span> <span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">]])</span> <span class="gp">>>> </span><span class="n">centers</span><span class="p">,</span> <span class="n">indices</span> <span class="o">=</span> <span class="n">kmeans_plusplus</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">n_clusters</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> <span class="gp">>>> </span><span class="n">centers</span> <span class="go">array([[10, 2],</span> <span class="go"> [ 1, 0]])</span> <span class="gp">>>> </span><span class="n">indices</span> <span class="go">array([3, 2])</span> </pre></div> </div> </dd></dl> <section id="examples-using-sklearn-cluster-kmeans-plusplus"> <h2>Examples using <code class="docutils literal notranslate"><span class="pre">sklearn.cluster.kmeans_plusplus</span></code><a class="headerlink" href="#examples-using-sklearn-cluster-kmeans-plusplus" title="Permalink to this heading">¶</a></h2> <div class="sphx-glr-thumbnails"><div class="sphx-glr-thumbcontainer" tooltip="An example to show the output of the sklearn.cluster.kmeans_plusplus function for generating in..."><img alt="" src="../../_images/sphx_glr_plot_kmeans_plusplus_thumb.png" /> <p><a class="reference internal" href="../../auto_examples/cluster/plot_kmeans_plusplus.html#sphx-glr-auto-examples-cluster-plot-kmeans-plusplus-py"><span class="std std-ref">An example of K-Means++ initialization</span></a></p> <div class="sphx-glr-thumbnail-title">An example of K-Means++ initialization</div> </div></div><div class="clearer"></div></section> </section> </div> <div class="container"> <footer class="sk-content-footer"> © 2007 - 2023, scikit-learn developers (BSD License). <a href="../../_sources/modules/generated/sklearn.cluster.kmeans_plusplus.rst.txt" rel="nofollow">Show this page source</a> </footer> </div> </div> </div> <script src="../../_static/js/vendor/bootstrap.min.js"></script> <script> window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga('create', 'UA-22606712-2', 'auto'); ga('set', 'anonymizeIp', true); ga('send', 'pageview'); </script> <script async src='https://www.google-analytics.com/analytics.js'></script> <script defer data-domain="scikit-learn.org" src="https://views.scientific-python.org/js/script.js"> </script> <script src="../../_static/clipboard.min.js"></script> <script src="../../_static/copybutton.js"></script> <script> $(document).ready(function() { /* Add a [>>>] button on the top-right corner of code samples to hide * the >>> and ... prompts and the output and thus make the code * copyable. */ var div = $('.highlight-python .highlight,' + '.highlight-python3 .highlight,' + '.highlight-pycon .highlight,' + '.highlight-default .highlight') var pre = div.find('pre'); // get the styles from the current theme pre.parent().parent().css('position', 'relative'); // create and add the button to all the code blocks that contain >>> div.each(function(index) { var jthis = $(this); // tracebacks (.gt) contain bare text elements that need to be // wrapped in a span to work with .nextUntil() (see later) jthis.find('pre:has(.gt)').contents().filter(function() { return ((this.nodeType == 3) && (this.data.trim().length > 0)); }).wrap('<span>'); }); /*** Add permalink buttons next to glossary terms ***/ $('dl.glossary > dt[id]').append(function() { return ('<a class="headerlink" href="#' + this.getAttribute('id') + '" title="Permalink to this term">¶</a>'); }); }); </script> <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script> <script src="https://scikit-learn.org/versionwarning.js"></script> </body> </html>