Author:HanDi
上海某高校遥感专业 工科男
相信积微者速成,相信分享的力量
CSDN@这可真是难为我了

数学建模时用K-means分类时确定K值遇见的一个小问题,上网查,发现matlab版本的没人实现。查看原理也不是很难就自己实现了一下。果然还是自己动手丰衣足食!!!

SSE公式

SSE=∑i=1k∑p∈Ci∣p−mi∣2S S E=\sum_{i=1}^{k} \sum_{p \in C_{i}}\left|p-m_{i}\right|^{2} SSE=i=1∑k​p∈Ci​∑​∣p−mi​∣2
其中,Ci是第i个类,p是Ci类中的所有样本点,mi是Ci类的质心(Ci中所有样本的均值)。

肘部法思想

肘部法的核心思想是分类数k越大,样本划分会更加精细,每个类的聚合程度会逐渐提高,那么误差平方和SSE自然会逐渐变小。

这里值得我们注意的是,我们应该选择图像拐点,即下图k应取3,刚好跟鸢尾花数据集给的标签数3相对应。也就是说分3类确实是效果最好。

通俗的说,图像拐点说明再增加k值,类内误差变化已经很小了,已经不能比当前k值更好的区分样本了。

初次写技术博客没有什么经验,如有不足,还请大家多多包涵,欢迎大家私信交流 ^ _ ^ !!!一起进步~
以后会分享一些地理数据处理和数据挖掘的示例

下面是完整代码,我的Matlab版本是 2019b

这里是使用的示例数据是matlab自带的鸢尾花数据集
可以自行更换自己的数据

clc;
clear;
load fisheririsdata = meas;
%对原始数据进行归一化处理
data=mapminmax(meas,0,1);
%n是样本数,p为特征维数,k为分类数
[n,p]=size(data);K=8;D=zeros(K,2);
for k=2:K[lable,c,sumd,d]=kmeans(data,k,'dist','sqeuclidean');
% data,n×p原始数据向量
% lable,n×1向量,聚类结果标签;
% c,k×p向量,k个聚类质心的位置
% sumd,k×1向量,类间所有点与该类质心点距离之和
% d,n×k向量,每个点与聚类质心的距离
sse1 = sum(sumd.^2);
D(k,1) = k;
D(k,2) = sse1;
endplot(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('簇内误差平方和') 

代码运行效果

感谢@沙漏dan点这里
这篇博文给予的帮助

如有错误,欢迎评论,私信,会及时改正

matlab实现肘部法(手肘法)确定kmeans方法k值相关推荐

  1. python 机器学习——Kmeans之K值的选取原理

    Kmeans之K值的选取 参考 一般而言,没有所谓最好的选择聚类数的方法,通常情况下是需要根据不同的问题,人工进行选择的.选择的时候思考我们运用 K-means 算法聚类的动机是什么,然后选择能最好服 ...

  2. Kmeans聚类K值的确定

    通过手肘法确定Kmeans聚类的最优K值 SSE = [] # 存放每次结果的误差平方和 for k in range(5,50):estimator = KMeans(n_clusters=k,ma ...

  3. K-means聚类K值的选择、Calinski-Harabasz准则

    K-means聚类K值的选择.Calinski-Harabasz准则 目录 K-means聚类K值的选择.Calinski-Harabasz准则 K-means聚类K值的选择 Calinski-Har ...

  4. kmeans 的k值确定方法

    用聚类算法分好类后如何判断分的效果呢?方法就是轮廓系数(Silhouette). Silhouette系数是对聚类结果有效性的解释和验证,由PeterJ. Rousseeuw于1986提出.      ...

  5. 轮廓系数确定kmeans的K值

    轮廓系数确定kmeans的K值 方法: 1,计算样本i到同簇其他样本的平均距离ai.ai 越小,说明样本i越应该被聚类到该簇.将ai 称为样本i的簇内不相似度. 簇C中所有样本的a i 均值称为簇C的 ...

  6. K-means中K值的选取

    以下博文转自:https://blog.csdn.net/qq_15738501/article/details/79036255  感谢 最近做了一个数据挖掘的项目,挖掘过程中用到了K-means聚 ...

  7. KMeans聚类 K值的确定以及初始类簇中心点的选取

    KMeans算法是最常用的聚类算法,基本思想是:在给定K值和K个初始类簇中心点的情况下,把每个样本点分到离其最近的簇中,然后重新计算每个簇的中心点(取平均值),然后再迭代的进行分配点和更新类簇中心点的 ...

  8. Kmeans聚类K值选择Parametric Bootstrap方法,以及数据重抽样方法Bootstrapping

    常用的K值选择方法是通过寻找"拐点"确认,或者下游业务需求确定.下文介绍了另一种选择方法. 评论:原始该K值选择法只有在数据为"gaussian-like"时才 ...

  9. kmeans python自定义初始聚类中心_机器学习-KMeans聚类 K值以及初始类簇中心点的选取...

    本文主要基于Anand Rajaraman和Jeffrey David Ullman合著,王斌翻译的<大数据-互联网大规模数据挖掘与分布式处理>一书. KMeans算法是最常用的聚类算法, ...

最新文章

  1. 安装完Hadoop之后,命令行输入hadoop或hdfs却找不到命令的解决方法
  2. supervisor
  3. Linux系统文件压缩与备份(5)
  4. STL之Deque容器
  5. swift 展示html富文本,Swift HTML富文本显示
  6. 【习题 6-5 UVA-1600】Patrol Robot
  7. Image Gallery
  8. 远程计算机维修,电脑坏了不用愁,向日葵电脑远程维修省时又省力
  9. win7局域网共享设置_win7局域网共享,教你在智能电视上看win7系统电脑资源
  10. 王者荣耀游戏时间计算机制,王者荣耀荣耀战力怎么算,荣耀战力计算机制详解...
  11. DevExpress 控件中文化教程详解(内含下载官网中文化包和自定义修改中文化包制作教程)
  12. 工信部教育与考试中心-软件测试工程师考试题A卷-答
  13. 打码,需要一个好的键盘
  14. java报表是什么_什么是报表工具
  15. TWS蓝牙耳机怎么挑选?值得买的蓝牙耳机推荐
  16. CGroup(控制组)
  17. ERP系统对服装行业的帮助有哪些?
  18. C#从入门到精通学习笔记——(2)
  19. CSS3的@keyframes用法详解:
  20. 一篇简易的MODBUS 转 profibus 网关 将ABB ACS800变频器接入 profibus 总线案例

热门文章

  1. 计算机毕设(附源码)JAVA-SSM火车订票系统
  2. 栈(数据结构)超详解(最后面还有一道经典习题哦)
  3. 虹科分享 | 如何测试与验证复杂的FPGA设计(3)——硬件测试
  4. 泛舟亚马逊 拥抱无尽的广袤与神秘
  5. 微信错误提示code= -4/微信发送被拒绝
  6. eth入门之工作量证明 (POW)
  7. Java—数组排序(升序和降序)
  8. Undefined symbols for architecture arm64:
  9. 不太卡出身的高校,有哪些?
  10. MySQL查询出现“this is incompatible with sql_mode=only_full_group_by“错误