聚類算法

tab不能縮進(jìn),簡(jiǎn)書(shū)吃棗藥丸
`
class bicluster:
def init(self, vec, left=None, right=None, distance=0.0, id=None):
self.left=left
self.right=right
self.vec=vec
self.id=id
self.distance=distance

def hcluster(rows, distance=pearson):
distances=()
currentclustid = -1
clust = [bicluster(rows[i], id = i) for i in range(len(rows))]

遍歷每一個(gè)配對(duì),尋找最小距離

while len(clust)>1:
    lowestpair = (0,1)
    closest = distance(clust[0].vec, clust[1].vec)
    for i in range(len(clust)):
        for j in range(i+1, len(clust)):
            if (clust[1].id, clust[j].id) not in distances:
                distances[(clust[i].id,clust[j].id)] = distance(clust[i].vec, clust[j].vec)
            d = distances[(clust[i].id, clust[j].id)]
            if d < closest:
                closest = d
                lowestpair = (i,j)

計(jì)算兩個(gè)聚類的平均值

    mergevec=[(clust[lowestpair[0]].vec[i]+clust[lowestpair[1]].vec[i])/2.0 for i in             range(len(clust[0].vec))]

建立新的聚類

    newcluster = bicluster(mergevec,left=clust(lowestpair[0]],right = clust[lowestpair[1]], distance = closest, id = currentclustid)

不在原始集合中的聚類,其id為負(fù)數(shù)

    currentclustid-=1
    del clust[lowestpair[1]]
    del clust[lowestpair[0]]
    clust.append(newcluster)
return clust[0]

調(diào)用:

import clusters
blognames,words,data = clusters.readfile
clust = clusters.hcluster(data)

vec是什么?

markdown格式有毒(

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容