Undefined function or variable "idxBest" in kmeans
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Hello,
I have been using kmeans function from the statistics toolbox (with matlab R2012a on both windows and macos). And it often (not always, depending on the data) crashes with the error:
Undefined function or variable "idxBest".
Error in kmeans(line 332)
idx = idxBest;
The function kmeans is called with the following option:
[indNew_nodes ctrs] = kmeans(elem,k,'emptyaction','drop');
where k = 15.
I have been googleing this error, and people have reported problems when elem has NAN values. But it is not the case here.
For instance, in the last crash, elem is a 2000*1 vector:
-100.0000
-100.0000
1.8656
1.8656
1.8656
1.8656
-100.0000
-100.0000
4.9147
-100.0000
-100.0000
4.9147
-100.0000
-100.0000
-100.0000
4.9147
4.9147
4.0652
-100.0000
4.0652
4.0652
-100.0000
-100.0000
-100.0000
-100.0000
4.0652
4.0652
-100.0000
4.0652
-100.0000
-100.0000
4.0652
4.0652
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
4.0652
-100.0000
4.0652
-100.0000
4.0652
-100.0000
4.0652
4.0652
4.0652
4.0652
-100.0000
4.0652
4.0652
-100.0000
4.0652
4.0652
4.0652
-100.0000
1.8656
-100.0000
1.8656
1.8656
1.8656
1.8656
-100.0000
1.8656
1.8656
4.9147
4.9147
4.9147
4.9147
-100.0000
4.9147
4.9147
-100.0000
-100.0000
-100.0000
4.0652
4.0652
4.0652
-100.0000
4.0652
-100.0000
4.0652
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
4.0652
-100.0000
4.0652
4.0652
-100.0000
4.0652
4.0652
-100.0000
-100.0000
4.0652
4.0652
4.0652
4.0652
-100.0000
-100.0000
-100.0000
-100.0000
4.0652
4.9147
4.9147
4.9147
-100.0000
4.9147
4.9147
4.9147
4.9147
4.9147
4.0652
4.0652
4.0652
4.0652
4.0652
4.0652
4.0652
-100.0000
4.0652
4.0652
4.0652
4.0652
-100.0000
-100.0000
4.0652
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
4.0652
-100.0000
-100.0000
4.0652
-100.0000
4.0652
4.0652
4.0652
4.0652
4.0652
-100.0000
4.0652
-100.0000
4.0652
-100.0000
-100.0000
-100.0000
4.9147
4.9147
4.9147
4.9147
4.9147
4.9147
-100.0000
4.9147
4.9147
-100.0000
1.1611
-100.0000
1.1611
-100.0000
1.1611
1.1611
-100.0000
1.1611
-100.0000
1.8656
-100.0000
-100.0000
1.8656
-100.0000
-100.0000
-100.0000
4.8754
-100.0000
-100.0000
-100.0000
-100.0000
-100.0000
1.8656
1.8656
-100.0000
1.8656
1.8656
1.8656
1.8656
-100.0000
1.8656
Can anybody help and tell me why I get these errors?
0 comentarios
Respuestas (2)
Sean de Wolski
el 25 de Feb. de 2013
which -all kmeans
It looks like you have something shadowing the Statistics Toolbox's kmeans()
Tom Lane
el 25 de Feb. de 2013
This looks like a bug. I can see it has been fixed in the toolbox source code for distribution in an upcoming release. From what I can tell, it can only happen if you use 'drop' as the value of 'EmptyAction'. Would it be satisfactory to use 'singleton' instead? If not, and you are willing to edit the kmeans.m file, you could change this line:
totsumD = sum(sumD);
to this:
totsumD = sum(sumD(nonempties));
2 comentarios
Tom Lane
el 1 de Mzo. de 2013
You are right, if a cluster disappears, the function seeks to maintain the requested number of clusters by selecting the point as you describe.
If you see an error using 'singleton', especially if you've edited the file, I'd welcome an e-mail from you with instructions on how to reproduce that.
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!