k-means聚类算法

引言

已经很久没有更新博客了,最近在工作之余归纳总结了一下学习的理论知识和工作中实践过的算法,希望能分享给大家,也是自我提升。

聚类算法

聚类算法是属于无监督学习算法,不需要事先知道样本所属类别。在实际工作中,常用于:
1)用户分类,比如进行营销活动时在冷藏期时还不知道用户对活动的相应结果,就会采用对用户进行聚类,对不同的类别指定不同的策略,再根据之后的用户营销响应结果对用户进行类别的调整,进而预测其他用户的响应结果;
2)异常检测,通过聚类能发现样本的异常点,比如反欺诈、反爬虫场景的应用。

k-means算法

k-means算法是实践中应用比较多的聚类算法,主要在于该算法高效快速,且算法思路简单,所以先介绍k-means聚类算法。

牧师—村民模型:
有四个牧师去郊区布道,一开始牧师们随意选了几个布道点,并且把这几个布道点的情况公告给了郊区所有的村民,于是每个村民到离自己家最近的布道点去听课。听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己的课上所有的村民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。牧师每一次移动不可能离所有人都更近,有的人发现A牧师移动以后自己还不如去B牧师处听课更近,于是每个村民又去了离自己最近的布道点……就这样,牧师每个礼拜更新自己的位置,村民根据自己的情况选择布道点,最终稳定了下来。
该模型就是对K-means聚类算法生动形象的解释。

k-means算法步骤:
1.随机选取k个初始中心点;
2.针对数据集中的每个样本点,计算样本点与k个中心点的距离,将样本点划分到离它最近的中心点所对应的类别中;
3.类别划分完成后,重新确定类别的中心点,将类别中所有样本各特征的均值作为新的中心点对应特征的取值,即该类中所有样本的质心;
4.重复上面的2 3步骤,直到达到某个终止条件(迭代次数、最小误差变化等)。

算法总结:
1)基于“质心”的聚类方法;
2)数据变量为数值型的聚类方法;
3)算法高效快速,但是受样本中异常数据影响严重;

python实现

#加载所需模块
from sklearn.cluster import KMeans
import multiprocessing
from sklearn.preprocessing import StandardScaler
import</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值