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

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

相关推荐
会的全对٩(ˊᗜˋ*)و1 分钟前
【数据挖掘】数据挖掘综合案例—银行精准营销
人工智能·经验分享·python·数据挖掘
云渚钓月梦未杳3 分钟前
深度学习03 人工神经网络ANN
人工智能·深度学习
在美的苦命程序员6 分钟前
中文语境下的视频生成革命:百度 MuseSteamer 的“产品级落地”启示录
人工智能·百度
??tobenewyorker10 分钟前
力扣打卡第二十一天 中后遍历+中前遍历 构造二叉树
数据结构·c++·算法·leetcode
kngines22 分钟前
【字节跳动】数据挖掘面试题0007:Kmeans原理,何时停止迭代
人工智能·数据挖掘·kmeans
Kali_0725 分钟前
使用 Mathematical_Expression 从零开始实现数学题目的作答小游戏【可复制代码】
java·人工智能·免费
贾全32 分钟前
第十章:HIL-SERL 真实机器人训练实战
人工智能·深度学习·算法·机器学习·机器人
每日摸鱼大王37 分钟前
互联网摸鱼日报(2025-07-01)
人工智能
GIS小天1 小时前
AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年7月4日第128弹
人工智能·算法·机器学习·彩票
我是小哪吒2.01 小时前
书籍推荐-《对抗机器学习:攻击面、防御机制与人工智能中的学习理论》
人工智能·深度学习·学习·机器学习·ai·语言模型·大模型