聚類演算法(2)

2021-05-24 05:44:35 字數 934 閱讀 8650

(接上《聚類演算法(1)》)

除了在聚類演算法(1)中的分級聚類,關於聚類還可以使用k-均值聚類(也是為了克服分級聚類的兩個不足之處)。

演算法描述:

這裡有比較詳盡的演算法描述。(嗯,《programming collective intelligence 》上有幅超級好的插圖。。。)

說明:1.rows是什麼?

rows是從資料檔案中讀入的關於單詞的頻度資料。比如這裡的rows,共有32項(有32個部落格,即初始時有32個聚類),每項有629個資料(即,有629個單詞,當然這些資料只是數字,是某單詞(共629個)(該單詞儲存在其他地方)所對應的頻度)。而我們進行的是,根據這些單詞,分類那32個部落格。故,我們的pearson演算法計算的是乙個長度629的列表與另乙個629長的列表之間的距離。

這個629長的列表即是我們所謂的點(我們要聚類的物件)。

2.clusters是什麼?

說clusters是k個中心點。那麼k個中心點到底是什麼?注意這裡的「點」和平常所謂的點是不同的,上面的粗體部分已具體解釋。說,clusters是k個中心點,即是說,clusters是個長度為k的列表,表中的每個元素是長度為620的陣列(其中為我們隨機產生的單詞頻度)。

那麼,另,

注意「移動中心點」中的if len(bestmatches[i]) > 0:一句是不可缺少的。因為可能這k個點中存在某些點,沒有資料與他們相近,於是他們的長度就為0。

總之,記住這裡的點實際上是個表。

注意這裡是距離度量,因此,返回0,表示二者之間無距離,即兩者喜歡的東西一模一樣;返回1,則表示兩者不存在都喜歡的東西(因為我們進行的是對乙個列表度量距離,該列表可能代表了兩個人喜歡的東西的列表)。

最後,貼出完整的**:

資料聚類演算法:

從部落格訂閱源中生成初始資料:

作樹狀圖:

完by kewing

聚類演算法 近鄰聚類演算法

time is always too short for those who need it,but for those who love,it lasts forever.dracula untold 近鄰聚類法同樣是一種基於距離閾值的聚類演算法。coding utf 8 近鄰聚類演算法的pyth...

聚類演算法 層次聚類演算法

層次聚類演算法 hierarchical clustering method 又稱為系統聚類法 分級聚類法。層次聚類演算法又分為兩種形式 凝聚層次聚類 首先將每個物件作為乙個簇,然後合併這些原子簇為越來越大的簇,直到某個終結條件被滿足。層次聚類 首先將所有物件置於乙個簇中,然後逐漸細分為越來越小的簇...

聚類演算法 什麼是聚類

聚類分析或聚類演算法就是通過一些方法或手段使資料集集聚成不同的類別,或者叫 簇。簇內部每乙個單位都是相似的。簇與簇之間都是不相似的。但是聚類其實是一種思想,它不是一種具體的方法。這裡千萬不要搞混。但是可以實現聚類的演算法有很多種。我們通常就使用這些演算法來實現聚類的。比如 k means就是最為經典...