机器学习之聚类算法(三)KMeans、KMeans++、KMeans||原理介绍及代码实现

本文详细介绍了KMeans聚类算法,包括历史渊源、实现思想和数学公式。讨论了KMeans的缺点,并提出了优化方案KMeans++和KMeans||,分别解析了它们的优化步骤和代码实现。最后,对比了三种算法的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

K均值聚类(K-means)介绍

历史渊源

虽然其思想能够追溯到1957年的Hugo Steinhaus,术语“k-均值”于1967年才被James MacQueen首次使用。标准算法则是在1957年被Stuart Lloyd作为一种脉冲码调制的技术所提出,但直到1982年才被贝尔实验室公开出版。在1965年,E.W.Forgy发表了本质上相同的方法,所以这一算法有时被称为Lloyd-Forgy方法。更高效的版本则被Hartigan and Wong提出(1975/1979)

介绍

K-Means算法是无监督的聚类算法,算法简单,聚类效果好,即使是在巨大的数据集上也非常容易部署实施。正因为如此,它在很多领域都得到的成功的应用,如市场划分、机器视觉、 地质统计学、天文学和农业等。K-Means算法有大量的变体,包括初始化优化K-Means++以及大数据应用背景下的k-means||和Mini Batch K-Means

实现思想及数学公式

实现思想

  • K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大
  • 优化目标是:使样本点到聚类中心的距离最小化

数学公式

  • 计算样本点到聚类中心的距离:
    距离 = (求和(样本点矩阵 - 聚类中心坐标)**2)1/2
  • 重新规划聚类中心:
    聚类中心坐标 = 所有样本点对应相加 / 样本点个数

KMeans代码实现

import numpy as np
# 数据
X = np.array([[1, 2], [2, 2], [6, 8], [7, 8]])
# 随机初始化的聚类中心
C = np.array([[1.0, 2.0], [2.0, 2.0]])

n = 5
for i in range(n):
    # 求每个聚类中心到每个样本的距离
    DIS = []
    for c in C:
        dis = np.sqrt(np.sum((X - c)**2,axis=1))
        DIS.append(dis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值