package edu.hawaii.jmotif.text.cluster;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.Random;
/**
* Implements a random strategy
*
* @author psenin
*
*/
public class RandomStartStrategy implements StartStrategy {
/**
* {@inheritDoc}
*/
@Override
public LinkedHashMap<String, HashMap<String, Double>> getCentroids(Integer num,
HashMap<String, HashMap<String, Double>> data) {
Random random = new Random();
LinkedHashMap<String, HashMap<String, Double>> res = new LinkedHashMap<String, HashMap<String, Double>>();
ArrayList<String> keys = new ArrayList<String>();
for (String k : data.keySet()) {
keys.add(k.substring(0));
}
for (int i = 0; i < num; i++) {
int rand = random.nextInt(keys.size());
String key = keys.get(rand).substring(0);
keys.remove(rand);
System.out.println("cluster " + i + ", " + key);
HashMap<String, Double> value = new HashMap<String, Double>();
for (Entry<String, Double> e : data.get(key).entrySet()) {
value.put(e.getKey().substring(0), new Double(e.getValue()));
}
res.put(String.valueOf(i), value);
}
return res;
}
}