apache.commons.math3.ml.clustering から DBSCANClusterer を使用しようとしています。関数 cluster はクラスターのリストを返しますが、私にとってリストのサイズは常に 0 です。何が間違っていますか? 以下は私のテストコードです:
public class ClusterTest {
public static void main(String[] args) throws FileNotFoundException, IOException {
DBSCANClusterer dbscan = new DBSCANClusterer(.05, 15);
List<DoublePoint> points = getData();
List<Cluster<DoublePoint>> cluster = dbscan.cluster(points);
for(Cluster<DoublePoint> p : cluster)
System.out.println(p.getPoints().toString());
}
private static List<DoublePoint> getData() throws FileNotFoundException, IOException {
List<DoublePoint> data = new ArrayList<DoublePoint>();
BufferedReader reader = new BufferedReader(new FileReader(new File("clust.txt")));
String line;
double[] d = new double[2];
while ((line = reader.readLine()) != null) {
try {
String[] l = line.split("\t");
d[0] = Double.parseDouble(l[0]);
d[1] = Double.parseDouble(l[1]);
data.add(new DoublePoint(d));
} catch (Exception e) { }
}
return data;
}
}
ファイル clust.txt には、X 値と Y 値が tabulator で区切られた 2 つの列が含まれています。いくつかの異なるデータを試してみましたが、常に 0 になります。