问题标签 [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 投票
2 回答
785 浏览

java - Java中的地理数据聚类

我的目标是使用机器学习库,以便我可以聚类点(Lat/Long)和(x,y)。我想使用一个 API,让我可以轻松地在不同的聚类算法之间切换。

我开始使用 Java-ML http://java-ml.sourceforge.net/content/clustering-basics并且能够使教程正常工作,但我看不到如何创建地理点的实例。我是否必须扩展net.sf.javaml.core.AbstractInstance才能使其正常工作?可以创建的实例类型只有 ' SparseInstance' 和 ' DenseInstance'。

然后我发现Elki有人用它来聚类地理数据在 ELKI 中运行 DBSCAN但我不想使用 gui 我只想从 java 类运行算法。

非常感谢任何建议/参考。

0 投票
1 回答
257 浏览

java - 使用 ELKI 和 Mongodb

使用测试用例,我可以看到如何直接从 Java 中使用 ELKI,但现在我想从 MongoDB 读取我的数据,然后使用 ELKI 对地理(经纬度)数据进行聚类。

我只能使用 ELKI 对 CSV 文件中的数据进行聚类。是否可以将 de.lmu.ifi.dbs.elki.database.Database 与 MongoDB 连接?我可以从java调试器中看到de.lmu.ifi.dbs.elki.database.Database中有一个databaseconnection字段。

我查询 MongoDB 为每一行创建 POJO,现在我想使用 ELKI 对这些对象进行聚类。

可以从 MongoDB 读取数据并将其写入 CSV 文件,然后使用 ELKI 读取该 CSV 文件,但我想知道是否有更简单的解决方案。

---------发现_1:

ELKI - 使用 List<String> 对象填充数据库我发现我需要实现 de.lmu.ifi.dbs.elki.datasource.DatabaseConnection 并专门覆盖返回 MultiObjectsBundle 实例的 loadData() 方法。

所以我认为我应该用 MultiObjectsBundle 包装一个 POJO 列表。现在我正在查看 MultiObjectsBundle,看起来数据应该保存在列中。为什么列数据类型是 List> 不应该是 List?只是您要聚类的项目列表?

我有点困惑。ELKI 怎么知道它应该查看 POJO 的 long 和 lat?我在哪里告诉 ELKI 这样做?使用 de.lmu.ifi.dbs.elki.data.type.SimpleTypeInformation?

---------发现_2:

我尝试使用 ArrayAdapterDatabaseConnection 并尝试实现 DatabaseConnection。对不起,我需要用非常简单的术语来理解。

这是我的聚类代码:

ArrayAdapterDatabaseConnection 产生两个集群,当我设置 epsilon=0.008 dbscan 开始创建集群时,我只需要使用 epsilon 的值。当我设置 epsilon=0.04 时,所有项目都在 1 个集群中。

我也尝试过实现 DatabaseConnection:

这些 long/lat 与 ID 相关联,我需要将它们链接回此 ID 到值。使用 ID 偏移量(在上面的代码中)是唯一的方法吗?我尝试添加 ExternalID 列,但我不知道如何检索特定 NumberVector 的 ExternalID?

同样在看到使用 ELKI 的距离函数后,我尝试使用 Elki 的 longLatDistance,但它不起作用,我找不到任何示例来实现它。

0 投票
1 回答
237 浏览

cluster-analysis - ELKI DBSCAN LngLatDistanceFunction 产生一个集群

我正在使用 Elki LngLatDistanceFunction 对 Lon/lat 点进行聚类,但它只返回一个聚类(当我使用欧几里德距离时返回更多聚类)。我尝试了多个 Epsilon 值,但我仍然得到一个集群。

0 投票
1 回答
281 浏览

plot - Elki 直接从 java 中绘制聚类点

是否可以直接使用 Elki 将 Elki 的聚类结果绘制成图表?我没有看到任何执行此操作的测试用例http://elki.dbs.ifi.lmu.de/browser/elki/elki/src/test/java#de/lmu/ifi/dbs/elki 。我知道可以使用 java 绘制点,但我想使用 Elki 来绘制。

0 投票
1 回答
197 浏览

java - 使用大型地理数据集在 ELKI 上运行 OPTICS 集群

我在 ELKI 上使用 OPTICSXi 和 rstartree 来聚类地理数据集(纬度和经度)Gowalla,其中包括大约 600 万条记录,但 MiniGUI 总是显示“java 堆空间”和“错误:内存不足”。

我曾经看到 Anony Mousse 的一个答案,在 11 分钟内处理了 120 万个位置数据,在 ELKI 上使用 OPTICSXi。我很混乱。为什么 ELKI 报告这些错误?

我需要在 java 平台或 ELKI 上修改任何参数吗?

在此处输入图像描述

0 投票
1 回答
275 浏览

cluster-analysis - 使用 ELKI 对多个属性进行聚类

我使用ELKI框架对一系列点进行聚类,这些点由它们的地理坐标(经度、纬度)定义。我使用的算法是 DBSCAN。

现在我想添加另一个(数字)属性来衡量点的重要性(比如说大小)。

理论上,这些点现在将在 3 维空间(而不是 2D)中定义,并且距离将是地理距离和数据距离的混合。

在实践中,我尝试在 ELKI 中执行此操作,但我遇到了一个具体问题。聚类算法需要一个“数据库”作为输入。

该数据库是从 LisParametrization 创建的,其中包括读取数据库连接:

最后,这个数据库连接从一个二维数组中读取数据:

将现有数据矩阵 ( double[rows][cols]) 导入 ELKI 数据库。

我的问题是:有没有办法用 *D 矩阵替换这个二维数组?

例如,在我的情况下,我想使用 3D 数组来存储两个地理坐标数值属性。像这样的东西:

大批[][][]

0 投票
1 回答
402 浏览

cluster-analysis - 将 ELKI 输出保存到文件

我想将集群输出保存到文件中。例如,我想将 cluster1 点保存到 c1.txt 中,将 cluster2 点保存到 c2.txt 中,依此类推。
ELKI 0.7 版

但它有这个错误:

命令不正确,如何保存集群?

0 投票
1 回答
255 浏览

cluster-analysis - 有没有办法从 ELKI 将可达性列表输入到 Optics Xi 并获取集群?

我在将数据正确输入 ELKI 以通过光学算法运行时遇到了一些麻烦,但是使用光学的 R 实现,我可以轻松获得可达距离列表。我可以将它们写入这样的文件。(指数,距离)

1 婴儿

2 0.5

3 0.9 ...

我想找到由局部最小值分隔的集群。我认为 ELKI 软件中的 Optics Xi 算法可以做到这一点,但由于我在导入数据时遇到问题,我无法使用它。

使用光学论文中的伪代码以另一种语言编写光学集群提取算法会更容易吗?我认为最基本的是,当它们彼此相邻时,它只是将索引聚集在一起,并且不会减少到新的局部最小值。

谢谢

0 投票
2 回答
206 浏览

machine-learning - ELKI OPTICS 预计算距离矩阵

我似乎无法让这个算法在我的数据集上工作,所以我取了我的数据的一个非常小的子集并试图让它工作,但这也不起作用。

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

我的 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 个索引和一个距离。

任何指向我哪里出错的指针都将不胜感激。

0 投票
2 回答
503 浏览

cluster-analysis - 基于密度的代表聚类

我正在寻找一种方法来执行基于密度的聚类。生成的集群应该有一个不像 的代表DBSCANMean-Shift似乎满足这些需求,但规模不足以满足我的需求。我研究了一些子空间聚类算法,只发现CLIQUE使用代表,但这部分没有在Elki中实现。