Python實(shí)現(xiàn)簡(jiǎn)單層次聚類算法以及可視化
本文實(shí)例為大家分享了Python實(shí)現(xiàn)簡(jiǎn)單層次聚類算法,以及可視化,供大家參考,具體內(nèi)容如下
基本的算法思路就是:把當(dāng)前組間距離最小的兩組合并成一組。
算法的差異在算法如何確定組件的距離,一般有最大距離,最小距離,平均距離,馬氏距離等等。
代碼如下:
import numpy as np import data_helper np.random.seed(1) def get_raw_data(n): _data=np.random.rand(n,2) #生成數(shù)據(jù)的格式是n個(gè)(x,y) _groups={idx:[[x,y]] for idx,(x,y) in enumerate(_data)} return _groups def cal_distance(cluster1,cluster2): #采用最小距離作為聚類標(biāo)準(zhǔn) _min_distance=10000 for x1,y1 in cluster1: for x2,y2 in cluster2: _distance=(x1-x2)**2+(y1-y2)**2 if _distance<_min_distance: _min_distance=_distance return _distance groups=get_raw_data(10) count=0 while len(groups)!=1:#判斷是不是所有的數(shù)據(jù)是不是歸為了同一類 min_distance=10000 len_groups=len(groups) for i in groups.keys(): for j in groups.keys(): if i>=j: continue distance=cal_distance(groups[i],groups[j]) if distance<min_distance: min_distance=distance min_i=i min_j=j#這里的j>i groups[min_i].extend(groups.pop(min_j)) data_helper.draw_data(groups) #一共n個(gè)簇,共迭代n-1次
運(yùn)行的效果就是迭代一次,組數(shù)就會(huì)少一次,調(diào)用畫圖方法,同一組的數(shù)據(jù)被顯示為一個(gè)顏色。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
scrapy爬蟲遇到j(luò)s動(dòng)態(tài)渲染問題
本文主要介紹了scrapy爬蟲遇到j(luò)s動(dòng)態(tài)渲染問題,通過js渲染出來的動(dòng)態(tài)網(wǎng)頁的內(nèi)容與網(wǎng)頁文件內(nèi)容是不一樣的,本文就來解決一下這些問題,感興趣的可以了解一下2022-05-05使用python telnetlib批量備份交換機(jī)配置的方法
今天小編就為大家分享一篇使用python telnetlib批量備份交換機(jī)配置的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python MySQL 日期時(shí)間格式化作為參數(shù)的操作
這篇文章主要介紹了Python MySQL 日期時(shí)間格式化作為參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03Python中的復(fù)雜數(shù)據(jù)類型(list、tuple)
這篇文章介紹了Python中的復(fù)雜數(shù)據(jù)類型(list、tuple),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05python操作docx寫入內(nèi)容,并控制文本的字體顏色
今天小編就為大家分享一篇python操作docx寫入內(nèi)容,并控制文本的字體顏色,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02