@Override public List<Cluster> performFlatClustering(double[][] distances, String[] clusterNames, LinkageStrategy linkageStrategy, Double threshold) { /* Argument checks */ if (distances == null || distances.length == 0) { throw new IllegalArgumentException("Invalid distance matrix"); } if (distances[0].length != clusterNames.length * (clusterNames.length - 1) / 2) { throw new IllegalArgumentException("Invalid cluster name array"); } if (linkageStrategy == null) { throw new IllegalArgumentException("Undefined linkage strategy"); } /* Setup model */ List<Cluster> clusters = createClusters(clusterNames); DistanceMap linkages = createLinkages(distances, clusters); /* Process */ HierarchyBuilder builder = new HierarchyBuilder(clusters, linkages); return builder.flatAgg(linkageStrategy, threshold); }
@Override public List<Cluster> performFlatClustering(double[][] distances, String[] clusterNames, LinkageStrategy linkageStrategy, Double threshold) { /* Argument checks */ if (distances == null || distances.length == 0) { throw new IllegalArgumentException("Invalid distance matrix"); } if (distances[0].length != clusterNames.length * (clusterNames.length - 1) / 2) { throw new IllegalArgumentException("Invalid cluster name array"); } if (linkageStrategy == null) { throw new IllegalArgumentException("Undefined linkage strategy"); } /* Setup model */ List<Cluster> clusters = createClusters(clusterNames); DistanceMap linkages = createLinkages(distances, clusters); /* Process */ HierarchyBuilder builder = new HierarchyBuilder(clusters, linkages); return builder.flatAgg(linkageStrategy, threshold); }
@Override public List<Cluster> performFlatClustering(double[][] distances, String[] clusterNames, LinkageStrategy linkageStrategy, Double threshold) { checkArguments(distances, clusterNames, linkageStrategy); /* Setup model */ List<Cluster> clusters = createClusters(clusterNames); DistanceMap linkages = createLinkages(distances, clusters); /* Process */ HierarchyBuilder builder = new HierarchyBuilder(clusters, linkages); return builder.flatAgg(linkageStrategy, threshold); }
@Override public List<Cluster> performFlatClustering(double[][] distances, String[] clusterNames, LinkageStrategy linkageStrategy, Double threshold) { checkArguments(distances, clusterNames, linkageStrategy); /* Setup model */ List<Cluster> clusters = createClusters(clusterNames); DistanceMap linkages = createLinkages(distances, clusters); /* Process */ HierarchyBuilder builder = new HierarchyBuilder(clusters, linkages); return builder.flatAgg(linkageStrategy, threshold); }