Java 如何使用ELKI库中的距离矩阵对数据进行聚类?

Java 如何使用ELKI库中的距离矩阵对数据进行聚类?,java,cluster-analysis,elki,distance-matrix,Java,Cluster Analysis,Elki,Distance Matrix,我有一个距离矩阵,我想在对数据进行聚类时使用该距离矩阵 我已经阅读了ELKI文档,它声明在扩展AbstractNumberVectorDistanceFunction类时可以覆盖distance方法 然而,distance类返回坐标。从x坐标到y坐标。这很麻烦,因为距离矩阵仅用距离值填充,我们使用索引来查找从索引x到索引y的距离值。以下是文档中的代码: public class TutorialDistanceFunction extends AbstractNumberVectorDistan

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

我已经阅读了ELKI文档,它声明在扩展
AbstractNumberVectorDistanceFunction
类时可以覆盖
distance
方法

然而,
distance
类返回坐标。从x坐标到y坐标。这很麻烦,因为距离矩阵仅用距离值填充,我们使用索引来查找从
索引x
索引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进行聚类时正确使用距离矩阵。

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

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

另见:
特别是标题为“在不使用原始数据的情况下使用”的部分,介绍如何在仅使用距离矩阵的情况下设置没有原始数据的数据库。

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

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

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

这是否支持不对称矩阵?这是否支持不对称矩阵?