无监督学习 - 均值聚类(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)

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

相关推荐
沈浩(种子思维作者)7 分钟前
真的能精准医疗吗?癌症能提前发现吗?
人工智能·python·网络安全·健康医疗·量子计算
saoys7 分钟前
Opencv 学习笔记:图像掩膜操作(精准提取指定区域像素)
笔记·opencv·学习
minhuan9 分钟前
大模型应用:大模型越大越好?模型参数量与效果的边际效益分析.51
人工智能·大模型参数评估·边际效益分析·大模型参数选择
Cherry的跨界思维14 分钟前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
MM_MS17 分钟前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
ASF1231415sd30 分钟前
【基于YOLOv10n-CSP-PTB的大豆花朵检测与识别系统详解】
人工智能·yolo·目标跟踪
独自破碎E42 分钟前
【二分法】寻找峰值
算法
mit6.8241 小时前
位运算|拆分贪心
算法
水如烟1 小时前
孤能子视角:“意识“的阶段性回顾,“感质“假说
人工智能
电子小白1231 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout