簡體   English   中英

scipy.cluster.vq.kmeans2中的“矩陣不是肯定的”錯誤

[英]“Matrix is not positive definite” error in scipy.cluster.vq.kmeans2

我試圖在128維點(圖像中的興趣點的描述符)上執行kmeans聚類。 當我使用scipy.cluster.vq.kmeans2函數時,我有時會收到以下錯誤:

  File "main.py", line 21, in level_routine
current.centroids, current.labels = cluster.vq.kmeans2( current.descriptors, k)
  File "/usr/lib/python2.7/dist-packages/scipy/cluster/vq.py", line 706, in kmeans2
    clusters = init(data, k)
  File "/usr/lib/python2.7/dist-packages/scipy/cluster/vq.py", line 593, in _krandinit
    return init_rankn(data)
  File "/usr/lib/python2.7/dist-packages/scipy/cluster/vq.py", line 586, in init_rankn
    x = np.dot(x, np.linalg.cholesky(cov).T) + mu
  File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 603, in cholesky
    return wrap(gufunc(a, signature=signature, extobj=extobj).astype(result_t))
  File "/usr/lib/python2.7/dist-packages/numpy/linalg/linalg.py", line 93, in _raise_linalgerror_nonposdef
    raise LinAlgError("Matrix is not positive definite")
numpy.linalg.linalg.LinAlgError: Matrix is not positive definite

我知道這與隨機初始化有關,因為在相同的data和相同的k ,我有時不會得到這個錯誤。

我的data是一個numpy矩陣,有128列和可變行數。 我沒有構建協方差矩陣,因此無法控制它。 有沒有辦法擺脫這個錯誤。

嘗試將minit參數更改為'points':

kmeans2(obs,k,minit='points')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM