当前位置: 首页 > article >正文

Kmeans与KMedoids聚类对比以及python实现

        在机器学习领域,聚类算法是一种常用的无监督学习方法,用于将数据集中的样本划分为若干个簇,使得同一簇内的样本尽可能相似,而不同簇之间的样本尽可能不同。K-Means 和 K-Medoids 是两种经典的聚类算法,它们都基于划分的思想,但在具体实现和应用场景上存在一些差异。

        

一、算法原理

1. K-Means:

  • 中心点选择: K-Means 算法通过计算簇内所有样本的均值来确定中心点(centroid)。

  • 距离度量: 通常使用欧氏距离来衡量样本与中心点之间的距离。

  • 迭代过程: 算法通过不断迭代更新中心点和样本所属簇,直到中心点不再变化或达到最大迭代次数。

2. K-Medoids:

  • 中心点选择: K-Medoids 算法从簇内选择一个实际存在的样本作为中心点(medoid)。

  • 距离度量: 可以使用任意距离度量方法,例如曼哈顿距离、欧氏距离等。

  • 迭代过程: 与 K-Means 类似,K-Medoids 也通过迭代更新中心点和样本所属簇,直到中心点不再变化或达到最大迭代次数。

二、异同点

特性K-MeansK-Medoids
中心点虚拟点(均值)实际存在的样本点
距离度量通常使用欧氏距离可以使用任意距离度量
对噪声和异常值的敏感性敏感不敏感
计算复杂度较低较高
适用场景大规模数据集,簇形状为凸形小规模数据集,簇形状任意

三、适用场景

K-Means:

  • 数据集规模较大,计算效率要求高。

  • 簇的形状为凸形,例如球形、椭圆形等。

  • 数据集中噪声和异常值较少。

K-Medoids:

  • 数据集规模较小,计算效率要求不高。

  • 簇的形状任意,例如非凸形、流形等。

  • 数据集中存在噪声和异常值。

四、Python 代码示例

K-Means:

from sklearn.cluster import KMeans
import numpy as np

# 生成随机数据
X = np.random.rand(100, 2)

# 创建 KMeans 模型
kmeans = KMeans(n_clusters=3)

# 拟合模型
kmeans.fit(X)

# 获取聚类结果
labels = kmeans.labels_
centroids = kmeans.cluster_centers_

# 打印结果
print("Labels:", labels)
print("Centroids:", centroids)

K-Medoids:

from sklearn_extra.cluster import KMedoids
import numpy as np

# 生成随机数据
X = np.random.rand(100, 2)

# 创建 KMedoids 模型
kmedoids = KMedoids(n_clusters=3)

# 拟合模型
kmedoids.fit(X)

# 获取聚类结果
labels = kmedoids.labels_
medoids = kmedoids.cluster_centers_

# 打印结果
print("Labels:", labels)
print("Medoids:", medoids)

五、总结

        K-Means 和 K-Medoids 都是常用的聚类算法,它们各有优缺点,适用于不同的场景。K-Means 算法计算效率高,适用于大规模数据集和凸形簇,但对噪声和异常值敏感。K-Medoids 算法对噪声和异常值不敏感,适用于小规模数据集和任意形状的簇,但计算复杂度较高。在实际应用中,需要根据具体问题选择合适的算法。


http://www.kler.cn/a/514625.html

相关文章:

  • 小米Vela操作系统开源:AIoT时代的全新引擎
  • AI Agent:数字文明的暗物质,如何悄然改变我们的世界?
  • 【数据挖掘实战】 房价预测
  • Jenkins-获取build用户信息
  • 使用 Tauri 开发桌面应用程序:新一代的轻量解决方案
  • 可视化-numpy实现线性回归和梯度下降法
  • C语言中危险函数
  • JMeter 测试Dubbo 接口
  • Win10系统部署RabbitMQ Server
  • linux系统安装vmware workstation
  • Laravel 请求接口 调用2次
  • TS报错解决:不能将类型“string | null”分配给类型“string | undefined”
  • 2025年最新电子制造行业CRM售后管理解决方案
  • SCSS概念及使用
  • 我的2024:创作历程与成长总结
  • 【0x05】HCI_Disconnection_Complete事件详解
  • GD32L233RB 驱动数码管
  • 从工厂到桌面:3D打印制造潮玩手办
  • [MySQL]MySQL数据库的介绍和库相关操作
  • SimpleFOC STM32教程09|基于STM32F103+CubeMX,ADC采样相电流
  • PAT (Basic Level) Practice 乙级1041-1045
  • 等变即插即用图像重建
  • Windows第一次上手鸿蒙周边
  • 方法建议ChatGPT提示词分享
  • 人工智能的出现,给生命科学领域的研究带来全新的视角|行业前沿·25-01-22
  • 从构思到上线的全栈开发指南:全栈开发中的技术选型和架构