Python實現簡單的層次聚類演算法以及視覺化

2021-09-10 05:59:23 字數 1068 閱讀 5823

基本的演算法思路就是:把當前組間距離最小的兩組合併成一組。

演算法的差異在演算法如何確定元件的距離,一般有最大距離,最小距離,平均距離,馬氏距離等等。

**如下:

import numpy as np

import data_helper

np.random.seed(1)

def get_raw_data(n):

_data=np.random.rand(n,2)

#生成資料的格式是n個(x,y)

_groups=

return _groups

def cal_distance(cluster1,cluster2):

#採用最小距離作為聚類標準

_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:#判斷是不是所有的資料是不是歸為了同一類

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 distancei

groups[min_i].extend(groups.pop(min_j))

data_helper.draw_data(groups)

#一共n個簇,共迭代n-1次

執行的效果就是迭代一次,組數就會少一次,呼叫畫圖方法,同一組的資料被顯示為乙個顏色。

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

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

聚類之層次聚類 基於劃分的聚類(

目錄 一層次聚類 層次聚類的原理及分類 層次聚類的流程 層次聚類的優缺點 二劃分聚類法k means kmeans演算法的原理 k均值的優缺點及分類 k means與dbscan的區別 k means注意問題 三基於密度的聚類 dbscan的概念 簇的生成原理及過程 根據資料點的密度分為三類點 db...

層次聚類(1)

層次聚類演算法不同於其它演算法,主要體現在它不是只生成乙個分類結果,而是產生一系列原模式集合的分類結果,每個分類結果滿足一些限制。x 是n個l維特徵向量組成的集合,我們就是要對這個集合中的特徵向量分類。clustering r 是某個聚類結果,就叫他類簇吧,我想這樣叫,也許別人已經定義了類簇,但是我...