Python算法总结(二)KMeans(附手写python实现代码)

本篇文章是在闭卷之下据我个人的理解一个字一个字写出来,恐有错漏,请谨慎参考。

一、算法类型
无监督的聚类算法

二、算法原理
将样本划分为不同簇(拼音:cu)数,直观上,簇内样本较为聚集,簇间样本较为分开。每个样本到本簇质心的距离,小于到其他簇质心的距离。

三、算法流程
第一步:准备已处理好的样本集Data(N个样本,M个特征),指定聚类k簇,迭代次数max_iter;
第二步:随机选取k个样本作为第一代质心集C,表示为:c0,c1…ck-1(这里下标索引将作为聚类标签);
第三步:计算每个样本到每个质心的距离,得到距离集D(N行,K列);
第四步:比较每个样本到质心集的k个距离,选取最小距离对应的质心及其索引,该索引值作为该样本的聚类标签,从而得到所有样本的聚类标签;
第五步:计算SSE和轮廓系数silhouette_score(辅助选取最优K值);
第六步:计算第四步中不同标签下的所有样本的M个特征的算术均值,从而得到第二代质心集C
第七步:循环第三、四、五步骤,迭代max_iter次后停止。

四、手写Python实现
(脱稿手写出来,好开心,请给我点赞O(∩_∩)O)

def kmeans(X,k=3,max_iter=100):
    '
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值