2013-05-31 35 views
1

我有用户组及其关联词。这是我已分组它们:如何表示k数据表示聚类

我已关联的每个字与数目,且如果用户没有任何的这些词语相关联的I得到的值0:

谷歌:1 计算器:2 数学:3 编程:4 noword:0

要运行K-means算法我词语相关联,如下所示:

username google stackoverflow math programming 
user1  1  0   3  0 
user2  1  2   0  4 
user3  0  2   3  0 
user4  1  1   0  4 

这是一个正确实施如何对每个用户进行聚类,并根据他们配置的单词检查彼此之间的距离。

我在此基础实施:http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/K-Means

尤其是本节:您的数据可以构造为二进制 enter image description here

回答

4

通知。例如,用户1或者具有与stackoverflow的关联或者不具有(即,二进制值)。因此,你应该Munge时间你的数据格式为:

username google stackoverflow math programming 
user1  1  0   1  0 
user2  1  1   0  1 
user3  0  1   1  0 
user4  1  1   0  1 

我会建议对K-均值为您的数据,因为聚类中心的概念是二进制数据有问题。有关更多详细信息,请参阅this link的前几个段落。

但是,仍然可以使用适当的方法(例如Jaccard index)计算任意两个用户之间的相似度,因为每个用户的单词关联可以写为二进制字符串(例如,user1具有1010)。然后,您可以在所有用户对之间构建一个similarity matrix,并使用诸如hierarchical clustering之类的方法对它们进行聚类。

或者,您可以使用类似Proximus in R的东西。

+0

只是再次查看您的答案,为什么代表我的数据有问题?即:为每个单词分配一个唯一的数值 –

+1

简短的答案是因为你的聚类目标,它会找到那些距离相近的用户。距离对你如何使用它没有意义。换句话说,您的原始构造意味着这些特征是名义上的,但大多数聚类方法(如K均值)隐含地假设数据是按照[比例尺](https://en.wikipedia.org/wiki/Level_of_measurement# Ratio_scale)。 – ramhiser