探索Python中的聚类算法:K-means

在机器学习领域中,聚类算法被广泛应用于数据分析和模式识别。K-means 是其中一种常用的聚类算法,它能够将数据集分成 K 个不同的组或簇。本文将详细介绍 K-means 算法的原理、实现步骤以及如何使用 Python 进行编程实践。

什么是 K-means?

K-means 是一种基于距离的聚类算法,它将数据集中的样本划分为 K 个不同的簇,使得同一簇内的样本之间的距离尽可能小,而不同簇之间的距离尽可能大。

K-means 的原理

K-means 算法的核心思想可以概括为以下几个步骤:

  • 初始化中心点:首先随机选择 K 个样本作为初始的聚类中心点。

  • 样本分配:对于每个样本,根据其与各个中心点的距离,将其分配到最近的簇中。

  • 更新中心点:对于每个簇,计算其中所有样本的均值,将其作为新的中心点。

  • 重复迭代:重复步骤 2 和步骤 3,直到达到最大迭代次数或者中心点不再发生变化。

  • 得到最终簇:最终得到 K 个簇,每个簇包含一组相似的样本。

Python 中的 K-means 实现

下面我们使用 Python 中的 scikit-learn 库来实现一个简单的 K-means 聚类模型:

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans

# 生成随机数据集
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# 构建 K-means 聚类模型
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()

在上述代码中,我们首先使用 scikit-learn 的 make_blobs 函数生成了一个随机的二维数据集。然后,我们构建了一个 K-means 聚类模型,并拟合了数据集。最后,我们使用散点图将数据集的样本点按照所属的簇进行了可视化,并标记了簇的中心点。

总结

K-means 算法是一种简单而有效的聚类算法,在许多实际问题中都有着广泛的应用。通过本文的介绍,你已经了解了 K-means 算法的原理、实现步骤以及如何使用 Python 进行编程实践。希望本文能够帮助你更好地理解和应用 K-means 算法。

相关推荐
B612 little star king6 分钟前
力扣29. 两数相除题解
java·算法·leetcode
野犬寒鸦7 分钟前
力扣hot100:环形链表(快慢指针法)(141)
java·数据结构·算法·leetcode·面试·职场和发展
时光追逐者12 分钟前
C# 哈希查找算法实操
算法·c#·哈希算法
浪浪山齐天大圣29 分钟前
python数据可视化之Matplotlib(8)-Matplotlib样式系统深度解析:从入门到企业级应用
python·matplotlib·数据可视化
Jasmine_llq36 分钟前
《P3825 [NOI2017] 游戏》
算法·游戏·枚举法·2-sat 算法·tarjan 算法·邻接表存储
Miraitowa_cheems40 分钟前
LeetCode算法日记 - Day 38: 二叉树的锯齿形层序遍历、二叉树最大宽度
java·linux·运维·算法·leetcode·链表·职场和发展
F_D_Z40 分钟前
【PyTorch】单对象分割
人工智能·pytorch·python·深度学习·机器学习
wangzy198240 分钟前
图形基础算法:如何将点与带曲线边的多边形位置关系算法做稳定
算法
编程自留地42 分钟前
18.4 查看订单
python·django·商城
wanzhong23331 小时前
学习triton-第1课 向量加法
开发语言·python·高性能计算