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

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

相关推荐
xiaoxiaoxiaolll3 分钟前
《Light: Science & Applications》基于拓扑能量转移网络的UCNPs,实现65nm超分辨成像与10倍功耗降低
学习
roman_日积跬步-终至千里8 分钟前
【模式识别与机器学习(10)】数据预处理-第二部分:数据预处理核心方法
人工智能·机器学习
可可苏饼干11 分钟前
Ruo-Yi 前后端分离
运维·学习
用户51914958484523 分钟前
探秘C#伪随机数生成器的安全漏洞与破解之道
人工智能·aigc
小糖学代码28 分钟前
LLM系列:1.python入门:2.数值型对象
人工智能·python·ai
CoderYanger37 分钟前
动态规划算法-简单多状态dp问题:15.买卖股票的最佳时机含冷冻期
开发语言·算法·leetcode·动态规划·1024程序员节
gs8014040 分钟前
Ascend 服务器是什么?(Ascend Server / 昇腾服务器)
运维·服务器·人工智能
Xの哲學41 分钟前
Linux RTC深度剖析:从硬件原理到驱动实践
linux·服务器·算法·架构·边缘计算
csdn_aspnet1 小时前
AI赋能各类主流编程语言
人工智能·ai·软件开发
狐571 小时前
2025-12-04-牛客刷题笔记-25_12-4-质数统计
笔记·算法