2015-10-20 120 views
0
import csv 
    import numpy as np 
    from sklearn.cluster import SpectralClustering 
    reader=csv.reader(open("/Users/Desktop/user2.csv","rU"),dialect=csv.excel_tab) 
    x=list(reader) 
    result=np.array(x).astype('float') 
    lena = result.reshape(182,182) 
    type(lena) 
    # Apply spectral clustering (this step goes much faster if you have pyamg 
    # installed) 
    label = SpectralClustering(n_clusters= 5,affinity='precomputed').fit_predict(lena) 

我有一個包含182個用戶的親和度矩陣。我想根據相似性矩陣對用戶進行聚類。但結果似乎將幾乎所有用戶聚集到一個羣集。有沒有人知道這件事?基於親和度矩陣的譜聚類

對於相似性矩陣。 182 * 182條目。 6510個條目> 0.001,最大值> 0.97。對話矩陣爲0.這種相似性矩陣是否存在問題,或者在這種情況下光譜聚類不適合?任何其他聚類方法作爲推薦?

+0

你有沒有研究過你的數據?也許幾乎所有的用戶*都是高度相似的? –

回答

0

您提供的統計信息不夠完整,無法給出明確的意見,但我可以從結果中做出一些猜測。我懷疑問題來自於在您的空間中串聯一系列連接良好的條目。

以1單位間隔顯示182個項目的簡單行,其中親和性是線性距離的立方的倒數。你最近的鄰居有親和力1/1;接下來是1/8,然後是1/27,1/64,...

這給每個實體只有20個鄰居(每邊10個)的親和力> = 0.001,共3640(如果你允許環繞)加上主對角線。這比你的實際例子少。然而,由於直接鄰居的親和度爲1,幾乎任何聚類算法的自然級聯最終都會將所有這些合併到一個類中。這個集合是高度連接的,但不是特別緊湊。


因此,問題變成了「什麼樣的聚類適合數據的形狀?」你能以某種方式描述單個條目的連通性,它們的緊湊性和連接性嗎?做看到任何自然叢生和切割點?