层次聚类算法又称为树聚类算法,它根据数据之间的距离,透过一种层次架构方式,反复将数据进行聚合,创建一个层次以分解给定的数据集
# 使用层次聚类将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_层次聚类的结果,n_要聚类的个数,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