非监督分类-K-means系列(一) 算法原理,步骤和python实现

本文介绍了K-means算法的基本原理,详细阐述了其主要步骤,包括选择初始中心、迭代聚类和确定最优聚类中心。同时,文章讨论了算法的主要缺陷,如初始中心选择和K值确定的问题。通过Python代码展示了算法的实现,并通过结果可视化来展示聚类效果。

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

基本原理

”物以聚类,点以距离分“的思想。对于给定的样本集,根据样本之间的距离划分为K个族,让族内的点的距离尽量的小,族间的距离尽量大。

主要步骤

1.从数据中选择K个对象作为初始的距离中心

2.计算每个聚类对象到聚类中心的距离,将每个对象划分到距离自己最近的聚类中心的一类

3.在每类中重新计算聚类中心,并重复2的操作,直到到达最大迭代次数或者两次更新的聚类中心距离达到要求

4.确定最优的聚类中心

主要的缺陷

1. K个初始中心的选择:K means++ 

2. K值得确定,因为没有已知得分类数目,所以无法实现知道K得取值,可以采用手肘法,轮廓系数法或者Calinski-harabasz系数等方式确定K值 可以参考 https://blog.csdn.net/qq_15738501/article/details/79036255

python代码

python实现并将结果与python自带得KMeans比较,结果一致

class KMeans():
    def __init__(self,n_clusters: int = 8,max_iter: int = 300,tol:float = 1e-4):
        self.n_clusters = n_clusters
        self.max_iter = max_iter
        self.tol = tol
        self.c_clusters = None
    
    def cluster(self,lo_c,lo_x):
        '''
        根据聚类中心确定每个点得类别
        lo_c:聚类中心位置
        lo_x:数据
        '''
        ## 得到每个点到聚类中心得距离
        op = []
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Lee_Yu_Rui

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

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

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

打赏作者

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

抵扣说明:

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

余额充值