sklearn GMM引发“ValueError:使用序列设置数组元素”。在稀疏矩阵上

时间:2013-11-14 14:38:09

标签: python scipy scikit-learn sparse-matrix

我试图聚集一组数据点,这些数据点表示为稀疏的scipy矩阵X.即

>>> print type(X)
    <class 'scipy.sparse.csr.csr_matrix'>
>>> print X.shape
    (57, 1038)
>>> print X[0]
  (0, 223)  0.471313296962
  (0, 420)  0.621222153695
  (0, 1030) 0.442688836467
  (0, 124)  0.442688836467

但是,当我将此矩阵提供给sklearn.mixture.GMM模型时,它会引发以下ValueError:

 File "/Library/Python/2.7/site-packages/sklearn/mixture/gmm.py", line 423, in fit
      X = np.asarray(X, dtype=np.float)
 File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/numeric.py", line 235, in asarray
     return array(a, dtype, copy=False, order=order)
 ValueError: setting an array element with a sequence.

但是,我已经能够使sklearn.cluster.KMeans模型在相同的稀疏矩阵X上完美地工作。

其他一些有用的信息: scipy version = 0.11.0,sklearn version = 0.14.1

关于出了什么问题的任何想法?提前谢谢!

1 个答案:

答案 0 :(得分:4)

GMM不支持稀疏矩阵输入,而KMeans则支持稀疏矩阵输入。如果估计器支持稀疏矩阵,则始终在相关方法的docstring中明确说明。