Skip to content

Commit f77904d

Browse files
committed
[SPARK-16473][MLLIB] Fix BisectingKMeans Algorithm failing in edge case where no children exist in updateAssignments
1 parent 150d26c commit f77904d

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

mllib/src/main/scala/org/apache/spark/mllib/clustering/BisectingKMeans.scala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -339,10 +339,14 @@ private object BisectingKMeans extends Serializable {
339339
assignments.map { case (index, v) =>
340340
if (divisibleIndices.contains(index)) {
341341
val children = Seq(leftChildIndex(index), rightChildIndex(index))
342-
val selected = children.minBy { child =>
343-
KMeans.fastSquaredDistance(newClusterCenters(child), v)
342+
if (children.length > 0) {
343+
val selected = children.minBy { child =>
344+
KMeans.fastSquaredDistance(newClusterCenters(child), v)
345+
}
346+
(selected, v)
347+
} else {
348+
(index, v)
344349
}
345-
(selected, v)
346350
} else {
347351
(index, v)
348352
}

0 commit comments

Comments
 (0)