gpt4 book ai didi

java - ELKI DBSCAN : How to set dbc. 解析器?

转载 作者:行者123 更新时间:2023-11-30 08:23:07 25 4
gpt4 key购买 nike

我正在做 DBSCAN 聚类,除了我想在聚类结果中看到的纬度经度之外,我还有一列。例如数据如下所示:

28.6029445  77.3443552  1
28.6029511 77.3443573 2
28.6029436 77.3443458 3
28.6029011 77.3443032 4
28.6028967 77.3443042 5
28.6029087 77.3442829 6
28.6029132 77.3442797 7

现在在 minigui 中,如果我将 parser.labelindices 设置为 2 并运行任务,那么输出如下所示:

# Cluster: Cluster 0
ID=63222 28.6031295 77.3407848 441
ID=63225 28.603134 77.3407744 444
ID=63220 28.6031566667 77.3407816667 439
ID=63226 28.6030819 77.3407605 445
ID=63221 28.6032 77.3407616667 440
ID=63228 28.603085 77.34071 447
ID=63215 28.60318 77.3408583333 434
ID=63229 28.6030751 77.3407096 448

所以它仍然连接到我作为 label 传递的第 3 列。我通过仅传递纬度和经度及其完全相同来检查聚类结果。因此,在某种程度上,通过将一列作为“标签”传递,我可以在集群结果中检索具有经纬度的该列。

现在我想在我的 java 代码中使用它

// Setup parameters:
ListParameterization params = new ListParameterization();
params.addParameter(
FileBasedDatabaseConnection.Parameterizer.INPUT_ID,
fileLocation);
params.addParameter(
NumberVectorLabelParser.Parameterizer.LABEL_INDICES_ID,
2);
params.addParameter(AbstractDatabase.Parameterizer.INDEX_ID,
RStarTreeFactory.class);

但这会产生一个 NullPointerException。在 MiniGui 中 dbc.parser 默认为 NumberVectorLabelParser。所以这应该可以正常工作。我错过了什么?

最佳答案

我会查看 NPE,它应该会返回更有用的错误消息。

问题很可能是这个参数的类型是List<Integer> ,即您需要传递一个列表。或者,您可以传递 String , 这将被解析。以下应该可以正常工作:

params.addParameter(
NumberVectorLabelParser.Parameterizer.LABEL_INDICES_ID,
"2");

请注意,文本编写器可能(我没有检查过)按原样打印标签。因此,您不能将输出视为它认为您的数据集是 3 维的指示。

调试处理程序 -resulthandler LogResultStructureResultHandler -verbose应该给你类型输出:

java -jar elki.jar KDDCLIApplication -dbc.in dbpedia.gz \
-algorithm NullAlgorithm \
-resulthandler LogResultStructureResultHandler -verbose

应该产生这样的输出:

de.lmu.ifi.dbs.elki.datasource.FileBasedDatabaseConnection.load: 1941 ms
de.lmu.ifi.dbs.elki.algorithm.NullAlgorithm.runtime: 0 ms
BasicResult: Algorithm Step (main)
StaticArrayDatabase: Database (database)
DBIDView: Database IDs (DBID)
MaterializedRelation: DoubleVector,dim=2 (relation)
MaterializedRelation: LabelList (relation)
SettingsResult: Settings (settings)

在这种情况下,我的数据集是来自维基百科的坐标,以及每个坐标的名称。我有一个二维 DoubleVector关系,和一个LabelList存储对象名称的关系。

关于java - ELKI DBSCAN : How to set dbc. 解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23909862/

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