引言
在数据科学领域,聚类算法是一种非常重要的无监督学习方法,它能够帮助我们发现数据中的自然分组或模式。其中,K-Means 聚类算法因其简单高效而成为最常用的聚类算法之一。无论是市场细分、社交网络分析,还是图像分割等领域,K-Means 的身影无处不在。本文将带你深入了解 K-Means 聚类算法的原理与应用,从基础到实战,让你全面掌握这一强大的工具。
基础语法介绍
K-Means 聚类的核心概念
K-Means 是一种迭代的聚类算法,其目标是将数据集划分成 K 个簇(cluster),使得每个簇内部的数据点尽可能相似,而不同簇之间的数据点差异尽可能大。算法的主要步骤如下:
- 初始化:随机选择 K 个数据点作为初始的质心(centroid)。
- 分配:根据当前的质心,将每个数据点分配给最近的质心所在的簇。
- 更新:重新计算每个簇的质心,新的质心是该簇内所有数据点的平均值。
- 重复:重复执行第 2 步和第 3 步,直到质心不再发生变化或达到最大迭代次数。
基本语法规则
在 Python 中,我们可以使用 scikit-learn
库来实现 K-Means 聚类。以下是基本的语法结构:
from sklearn.cluster import KMeans
# 创建 KMeans 模型
kmeans = KMeans(n_clusters=3) # n_clusters 表示要划分的簇的数量
# 拟合模型
kmeans.fit(X) # X 是一个 (n_samples, n_features) 的数组
# 预测簇标签
labels = kmeans.predict(X)
# 获取质心
centroids = kmeans.cluster_centers_
基础实例
问题描述
假设我们有一个二维数据集,数据点分布如下图所示。我们的任务是使用 K-Means 算法将这些数据点分为 3 个簇。
代码示例
首先,我们需要导入必要的库并生成一些示例数据:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
# 生成示例数据
X, _ = make_blobs(n_samples=300, centers=3, cluster_std=0.60, random_state=0)
# 绘制数据点
plt.scatter(X[:,