在Weka中以编程方式获取Xmeans集群器输出 [英] Getting Xmeans clusterer output programmatically in Weka

查看:115
本文介绍了在Weka中以编程方式获取Xmeans集群器输出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Weka中使用Kmeans时,可以在模型的结果输出上调用getAssignments()以获取每个给定实例的集群分配。这是一个截短的Jython示例:

When using Kmeans in Weka, one can call getAssignments() on the resulting output of the model to get the cluster assignment for each given instance. Here's a (truncated) Jython example:

>>>import weka.clusterers.SimpleKMeans as kmeans
>>>kmeans.buildClusterer(data)
>>>assignments = kmeans.getAssignments()
>>>assignments
>>>array('i',[14, 16, 0, 0, 0, 0, 16,...])

每个群集号的索引对应于该实例。因此,实例0在群集14中,实例1在群集16中,依此类推。

The index of each cluster number corresponds to the instance. So, instance 0 is in cluster 14, instance 1 is in cluster 16, and so on.

我的问题是:Xmeans是否有类似的东西?我已经在此处中浏览了整个API,看不到那样的东西。

My question is: Is there something similar for Xmeans? I've gone through the entire API here and don't see anything like that.

推荐答案

以下是来自Weka listserv的我的问题的回复:

Here's a reply to my question from the Weka listserv:

 "Not as such. But all clusterers have a clusterInstance() method. You can 
 pass each training instance through the trained clustering model to 
 obtain the cluster index for each."

这是我Jython实施的建议:

Here's my Jython implementation of this suggestion:

 >>> import java.io.FileReader as FileReader
 >>> import weka.core.Instances as Instances
 >>> import weka.clusterers.XMeans as xmeans
 >>> import java.io.BufferedReader as read
 >>> import java.io.FileReader
 >>> import java.io.File
 >>> read = read(FileReader("some arff file"))
 >>> data = Instances(read)
 >>> file = FileReader("some arff file")
 >>> data = Instances(file)
 >>> xmeans = xmeans()
 >>> xmeans.setMaxNumClusters(100)  
 >>> xmeans.setMinNumClusters(2) 
 >>> xmeans.buildClusterer(data)# here's our model 
 >>> enumerated_instances = data.enumerateInstances() #get the index of each instance 
 >>> for index, instance in enumerate(enumerated_instances):
         cluster_num = xmeans.clusterInstance(instance) #pass each instance through the model
         print "instance # ",index,"is in cluster ", cluster_num #pretty print results

 instance # 0 is in cluster  1
 instance # 1 is in cluster  1
 instance # 2 is in cluster  0
 instance # 3 is in cluster  0

我将所有这些留作参考,因为可以使用相同的方法来获得Weka的任何集群器的结果的集群分配。

I'm leaving all of this up as a reference, since the same approach could be use to get cluster assignments for the results of any of Weka's clusterers.

这篇关于在Weka中以编程方式获取Xmeans集群器输出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆