无监督学习 - 均值聚类(K-Means Clustering)

什么是机器学习

K-Means聚类是一种无监督学习算法,用于将数据集分成K个不同的组(簇),每个组内的数据点与组内其他点的相似度较高,而与其他组内的点相似度较低。这是通过迭代地调整簇中心和将数据点分配到最近的簇来实现的。以下是K-Means聚类的基本步骤:

  1. 初始化: 随机选择K个数据点作为初始簇中心,这些点可以是数据集中的实际数据点,或者通过其他初始化方法获得。
  2. 分配到最近的簇: 对于每个数据点,计算其与各个簇中心的距离,并将其分配到距离最近的簇。
  3. 更新簇中心: 对于每个簇,计算其所有数据点的均值,并将该均值作为新的簇中心。
  4. 重复步骤2和步骤3: 重复执行步骤2和步骤3,直到簇中心不再发生显著变化或达到预定的迭代次数。
  5. 输出结果: 最终得到K个簇,每个簇由其均值(簇中心)表示。数据点被分配到这些簇中的一个,形成了聚类结果。

K-Means聚类的优点包括简单、高效,对于大型数据集也是相对可行的。然而,它也有一些缺点,比如对于簇形状不规则或大小差异较大的数据集,表现可能不佳。此外,K值的选择通常需要一些经验或者通过其他方法进行评估,比如肘部法则(Elbow Method)。

下面是使用Python中的scikit-learn库进行K-Means聚类的简单示例:

python 复制代码
from sklearn.cluster import KMeans
import numpy as np

# 生成随机数据集
np.random.seed(42)
data = np.random.rand(100, 2)

# 使用K-Means进行聚类(假设要分成3个簇)
kmeans = KMeans(n_clusters=3)
kmeans.fit(data)

# 获取簇中心和分配结果
centroids = kmeans.cluster_centers_
labels = kmeans.labels_

# 打印结果
print("簇中心:")
print(centroids)
print("\n分配结果:")
print(labels)

这只是一个简单的例子,实际应用中需要根据数据集的特点和需求进行调整和优化。

相关推荐
小趴蔡ha3 小时前
02 Anaconda、Python 与机器学习开发环境入门
python·机器学习·anaconda
jikemaoshiyanshi3 小时前
AWS 中国峰会 2026 有哪些 AI Agent 相关演讲可以看?按业务、研发与生产阶段选看
大数据·人工智能
网易易盾4 小时前
AI互动产品安全合规体系架构:制度/技术/运营/证据四层落地
人工智能·安全·aigc·内容安全
wabs6664 小时前
关于图论【卡码网117.软件构建的思考】
数据结构·算法·软件构建·图论·卡码网
新知图书4 小时前
4.3 链接速读
人工智能·语音识别·ai助手·千问
江苏久众新视4 小时前
SOP-AI实战:基于AI视觉与视频检测,精准管控空调管件装配防漏防错
人工智能
mifengxing4 小时前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析
java·算法·leetcode·排序算法
Tongzhi20265 小时前
从部署到运维:通芝科技无感考勤一体机的全流程效率解析
运维·数据结构·科技·算法·贪心算法
Wang's Blog5 小时前
AI Agent白手起家30: 动态示例选择器之根据长度选择 Few Shot 示例
算法
u0103055275 小时前
Java AWT鼠标事件全解析
人工智能·1024程序员节