ELKI OPTICS 预计算距离矩阵

ELKI OPTICS pre-computed distance matrix

我似乎无法让这个算法在我的数据集上运行,所以我使用了非常小的数据子集并试图让它运行,但这也没有用。

我想将一个预先计算的距离矩阵输入到 ELKI,然后让它找到我的点的可达距离列表,但我得到的所有点的可达距离都是 0。

ID=1 reachdist=Infinity predecessor=1
ID=2 reachdist=0.0 predecessor=1
ID=4 reachdist=0.0 predecessor=1
ID=3 reachdist=0.0 predecessor=1

我的 ELKI 参数如下:

运行: -dbc DBIDRangeDatabaseConnection -idgen.start 1 -idgen.count 4 -算法 clustering.optics.OPTICSList -algorithm.distancefunction external.FileBasedDoubleDistanceFunction -distance.matrix /Users/jperrie/Documents/testfile.txt -optics.epsilon 1.0 -optics.minpts 2 -resulthandler ResultWriter -out /Applications/elki-0.7.0/elkioutputtest

我使用 DBIDRangeDatabaseConnection 而不是输入文件来创建索引 1 到 4,并传入具有以下格式的距离矩阵,其中每行有 2 个索引和一个距离。

1 2 0.0895585119724274
1 3 0.19458931684494
2 3 0.196315720677376
1 4 0.137940123677254
2 4 0.135852232575417
3 4 0.141511023044586

如能指出我出错的地方,我们将不胜感激。

当我将您的距离矩阵更改为从 0 开始计数时,它似乎起作用了:

ID=0 reachdist=Infinity predecessor=-2147483648
ID=1 reachdist=0.0895585119724274 predecessor=-2147483648
ID=3 reachdist=0.135852232575417 predecessor=1
ID=2 reachdist=0.141511023044586 predecessor=3

也许您应该提交错误报告 - 对我来说,这似乎是一个错误。此外,predecessor=-2147483648 可能应该是 predecessor=None 或类似的东西。

这是由于最近的更改,文档中可能尚未正确显示。

当您在MiniGUI 中进行多次调用时,ELKI 会分配新的对象DBID。因此,如果您有一个包含 100 个对象的数据集,第一个 运行 将使用 0-99,第二个 100-199,第三个 200-299 等等 - 这可能是理想的(如果您考虑更长的 运行ning 进程,您希望对象 ID 是唯一的),但它也可能是令人惊讶的行为。

然而,这使得预先计算的距离矩阵真的很难使用;特别是真实数据。因此,这些 类 被更改为使用 offsets。所以现在距离矩阵的格式是

DBIDoffset1 DBIDoffset2 distance

其中偏移量 0 = 开始 + 0 是 第一个 对象。

当我回到办公室时(不要忘记),我将 1. 更新文档以反映这一点,提供 2. 偏移参数,以便您可以从 1 开始继续计数, 3. make默认距离 "NaN" 或 "infinity",以及 4. 如果您有 100 个对象,则添加完整性检查以发出警告,但距离是针对对象 1-100 而不是 0-99 给出的。