K均值聚类算法的入门指南

大家好!今天我们来聊聊机器学习中的一个经典算法------K均值聚类(K-Means Clustering) 我们从两个方面来进行了解:

什么是K均值聚类? 为什么叫K均值?

什么是K均值聚类?

K均值聚类(K-Means Clustering)是一种非常流行的机器学习算法,用于将数据集分成K个不同的组,这些组被称为"簇"。这个算法的主要目的是让每个数据点到其所属簇的中心(质心)的距离最小化。

为什么叫K均值?

这个名字其实很直观:

  • K表示我们想要的簇的数量。
  • 均值是因为每个簇的中心是通过计算簇内所有数据点的平均值来确定的。

算法步骤

  1. 随机选择初始质心:首先,从数据集中随机挑选K个点作为初始质心。
  2. 分配数据点到最近的质心:然后,将所有的数据点分配到离它们最近的质心所对应的簇中。
  3. 更新质心:重新计算每个簇的质心,方法是取该簇内所有数据点的平均值。
  4. 重复步骤2和3:不断重复上述过程,直到质心不再发生变化或达到预设的迭代次数。

接下来我们用Python实现一个简单的K均值聚类,并附上测试效果。

记得检查Python环境 ,下载相关库可以看我之前的文章:numpy环境安装

Python代码示例

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

# 生成一些示例数据
X, y = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# 使用KMeans进行聚类
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.title("K-Means Clustering")
plt.show()

代码解释

  1. 生成示例数据make_blobs函数生成了一些随机分布的二维数据点,这些点自然地聚集成四个簇。
  2. 创建KMeans对象并进行拟合KMeans(n_clusters=4)创建一个K均值聚类对象,指定我们要分成4个簇。fit方法对数据进行聚类。
  3. 预测簇标签predict方法返回每个数据点所属的簇的标签。
  4. 绘制结果:使用Matplotlib库绘制散点图,其中不同颜色表示不同的簇,红色大圆点表示质心。

配图说明

这张图展示了K均值聚类的结果。你可以看到,数据点被分成了四个簇,每个簇有一个红色的质心。这些质心的位置是通过计算簇内所有点的平均值得到的。

总结

K均值聚类算法简单易用,适用于大多数无监督学习任务。它通过不断优化质心的位置来最小化数据点到质心的距离,从而找到最优的簇划分。


相关推荐
2301_7930868739 分钟前
Springboot 04 starter
java·spring boot·后端
无限大63 小时前
只出现一次的数字:从暴力美学到位运算神技的进化之路
后端·面试
宇寒风暖3 小时前
Flask 框架全面详解
笔记·后端·python·学习·flask·知识
你的人类朋友3 小时前
❤️‍🔥为了省内存选择sqlite,代价是什么
数据库·后端·sqlite
还是鼠鼠3 小时前
tlias智能学习辅助系统--SpringAOP-进阶-通知顺序
java·后端·mysql·spring·mybatis·springboot
哪 吒3 小时前
【2025C卷】华为OD机试九日集训第3期 - 按算法分类,由易到难,提升编程能力和解题技巧
python·算法·华为od·华为od机试·2025c卷
机器学习之心HML3 小时前
PSO-TCN-BiLSTM-MATT粒子群优化算法优化时间卷积神经网络-双向长短期记忆神经网络融合多头注意力机制多特征分类预测/故障诊断Matlab实现
神经网络·算法·cnn
数据与人工智能律师4 小时前
智能合约漏洞导致的损失,法律责任应如何分配
大数据·网络·人工智能·算法·区块链
Pitayafruit4 小时前
Spring AI 进阶之路01:三步将 AI 整合进 Spring Boot
spring boot·后端·ai编程
天天开心(∩_∩)4 小时前
代码随想录算法训练营第三十九天
算法