我试图从高维数据集中检测密集的子空间。为此,我想使用ELKI库。但是很少有关于ELKI库的文档和例子。
我试过以下方法-
Database db=makeSimpleDatabase("D:/sample.csv", 600);
ListParameterization params = new ListParameterization();
params.addParameter(CLIQUE.TAU_ID, "0.1");
params.addParameter(CLIQUE.XSI_ID, 20);
// setup algorithm
CLIQUE<DoubleVector> clique = ClassGenericsUtil.parameterizeOrAbort(CLIQUE.class, params);
// run CLIQUE on database
Clustering<SubspaceModel<DoubleVector>> result = clique.run(db);
for(Cluster<?> cl : result.getToplevelClusters()) {
System.out.println(cl.getIDs());
}我提供了以下信息-
2,2
2,3
5,2
5,3
8,4
结果是-
[2, 1]
[4, 3]
[5]
[3, 1]
[4, 2]
[5]
[1]
[2]
[3]
[4]
[5]我期望输出作为分组成子空间的输入数据点。可能是我选择了错误的值或以错误的方式设置参数。
请帮帮忙。提前谢谢。
发布于 2015-05-07 21:15:39
注意,集群会产生重叠的集群。
元素可以同时存在于0到多个集群中。如果您的参数选择不当(而且团参数似乎很难选择),您将得到奇怪的结果。在您的例子中,它似乎是11个集群,尽管您的数据集只有5个元素。
从本质上讲,集群告诉您的是:
元素2,1集群(它们都有x=2)
元素4,3集群(它们都有x=5)
元素5是一个集群(只有带有x=8的元素)
元素3,1集群(它们都有y=2)
元素4,2集群(它们都有y=3)
元素5是一个集群(只有带有y=4的元素)
在x,y子空间中,每个元素都是独立的,并且是它自己的集群。
为这个脆弱的算法选择更好的参数。
τ= 0.1 (5分中的10%):超过0.5点的任何事物都是一个簇.换句话说,一切。这就是你得到这个结果的原因--你自己要求的。
https://stackoverflow.com/questions/30061194
复制相似问题