数学建模 - K-means聚类

在这里插入图片描述

解决问题

将样本划分为由类似的对象组成的多个类的过程(聚类)。
聚类后,可以更加准确的在每个类中单独使用统计模型进行估计、分析或预测;也可以探究不同类之间的相关性和主要差异。
(KMeans本质上是一种基于欧式距离度量的数据划分方法)
ps. 分类是已知类别的,聚类未知。

算法流程

K-means聚类算法:

  1. 指定需要划分的簇的个数K值(类的个数);
  2. 随机地选择K个数据对象作为初始的聚类中心(不一定要是我们的样本点);
  3. 计算其余的各个数据对象到这K个初始聚类中心
    的距离,把数据对象划归到距离它最近的那个中心所
    处在的簇类中;
  4. 调整新类并且重新计算出新类的中心;
  5. 循环步骤三和四,看中心是否收敛(不变),如
    果收敛或达到迭代次数则停止循环;
  6. 结束

在这里插入图片描述公式过程: k-means聚类算法

模型特性

K-means聚类优点:
(1)算法简单、快速。
(2)对处理大数据集,该算法是相对高效率的。
当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好 。

K-means聚类缺点:
(1)要求用户必须事先给出要生成的簇的数目K。
(2)对初值敏感。
(3)对于孤立点数据敏感。

ps. K‐means++算法可解决2和3这两个缺点。
K-means++算法选择初始聚类中心的基本原则是:
初始的聚类中心之间的相互距离要尽可能的。(只对K-means算法“初始化K个聚类中心” 这一步进行了优化)
即进行预处理优化:

步骤一:随机选取一个样本作为第一个聚类中心;

步骤二:计算每个样本与当前已有聚类中心的最短距离(即与最近一个聚类中心的距离),这个值越大,表示被选取作为聚类中心的概率较大;
最后,用轮盘法(依据概率大小来进行抽选)选出下一个聚类中心;

步骤三:重复步骤二,直到选出K个聚类中心。选出初始点后,就继续使用标准的K-means算法了。

使用方法

  1. 利用Spss软件
    在这里插入图片描述默认使用的是K-means++算法

  2. 利用matlab软件

X2 = zscore(X);      % zscore方法标准化数据  

Y2 = pdist(X2);      % 计算距离(默认欧式距离)

Z2 = linkage(Y2);    % 定义变量之间的连接,用指定的算法计算系统聚类树

T = cluster(Z2,6);   % 创建聚类

H = dendrogram(Z2);  % 作出系谱图(散点聚类图看腻了,这里画个系谱图)

结合 MATLAB 中的一些函数,结果作出系谱图
ps. MATLAB 以及 sklearn 也提供了相应的 kmeans() 函数可供直接聚类使用

from 5 分钟带你弄懂 K-means 聚类

注意事项

a. 聚类个数(K值)

分几类主要取决于个人的经验与感觉,通常的做法是多尝试几个K值,看分成几类的结果更好解释,更符合分析目的等。(即提前应该要知道分类数目)
ps. 如果不能提前判断要分几类,可以采用系统(层次)聚类算法

b. 数据量纲

如果数据的量纲不一样,那么算距离时就没有意义。例如:如果X1单位是米,X2单位是吨,用距离公式计算就会出现“米的平方”加上“吨的平方”再开平方,最后算出的东西没有数学意义,这就有问题了。
所以应该先进行数据的预处理(标准化处理
在这里插入图片描述
可以直接利用spss实现:
在这里插入图片描述在这里插入图片描述

c. 分类与聚类区别

分类:类别是已知的,通过对已知类别的数据进行训练和学习,找到这些不同类的特征,再对未知类别的数据进行分类。属于监督学习。

聚类:事先不知道数据会分为几类,通过聚类分析将数据聚合成几个群体。聚类不需要对数据进行训练和学习。属于无监督学习。

一般而言,是否有监督,就看输入数据是否有标签,输入数据有标签,则为有监督学习,否则为无监督学习。

d. 适用条件

KMeans方法只有在簇的平均值被定义的情况下才能使用,且对有些分类属性的数据不适合。
异常值会对均值计算产生较大影响,导致中心偏移,因此对于"噪声"和孤立点数据最好能提前过滤 。

e. 对于K值的选择

在这里插入图片描述from K-Means算法之K值的选择

f. 簇的形式

在这里插入图片描述
from K-means聚类算法

g. 与其他聚类算法的比较

k-means聚类算法优缺点?

参考资料

清风数学建模

k-means聚类算法

5 分钟带你弄懂 K-means 聚类

K-Means算法之K值的选择

K-means聚类算法

k-means聚类算法优缺点?

机器学习,KMeans聚类分析详解

  • 5
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
K-means聚类算法在SPSS中的应用是相对常见的。SPSS是一款统计软件,可以用于数据分析和建模。在SPSS中,使用K-means聚类算法可以对数据进行聚类分析,并且可以帮助我们发现数据中的隐藏模式和结构。 具体在SPSS中使用K-means聚类算法的步骤如下: 1. 准备好待分析的数据集。将需要进行聚类分析的变量导入SPSS。 2. 打开SPSS软件,在菜单栏选择"分析",然后选择"聚类",再选择"K-means聚类"。 3. 在弹出的窗口中,选择需要进行聚类分析的变量,并设置聚类的参数,例如要分成几个簇,设置初始聚类中心的选择方法等。 4. 点击"确定"按钮,SPSS会自动进行K-means聚类分析,并将结果输出。 5. 分析结果会显示每个数据点所属的簇的编号,以及每个簇的中心点的坐标等信息。 值得注意的是,K-means聚类算法在选择初始聚类中心时,一般遵循的基本原则是初始聚类中心之间的相互距离要尽可能的远。这样可以确保最终的聚类结果更加准确。 总结起来,K-means聚类算法在SPSS中可以有效地对数据进行聚类分析,并且可以帮助我们发现数据中的隐藏模式和结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [清风数学建模学习笔记——K-means聚类模型详解及SPSS操作流程](https://blog.csdn.net/weixin_43819566/article/details/113794705)[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* [聚类算法:K-means聚类与系统(层次)聚类SPSS操作](https://blog.csdn.net/yanyanwenmeng/article/details/105794136)[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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值