2014-03-13 42 views
0

我是新來的Python,我正在尋找一個天真的,簡單的單鏈接聚類python算法的示例,該算法基於創建鄰近矩陣並從中刪除節點。我知道有些包如numpy,但我寧願避免它們。
我已經在網上搜索,但找不到任何足夠簡單的代碼,以便能夠理解,以便以後自己複製它。Python:單鏈接聚類算法

與具有不相交的聚類水平L(0)= 0和序列數m = 0

開始查找最相似的集羣對在當前的聚類,說一對(R),(S),根據d [(r),(s)] = min d [(i),(j)],其中最小值在當前聚類的所有聚類對上。

遞增序列號:m = m + 1.將簇(r)和(s)合併爲一個簇,形成下一個簇m。將該聚類的級別設置爲L(m)= d [(r),(s)]

通過刪除與羣集(r)和(s)對應的行和列來更新鄰近矩陣D添加對應於新形成的羣集的行和列。表示(r,s)和舊聚類(k)的新聚類之間的接近度定義爲d [(k),(r,s)] = min d [(k),(r)],d [ K),(S)]。

如果所有對象都在一個羣集中,請停止。否則,請轉至步驟2.

這些是維基百科中描述的步驟。我創建了距離矩陣,但不知道如何在那裏繼續。

這是我到目前爲止有:

比較

def comparison(protein1, protein2): 

    l = [i for i in range(len(protein1)) if protein1[i] != protein2[i]] 

    return len(l) 

創建矩陣

def matrix (r1,r2): 

    r = [] 
    for p1 in proteins: 
    r2 = [] 
    for p2 in proteins: 
     r2 += [comparison(p1, p2)] 
    r += [r2] 
    return r 

這些都是我想比較序列:

seqlist = {「Human」:「MGDVEKGKKIFIMKCSQCHTVEKGGKHKTGPNLHG」,「黑猩猩」:「MGDVEKGKKIFIMKCSQCHTVEKGGKHK TGPNLHG 「 」西部眼鏡猴「: 」MGDVEKGKKIFVQKCAQCHTVEKGGKHKTGXNLHG「, 」鼠標「: 」MGDAEAGKKIFVQKCAQCHTVEKGGKHKTGPNLWG「, 」兔子「: 」MGDVEKGKKIFVQKCAQCHTVEKGGKHKTGPNLHG「, 」狗「: 」MGDVEKGKKIFVQKCAQCHTVEKGGKHKTGPNLHG「, 」豬八戒「: 」MGDVEKGKKIFVQKCAQCHTVEKGGKHKTGPNLHG「, 」鱷龜「:」 MGDVEKGKKIFVQKCAQCHTVEKGGKHKTGPNLNG」, 「鱷魚」: 「MGDVEKGKKIFVQKCAQCHTVEKGGKHKTGPNLHG」, 「蜜蜂」: 「AGDPEKGKKIFVQKCAQCHTIESGGKHKVGPNLYG」,}

+0

這個問題似乎是題外話,因爲它是示例代碼 – jonrsharpe

+0

對不起的請求,我也做了第一部分我自己,創造了矩陣,但不知道如何從那裏rpoceed。有沒有更好的方式來重述它? –

+1

@kapoios_kanateris既然你已經寫過這個問題的解決方案的一部分,你應該把它發佈在這個頁面上。然後我們可以弄清楚還需要做些什麼。 –

回答