https://www./python-tutorials.html?p=84 Canopy算法是2000年由Andrew McCallum, Kamal Nigam and Lyle Ungar提出來的,它是對(duì)k-means聚類算法和層次聚類算法的預(yù)處理。眾所周知,kmeans的一個(gè)不足之處在于k值需要通過人為的進(jìn)行調(diào)整,后期可以通過肘部法則(Elbow Method)和輪廓系數(shù)(Silhouette Coefficient)來對(duì)k值進(jìn)行最終的確定,但是這些方法都是屬于“事后”判斷的,而Canopy算法的作用就在于它是通過事先粗聚類的方式,為k-means算法確定初始聚類中心個(gè)數(shù)和聚類中心點(diǎn)。
使用的包:
1.首先我在算法中預(yù)設(shè)了一個(gè)二維(為了方便后期畫圖呈現(xiàn)在二維平面上)數(shù)據(jù)dataset。 當(dāng)然也可以使用高緯度的數(shù)據(jù),并且我將canopy核心算法寫入了類中,后期可以通過直接調(diào)用的方式對(duì)任何維度的數(shù)據(jù)進(jìn)行處理,當(dāng)然只是小批量的,大批量的數(shù)據(jù)可以移步Mahout和Hadoop了。
相關(guān)推薦:《Python視頻教程》 2.然后生成個(gè)兩類,類的屬性如下:
加入設(shè)定t1和t2初始值以及判斷大小函數(shù)
3.距離計(jì)算,各個(gè)中心點(diǎn)之間的距離計(jì)算方法我使用的歐式距離。
4.再寫個(gè)從dataset中根據(jù)dataset的長(zhǎng)度隨機(jī)選擇下標(biāo)的函數(shù)
5.核心算法
為了方便后面的數(shù)據(jù)可視化,我這里的canopies定義的是一個(gè)數(shù)組,當(dāng)然也可以使用dict。
Canopy聚類可視化代碼
效果圖如下: 以上就是python怎么實(shí)現(xiàn)canopy聚類的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章! |
|