【发布时间】:2011-11-19 04:02:56
【问题描述】:
我一直在尝试使用 Weka 的 DBSCAN 集群器来集群实例。据我了解,我应该为此使用clusterInstance() 方法,但令我惊讶的是,在查看该方法的代码时,看起来实现忽略了参数:
/**
* Classifies a given instance.
*
* @param instance The instance to be assigned to a cluster
* @return int The number of the assigned cluster as an integer
* @throws java.lang.Exception If instance could not be clustered
* successfully
*/
public int clusterInstance(Instance instance) throws Exception {
if (processed_InstanceID >= database.size()) processed_InstanceID = 0;
int cnum = (database.getDataObject(Integer.toString(processed_InstanceID++))).getClusterLabel();
if (cnum == DataObject.NOISE)
throw new Exception();
else
return cnum;
}
这似乎不对。那应该如何工作?我应该使用其他方法进行聚类吗?如果我想从中获取任何有用的信息,是否必须在所有实例上按特定顺序依次运行此方法?
【问题讨论】:
-
附注。 DBSCAN 全部大写,而不是 DBScan。只是 Weka 中的另一个错误。不幸的是,Weka 中的集群并不是很有用。毕竟,Weka 更像是一个机器学习工具包。
-
请不要再使用 Wekas 版本的 DBSCAN 和 OPTICS。它们是不受支持的学生贡献,功能不完整且非常缓慢。对于集群,请改用 ELKI。
-
更新:Weka DBSCAN 1.0.3 版变得明显更快(虽然不如 ELKI 快)。 OPTICS 也是如此,但它不会自动从图中提取集群(参见 ELKI OPTICSXi)。
标签: java cluster-analysis weka dbscan