python聚类算法kmeans/kmeans++最佳聚类数目选择

K-Means
1、随机选取k个中心
2、计算每个点与之心点距离,将点分配到与其距离最近的中心所在的簇
3、计算每个簇的所有点的平均值,作为下一次中心,更新每个簇的中心
4、重复2、3,直到簇的分配不变

其中一个缺点:随机选取中心,导致每次聚类结果不同

K-Means++
改进:K-MEANS++确定唯一的初始中心,确保初始中心距离尽量远

1、随机选取第一个中心
2、计算每个点到中心的距离Di(x)(与这个点距离最近的中心),计算每个点被选为下一个聚类中心的概率Di(x)2/(D1(x)2/+D2(x)2+……+Dn(x)2),根据轮盘法确定下一个中心。
(轮盘法:随机选取[0,1]之间的数字,例如0.7,如果0.7落在X1点所在的概率区间(0.69,0.71),那么X1被选为下一个聚类中心,即随机数出现的概率和点被选择的概率成正比)
3、重复2,直到选择K个中心
4、正常K-Means步骤

from sklearn.cluster import KMeans`

estimator =KMeans(n_clusters=3,init=“k-means++”)   
estimator.fit(data) 
label_pred = estimator.labels_#聚类标签
centroids = estimator.cluster_centers_#聚类中心

确定聚类数目:
(1)手肘法:
计算sse,sse为类内每个点与类中心的距离之和,取拐点,为最佳聚类数目。
类分的越细致,sse越小
类未达到真实聚类数目时,k增加,会大幅增加聚合程度,每增加一类就会使得sse急剧下降,当达到真实聚类数目后,k的增加对sse影响小(增加聚类数目对聚合程度的贡献小)
(2)轮廓系数
越大越好
计算类内相似度:类内点到其他点的平均距离
计算类间不相似度:一个类的点到其他类的点到平均距离
在这里插入图片描述
参考链接:
https://www.cnblogs.com/wang2825/articles/8696830.html
https://www.cnblogs.com/heben/p/7447999.html
https://zhuanlan.zhihu.com/p/32375430
https://www.jianshu.com/p/335b376174d4

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
K-Means聚类算法Python实现可以参考之前您写的文章《Python实现K-Means聚类算法》。在这篇文章中,您介绍了改进版的K-Means聚类算法,即K-Means++算法。在该算法中,初始化聚类中心的过程如下所示: 1. 随机选择一个样本点作为第一个聚类中心。 2. 对每一个样本,找到最近的聚类中心点,并计算距离序列。 3. 将所有的最短距离相加,并乘以一个随机值。 4. 获得距离最远的样本点作为聚类中心点。 5. 重复步骤2-4,直到得到指定量的聚类中心。 以上步骤可以用以下Python代码实现: ```python import numpy as np def get_cent(points, k): m, n = np.shape(points) cluster_centers = np.mat(np.zeros((k, n))) # 1、随机选择一个样本点作为第一个聚类中心 index = np.random.randint(0, m) cluster_centers = nearest(points[j, ], cluster_centers = np.copy(points[j, ]) break return cluster_centers ``` 这段代码中,`points`是样本集合,`k`是聚类中心的个。函`get_cent`返回初始化后的聚类中心。请注意,`nearest`函在该代码段中并未给出,您可以根据具体情况自行实现。 总之,以上是K-Means聚类算法Python实现,这个实现基于K-Means++算法,可以用于对据进行聚类分析。希望对您有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python实现K-Means++聚类算法](https://blog.csdn.net/gdkyxy2013/article/details/88381120)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [一种使用Python自实现KMeans++聚类算法的写法](https://blog.csdn.net/I_am_Tony_Stark/article/details/120929100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值