elki-project / elki

ELKI Data Mining Toolkit
https://elki-project.github.io/
GNU Affero General Public License v3.0
785 stars 323 forks source link

MaximumMatchingAccuracy Index out of Bounds Exception #80

Closed moemode closed 3 years ago

moemode commented 3 years ago

Hey, im new to elki and might be doing something wrong. When i run: for k in $( seq 3 40 ); do java -jar elki-bundle-0.7.6-SNAPSHOT.jar KDDCLIApplication -dbc.in data/synthetic/Vorlesung/mouse.csv -algorithm clustering.kmeans.LloydKMeans -kmeans.k $k -resulthandler ResultWriter -out.gzip -out output/k-$k ; done i get a lot of

Index 6 out of bounds for length 6 java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6 at elki.evaluation.clustering.MaximumMatchingAccuracy.(MaximumMatchingAccuracy.java:69) at elki.evaluation.clustering.ClusterContingencyTable.getMaximumMatchingAccuracy(ClusterContingencyTable.java:246) at elki.evaluation.clustering.EvaluateClustering$ScoreResult.(EvaluateClustering.java:245) at elki.evaluation.clustering.EvaluateClustering.evaluteResult(EvaluateClustering.java:173) at elki.evaluation.clustering.EvaluateClustering.processNewResult(EvaluateClustering.java:159) at elki.evaluation.AutomaticEvaluation.autoEvaluateClusterings(AutomaticEvaluation.java:148) at elki.evaluation.AutomaticEvaluation.processNewResult(AutomaticEvaluation.java:67) at elki.workflow.EvaluationStep$Evaluation.update(EvaluationStep.java:106) at elki.workflow.EvaluationStep$Evaluation.(EvaluationStep.java:95) at elki.workflow.EvaluationStep.runEvaluators(EvaluationStep.java:72) at elki.KDDTask.run(KDDTask.java:109) at elki.application.KDDCLIApplication.run(KDDCLIApplication.java:58) at elki.application.AbstractApplication.runCLIApplication(AbstractApplication.java:175) at elki.application.KDDCLIApplication.main(KDDCLIApplication.java:91) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at elki.application.ELKILauncher.main(ELKILauncher.java:80)

if i do for k in $(seq 3 6) it works. When i go from 6 to 7 or 40 as above it starts to throw the exceptions.

kno10 commented 3 years ago

Thanks for reporting, fixed. Not in k-means, but in a fairly new evaluation class. If you used the maximum matching results anywhere, you may want to rerun them.