【问题标题】:How can I cluster data using a distance matrix with the ELKI library?如何使用带有 ELKI 库的距离矩阵对数据进行聚类?
【发布时间】:2019-10-20 00:39:20
【问题描述】:

我有一个距离矩阵,我想在对数据进行聚类时使用该距离矩阵。

我已阅读 ELKI 文档,其中指出我可以在扩展 AbstractNumberVectorDistanceFunction 类时覆盖 distance 方法。

distance 类返回坐标。所以从坐标 x 到坐标 y。这很麻烦,因为距离矩阵只填充了距离值,我们使用索引来查找从index xindex y 的距离值。这是文档中的代码:

public class TutorialDistanceFunction extends AbstractNumberVectorDistanceFunction {
  @Override
  public double distance(NumberVector o1, NumberVector o2) {
    double dx = o1.doubleValue(0) - o2.doubleValue(0);
    double dy = o1.doubleValue(1) - o2.doubleValue(1);
    return dx * dx + Math.abs(dy);
  }
}

我的问题是如何在使用 ELKI 进行聚类时正确使用距离矩阵。

【问题讨论】:

    标签: java cluster-analysis elki distance-matrix


    【解决方案1】:

    AbstractNumberVectorDistanceFunction 是适当的父类如果您的输入数据是数字向量。如果您的数据类型是抽象对象标识符,则改为子类AbstractDBIDRangeDistanceFunction。然后你必须实现

    double distance(int i1, int i2);
    

    对于预先计算的距离,已经有不同的距离函数实现,例如DiskCacheBasedDoubleDistanceFunction,它对存储在磁盘上的距离矩阵进行内存映射。不过,我们应该添加一个DoubleMatrixDistanceFunction,以便在 Java 中直接使用(在下一个版本中,所有类名和包名都将缩短,顺便说一句)。

    另见:https://elki-project.github.io/howto/precomputed_distances 特别是标题为“在没有原始数据的情况下使用”的部分,介绍了在仅使用距离矩阵时如何设置没有原始数据的数据库。

    【讨论】:

    • 这是否支持非对称矩阵?
    猜你喜欢
    • 2011-04-13
    • 1970-01-01
    • 2014-07-09
    • 2017-04-13
    • 2013-07-14
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2019-02-05
    相关资源
    最近更新 更多