Kmeans均值聚类算法

本文详细介绍了KMeans聚类算法的基本概念、工作流程、评价指标以及Python实现。KMeans是一种无监督学习方法,用于将数据集分为K个簇,通过迭代更新质心以达到簇内数据紧密、簇间数据分散的目标。文章还探讨了KMeans的局限性和MiniBatchKMeans的优化策略,提供了完整的代码示例以帮助理解。

Kmeans白话理解

Kmeans,又作K-means,顾名思义,K均值聚类算法。Kmeans算法将数据集分为K个簇,使每个簇簇内距离小,簇间距离大。

Kmeans原理详解

聚类与分类

聚类,是将一堆没有标签的数据分成几簇,我们并不关心这一类是什么,我们关心的仅仅只是把相似的目标聚在一起
分类,是将一些给定的打好标签的数据,训练得到某种目标函数,在一个新的数据或者目标出现的时候,对其进行分类,分析它究竟属于哪一类

聚类 分类
核心 将数据分成簇 从已经分组好的数据中训练得出目标函数,把新数据放到已经分好的组中
学习类型 无监督学习 有监督学习
典型算法 K-means,DBSCAN ,层次聚类,光谱聚类 决策树,贝叶斯,逻辑回归
算法输出 聚类结果并不确定,不一定能够反映数据的真实分类,同样的聚类,对于不同的需求,可能好也可能坏 分类结果是确定的,分类的优劣是客观的,不根据业务或算法需求而定

原理介绍

KMeans算法将一组N个样本的特征矩阵X划分为K个无交集的簇,直观上来看是簇是一组一组聚集在一起的数 据,在一个簇中的数据就认为是同一类。簇就是聚类的结果表现。
簇中所有数据的均值 通常被称为这个簇的“质心”。

工作流程

通俗来讲
先随机出K个质心,然后按照距离大小,把所有数据点分配给离他们最近的质心,然后我们就有了一簇一簇的数据,一共有K簇。对这些数据取均值,就可以或者新的K个质心,对于这新的K个质心,又可以划分出K个新的簇,如此循环往复,直到算法收敛为止
严谨来讲

步骤 过程
1 随机抽取K个样本作为最初的质心
2 根据簇中心对数据进行簇划分
3 重新计算当前簇划分下每个簇的中心
4 在得到簇中心下继续进行簇划分
5 当质心的位置不再发生变化,迭代停止,聚类完成

评价指标

inertia指标
又被称为簇内平方和,在统计学中称作“和方差”、“簇内离差平方和”(SSE).inertia表示的是每个样本点到其所在质心的距离之和。显而易见inertia是越小越好。 但实际上当簇数越来越多的时候inertia越来越小。最极端的情况下,簇的数量等于样本数的时候,每一个样本就是一个簇,那么inertia就为0.很难判断什么时候取合适的K比较好
轮廓系数
轮廓系数(Silhouette Coefficient)包含两部分,一部分叫做内聚度,另一部分叫做分离度。内聚度是一个样本点与簇内元素的紧密程度。分离度是一个样本点与簇外元素的紧密程度。
轮廓系数的计算公式如下:
S ( i ) = b ( i ) − a ( i ) m a x ( a ( i ) , b ( i ) ) S(i) = \frac{b(i) - a(i)}{max{(a(i),b(i))}} S(i)=max(a(i),b(i))b(i)a(i)
其中,a(i)代表样本点的类内聚度,计算方式如下:
a ( i ) = 1 n − 1 ∑ j ≠ i n d i s t a n c e ( i , j ) a(i) = \frac{1}{n-1}\sum_{j≠i}^n distance(i,j) a(i)=n11j=indista

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值