我正在使用ELKI的DBSCAN实现对具有各种大小(范围从数百万个到数千个观测值)的不同数据集进行聚类,并且由于运行该算法时不同数据集可能花费很长时间,所以我想知道是否以某种方式有可能显示算法的进度(或好的估计)吗?
我尝试查看ELKI文档中的Clustering Class失败。
private static Clustering<Model> runModel(double eps, int minpts, Database db){
//double eps = 10;
//int minpts = 5;
//db = data in a double[][] format;
Clustering<Model> c = new DBSCAN<NumberVector>(
EuclideanDistanceFunction.STATIC, eps, minpts).run(db);
return c;
}
我想让这种方法定期写入控制台。或以任何方式我都可以看到算法的进度。
答案 0 :(得分:1)
是的
如果使用-verbose
标志,则记录将包括进度。
通过编程,您可以使用LoggingConfiguration
来设置详细程度。
不是所有算法,而是许多算法;包括DBSCAN。进度记录还将包括剩余时间的估计。
请注意,登录不是免费的-需要付出额外的努力,因此可能导致程序运行时间更长。详细应该是合理的(进度记录包括限制成本的速率控制),但是在DEBUG级别,它可能会变得太昂贵。
要减少运行时间,请确保将索引添加到数据库中。