探索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 算法。

相关推荐
泡海椒1 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
hqyjzsb1 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
辰烨chenye1 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
微功夫信息技术2 小时前
分层多智能体强化学习驱动的非急救转运公平 - 效率统一调度系统研究与实践
人工智能·学习·算法·动态规划
sanjiaomao3332 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
乐迪信息3 小时前
如何通过AI防爆摄像机精准判断船舶超速?
大数据·人工智能·算法·安全·目标跟踪
大圣编蚕3 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
linweidong4 小时前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
小玮看世界4 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
萧鼎4 小时前
2026实战:用 tomlkit 优雅读写 TOML 配置,告别手写解析器
python·开源·教程·python库