18、数据分析--聚类算法

本文详细介绍了K-Means聚类算法的基本思想、流程和底层实现,包括K-Means++和K-Means||的衍生算法。还讨论了如何通过肘部法和轮廓系数来确定最佳簇数,以及与DBSCAN等密度聚类算法的比较。最后,提到了层次聚类和优化算法,如BIRCH和CURE。
摘要由CSDN通过智能技术生成

聚类算法属于无监督的一种算法,不需要标签就可以进行处理0

K -means家族(K-means算法是聚类算法中最常用的)

​ 给定一个有M个对象的数据集,构建一个具有k个簇(组)的模型,其中k<=M。满足以下条件:

​ 每个簇至少包含一个对象

​ 每个对象属于且仅属于一个簇

​ 将满足上述条件的k个簇成为一个合理的聚类划分

​ 基本思想:对于给定的类别数目k,首先给定初始划分,通过迭代改变样本和簇的隶属关系,使的 每次处理后得到的划分方式比上一次的好(总的数据集之间的距离和变小了),(K不是一次性就得到最好的,要不断迭代来进行改良)

​ 历史渊源

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

​ 通过不断求样本的均值来更新质心从而得到新的K簇,最终样本的均值更新完后就是质心更新的最终位置,K簇可能不会变但是质心的位置会达到最优(K均值停止迭代是在质心不能进行变化的时候)

算法流程

​ K-means算法,也称为K-平均或者K-均值,是一种使用广泛的最基础的聚类算法,一般作为掌握聚 类算法的第一个算法

​ 假设输入样本为T=X1,X2,…,Xm;则算法步骤为(使用欧几里得距离公式):

​ 选择初始化的k个类别中心(质心)a1,a2,…ak(a为质心,k为样本个数);

​ 对于每个样本Xi,将其标记位距离类别中心aj最近的类别j(i为几个簇,j为某个样本)

​ 更新每个类别的中心点aj为隶属该类别的所有样本的均值

​ 重复上面两步操作,直到达到某个中止条件(1、质心位置不变化 2、循环到达最大迭代次数)

​ 哪个质心距离某样本最近,某样本就属于那个质心的类别

​ 终止条件

​ 迭代次数、最小平方误差MSE、簇中心点变化率

​ K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划 分为K个簇。处理形式:”让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大“。

​ 如果用数学表达式表示,假设簇划分为(C1,C2,…Ck),则我们的目标是最小化平方误差E(得到的数值越小,数据处理的性能就越强):

​ 其中 μi 是簇 Ci 的均值向量,有时也称为质心,表达式为:

K-means底层实现

import numpy as np
import matplotlib.pyplot as plt
import copy(复制为了避免数值更新的变化,当数据复制前后不再变化,就说明质心位置不再改变,证明模型达到了最终处理,这个也是终止的条件)
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False
处理前效果演示

质心位置为随机样本点

# 样本集
X = np.array([[1, 2], [
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T o r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值