Java 如何使用ELKI库中的距离矩阵对数据进行聚类?
我有一个距离矩阵,我想在对数据进行聚类时使用该距离矩阵 我已经阅读了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
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直接使用(顺便说一句,在下一个版本中,所有类名和包名都将被缩短)
另见:
特别是标题为“在没有原始数据的情况下使用”的部分,介绍了在仅使用距离矩阵时如何设置没有原始数据的数据库。这是否支持不对称矩阵?这是否支持不对称矩阵?