@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 <T> Cluster<T> performClustering(double[][] distances, T[] clusterNames, LinkageStrategy linkageStrategy) { /* Argument checks */ if (distances == null || distances.length == 0 || distances[0].length != distances.length) { throw new IllegalArgumentException("Invalid distance matrix"); } if (distances.length != clusterNames.length) { throw new IllegalArgumentException("Invalid cluster name array"); } if (linkageStrategy == null) { throw new IllegalArgumentException("Undefined linkage strategy"); } /* Setup model */ List<Cluster<T>> clusters = createClusters(clusterNames); LinkedList<ClusterPair> linkages = createLinkages(distances, clusters); /* Process */ HierarchyBuilder builder = new HierarchyBuilder(clusters, linkages); while (!builder.isTreeComplete()) { builder.agglomerate(linkageStrategy); } return builder.getRootCluster(); }
@Override public <T> Cluster<T> performClustering(double[][] distances, T[] clusterNames, LinkageStrategy linkageStrategy) { /* 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<T>> clusters = createClusters(clusterNames); LinkedList<ClusterPair> linkages = createLinkages(distances, clusters); /* Process */ HierarchyBuilder builder = new HierarchyBuilder(clusters, linkages); while (!builder.isTreeComplete()) { builder.agglomerate(linkageStrategy); } return builder.getRootCluster(); }
@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 Cluster performClustering(double[][] distances, String[] clusterNames, LinkageStrategy linkageStrategy) { /* 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); while (!builder.isTreeComplete()) { builder.agglomerate(linkageStrategy); } return builder.getRootCluster(); }
@Override public Cluster performClustering(double[][] distances, String[] clusterNames, LinkageStrategy linkageStrategy) { /* 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); while (!builder.isTreeComplete()) { builder.agglomerate(linkageStrategy); } return builder.getRootCluster(); }
@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 Cluster performWeightedClustering(double[][] distances, String[] clusterNames, double[] weights, LinkageStrategy linkageStrategy) { checkArguments(distances, clusterNames, linkageStrategy); if (weights.length != clusterNames.length) { throw new IllegalArgumentException("Invalid weights array"); } /* Setup model */ List<Cluster> clusters = createClusters(clusterNames, weights); DistanceMap linkages = createLinkages(distances, clusters); /* Process */ HierarchyBuilder builder = new HierarchyBuilder(clusters, linkages); while (!builder.isTreeComplete()) { builder.agglomerate(linkageStrategy); } return builder.getRootCluster(); }
@Override public Cluster performWeightedClustering(double[][] distances, String[] clusterNames, double[] weights, LinkageStrategy linkageStrategy) { checkArguments(distances, clusterNames, linkageStrategy); if (weights.length != clusterNames.length) { throw new IllegalArgumentException("Invalid weights array"); } /* Setup model */ List<Cluster> clusters = createClusters(clusterNames, weights); DistanceMap linkages = createLinkages(distances, clusters); /* Process */ HierarchyBuilder builder = new HierarchyBuilder(clusters, linkages); while (!builder.isTreeComplete()) { builder.agglomerate(linkageStrategy); } return builder.getRootCluster(); }
@Override public Cluster performClustering(double[][] distances, String[] clusterNames, LinkageStrategy linkageStrategy) { checkArguments(distances, clusterNames, linkageStrategy); /* Setup model */ List<Cluster> clusters = createClusters(clusterNames); DistanceMap linkages = createLinkages(distances, clusters); /* Process */ HierarchyBuilder builder = new HierarchyBuilder(clusters, linkages); while (!builder.isTreeComplete()) { builder.agglomerate(linkageStrategy); } return builder.getRootCluster(); }
@Override public Cluster performClustering(double[][] distances, String[] clusterNames, LinkageStrategy linkageStrategy) { checkArguments(distances, clusterNames, linkageStrategy); /* Setup model */ List<Cluster> clusters = createClusters(clusterNames); DistanceMap linkages = createLinkages(distances, clusters); /* Process */ HierarchyBuilder builder = new HierarchyBuilder(clusters, linkages); while (!builder.isTreeComplete()) { builder.agglomerate(linkageStrategy); } return builder.getRootCluster(); }