使用层次聚类算法将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的类包含其他样本。

代码说明:

  1. linkage(dist_mat, method='single'): 使用linkage函数进行层次聚类,其中dist_mat为样本间距离矩阵,method='single'表示使用最短距离方法进行聚类。
  2. fcluster(z, t=2, criterion='distance'): 使用fcluster函数根据类间距离确定聚类结果,其中zlinkage函数的返回值,t=2表示将样本聚为两类,criterion='distance'表示使用类间距离作为聚类标准。
  3. cityblock(data[i], data[j]): 使用cityblock函数计算两个样本之间的曼哈顿距离。

总结:

本示例展示了如何使用Python的Scipy库进行层次聚类,并以曼哈顿距离作为距离度量,将给定的5个样本聚为两类。代码示例清晰易懂,并附带运行结果解释,方便读者理解层次聚类算法的基本原理和应用。

层次聚类算法实战:将5个样本聚为两类

原文地址: https://www.cveoy.top/t/topic/ogQt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录