title: SKLearn KMeans Convergence Warning
body: <p>I am using SKLearn's KMeans clustering on a 1D dataset. The bug I am getting is that when I run the code, I am getting a <code>ConvergenceWarning</code>:</p>
  
  <pre><code>ConvergenceWarning: Number of distinct clusters (&lt;some integer n&gt;) found smaller than n_clusters (&lt;some integer bigger than n&gt;). Possibly due to duplicate points in X.
    return_n_iter=True)
  </code></pre>
  
  <p>I cannot find anything on this aside from the source code, which does not indicate what exactly is going wrong. I believe my bug is either because I have a 1D data structure, or because something is going wrong in how I use the 1D array with SKLearn. Here is the offending code:</p>
  
  <pre><code>def cluster_data(data_arr):
      """clusters the uas for a specific site"""
      d = 1.0
      k = 1
      inertia_prev = 1.0
      while k &lt;= MAX and d &gt; DELTA: 
          #max is the size of the input array, delta is .05
          kmean = KMeans(n_clusters=k)
          prediction = kmean.fit_predict(data_arr.reshape(-1, 1))
          #bug could be in the reshape!
          inertia_curr = kmean.inertia_
          d = abs(1 - (inertia_curr / inertia_prev))
          inertia_prev = inertia_curr
          k += 1
  </code></pre>
  
  <p>Some demo IO:
  Sample input:</p>
  
  <pre><code>[(11.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 7.,) ( 0.,) ( 4.,) ( 7.,)
  ( 7.,) (13.,) ( 2.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,)
   ( 7.,) ( 2.,) ( 0.,) ( 0.,) (11.,) ( 7.,) ( 7.,) ( 0.,) ( 2.,) ( 1.,)
   ( 0.,) ( 0.,) ( 0.,) ( 7.,) ( 5.,) ( 0.,) ( 0.,) ( 4.,) ( 0.,) ( 0.,)
   ( 0.,) ( 0.,) ( 8.,) ( 0.,) ( 4.,) (10.,) ( 0.,) (11.,) (13.,) (11.,)
   (11.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 7.,) ( 7.,)
   ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) (10.,) (16.,) (15.,) (13.,) ( 2.,)
   ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,)
   ( 5.,) (15.,) (14.,) (14.,) (15.,) (14.,) (15.,) (15.,) ( 5.,) (14.,)
   (15.,) (15.,) (15.,) ( 5.,) (15.,) ( 7.,) ( 5.,) ( 5.,) ( 5.,) (11.,)
   ( 5.,) ( 5.,) ( 5.,) ( 2.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,)
   ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 0.,) ( 0.,) ( 5.,) ( 0.,)
   ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,)
   ( 0.,) ( 0.,) ( 2.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 1.,) ( 0.,) ( 7.,)
   ( 0.,) (11.,) ( 0.,) ( 0.,) (11.,) ( 5.,) ( 0.,) (15.,) ( 2.,) ( 2.,)
   ( 5.,) ( 5.,) (11.,) ( 0.,) ( 0.,) ( 0.,) (13.,) ( 2.,) ( 5.,) (13.,)
   ( 0.,) ( 8.,) ( 8.,) ( 2.,) ( 2.,) ( 0.,) ( 5.,) ( 5.,) ( 0.,) ( 0.,)
   ( 0.,) (11.,) ( 5.,) ( 5.,) ( 5.,) ( 0.,) ( 0.,) (11.,) ( 8.,) ( 5.,)
   ( 0.,) ( 7.,) ( 5.,) ( 0.,) (11.,) ( 0.,) ( 0.,) ( 2.,) ( 0.,) (11.,)
   (11.,) ( 7.,) ( 0.,) (13.,) (15.,) ( 0.,) ( 5.,) ( 7.,) ( 0.,) ( 5.,)
   ( 5.,) ( 2.,) ( 5.,) ( 0.,) ( 0.,) ( 5.,) ( 0.,) ( 0.,) ( 0.,) ( 7.,)
   ( 0.,) ( 0.,) (11.,) ( 0.,) ( 5.,) ( 5.,) ( 0.,) ( 5.,) (11.,) ( 5.,)
   ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 0.,) ( 5.,) ( 5.,) ( 0.,)
   ( 7.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,)
   (11.,) ( 0.,) ( 0.,) (11.,) (11.,) (11.,) ( 1.,) ( 1.,) ( 5.,) ( 5.,)
   ( 5.,) ( 0.,) ( 0.,) ( 0.,) ( 2.,) ( 0.,) ( 2.,) ( 0.,) ( 0.,) ( 0.,)
   ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,)
   ( 0.,) ( 5.,) ( 0.,) ( 0.,) ( 0.,) ( 5.,) ( 0.,) ( 0.,) ( 5.,) ( 0.,)
   ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 1.,) ( 1.,) ( 0.,) ( 0.,) ( 0.,)
   ( 0.,) ( 5.,) ( 0.,) ( 2.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,)
   ( 0.,) ( 0.,) ( 5.,) ( 0.,) (11.,) (11.,) ( 7.,) (11.,) (11.,) ( 2.,)
   ( 0.,) ( 2.,) ( 1.,) ( 0.,) ( 0.,) (11.,) ( 0.,) (11.,) ( 0.,) ( 7.,)
   ( 0.,) ( 0.,) (11.,) ( 5.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 5.,)
   ( 0.,) ( 4.,) ( 5.,) ( 5.,) ( 0.,) ( 0.,) ( 8.,) ( 7.,) ( 0.,) ( 0.,)
   ( 0.,) ( 0.,) ( 8.,) ( 0.,) ( 4.,) ( 0.,) ( 8.,) ( 8.,) ( 2.,) (10.,)
   ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 8.,) ( 0.,) ( 0.,) ( 5.,) (15.,)
   (15.,) ( 0.,) ( 5.,) (15.,) (15.,) ( 2.,) (15.,) ( 5.,) ( 2.,) ( 2.,)
   ( 2.,) (15.,) (13.,) ( 0.,) ( 2.,) ( 0.,) ( 2.,) ( 2.,) ( 2.,) ( 2.,)
   ( 2.,) ( 0.,) (13.,) ( 5.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 2.,)
   ( 0.,) ( 0.,) ( 0.,) (13.,) ( 0.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,) ( 5.,)
   ( 7.,) ( 5.,) ( 5.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 8.,)
   ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 2.,) (11.,) (10.,)
   ( 2.,) ( 7.,) ( 0.,) ( 2.,) ( 0.,) ( 0.,) ( 5.,) ( 2.,) ( 5.,) ( 2.,)
   ( 5.,) ( 0.,) ( 0.,) ( 2.,) ( 2.,) ( 0.,) ( 0.,) ( 0.,) ( 0.,) ( 2.,)
   ( 0.,) ( 2.,) ( 0.,) ( 2.,) ( 5.,) ( 5.,) ( 1.,) ( 0.,) ( 0.,) ( 0.,)
   ( 0.,) (11.,) ( 5.,) ( 2.,) ( 0.,) ( 0.,) (13.,) ( 0.,) ( 5.,) (15.,)
   ( 7.,) ( 5.,) (11.,) (11.,) (16.,) (15.,) ( 7.,) (16.,) (11.,) (15.,)
   (16.,) (11.,) (17.,) (15.,) (17.,) (15.,) (11.,) ( 7.,) (11.,) ( 7.,)
   ( 7.,) (15.,) (15.,) (15.,) (16.,) (16.,) (16.,) (16.,) (16.,) (16.,)
   (17.,) (16.,) (15.,) (13.,) (14.,) (15.,) (15.,) ( 7.,) (16.,) (15.,)
   (11.,) (15.,) (17.,) (11.,) (11.,) ( 7.,) (15.,) (15.,) (11.,) (11.,)
   (15.,) (15.,) (15.,) (16.,) (11.,) ( 7.,) (16.,) (11.,) (11.,) (15.,)
   (11.,) (15.,) ( 5.,) (16.,) (11.,) (11.,) ( 7.,) (15.,) (15.,) (15.,)]
  </code></pre>
  
  <p>Sample output:</p>
  
  <pre><code>ConvergenceWarning: Number of distinct clusters (14) found smaller than n_clusters (15). Possibly due to duplicate points in X. return_n_iter=True)
  </code></pre>
  
  <p>Expected output:</p>
  
  <pre><code>no warning
  </code></pre>
  
  <p>You may notice that the input has a lot of repeated values. This is expected, and I would like to know how I can better cluster this data, so I don't get repeated clusters with duplicate centroids.</p>