在模型为 运行 时显示 ELKI DBSCAN 聚类模型的进度?

Showing progress of the ELKI DBSCAN clustering model while the model is running?

我正在使用 ELKI 的 DBSCAN 实现来聚类不同大小的不同数据集(从数百万到数千个观察值不等),因为当我 运行 算法时,不同的数据集可能需要相当长的时间我想知道是否有可能以某种方式显示算法的进度(或良好的估计)?

我试图查看集群 Class 的 ELKI 文档,但没有成功。

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;
}

我希望有这种方法可以定期写入控制台。或者以任何方式,我将能够看到算法的进展。

是的。

如果您使用 -verbose 标志,日志记录将包括进度。

以编程方式,您可以使用 LoggingConfiguration 设置详细级别。

并非适用于所有算法,但适用于许多算法;包括 DBSCAN。进度记录还将包括对剩余时间的估计。

请注意,日志记录不是免费的 - 它需要额外的努力,因此可能会导致程序 运行 更长的时间。详细应该是合理的(并且进度记录包括限制成本的速率控制),但在 DEBUG 级别它可能变得太昂贵了。

要减少运行时间,请确保向您的数据库添加索引。