机器学习聚类 距离矩阵
时间: 2024-12-31 10:46:17 浏览: 4
### 层次聚类中的距离矩阵及其应用
在层次聚类中,邻近矩阵(也称为距离矩阵)是一个核心概念。该矩阵用于存储数据集中每个点与其他所有点之间的距离[^1]。
对于给定的数据集 \( D \),其大小为 \( n \times m \),其中 \( n \) 是样本数量而 \( m \) 表示特征维度,则构建的距离矩阵 \( M_{dist} \) 将会是尺寸为 \( n \times n \) 的方阵。矩阵内的每一个元素 \( d(i,j) \) 计算的是第 \( i \) 个观测值与第 \( j \) 个观测值间的相似度或差异程度测量结果,通常采用欧几里得距离作为衡量标准:
\[d(i, j)=\sqrt{\sum_k (x_i[k]-x_j[k])^2}\]
当完成初始阶段的距离计算之后,在后续迭代过程中,每次都会选取当前剩余集合中最相近的一对观测值并将其组合起来形成新的簇;随后更新整个系统的距离信息——这一步骤涉及到重新评估其他未被聚合个体到新生群体中心位置的远近关系,并据此调整原有记录表单的内容直至最终只剩下一个单一的大集群为止[^3]。
下面展示一段Python代码片段来说明如何创建这样的一个距离矩阵:
```python
import numpy as np
from scipy.spatial.distance import pdist, squareform
def compute_distance_matrix(data_points):
"""Compute the distance matrix from a set of data points."""
# Compute pairwise distances between all pairs of observations in `data_points`.
dists = pdist(data_points)
# Convert to a full symmetric matrix.
return squareform(dists)
if __name__ == "__main__":
# Example usage with random dataset generation
X = np.random.rand(5, 3) # Generate some example data
print("Data Points:")
print(X)
dm = compute_distance_matrix(X)
print("\nDistance Matrix:")
print(dm)
```
此程序利用SciPy库函数`pdist()`来进行两两间距离运算,再经由`squreform()`转换成完整的方形形式以便直观查看各个实例相互之间联系紧密与否的程度。
阅读全文