SciPy kmeans2() a quelques problèmes numériques : d'autres ont signalé des messages d'erreur tels que "Matrix is not positive definite - Cholesky decomposition cannot be computed" dans la version 0.6.0, et je viens de rencontrer le même problème dans la version 0.7.1.
Pour l'instant, je recommande d'utiliser PyCluster à la place. Exemple d'utilisation :
>>> import numpy
>>> import Pycluster
>>> points = numpy.vstack([numpy.random.multivariate_normal(mean,
0.03 * numpy.diag([1,1]),
20)
for mean in [(1, 1), (2, 4), (3, 2)]])
>>> labels, error, nfound = Pycluster.kcluster(points, 3)
>>> labels # Cluster number for each point
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], dtype=int32)
>>> error # The within-cluster sum of distances for the solution
1.7721661785401261
>>> nfound # Number of times this solution was found
1
1 votes
J'ai fait une implémentation similaire pour les images. Vous pouvez utiliser des tableaux 2d au lieu des valeurs RGB. C'est très naïf mais ça marche pour moi. github.com/keremgocen/pattern-recog-notes .