層次聚類算法
層次聚類算法又稱為樹聚類算法,它根據(jù)數(shù)據(jù)之間的距離旭贬,透過一種層次架構(gòu)方式,反復將數(shù)據(jù)進行聚合评疗,創(chuàng)建一個層次以分解給定的數(shù)據(jù)集
# 使用層次聚類將1,3,5,6,9,10,13聚類
# 計算出每個點之間的距離
# 找出他們之間最近的距離
# 一直壓縮到底
# API
# linkage = scipy.cluster.hierarchy.linkage(data_訓練樣本,method = 'single')
# method 類計算公式
# singele 兩個類之間最短的點的距離
# complete 兩個類之間最長距離的點的距離
# centroid 兩個類所有點的中點的距離
# scipy.cluster.hierarchy.fcluster(linkage_層次聚類的結(jié)果,n_要聚類的個數(shù),criterion = 'maxclust'_劃分方法)
import numpy
import pandas
from sklearn import datasets
import scipy.cluster.hierarchy as hcluster
iris = datasets.load_iris()
data = iris.data
target = iris.target
# Compute and plot first dendrogram.
linkage = hcluster.linkage(
data,
method='centroid'
)
hcluster.dendrogram(
linkage,
leaf_font_size=10.
)
hcluster.dendrogram(
linkage,
truncate_mode='lastp',
p=12,
leaf_font_size=12.
)
p = hcluster.fcluster(
linkage,
3,
criterion='maxclust'
)
ct = pandas.DataFrame({
'p': p,
't': target
}).pivot_table(
index=['t'],
columns=['p'],
aggfunc=[numpy.size]
)
參考文獻
作者A:ken