kmeans的手肘法

  关于kmeans的算法遇到有几个问题。还未解决,写个博客mark一下,也欢迎各位高手指点~

  1. 中心点选取

    在随机选取情况下,Kmeans算法可以实现,且优点为第一次选取中心点时,由于选择随机选取的算法,时间复杂度不高。但缺点为会出现两个中心点间隔近,k=4时,出现的结果和现象不符,如下图所示。
    在这里插入图片描述
    猜测:和点密集的聚集在(12,0)的领域,故两个中心点出现在同一簇。

  2. 手肘法拐点的选取
    随着分类的类别数增加,SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,手肘法即为选取那个拐点。

在这里插入图片描述

  实际上拐点的确不好确定,查阅多份网络博客,均采用目测法。但从斜率变化角度来看,下图中,k=2-3的斜率和k=3-4的斜率用目测法难以比较,趋于平缓的拐点任可以看出。从该角度看,斜率前后变化的参考价值低一些,以斜率基本不变作为判断拐点的依据更佳。

在这里插入图片描述
  基于上述的思想,可采取斜率判断法来选取拐点:找出第一个与下一个点之间斜率小于1(选取一个较小的常数即可,本实验选取为1)的点作为拐点。
  优点:可用代码实现,可避免目测带来的误差。
  缺点:面对斜率变化有波动的情况,该方法会出现误判拐点,如下图:

在这里插入图片描述
  缺点的改进:可多加一层判断,当下一段斜率小于1,判断第二段的斜率是否任小于1,若斜率变化大,则不能选取为拐点。或者由判断一段线段斜率小于1,增加为判断连续多段线段的斜率均小于1,可达到更好的选取效果。
----------------------------------------分割线------------------------------------------------

2020/1/27 更新
在看主成分分析的论文中,对文中的保留方差百分比的公式,联想到了手肘法中k值的选取,联想到可以用类似提取多少个主成分(为最佳)的公式,来选取最佳的K值。公式可参考下图。
在这里插入图片描述
文章来源:主成分分析

  • 7
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用MATLAB实现k-means算手肘代码: ```matlab clc; clear; load fisheriris data = meas; % 对原始数据进行归一化处理 data = mapminmax(meas, 0, 1); \[n, p\] = size(data); K = 8; D = zeros(K, 2); for k = 2:K \[lable, c, sumd, d\] = kmeans(data, k, 'dist', 'sqeuclidean'); sse1 = sum(sumd.^2); D(k, 1) = k; D(k, 2) = sse1; end plot(D(2:end, 1), D(2:end, 2)) hold on; plot(D(2:end, 1), D(2:end, 2), 'or'); title('不同K值聚类偏差图') xlabel('分类数(K值)') ylabel('簇内误差平方和') ``` 这段代码使用了鸢尾花数据集作为示例数据,你可以根据自己的数据进行替换。代码的目的是通过手肘确定k-means算的最佳聚类类别数。它计算了不同k值下的簇内误差平方和,并绘制了聚类偏差图。根据图形的变化趋势,可以选择一个合适的k值作为最佳聚类类别数。 #### 引用[.reference_title] - *1* *3* [MATLAB实现k-means算(k-均值)对无标签数据进行聚类,并通过肘部则确定聚类类别](https://blog.csdn.net/m0_56306305/article/details/126317632)[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^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [matlab实现肘部手肘)确定kmeansk值](https://blog.csdn.net/weixin_42183989/article/details/121186059)[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^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值