Avi*_*pta 6 python numpy scipy k-means
我试图在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
Run Code Online (Sandbox Code Playgroud)
我知道这与随机初始化有关,因为在相同data和相同的情况下k,我有时不会得到这个错误.
我data是一个numpy矩阵,有128列和可变行数.我没有构建协方差矩阵,因此无法控制它.有没有办法摆脱这个错误.
Ali*_*aei 11
尝试将minit参数更改为'points':
kmeans2(obs,k,minit='points')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1990 次 |
| 最近记录: |