由于自己最近在学习聚类分析,也算是一个入门,相当于将自己这段时间的学习成果进行一个总结,分享给更多打算学习聚类分析或者需要用到聚类分析的同学们~

在了解K-MEANS聚类分析之前,我们首先明确聚类的含义,聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。

因此聚类分析顾名思义,就是在做一个分类的工作。聚类分析是根据在数据中发现的描述对象及其关系的信息,将数据对象分组。最终实现组内的对象相互之间是存在相关的关系,而不同组中的对象是没有这种相关性的。组内对象之间的相关性越大,组与组之间不相关性越大,说明最终的聚类效果越好。

聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。聚类分析所使用方法的不同,常常会得到不同的结论。不同研究者对于同一组数据进行聚类分析,所得到的聚类数未必一致。从实际应用的角度看,聚类分析是数据挖掘的主要任务之一。而且聚类能够作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。聚类分析还可以作为其他算法的预处理步骤。

对于聚类效果的影响主要依赖于距离的计算方法聚类方法的选择

1.距离的计算方法

对于这三个距离计算公式中并没有区分各个变量之间的重要性区别,如果需要区分各个变量之间的重要性,就需要引入权重来衡量。同时对于指标之间的量纲不同时,需要先进行一步标准化这样才能保证聚类效果较好,标准化可以通过很多手段实现,SPSS中有特定的标准化方式,excel等都可以实现,也很方便。

2.聚类的方法

对于聚类分析所使用的方法有K-MEANS均值聚类法、层次聚类、根据密度聚类、根据网格聚类。

  • K-MEANS均值聚类

算法:1. 选择 K 个初始质心,初始质心随机选择即可,每一个质心为一个类
                  2. 把每个观测值分配到离它最近的质心,与质心形成新的类
                  3. 重新计算每个类的质心,所谓质心就是求一个类中的所有距离的平均值。
                  4. 反复重复以上两个步骤直到质心不再发生变化,完成聚类分析

  • 层次聚类

算法:1. 计算类与类之间的距离,用邻近度矩阵记录
                  2. 将最近的两个类合并为一个新的类
                  3. 根据新的类,更新邻近度矩阵
                  4. 重复以上步骤直到只剩下一个类为止

  • 根据密度聚类

算法:1.从数据集中随机选择核心点
                   2.以一个核心点为圆心,做半径为V的圆,选择圆内圈入点的个数满足密度阈值的核心点,因此称这些点为核心对象,且将                        圈内的点形成一个簇,其中核心点直接密度可达周围的其他实心原点
                   3.合并这些相互重合的簇

  • 根据网格聚类

算法:1.将数据空间划分为网格单元
                  2.依照设置的阈值,判定网格单元是否稠密
                  3.合并相邻稠密的网格单元为一类


目前在聚类分析中虽然有很多的算法,但使用较多和速度较快的是K-MEANS聚类方法,同时对于实现聚类分析也有很多的软件,比如SPSS、R语言、MATLAB等等,在这里仅仅介绍如何运用MATLAB实现K-MEANS聚类分析。

1.运用MATLAB自带kmeans函数

MTALAB中含有解决K-MEANS聚类分析的函数kmeans,可以帮我们解决一般的聚类分析问题,具体如下所示。

clc;
clear;
X=readmatrix('KM.xls');
[idx,C] = kmeans(X,2)
figure;
plot(X(:,1),X(:,2),'.');
title 'Randomly Generated Data';
figure;
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(C(:,1),C(:,2),'kx',...'MarkerSize',15,'LineWidth',3)
legend('Cluster 1','Cluster 2','Centroids',...'Location','NW')
title 'Cluster Assignments and Centroids'
hold off

首先,将所有的点绘制在图上,散点图如下所示:

通过kmeans聚类算法,本例子中我们设定K=2,得到如下的结果:

并得到对应的两个质心的坐标分别为 (0.5238,0.5152),(1.0910,1.0459)

2.根据K-MEANS算法自编MATLAB算法

clc;
clear;
x=readmatrix('KM.xls');
z1=zeros(2,2);
z=x(1:2,1:2);while 1count=zeros(2,1);allsum=zeros(2,2);for i=1:200 temp1=sqrt((z(1,1)-x(i,1)).^2+(z(1,2)-x(i,2)).^2);temp2=sqrt((z(2,1)-x(i,1)).^2+(z(2,2)-x(i,2)).^2);if(temp1<temp2)count(1)=count(1)+1;allsum(1,1)=allsum(1,1)+x(i,1);allsum(1,2)=allsum(1,2)+x(i,2);elsecount(2)=count(2)+1;allsum(2,1)=allsum(2,1)+x(i,1);allsum(2,2)=allsum(2,2)+x(i,2); endendz1(1,1)=allsum(1,1)/count(1);z1(1,2)=allsum(1,2)/count(1);z1(2,1)=allsum(2,1)/count(2);z1(2,2)=allsum(2,2)/count(2);if(z==z1)break;elsez=z1;end
enddisp(z);
figure;
plot(x(:,1),x(:,2),'.');
title 'Randomly Generated Data';
figure;
for i=1:200 temp1=sqrt((z(1,1)-x(i,1)).^2+(z(1,2)-x(i,2)).^2);temp2=sqrt((z(2,1)-x(i,1)).^2+(z(2,2)-x(i,2)).^2);if(temp1<temp2)p1=plot(x(i,1),x(i,2),'r.','MarkerSize',12);hold onelsep2=plot(x(i,1),x(i,2),'b.','MarkerSize',12);hold onendend
p3=plot(z(:,1),z(:,2),'kx',...'MarkerSize',15,'LineWidth',3) ;
legend([p1 p2 p3],{'Cluster 1','Cluster 2','Centroids'},...'Location','NW')
title 'Cluster Assignments and Centroids'
hold off

运行以上的代码,得到与第一种方法相同的结果和对应的质心坐标,因此证明算法可行。

对K-MEANS聚类分析方法就介绍到这里啦~相信你也可以很清楚了~

如何运用MATLAB实现K-MEANS聚类分析相关推荐

  1. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  2. 【MATLAB统计分析与应用100例】案例018:matlab读取Excel数据,进行K均值聚类分析

    文章目录 1. K均值聚类分析结果 2. matlab完整代码 (1)读取数据,并进行标准化变换 (2)选取初始凝聚点,进行聚类 (3)绘制轮廓图 1. K均值聚类分析结果 2. matlab完整代码 ...

  3. Matlab 主成分分析与K均值聚类分析实验报告

    Matlab 主成分分析与K均值聚类分析实验报告 提示:数据资源在本CSDN号的上传资料中直接领取 1 引言 数据:gyzb.mat(按顺序对应每一列)为:31个省市区的国有控股企业的主要指标(包括: ...

  4. Matlab对图像进行鼠标取点操作及K值聚类分析

    这篇文章将以良乡大学城某大学附近的共享单车图进行鼠标取点操作以及对相关图像的处理,将共享单车以数据点的形式呈现,并且对数据点进行K值聚类找到最佳的中心点. 图1-1 一周的数据点位移展示图 PART  ...

  5. 【MATLAB统计分析与应用100例】案例019:matlab读取Excel数据,进行K均值聚类分析

    文章目录 1. 读取数据,并进行标准化变换 2. 进行模糊C均值聚类 3. 查看聚类结果 4. K均值聚类分析结果 1. 读取数据,并进行标准化变换 % 从文件examp09_05.xls中读取数据 ...

  6. 全国113个城市空气质量的K均值聚类分析--基于R

    下表给出了2017年全国113个环保重点城市空气质量年度数据(资料来源:中华人们共和国国家统计局).它们分别为:二氧化硫平均浓度(微克每立方米,),二氧化氮平均浓度(微克每立方米,);可吸入颗粒物(P ...

  7. SPSS聚类分析:K均值聚类分析

    SPSS聚类分析:K均值聚类分析 一.概念:(分析-分类-K均值聚类) 1.此过程使用可以处理大量个案的算法,根据选定的特征尝试对相对均一的个案组进行标识.不过,该算法要求您指定聚类的个数.如果知道, ...

  8. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

  9. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

  10. 文献记录(part89)--I-k-means-+:An iterative clustering algorithm based on an enhanced k -means

    学习笔记,仅供参考,有错必究 关键词:k均值:解决方案改进:准确的k均值:迭代改进 I-k-means-+:An iterative clustering algorithm based on an ...

最新文章

  1. 将A*算法讲明白的大牛 感谢原作者Frank_chen 基础是迪克斯特拉算法
  2. linux w 命令参数解释
  3. ABAP 引用类型介绍
  4. php mysql备份还原类_PHP实现MYSQL备份还原
  5. 全连接条件随机场_深圳机场在国内机场中率先推出全流程“行李门到门”服务...
  6. 使用Fiddler对iPhone手机进行数据抓包分析
  7. 金山办公:因个人原因 葛珂辞去公司董事长职务
  8. Mysql数据库及帐号的权限查询
  9. vue.js2.0 java_详解vite2.0配置学习(typescript版本)
  10. as 与 is 的区别
  11. C# 处理XML的基本操作
  12. IstioCon 2022 报名中|使用 eBPF 代替 iptable 加速 Istio 数据平面
  13. JPEG图像的可逆信息隐藏算法研究
  14. 智渔课堂官方免费教程二十六:Java基础教程之数组
  15. 利用计算机名称共享打印机步骤,如何连接共享打印机?共享打印机连接方法介绍...
  16. 操作系统:覆盖技术与交换技术
  17. Golang defer、panic和recover
  18. RGB颜色规律小研究
  19. CSDN小伙伴们苦苦寻找的最全的微软msdn原版windows系统镜像和office下载地址集锦
  20. [node]nvs使用的注意事项

热门文章

  1. 并列关系表合集PPT模板
  2. flutter app使用大量网络图片导致频繁崩溃
  3. 为什么总是感觉压力很大?应该怎么办?
  4. ChemDraw使用不了怎么办
  5. hr标签html样式,hr标签样式修改及美化(css的hr标签实现精美线条)
  6. js检测PDF插件 Adobe Reader是否安装
  7. c++输入回车结束循环_C++ cin如何输入回车停止
  8. 1148环形石子合并
  9. 苹果换原装电池_手机资讯:iPhone 电池最大容量低于 80%换电池选原装还是第三方...
  10. 智能点餐mysql框架图_SpringBoot微信点餐系统--P3数据库设计