refactoring

This commit is contained in:
frankknoll
2023-11-16 15:39:01 +01:00
parent 44e383734c
commit ba628774f5

View File

@@ -19,24 +19,25 @@ class ClustersFactory:
clusters = [[i] for i in range(numClusters)] clusters = [[i] for i in range(numClusters)]
while keepClustering: while keepClustering:
maxDistance = 0 maxDistance = 0
bestCombo = None bestClusterIndexCombo = None
keepClustering = False keepClustering = False
numClusters = preferenceMatrix.shape[0] numClusters = preferenceMatrix.shape[0]
for i in range(numClusters): for clusterIndexA in range(numClusters):
set_a = preferenceMatrix[i] preferenceSetA = preferenceMatrix[clusterIndexA]
for j in range(i): for clusterIndexB in range(clusterIndexA):
set_b = preferenceMatrix[j] preferenceSetB = preferenceMatrix[clusterIndexB]
distance = ClustersFactory._intersectionOverUnion(set_a, set_b); distance = ClustersFactory._intersectionOverUnion(preferenceSetA, preferenceSetB);
if distance > maxDistance: if distance > maxDistance:
keepClustering = True keepClustering = True
maxDistance = distance maxDistance = distance
bestCombo = (i, j) bestClusterIndexCombo = (clusterIndexA, clusterIndexB)
if keepClustering: if keepClustering:
clusters[bestCombo[0]] += clusters[bestCombo[1]] (clusterIndexA, clusterIndexB) = bestClusterIndexCombo
clusters.pop(bestCombo[1]) clusters[clusterIndexA] += clusters[clusterIndexB]
preferenceMatrix[bestCombo[0]] = np.logical_and(preferenceMatrix[bestCombo[0]], preferenceMatrix[bestCombo[1]]) clusters.pop(clusterIndexB)
preferenceMatrix = np.delete(preferenceMatrix, bestCombo[1], axis = 0) preferenceMatrix[clusterIndexA] = np.logical_and(preferenceMatrix[clusterIndexA], preferenceMatrix[clusterIndexB])
preferenceMatrix = np.delete(preferenceMatrix, clusterIndexB, axis = 0)
return clusters return clusters