From b37a5e361d0a12f9d3900089aa03e3947d0d4ef7 Mon Sep 17 00:00:00 2001 From: Gregor Entzian Date: Fri, 30 Jun 2017 09:04:25 +0200 Subject: [PATCH] silhouette index corrected (avoid division by zero) --- src/indices.f95 | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/indices.f95 b/src/indices.f95 index 27479c8..87bbb4d 100644 --- a/src/indices.f95 +++ b/src/indices.f95 @@ -656,7 +656,7 @@ SUBROUTINE cluc_crit_silhouette(p,v) double precision, intent(out) :: v double precision, dimension(sNk) :: dk, sk double precision :: a, b, s - integer :: i, k, pn + integer :: i, k, pn, numberOfElements sk = 0 call cluc_group_counts(p) @@ -665,8 +665,13 @@ SUBROUTINE cluc_crit_silhouette(p,v) pn = p(i) ! Calc the average intra-cluster distance - a = sPtClDist(i,pn)/(sKNum(pn)-1) - + numberOfElements=sKNum(pn) + IF (numberOfElements == 1) THEN + a = 0 + ELSE + a = sPtClDist(i,pn)/(numberOfElements-1) + END IF + ! Calc the minimum average distance to other clusters DO k=1,sNk IF (k == pn) THEN