我尝试按照教程使用预计算距离进行聚类分析。
http://elki.dbs.ifi.lmu.de/wiki/HowTo/PrecomputedDistances
我使用了以下命令行选项:
-dbc.filter FixedDBIDsFilter -dbc.startid 0 -algorithm clustering.OPTICS -algorithm.distancefunction external.FileBasedDoubleDistanceFunction -distance.matrix /path/to/matrix -optics.minpts 5 -resulthandler ResultWriter
ELKI因配置错误而失败,提示需要db.in文件才能进行计算。
The following configuration errors prevented execution:No value given for parameter "dbc.in":Expected: The name of the input file to be parsed. No value given for parameter "parser.distancefunction":Expected: Distance function used for parsing values.
我的问题是db.in文件是什么?为什么除了成对距离矩阵文件外还需要提供它,因为成对距离矩阵文件已经完全指定了关于点云的所有信息。(此外,除了成对距离信息外,我没有访问其他任何信息。)
我应该如何处理db.in文件?我应该覆盖它,还是指定一些虚假信息等。请帮助我理解。
谢谢你。
回答:
这在ELKI的操作指南中有文档记录:
http://elki.dbs.ifi.lmu.de/wiki/HowTo/PrecomputedDistances
在没有主要数据的情况下使用
-dbc DBIDRangeDatabaseConnection -idgen.count 100
然而,目前有一个bug(补丁在操作指南页面上,将在下一个版本中修复),所以你现在不能完全使用这个功能;作为一种解决方法,你可以使用一个枚举对象的文本文件。
这样做的原因是ELKI被设计为处理多关系数据。它不仅仅是处理矩阵。例如,一些算法可能需要对象的地理表示、该对象的一些测量值,以及用于评估的标签。这就是三个关系。
DBIDRange数据源本质上是创建一个单一的“假”关系,仅包含从0到99的DBIDs。对于那些不需要实际数据,只需要距离的算法(例如LOF或DBSCAN或OPTICS),仅有对象ID和距离矩阵就足够了。