问题标签 [elki]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
288 浏览

dbscan - ELKI如何提高精度?

我正在使用 ELKI mini GUI 对我的数据点进行聚类。我有大约 1300 个 GPS 数据点,我想对我的 GPS 点(DBSCAN 和 OPTICS)进行聚类。作为 dbc.in 的输入文件,我使用只有 2 列(X,Y)的 csv 文件。问题是,我的 X,Y(投影)坐标非常精确,精确到小数点后 6 位。但是在运行集群算法之后,我的精度越来越低(最多小数点后 3 位)。如何提高输出点的精度?

而且在生成集群时,它会自动调用一些与我的实际点 ID(ID、X、Y)不对应的虚拟 ID。但是,输入 csv 中没有给出 ID。它仅包含两列 (X,Y)。

0 投票
1 回答
131 浏览

data-mining - 如何在 ELKI 中使用 DimensionSelectingLatLngDistanceFunction

有谁知道我应该如何使用DimensionSelectingLatLngDistanceFunction在 ELKI 中使用?

当尝试使用它时,我得到Constraint: distance.latitudedim >= 0.

但究竟是-distance.latitudedim什么?它是否让我指定米而不是度数?但是我该怎么做呢?当我查看代码时,我可以看到它是一个整数..

0 投票
1 回答
490 浏览

cluster-analysis - ELKI - 聚类统计

当通过 ELKI 0.5 中的聚类算法分析数据集时,程序会生成许多统计数据:Jaccard 指数、F1-Measures 等。为了计算这些统计数据,必须有 2 个聚类进行比较。该算法创建的聚类与什么相比?

0 投票
2 回答
4192 浏览

cluster-analysis - 在 ELKI 中运行 DBSCAN

我正在尝试对一些地理空间数据进行聚类,我之前尝试过WEKA库。我找到了这个基准,并决定尝试ELKI

尽管有人建议不要将 ELKI 用作 Java 库(假设它的维护比 UI 少),但我还是将它合并到了我的应用程序中,我可以说我对结果感到非常满意。它用于存储数据的结构比 Weka 使用的结构要高效得多,而且它可以选择使用空间索引这一事实无疑是一个加分项。

但是,当我将Weka 的 DBSCAN的结果与ELKI 的 DBSCAN的结果进行比较时,我有点困惑。我会接受不同的实现可以产生稍微不同的结果,但是这些差异让我认为算法有问题(可能是我的代码)。两种算法中簇的数量及其几何形状非常不同。

作为记录,我使用的是最新版本的 ELKI (0.6.0),我用于模拟的参数是:

minpts=50 ε=0.008

我编写了两个 DBSCAN 函数(用于 Weka 和 ELKI),其中“入口点”是带有点的 csv,它们的“输出”也是相同的:一个计算一组点的凹壳的函数(每个集群一个)。由于将 csv 文件读入 ELKI“数据库”的功能相对简单,我认为我的问题可能是:

a) 在算法的参数化中;b) 阅读结果(很可能)。

参数化 DBSCAN 不会带来任何挑战,我使用了我之前通过 UI 测试过的两个强制参数:

阅读结果更具挑战性,因为我不完全了解存储集群的结构的组织;我的想法是遍历每个集群,获取点列表,并将其传递给计算凹壳的函数,以生成多边形。

我注意到“噪音”是作为一个集群出现的,所以我忽略了这个集群(我不想画它)。我不确定这是否是阅读集群的正确方法,因为我找不到很多例子。我也有一些问题,我还没有找到答案:

  • getAllClusters() 和 getTopLevelClusters() 有什么区别?
  • DBSCAN 集群是否“嵌套”,即:我们可以同时拥有属于多个集群的点吗?为什么?
  • 我在某处读到我们不应该使用数据库 ID 来识别点,因为它们是供 ELKI 内部使用的,但是还有什么其他方法可以获取每个集群中的点列表?我读到您可以对标签使用关系,但我不确定如何实际实现它......

任何可以为我指明正确方向的评论,或任何迭代 ELKI DBSCAN 结果集的代码建议都将受到欢迎!我还在我的代码中使用了 ELKI 的 OPTICSxi,我对这些结果还有更多疑问,但我想我会将其保存到另一篇文章中。

0 投票
1 回答
512 浏览

cluster-analysis - 使用 ELKI 的距离函数

这是对上一个问题的跟进,我们在其中评论说,使用带有经纬度坐标的欧几里得距离不会产生正确的结果。我在文档中读到ELKI 启用地理数据,即int它的距离函数,存在于各种聚类算法中。在 ELKI 的用户界面中,我可以看到有一些选项可以将默认距离函数 (euclidian) 替换为更合适的函数。我还看到,在这种情况下,您需要提供一个数据,这是有道理的,因为您必须告诉 ELKI 数据是如何投影的。我在 UI 中的选项是使用“geo.LngLatDistanceFunction”,因为我使用的是 (x,y) 坐标并使用“WGS84SpheroidEarthModel”,因为数据位于 epsg:4326 中。我正在尝试在 Java 中相应地对我的算法进行参数化,但我不知道该怎么做:如果我像这样初始化我的参数:

我可以这样设置距离函数吗?

geo.model 呢?(我对此一无所知)

0 投票
1 回答
506 浏览

cluster-analysis - 在 ELKI 上使用地理距离函数

我正在使用 ELKI 来挖掘一些地理空间数据(纬度、经度对),我非常关心使用正确的数据类型和算法。在我的算法的参数化器中,我尝试通过地理函数(LngLatDistanceFunction,因为我使用 x,y 数据)来更改默认距离函数,如下所示:

然而结果非常令人惊讶:它创建了重复点的集群,例如下面的示例:

(2.17199922, 41.38190043, NaN), (2.17199922, 41.38190043, NaN), (2.17199922, 41.38190043, NaN), (2.17199922, 41.38190043, NaN), (2.17199922, 41.38190043, NaN), (2.17199922, 41.38190043, NaN), (2.17199922 , 41.38190043, NaN), (2.17199922, 41.38190043, NaN), (2.17199922, 41.38190043, NaN), (2.17199922, 41.38190043, NaN)]

这是此示例的图像。

我是否使用了非地理距离(例如曼哈顿):

他的输出更合理

我想知道我的代码是否有问题。

我直接在数据库上运行算法,如下所示:

然后在循环中迭代结果,同时构造凸包:

为了将每个 ID 映射到一个点,我使用了一个在读取数据库时初始化的 hashmap。我添加此代码的原因是因为我怀疑我可能在向/从算法传递/读取的结构方面做错了什么。我提前感谢您提供任何可以帮助我解决此问题的意见。我发现 ELKI 是一个非常高效和复杂的库,但是我很难找到说明简单案例的示例,比如我的。

0 投票
2 回答
472 浏览

cluster-analysis - 如何查看 ELKI DBSCAN 聚类结果

我正在使用 ELKI 对大约 14,000 个 GPS 点进行 DBSCAN 聚类。它运行良好,但我想查看有关集群的信息,例如集群中有多少点。?

0 投票
1 回答
721 浏览

r-tree - ELKI DBSCAN R* 树索引

在 MiniGUI 中,我可以看到db.index. 如何tree.spatial.rstarvariants.rstar.RStartTreeFactory通过 Java 代码将其设置为?

我已经实现:

对于addParameter()函数tree.spatial...RStarTreeFactory类的第二个参数未找到

我越来越NullPointerException。我使用RStarTreeFactory.class正确吗?

0 投票
1 回答
477 浏览

dbscan - ELKI DBSCAN RESULT 结构

我无法获得 elki dbscan 返回的每个集群中的点。

输出是:

我已经在 ELKI 中完成了这个 Running DBSCAN!。我仍然无法四处查看集群中的点。我想将它存储在一个数组中。elki存储的cluster是什么结构??我被困住了!

0 投票
1 回答
603 浏览

java - ELKI DBSCAN:如何设置 dbc.parser?

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

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

所以它仍然连接到我作为label. 我通过仅传递纬度和经度及其完全相同的方式检查了聚类结果。因此,通过将列作为“标签”传递,我可以在集群结果中检索具有 lat long 的列。

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

但这给了一个NullPointerException. 在 MiniGuidbc.parser中是NumberVectorLabelParser默认的。所以这应该可以正常工作。我错过了什么?