@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); }
private static Cluster createSampleCluster() { double[][] distances = new double[][] { { 0, 1, 9, 7, 11, 14 }, { 1, 0, 4, 3, 8, 10 }, { 9, 4, 0, 9, 2, 8 }, { 7, 3, 9, 0, 6, 13 }, { 11, 8, 2, 6, 0, 10 }, { 14, 10, 8, 13, 10, 0 } }; String[] names = new String[] { "O1", "O2", "O3", "O4", "O5", "O6" }; ClusteringAlgorithm alg = new DefaultClusteringAlgorithm(); Cluster cluster = alg.performClustering(distances, names, new AverageLinkageStrategy()); cluster.toConsole(0); return cluster; }
@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(); }
private static Cluster createSampleCluster() { double[][] distances = new double[][] { { 0, 1, 9, 7, 11, 14 }, { 1, 0, 4, 3, 8, 10 }, { 9, 4, 0, 9, 2, 8 }, { 7, 3, 9, 0, 6, 13 }, { 11, 8, 2, 6, 0, 10 }, { 14, 10, 8, 13, 10, 0 } }; String[] names = new String[] { "O1", "O2", "O3", "O4", "O5", "O6" }; ClusteringAlgorithm alg = new DefaultClusteringAlgorithm(); Cluster cluster = alg.performClustering(distances, names, new AverageLinkageStrategy()); cluster.toConsole(0); return cluster; }
@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); }
private static Cluster createSampleCluster() { double[][] distances = new double[][] { { 0, 1, 9, 7, 11, 14 }, { 1, 0, 4, 3, 8, 10 }, { 9, 4, 0, 9, 2, 8 }, { 7, 3, 9, 0, 6, 13 }, { 11, 8, 2, 6, 0, 10 }, { 14, 10, 8, 13, 10, 0 } }; String[] names = new String[] { "O1", "O2", "O3", "O4", "O5", "O6" }; ClusteringAlgorithm alg = new DefaultClusteringAlgorithm(); Cluster cluster = alg.performClustering(distances, names, new AverageLinkageStrategy()); cluster.toConsole(0); return cluster; }
@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(); }
ClusteringAlgorithm alg = new DefaultClusteringAlgorithm(); Cluster cluster = alg.performClustering(dt, patternsName, new AverageLinkageStrategy());
@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 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(); }