2013-05-31 41 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