K均值聚类、层次聚类

简介: K均值聚类、层次聚类

### K均值聚类(K-means Clustering)原理:

 

K均值聚类是一种迭代的聚类算法,其基本原理如下:

 

1. **初始化**:随机选择K个初始质心(簇的中心点)。

2. **分配**:将每个数据点分配到与其最近的质心所代表的簇。

3. **更新**:重新计算每个簇的质心,即取该簇所有数据点的平均值。

4. **迭代**:重复步骤2和步骤3,直到质心不再发生变化或达到预定的迭代次数。

 

K均值聚类的目标是最小化簇内数据点与其质心之间的距离之和(簇内平方和误差)。这样可以将数据点划分为K个簇,使得簇内数据点的相似度较高,而不同簇之间的相似度较低。

 

### K均值聚类(K-means Clustering):

 

K均值聚类是一种常用的聚类算法,其基本思想是将数据集划分为K个簇,使得每个样本点都属于与其最近的均值(质心)所代表的簇。

 

#### 实现示例:

 

```python

from sklearn.cluster import KMeans

from sklearn.datasets import make_blobs

import matplotlib.pyplot as plt

 

# 生成随机数据

X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

 

# 初始化K均值聚类器

kmeans = KMeans(n_clusters=4)

 

# 拟合数据

kmeans.fit(X)

 

# 预测簇标签

y_kmeans = kmeans.predict(X)

 

# 可视化聚类结果

plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')

 

centers = kmeans.cluster_centers_

plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)

plt.show()

```

### 层次聚类(Hierarchical Clustering)原理:

 

层次聚类是一种基于树形结构的聚类方法,其原理如下:

 

1. **自底向上(凝聚性聚类)**:开始时,将每个数据点视为一个单独的簇,然后逐步合并最接近的簇,直到所有数据点都合并为一个簇。

2. **自顶向下(分裂性聚类)**:开始时,将所有数据点视为一个簇,然后逐步分裂簇,直到每个数据点都成为一个簇。

 

在层次聚类中,可以通过不同的距离度量(如欧氏距离、曼哈顿距离、相关性等)和链接方式(如单链接、完全链接、平均链接等)来确定簇与簇之间的距离。

 

层次聚类的输出是一个树形结构,称为聚类树或谱系图,可以根据需要选择合适的簇的数量进行划分。

 

总的来说,K均值聚类和层次聚类是两种常见的聚类算法,每种算法都有其独特的特点和适用场景。在选择聚类算法时,需要考虑数据的特点、聚类的目的以及算法的优劣。

 

聚类算法是一类无监督学习算法,用于将数据集中的样本分组成不同的簇,使得同一簇内的样本相似度较高,而不同簇之间的样本相似度较低。常见的聚类算法包括K均值聚类和层次聚类。下面是关于这两种算法的简要介绍以及如何使用Python和Scikit-learn库实现它们的示例代码:

 

### 层次聚类(Hierarchical Clustering):

 

层次聚类是一种基于树形结构的聚类方法,它不需要预先指定聚类的数量,而是通过逐步合并或分裂簇来构建树形结构。

 

#### 实现示例:

 

```python

from sklearn.cluster import AgglomerativeClustering

from sklearn.datasets import make_blobs

import matplotlib.pyplot as plt

 

# 生成随机数据

X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

 

# 初始化层次聚类器

agg_clustering = AgglomerativeClustering(n_clusters=4)

 

# 拟合数据

y_agg = agg_clustering.fit_predict(X)

 

# 可视化聚类结果

plt.scatter(X[:, 0], X[:, 1], c=y_agg, s=50, cmap='viridis')

plt.show()

```

 

这些示例代码展示了如何使用Python和Scikit-learn库实现K均值聚类和层次聚类算法。你可以根据具体需求调整参数、选择适当的数据集,并根据聚类结果进行可视化。

相关文章
|
5月前
|
算法 数据挖掘 Python
k均值聚类算法
【6月更文挑战第6天】k均值聚类算法。
47 1
|
11月前
|
算法 数据可视化 数据挖掘
C# | DBSCAN聚类算法实现 —— 对直角坐标系中临近点的点进行聚类
聚类算法是一种常见的数据分析技术,用于将相似的数据对象归类到同一组或簇中。其中,DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,能够有效地识别出不同形状和大小的簇,同时还能标识出噪声数据。本篇博客将介绍聚类算法的概念、DBSCAN算法的原理,并通过提供的C#代码逐步解析DBSCAN算法的实现过程。
320 0
C# | DBSCAN聚类算法实现 —— 对直角坐标系中临近点的点进行聚类
|
6月前
|
算法 数据可视化 数据挖掘
使用Python实现K均值聚类算法
使用Python实现K均值聚类算法
62 1
|
6月前
|
算法 搜索推荐 数据挖掘
C# | KMeans聚类算法的实现,轻松将数据点分组成具有相似特征的簇
聚类是将数据点根据其相似性分组的过程,它有很多的应用场景,比如:图像分割、文本分类、推荐系统等等。在这些应用场景里面我们需要将数据点分成多个簇,每个簇内的数据点具有相似的特征,以便于我们能够更简单的处理数据。 KMeans算法是一种常用的聚类算法,它可以将数据点分组成具有相似特征的簇。
162 0
C# | KMeans聚类算法的实现,轻松将数据点分组成具有相似特征的簇
|
6月前
|
机器学习/深度学习 算法 数据挖掘
K-均值算法
K-均值算法是发现给定数据集的k个簇的算法。簇个数k是用户给定的,每一个簇通过其簇中所有点的中心点来描述 工作流程: 首选选取样本中k个样本作为每个簇的簇中心 然后对每一个样本与每个簇之间的关系,来分配到每一个簇中 然后更新每个簇的均值
55 1
为什么进行线性回归前需要对特征进行离散化处理?
为什么进行线性回归前需要对特征进行离散化处理?
200 1
|
机器学习/深度学习 算法 数据挖掘
K-均值聚类算法
K-均值聚类算法
|
算法 数据可视化 数据挖掘
详解DBSCAN聚类(上)
详解DBSCAN聚类
413 1
详解DBSCAN聚类(上)
|
机器学习/深度学习 算法 数据挖掘
聚类练习:对地理数据应用二分k-均值算法聚类
聚类练习:对地理数据应用二分k-均值算法聚类
256 0
聚类练习:对地理数据应用二分k-均值算法聚类
|
算法 数据挖掘
详解DBSCAN聚类(下)
详解DBSCAN聚类
250 0
详解DBSCAN聚类(下)