gpt4 book ai didi

java - 在 Weka 中获取集群分配

转载 作者:行者123 更新时间:2023-11-29 10:01:46 25 4
gpt4 key购买 nike

我有一个 CSV 文件如下:

id,at1,at2,at3
1072,0.5,0.2,0.7
1092,0.2,0.5,0.7
...

我已经将它加载到 Weka 中进行聚类:

DataSource source = new DataSource("test.csv");
Instances data = source.getDataSet();
kmeans.buildClusterer(data);

问题#1:如何将第一列设置为 ID? IE。出于聚类目的忽略第一列。

然后我尝试打印作业:

int[] assignments = kmeans.getAssignments();
int i = 0;
for (int clusterNum : assignments) {
System.out.printf("Instance %d -> Cluster %d \n", i, clusterNum);
i++;
}

这打印:

Instance 1 -> Cluster 0 
Instance 2 -> Cluster 2
...

问题 #2:打印作业时如何引用 ID?例如:

Instance 1072 -> Cluster 0
Instance 1092 -> Cluster 2

最佳答案

我意识到这是一个老问题,但我也是来这里寻找答案的,然后我自己弄明白了,所以把我的解决方案放在这里供下一个遇到这个问题的人使用。在我的例子中,集群组件是 Java 应用程序的一部分,所以我没有使用 Weka 工作台的选项。以下是我提取 id 以及集群分配所做的工作。

int[] assignments = kmeans.getAssignments();
for (int i = 0; i < assignments.length; i++) {
int id = (int) data.instance(i).value(0); // cast from double
System.out.printf("ID %d -> Cluster %d \n", id, assignments[i]);
}

与 OP 不同,我没有从 DataSource.getDataSet() 构建我的实例,我是从数据库表手动构建的,但 id 字段也是我的第一个,所以我认为上面的代码应该工作。我有一个自定义距离函数,它在计算相似度时跳过了 id 字段。

关于java - 在 Weka 中获取集群分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23872807/

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