gpt4 book ai didi

java - 如何使用 ELKI 库使用距离矩阵对数据进行聚类?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:08 32 4
gpt4 key购买 nike

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

我已阅读 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 进行聚类时如何正确使用距离矩阵。

最佳答案

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

double distance(int i1, int i2);

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

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

关于java - 如何使用 ELKI 库使用距离矩阵对数据进行聚类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56444618/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com