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

相关推荐
地平线开发者6 小时前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶
董董灿是个攻城狮6 小时前
大模型连载2:初步认识 tokenizer 的过程
算法
地平线开发者7 小时前
地平线 VP 接口工程实践(一):hbVPRoiResize 接口功能、使用约束与典型问题总结
算法·自动驾驶
罗西的思考7 小时前
AI Agent框架探秘:拆解 OpenHands(10)--- Runtime
人工智能·算法·机器学习
孟健9 小时前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
HXhlx10 小时前
CART决策树基本原理
算法·机器学习
码路飞10 小时前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python
Wect10 小时前
LeetCode 210. 课程表 II 题解:Kahn算法+DFS 双解法精讲
前端·算法·typescript
颜酱11 小时前
单调队列:滑动窗口极值问题的最优解(通用模板版)
javascript·后端·算法
曲幽13 小时前
FastAPI压力测试实战:Locust模拟真实用户并发及优化建议
python·fastapi·web·locust·asyncio·test·uvicorn·workers