我似乎无法让这个算法在我的数据集上工作,所以我从我的数据中选取了一个非常小的子集来尝试,但这也没有成功。
我想将一个预计算的距离矩阵输入到ELKI中,然后让它找出我的点的可达距离列表,但所有点的可达距离都为0。
ID=1 reachdist=Infinity predecessor=1ID=2 reachdist=0.0 predecessor=1ID=4 reachdist=0.0 predecessor=1ID=3 reachdist=0.0 predecessor=1
我的ELKI参数如下:
运行:-dbc DBIDRangeDatabaseConnection -idgen.start 1 -idgen.count 4 -algorithm 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.08955851197242741 3 0.194589316844942 3 0.1963157206773761 4 0.1379401236772542 4 0.1358522325754173 4 0.141511023044586
任何关于我哪里出错的建议都将不胜感激。
回答:
当我将你的距离矩阵改为从0开始计数时,它似乎就工作了:
ID=0 reachdist=Infinity predecessor=-2147483648ID=1 reachdist=0.0895585119724274 predecessor=-2147483648ID=3 reachdist=0.135852232575417 predecessor=1ID=2 reachdist=0.141511023044586 predecessor=3
也许你应该提交一个错误报告 – 对我来说,这看起来像是一个错误。此外,predecessor=-2147483648
可能应该改为predecessor=None
或类似的东西。