title: Using a Sparse Matrix with sklearn Affinity Propagation
body: <p>I am having problems with using a scipy COO sparse matrix as an input for Affinity propagation, but it works perfectly fine with a numpy array.</p>
  
  <p>Just an example, say my similarity matrix is:</p>
  
  <pre><code>[[1.0, 0.9, 0.2]
   [0.9, 1.0, 0.0]
   [0.2, 0.0, 1.0]]
  </code></pre>
  
  <p>Numpy matrix version</p>
  
  <pre><code>import numpy as np
  import sklearn.cluster
  
  simnp = np.array([[1,0.9,0.2],[0.9,1,0],[0.2,0,1]])
  affprop = sklearn.cluster.AffinityPropagation(affinity="precomputed")
  affprop.fit(simnp)
  </code></pre>
  
  <p>works as expected.</p>
  
  <p>Sparse Matrix version</p>
  
  <pre><code>import scipy.sparse as sps
  import sklearn.cluster
  
  simsps = sps.coo_matrix(([1,1,1,0.9,0.9,0.2,0.2],([0,1,2,0,1,0,2],[0,1,2,1,0,2,0])),(3,3))
  affprop = sklearn.cluster.AffinityPropagation(affinity="precomputed")
  affprop.fit(simsps)
  </code></pre>
  
  <p>returns the following error</p>
  
  <pre><code>Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "C:\Python\Python27\lib\site-packages\sklearn\cluster\affinity_propagation_.py", line 301, in fit
      copy=self.copy, verbose=self.verbose, return_n_iter=True)
    File "C:\Python\Python27\lib\site-packages\sklearn\cluster\affinity_propagation_.py", line 90, in affinity_propagation
      preference = np.median(S)
    File "C:\Python\Python27\lib\site-packages\numpy\lib\function_base.py", line 3084, in median
      overwrite_input=overwrite_input)
    File "C:\Python\Python27\lib\site-packages\numpy\lib\function_base.py", line 2997, in _ureduce
      r = func(a, **kwargs)
    File "C:\Python\Python27\lib\site-packages\numpy\lib\function_base.py", line 3158, in _median
      return mean(part[indexer], axis=axis, out=out)
    File "C:\Python\Python27\lib\site-packages\numpy\core\fromnumeric.py", line 2878, in mean
      out=out, keepdims=keepdims)
    File "C:\Python\Python27\lib\site-packages\numpy\core\_methods.py", line 70, in _mean
      ret = ret.dtype.type(ret / rcount)
  ValueError: setting an array element with a sequence.
  </code></pre>
  
  <p>My laptop does not have enough RAM to take a dense matrix thus wanting to use a sparse matrix.</p>
  
  <p>What am I doing wrong?</p>
  
  <p>Thanks.</p>