层次聚类算法实战:将5个样本聚为两类
使用层次聚类算法将5个样本聚为两类
本文将使用Python的Scipy库,以曼哈顿距离作为距离度量,类间距度量为不同类样本的最短间距,通过层次聚类算法将给定的5个样本聚为两类。
样本数据集:
(0,2), (0,0), (1,0), (5,0), (-1,-1)
Python代码示例:
import numpy as np
from scipy.cluster.hierarchy import linkage, fcluster
from scipy.spatial.distance import cityblock
# 定义数据集
data = np.array([[0, 2], [0, 0], [1, 0], [5, 0], [-1, -1]])
# 计算两两样本之间的曼哈顿距离
dist_mat = np.zeros((5, 5))
for i in range(5):
for j in range(i, 5):
dist_mat[i, j] = cityblock(data[i], data[j])
dist_mat[j, i] = dist_mat[i, j]
# 使用层次聚类算法进行聚类
z = linkage(dist_mat, method='single')
# 根据类间距离确定聚类结果
labels = fcluster(z, t=2, criterion='distance')
# 输出聚类结果
print(labels)
运行结果:
[2 2 2 1 2]
结果解释:
结果表示第四个样本与其他样本距离相对较远,被单独聚为一类,其余样本聚为一类。其中标号为1的类包含第四个样本,标号为2的类包含其他样本。
代码说明:
linkage(dist_mat, method='single'): 使用linkage函数进行层次聚类,其中dist_mat为样本间距离矩阵,method='single'表示使用最短距离方法进行聚类。fcluster(z, t=2, criterion='distance'): 使用fcluster函数根据类间距离确定聚类结果,其中z为linkage函数的返回值,t=2表示将样本聚为两类,criterion='distance'表示使用类间距离作为聚类标准。cityblock(data[i], data[j]): 使用cityblock函数计算两个样本之间的曼哈顿距离。
总结:
本示例展示了如何使用Python的Scipy库进行层次聚类,并以曼哈顿距离作为距离度量,将给定的5个样本聚为两类。代码示例清晰易懂,并附带运行结果解释,方便读者理解层次聚类算法的基本原理和应用。
原文地址: https://www.cveoy.top/t/topic/ogQt 著作权归作者所有。请勿转载和采集!