@Override public String getIdentifier() { return (isConverged() ? "SV-" : "SC-") + getId(); }
@Override public String asFormatString() { return this.getIdentifier() + ": " + this.computeCentroid().asFormatString(); }
public static void main(String[] args) throws Exception { ToolRunner.run(new Configuration(), new FuzzyKMeansDriver(), args); }
@Override public Vector classify(Vector data, ClusterClassifier prior) { Collection<SoftCluster> clusters = Lists.newArrayList(); List<Double> distances = Lists.newArrayList(); for (Cluster model : prior.getModels()) { SoftCluster sc = (SoftCluster) model; clusters.add(sc); distances.add(sc.getMeasure().distance(data, sc.getCenter())); } FuzzyKMeansClusterer fuzzyKMeansClusterer = new FuzzyKMeansClusterer(); fuzzyKMeansClusterer.setM(m); return fuzzyKMeansClusterer.computePi(clusters, distances); }
Path pointsPath = getTestTempDirPath("points"); Path clustersPath = getTestTempDirPath("clusters"); Configuration conf = getConfiguration(); ClusteringTestUtils.writePointsToFile(points, new Path(pointsPath, "file1"), fs, conf); try { for (int i = 0; i < k + 1; i++) { Vector vec = tweakValue(points.get(i).get()); SoftCluster cluster = new SoftCluster(vec, i, measure); cluster.observe(cluster.getCenter(), 1); writer.append(new Text(cluster.getIdentifier()), cluster); Path output = getTestTempDirPath("output" + k); optKey(DefaultOptionCreator.INPUT_OPTION), pointsPath.toString(), optKey(DefaultOptionCreator.CLUSTERS_IN_OPTION), clustersPath.toString(), optKey(DefaultOptionCreator.OUTPUT_OPTION), output.toString(), optKey(DefaultOptionCreator.DISTANCE_MEASURE_OPTION), EuclideanDistanceMeasure.class.getName(), optKey(DefaultOptionCreator.CONVERGENCE_DELTA_OPTION), "0.001", optKey(DefaultOptionCreator.MAX_ITERATIONS_OPTION), "2", optKey(FuzzyKMeansDriver.M_OPTION), "2.0",
public static void main(String[] args) { List<Vector> sampleData = new ArrayList<Vector>(); RandomPointsUtil.generateSamples(sampleData, 400, 1, 1, 3); RandomPointsUtil.generateSamples(sampleData, 300, 1, 0, 0.5); RandomPointsUtil.generateSamples(sampleData, 300, 0, 2, 0.1); int k = 3; List<Vector> randomPoints = RandomPointsUtil.chooseRandomPoints(sampleData, k); List<SoftCluster> clusters = new ArrayList<SoftCluster>(); int clusterId = 0; for (Vector v : randomPoints) { clusters.add(new SoftCluster(v, clusterId++, new EuclideanDistanceMeasure())); } List<List<SoftCluster>> finalClusters = FuzzyKMeansClusterer .clusterPoints(sampleData, clusters, new EuclideanDistanceMeasure(), 0.01, 3, 10); for (SoftCluster cluster : finalClusters.get(finalClusters.size() - 1)) { System.out.println("Fuzzy Cluster id: " + cluster.getId() + " center: " + cluster.getCenter().asFormatString()); } }
private static ClusterClassifier newSoftClusterClassifier() { List<Cluster> models = Lists.newArrayList(); DistanceMeasure measure = new ManhattanDistanceMeasure(); models.add(new SoftCluster(new DenseVector(2).assign(1), 0, measure)); models.add(new SoftCluster(new DenseVector(2), 1, measure)); models.add(new SoftCluster(new DenseVector(2).assign(-1), 2, measure)); return new ClusterClassifier(models, new FuzzyKMeansClusteringPolicy()); }
public Vector computePi(Collection<SoftCluster> clusters, List<Double> clusterDistanceList) { Vector pi = new DenseVector(clusters.size()); for (int i = 0; i < clusters.size(); i++) { double probWeight = computeProbWeight(clusterDistanceList.get(i), clusterDistanceList); pi.set(i, probWeight); } return pi; }
@Override @Before public void setUp() throws Exception { super.setUp(); Configuration conf = getConfiguration(); fs = FileSystem.get(conf); }
@Override public Vector classify(Vector data, ClusterClassifier prior) { Collection<SoftCluster> clusters = Lists.newArrayList(); List<Double> distances = Lists.newArrayList(); for (Cluster model : prior.getModels()) { SoftCluster sc = (SoftCluster) model; clusters.add(sc); distances.add(sc.getMeasure().distance(data, sc.getCenter())); } FuzzyKMeansClusterer fuzzyKMeansClusterer = new FuzzyKMeansClusterer(); fuzzyKMeansClusterer.setM(m); return fuzzyKMeansClusterer.computePi(clusters, distances); }
int clusterId = 0; for (Vector v : randomPoints) { clusters.add(new SoftCluster(v, clusterId++, new CosineDistanceMeasure())); List<List<SoftCluster>> finalClusters = FuzzyKMeansClusterer.clusterPoints(points, clusters, new CosineDistanceMeasure(), 0.01, 3, 10); for (SoftCluster cluster : finalClusters.get(finalClusters.size() - 1)) { System.out.println("Cluster id: " + cluster.getId() + " center: " + cluster.getCenter().asFormatString());
@Override public String getIdentifier() { return (isConverged() ? "SV-" : "SC-") + getId(); }
@Override public String asFormatString() { return this.getIdentifier() + ": " + this.computeCentroid().asFormatString(); }
public static void main(String[] args) throws Exception { ToolRunner.run(new Configuration(), new FuzzyKMeansDriver(), args); }
public Vector computePi(Collection<SoftCluster> clusters, List<Double> clusterDistanceList) { Vector pi = new DenseVector(clusters.size()); for (int i = 0; i < clusters.size(); i++) { double probWeight = computeProbWeight(clusterDistanceList.get(i), clusterDistanceList); pi.set(i, probWeight); } return pi; }
@Override public Vector classify(Vector data, ClusterClassifier prior) { Collection<SoftCluster> clusters = new ArrayList<>(); List<Double> distances = new ArrayList<>(); for (Cluster model : prior.getModels()) { SoftCluster sc = (SoftCluster) model; clusters.add(sc); distances.add(sc.getMeasure().distance(data, sc.getCenter())); } FuzzyKMeansClusterer fuzzyKMeansClusterer = new FuzzyKMeansClusterer(); fuzzyKMeansClusterer.setM(m); return fuzzyKMeansClusterer.computePi(clusters, distances); }
@Override public String getIdentifier() { return (isConverged() ? "SV-" : "SC-") + getId(); }
@Override public String asFormatString() { return this.getIdentifier() + ": " + this.computeCentroid().asFormatString(); }
public static void main(String[] args) throws Exception { ToolRunner.run(new Configuration(), new FuzzyKMeansDriver(), args); }
public Vector computePi(Collection<SoftCluster> clusters, List<Double> clusterDistanceList) { Vector pi = new DenseVector(clusters.size()); for (int i = 0; i < clusters.size(); i++) { double probWeight = computeProbWeight(clusterDistanceList.get(i), clusterDistanceList); pi.set(i, probWeight); } return pi; }